diff --git a/bootstrap/docker/debian-9/Dockerfile.bash b/bootstrap/docker/debian-9/Dockerfile.bash new file mode 100644 index 00000000..9f936374 --- /dev/null +++ b/bootstrap/docker/debian-9/Dockerfile.bash @@ -0,0 +1,6 @@ + +FROM debian9.coriolis + +COPY root/dot.bashrc /root/.bashrc + +CMD [ "/bin/bash", "-i" ] diff --git a/bootstrap/docker/debian-9/Dockerfile.coriolis b/bootstrap/docker/debian-9/Dockerfile.coriolis index 85d96956..278a21c2 100644 --- a/bootstrap/docker/debian-9/Dockerfile.coriolis +++ b/bootstrap/docker/debian-9/Dockerfile.coriolis @@ -2,6 +2,9 @@ FROM debian9.system COPY root/socInstaller.py /root/socInstaller.py -COPY root/allianceInstaller.sh /root/allianceInstaller.sh -CMD /root/socInstaller.py --docker --profile=Debian9 --do-alliance --do-coriolis --benchs +RUN mkdir -p coriolis-2.x/src \ + && git clone https://github.com/m-labs/nmigen.git \ + && cd nmigen \ + && python3 setup.py develop \ + && /root/socInstaller.py --docker --profile=Debian9 --do-alliance --do-coriolis --benchs diff --git a/bootstrap/docker/debian-9/Dockerfile.system b/bootstrap/docker/debian-9/Dockerfile.system index f1cdce53..f7b9b58f 100644 --- a/bootstrap/docker/debian-9/Dockerfile.system +++ b/bootstrap/docker/debian-9/Dockerfile.system @@ -9,6 +9,7 @@ RUN apt-get update \ libboost-all-dev libboost-python-dev \ zlib1g-dev libxml2-dev rapidjson-dev libbz2-dev \ qt4-dev-tools libqwt-dev python-qt4 \ + python3-setuptools \ \ autotools-dev automake \ libxt-dev libxpm-dev libmotif-dev \ diff --git a/bootstrap/docker/debian-9/docker-conf.sh b/bootstrap/docker/debian-9/docker-conf.sh index aafb4757..4cca36c0 100644 --- a/bootstrap/docker/debian-9/docker-conf.sh +++ b/bootstrap/docker/debian-9/docker-conf.sh @@ -1,3 +1,4 @@ systemImage="debian9.system" coriolisImage="debian9.coriolis" + bashImage="debian9.bash" diff --git a/bootstrap/docker/debian-9/root/dot.bashrc b/bootstrap/docker/debian-9/root/dot.bashrc new file mode 100644 index 00000000..0e2c1e18 --- /dev/null +++ b/bootstrap/docker/debian-9/root/dot.bashrc @@ -0,0 +1,14 @@ + + echo "Running /root/.bashrc" + + for archDir in `ls /root/coriolis-2.x/`; do + if [ "$archDir" = "src" ]; then continue; fi + break + done + echo "Found Coriolis architecture directory \"${archDir}\"." + + installDir="/root/coriolis-2.x/${archDir}/Release.Shared/install" + . ${installDir}/etc/profile.d/alc_env.sh + eval `${installDir}/etc/coriolis2/coriolisEnv.py` + + export QT_X11_NO_MITSHM=1 diff --git a/bootstrap/docker/debian-9/root/socInstaller.py b/bootstrap/docker/debian-9/root/socInstaller.py index 79b0e406..e744c38a 100755 --- a/bootstrap/docker/debian-9/root/socInstaller.py +++ b/bootstrap/docker/debian-9/root/socInstaller.py @@ -205,9 +205,8 @@ class CommandArg ( object ): class AllianceCommand ( CommandArg ): - def __init__ ( self, fdLog=None ): - CommandArg.__init__ ( self, [ '/root/allianceInstaller.sh' ] - , fdLog=fdLog ) + def __init__ ( self, alcBin, fdLog=None ): + CommandArg.__init__ ( self, [ alcBin ], fdLog=fdLog ) return @@ -281,13 +280,13 @@ class Configuration ( object ): [ 'sender' , 'receivers' , 'coriolisRepo', 'benchsRepo' , 'supportRepos' , 'homeDir' , 'masterHost' - , 'debugArg' , 'nightlyMode', 'dockerMode' + , 'debugArg' , 'nightlyMode', 'dockerMode', 'chrootMode' , 'rmSource' , 'rmBuild' , 'doGit' , 'doAlliance' , 'doCoriolis', 'doBenchs', 'doSendReport' , 'success' , 'rcode' ] SecondaryNames = \ - [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'ccbBin', 'benchsDir' + [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'alcBin', 'ccbBin', 'benchsDir' ] def __init__ ( self ): @@ -308,6 +307,7 @@ class Configuration ( object ): self._doSendReport = False self._nightlyMode = False self._dockerMode = False + self._chrootMode = False self._logs = { 'alliance':None, 'coriolis':None, 'benchs':None } self._fds = { 'alliance':None, 'coriolis':None, 'benchs':None } self._ccbBin = None @@ -355,11 +355,14 @@ class Configuration ( object ): self._rootDir = self._homeDir + '/coriolis-2.x' self._srcDir = self._rootDir + '/src' self._logDir = self._srcDir + '/logs' + self._alcBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/allianceInstaller.sh' self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' return def _detectMasterHost ( self ): + if self._chrootMode: return 'chrooted-host' + masterHost = 'unknown' hostname = socket.gethostname() hostAddr = socket.gethostbyname(hostname) @@ -411,7 +414,11 @@ class Configuration ( object ): commands = [] if self.doAlliance: - commands.append( AllianceCommand( fdLog=self.fds['alliance'] ) ) + if not os.path.isfile( self.alcBin ): + raise ErrorMessage( 1, [ 'Cannot find , should be here:' + , ' <%s>' % self.alcBin + ] ) + commands.append( AllianceCommand( self.alcBin, fdLog=self.fds['alliance'] ) ) if self.doCoriolis: if not os.path.isfile( self.ccbBin ): @@ -426,20 +433,17 @@ class Configuration ( object ): otherArgs.append( '--project=support' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand ( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'SL6_64' or target == 'SL6': otherArgs.append( '--project=support' ) otherArgs.append( '--devtoolset=8' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 6, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'Ubuntu18' or target == 'Debian9': if target == 'Ubuntu18': otherArgs.append( '--qt5' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs, fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) + + if self.doBenchs: + commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) return commands @@ -523,6 +527,7 @@ parser.add_option ( "--do-coriolis" , action="store_true" , dest= parser.add_option ( "--do-report" , action="store_true" , dest="doReport" , help="Send a final report." ) parser.add_option ( "--nightly" , action="store_true" , dest="nightly" , help="Perform a nighly build." ) parser.add_option ( "--docker" , action="store_true" , dest="docker" , help="Perform a build inside a docker container." ) +parser.add_option ( "--chroot" , action="store_true" , dest="chroot" , help="Perform a build inside a chrooted environment." ) parser.add_option ( "--benchs" , action="store_true" , dest="benchs" , help="Run the sanity benchs." ) parser.add_option ( "--rm-build" , action="store_true" , dest="rmBuild" , help="Remove the build/install directories." ) parser.add_option ( "--rm-source" , action="store_true" , dest="rmSource" , help="Remove the Git source repositories." ) @@ -537,6 +542,7 @@ try: if options.debug: conf.debugArg = '--debug' if options.nightly: conf.nightlyMode = True if options.docker: conf.dockerMode = True + if options.chroot: conf.chrootMode = True if options.noGit: conf.doGit = False if options.doCoriolis: conf.doCoriolis = True if options.doAlliance: conf.doAlliance = True diff --git a/bootstrap/docker/scientificlinux-7/Dockerfile.bash b/bootstrap/docker/scientificlinux-7/Dockerfile.bash new file mode 100644 index 00000000..90457286 --- /dev/null +++ b/bootstrap/docker/scientificlinux-7/Dockerfile.bash @@ -0,0 +1,6 @@ + +FROM sl7.coriolis + +COPY root/dot.bashrc /root/.bashrc + +CMD [ "/bin/bash", "-i" ] diff --git a/bootstrap/docker/scientificlinux-7/Dockerfile.coriolis b/bootstrap/docker/scientificlinux-7/Dockerfile.coriolis index ea68dc3b..16eed04d 100644 --- a/bootstrap/docker/scientificlinux-7/Dockerfile.coriolis +++ b/bootstrap/docker/scientificlinux-7/Dockerfile.coriolis @@ -2,6 +2,5 @@ FROM sl7.system COPY root/socInstaller.py /root/socInstaller.py -COPY root/allianceInstaller.sh /root/allianceInstaller.sh -CMD /root/socInstaller.py --docker --profile=SL7_64 --do-alliance --do-coriolis --benchs +RUN /root/socInstaller.py --docker --profile=SL7_64 --do-alliance --do-coriolis --benchs diff --git a/bootstrap/docker/scientificlinux-7/Dockerfile.system b/bootstrap/docker/scientificlinux-7/Dockerfile.system index 2baa4562..afa0b087 100644 --- a/bootstrap/docker/scientificlinux-7/Dockerfile.system +++ b/bootstrap/docker/scientificlinux-7/Dockerfile.system @@ -2,6 +2,7 @@ FROM scientificlinux/sl:latest RUN yum -y update \ + && yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \ && yum -y install git cmake bison flex gcc-c++ libstdc++-devel \ make binutils-devel \ boost-devel boost-python boost-filesystem \ @@ -13,9 +14,12 @@ RUN yum -y update \ libX11-devel libXt-devel libXpm-devel \ motif motif-devel \ \ + python36-six \ vim-x11 \ - && yum -y install http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/qwt-6.1.2-4.fc23.x86_64.rpm \ - http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/qwt-devel-6.1.2-4.fc23.x86_64.rpm \ - http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/yosys-0.7-1.el7.soc.x86_64.rpm \ + && yum -y install http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/qwt-6.1.2-4.fc23.x86_64.rpm \ + http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/qwt-devel-6.1.2-4.fc23.x86_64.rpm \ + http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/yosys-0.9-1.el7.soc.x86_64.rpm \ + http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/python3-pyvcd-0.1.7-git2302c99.1.el7.soc.x86_64.rpm \ + http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/python3-nmigen-0.1-git57d95b7.1.el7.soc.x86_64.rpm \ && yum clean all diff --git a/bootstrap/docker/scientificlinux-7/docker-conf.sh b/bootstrap/docker/scientificlinux-7/docker-conf.sh index f32eaab0..78888c38 100644 --- a/bootstrap/docker/scientificlinux-7/docker-conf.sh +++ b/bootstrap/docker/scientificlinux-7/docker-conf.sh @@ -1,3 +1,4 @@ systemImage="sl7.system" coriolisImage="sl7.coriolis" + bashImage="sl7.bash" diff --git a/bootstrap/docker/scientificlinux-7/root/dot.bashrc b/bootstrap/docker/scientificlinux-7/root/dot.bashrc new file mode 100644 index 00000000..0e2c1e18 --- /dev/null +++ b/bootstrap/docker/scientificlinux-7/root/dot.bashrc @@ -0,0 +1,14 @@ + + echo "Running /root/.bashrc" + + for archDir in `ls /root/coriolis-2.x/`; do + if [ "$archDir" = "src" ]; then continue; fi + break + done + echo "Found Coriolis architecture directory \"${archDir}\"." + + installDir="/root/coriolis-2.x/${archDir}/Release.Shared/install" + . ${installDir}/etc/profile.d/alc_env.sh + eval `${installDir}/etc/coriolis2/coriolisEnv.py` + + export QT_X11_NO_MITSHM=1 diff --git a/bootstrap/docker/scientificlinux-7/root/socInstaller.py b/bootstrap/docker/scientificlinux-7/root/socInstaller.py index 6a7ab963..592a562f 100755 --- a/bootstrap/docker/scientificlinux-7/root/socInstaller.py +++ b/bootstrap/docker/scientificlinux-7/root/socInstaller.py @@ -205,9 +205,8 @@ class CommandArg ( object ): class AllianceCommand ( CommandArg ): - def __init__ ( self, fdLog=None ): - CommandArg.__init__ ( self, [ '/root/allianceInstaller.sh' ] - , fdLog=fdLog ) + def __init__ ( self, alcBin, fdLog=None ): + CommandArg.__init__ ( self, [ alcBin ], fdLog=fdLog ) return @@ -281,13 +280,13 @@ class Configuration ( object ): [ 'sender' , 'receivers' , 'coriolisRepo', 'benchsRepo' , 'supportRepos' , 'homeDir' , 'masterHost' - , 'debugArg' , 'nightlyMode', 'dockerMode' + , 'debugArg' , 'nightlyMode', 'dockerMode', 'chrootMode' , 'rmSource' , 'rmBuild' , 'doGit' , 'doAlliance' , 'doCoriolis', 'doBenchs', 'doSendReport' , 'success' , 'rcode' ] SecondaryNames = \ - [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'ccbBin', 'benchsDir' + [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'alcBin', 'ccbBin', 'benchsDir' ] def __init__ ( self ): @@ -308,6 +307,7 @@ class Configuration ( object ): self._doSendReport = False self._nightlyMode = False self._dockerMode = False + self._chrootMode = None self._logs = { 'alliance':None, 'coriolis':None, 'benchs':None } self._fds = { 'alliance':None, 'coriolis':None, 'benchs':None } self._ccbBin = None @@ -352,14 +352,19 @@ class Configuration ( object ): if self._nightlyMode: self._rootDir = self._homeDir + '/nightly/coriolis-2.x' else: - self._rootDir = self._homeDir + '/coriolis-2.x' - self._srcDir = self._rootDir + '/src' - self._logDir = self._srcDir + '/logs' - self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' - self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' + self._rootDir = self._homeDir + '/coriolis-2.x' + self._srcDir = self._rootDir + '/src' + self._logDir = self._srcDir + '/logs' + self._alcBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/allianceInstaller.sh' + self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' + self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' + self._masterHost = self._detectMasterHost() return def _detectMasterHost ( self ): + if self._chrootMode is None: return 'unknown' + if self._chrootMode: return 'chrooted-host' + masterHost = 'unknown' hostname = socket.gethostname() hostAddr = socket.gethostbyname(hostname) @@ -411,7 +416,11 @@ class Configuration ( object ): commands = [] if self.doAlliance: - commands.append( AllianceCommand( fdLog=self.fds['alliance'] ) ) + if not os.path.isfile( self.alcBin ): + raise ErrorMessage( 1, [ 'Cannot find , should be here:' + , ' <%s>' % self.alcBin + ] ) + commands.append( AllianceCommand( self.alcBin, fdLog=self.fds['alliance'] ) ) if self.doCoriolis: if not os.path.isfile( self.ccbBin ): @@ -426,19 +435,17 @@ class Configuration ( object ): otherArgs.append( '--project=support' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand ( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'SL6_64' or target == 'SL6': otherArgs.append( '--project=support' ) otherArgs.append( '--devtoolset=8' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 6, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'Ubuntu18' or target == 'Debian9': - commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs , fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) + if target == 'Ubuntu18': otherArgs.append( '--qt5' ) + commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs, fdLog=self.fds['coriolis'] ) ) + + if self.doBenchs: + commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) return commands @@ -522,6 +529,7 @@ parser.add_option ( "--do-coriolis" , action="store_true" , dest= parser.add_option ( "--do-report" , action="store_true" , dest="doReport" , help="Send a final report." ) parser.add_option ( "--nightly" , action="store_true" , dest="nightly" , help="Perform a nighly build." ) parser.add_option ( "--docker" , action="store_true" , dest="docker" , help="Perform a build inside a docker container." ) +parser.add_option ( "--chroot" , action="store_true" , dest="chroot" , help="Perform a build inside a chrooted environment." ) parser.add_option ( "--benchs" , action="store_true" , dest="benchs" , help="Run the sanity benchs." ) parser.add_option ( "--rm-build" , action="store_true" , dest="rmBuild" , help="Remove the build/install directories." ) parser.add_option ( "--rm-source" , action="store_true" , dest="rmSource" , help="Remove the Git source repositories." ) @@ -530,12 +538,14 @@ parser.add_option ( "--root" , action="store" , type="string", dest= parser.add_option ( "--profile" , action="store" , type="string", dest="profile" , help="The targeted OS for the build." ) (options, args) = parser.parse_args () + conf = Configuration() try: if options.debug: conf.debugArg = '--debug' if options.nightly: conf.nightlyMode = True if options.docker: conf.dockerMode = True + if options.chroot: conf.chrootMode = True if options.noGit: conf.doGit = False if options.doCoriolis: conf.doCoriolis = True if options.doAlliance: conf.doAlliance = True @@ -544,6 +554,7 @@ try: if options.rmSource or options.rmAll: conf.rmSource = True if options.rmBuild or options.rmAll: conf.rmBuild = True + if conf.doAlliance: conf.openLog( 'alliance' ) if conf.doCoriolis: conf.openLog( 'coriolis' ) if conf.doBenchs: conf.openLog( 'benchs' ) diff --git a/bootstrap/docker/ubuntu-18/Dockerfile.bash b/bootstrap/docker/ubuntu-18/Dockerfile.bash new file mode 100644 index 00000000..c22ec076 --- /dev/null +++ b/bootstrap/docker/ubuntu-18/Dockerfile.bash @@ -0,0 +1,6 @@ + +FROM ununtu18.coriolis + +COPY root/dot.bashrc /root/.bashrc + +CMD [ "/bin/bash", "-i" ] diff --git a/bootstrap/docker/ubuntu-18/Dockerfile.coriolis b/bootstrap/docker/ubuntu-18/Dockerfile.coriolis index 34e377bc..5aafa964 100644 --- a/bootstrap/docker/ubuntu-18/Dockerfile.coriolis +++ b/bootstrap/docker/ubuntu-18/Dockerfile.coriolis @@ -2,6 +2,9 @@ FROM ubuntu18.system COPY root/socInstaller.py /root/socInstaller.py -COPY root/allianceInstaller.sh /root/allianceInstaller.sh -CMD /root/socInstaller.py --docker --profile=Ubuntu18 --do-alliance --do-coriolis --benchs +RUN mkdir -p coriolis-2.x/src \ + && git clone https://github.com/m-labs/nmigen.git \ + && cd nmigen \ + && python3 setup.py develop \ + && /root/socInstaller.py --docker --profile=Ubuntu18 --do-alliance --do-coriolis --benchs diff --git a/bootstrap/docker/ubuntu-18/Dockerfile.system b/bootstrap/docker/ubuntu-18/Dockerfile.system index 0932b9fe..9cd9d581 100644 --- a/bootstrap/docker/ubuntu-18/Dockerfile.system +++ b/bootstrap/docker/ubuntu-18/Dockerfile.system @@ -15,8 +15,12 @@ RUN apt-get update \ libxt-dev libxpm-dev libmotif-dev \ \ yosys \ + python3-setuptools python3-pip python3-six \ + python3-wheel \ \ vim \ - && apt-get clean + && apt-get clean \ + && pip3 install git+https://github.com/m-labs/nmigen.git +# For building with Qt 4 instead of Qt 5. # qt4-dev-tools libqwt-dev python-qt4 \ diff --git a/bootstrap/docker/ubuntu-18/docker-conf.sh b/bootstrap/docker/ubuntu-18/docker-conf.sh index ec37d6e6..564f2b54 100644 --- a/bootstrap/docker/ubuntu-18/docker-conf.sh +++ b/bootstrap/docker/ubuntu-18/docker-conf.sh @@ -1,3 +1,4 @@ systemImage="ubuntu18.system" coriolisImage="ubuntu18.coriolis" + bashImage="ubuntu18.bash" diff --git a/bootstrap/docker/ubuntu-18/root/dot.bashrc b/bootstrap/docker/ubuntu-18/root/dot.bashrc new file mode 100644 index 00000000..0e2c1e18 --- /dev/null +++ b/bootstrap/docker/ubuntu-18/root/dot.bashrc @@ -0,0 +1,14 @@ + + echo "Running /root/.bashrc" + + for archDir in `ls /root/coriolis-2.x/`; do + if [ "$archDir" = "src" ]; then continue; fi + break + done + echo "Found Coriolis architecture directory \"${archDir}\"." + + installDir="/root/coriolis-2.x/${archDir}/Release.Shared/install" + . ${installDir}/etc/profile.d/alc_env.sh + eval `${installDir}/etc/coriolis2/coriolisEnv.py` + + export QT_X11_NO_MITSHM=1 diff --git a/bootstrap/docker/ubuntu-18/root/socInstaller.py b/bootstrap/docker/ubuntu-18/root/socInstaller.py index 79b0e406..592a562f 100755 --- a/bootstrap/docker/ubuntu-18/root/socInstaller.py +++ b/bootstrap/docker/ubuntu-18/root/socInstaller.py @@ -205,9 +205,8 @@ class CommandArg ( object ): class AllianceCommand ( CommandArg ): - def __init__ ( self, fdLog=None ): - CommandArg.__init__ ( self, [ '/root/allianceInstaller.sh' ] - , fdLog=fdLog ) + def __init__ ( self, alcBin, fdLog=None ): + CommandArg.__init__ ( self, [ alcBin ], fdLog=fdLog ) return @@ -281,13 +280,13 @@ class Configuration ( object ): [ 'sender' , 'receivers' , 'coriolisRepo', 'benchsRepo' , 'supportRepos' , 'homeDir' , 'masterHost' - , 'debugArg' , 'nightlyMode', 'dockerMode' + , 'debugArg' , 'nightlyMode', 'dockerMode', 'chrootMode' , 'rmSource' , 'rmBuild' , 'doGit' , 'doAlliance' , 'doCoriolis', 'doBenchs', 'doSendReport' , 'success' , 'rcode' ] SecondaryNames = \ - [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'ccbBin', 'benchsDir' + [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'alcBin', 'ccbBin', 'benchsDir' ] def __init__ ( self ): @@ -308,6 +307,7 @@ class Configuration ( object ): self._doSendReport = False self._nightlyMode = False self._dockerMode = False + self._chrootMode = None self._logs = { 'alliance':None, 'coriolis':None, 'benchs':None } self._fds = { 'alliance':None, 'coriolis':None, 'benchs':None } self._ccbBin = None @@ -352,14 +352,19 @@ class Configuration ( object ): if self._nightlyMode: self._rootDir = self._homeDir + '/nightly/coriolis-2.x' else: - self._rootDir = self._homeDir + '/coriolis-2.x' - self._srcDir = self._rootDir + '/src' - self._logDir = self._srcDir + '/logs' - self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' - self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' + self._rootDir = self._homeDir + '/coriolis-2.x' + self._srcDir = self._rootDir + '/src' + self._logDir = self._srcDir + '/logs' + self._alcBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/allianceInstaller.sh' + self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' + self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' + self._masterHost = self._detectMasterHost() return def _detectMasterHost ( self ): + if self._chrootMode is None: return 'unknown' + if self._chrootMode: return 'chrooted-host' + masterHost = 'unknown' hostname = socket.gethostname() hostAddr = socket.gethostbyname(hostname) @@ -411,7 +416,11 @@ class Configuration ( object ): commands = [] if self.doAlliance: - commands.append( AllianceCommand( fdLog=self.fds['alliance'] ) ) + if not os.path.isfile( self.alcBin ): + raise ErrorMessage( 1, [ 'Cannot find , should be here:' + , ' <%s>' % self.alcBin + ] ) + commands.append( AllianceCommand( self.alcBin, fdLog=self.fds['alliance'] ) ) if self.doCoriolis: if not os.path.isfile( self.ccbBin ): @@ -426,20 +435,17 @@ class Configuration ( object ): otherArgs.append( '--project=support' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand ( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'SL6_64' or target == 'SL6': otherArgs.append( '--project=support' ) otherArgs.append( '--devtoolset=8' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 6, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'Ubuntu18' or target == 'Debian9': if target == 'Ubuntu18': otherArgs.append( '--qt5' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs, fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) + + if self.doBenchs: + commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) return commands @@ -523,6 +529,7 @@ parser.add_option ( "--do-coriolis" , action="store_true" , dest= parser.add_option ( "--do-report" , action="store_true" , dest="doReport" , help="Send a final report." ) parser.add_option ( "--nightly" , action="store_true" , dest="nightly" , help="Perform a nighly build." ) parser.add_option ( "--docker" , action="store_true" , dest="docker" , help="Perform a build inside a docker container." ) +parser.add_option ( "--chroot" , action="store_true" , dest="chroot" , help="Perform a build inside a chrooted environment." ) parser.add_option ( "--benchs" , action="store_true" , dest="benchs" , help="Run the sanity benchs." ) parser.add_option ( "--rm-build" , action="store_true" , dest="rmBuild" , help="Remove the build/install directories." ) parser.add_option ( "--rm-source" , action="store_true" , dest="rmSource" , help="Remove the Git source repositories." ) @@ -531,12 +538,14 @@ parser.add_option ( "--root" , action="store" , type="string", dest= parser.add_option ( "--profile" , action="store" , type="string", dest="profile" , help="The targeted OS for the build." ) (options, args) = parser.parse_args () + conf = Configuration() try: if options.debug: conf.debugArg = '--debug' if options.nightly: conf.nightlyMode = True if options.docker: conf.dockerMode = True + if options.chroot: conf.chrootMode = True if options.noGit: conf.doGit = False if options.doCoriolis: conf.doCoriolis = True if options.doAlliance: conf.doAlliance = True @@ -545,6 +554,7 @@ try: if options.rmSource or options.rmAll: conf.rmSource = True if options.rmBuild or options.rmAll: conf.rmBuild = True + if conf.doAlliance: conf.openLog( 'alliance' ) if conf.doCoriolis: conf.openLog( 'coriolis' ) if conf.doBenchs: conf.openLog( 'benchs' ) diff --git a/bootstrap/dockerManager.sh b/bootstrap/dockerManager.sh index 061565ef..99f4e11a 100755 --- a/bootstrap/dockerManager.sh +++ b/bootstrap/dockerManager.sh @@ -1,12 +1,14 @@ #!/bin/bash - showHelp=0 - showError=0 - doBuildSystem=0 - doBuild=0 - doRun=0 - doClean=0 + showHelp=0 + showError=0 + doBuildSystem=0 + doBuildCoriolis=0 + doBuildBash=0 + doBuild=0 + doRun=0 + doRemove=0 if [ ! -f "./docker-conf.sh" ]; then @@ -15,24 +17,25 @@ exit 1 fi . "./docker-conf.sh" - dockerImages="${systemImage},${coriolisImage}" + dockerImages="${systemImage},${coriolisImage},${bashImage}" while [ $# -gt 0 ]; do case $1 in - --help) showHelp=1;; - --system) doBuildSystem=1;; - --build) doBuild=1;; - --run) doRun=1;; - --clean) doClean=1;; + --help) showHelp=1;; + --build-system) doBuildSystem=1;; + --build-coriolis) doBuildCoriolis=1;; + --build-bash) doBuildBash=1;; + --run) doRun=1;; + --remove) doRemove=1;; -*) NB=2; CH=`echo $1 | cut -c$NB` while [ "$CH" != "" ]; do case $CH in h) showHelp=1;; - S) doBuildSystem=1;; - b) doBuild=1;; + s) doBuildSystem=1;; + c) doBuildCoriolis=1;; + b) doBuildBash=1;; r) doRun=1;; - C) doClean=1;; *) showError=1; badOption="$1";; esac NB=`expr $NB + 1` @@ -51,25 +54,49 @@ if [ ${showHelp} -ne 0 ]; then echo "Usage: ./manager.sh [options]" echo "Options:" - echo " * [-h|--help]: Print this help." - echo " * [-S|--system]: Rebuild the whole OS image." - echo " * [-b|--build]: Rebuild the Coriolis image. It will remove the previous" - echo " images (${dockerImages})." - echo " * [-r|--run]: Recompile Alliance, Coriolis & perform benchs." - echo " * [-C|--clean]: Remove container(s) & image(s)." + echo " * [-h|--help]: Print this help." + echo " * [-s|--build-system]: Rebuild the whole OS image." + echo " * [-c|--build-coriolis]: Rebuild the Coriolis image. It will remove the previous" + echo " images (${dockerImages})." + echo " * [-b|--build-bash]: Rebuild the Bash (shell) image. It will remove the previous" + echo " image (${bashImage})." + echo " * [-r|--run]: Recompile Alliance, Coriolis & perform benchs." + echo " * [--remove]: Remove container(s) & image(s)." exit 0 fi - if [ ${doBuild} -ne 0 ] || [ ${doBuildSytem} -ne 0 ]; then - doClean=1 + if [ ${doBuildSystem} -ne 0 ]; then + doBuildBash=1 + doBuildCoriolis=1 + doBuild=1 + doRemove=1 + fi + + if [ ${doBuildCoriolis} -ne 0 ]; then + doBuildBash=1 + doBuild=1 + doRemove=1 + fi + + if [ ${doBuildBash} -ne 0 ]; then + doBuild=1 + doRemove=1 fi - if [ ${doClean} -ne 0 ]; then - echo "Removing \"${coriolisImage}\" docker container." - docker rm ${coriolisImage} - docker rmi ${coriolisImage} + if [ ${doRemove} -ne 0 ]; then + if [ ${doBuildBash} -ne 0 ]; then + echo "Removing \"${bashImage}\" docker container." + docker rm ${bashImage} + docker rmi ${bashImage} + fi + + if [ ${doBuildCoriolis} -ne 0 ]; then + echo "Removing \"${coriolisImage}\" docker image." + docker rm ${coriolisImage} + docker rmi ${coriolisImage} + fi if [ ${doBuildSystem} -ne 0 ]; then echo "Removing \"${systemImage}\" docker image." @@ -82,18 +109,25 @@ if [ ${doBuild} -ne 0 ]; then echo "Synching Alliance & Coriolis builder scripts." cp ../../socInstaller.py ./root - cp ../../allianceInstaller.sh ./root + cp ../../dot.bashrc ./root if [ ${doBuildSystem} -ne 0 ]; then echo "Build \"${systemImage}\" docker image." docker build -f Dockerfile.system -t ${systemImage} . fi - echo "Build \"${coriolisImage}\" docker image." - docker build -f Dockerfile.coriolis -t ${coriolisImage} . + if [ ${doBuildCoriolis} -ne 0 ]; then + echo "Build \"${coriolisImage}\" docker image." + docker build -f Dockerfile.coriolis -t ${coriolisImage} . + fi + + if [ ${doBuildCoriolis} -ne 0 ]; then + echo "Build \"${bashImage}\" docker image." + docker build -f Dockerfile.bash -t ${bashImage} . + fi fi if [ ${doRun} -ne 0 ]; then - docker run --name ${coriolisImage} ${coriolisImage} + docker run --rm --net=host -e DISPLAY=:0 -ti --name ${bashImage} ${bashImage} fi diff --git a/bootstrap/dot.bashrc b/bootstrap/dot.bashrc new file mode 100644 index 00000000..0e2c1e18 --- /dev/null +++ b/bootstrap/dot.bashrc @@ -0,0 +1,14 @@ + + echo "Running /root/.bashrc" + + for archDir in `ls /root/coriolis-2.x/`; do + if [ "$archDir" = "src" ]; then continue; fi + break + done + echo "Found Coriolis architecture directory \"${archDir}\"." + + installDir="/root/coriolis-2.x/${archDir}/Release.Shared/install" + . ${installDir}/etc/profile.d/alc_env.sh + eval `${installDir}/etc/coriolis2/coriolisEnv.py` + + export QT_X11_NO_MITSHM=1 diff --git a/bootstrap/socInstaller.py b/bootstrap/socInstaller.py index 79b0e406..592a562f 100755 --- a/bootstrap/socInstaller.py +++ b/bootstrap/socInstaller.py @@ -205,9 +205,8 @@ class CommandArg ( object ): class AllianceCommand ( CommandArg ): - def __init__ ( self, fdLog=None ): - CommandArg.__init__ ( self, [ '/root/allianceInstaller.sh' ] - , fdLog=fdLog ) + def __init__ ( self, alcBin, fdLog=None ): + CommandArg.__init__ ( self, [ alcBin ], fdLog=fdLog ) return @@ -281,13 +280,13 @@ class Configuration ( object ): [ 'sender' , 'receivers' , 'coriolisRepo', 'benchsRepo' , 'supportRepos' , 'homeDir' , 'masterHost' - , 'debugArg' , 'nightlyMode', 'dockerMode' + , 'debugArg' , 'nightlyMode', 'dockerMode', 'chrootMode' , 'rmSource' , 'rmBuild' , 'doGit' , 'doAlliance' , 'doCoriolis', 'doBenchs', 'doSendReport' , 'success' , 'rcode' ] SecondaryNames = \ - [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'ccbBin', 'benchsDir' + [ 'rootDir', 'srcDir', 'logDir', 'logs', 'fds', 'alcBin', 'ccbBin', 'benchsDir' ] def __init__ ( self ): @@ -308,6 +307,7 @@ class Configuration ( object ): self._doSendReport = False self._nightlyMode = False self._dockerMode = False + self._chrootMode = None self._logs = { 'alliance':None, 'coriolis':None, 'benchs':None } self._fds = { 'alliance':None, 'coriolis':None, 'benchs':None } self._ccbBin = None @@ -352,14 +352,19 @@ class Configuration ( object ): if self._nightlyMode: self._rootDir = self._homeDir + '/nightly/coriolis-2.x' else: - self._rootDir = self._homeDir + '/coriolis-2.x' - self._srcDir = self._rootDir + '/src' - self._logDir = self._srcDir + '/logs' - self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' - self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' + self._rootDir = self._homeDir + '/coriolis-2.x' + self._srcDir = self._rootDir + '/src' + self._logDir = self._srcDir + '/logs' + self._alcBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/allianceInstaller.sh' + self._ccbBin = self._srcDir + '/' + GitRepository.getLocalRepository(self._coriolisRepo) + '/bootstrap/ccb.py' + self._benchsDir = self._srcDir + '/' + GitRepository.getLocalRepository(self._benchsRepo ) + '/benchs' + self._masterHost = self._detectMasterHost() return def _detectMasterHost ( self ): + if self._chrootMode is None: return 'unknown' + if self._chrootMode: return 'chrooted-host' + masterHost = 'unknown' hostname = socket.gethostname() hostAddr = socket.gethostbyname(hostname) @@ -411,7 +416,11 @@ class Configuration ( object ): commands = [] if self.doAlliance: - commands.append( AllianceCommand( fdLog=self.fds['alliance'] ) ) + if not os.path.isfile( self.alcBin ): + raise ErrorMessage( 1, [ 'Cannot find , should be here:' + , ' <%s>' % self.alcBin + ] ) + commands.append( AllianceCommand( self.alcBin, fdLog=self.fds['alliance'] ) ) if self.doCoriolis: if not os.path.isfile( self.ccbBin ): @@ -426,20 +435,17 @@ class Configuration ( object ): otherArgs.append( '--project=support' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand ( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'SL6_64' or target == 'SL6': otherArgs.append( '--project=support' ) otherArgs.append( '--devtoolset=8' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 6, otherArgs , fdLog=self.fds['coriolis'] ) ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 1, otherArgs+['--doc'], fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) elif target == 'Ubuntu18' or target == 'Debian9': if target == 'Ubuntu18': otherArgs.append( '--qt5' ) commands.append( CoriolisCommand( self.ccbBin, self.rootDir, 3, otherArgs, fdLog=self.fds['coriolis'] ) ) - if self.doBenchs: - commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) + + if self.doBenchs: + commands.append( BenchsCommand( self.benchsDir, fdLog=self.fds['benchs'] ) ) return commands @@ -523,6 +529,7 @@ parser.add_option ( "--do-coriolis" , action="store_true" , dest= parser.add_option ( "--do-report" , action="store_true" , dest="doReport" , help="Send a final report." ) parser.add_option ( "--nightly" , action="store_true" , dest="nightly" , help="Perform a nighly build." ) parser.add_option ( "--docker" , action="store_true" , dest="docker" , help="Perform a build inside a docker container." ) +parser.add_option ( "--chroot" , action="store_true" , dest="chroot" , help="Perform a build inside a chrooted environment." ) parser.add_option ( "--benchs" , action="store_true" , dest="benchs" , help="Run the sanity benchs." ) parser.add_option ( "--rm-build" , action="store_true" , dest="rmBuild" , help="Remove the build/install directories." ) parser.add_option ( "--rm-source" , action="store_true" , dest="rmSource" , help="Remove the Git source repositories." ) @@ -531,12 +538,14 @@ parser.add_option ( "--root" , action="store" , type="string", dest= parser.add_option ( "--profile" , action="store" , type="string", dest="profile" , help="The targeted OS for the build." ) (options, args) = parser.parse_args () + conf = Configuration() try: if options.debug: conf.debugArg = '--debug' if options.nightly: conf.nightlyMode = True if options.docker: conf.dockerMode = True + if options.chroot: conf.chrootMode = True if options.noGit: conf.doGit = False if options.doCoriolis: conf.doCoriolis = True if options.doAlliance: conf.doAlliance = True @@ -545,6 +554,7 @@ try: if options.rmSource or options.rmAll: conf.rmSource = True if options.rmBuild or options.rmAll: conf.rmBuild = True + if conf.doAlliance: conf.openLog( 'alliance' ) if conf.doCoriolis: conf.openLog( 'coriolis' ) if conf.doBenchs: conf.openLog( 'benchs' )