diff --git a/.gitignore b/.gitignore index be444ef..d74b407 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -gfan0.3.tar.gz +gfan0.5.tar.gz diff --git a/gfan-0.3-respect-destdir.diff b/gfan-0.3-respect-destdir.diff deleted file mode 100644 index 49ac591..0000000 --- a/gfan-0.3-respect-destdir.diff +++ /dev/null @@ -1,40 +0,0 @@ ---- Makefile.orig 2008-12-06 20:00:35.000000000 -0800 -+++ Makefile 2008-12-06 20:02:51.000000000 -0800 -@@ -166,15 +166,15 @@ - - OBJECTS = $(CATSOBJECTS) $(APPOBJECTS) - - all: $(MAIN) - --$(BINDIR): $(PREFIX) -- $(MKDIR) $(BINDIR) -+$(DESTDIR)$(BINDIR): $(DESTDIR)$(PREFIX) -+ $(MKDIR) $(DESTDIR)$(BINDIR) - --$(PREFIX): -- $(MKDIR) $(PREFIX) -+$(DESTDIR)$(PREFIX): -+ $(MKDIR) -p $(DESTDIR)$(PREFIX) - - default: $(OBJECTS) $(ADDITIONALOBJECTS) $(EXECS) - - $(MAIN): $(OBJECTS) - $(CCLINKER) $(OBJECTS) $(ADDITIONALLINKOPTIONS) $(GPROFFLAG) -o $(MAIN) -@@ -262,14 +262,14 @@ - tar -c $(RELEASEDIR) > $(RELEASEDIR).tar - gzip $(RELEASEDIR).tar - - clean: - /bin/rm -f *.o $(EXECS) $(MAIN) --install: $(BINDIR) -- cp $(EXECS) $(BINDIR) -+install: $(DESTDIR)$(BINDIR) -+ cp $(EXECS) $(DESTDIR)$(BINDIR) - # cp $(EXECS) /usr/local/bin -- ./gfan installlinks --path $(BINDIR)/ -+ ./gfan installlinks --path $(DESTDIR)$(BINDIR)/ - .c.o: - $(CC) $(CFLAGS) -c $< - .cc.o: - $(CCC) -c $< - .cpp.o: diff --git a/gfan-format.patch b/gfan-format.patch new file mode 100644 index 0000000..57c0100 --- /dev/null +++ b/gfan-format.patch @@ -0,0 +1,275 @@ +--- ./genericwalk.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./genericwalk.cpp 2011-04-27 13:42:52.227946066 -0600 +@@ -202,7 +202,7 @@ + g=newG; + + nflips++; +- fprintf(Stderr,"Flip %i, new size %i\n",nflips,g.size()); ++ fprintf(Stderr,"Flip %i, new size %zu\n",nflips,g.size()); + } + fprintf(Stderr,"Number of flips:%i\n",nflips); + +--- ./app_isgroebnerbasis.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_isgroebnerbasis.cpp 2011-04-27 13:48:16.474949962 -0600 +@@ -47,7 +47,7 @@ + IntegerVectorListList sums; + IntegerVectorList polytope=minkowski(polytopes,&sums); + +- fprintf(Stderr,"Number of extreme vertices in Minkowski sum: %i\n",polytope.size()); ++ fprintf(Stderr,"Number of extreme vertices in Minkowski sum: %zu\n",polytope.size()); + + bool isGroebnerBasis=false; + int counter=0; +--- ./polyhedralfan.cpp.orig 2011-01-25 08:33:17.000000000 -0700 ++++ ./polyhedralfan.cpp 2011-04-27 13:46:56.746866265 -0600 +@@ -604,7 +604,7 @@ + { + // log0 fprintf(Stderr,"rayComplexSymmetry - begin\n"); + PolyhedralFan ret(n); +- log1 fprintf(Stderr,"Computing rays of %i cones\n",cones.size()); ++ log1 fprintf(Stderr,"Computing rays of %zu cones\n",cones.size()); + for(PolyhedralConeList::const_iterator i=cones.begin();i!=cones.end();i++) + { + { +@@ -812,7 +812,7 @@ + SymmetryGroup localsym(n); + if(!sym)sym=&localsym; + set rays; +- log1 fprintf(Stderr,"Computing rays of %i cones\n",cones.size()); ++ log1 fprintf(Stderr,"Computing rays of %zu cones\n",cones.size()); + for(PolyhedralConeList::const_iterator i=cones.begin();i!=cones.end();i++) + { + { +@@ -1212,7 +1212,7 @@ + static int t; + if((t&1023)==0) + { +- fprintf(Stderr,"clist size:%i\n",clist.size()); ++ fprintf(Stderr,"clist size:%zu\n",clist.size()); + } + t++; + } +--- ./bergman.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./bergman.cpp 2011-04-27 13:45:37.266767581 -0600 +@@ -149,7 +149,7 @@ + if(0) + { + s=fullColoredIdeals(*g,false); +- fprintf(Stderr,"Full colored ideals computed, #=%i\n",s.size()); ++ fprintf(Stderr,"Full colored ideals computed, #=%zu\n",s.size()); + } + else + { +@@ -539,7 +539,7 @@ + while(!active.empty()) + { + log1 fprintf(Stderr,"\n-------------------------------------\n"); +- log1 fprintf(Stderr,"Size of active set: %i, Completed: %i\n",active.size(),ret.cones.size()); ++ log1 fprintf(Stderr,"Size of active set: %i, Completed: %zu\n",active.size(),ret.cones.size()); + log1 fprintf(Stderr,"-------------------------------------\n"); + AsciiPrinter p(Stderr); + +--- ./symmetry.cpp.orig 2011-01-25 08:33:17.000000000 -0700 ++++ ./symmetry.cpp 2011-04-27 13:43:45.571656038 -0600 +@@ -300,7 +300,7 @@ + l.push_back(*i); + } + P.printVectorList(l); +- fprintf(f,"Group order=%i\n",elements.size()); ++ fprintf(f,"Group order=%zu\n",elements.size()); + P.printString("Done printing SymmetryGroup.\n"); + } + +--- ./xfig.cpp.orig 2011-01-25 08:33:17.000000000 -0700 ++++ ./xfig.cpp 2011-04-27 13:46:06.770948094 -0600 +@@ -103,7 +103,7 @@ + { + if(vertices.size()) + { +- fprintf(f,"2 3 0 1 0 %i 50 0 25 0.000 0 0 -1 0 0 %i\n ",7,vertices.size()+1); ++ fprintf(f,"2 3 0 1 0 %i 50 0 25 0.000 0 0 -1 0 0 %zu\n ",7,vertices.size()+1); + + for(Polygon::const_iterator i=vertices.begin();i!=vertices.end();i++) + kickPoint(*i,mode); +--- ./lp_cdd.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./lp_cdd.cpp 2011-04-27 13:39:42.788631110 -0600 +@@ -1287,8 +1287,8 @@ + if(A->rowsize!=newLin.size()+newIn.size()) + { + fprintf(stderr,"A->rowsize: %i\n",(int)A->rowsize); +- fprintf(stderr,"newLin.size(): %i\n",newLin.size()); +- fprintf(stderr,"newIn.size(): %i\n",newIn.size()); ++ fprintf(stderr,"newLin.size(): %zu\n",newLin.size()); ++ fprintf(stderr,"newIn.size(): %zu\n",newIn.size()); + + dd_WriteMatrix(Stderr,A); + +--- ./minkowskisum.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./minkowskisum.cpp 2011-04-27 13:43:17.412392770 -0600 +@@ -27,7 +27,7 @@ + + assert(f); + { +- fprintf(f,"%i",polytopes.size()); ++ fprintf(f,"%zu",polytopes.size()); + TopcomPrinter p(f); + //AsciiPrinter p(f); + +--- ./xfig.h.orig 2011-01-25 08:33:19.000000000 -0700 ++++ ./xfig.h 2011-04-27 13:40:09.491983874 -0600 +@@ -52,7 +52,7 @@ + void endDrawLine() + { + assert(p.size()>0); +- fprintf(f," %i\n",p.size()); ++ fprintf(f," %zu\n",p.size()); + if(arrowOrigin) + fprintf(f,"\t 2 1 1.00 60.00 120.00\n"); + if(arrowTarget) +--- ./gmpallocator.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./gmpallocator.cpp 2011-04-27 13:44:36.363523526 -0600 +@@ -145,19 +145,19 @@ + //Debug + void *myAllocateFunctionD(size_t alloc_size) + { +- fprintf(stderr,"Allocating: %i bytes.\n",alloc_size); ++ fprintf(stderr,"Allocating: %zu bytes.\n",alloc_size); + return malloc(alloc_size); + } + + void *myReallocateFunctionD(void *ptr, size_t old_size, size_t new_size) + { +- fprintf(stderr,"Reallocating: %i --> %i bytes.\n",old_size,new_size); ++ fprintf(stderr,"Reallocating: %zu --> %zu bytes.\n",old_size,new_size); + return realloc(ptr,new_size); + } + + void myDeallocateFunctionD(void *ptr, size_t size) + { +- fprintf(stderr,"Freeing: %i bytes.\n",size); ++ fprintf(stderr,"Freeing: %zu bytes.\n",size); + return free(ptr); + } + +--- ./app_test.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_test.cpp 2011-04-27 13:49:04.826968542 -0600 +@@ -128,7 +128,7 @@ + + M[I]=minusOne*M[I]; + } +- fprintf(Stdout,"Extreme permutations (%i):\n",extreme.size()); ++ fprintf(Stdout,"Extreme permutations (%zu):\n",extreme.size()); + P.printVectorList(extreme); + } + +--- ./buchberger.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./buchberger.cpp 2011-04-27 13:41:04.116614389 -0600 +@@ -540,7 +540,7 @@ + { + static int t; + t++; +- if((t&31)==0)fprintf(Stderr," spolys:%i\n",sPolynomials.size()); ++ if((t&31)==0)fprintf(Stderr," spolys:%zu\n",sPolynomials.size()); + } + + { +@@ -565,7 +565,7 @@ + { + static int t; + if(((++t)&=31)==0) +- fprintf(Stderr,"gsize:%i spolys:%i\n",g->size()+1,sPolynomials.size()); ++ fprintf(Stderr,"gsize:%zu spolys:%zu\n",g->size()+1,sPolynomials.size()); + } + PolynomialSet::iterator j=g->end();j--; + updatePairs(sPolynomials,g,&redundantOnes,j,indexj,truncationDegree,&grading); +--- ./halfopencone.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./halfopencone.cpp 2011-04-27 13:47:51.531488017 -0600 +@@ -555,14 +555,14 @@ + { + HalfOpenConeList surface=tropicalHyperSurface(*i); + +- fprintf(Stderr,"Number of cones in current intersection:%i\n",intersection.size()); +- fprintf(Stderr,"Number of cones in next surface:%i\n",surface.size()); ++ fprintf(Stderr,"Number of cones in current intersection:%zu\n",intersection.size()); ++ fprintf(Stderr,"Number of cones in next surface:%zu\n",surface.size()); + + fprintf(Stderr,"A\n"); + intersection=refinement(intersection,surface); + fprintf(Stderr,"B\n"); + } +- fprintf(Stderr,"%i",intersection.size()); ++ fprintf(Stderr,"%zu",intersection.size()); + + return intersection; + } +--- ./app_normalfancleanup.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_normalfancleanup.cpp 2011-04-27 13:51:05.227545050 -0600 +@@ -71,7 +71,7 @@ + FILE *f=fopen("iteraTIon","w"); + if(f) + { +- fprintf(f,"%i:%i\n",a,l2.size()); ++ fprintf(f,"%i:%zu\n",a,l2.size()); + fclose(f); + } + } +--- ./app_secondaryfan.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_secondaryfan.cpp 2011-04-27 13:50:21.635232740 -0600 +@@ -142,7 +142,7 @@ + + while(1) + { +- fprintf(stdout,"Triangles in current triangulation:%i\n",a.bases.size()); ++ fprintf(stdout,"Triangles in current triangulation:%zu\n",a.bases.size()); + PolyhedralCone C=a.secondaryCone(); + + C.canonicalize(); +@@ -198,7 +198,7 @@ + + while(1) + { +- fprintf(stdout,"Triangles in current triangulation:%i\n",a.bases.size()); ++ fprintf(stdout,"Triangles in current triangulation:%zu\n",a.bases.size()); + // PolyhedralCone C=a.secondaryCone(); + + // C.canonicalize(); +@@ -214,7 +214,7 @@ + { + Triangulation2 b=a; + b.flipNew(-*i); +- fprintf(stdout,"Triangles in new triangulation:%i\n",b.bases.size()); ++ fprintf(stdout,"Triangles in new triangulation:%zu\n",b.bases.size()); + + if(b.bases.size()==abortAtSize) + { +--- ./app_intsinpolytope.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_intsinpolytope.cpp 2011-04-27 13:49:42.202664015 -0600 +@@ -104,7 +104,7 @@ + } + } + +- fprintf(stderr,"Sets to test: %i\n",setsToCheck.size()); ++ fprintf(stderr,"Sets to test: %zu\n",setsToCheck.size()); + + set > ret; + for(set >::const_iterator i=setsToCheck.begin();i!=setsToCheck.end();i++) +@@ -118,7 +118,7 @@ + if(isPartOfAZBasis(l))ret.insert(*i); + } + +- fprintf(stderr,"Produced sets: %i\n",ret.size()); ++ fprintf(stderr,"Produced sets: %zu\n",ret.size()); + + return ret; + } +--- ./app_tropicaltraverse.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_tropicaltraverse.cpp 2011-04-27 13:48:41.939379788 -0600 +@@ -156,7 +156,7 @@ + BergmanFan f=bergman(coneGroebnerBasis,idealGroebnerBasis,&s); + f.computeMultiplicities(); + /* log1 fprintf(Stderr,"Is simplicial: %s\n",f.isSimplicial()?"true":"false");*/ +- log1 fprintf(Stderr,"Order of input symmetry group: %i\n",s.elements.size()); ++ log1 fprintf(Stderr,"Order of input symmetry group: %zu\n",s.elements.size()); + log1 fprintf(Stderr,"Number of maximal cones: %i\n",f.numberOfMaximalCones()); + log1 fprintf(Stderr,"Modulo the homogeneity space:\n"); + log1 AsciiPrinter(Stderr).printVectorList(hv); diff --git a/gfan-respect-destdir.patch b/gfan-respect-destdir.patch new file mode 100644 index 0000000..7230bf2 --- /dev/null +++ b/gfan-respect-destdir.patch @@ -0,0 +1,33 @@ +--- Makefile.orig 2011-01-25 08:33:19.000000000 -0700 ++++ Makefile 2011-04-25 16:07:52.441724570 -0600 +@@ -308,11 +308,11 @@ + + all: $(MAIN) + +-$(BINDIR): $(PREFIX) +- $(MKDIR) $(BINDIR) ++$(DESTDIR)$(BINDIR): $(DESTDIR)$(PREFIX) ++ $(MKDIR) $(DESTDIR)$(BINDIR) + +-$(PREFIX): +- $(MKDIR) $(PREFIX) ++$(DESTDIR)$(PREFIX): ++ $(MKDIR) -p $(DESTDIR)$(PREFIX) + + default: $(OBJECTS) $(ADDITIONALOBJECTS) $(EXECS) + +@@ -419,11 +419,11 @@ + + clean: + /bin/rm -f *.o $(EXECS) $(MAIN) +-install: $(BINDIR) +- cp $(EXECS) $(BINDIR) ++install: $(DESTDIR)$(BINDIR) ++ cp $(EXECS) $(DESTDIR)$(BINDIR) + # cp $(EXECS) /usr/local/bin + # ./gfan installlinks --path $(BINDIR)/ +- cd $(BINDIR) && ./gfan installlinks ++ cd $(DESTDIR)$(BINDIR) && ./gfan installlinks + library: + /bin/rm -f gfanlib/*.a + /bin/rm -f gfanlib/*.o diff --git a/gfan-warning.patch b/gfan-warning.patch new file mode 100644 index 0000000..e228a9c --- /dev/null +++ b/gfan-warning.patch @@ -0,0 +1,238 @@ +--- ./app_fancoarsening.cpp.orig 2011-01-25 08:33:15.000000000 -0700 ++++ ./app_fancoarsening.cpp 2011-04-27 14:49:26.185117544 -0600 +@@ -33,12 +33,14 @@ + return false; + } + ++#if 0 + IntegerVectorList inequalitiesForCone(IntegerVector const &codim1interior, IntegerVector const &newDirection) + { + + int i=0; + + } ++#endif + + const char *helpText() + { +--- ./field_rationals.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./field_rationals.cpp 2011-04-27 14:49:26.186117482 -0600 +@@ -326,17 +326,17 @@ + return "GmpRationals"; + } + +-/*FieldRationals::FieldRationals(): ++#if 0 ++FieldRationals::FieldRationals(): + Field(new FieldRationalsImplementation()) + { + /* fprintf(Stderr,"Adding field rationals\n"); + next=list; + list=this; + */ +-/* + log2 fprintf(Stderr,"Initializing field Rationals\n"); + } +-*/ ++#endif + //FieldRationals Q; + Field Q(new FieldRationalsImplementation()); + +--- ./wallideal.cpp.orig 2011-01-25 08:33:17.000000000 -0700 ++++ ./wallideal.cpp 2011-04-27 14:49:26.188117356 -0600 +@@ -928,7 +928,7 @@ + return isFacet(normals,i); + } + */ +- /* ++#if 0 + bool fastIsFacet(IntegerVectorList const &normals, IntegerVectorList::const_iterator i) + { + int n=i->size(); +@@ -963,7 +963,7 @@ + } + } + */ +-/* int bestEntry=-1; ++ int bestEntry=-1; + int bestCount=2000000000; + int bestValue=0; + for(int j=0;j + #include ++#include ++#include + #include "parser.h" + #include "printer.h" + #include "polynomial.h" +@@ -193,10 +195,7 @@ + { + outputName=outputName+"New"; + } +- { +- string t="rm "+outputName; +- system(t.c_str()); +- } ++ unlink(outputName.c_str()); + string command3="cat <"+input+"|"+string(command2)+">"+outputName; + cerr<<"Running command:\""< subFolderNames() + { +-#define tempName "GfAnTeMpTeStS" +- char command[256]; +- system("rm "tempName); +- sprintf(command,"ls %s>" tempName ,testSuiteFolderOption.getValue()); +- system(command); +- + list ret; +- FILE *f=fopen(tempName,"r"); +- assert(f); +- char name[256]; +- while(fgets(name,255,f)) ++ DIR *dir = opendir(testSuiteFolderOption.getValue()); ++ struct dirent *dirent; ++ ++ assert(dir); ++ for (struct dirent *ent = readdir(dir); ent; ent = readdir(dir)) + { +- for(int i=0;i<255 && name[i];i++)if(name[i]=='\n'){name[i]=0;} +- if(name[0]>='0' && name[0]<='9')ret.push_back(string(testSuiteFolderOption.getValue())+"/"+string(name)); ++ if (ent->d_name[0]>='0' && ent->d_name[0]<='9') ++ ret.push_back(string(testSuiteFolderOption.getValue())+"/"+string(ent->d_name)); + } +- fclose(f); ++ closedir(dir); + return ret; + } + +--- ./gfanlib_polymakefile.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./gfanlib_polymakefile.cpp 2011-04-27 14:50:10.599401328 -0600 +@@ -51,7 +51,7 @@ + { + list ret; + int c=s.peek(); +- while((c>='0') && (c<='9')|| (c==' ')) ++ while((c>='0' && c<='9')|| c==' ') + { + // fprintf(Stderr,"?\n"); + int r; +--- ./gfanlib_vector.h.orig 2011-01-25 08:33:18.000000000 -0700 ++++ ./gfanlib_vector.h 2011-04-27 14:49:26.193117051 -0600 +@@ -288,6 +288,7 @@ + f<<*i; + } + f<<")"; ++ return f; + } + typ gcd()const + { +--- ./gfanlib_zcone.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./gfanlib_zcone.cpp 2011-04-27 14:49:26.196116868 -0600 +@@ -726,6 +726,7 @@ + f< ret; + int c=s.peek(); +- while((c>='0') && (c<='9')|| (c==' ')) ++ while((c>='0' && c<='9')|| c==' ') + { + // fprintf(Stderr,"?\n"); + int r; +--- ./gfanlib_symmetriccomplex.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./gfanlib_symmetriccomplex.cpp 2011-04-27 14:49:26.199116684 -0600 +@@ -215,13 +215,12 @@ + return true; + } + +-/* ++#if 0 + IntVector SymmetricComplex::dimensionsAtInfinity()const + { + /* Using a double description like method this routine computes the + dimension of the intersection of each cone in the complex with + the plane x_0=0 */ +-/* + IntVector ret(cones.size()); + + int I=0; +@@ -240,7 +239,7 @@ + } + return ret; + } +-*/ ++#endif + + void SymmetricComplex::buildConeLists(bool onlyMaximal, bool compressed, std::vector >*conelist/*, ZMatrix *multiplicities*/)const + { +--- ./application.cpp.orig 2011-01-25 08:33:16.000000000 -0700 ++++ ./application.cpp 2011-04-27 14:49:26.200116623 -0600 +@@ -3,6 +3,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + +@@ -546,10 +548,11 @@ + if(all || p->includeInDefaultInstallation()) + if(strlen(p->name())>0) + { +- char c[1024]; +- sprintf(c,"ln -s %s%s %s%s%s\n",path,name,path,name,p->name()); +- fprintf(stderr,"%s",c); +- system(c); ++ char c[PATH_MAX], d[PATH_MAX]; ++ snprintf(c,PATH_MAX,"%s%s",path,name); ++ snprintf(d,PATH_MAX,"%s%s%s",path,name,p->name()); ++ fprintf(stderr,"ln -s %s %s\n",c,d); ++ symlink(c,d); + } + p=p->next; + } diff --git a/gfan.spec b/gfan.spec index be29bbd..8fd674a 100644 --- a/gfan.spec +++ b/gfan.spec @@ -1,18 +1,22 @@ Name: gfan -Version: 0.3 -Release: 7%{?dist} +Version: 0.5 +Release: 1%{?dist} Summary: Software for Computing Gröbner Fans and Tropical Varieties Group: Applications/Engineering License: GPL+ -URL: http://www.math.tu-berlin.de/%7Ejensen/software/gfan/gfan.html -Source0: http://www.math.tu-berlin.de/%7Ejensen/software/gfan/gfan%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -# Respect DESTDIR -Patch0: gfan-0.3-respect-destdir.diff - -BuildRequires: cddlib-static cddlib-devel +URL: http://www.math.tu-berlin.de/~jensen/software/gfan/gfan.html +Source0: http://www.math.tu-berlin.de/~jensen/software/gfan/gfan%{version}.tar.gz +# Sent upstream 2011 Apr 27. Respect DESTDIR +Patch0: gfan-respect-destdir.patch +# Sent upstream 2011 Apr 27. Fix 64-bit issues in printf statements by +# using %%zu instead of %%i for printing size_t values. +Patch1: gfan-format.patch +# Sent upstream 2011 Apr 27. Fix warnings that could indicate runtime +# problems. +Patch2: gfan-warning.patch + +BuildRequires: cddlib-devel BuildRequires: gmp-devel -BuildRequires: texlive-latex %description @@ -26,42 +30,58 @@ initial ideals and tropical geometry. Among these are an interactive traversal program for Gröbner fans and programs for graphical renderings. - %prep %setup -q -n %{name}%{version} -# manual is non-free -rm doc/ -rf - -# Use native fedora optflags, prefix, and bindir -sed -i -e 's|^OPTFLAGS.*$||' \ - -e 's|^PREFIX.*$|PREFIX = %{_prefix}|' \ - -e 's|^BINDIR.*$|BINDIR = %{_bindir}|' Makefile - -# respect DESTDIR %patch0 +%patch1 +%patch2 + +# manual is non-free +rm -rf doc + +# Point to where the TOPCOM binaries will be installed +sed -i \ + "s|^#define MINKOWSKIPROG.*|#define MINKOWSKIPROGRAM \"%{_bindir}/essai\"|" \ + minkowskisum.cpp + +# Fix the tests +sed -i 's/^%s/%s _bases/' \ + testsuite/0000InstallationSection/command \ + testsuite/0001GroebnerFan/command \ + testsuite/0003GroebnerFanMod3/command \ + testsuite/0004GroebnerFanSymmetry/command \ + testsuite/0007LeadingTerms/command \ + testsuite/0008PolynomialSetUnion/command \ + testsuite/0100SymmetricGfan/command \ + testsuite/0100TwoVariables/command +sed -i 's/^gfan/%s/' \ + testsuite/0507InitialIdeal/command \ + testsuite/0508IntegerGroebnerCone/command \ + testsuite/0509IntegerGroebnerFan/command +sed -i 's|func.poly|testsuite/0056WeildDivisor/func.poly|g' \ + testsuite/0056WeildDivisor/command %build -export OPTFLAGS="%{optflags} -DGMPRATIONAL -I/usr/include/cddlib" -make %{?_smp_mflags} +make %{?_smp_mflags} \ + OPTFLAGS="%{optflags} -DGMPRATIONAL -I/usr/include/cddlib" \ + PREFIX=%{_prefix} %install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} mkdir -p $RPM_BUILD_ROOT%{_libexecdir}/%{name} mv $RPM_BUILD_ROOT%{_bindir}/gfan_* $RPM_BUILD_ROOT%{_libexecdir}/%{name}/ pushd $RPM_BUILD_ROOT%{_libexecdir}/%{name}/ for symlink in gfan_*; do rm $symlink -# ln -s %{_bindir}/%{name} $symlink ln -s ../../bin/%{name} $symlink done popd -%clean -rm -rf $RPM_BUILD_ROOT +%check +./gfan _test %files @@ -72,6 +92,12 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Apr 25 2011 Jerry James - 0.5-1 +- New upstream release. +- Drop BuildRoot tag, clean script, and clean at start of install script. +- Build against shared cddlib now that it is available. +- Add check script, which requires fixing some broken tests. + * Tue Dec 8 2009 Michael Schwendt - 0.3-7 - Explicitly BR cddlib-static in accordance with the Packaging Guidelines (cddlib-devel is still static-only). diff --git a/sources b/sources index fab26a8..cd00f22 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -e4b5abe3714930b1789752fe79026b9d gfan0.3.tar.gz +2d76d1625e0766c57c2b3ece809c23c8 gfan0.5.tar.gz