#!/bin/bash #=========================== # UMVIRT LINUX FROM SCRATCH #=========================== # Compilation script. # Network mode. #=========================== # Release: 0.1 # Package: libboost #=========================== # DB commit: d35a620850806ab581b32cb34d268a904c9c0a5f # APP commit: #=========================== echo "ULFS Package installation start" echo "===============================" echo "Package: libboost" echo "Release: 0.1" echo "checking config file" if [ -f $ULFS_CONFIG_FILE ] then echo "loading config file $ULFS_CONFIG_FILE..." . $ULFS_CONFIG_FILE fi #Creating log directory mkdir -p /var/log/ulfs-packages/libboost/ #Saving start timestamp date +%s > /var/log/ulfs-packages/libboost/start.time #Going to source directory... cd /sources #Checking dependances... #Checking python3... if [ ! -f /var/cache/ulfs-packages/python3 ]; then echo "Dependance \"python3\" not found. Trying to install..."; wget --no-check-certificate https://ulfs.org/linux/packages//0.1/python3/install -O - | bash if [ ! -f /var/cache/ulfs-packages/python3 ]; then echo "Dependance \"python3\" is not installed. Exiting..." exit fi fi #Checking python2... if [ ! -f /var/cache/ulfs-packages/python2 ]; then echo "Dependance \"python2\" not found. Trying to install..."; wget --no-check-certificate https://ulfs.org/linux/packages//0.1/python2/install -O - | bash if [ ! -f /var/cache/ulfs-packages/python2 ]; then echo "Dependance \"python2\" is not installed. Exiting..." exit fi fi #Checking which... if [ ! -f /var/cache/ulfs-packages/which ]; then echo "Dependance \"which\" not found. Trying to install..."; wget --no-check-certificate https://ulfs.org/linux/packages//0.1/which/install -O - | bash if [ ! -f /var/cache/ulfs-packages/which ]; then echo "Dependance \"which\" is not installed. Exiting..." exit fi fi #Checking icu... if [ ! -f /var/cache/ulfs-packages/icu ]; then echo "Dependance \"icu\" not found. Trying to install..."; wget --no-check-certificate https://ulfs.org/linux/packages//0.1/icu/install -O - | bash if [ ! -f /var/cache/ulfs-packages/icu ]; then echo "Dependance \"icu\" is not installed. Exiting..." exit fi fi #Checking python3-numpy... if [ ! -f /var/cache/ulfs-packages/python3-numpy ]; then echo "Dependance \"python3-numpy\" not found. Trying to install..."; wget --no-check-certificate https://ulfs.org/linux/packages//0.1/python3-numpy/install -O - | bash if [ ! -f /var/cache/ulfs-packages/python3-numpy ]; then echo "Dependance \"python3-numpy\" is not installed. Exiting..." exit fi fi #Checking zstd... if [ ! -f /var/cache/ulfs-packages/zstd ]; then echo "Dependance \"zstd\" not found. Trying to install..."; wget --no-check-certificate https://ulfs.org/linux/packages//0.1/zstd/install -O - | bash if [ ! -f /var/cache/ulfs-packages/zstd ]; then echo "Dependance \"zstd\" is not installed. Exiting..." exit fi fi #Saving downloading timestamp date +%s > /var/log/ulfs-packages/libboost/download.time #Downloading source package archive... wget --no-check-certificate -nc https://ulfs.org/linux/downloads/package_files/0.1/packages/b/boost_1_72_0.tar.bz2.md5sum wget --no-check-certificate -nc https://ulfs.org/linux/downloads/package_files/0.1/packages/b/boost_1_72_0.tar.bz2 #Checking source package file existance if [ ! -f boost_1_72_0.tar.bz2 ]; then echo "Error: Can't find boost_1_72_0.tar.bz2. Exiting!" exit fi #Checking source package file checksum if [ -f boost_1_72_0.tar.bz2.md5sum ]; then MD5=`LANG=C md5sum -c boost_1_72_0.tar.bz2.md5sum | grep OK` if [ "$MD5" == "" ] ; then echo "Error: Checksum of boost_1_72_0.tar.bz2 is wrong. Exiting!" exit fi fi #Saving cleanup timestamp date +%s > /var/log/ulfs-packages/libboost/cleanup.time rm -rfv /sources/boost_1_72_0/ #Saving extracting timestamp date +%s > /var/log/ulfs-packages/libboost/unpack.time #Extracting tar source package archive with default parameters... tar -xf boost_1_72_0.tar.bz2 #Checking package directory size after unpack... du -s boost_1_72_0 | awk 'NR==1 {print $1}' > /var/log/ulfs-packages/libboost/unpack.size #Going to source package directory... cd boost_1_72_0 #Saving configuration timestamp date +%s > /var/log/ulfs-packages/libboost/configure.time #Sleep 1 second sleep 1 #Running configuration script... # #Saving build timestamp date +%s > /var/log/ulfs-packages/libboost/build.time #Running build script... #LFS BUGFIX: 3.7m in /usr/include not 3.7. ln -s /usr/include/python3.7m /usr/include/python3.7 mkdir stagedir ./bootstrap.sh --with-toolset=gcc --with-icu --with-python=/usr/bin/python2 install -Dm755 tools/build/src/engine/b2 stagedir/bin/b2 # Support for OpenMPI echo "using mpi ;" >> project-config.jam # boostbook is needed by quickbook install -dm755 stagedir/share/boostbook cp -a tools/boostbook/{xsl,dtd} stagedir/share/boostbook/ # default "minimal" install: "release link=shared,static # runtime-link=shared threading=single,multi" # --layout=tagged will add the "-mt" suffix for multithreaded libraries # and installs includes in /usr/include/boost. # --layout=system no longer adds the -mt suffix for multi-threaded libs. # install to \${_stagedir} in preparation for split packaging stagedir/bin/b2 \ variant=release \ debug-symbols=off \ threading=multi \ runtime-link=shared \ link=shared,static \ toolset=gcc \ python=2.7 \ cflags="\${CPPFLAGS} \${CFLAGS} -fPIC -O3" \ cxxflags="\${CPPFLAGS} \${CXXFLAGS} -std=c++14 -fPIC -O3" \ \ --layout=system \ \ \ --prefix="\$(pwd)/stagedir" \ install # because b2 in boost 1.62.0 doesn't seem to respect python parameter, we # need another run for liboost_python3.so ./bootstrap.sh \ --with-toolset=gcc \ --with-icu \ --with-python=/usr/bin/python3 \ --with-libraries=python stagedir/bin/b2 clean stagedir/bin/b2 \ variant=release \ debug-symbols=off \ threading=multi \ runtime-link=shared \ link=shared,static \ toolset=gcc \ python=3.7 \ cflags="\${CPPFLAGS} \${CFLAGS} -fPIC -O3" \ cxxflags="\${CPPFLAGS} \${CXXFLAGS} -std=c++14 -fPIC -O3" \ \ --layout=system \ \ \ --prefix="\$(pwd)/stagedir/python3" \ --with-python \ install #Saving install timestamp date +%s > /var/log/ulfs-packages/libboost/install.time #Running install script... cat > ulfs_install.sh << EOIS #boost cp -a stagedir/{bin,include,share} /usr cp -a stagedir/lib/*.a /usr/lib/ cp -a stagedir/lib/cmake /usr/lib/ install -Dm644 stagedir/python3/lib/libboost_*.a /usr/lib/ cp -a stagedir/python3/lib/cmake/* /usr/lib/cmake/ ln -s /usr/bin/b2 /usr/bin/bjam #boostlib cp -a stagedir/lib /usr cp -a stagedir/python3/lib/libboost_* /usr/lib # https://github.com/boostorg/python/issues/203#issuecomment-391477685 for _lib in python numpy; do ln -srL /usr/lib/libboost_\${_lib}{27,}.so ln -srL /usr/lib/libboost_\${_lib}3{7,}.so done EOIS USER=`whoami` if [ "$USER" == "root" ] ; then cat ulfs_install.sh | bash 2>&1 | tee /var/log/ulfs-packages/libboost/install.log else cat ulfs_install.sh | sudo bash 2>&1 | tee /var/log/ulfs-packages/libboost/install.log fi #Saving finish timestamp date +%s > /var/log/ulfs-packages/libboost/finish.time #Checking package directory size after unpack... cd /sources du -s boost_1_72_0 | awk 'NR==1 {print $1}' > /var/log/ulfs-packages/libboost/install.size echo "ULFS package installation completed." #Producing files list echo "Looking for installed files..." if [ -f /var/log/ulfs-packages/libboost/files.txt ]; then rm /var/log/ulfs-packages/libboost/files.txt fi USER=`whoami` if [ "$USER" == "root" ] ; then find /bin -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /sbin -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /usr -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /etc -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /opt -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /lib -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /lib64 -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt find /var -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time \! -path "/var/log/ulfs-packages/libboost/*" >> /var/log/ulfs-packages/libboost/files.txt else sudo find /bin -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /sbin -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /usr -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /etc -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /opt -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /lib -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /lib64 -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time >> /var/log/ulfs-packages/libboost/files.txt sudo find /var -type f -newer /var/log/ulfs-packages/libboost/configure.time \! -newer /var/log/ulfs-packages/libboost/finish.time \! -path "/var/log/ulfs-packages/libboost/*" >> /var/log/ulfs-packages/libboost/files.txt fi #Marking package as installed... mkdir -p /var/cache/ulfs-packages USER=`whoami` if [ "$USER" == "root" ] ; then touch /var/cache/ulfs-packages/libboost else sudo touch /var/cache/ulfs-packages/libboost fi #Calculate delta size a=`cat /var/log/ulfs-packages/libboost/unpack.size` b=`cat /var/log/ulfs-packages/libboost/install.size` c=$(($b-$a)) echo $c > /var/log/ulfs-packages/libboost/delta.size #Calculate prepare time a=`cat /var/log/ulfs-packages/libboost/start.time` b=`cat /var/log/ulfs-packages/libboost/configure.time` dp=$(($b-$a)) #Calculate download time a=`cat /var/log/ulfs-packages/libboost/download.time` b=`cat /var/log/ulfs-packages/libboost/unpack.time` dd=$(($b-$a)) #Calculate delta time a=`cat /var/log/ulfs-packages/libboost/configure.time` b=`cat /var/log/ulfs-packages/libboost/finish.time` db=$(($b-$a)) echo $db > /var/log/ulfs-packages/libboost/delta.time #Report echo "" echo "ULFS Package installation report" echo "================================" echo "Package: libboost" echo "Release: 0.1" echo "Build size: $c" echo "Prepare time: $dp sec." echo "Download time: $dd sec." echo "Build time: $db sec." #End of script