diff -p -up polybori-0.6.3-20091028/src/polybori-0.6/ipbori/ipbori.orig polybori-0.6.3-20091028/src/polybori-0.6/ipbori/ipbori --- polybori-0.6.3-20091028/src/polybori-0.6/ipbori/ipbori.orig 2009-10-28 08:47:25.000000000 -0200 +++ polybori-0.6.3-20091028/src/polybori-0.6/ipbori/ipbori 2010-02-04 16:22:36.854123237 -0200 @@ -65,5 +65,12 @@ cd ${OLDPWD} # installing the profile, but custom settings like IPYTHONDIR/ipythonrc are # still available. # (For the latter, ipythonrc-polybori needs to import ipythonrc.) +export DOT_SAGE="$HOME/.sage/" +export SAGE_ROOT="/usr/share/sage" +export SAGE_LOCAL="/usr/share/sage/local" +export SAGE_DOC="/usr/share/sage/devel/doc" +export SINGULARPATH=/usr/share/singular/LIB +export SINGULAR_BIN_DIR=/usr/share/singular/x86_64 +export PYTHONPATH=/usr/share/sage/site-packages ${IPYTHONPREFIX}ipython -rcfile ${IPBDIR}/ipythonrc-polybori $@ diff -p -up polybori-0.6.3-20091028/src/polybori-0.6/pyroot/polybori/PyPolyBoRi.py.orig polybori-0.6.3-20091028/src/polybori-0.6/pyroot/polybori/PyPolyBoRi.py --- polybori-0.6.3-20091028/src/polybori-0.6/pyroot/polybori/PyPolyBoRi.py.orig 2010-02-04 16:20:51.371020971 -0200 +++ polybori-0.6.3-20091028/src/polybori-0.6/pyroot/polybori/PyPolyBoRi.py 2010-02-04 16:21:46.715017209 -0200 @@ -1,124 +1,25 @@ -from sys import modules -from itertools import chain -import re -import warnings -compatibility_mode=False -# First try, whether PyPolyBoRi is already in modules (e.g. static profiling) -try: - pb = modules["PyPolyBoRi"] - for k in dir(pb): - globals()[k]=getattr(pb,k) -except: - from polybori.dynamic.PyPolyBoRi import * -def replace_init_proc(cls): - old_init=cls.__init__ - def init(self,iteratable=None): - old_init(self) - if iteratable: - for item in iteratable: - self.append(item) - cls.__init__=init - -replace_init_proc(BoolePolynomialVector) -replace_init_proc(IntVector) - -monomial_old_init=Monomial.__init__ -def monomial_new_init(self,arg=None): - if arg==None: - monomial_old_init(self) - else: - try: - monomial_old_init(self,arg) - except: - prototype=Monomial() - items=sorted((x for x in arg),reverse=True, key=top_index) - for x in items: - prototype*=x - monomial_old_init(self,prototype) -Monomial.__init__=monomial_new_init -booleset_old_init=BooleSet.__init__ -def booleset_new_init(self,arg=None, second=None): - if arg==None: - booleset_old_init(self) - elif second != None: - booleset_old_init(self, arg, second) - else: - try: - booleset_old_init(self,arg) - except: - s=set() - v=BoolePolynomialVector() - for i in list(arg): - s.add(Monomial(i)) - for i in s: - v.append(i) - p=add_up_polynomials(v) - booleset_old_init(self,p.set()) -BooleSet.__init__=booleset_new_init - -for k in OrderCode.values: - globals()[str(OrderCode.values[k])]=OrderCode.values[k] - -monomial_cplusplus_div = Monomial.__div__ - -def monomial_python_div(self, arg): - try: - return monomial_cplusplus_div(self, arg) - except ValueError: - return Polynomial(0, self.ring()) - -Monomial.__div__ = monomial_python_div - -variable_cplusplus_div = Variable.__div__ - -def variable_python_div(self, arg): - try: - return variable_cplusplus_div(self,arg) - except ValueError: - return Polynomial(0, self.ring()) - -Variable.__div__ = variable_python_div -_gauss_on_polys=gauss_on_polys -def gauss_on_polys(l): - vec=BoolePolynomialVector(l) - return list(_gauss_on_polys(vec)) - -snake_pattern=re.compile('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))') -def to_snake_case(s): - return snake_pattern.sub('_\\1', s).lower().strip('_') - -def warn_snake_case(a, snaked): - warnings.warn("access to %s is deprecated, use %s instead" % (a, snaked), stacklevel=3) -def _strategy_getattr(self, a): - if hasattr(self.reduction_strategy, a): - return getattr(self.reduction_strategy,a) - snaked=to_snake_case(a) - - if snaked in self.__dict__: - warn_snake_case(a, snaked) - return self.__dict__[snaked] - if hasattr(self.reduction_strategy, snaked): - warn_snake_case(a, snaked) - return getattr(self.reduction_strategy, snaked) - raise AttributeError -def _strategy_setattr(self, a, v): - if a in self.__dict__: - self.__dict__[a]=v - return - if hasattr(self.reduction_strategy, a): - return setattr(self.reduction_strategy, a, v) - snaked=to_snake_case(a) - if snaked in self.__dict__: - warn_snake_case(a, snaked) - return setattr(self, snaked, v) - - if hasattr(self.reduction_strategy, snaked): - warn_snake_case(a, snaked) - return setattr(self.reduction_strategy, snaked, v) - self.__dict__[a]=v -if compatibility_mode: - GroebnerStrategy.__getattr__=_strategy_getattr - GroebnerStrategy.__setattr__=_strategy_setattr +from sage import all +from sage.rings.polynomial.pbori import * + +def global_ring(): + return get_cring() + +Polynomial = PolynomialFactory() + +Monomial = MonomialFactory() + +class OrderCode: + pass + +OrderCode.__dict__ = order_dict + +Variable = VariableFactory() + +def Ring(n, order='lp'): + return BooleanPolynomialRing(n, 'x', order=order) + +BoolePolynomialVector = BooleanPolynomialVector + _add_up_polynomials=add_up_polynomials def add_up_polynomials(polys): diff -p -up polybori-0.6.3-20091028/src/polybori-0.6/SConstruct.orig polybori-0.6.3-20091028/src/polybori-0.6/SConstruct --- polybori-0.6.3-20091028/src/polybori-0.6/SConstruct.orig 2009-10-28 08:47:24.000000000 -0200 +++ polybori-0.6.3-20091028/src/polybori-0.6/SConstruct 2010-02-04 16:21:46.719021393 -0200 @@ -321,7 +321,7 @@ env.AppendUnique(PYTHONSITE = pyconf.sit Help(opts.GenerateHelpText(env)) have_l2h = have_t4h = False -external_m4ri = False +external_m4ri = True if not env.GetOption('clean'): conf = Configure(env) @@ -676,21 +676,21 @@ if HAVE_PYTHON_EXTENSION or extern_pytho return (target, source) - bld = Builder(action = "$PYTHON doc/python/genpythondoc.py " + pyroot, - emitter = pypb_emitter) +# bld = Builder(action = "$PYTHON doc/python/genpythondoc.py " + pyroot, +# emitter = pypb_emitter) # Add the new Builder to the list of builders - env['BUILDERS']['PYTHONDOC'] = bld +# env['BUILDERS']['PYTHONDOC'] = bld # Generate foo.vds from foo.txt using mk_vds #for f in Split("ll.py nf.py gbrefs.py blocks.py PyPolyBoRi.so specialsets.py"): - if have_pydoc: - pydocu = env.PYTHONDOC(target=[DocPath('python/polybori.html'), - DocPath('python/polybori.dynamic.html')], - source = documentable_python_modules) +# if have_pydoc: +# pydocu = env.PYTHONDOC(target=[DocPath('python/polybori.html'), +# DocPath('python/polybori.dynamic.html')], +# source = documentable_python_modules) - env.Clean(pydocu, glob(PyRootPath('polybori/*.pyc')) + - glob(PyRootPath('polybori/dynamic/*.pyc'))) +# env.Clean(pydocu, glob(PyRootPath('polybori/*.pyc')) + +# glob(PyRootPath('polybori/dynamic/*.pyc'))) # env.Ignore(pydocu, dynamic_modules) #bld=Builder("cd") @@ -771,10 +771,10 @@ if distribute or rpm_generation or deb_g allsrcs.append(env.Dir(TestsPath(dirname))) # doc is not distributed completely - allsrcs += [ DocPath(dsrc) for dsrc in Split("""doxygen.conf index.html.in - tutorial/tutorial.tex tutorial/tutorial_content.tex python/genpythondoc.py - man/ipbori.1 """) ] - allsrcs.append(env.Dir(DocPath('images'))) +# allsrcs += [ DocPath(dsrc) for dsrc in Split("""doxygen.conf index.html.in +# tutorial/tutorial.tex tutorial/tutorial_content.tex python/genpythondoc.py +# man/ipbori.1 """) ] +# allsrcs.append(env.Dir(DocPath('images'))) if distribute: presrcdistri = env.DistTar(debname, allsrcs) @@ -1232,6 +1232,11 @@ if 'install' in COMMAND_LINE_TARGETS: env.AlwaysBuild(ipboribin) env.Alias('install', ipboribin) + # we dump the flags for reuse by Sage + if not path.exists(InstPath()): + Execute(Mkdir(InstPath())) + opts.Save(InstPath("flags.conf"), env) + env.Alias('prepare-devel', devellibs + readabledevellibs) env.Alias('prepare-install', [pyroot, DocPath()])