Adapt the rpm automated build system of bootstrap (pass 2)

This commit is contained in:
Jean-Paul Chaput 2015-04-08 00:33:26 +02:00
parent 9e672ffaa8
commit 1625b16d4c
6 changed files with 101 additions and 243 deletions

2
.gitignore vendored
View File

@ -11,6 +11,8 @@ rtf/
html/
latex/
bootstrap/coriolis2.spec
documentation/UsersGuide/UsersGuide-raw.tex
documentation/UsersGuide/UsersGuide.tex
documentation/UsersGuide/UsersGuide.aux

View File

@ -2,11 +2,19 @@
# -*- Makefile -*-
# Mimicking the behavior of a top-level autotool generated Makefile.
define pythonSiteLocator =
import os.path
import distutils.sysconfig
print distutils.sysconfig.get_python_lib()
endef
tools = bootstrap vlsisapd hurricane crlcore etesian knik katabatic kite \
equinox solstice cumulus stratus1 unicorn documentation
prefix = /usr
DESTDIR =
BUILD_DESTDIR = $(shell pwd)/install.dir
PYTHON_SITEDIR = $(shell python -c '$(pythonSiteLocator)')
IMPORTEDS_TOP = $(prefix)
CORIOLIS_TOP = $(prefix)
@ -33,6 +41,7 @@ build: FORCE
esac; \
echo "** Building tool Coloquinte"; \
mkdir -p build.dir/Coloquinte; \
cd build.dir/Coloquinte; \
cmake -D CMAKE_BUILD_TYPE:STRING=RELEASE \
-D BUILD_SHARED_LIBS:STRING=ON \
-D BUILD_DOC:STRING=OFF \
@ -41,6 +50,8 @@ build: FORCE
$${cmakeArgs} \
../../importeds/Coloquinte \
|| exit 1; \
make DESTDIR=$(BUILD_DESTDIR) install \
|| exit 1; \
cd ../..; \
for tool in $(tools); do \
echo "** Building tool $${tool}"; \
@ -52,7 +63,7 @@ build: FORCE
-D CMAKE_INSTALL_PREFIX:STRING=$(CORIOLIS_TOP) \
-D DESTDIR:STRING=$(BUILD_DESTDIR) \
$${cmakeArgs} \
../../$$tool \
../../coriolis/$$tool \
|| exit 1; \
make DESTDIR=$(BUILD_DESTDIR) install \
|| exit 1; \
@ -65,6 +76,19 @@ install: FORCE
"x86_64") commonCMakeArgs="-D LIB_SUFFIX:STRING=64";; \
*) commonCMakeArgs="";; \
esac; \
echo "** Installing tool Coloquinte"; \
cd build.dir/Coloquinte; \
cmake -D CMAKE_BUILD_TYPE:STRING=RELEASE \
-D BUILD_SHARED_LIBS:STRING=ON \
-D BUILD_DOC:STRING=ON \
-D CMAKE_INSTALL_PREFIX:STRING=$(CORIOLIS_TOP) \
-D DESTDIR:STRING=$(DESTDIR) \
$${cmakeArgs} \
../../importeds/Coloquinte \
|| exit 1; \
make DESTDIR=$(DESTDIR) install \
|| exit 1; \
cd ../..; \
for tool in $(tools); do \
echo "** Installing tool $${tool}"; \
cd build.dir/$$tool; \
@ -84,13 +108,16 @@ install: FORCE
-D CMAKE_INSTALL_PREFIX:STRING=${CORIOLIS_TOP} \
-D DESTDIR:STRING=$(DESTDIR) \
$${cmakeArgs} \
../../$$tool \
../../coriolis/$$tool \
|| exit 1; \
make DESTDIR=$(DESTDIR) -j1 $${makeArgs} install \
|| exit 1; \
cd ../..; \
done; \
rm -f $(DESTDIR)$(CORIOLIS_TOP)/bin/cx2y \
$(DESTDIR)$(CORIOLIS_TOP)/bin/kite-text
rm -rf $(DESTDIR)$(CORIOLIS_TOP)/bin/ccb \
$(DESTDIR)$(CORIOLIS_TOP)/bin/cx2y \
$(DESTDIR)$(CORIOLIS_TOP)/bin/*.bin \
$(DESTDIR)$(PYTHON_SITEDIR)/builder \
$(DESTDIR)/usr/share/cmake/Modules/GetGitRevisionDescription.cmake.in
FORCE:

View File

@ -90,9 +90,9 @@ class Builder:
return
def _configure ( self, fileIn, file ):
def _configure ( self, fileIn, fileOut ):
fdFileIn = open ( fileIn , "r" )
fdFile = open ( file , "w" )
fdFileOut = open ( fileOut, "w" )
for line in fdFileIn.readlines():
stable = False
@ -105,10 +105,10 @@ class Builder:
if substituted0 == substituted1: stable = True
else: substituted0 = substituted1
fdFile.write ( substituted0 )
fdFileOut.write ( substituted0 )
fdFileIn.close ()
fdFile.close ()
fdFileOut.close ()
return
@ -282,7 +282,7 @@ class Builder:
# return
def gitExport ( self, projectName ):
def gitArchive ( self, projectName ):
rawArchive = self.tarballDir+'/'+projectName+'.tar'
os.chdir ( self.sourceDir+'/'+projectName )
@ -301,6 +301,9 @@ class Builder:
command = [ 'tar', 'xf', rawArchive ]
self._execute ( command, "unpacking raw archive %s" % rawArchive )
command = [ 'rm', rawArchive ]
self._execute ( command, "Removing raw archive %s" % rawArchive )
# Hard-coded export of Coloquinte.
coloquinteRawArchive = self.tarballDir+'/coloquinte.tar'
@ -317,6 +320,17 @@ class Builder:
command = [ 'tar', 'xf', coloquinteRawArchive ]
self._execute ( command, "unpacking raw archive %s" % coloquinteRawArchive )
command = [ 'rm', coloquinteRawArchive ]
self._execute ( command, "Removing raw archive %s" % coloquinteRawArchive )
# Adds files neededs only for packaging purpose.
command = [ "/bin/ln", "-s", self.archiveDir+"/coriolis/bootstrap/Makefile.package"
, self.archiveDir+"/Makefile" ]
self._execute ( command, "link of %s failed" % "coriolis/boostrap/Makefile.package")
command = [ "/bin/ln", "-s", self.archiveDir+"/coriolis/bootstrap/debian", self.archiveDir ]
self._execute ( command, "Copying Debian/Ubuntu package control files" )
absSourceTarBz2 = '%s/%s' % (self.tarballDir,self.sourceTarBz2)
os.chdir ( self.tarballDir )
command = [ 'tar', 'jcf', absSourceTarBz2, os.path.basename(self.archiveDir) ]
@ -438,7 +452,7 @@ class Builder:
print "Creating tarball directory: \"%s\"." % self.tarballDir
os.makedirs ( self.tarballDir )
self.gitExport ( projects[0] )
self.gitArchive ( projects[0] )
# # Remove unpublisheds (yet) tools/files.
# for item in self.packageExcludes:

View File

@ -98,8 +98,9 @@ class Configuration ( object ):
self._debbuildDir = os.path.join ( self._rootDir , "debbuild" )
self._tmppathDir = os.path.join ( self._rpmbuildDir, "tmp" )
self._tarballDir = os.path.join ( self._rootDir , "tarball" )
self._archiveDir = os.path.join ( self._tarballDir , "%s-%s.git%s" % (self._packageName
self._archiveDir = os.path.join ( self._tarballDir , "%s-%s.%sgit%s" % (self._packageName
,self._packageVersion
,self._revDate
,self._gitHash) )
self._sourceDir = os.path.join ( self._rootDir , "src" )
self._bootstrapDir = os.path.join ( self._sourceDir , "coriolis/bootstrap" )
@ -114,8 +115,14 @@ class Configuration ( object ):
self._debianDir = os.path.join ( self._bootstrapDir, "debian" )
self._debChangelogIn = os.path.join ( self._debianDir , "changelog.in" )
self._debChangelog = os.path.join ( self._debianDir , "changelog" )
self._sourceTarBz2 = "%s-%s.git%s.tar.bz2" % (self._packageName,self._packageVersion,self._gitHash)
self._binaryTarBz2 = "%s-binary-%s.%s-1.slsoc6.tar.bz2" % (self._packageName,self._packageVersion,self._gitHash)
self._sourceTarBz2 = "%s-%s.%sgit%s.tar.bz2" % (self._packageName
,self._packageVersion
,self._revDate
,self._gitHash)
self._binaryTarBz2 = "%s-binary-%s.%sgit%s-1.el7.tar.bz2" % (self._packageName
,self._packageVersion
,self._revDate
,self._gitHash)
self._distribPatch = os.path.join ( self._sourceDir, "bootstrap", "%s-for-distribution.patch"%self._packageName )
return

View File

@ -1,193 +0,0 @@
%define coriolisVersion 2.1
%define coriolisTop %{_prefix}
%define githash 71e1c18
%define revdate 20150407
%define python_sitedir %{_lib}/%(python -c '
import os.path
import distutils.sysconfig
pathes = distutils.sysconfig.get_python_lib().split("/")
print os.path.join ( pathes[-2], pathes[-1] )
')
%if 0%{?rhel} > 5 || 0%{?fedora} > 10
%define qt4 qt
%else
%define qt4 qt4
%endif
Name: coriolis2
Summary: Coriolis 2 VLSI CAD System
Version: %{coriolisVersion}
Release: 1.%{revdate}.git%{githash}%{dist}
License: BSD/LGPL/GPL/FLUTE
Group: Applications/Engineering
Source: %{name}-%{version}.git%{githash}.tar.bz2
URL: http://www-asim.lip6.fr/
Packager: Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
Requires(post): ldconfig
Requires: boost >= 1.33.1
Requires: %{qt4} >= 4.5.0
BuildRequires: boost-devel >= 1.33.1
BuildRequires: %{qt4}-devel >= 4.5.0
BuildRoot: %{_tmppath}/root-%{name}
%description
Coriolis is the new CAD tool suite intended to replace the
physical backend flow of Alliance.
The Knik global router makes use of FLUTE, which is redistributed
under is own license. FLUTE is copyrighted by Dr. Chris C. N. Chu
from the Iowa State University <http://home.eng.iastate.edu/~cnchu>.
%package devel
Summary: Coriolis 2 VLSI CAD Sytem - Development
Group: Applications/Engineering
Requires: %{name} = %{version}-%{release}
Requires: %{qt4}-devel >= 4.5.0
%description devel
Development files for the Coriolis 2 package.
%prep
%setup -n %{name}-%{version}.git%{githash}
%build
if [ -d %{buildroot} ]; then rm -r %{buildroot}; fi
CORIOLIS_TOP=%{coriolisTop}; export CORIOLIS_TOP
IMPORTEDS_TOP=%{coriolisTop}; export IMPORTEDS_TOP
# Do build & install in one step, except for documentation.
cd coriolis
make -f bootstrap/Makefile.package \
DESTDIR=%{buildroot} \
BUILD_DESTDIR=%{_builddir}/%{buildsubdir}/install.dir \
%{_smp_mflags} build
%install
IMPORTEDS_TOP=%{coriolisTop}; export IMPORTEDS_TOP
CORIOLIS_TOP=%{coriolisTop}; export CORIOLIS_TOP
# Install & build documentation, in -j1.
cd coriolis
make -f bootstrap/Makefile.package \
DESTDIR=%{buildroot} -f bootstrap/Makefile.package \
BUILD_DESTDIR=%{_builddir}/%{buildsubdir}/install.dir \
-j1 install
# Copy the license from the Debian package directory.
cp bootstrap/debian/copyright %{buildroot}%{_datadir}/doc/coriolis2/COPYRIGHT
#%__rm -rf %{buildroot}%{coriolisTop}/share/doc/coriolis2
# Removing undistributed binaries.
#%__rm -f %{buildroot}%{coriolisTop}/bin/{cx2y,kite-text}
%clean
if [ -d %{buildroot} ]; then rm -r %{buildroot}; fi
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%doc %{_datadir}/doc/coriolis2
%dir %{_sysconfdir}/coriolis2
%dir %{coriolisTop}/share/coriolis2/flute-3.1
%dir %{coriolisTop}/bin
%dir %{coriolisTop}/%{_lib}
%dir %{coriolisTop}/%{python_sitedir}
%dir %{coriolisTop}/%{python_sitedir}/crlcore
%dir %{coriolisTop}/%{python_sitedir}/crlcore/helpers
%dir %{coriolisTop}/%{python_sitedir}/cumulus
%dir %{coriolisTop}/%{python_sitedir}/stratus
%{coriolisTop}/bin/*
%{coriolisTop}/%{_lib}/*.so.*
%{coriolisTop}/%{python_sitedir}/*.so
%{coriolisTop}/%{python_sitedir}/cumulus/*.py*
%{coriolisTop}/%{python_sitedir}/stratus/*.py*
%{coriolisTop}/%{python_sitedir}/crlcore/*.py*
%{coriolisTop}/%{python_sitedir}/crlcore/helpers/*.py*
#%config(noreplace) %{_sysconfdir}/ld.so.conf.d/*
%config(noreplace) %{_sysconfdir}/coriolis2/*.conf
%config(noreplace) %{_sysconfdir}/coriolis2/*.xml
%config(noreplace) %{_sysconfdir}/coriolis2/*.sh
%config(noreplace) %{_sysconfdir}/coriolis2/*.py*
%config(noreplace) %{_sysconfdir}/coriolis2/stratus.vim
%config(noreplace) %{coriolisTop}/share/coriolis2/flute-3.1/*.dat
%files devel
%defattr(-,root,root,-)
%dir %{coriolisTop}/%{_lib}
%dir %{coriolisTop}/share/cmake/Modules
%dir %{coriolisTop}/include
%dir %{coriolisTop}/include/vlsisapd
%dir %{coriolisTop}/include/vlsisapd/agds
%dir %{coriolisTop}/include/vlsisapd/cif
%dir %{coriolisTop}/include/vlsisapd/spice
%dir %{coriolisTop}/include/vlsisapd/liberty
%dir %{coriolisTop}/include/vlsisapd/bookshelf
%dir %{coriolisTop}/include/vlsisapd/configuration
#%dir %{coriolisTop}/include/vlsisapd/dtr
#%dir %{coriolisTop}/include/vlsisapd/openChams
%dir %{coriolisTop}/include/coriolis2/hurricane
%dir %{coriolisTop}/include/coriolis2/hurricane/viewer
%dir %{coriolisTop}/include/coriolis2/hurricane/isobar
%dir %{coriolisTop}/include/coriolis2
%dir %{coriolisTop}/include/coriolis2/crlcore
%dir %{coriolisTop}/include/coriolis2/nimbus
%dir %{coriolisTop}/include/coriolis2/etesian
%dir %{coriolisTop}/include/coriolis2/metis
%dir %{coriolisTop}/include/coriolis2/mauka
%dir %{coriolisTop}/include/coriolis2/knik
%dir %{coriolisTop}/include/coriolis2/katabatic
%dir %{coriolisTop}/include/coriolis2/kite
%dir %{coriolisTop}/include/coriolis2/equinox
%dir %{coriolisTop}/include/coriolis2/solstice
%dir %{coriolisTop}/include/coriolis2/unicorn
%{coriolisTop}/%{_lib}/*.so
%{coriolisTop}/share/cmake/Modules/*.cmake
%{coriolisTop}/include/vlsisapd/agds/*.h
%{coriolisTop}/include/vlsisapd/cif/*.h
%{coriolisTop}/include/vlsisapd/spice/*.h
%{coriolisTop}/include/vlsisapd/liberty/*.h
%{coriolisTop}/include/vlsisapd/bookshelf/*.h
%{coriolisTop}/include/vlsisapd/configuration/*.h
#%{coriolisTop}/include/vlsisapd/dtr/*.h
#%{coriolisTop}/include/vlsisapd/openChams/*.h
%{coriolisTop}/include/coriolis2/hurricane/*.h
%{coriolisTop}/include/coriolis2/hurricane/viewer/*.h
%{coriolisTop}/include/coriolis2/hurricane/isobar/*.h
%{coriolisTop}/include/coriolis2/crlcore/*.h
%{coriolisTop}/include/coriolis2/nimbus/*.h
%{coriolisTop}/include/coriolis2/metis/*.h
%{coriolisTop}/include/coriolis2/mauka/*.h
%{coriolisTop}/include/coriolis2/knik/*.h
%{coriolisTop}/include/coriolis2/katabatic/*.h
%{coriolisTop}/include/coriolis2/kite/*.h
%{coriolisTop}/include/coriolis2/equinox/*.h
%{coriolisTop}/include/coriolis2/solstice/*.h
%{coriolisTop}/include/coriolis2/unicorn/*.h
%changelog
* Wed Feb 2 2011 Jean-Paul.Chaput <Jean-Paul.Chaput@lip6.fr>
- Second release, all tools from Coriolis 1 have been ported.
(nimbus, mauka, metis, cumulus, stratus1)
* Sun May 16 2010 Jean-Paul.Chaput <Jean-Paul.Chaput@lip6.fr>
- Initial packaging for svn release 1322 (alpha stage).

View File

@ -22,11 +22,11 @@ print os.path.join ( pathes[-2], pathes[-1] )
Name: coriolis2
Summary: Coriolis 2 VLSI CAD System
Version: %{coriolisVersion}
Release: 1.%{revdate}.git%{githash}%{dist}
Release: 1.%{revdate}git%{githash}%{dist}
License: BSD/LGPL/GPL/FLUTE
Group: Applications/Engineering
Source: %{name}-%{version}.git%{githash}.tar.bz2
URL: http://www-asim.lip6.fr/
Source: %{name}-%{version}.%{revdate}git%{githash}.tar.bz2
URL: http://www-soc.lip6.fr/
Packager: Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
Requires(post): ldconfig
Requires: boost >= 1.33.1
@ -57,18 +57,17 @@ Development files for the Coriolis 2 package.
%prep
%setup -n %{name}-%{version}.git%{githash}
%setup -n %{name}-%{version}.%{revdate}git%{githash}
%build
if [ -d %{buildroot} ]; then rm -r %{buildroot}; fi
CORIOLIS_TOP=%{coriolisTop}; export CORIOLIS_TOP
IMPORTEDS_TOP=%{coriolisTop}; export IMPORTEDS_TOP
CORIOLIS_TOP=%{coriolisTop}; export CORIOLIS_TOP
# Do build & install in one step, except for documentation.
cd coriolis
make -f bootstrap/Makefile.package \
make -f coriolis/bootstrap/Makefile.package \
DESTDIR=%{buildroot} \
BUILD_DESTDIR=%{_builddir}/%{buildsubdir}/install.dir \
%{_smp_mflags} build
@ -79,14 +78,13 @@ Development files for the Coriolis 2 package.
CORIOLIS_TOP=%{coriolisTop}; export CORIOLIS_TOP
# Install & build documentation, in -j1.
cd coriolis
make -f bootstrap/Makefile.package \
DESTDIR=%{buildroot} -f bootstrap/Makefile.package \
make -f coriolis/bootstrap/Makefile.package \
DESTDIR=%{buildroot} \
BUILD_DESTDIR=%{_builddir}/%{buildsubdir}/install.dir \
-j1 install
# Copy the license from the Debian package directory.
cp bootstrap/debian/copyright %{buildroot}%{_datadir}/doc/coriolis2/COPYRIGHT
cp coriolis/bootstrap/debian/copyright %{buildroot}%{_datadir}/doc/coriolis2/COPYRIGHT
#%__rm -rf %{buildroot}%{coriolisTop}/share/doc/coriolis2
@ -118,13 +116,17 @@ Development files for the Coriolis 2 package.
%{coriolisTop}/%{_lib}/*.so.*
%{coriolisTop}/%{python_sitedir}/*.so
%{coriolisTop}/%{python_sitedir}/cumulus/*.py*
%{coriolisTop}/%{python_sitedir}/cumulus/plugins/*.py*
%{coriolisTop}/%{python_sitedir}/cumulus/plugins/*/*.py*
%{coriolisTop}/%{python_sitedir}/stratus/*.py*
%{coriolisTop}/%{python_sitedir}/crlcore/*.py*
%{coriolisTop}/%{python_sitedir}/crlcore/helpers/*.py*
%{coriolisTop}/%{python_sitedir}/kite/*.py*
%{coriolisTop}/%{python_sitedir}/unicorn/*.py*
#%config(noreplace) %{_sysconfdir}/ld.so.conf.d/*
%config(noreplace) %{_sysconfdir}/coriolis2/*.conf
%config(noreplace) %{_sysconfdir}/coriolis2/*/*.conf
%config(noreplace) %{_sysconfdir}/coriolis2/*.xml
%config(noreplace) %{_sysconfdir}/coriolis2/*.sh
%config(noreplace) %{_sysconfdir}/coriolis2/*.py*
%config(noreplace) %{_sysconfdir}/coriolis2/stratus.vim
%config(noreplace) %{coriolisTop}/share/coriolis2/flute-3.1/*.dat
@ -135,24 +137,23 @@ Development files for the Coriolis 2 package.
%dir %{coriolisTop}/%{_lib}
%dir %{coriolisTop}/share/cmake/Modules
%dir %{coriolisTop}/include
%dir %{coriolisTop}/include/coloquinte
%dir %{coriolisTop}/include/vlsisapd
%dir %{coriolisTop}/include/vlsisapd/utilities
%dir %{coriolisTop}/include/vlsisapd/agds
%dir %{coriolisTop}/include/vlsisapd/cif
%dir %{coriolisTop}/include/vlsisapd/spice
%dir %{coriolisTop}/include/vlsisapd/liberty
%dir %{coriolisTop}/include/vlsisapd/bookshelf
%dir %{coriolisTop}/include/vlsisapd/configuration
#%dir %{coriolisTop}/include/vlsisapd/dtr
#%dir %{coriolisTop}/include/vlsisapd/openChams
%dir %{coriolisTop}/include/vlsisapd/dtr
%dir %{coriolisTop}/include/vlsisapd/openChams
%dir %{coriolisTop}/include/coriolis2/hurricane
%dir %{coriolisTop}/include/coriolis2/hurricane/viewer
%dir %{coriolisTop}/include/coriolis2/hurricane/isobar
%dir %{coriolisTop}/include/coriolis2
%dir %{coriolisTop}/include/coriolis2/crlcore
%dir %{coriolisTop}/include/coriolis2/nimbus
%dir %{coriolisTop}/include/coriolis2/etesian
%dir %{coriolisTop}/include/coriolis2/metis
%dir %{coriolisTop}/include/coriolis2/mauka
%dir %{coriolisTop}/include/coriolis2/knik
%dir %{coriolisTop}/include/coriolis2/katabatic
%dir %{coriolisTop}/include/coriolis2/kite
@ -161,21 +162,21 @@ Development files for the Coriolis 2 package.
%dir %{coriolisTop}/include/coriolis2/unicorn
%{coriolisTop}/%{_lib}/*.so
%{coriolisTop}/share/cmake/Modules/*.cmake
%{coriolisTop}/include/coloquinte/*.hxx
%{coriolisTop}/include/vlsisapd/utilities/*.h
%{coriolisTop}/include/vlsisapd/agds/*.h
%{coriolisTop}/include/vlsisapd/cif/*.h
%{coriolisTop}/include/vlsisapd/spice/*.h
%{coriolisTop}/include/vlsisapd/liberty/*.h
%{coriolisTop}/include/vlsisapd/bookshelf/*.h
%{coriolisTop}/include/vlsisapd/configuration/*.h
#%{coriolisTop}/include/vlsisapd/dtr/*.h
#%{coriolisTop}/include/vlsisapd/openChams/*.h
%{coriolisTop}/include/vlsisapd/dtr/*.h
%{coriolisTop}/include/vlsisapd/openChams/*.h
%{coriolisTop}/include/coriolis2/hurricane/*.h
%{coriolisTop}/include/coriolis2/hurricane/viewer/*.h
%{coriolisTop}/include/coriolis2/hurricane/isobar/*.h
%{coriolisTop}/include/coriolis2/crlcore/*.h
%{coriolisTop}/include/coriolis2/nimbus/*.h
%{coriolisTop}/include/coriolis2/metis/*.h
%{coriolisTop}/include/coriolis2/mauka/*.h
%{coriolisTop}/include/coriolis2/etesian/*.h
%{coriolisTop}/include/coriolis2/knik/*.h
%{coriolisTop}/include/coriolis2/katabatic/*.h
%{coriolisTop}/include/coriolis2/kite/*.h