diff --git a/bootstrap/buildCoriolis.py b/bootstrap/buildCoriolis.py index c8d6bc60..5ac732b4 100755 --- a/bootstrap/buildCoriolis.py +++ b/bootstrap/buildCoriolis.py @@ -68,6 +68,7 @@ class ProjectBuilder: self._libMode = "Shared" self._makeArguments = [] self._environment = os.environ + self._rpmTopDir = os.path.join ( os.environ["HOME"], "rpm" ) self._guessOs () self._updateSecondary () @@ -111,6 +112,11 @@ class ProjectBuilder: if self._enableShared == "ON": self._libMode = "Shared" else: self._libMode = "Static" + + self._specFileIn = os.path.join ( self._sourceDir, "goodies", "coriolis2.spec.in" ) + self._specFile = os.path.join ( self._sourceDir, "goodies", "coriolis2.spec" ) + self._sourceTarBz2 = "coriolis2-1.0-%s.tar.bz2" % self._svnTag + self._binaryTarBz2 = "coriolis2-binary-1.0-%s.tar.bz2" % self._svnTag return @@ -151,6 +157,7 @@ class ProjectBuilder: if m: self._svnTag = m.group("revision") print "Latest revision of project %s is %s." % (project.getName(),self._svnTag) + self._updateSecondary () return print "[WARNING] Cannot guess revision for project \"%s\"." % project.getName() @@ -158,6 +165,27 @@ class ProjectBuilder: return + def _doSpec ( self ): + fdSpecFileIn = open ( self._specFileIn, "r" ) + fdSpecFile = open ( self._specFile , "w" ) + + for line in fdSpecFileIn.readlines(): + stable = False + substituted0 = line + + while not stable: + substituted1 = re.sub ( r"@svntag@" , self._svnTag , substituted0 ) + substituted1 = re.sub ( r"@coriolisTop@", "/opt/coriolis2", substituted1 ) + if substituted0 == substituted1: stable = True + else: substituted0 = substituted1 + + fdSpecFile.write ( substituted0 ) + + fdSpecFileIn.close () + fdSpecFile.close () + return + + def _execute ( self, command, error ): sys.stdout.flush () sys.stderr.flush () @@ -400,20 +428,22 @@ class ProjectBuilder: def tarball ( self, tools, projects ): if self._svnTag == "x": self._guessSvnTag ( self.getProject(projects[0]) ) + + self._doSpec () if os.path.isdir(self._tarballDir): print "Removing previous tarball directory: \"%s\"." % self._tarballDir command = [ "/bin/rm", "-r", self._tarballDir ] self._execute ( command, "Removing top export (tarball) directory" ) - + print "Creating tarball directory: \"%s\"." % self._tarballDir os.makedirs ( self._tarballDir ) self.svnExport ( tools, projects ) - + os.chdir ( self._tarballDir ) - command = [ "/bin/tar", "jcvf", "coriolis2-1.0-%s.tar.bz2" % (self._svnTag), "coriolis2-1.0" ] + command = [ "/bin/tar", "jcvf", self._sourceTarBz2, "coriolis2-1.0" ] self._execute ( command, "tar command failed" ) - + print "Cleanup SVN export tarball archive directory: \"%s\"." % self._archiveDir command = [ "/bin/rm", "-r", self._archiveDir ] self._execute ( command, "Removing archive export (tarball) directory" ) @@ -421,6 +451,29 @@ class ProjectBuilder: return + def doRpm ( self, tools, projects ): + self.tarball ( tools, projects ) + + rpmSpecFile = os.path.join ( self._rpmTopDir, "SPECS/coriolis2.spec" ) + rpmSourceFile = os.path.join ( self._rpmTopDir, "SOURCES", self._sourceTarBz2 ) + + sourceFile = os.path.join ( self._tarballDir, self._sourceTarBz2 ) + + if os.path.isfile ( rpmSpecFile ): + os.unlink ( rpmSpecFile ) + + os.symlink ( self._specFile , rpmSpecFile ) + if not os.path.islink ( rpmSourceFile ): + os.symlink ( sourceFile, rpmSourceFile ) + + os.chdir ( os.path.join ( os.environ["HOME"], "rpm" ) ) + command = [ "/usr/bin/rpmbuild", "-ba", "--with", "binarytar", rpmSpecFile ] + + self._execute ( command, "Rebuild rpm packages" ) + + return + + if __name__ == "__main__": io = Project ( name = "io" @@ -477,6 +530,7 @@ if __name__ == "__main__": parser.add_option ( "--svn-checkout" , action="store_true", dest="svnCheckout" ) # Miscellaneous. parser.add_option ( "--tarball" , action="store_true", dest="tarball" ) + parser.add_option ( "--do-rpm" , action="store_true", dest="doRpm" ) ( options, args ) = parser.parse_args () builder = ProjectBuilder () @@ -504,6 +558,7 @@ if __name__ == "__main__": elif options.svnUpdate: builder.svnUpdate ( tools=options.tools, projects=options.projects ) elif options.svnCheckout: builder.svnCheckout ( tools=options.tools, projects=options.projects ) elif options.tarball: builder.tarball ( tools=options.tools, projects=options.projects ) + elif options.doRpm: builder.doRpm ( tools=options.tools, projects=options.projects ) else: builder.build ( tools=options.tools, projects=options.projects ) sys.exit ( 0 ) diff --git a/bootstrap/coriolis2.spec.in b/bootstrap/coriolis2.spec.in new file mode 100644 index 00000000..fbbc44ff --- /dev/null +++ b/bootstrap/coriolis2.spec.in @@ -0,0 +1,136 @@ + +%define coriolisTop @coriolisTop@ +%define svntag @svntag@ + +%define with_binarytar %{?_with_binarytar:1}%{!?_with_binarytar:0} + + +Name: coriolis2 +Summary: Coriolis 2 VLSI CAD Sytem +Version: 1.0 +Release: 1 +License: LGPL/GPL +Group: Applications/Engineering +Source: %{name}-%{version}-%{svntag}.tar.bz2 +URL: http://www-asim.lip6.fr/ +Packager: Jean-Paul Chaput +BuildRoot: %{_tmppath}/root-%{name} + + +%description +Coriolis is the new CAD tool suite intended to replace the +physical backend flow of Alliance. + + +%package devel +Summary: Coriolis 2 VLSI CAD Sytem - Development +Group: Applications/Engineering +Requires: %{name} = %{version}-%{release} + + +%description devel +Development files for the Coriolis 2 package. + + +%prep +%setup + + +%build + if [ -d %{buildroot} ]; then rm -r %{buildroot}; fi + + IO_TOP=%{buildroot}%{coriolisTop}; export IO_TOP + CORIOLIS_TOP=%{buildroot}%{coriolisTop}; export CORIOLIS_TOP + +# Do build & install in one step. + tools="io hurricane crlcore knik katabatic kite equinox solstice unicorn" + for tool in $tools; do + %__mkdir_p build/$tool + pushd build/$tool; + cmake -D CMAKE_BUILD_TYPE:STRING=RELEASE \ + -D BUILD_SHARED_LIBS:STRING=ON \ + -D BUILD_DOC:STRING=OFF \ + -D CMAKE_INSTALL_PREFIX:STRING=%{coriolisTop} \ + ../../$tool + make DESTDIR=%{buildroot} %{_smp_mflags} install + popd + done + + +%install +# Nothing to do here. +# Removing undistributed binaries. + %__rm -f %{buildroot}%{coriolisTop}/bin/{cx2y,kite-text} + + %{__mkdir} -p %{buildroot}%{_sysconfdir}/ld.so.conf.d/ + cat > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}.conf << EOF +# Coriolis 2 VLSI design system +%{prefix}/lib +%{prefix}/lib/python +EOF + +%if %{with_binarytar} + cd %{buildroot}%{coriolisTop} + tar --exclude "*/cmake_modules*" \ + -jcf %{_sourcedir}/%{name}-binary-%{version}-%{release}-%{svntag}.tar.bz2 \ + bin lib share +%endif + + +%clean + if [ -d %{buildroot} ]; then rm -r %{buildroot}; fi + + +%files +%defattr(-,root,root,-) +%dir %{coriolisTop}/share/etc +%dir %{coriolisTop}/share/etc/flute-2.4 +%dir %{coriolisTop}/bin +%dir %{coriolisTop}/lib +%dir %{coriolisTop}/lib/python +%{coriolisTop}/bin/* +%{coriolisTop}/lib/*.so +%{coriolisTop}/lib/python/*.so +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/* +%config(noreplace) %{coriolisTop}/share/etc/*.xml +%config(noreplace) %{coriolisTop}/share/etc/flute-2.4/*.dat + + +%files devel +%defattr(-,root,root,-) +%dir %{coriolisTop}/share/cmake_modules +%dir %{coriolisTop}/include +%dir %{coriolisTop}/include/io +%dir %{coriolisTop}/include/io/agds +%dir %{coriolisTop}/include/io/cif +%dir %{coriolisTop}/include/io/dtr +%dir %{coriolisTop}/include/io/openChams +%dir %{coriolisTop}/include/hurricane +%dir %{coriolisTop}/include/hurricane/viewer +%dir %{coriolisTop}/include/hurricane/isobar +%dir %{coriolisTop}/include/coriolis +%dir %{coriolisTop}/include/coriolis/crlcore +%dir %{coriolisTop}/include/coriolis/knik +%dir %{coriolisTop}/include/coriolis/katabatic +%dir %{coriolisTop}/include/coriolis/kite +%dir %{coriolisTop}/include/coriolis/equinox +%dir %{coriolisTop}/include/coriolis/solstice +%{coriolisTop}/share/cmake_modules/*.cmake +%{coriolisTop}/include/io/agds/*.h +%{coriolisTop}/include/io/cif/*.h +%{coriolisTop}/include/io/dtr/*.h +%{coriolisTop}/include/io/openChams/*.h +%{coriolisTop}/include/hurricane/*.h +%{coriolisTop}/include/hurricane/viewer/*.h +%{coriolisTop}/include/hurricane/isobar/*.h +%{coriolisTop}/include/coriolis/crlcore/*.h +%{coriolisTop}/include/coriolis/knik/*.h +%{coriolisTop}/include/coriolis/katabatic/*.h +%{coriolisTop}/include/coriolis/kite/*.h +%{coriolisTop}/include/coriolis/equinox/*.h +%{coriolisTop}/include/coriolis/solstice/*.h + + +%changelog +* Sun May 16 2010 Jean-Paul.Chaput +- Initial packaging for svn release 1322 (alpha stage).