Adapt the rpm automated build system of bootstrap (pass 2)
* Change: coriolis2.spec.in, Makefile.package and Builder/ccb now support RHEL6, RHEL7 & Fedora. * Change: In Bootstrap, added a flag to activate compilation with openmp.
This commit is contained in:
parent
cdfdccb19d
commit
bacea5214c
|
@ -2,27 +2,24 @@
|
|||
# -*- 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
|
||||
pythonSiteLocator = "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1)"
|
||||
|
||||
tools = bootstrap vlsisapd hurricane crlcore coloquinte etesian knik \
|
||||
katabatic kite equinox solstice cumulus stratus1 unicorn documentation
|
||||
prefix = /usr
|
||||
rootPrefix = $(subst /usr,,$(prefix))
|
||||
DESTDIR =
|
||||
BUILD_DESTDIR = $(shell pwd)/install.dir
|
||||
PYTHON_SITEDIR = $(shell python -c $(pythonSiteLocator))
|
||||
IMPORTEDS_TOP = $(prefix)
|
||||
CORIOLIS_TOP = $(prefix)
|
||||
|
||||
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)
|
||||
|
||||
environment = IMPORTEDS_TOP=$(IMPORTEDS_TOP); export IMPORTEDS_TOP; \
|
||||
CORIOLIS_TOP=$(CORIOLIS_TOP); export CORIOLIS_TOP
|
||||
environment = IMPORTEDS_TOP=$(IMPORTEDS_TOP); export IMPORTEDS_TOP; \
|
||||
CORIOLIS_TOP=$(CORIOLIS_TOP); export CORIOLIS_TOP
|
||||
|
||||
.PHONY: build install FORCE
|
||||
|
||||
|
||||
all: build
|
||||
|
||||
clean:
|
||||
|
@ -39,20 +36,15 @@ build: FORCE
|
|||
"x86_64") cmakeArgs="-D LIB_SUFFIX:STRING=64";; \
|
||||
*) cmakeArgs="";; \
|
||||
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 \
|
||||
-D CMAKE_INSTALL_PREFIX:STRING=$(CORIOLIS_TOP) \
|
||||
-D DESTDIR:STRING=$(BUILD_DESTDIR) \
|
||||
$${cmakeArgs} \
|
||||
../../importeds/Coloquinte \
|
||||
|| exit 1; \
|
||||
make DESTDIR=$(BUILD_DESTDIR) install \
|
||||
|| exit 1; \
|
||||
cd ../..; \
|
||||
case "$${X_SCLS}" in \
|
||||
*"devtoolset"*) \
|
||||
cmakeArgs="$${cmakeArgs} -D Boost_NO_SYSTEM_PATHS:STRING=TRUE"; \
|
||||
BOOST_INCLUDEDIR="/opt/rh/devtoolset-2/root/usr/include"; \
|
||||
BOOST_LIBRARYDIR="/opt/rh/devtoolset-2/root/usr/lib"; \
|
||||
export BOOST_INCLUDEDIR BOOST_LIBRARYDIR; \
|
||||
echo "** Using $${X_SCLS}."; \
|
||||
;; \
|
||||
esac; \
|
||||
for tool in $(tools); do \
|
||||
echo "** Building tool $${tool}"; \
|
||||
mkdir -p build.dir/$$tool; \
|
||||
|
@ -65,7 +57,7 @@ build: FORCE
|
|||
$${cmakeArgs} \
|
||||
../../coriolis/$$tool \
|
||||
|| exit 1; \
|
||||
make DESTDIR=$(BUILD_DESTDIR) install \
|
||||
make DESTDIR=$(BUILD_DESTDIR) $(SMP_MFLAGS) install \
|
||||
|| exit 1; \
|
||||
cd ../..; \
|
||||
done
|
||||
|
@ -76,19 +68,6 @@ 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; \
|
||||
|
@ -114,10 +93,11 @@ install: FORCE
|
|||
|| exit 1; \
|
||||
cd ../..; \
|
||||
done; \
|
||||
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
|
||||
rm -rfv $(DESTDIR)$(rootPrefix)/etc/coriolis2/coriolis2.sh \
|
||||
$(DESTDIR)$(prefix)/bin/ccb \
|
||||
$(DESTDIR)$(prefix)/bin/cx2y \
|
||||
$(DESTDIR)$(prefix)/bin/*.bin \
|
||||
$(DESTDIR)$(rootPrefix)$(PYTHON_SITEDIR)/builder \
|
||||
$(DESTDIR)$(prefix)/share/cmake/Modules/GetGitRevisionDescription.cmake.in
|
||||
|
||||
FORCE:
|
||||
|
|
|
@ -37,6 +37,7 @@ class Builder:
|
|||
self._clang = False
|
||||
self._devtoolset2 = False
|
||||
self._qt5 = False
|
||||
self._openmp = False
|
||||
self._enableShared = "ON"
|
||||
self._enableDoc = "OFF"
|
||||
self._checkDatabase = "OFF"
|
||||
|
@ -62,6 +63,7 @@ class Builder:
|
|||
elif attribute == "clang": self._clang = value
|
||||
elif attribute == "devtoolset2": self._devtoolset2 = value
|
||||
elif attribute == "qt5": self._qt5 = value
|
||||
elif attribute == "openmp": self._openmp = value
|
||||
elif attribute == "enableDoc": self._enableDoc = value
|
||||
elif attribute == "enableShared": self._enableShared = value
|
||||
elif attribute == "checkDatabase": self._checkDatabase = value
|
||||
|
@ -128,9 +130,11 @@ class Builder:
|
|||
commandAsString = ''
|
||||
for i in range(len(command)):
|
||||
if i: commandAsString += ' '
|
||||
commandAsString += command[i]
|
||||
if ' ' in command[i]: commandAsString += '"'+command[i]+'"'
|
||||
else: commandAsString += command[i]
|
||||
command = [ 'scl', 'enable', 'devtoolset-2', commandAsString ]
|
||||
|
||||
#print command
|
||||
sys.stdout.flush ()
|
||||
sys.stderr.flush ()
|
||||
child = subprocess.Popen ( command, env=self._environment, stdout=None )
|
||||
|
@ -164,6 +168,7 @@ class Builder:
|
|||
if self._ninja: command += [ "-G", "Ninja" ]
|
||||
if self._devtoolset2: command += [ "-D", "Boost_NO_SYSTEM_PATHS:STRING=TRUE" ]
|
||||
if self._qt5: command += [ "-D", "WITH_QT5:STRING=TRUE" ]
|
||||
if self._openmp: command += [ "-D", "WITH_OPENMP:STRING=TRUE" ]
|
||||
|
||||
command += [ "-D", "CMAKE_BUILD_TYPE:STRING=%s" % self.buildMode
|
||||
, "-D", "BUILD_SHARED_LIBS:STRING=%s" % self.enableShared
|
||||
|
@ -209,79 +214,6 @@ class Builder:
|
|||
return
|
||||
|
||||
|
||||
#def _svnStatus ( self, tool ):
|
||||
# toolSourceDir = os.path.join ( self.sourceDir , tool )
|
||||
# if not os.path.isdir(toolSourceDir):
|
||||
# if not self._quiet:
|
||||
# print ErrorMessage( 0, "Missing tool source directory: \"%s\" (skipped)."%toolSourceDir )
|
||||
# return
|
||||
# os.chdir ( toolSourceDir )
|
||||
#
|
||||
# print "Checking SVN status of tool: ", tool
|
||||
# command = [ "svn", "status", "-u", "-q" ]
|
||||
# self._execute ( command, "svn status -u -q" )
|
||||
# print
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def _svnDiff ( self, tool ):
|
||||
# toolSourceDir = os.path.join ( self.sourceDir , tool )
|
||||
# if not os.path.isdir(toolSourceDir):
|
||||
# if not self._quiet:
|
||||
# print ErrorMessage( 0, "Missing tool source directory: \"%s\" (skipped)."%toolSourceDir )
|
||||
# return
|
||||
# os.chdir ( toolSourceDir )
|
||||
#
|
||||
# print "Doing a SVN diff of tool: ", tool
|
||||
# command = [ "svn", "diff" ]
|
||||
# if self.gitHash != "x":
|
||||
# command += [ "--revision", self.gitHash ]
|
||||
# self._execute ( command, "svn diff %s" % tool )
|
||||
# print
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def _svnUpdate ( self, tool ):
|
||||
# toolSourceDir = os.path.join ( self.sourceDir , tool )
|
||||
# if not os.path.isdir(toolSourceDir):
|
||||
# if not self._quiet:
|
||||
# print ErrorMessage( 0, "Missing tool source directory: \"%s\" (skipped)."%toolSourceDir)
|
||||
# return
|
||||
# os.chdir ( toolSourceDir )
|
||||
#
|
||||
# print "Doing a SVN update of tool: ", tool
|
||||
# command = [ "svn", "update" ]
|
||||
# self._execute ( command, "svn update" )
|
||||
# print
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def _svnCheckout ( self, tool ):
|
||||
# project = self._conf.getToolProject ( tool )
|
||||
# if not project:
|
||||
# print ErrorMessage( 0, "Tool \"%s\" is not part of any project."%tool
|
||||
# ,"Cannot guess the SVN repository." )
|
||||
# return
|
||||
# if not project.getRepository ():
|
||||
# print ErrorMessage( 0, "Project \"%s\" isn't associated to a repository."%project.getName() )
|
||||
# return
|
||||
#
|
||||
# if not os.path.isdir(self.sourceDir):
|
||||
# print ErrorMessage( 0, "Source directory <%s> doesn't exists. Creating."%self.sourceDir )
|
||||
# os.makedirs( self.sourceDir )
|
||||
#
|
||||
# toolSvnTrunkDir = os.path.join ( self.svnMethod+project.getRepository(), tool, "trunk" )
|
||||
# os.chdir ( self.sourceDir )
|
||||
#
|
||||
# print "Doing a SVN checkout of tool: ", tool
|
||||
# command = [ "svn", "co", toolSvnTrunkDir, tool ]
|
||||
# if self.gitHash != "x":
|
||||
# command += [ "--revision", self.gitHash ]
|
||||
# self._execute ( command, "svn checkout %s" % tool )
|
||||
# print
|
||||
# return
|
||||
|
||||
|
||||
def gitArchive ( self, projectName ):
|
||||
rawArchive = self.tarballDir+'/'+projectName+'.tar'
|
||||
|
||||
|
@ -304,32 +236,29 @@ class Builder:
|
|||
command = [ 'rm', rawArchive ]
|
||||
self._execute ( command, "Removing raw archive %s" % rawArchive )
|
||||
|
||||
# Hard-coded export of Coloquinte.
|
||||
coloquinteRawArchive = self.tarballDir+'/coloquinte.tar'
|
||||
|
||||
os.chdir ( self.sourceDir+'/importeds/Coloquinte')
|
||||
command = [ 'git'
|
||||
, 'archive'
|
||||
, '--prefix=%s/' % 'importeds/Coloquinte/'
|
||||
, '--output=%s' % coloquinteRawArchive
|
||||
, 'master'
|
||||
]
|
||||
self._execute ( command, "git archive of project %s" % 'Coloquinte' )
|
||||
|
||||
os.chdir ( self.archiveDir )
|
||||
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"
|
||||
command = [ "/bin/ln", "-s", "./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 ]
|
||||
command = [ "/bin/ln", "-s", "./coriolis/bootstrap/debian", self.archiveDir ]
|
||||
self._execute ( command, "Copying Debian/Ubuntu package control files" )
|
||||
|
||||
# # Remove unpublisheds (yet) tools/files.
|
||||
# for item in self.packageExcludes:
|
||||
# command = [ "/bin/rm", "-rf", os.path.join(self.archiveDir,item) ]
|
||||
# self._execute ( command, "rm of %s failed" % item)
|
||||
#
|
||||
# # Adds files neededs only for packaging purpose.
|
||||
# command = [ "/bin/cp", "-r", os.path.join(self.sourceDir ,"bootstrap","Makefile.package")
|
||||
# , os.path.join(self.archiveDir,"Makefile") ]
|
||||
# self._execute ( command, "copy of %s failed" % "boostrap/Makefile.package")
|
||||
#
|
||||
# os.chdir ( self.archiveDir )
|
||||
# command = [ "/usr/bin/patch", "--remove-empty-files"
|
||||
# , "--no-backup-if-mismatch"
|
||||
# , "-p0", "-i", self.distribPatch ]
|
||||
# self._execute ( command, "patch for distribution command failed" )
|
||||
|
||||
absSourceTarBz2 = '%s/%s' % (self.tarballDir,self.sourceTarBz2)
|
||||
os.chdir ( self.tarballDir )
|
||||
|
@ -413,31 +342,6 @@ class Builder:
|
|||
return
|
||||
|
||||
|
||||
#def svnStatus ( self, tools, projects ):
|
||||
# self._commandTemplate ( tools, projects, "_svnStatus" )
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def svnUpdate ( self, tools, projects ):
|
||||
# self._commandTemplate ( tools, projects, "_svnUpdate" )
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def svnCheckout ( self, tools, projects ):
|
||||
# self._commandTemplate ( tools, projects, "_svnCheckout" )
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def svnDiff ( self, tools, projects ):
|
||||
# self._commandTemplate ( tools, projects, "_svnDiff" )
|
||||
# return
|
||||
#
|
||||
#
|
||||
#def svnExport ( self, tools, projects ):
|
||||
# self._commandTemplate ( tools, projects, "_svnExport" )
|
||||
# return
|
||||
|
||||
|
||||
def gitTarball ( self, tools, projects ):
|
||||
if self.gitHash == "x":
|
||||
self._guessGitHash ( self.getProject(projects[0]) )
|
||||
|
@ -454,39 +358,6 @@ class Builder:
|
|||
os.makedirs ( self.tarballDir )
|
||||
self.gitArchive ( projects[0] )
|
||||
|
||||
# # Remove unpublisheds (yet) tools/files.
|
||||
# for item in self.packageExcludes:
|
||||
# command = [ "/bin/rm", "-rf", os.path.join(self.archiveDir,item) ]
|
||||
# self._execute ( command, "rm of %s failed" % item)
|
||||
#
|
||||
# # Adds files neededs only for packaging purpose.
|
||||
# command = [ "/bin/cp", "-r", os.path.join(self.sourceDir ,"bootstrap","Makefile.package")
|
||||
# , os.path.join(self.archiveDir,"Makefile") ]
|
||||
# self._execute ( command, "copy of %s failed" % "boostrap/Makefile.package")
|
||||
#
|
||||
# command = [ "/bin/cp", self.specFile, self.archiveDir ]
|
||||
# self._execute ( command, "Copying RPM spec file" )
|
||||
#
|
||||
# command = [ "/bin/cp", "-r", self.debianDir, self.archiveDir ]
|
||||
# self._execute ( command, "Copying Debian/Ubuntu package control files" )
|
||||
#
|
||||
# os.chdir ( self.archiveDir )
|
||||
# #command = [ "/usr/bin/patch", "--remove-empty-files"
|
||||
# # , "--no-backup-if-mismatch"
|
||||
# # , "-p0", "-i", self.distribPatch ]
|
||||
# #self._execute ( command, "patch for distribution command failed" )
|
||||
#
|
||||
# os.chdir ( self.tarballDir )
|
||||
# command = [ "/bin/tar"
|
||||
# , "--exclude-backups"
|
||||
# , "--exclude-vcs"
|
||||
# , "-jcvf", self.sourceTarBz2, os.path.basename(self.archiveDir) ]
|
||||
# self._execute ( command, "tar command failed" )
|
||||
#
|
||||
# print "Cleanup SVN export tarball archive directory: \"%s\"." % self.archiveDir
|
||||
# command = [ "/bin/rm", "-rf", self.archiveDir ]
|
||||
# self._execute ( command, "Removing archive export (tarball) directory" )
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
@ -520,9 +391,17 @@ class Builder:
|
|||
|
||||
for rpmDir in [ "SOURCES", "SPECS", "BUILD", "tmp"
|
||||
, "SRPMS", "RPMS/i386", "RPMS/i686", "RPMS/x86_64" ]:
|
||||
rpmFullDir = os.path.join ( self.rpmbuildDir, rpmDir )
|
||||
if not os.path.isdir(rpmFullDir):
|
||||
os.makedirs ( rpmFullDir )
|
||||
rpmFullDir = os.path.join ( self.rpmbuildDir, rpmDir )
|
||||
if not os.path.isdir(rpmFullDir):
|
||||
os.makedirs ( rpmFullDir )
|
||||
else:
|
||||
for entry in os.listdir(rpmFullDir):
|
||||
path = os.path.join( rpmFullDir, entry )
|
||||
if os.path.islink(path):
|
||||
realpath = os.path.realpath( os.readlink(path) )
|
||||
if not os.path.isfile(realpath):
|
||||
print 'Remove obsolete link: <%s>.' % path
|
||||
os.unlink( path )
|
||||
|
||||
rpmSpecFile = os.path.join ( self.rpmbuildDir, "SPECS" , "coriolis2.spec" )
|
||||
rpmSourceFile = os.path.join ( self.rpmbuildDir, "SOURCES", self.sourceTarBz2 )
|
||||
|
@ -540,9 +419,12 @@ class Builder:
|
|||
command = [ "/usr/bin/rpmbuild"
|
||||
, "--define", "_topdir %s" % self.rpmbuildDir
|
||||
, "--define", "_tmppath %s" % self.tmppathDir
|
||||
, "--define", "_enable_debug_packages 0"
|
||||
, "-ba", "--with", "binarytar", rpmSpecFile ]
|
||||
|
||||
#, "--define", "_enable_debug_packages 0"
|
||||
, "--with", "binarytar" ]
|
||||
if self._devtoolset2 == True:
|
||||
command += [ "--define", "scl devtoolset-2" ]
|
||||
command += [ "-ba", "--clean", rpmSpecFile ]
|
||||
|
||||
self._execute ( command, "Rebuild rpm packages" )
|
||||
|
||||
return
|
||||
|
|
|
@ -206,6 +206,7 @@ parser.add_option ( "--no-cache" , action="store_true" ,
|
|||
parser.add_option ( "--rm-build" , action="store_true" , dest="rmBuild" , help="Remove previous build directoty before building." )
|
||||
parser.add_option ( "--devtoolset-2", action="store_true" , dest="devtoolset2" , help="Build against TUV Dev Toolset 2." )
|
||||
parser.add_option ( "--qt5" , action="store_true" , dest="qt5" , help="Build against Qt 5 (default: Qt 4)." )
|
||||
parser.add_option ( "--openmp" , action="store_true" , dest="openmp" , help="Enable the use of OpenMP in Gcc." )
|
||||
parser.add_option ( "--ninja" , action="store_true" , dest="ninja" , help="Use Ninja instead of UNIX Makefile." )
|
||||
parser.add_option ( "--clang" , action="store_true" , dest="clang" , help="Force use of Clang C/C++ compiler instead of system default." )
|
||||
parser.add_option ( "--make" , action="store" , type="string", dest="makeArguments", help="Arguments to pass to make (ex: \"-j4 install\")." )
|
||||
|
@ -282,6 +283,7 @@ else:
|
|||
if options.clang: builder.clang = True
|
||||
if options.devtoolset2: builder.devtoolset2 = True
|
||||
if options.qt5: builder.qt5 = True
|
||||
if options.openmp: builder.openmp = True
|
||||
if options.makeArguments: builder.makeArguments = options.makeArguments
|
||||
#if options.svnMethod: builder.svnMethod = options.svnMethod
|
||||
#if options.svnTag: builder.svnTag = options.svnTag
|
||||
|
|
|
@ -136,8 +136,8 @@
|
|||
|
||||
if(NOT ${library}_INCLUDE_PATH)
|
||||
set(${configname}_FOUND "NOTFOUND")
|
||||
endif(NOT ${library}_INCLUDE_PATH)
|
||||
endmacro ( set_libraries_path )
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
#
|
||||
|
@ -269,16 +269,24 @@
|
|||
#
|
||||
macro(setup_sysconfdir INSTALLDIR)
|
||||
message("-- Checking installation directory <${INSTALLDIR}>")
|
||||
string(REGEX MATCH "^/usr$" IS_USR ${INSTALLDIR})
|
||||
string(REGEX MATCH "^/opt$" IS_OPT ${INSTALLDIR})
|
||||
if(IS_USR OR IS_OPT)
|
||||
message("-- Using system-wide /etc.")
|
||||
set(SYS_CONF_DIR "/etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
||||
else(IS_USR OR IS_OPT)
|
||||
string(REGEX MATCH "^/opt/rh/devtoolset-2/root/usr$" IS_OPT_RH ${INSTALLDIR})
|
||||
if(IS_OPT_RH)
|
||||
message("-- Using devtoolset-2 install tree /opt/rh/devtoolset-2/root/etc.")
|
||||
set(SYS_CONF_DIR "/opt/rh/devtoolset-2/root/etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
||||
else()
|
||||
string(REGEX MATCH "^/usr$" IS_USR ${INSTALLDIR})
|
||||
string(REGEX MATCH "^/opt$" IS_OPT ${INSTALLDIR})
|
||||
if(IS_USR OR IS_OPT)
|
||||
message("-- Using system-wide /etc.")
|
||||
set(SYS_CONF_DIR "/etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT IS_OPT_RH AND NOT IS_USR AND NOT IS_OPT)
|
||||
message("-- Using install tree <prefix>/etc.")
|
||||
set(SYS_CONF_DIR "etc" CACHE STRING "System configuration directory (/etc)" FORCE)
|
||||
endif(IS_USR OR IS_OPT)
|
||||
endmacro(setup_sysconfdir)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
|
||||
%{?scl:%{?scl_package:%scl_package coriolis2}}
|
||||
|
||||
%define coriolisVersion 2.1
|
||||
%define coriolisTop %{_prefix}
|
||||
%define githash @githash@
|
||||
%define revdate @revdate@
|
||||
|
||||
%define with_binarytar %{?_with_binarytar:1}%{!?_with_binarytar:0}
|
||||
%define python_sitedir %{_lib}/%(python -c '
|
||||
import os.path
|
||||
import distutils.sysconfig
|
||||
|
||||
pathes = distutils.sysconfig.get_python_lib().split("/")
|
||||
pathes = distutils.sysconfig.get_python_lib(1).split("/")
|
||||
print os.path.join ( pathes[-2], pathes[-1] )
|
||||
')
|
||||
|
||||
|
@ -19,21 +22,24 @@ print os.path.join ( pathes[-2], pathes[-1] )
|
|||
%endif
|
||||
|
||||
|
||||
Name: coriolis2
|
||||
Name: %{?scl_prefix}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}.%{revdate}git%{githash}.tar.bz2
|
||||
Source: %{pkg_name}-%{version}.%{revdate}git%{githash}.tar.bz2
|
||||
URL: http://www-soc.lip6.fr/
|
||||
Packager: Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
||||
|
||||
%{!?scl:%define pkg_name %{name}}
|
||||
%{?scl:Requires:%scl_runtime}
|
||||
Requires(post): ldconfig
|
||||
Requires: boost >= 1.33.1
|
||||
Requires: %{?scl_prefix}boost >= 1.53.0
|
||||
Requires: %{qt4} >= 4.5.0
|
||||
BuildRequires: boost-devel >= 1.33.1
|
||||
BuildRequires: %{?scl_prefix}boost-devel >= 1.53.0
|
||||
BuildRequires: %{qt4}-devel >= 4.5.0
|
||||
BuildRoot: %{_tmppath}/root-%{name}
|
||||
BuildRoot: %{_tmppath}/root-%{pkg_name}
|
||||
|
||||
|
||||
%description
|
||||
|
@ -57,7 +63,7 @@ Development files for the Coriolis 2 package.
|
|||
|
||||
|
||||
%prep
|
||||
%setup -n %{name}-%{version}.%{revdate}git%{githash}
|
||||
%setup -n %{pkg_name}-%{version}.%{revdate}git%{githash}
|
||||
|
||||
|
||||
%build
|
||||
|
@ -65,12 +71,14 @@ Development files for the Coriolis 2 package.
|
|||
|
||||
IMPORTEDS_TOP=%{coriolisTop}; export IMPORTEDS_TOP
|
||||
CORIOLIS_TOP=%{coriolisTop}; export CORIOLIS_TOP
|
||||
SMP_MFLAGS=%{_smp_mflags}; export SMP_MFLAGS
|
||||
|
||||
# Do build & install in one step, except for documentation.
|
||||
make -f coriolis/bootstrap/Makefile.package \
|
||||
prefix=%{coriolisTop} \
|
||||
DESTDIR=%{buildroot} \
|
||||
BUILD_DESTDIR=%{_builddir}/%{buildsubdir}/install.dir \
|
||||
%{_smp_mflags} build
|
||||
build
|
||||
|
||||
|
||||
%install
|
||||
|
@ -79,17 +87,19 @@ Development files for the Coriolis 2 package.
|
|||
|
||||
# Install & build documentation, in -j1.
|
||||
make -f coriolis/bootstrap/Makefile.package \
|
||||
prefix=%{coriolisTop} \
|
||||
DESTDIR=%{buildroot} \
|
||||
BUILD_DESTDIR=%{_builddir}/%{buildsubdir}/install.dir \
|
||||
-j1 install
|
||||
install
|
||||
|
||||
# Copy the license from the Debian package directory.
|
||||
cp coriolis/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}
|
||||
%if %{with_binarytar}
|
||||
cd %{buildroot}%{coriolisTop}
|
||||
tar -jcf %{_sourcedir}/%{name}-%{version}-%{release}.bin-%{_arch}.tar.bz2 \
|
||||
bin %{_lib} share
|
||||
%endif
|
||||
|
||||
|
||||
%clean
|
||||
|
@ -123,11 +133,10 @@ Development files for the Coriolis 2 package.
|
|||
%{coriolisTop}/%{python_sitedir}/crlcore/helpers/*.py*
|
||||
%{coriolisTop}/%{python_sitedir}/kite/*.py*
|
||||
%{coriolisTop}/%{python_sitedir}/unicorn/*.py*
|
||||
#%config(noreplace) %{_sysconfdir}/ld.so.conf.d/*
|
||||
%{_sysconfdir}/coriolis2/*.py
|
||||
%config(noreplace) %{_sysconfdir}/coriolis2/*.conf
|
||||
%config(noreplace) %{_sysconfdir}/coriolis2/*/*.conf
|
||||
%config(noreplace) %{_sysconfdir}/coriolis2/*.xml
|
||||
%config(noreplace) %{_sysconfdir}/coriolis2/*.py*
|
||||
%config(noreplace) %{_sysconfdir}/coriolis2/stratus.vim
|
||||
%config(noreplace) %{coriolisTop}/share/coriolis2/flute-3.1/*.dat
|
||||
|
||||
|
@ -137,7 +146,6 @@ 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
|
||||
|
@ -148,6 +156,7 @@ Development files for the Coriolis 2 package.
|
|||
%dir %{coriolisTop}/include/vlsisapd/configuration
|
||||
%dir %{coriolisTop}/include/vlsisapd/dtr
|
||||
%dir %{coriolisTop}/include/vlsisapd/openChams
|
||||
%dir %{coriolisTop}/include/coriolis2/coloquinte
|
||||
%dir %{coriolisTop}/include/coriolis2/hurricane
|
||||
%dir %{coriolisTop}/include/coriolis2/hurricane/viewer
|
||||
%dir %{coriolisTop}/include/coriolis2/hurricane/isobar
|
||||
|
@ -162,7 +171,6 @@ 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
|
||||
|
@ -172,6 +180,7 @@ Development files for the Coriolis 2 package.
|
|||
%{coriolisTop}/include/vlsisapd/configuration/*.h
|
||||
%{coriolisTop}/include/vlsisapd/dtr/*.h
|
||||
%{coriolisTop}/include/vlsisapd/openChams/*.h
|
||||
%{coriolisTop}/include/coriolis2/coloquinte/*.hxx
|
||||
%{coriolisTop}/include/coriolis2/hurricane/*.h
|
||||
%{coriolisTop}/include/coriolis2/hurricane/viewer/*.h
|
||||
%{coriolisTop}/include/coriolis2/hurricane/isobar/*.h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# -*- explicit-buffer-name: "CMakeLists.txt<etesian>" -*-
|
||||
# -*- explicit-buffer-name: "CMakeLists.txt<coloquinte>" -*-
|
||||
|
||||
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
|
||||
project(COLOQUINTE)
|
||||
|
@ -14,16 +14,13 @@
|
|||
|
||||
set_cmake_policies()
|
||||
set_lib_link_mode()
|
||||
setup_boost(program_options python regex)
|
||||
setup_boost()
|
||||
|
||||
find_package(LibXml2 REQUIRED)
|
||||
find_package(PythonLibs REQUIRED)
|
||||
find_package(PythonSitePackages REQUIRED)
|
||||
find_package(VLSISAPD REQUIRED)
|
||||
find_package(LEFDEF REQUIRED)
|
||||
find_package(HURRICANE REQUIRED)
|
||||
find_package(CORIOLIS REQUIRED)
|
||||
find_package(Libexecinfo REQUIRED)
|
||||
find_package(Libexecinfo REQUIRED)
|
||||
|
||||
if(WITH_OPENMP)
|
||||
add_definitions( -fopenmp )
|
||||
endif()
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(cmake_modules)
|
||||
|
|
|
@ -18,7 +18,7 @@ IF(UNIX)
|
|||
FIND_PATH(COLOQUINTE_INCLUDE_PATH NAMES coloquinte/netlist.hxx PATHS
|
||||
# Look in other places.
|
||||
${CORIOLIS_DIR_SEARCH}
|
||||
PATH_SUFFIXES include/coriolis
|
||||
PATH_SUFFIXES include/coriolis2
|
||||
# Help the user find it if we cannot.
|
||||
DOC "The ${COLOQUINTE_INCLUDE_PATH_DESCRIPTION}"
|
||||
)
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
# -*- explicit-buffer-name: "CMakeLists.txt<Coloquinte/src>" -*-
|
||||
# -*- explicit-buffer-name: "CMakeLists.txt<coloquinte/src>" -*-
|
||||
|
||||
include_directories( ${COLOQUINTE_SOURCE_DIR}/src
|
||||
${CORIOLIS_INCLUDE_DIR}
|
||||
${HURRICANE_INCLUDE_DIR}
|
||||
${CONFIGURATION_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
set ( includes coloquinte/circuit.hxx
|
||||
|
|
|
@ -359,9 +359,8 @@ Main building prerequisites:
|
|||
* latex
|
||||
* latex2html.
|
||||
* python-docutils (for reStructuredText).
|
||||
* |Coloquinte| (https://github.com/Coloquinte/Coloquinte.git).
|
||||
|
||||
|Coloquinte| requires the |LEMON| component from |Coin-Or| (`Coin Or Home`_).
|
||||
The |Coloquinte| component requires the |LEMON| component from |Coin-Or| (`Coin Or Home`_).
|
||||
A repository of |Coin-Or| packages backported from |Fedora| 21 is available here:
|
||||
|
||||
* |SL6|: `ftp://pub/linux/distributions/slsoc/slsoc/soc/addons/i386/RPMS <http://ftp.lip6.fr/pub/linux/distributions/slsoc/slsoc/soc/addons/i386/repoview>`_
|
||||
|
@ -387,7 +386,6 @@ automatically created either by |ccb| or the build system.
|
|||
+--------------------------+-----------------------------------------------------------------------------+
|
||||
| | Sources root | | ~/coriolis-2.x/src |
|
||||
| | **under git** | | ~/coriolis-2.x/src/coriolis |
|
||||
| | **under git** | | ~/coriolis-2.x/src/importeds/Coloquinte |
|
||||
+--------------------------+-----------------------------------------------------------------------------+
|
||||
| **Architecture Dependant Build** |
|
||||
+--------------------------+-----------------------------------------------------------------------------+
|
||||
|
@ -434,15 +432,10 @@ The first step is to create the source directory and pull the |git| repository:
|
|||
dummy@lepka:~$ mkdir -p ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ cd ~/coriolis-2.x/src
|
||||
dummy@lepka:~$ git clone https://www-soc.lip6.fr/git/coriolis.git
|
||||
dummy@lepka:~$ mkdir importeds
|
||||
dummy@lepka:~$ cd importeds
|
||||
dummy@lepka:~$ git clone https://github.com/Coloquinte/Coloquinte.git
|
||||
dummy@lepka:~$ cd ../coriolis
|
||||
|
||||
Second and final step, build & install: ::
|
||||
|
||||
dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds \
|
||||
--project=coriolis \
|
||||
dummy@lepka:src$ ./bootstrap/ccp.py --project=coriolis \
|
||||
--make="-j4 install"
|
||||
dummy@lepka:src$ ./bootstrap/ccb.py --project=coriolis \
|
||||
--doc --make="-j1 install"
|
||||
|
@ -453,8 +446,7 @@ then we generate the documentation in ``-j1``
|
|||
|
||||
Under |RHEL6| or clones, you must build using the |devtoolset2|: ::
|
||||
|
||||
dummy@lepka:src$ ./bootstrap/ccp.py --project=importeds \
|
||||
--project=coriolis \
|
||||
dummy@lepka:src$ ./bootstrap/ccp.py --project=coriolis \
|
||||
--devtoolset-2 --make="-j4 install"
|
||||
|
||||
If you want to uses Qt 5 instead of Qt 4, you may add the ``--qt5`` argument.
|
||||
|
@ -996,7 +988,6 @@ Etesian -- Placer
|
|||
The |Etesian| placer is a state of the art (as of 2015) analytical placer. It is
|
||||
within ``5%`` of other placers' solutions, but is normally a bit worse than ePlace.
|
||||
This |Coriolis| tool is actually an encapsulation of |Coloquinte| which *is* the placer.
|
||||
|Coloquinte| is provided as a separate library, see the building instructions.
|
||||
|
||||
.. note:: *Instance Uniquification Unsupported:* a same logical instance cannot have
|
||||
two different placements. So, either you manually make a clone of it or you
|
||||
|
|
Loading…
Reference in New Issue