* ./goodies:
- New: In buildCoriolis.py, support to build rpm packages (in user's "rpm" directory). - Added: coriolis2.spec.in for rpm building. Install under /opt/coriolis2. This spec files has the particularity to also buildup a binary tarball of the compiled & installed files, this avoid a second complete build stage. The tarball is put into "rpm/SOURCES".
This commit is contained in:
parent
3401114216
commit
9ac035bb49
|
@ -68,6 +68,7 @@ class ProjectBuilder:
|
||||||
self._libMode = "Shared"
|
self._libMode = "Shared"
|
||||||
self._makeArguments = []
|
self._makeArguments = []
|
||||||
self._environment = os.environ
|
self._environment = os.environ
|
||||||
|
self._rpmTopDir = os.path.join ( os.environ["HOME"], "rpm" )
|
||||||
|
|
||||||
self._guessOs ()
|
self._guessOs ()
|
||||||
self._updateSecondary ()
|
self._updateSecondary ()
|
||||||
|
@ -111,6 +112,11 @@ class ProjectBuilder:
|
||||||
|
|
||||||
if self._enableShared == "ON": self._libMode = "Shared"
|
if self._enableShared == "ON": self._libMode = "Shared"
|
||||||
else: self._libMode = "Static"
|
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
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,6 +157,7 @@ class ProjectBuilder:
|
||||||
if m:
|
if m:
|
||||||
self._svnTag = m.group("revision")
|
self._svnTag = m.group("revision")
|
||||||
print "Latest revision of project %s is %s." % (project.getName(),self._svnTag)
|
print "Latest revision of project %s is %s." % (project.getName(),self._svnTag)
|
||||||
|
self._updateSecondary ()
|
||||||
return
|
return
|
||||||
|
|
||||||
print "[WARNING] Cannot guess revision for project \"%s\"." % project.getName()
|
print "[WARNING] Cannot guess revision for project \"%s\"." % project.getName()
|
||||||
|
@ -158,6 +165,27 @@ class ProjectBuilder:
|
||||||
return
|
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 ):
|
def _execute ( self, command, error ):
|
||||||
sys.stdout.flush ()
|
sys.stdout.flush ()
|
||||||
sys.stderr.flush ()
|
sys.stderr.flush ()
|
||||||
|
@ -400,20 +428,22 @@ class ProjectBuilder:
|
||||||
def tarball ( self, tools, projects ):
|
def tarball ( self, tools, projects ):
|
||||||
if self._svnTag == "x":
|
if self._svnTag == "x":
|
||||||
self._guessSvnTag ( self.getProject(projects[0]) )
|
self._guessSvnTag ( self.getProject(projects[0]) )
|
||||||
|
|
||||||
|
self._doSpec ()
|
||||||
|
|
||||||
if os.path.isdir(self._tarballDir):
|
if os.path.isdir(self._tarballDir):
|
||||||
print "Removing previous tarball directory: \"%s\"." % self._tarballDir
|
print "Removing previous tarball directory: \"%s\"." % self._tarballDir
|
||||||
command = [ "/bin/rm", "-r", self._tarballDir ]
|
command = [ "/bin/rm", "-r", self._tarballDir ]
|
||||||
self._execute ( command, "Removing top export (tarball) directory" )
|
self._execute ( command, "Removing top export (tarball) directory" )
|
||||||
|
|
||||||
print "Creating tarball directory: \"%s\"." % self._tarballDir
|
print "Creating tarball directory: \"%s\"." % self._tarballDir
|
||||||
os.makedirs ( self._tarballDir )
|
os.makedirs ( self._tarballDir )
|
||||||
self.svnExport ( tools, projects )
|
self.svnExport ( tools, projects )
|
||||||
|
|
||||||
os.chdir ( self._tarballDir )
|
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" )
|
self._execute ( command, "tar command failed" )
|
||||||
|
|
||||||
print "Cleanup SVN export tarball archive directory: \"%s\"." % self._archiveDir
|
print "Cleanup SVN export tarball archive directory: \"%s\"." % self._archiveDir
|
||||||
command = [ "/bin/rm", "-r", self._archiveDir ]
|
command = [ "/bin/rm", "-r", self._archiveDir ]
|
||||||
self._execute ( command, "Removing archive export (tarball) directory" )
|
self._execute ( command, "Removing archive export (tarball) directory" )
|
||||||
|
@ -421,6 +451,29 @@ class ProjectBuilder:
|
||||||
return
|
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__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
io = Project ( name = "io"
|
io = Project ( name = "io"
|
||||||
|
@ -477,6 +530,7 @@ if __name__ == "__main__":
|
||||||
parser.add_option ( "--svn-checkout" , action="store_true", dest="svnCheckout" )
|
parser.add_option ( "--svn-checkout" , action="store_true", dest="svnCheckout" )
|
||||||
# Miscellaneous.
|
# Miscellaneous.
|
||||||
parser.add_option ( "--tarball" , action="store_true", dest="tarball" )
|
parser.add_option ( "--tarball" , action="store_true", dest="tarball" )
|
||||||
|
parser.add_option ( "--do-rpm" , action="store_true", dest="doRpm" )
|
||||||
( options, args ) = parser.parse_args ()
|
( options, args ) = parser.parse_args ()
|
||||||
|
|
||||||
builder = ProjectBuilder ()
|
builder = ProjectBuilder ()
|
||||||
|
@ -504,6 +558,7 @@ if __name__ == "__main__":
|
||||||
elif options.svnUpdate: builder.svnUpdate ( tools=options.tools, projects=options.projects )
|
elif options.svnUpdate: builder.svnUpdate ( tools=options.tools, projects=options.projects )
|
||||||
elif options.svnCheckout: builder.svnCheckout ( 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.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 )
|
else: builder.build ( tools=options.tools, projects=options.projects )
|
||||||
|
|
||||||
sys.exit ( 0 )
|
sys.exit ( 0 )
|
||||||
|
|
|
@ -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 <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
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 <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
- Initial packaging for svn release 1322 (alpha stage).
|
Loading…
Reference in New Issue