diff options
author | V3n3RiX <venerix@rogentos.ro> | 2015-08-29 20:24:55 +0100 |
---|---|---|
committer | V3n3RiX <venerix@rogentos.ro> | 2015-08-29 20:24:55 +0100 |
commit | dfd2d49e968c4892b1823b5414700d99d4292acf (patch) | |
tree | e5e0c12384212059a65b7c3c0d2de1cc47ed0d1d | |
parent | 5f514c1d1087d0fbfe5888052a6a8c5ad7f6a739 (diff) |
masive refactoring of vasile, our supreme tool...first make it modular so we can add more functions to it
-rwxr-xr-x | build32 | 193 | ||||
-rwxr-xr-x | build64 | 195 | ||||
-rwxr-xr-x | vasile | 276 |
3 files changed, 413 insertions, 251 deletions
@@ -0,0 +1,193 @@ +#!/usr/bin/env bash + +# env mount variables +export local rodir="rodir" +export local rwdir="rwdir" +export local overlaydir="overlaydir" + +# env user variable +export local envkogaionuser="root" + +# env target variable (can be a single package, multiple packages, or a target file passed as parameter) +export local envkogaiontarget="$@" +export local envkogaionbuildtarget="emerge -kav "$envkogaiontarget"" + +# env buildsystem variables +export local envkogaionoverlay="layman -f -a kogaion -o https://raw.github.com/Rogentos/kogaion/master/overlay.xml" +export local envkogaiondesktopoverlay="layman -f -a kogaion-desktop -o https://raw.github.com/Rogentos/kogaion-desktop/master/overlay.xml" +export local envkogaionbuildgit="cd /opt && git clone https://github.com/Rogentos/build.git" +export local envkogaionportageconfig="ln -sf /opt/build/conf/intel/portage /etc/portage" +export local envkogaionenvupdate="/usr/sbin/env-update && . /etc/profile" + +envkogaionstart () { + # mount ro squashfs chroot + add rw overlayfs layer to enable clean package building + mount -t squashfs "$sqfsroot" "$rodir" + mount -t overlayfs -o lowerdir="$rodir",upperdir="$rwdir" overlayfs "$overlaydir" + # portage buildpkg feature is now enabled by default, so all built packages or targets will also have binary packages created + # each target depends on previous one, building a target will most likely pull packages from previous one + # to avoid useless rebuilds, bind mount portage binary packages folder, and use binaries if needed + # every binary was built in same clean build environment managed by vasile, so they are safe to reuse + # vasile will still clean the build environment, but will leave binaries in place + while : true ; do + if [[ ! -d packages ]] ; then + mkdir packages + mount -o bind packages "$overlaydir"/usr/portage/packages + break + elif [[ -d packages ]] ; then + mount -o bind packages "$overlaydir"/usr/portage/packages + break + fi + done + # keep distfiles around + while : true ; do + if [[ ! -d distfiles ]] ; then + mkdir distfiles + mount -o bind distfiles "$overlaydir"/usr/portage/distfiles + break + elif [[ -d distfiles ]] ; then + mount -o bind distfiles "$overlaydir"/usr/portage/distfiles + break + fi + done + # bind mount targets inside clean build environment managed by vasile, we really need them to be in there + mount -o bind targets "$overlaydir"/mnt + mount -t proc proc "$overlaydir"/proc + mount -t sysfs sysfs "$overlaydir"/sys + mount -t devtmpfs -o relatime,size=3055348k,nr_inodes=763837,mode=755 none "$overlaydir"/dev + mount -t devpts -o nosuid,noexec,relatime,gid=5,mode=620 none "$overlaydir"/dev/pts + mount -t tmpfs -o nosuid,nodev none "$overlaydir"/dev/shm + mount -t tmpfs -o nosuid,nodev,noexec none "$overlaydir"/tmp +} + +envkogaionstop () { + # umount squashfs + overlayfs chroot + umount -l "$overlaydir"/proc > /dev/null 2>&1 + umount -l "$overlaydir"/sys > /dev/null 2>&1 + umount -l "$overlaydir"/dev/pts > /dev/null 2>&1 + umount -l "$overlaydir"/dev/shm > /dev/null 2>&1 + umount -l "$overlaydir"/dev > /dev/null 2>&1 + umount -l "$overlaydir"/tmp > /dev/null 2>&1 + umount -l "$overlaydir"/usr/portage/packages > /dev/null 2>&1 + umount -l "$overlaydir"/mnt > /dev/null 2>&1 + umount -l "$overlaydir" > /dev/null 2>&1 + umount -l "$rodir" > /dev/null 2>&1 +} + +envcheckroot () { + if [[ "$(whoami)" != root ]] ; then + echo "" + echo "You're not root?...No cookies for you, go away !!!" + echo "" + exit 1 + fi +} + +envkogaionsquashfsintegrity () { + # our bare metal buildserver is x86_64 but we want to build 32bit packages as well + # run this script with linux32 to fool it we run i686 and to build 32bit packages + while : true ; do + export local sqfsroot="kogaiondevelx86.squashfs" + export local sqfsrootmd5file=""$sqfsroot".md5" + export local sqfsrootmd5="$(cat "$sqfsrootmd5file" | awk {'print $1'})" + if [[ -f "$sqfsroot" && -f "$sqfsrootmd5file" ]] ; then + echo "Good, i686 squashed chroot && checksum file FOUND ... verifying integrity" + echo "" + if [[ "$(md5sum "$sqfsroot" | awk {'print $1'})" = "$sqfsrootmd5" ]] ; then + echo "Good, i686 squashed chroot checksum PASSED ... starting environment" + echo "" + sleep 1 + break + else + echo "Ooops, i686 squashed chroot checksum FAILED ... aborting" + fi + else + echo "Ooops, i686 squashed chroot of checksum file NOT FOUND ... aborting" + exit 1 + fi + done +} + +envkogaionprepare () { + # check our environment for sanity + # if safe, trigger start && break the loop to build packages + # else trigger stop && cleanup && check again + while : true ; do + if [[ ! -d "$rodir" && ! -d "$rwdir" && ! -d "$overlaydir" ]] ; then + for i in "$rodir" "$rwdir" "$overlaydir" ; do + mkdir "$i" + done + envkogaionstart + break + elif [[ -d "$rodir" && -d "$rwdir" && -d "$overlaydir" ]] ; then + envkogaionstop + for i in "$rodir" "$rwdir" "$overlaydir" ; do + rm -rf "$i" + done + continue + fi + done +} + +envkogaionoverlays() { + # inject our overlays into squashfs + overlayfs chroot + echo "Injecting Kogaion Linux Main Overlay into i686 environment" + sleep 1 + linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionoverlay" + echo "Injecting Kogaion Linux Desktop Overlay into i686 environment" + linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaiondesktopoverlay" +} + +envkogaionbuildsystem() { + # inject our buildsystem into squashfs + overlayfs chroot + export local envkogaionmakeconf="ln -sf /opt/build/conf/intel/portage/make.conf.x86 /etc/portage/make.conf" + export local envkogaionprofile="eselect profile set 1" + echo "Injecting Kogaion Linux i686 Buildsystem && Setting up Portage && Setting up make.conf" + echo "" + sleep 1 + for cmd in "$envkogaionbuildgit" "$envkogaionportageconfig" "$envkogaionmakeconf" "$envkogaionprofile" "$envkogaionenvupdate" ; do + linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$cmd" + done +} + +envkogaionbuild () { + # build packages in squashfs + overlayfs chroot + echo "" + echo "i686 Environment is UP && RUNNING ... building targets" + sleep 1 + linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionbuildtarget" +} + +envkogaionchroot() { + # enter squashfs + overlayfs chroot to push packages, or debug build errors + echo -e "" + echo -e "#################################################################" + echo -e "# ENTERING CHROOT ENV FOR YOU TO PUSH BUILT PACKAGES #" + echo -e "# OR TO FIX EVENTUAL BUILD ERRORS #" + echo -e "#################################################################" + echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" + echo -e "#################################################################" + echo -e "# NEXT RUN OF THIS SCRIPT WILL DESTROY ALL YOUR WORK #" + echo -e "# DO NOT EXIT CHROOT UNTIL ALL PACKAGES ARE PUSHED TO REPOS #" + echo -e "# OR, IN CASE OF BUILD FAILURES, UNTIL ALL FIXES ARE COMMITED #" + echo -e "#################################################################" + echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" + echo -e "#################################################################" + echo -e "" + echo -e "" + linux32 chroot "$overlaydir" su - "$envkogaionuser" +} + +main () { + if envcheckroot ; then + envkogaionsquashfsintegrity + envkogaionprepare + envkogaionoverlays + envkogaionbuildsystem + envkogaionbuild + envkogaionchroot + envkogaionstop + fi +} + +main +exit 0 @@ -0,0 +1,195 @@ +#!/usr/bin/env bash + +# env mount variables +export local rodir="rodir" +export local rwdir="rwdir" +export local overlaydir="overlaydir" + +# env user variable +export local envkogaionuser="root" + +# env target variable (can be a single package, multiple packages, or a target file passed as parameter) +export local envkogaiontarget="$@" +export local envkogaionbuildtarget="emerge -kav "$envkogaiontarget"" + +# env buildsystem variables +export local envkogaionoverlay="layman -f -a kogaion -o https://raw.github.com/Rogentos/kogaion/master/overlay.xml" +export local envkogaiondesktopoverlay="layman -f -a kogaion-desktop -o https://raw.github.com/Rogentos/kogaion-desktop/master/overlay.xml" +export local envkogaionbuildgit="cd /opt && git clone https://github.com/Rogentos/build.git" +export local envkogaionportageconfig="ln -sf /opt/build/conf/intel/portage /etc/portage" +export local envkogaionenvupdate="/usr/sbin/env-update && . /etc/profile" + +envkogaionstart () { + # mount ro squashfs chroot + add rw overlayfs layer to enable clean package building + mount -t squashfs "$sqfsroot" "$rodir" + mount -t overlayfs -o lowerdir="$rodir",upperdir="$rwdir" overlayfs "$overlaydir" + # portage buildpkg feature is now enabled by default, so all built packages or targets will also have binary packages created + # each target depends on previous one, building a target will most likely pull packages from previous one + # to avoid useless rebuilds, bind mount portage binary packages folder, and use binaries if needed + # every binary was built in same clean build environment managed by vasile, so they are safe to reuse + # vasile will still clean the build environment, but will leave binaries in place + while : true ; do + if [[ ! -d packages ]] ; then + mkdir packages + mount -o bind packages "$overlaydir"/usr/portage/packages + break + elif [[ -d packages ]] ; then + mount -o bind packages "$overlaydir"/usr/portage/packages + break + fi + done + # keep distfiles around + while : true ; do + if [[ ! -d distfiles ]] ; then + mkdir distfiles + mount -o bind distfiles "$overlaydir"/usr/portage/distfiles + break + elif [[ -d distfiles ]] ; then + mount -o bind distfiles "$overlaydir"/usr/portage/distfiles + break + fi + done + # bind mount targets inside clean build environment managed by vasile, we really need them to be in there + mount -o bind targets "$overlaydir"/mnt + mount -t proc proc "$overlaydir"/proc + mount -t sysfs sysfs "$overlaydir"/sys + mount -t devtmpfs -o relatime,size=3055348k,nr_inodes=763837,mode=755 none "$overlaydir"/dev + mount -t devpts -o nosuid,noexec,relatime,gid=5,mode=620 none "$overlaydir"/dev/pts + mount -t tmpfs -o nosuid,nodev none "$overlaydir"/dev/shm + mount -t tmpfs -o nosuid,nodev,noexec none "$overlaydir"/tmp +} + +envkogaionstop () { + # umount squashfs + overlayfs chroot + umount -l "$overlaydir"/proc > /dev/null 2>&1 + umount -l "$overlaydir"/sys > /dev/null 2>&1 + umount -l "$overlaydir"/dev/pts > /dev/null 2>&1 + umount -l "$overlaydir"/dev/shm > /dev/null 2>&1 + umount -l "$overlaydir"/dev > /dev/null 2>&1 + umount -l "$overlaydir"/tmp > /dev/null 2>&1 + umount -l "$overlaydir"/usr/portage/packages > /dev/null 2>&1 + umount -l "$overlaydir"/mnt > /dev/null 2>&1 + umount -l "$overlaydir" > /dev/null 2>&1 + umount -l "$rodir" > /dev/null 2>&1 +} + +envcheckroot () { + if [[ "$(whoami)" != root ]] ; then + echo "" + echo "You're not root?...No cookies for you, go away !!!" + echo "" + exit 1 + fi +} + +envkogaionsquashfsintegrity () { + # our bare metal buildserver is x86_64 but we want to build 32bit packages as well + # run this script with linux32 to fool it we run i686 and to build 32bit packages + while : true ; do + export local sqfsroot="kogaiondevelx64.squashfs" + export local sqfsrootmd5file=""$sqfsroot".md5" + export local sqfsrootmd5="$(cat "$sqfsrootmd5file" | awk {'print $1'})" + if [[ -f "$sqfsroot" && -f "$sqfsrootmd5file" ]] ; then + echo "Good, x86_64 squashed chroot && checksum file FOUND ... verifying integrity" + echo "" + if [[ "$(md5sum "$sqfsroot" | awk {'print $1'})" = "$sqfsrootmd5" ]] ; then + echo "Good, x86_64 squashed chroot checksum PASSED ... starting environment" + echo "" + sleep 1 + break + else + echo "Ooops, x86_64 squashed chroot checksum FAILED ... aborting" + exit 1 + fi + else + echo "Ooops, x86_64 squashed chroot or checksum file NOT FOUND ... aborting" + exit 1 + fi + done +} + +envkogaionprepare () { + # check our environment for sanity + # if safe, trigger start && break the loop to build packages + # else trigger stop && cleanup && check again + while : true ; do + if [[ ! -d "$rodir" && ! -d "$rwdir" && ! -d "$overlaydir" ]] ; then + for i in "$rodir" "$rwdir" "$overlaydir" ; do + mkdir "$i" + done + envkogaionstart + break + elif [[ -d "$rodir" && -d "$rwdir" && -d "$overlaydir" ]] ; then + envkogaionstop + for i in "$rodir" "$rwdir" "$overlaydir" ; do + rm -rf "$i" + done + continue + fi + done +} + +envkogaionoverlays() { + # inject our overlays into squashfs + overlayfs chroot + echo "Injecting Kogaion Linux Main Overlay into x86_64 environment" + sleep 1 + chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionoverlay" + echo "Injecting Kogaion Linux Desktop Overlay into x86_64 environment" + sleep 1 + chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaiondesktopoverlay" +} + +envkogaionbuildsystem() { + # inject our buildsystem into squashfs + overlayfs chroot + export local envkogaionmakeconf="ln -sf /opt/build/conf/intel/portage/make.conf.amd64 /etc/portage/make.conf" + export local envkogaionprofile="eselect profile set 1" + echo "Injecting Kogaion Linux X86_64 Buildsystem && Setting up Portage && Setting up make.conf" + echo "" + sleep 1 + for cmd in "$envkogaionbuildgit" "$envkogaionportageconfig" "$envkogaionmakeconf" "$envkogaionprofile" "$envkogaionenvupdate" ; do + chroot "$overlaydir" su - "$envkogaionuser" -c "$cmd" + done +} + +envkogaionbuild () { + # build packages in squashfs + overlayfs chroot + echo "" + echo "x86_46 Environment is UP && RUNNING ... building targets" + sleep 1 + chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionbuildtarget" +} + +envkogaionchroot() { +# enter squashfs + overlayfs chroot to push packages, or debug build errors + echo -e "" + echo -e "#################################################################" + echo -e "# ENTERING CHROOT ENV FOR YOU TO PUSH BUILT PACKAGES #" + echo -e "# OR TO FIX EVENTUAL BUILD ERRORS #" + echo -e "#################################################################" + echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" + echo -e "#################################################################" + echo -e "# NEXT RUN OF THIS SCRIPT WILL DESTROY ALL YOUR WORK #" + echo -e "# DO NOT EXIT CHROOT UNTIL ALL PACKAGES ARE PUSHED TO REPOS #" + echo -e "# OR, IN CASE OF BUILD FAILURES, UNTIL ALL FIXES ARE COMMITED #" + echo -e "#################################################################" + echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" + echo -e "#################################################################" + echo -e "" + echo -e "" + chroot "$overlaydir" su - "$envkogaionuser" +} + +main () { + if envcheckroot ; then + envkogaionsquashfsintegrity + envkogaionprepare + envkogaionoverlays + envkogaionbuildsystem + envkogaionbuild + envkogaionchroot + envkogaionstop + fi +} + +main +exit 0 @@ -1,254 +1,28 @@ #!/usr/bin/env bash -# -# Say Hello to Vasile , a script to build Kogaion Linux packages in a clean squashfs + overlayfs chroot -# using predefined targets : kernel.target, libs.target, x11.target, sound.target, artwork.target etc -# Targets are passed as arguments, and will remain private...for now (not all of them are stable yet) -# Author : Ghiunhan Mamut (aka V3n3RiX) @ RogentOS Linux Group -# Dependencies : squashfs + overlayfs kernel support +# Say Hello to Vasile, a script to build Kogaion Linux packages in a clean squashfs + overlayfs chroot +# Using predefined targets : kernel.target , xlibs.target , x11.target , sound.target , artwork.target +# Main author : Ghiunhan Mamut (aka V3n3RiX) @ RogentOS Development Group +# Dependencies : kernel built with squashfs + overlayfs, app-arch/dpkg (optional for building deb packages in portage) +# + +case $1 in + --build64) source build64 + ;; + --build32) source build32 + ;; + --clean) source cleanup + ;; + --help) echo -e "" + echo -e "Usage: vasile [options]" + echo -e "" + echo -e "Options:" + echo -e "--build64 : build package in a clean x64 environment" + echo -e "--build32 : build package in a clean x86 environment" + echo -e "--help : display this help and exit" + echo -e "" + ;; + *) echo -e "error: no operation specified, use --help for help" + ;; +esac - -# env mount variables -export local rodir="rodir" -export local rwdir="rwdir" -export local overlaydir="overlaydir" - -# env user variable -export local envkogaionuser="root" - -# env target variable (can be a single package, multiple packages, or a target file passed as parameter) -export local envkogaiontarget="$@" -export local envkogaionbuildtarget="emerge -kav "$envkogaiontarget"" - -# env buildsystem variables -export local envkogaionoverlay="layman -f -a kogaion -o https://raw.github.com/Rogentos/kogaion/master/overlay.xml" -export local envkogaiondesktopoverlay="layman -f -a kogaion-desktop -o https://raw.github.com/Rogentos/kogaion-desktop/master/overlay.xml" -export local envkogaionbuildgit="cd /opt && git clone https://github.com/Rogentos/build.git" -export local envkogaionportageconfig="ln -sf /opt/build/conf/intel/portage /etc/portage" -export local envkogaionenvupdate="/usr/sbin/env-update && . /etc/profile" - -envkogaionstart () { - # mount ro squashfs chroot + add rw overlayfs layer to enable clean package building - mount -t squashfs "$sqfsroot" "$rodir" - mount -t overlayfs -o lowerdir="$rodir",upperdir="$rwdir" overlayfs "$overlaydir" - # portage buildpkg feature is now enabled by default, so all built packages or targets will also have binary packages created - # each target depends on previous one, building a target will most likely pull packages from previous one - # to avoid useless rebuilds, bind mount portage binary packages folder, and use binaries if needed - # every binary was built in same clean build environment managed by vasile, so they are safe to reuse - # vasile will still clean the build environment, but will leave binaries in place - while : true ; do - if [[ ! -d packages ]] ; then - mkdir packages - mount -o bind packages "$overlaydir"/usr/portage/packages - break - elif [[ -d packages ]] ; then - mount -o bind packages "$overlaydir"/usr/portage/packages - break - fi - done - # keep distfiles around - while : true ; do - if [[ ! -d distfiles ]] ; then - mkdir distfiles - mount -o bind distfiles "$overlaydir"/usr/portage/distfiles - break - elif [[ -d distfiles ]] - mount -o bind distfiles "$overlaydir"/usr/portage/distfiles - break - fi - done - # bind mount targets inside clean build environment managed by vasile, we really need them to be in there - mount -o bind targets "$overlaydir"/mnt - mount -t proc proc "$overlaydir"/proc - mount -t sysfs sysfs "$overlaydir"/sys - mount -t devtmpfs -o relatime,size=3055348k,nr_inodes=763837,mode=755 none "$overlaydir"/dev - mount -t devpts -o nosuid,noexec,relatime,gid=5,mode=620 none "$overlaydir"/dev/pts - mount -t tmpfs -o nosuid,nodev none "$overlaydir"/dev/shm - mount -t tmpfs -o nosuid,nodev,noexec none "$overlaydir"/tmp -} - -envkogaionstop () { - # umount squashfs + overlayfs chroot - umount -l "$overlaydir"/proc > /dev/null 2>&1 - umount -l "$overlaydir"/sys > /dev/null 2>&1 - umount -l "$overlaydir"/dev/pts > /dev/null 2>&1 - umount -l "$overlaydir"/dev/shm > /dev/null 2>&1 - umount -l "$overlaydir"/dev > /dev/null 2>&1 - umount -l "$overlaydir"/tmp > /dev/null 2>&1 - umount -l "$overlaydir"/usr/portage/packages > /dev/null 2>&1 - umount -l "$overlaydir"/mnt > /dev/null 2>&1 - umount -l "$overlaydir" > /dev/null 2>&1 - umount -l "$rodir" > /dev/null 2>&1 -} - -envcheckroot () { - if [[ "$(whoami)" != root ]] ; then - echo "" - echo "You're not root?...No cookies for you, go away !!!" - echo "" - exit 1 - fi -} - -envkogaionsquashfsintegrity () { - # our bare metal buildserver is x86_64 but we want to build 32bit packages as well - # run this script with linux32 to fool it we run i686 and to build 32bit packages - while : true ; do - if [[ "$(uname -m)" = "x86_64" ]] ; then - export local sqfsroot="kogaiondevelx64.squashfs" - export local sqfsrootmd5file=""$sqfsroot".md5" - export local sqfsrootmd5="$(cat "$sqfsrootmd5file" | awk {'print $1'})" - if [[ -f "$sqfsroot" && -f "$sqfsrootmd5file" ]] ; then - echo "Good, x86_64 squashed chroot && checksum file FOUND ... verifying integrity" - echo "" - if [[ "$(md5sum "$sqfsroot" | awk {'print $1'})" = "$sqfsrootmd5" ]] ; then - echo "Good, x86_64 squashed chroot checksum PASSED ... starting environment" - echo "" - sleep 1 - break - else - echo "Ooops, x86_64 squashed chroot checksum FAILED ... aborting" - exit 1 - fi - else - echo "Ooops, x86_64 squashed chroot or checksum file NOT FOUND ... aborting" - exit 1 - fi - elif [[ "$(uname -m)" = "i686" ]] ; then - export local sqfsroot="kogaiondevelx86.squashfs" - export local sqfsrootmd5file=""$sqfsroot".md5" - export local sqfsrootmd5="$(cat "$sqfsrootmd5file" | awk {'print $1'})" - if [[ -f "$sqfsroot" && -f "$sqfsrootmd5file" ]] ; then - echo "Good, i686 squashed chroot && checksum file FOUND ... verifying integrity" - echo "" - if [[ "$(md5sum "$sqfsroot" | awk {'print $1'})" = "$sqfsrootmd5" ]] ; then - echo "Good, i686 squashed chroot checksum PASSED ... starting environment" - echo "" - sleep 1 - break - else - echo "Ooops, i686 squashed chroot checksum FAILED ... aborting" - fi - else - echo "Ooops, i686 squashed chroot of checksum file NOT FOUND ... aborting" - exit 1 - fi - fi - done -} - -envkogaionprepare () { - # check our environment for sanity - # if safe, trigger start && break the loop to build packages - # else trigger stop && cleanup && check again - while : true ; do - if [[ ! -d "$rodir" && ! -d "$rwdir" && ! -d "$overlaydir" ]] ; then - for i in "$rodir" "$rwdir" "$overlaydir" ; do - mkdir "$i" - done - envkogaionstart - break - elif [[ -d "$rodir" && -d "$rwdir" && -d "$overlaydir" ]] ; then - envkogaionstop - for i in "$rodir" "$rwdir" "$overlaydir" ; do - rm -rf "$i" - done - continue - fi - done -} - -envkogaionoverlays() { - # inject our overlays into squashfs + overlayfs chroot - if [[ "$(uname -m)" = "x86_64" ]] ; then - echo "Injecting Kogaion Linux Main Overlay into x86_64 environment" - sleep 1 - chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionoverlay" - echo "Injecting Kogaion Linux Desktop Overlay into x86_64 environment" - sleep 1 - chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaiondesktopoverlay" - elif [[ "$(uname -m)" = "i686" ]] ; then - echo "Injecting Kogaion Linux Main Overlay into i686 environment" - sleep 1 - linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionoverlay" - echo "Injecting Kogaion Linux Desktop Overlay into i686 environment" - linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaiondesktopoverlay" - fi -} - -envkogaionbuildsystem() { - # inject our buildsystem into squashfs + overlayfs chroot - if [[ "$(uname -m)" = "x86_64" ]] ; then - export local envkogaionmakeconf="ln -sf /opt/build/conf/intel/portage/make.conf.amd64 /etc/portage/make.conf" - export local envkogaionprofile="eselect profile set 1" - echo "Injecting Kogaion Linux X86_64 Buildsystem && Setting up Portage && Setting up make.conf" - echo "" - sleep 1 - for cmd in "$envkogaionbuildgit" "$envkogaionportageconfig" "$envkogaionmakeconf" "$envkogaionprofile" "$envkogaionenvupdate" ; do - chroot "$overlaydir" su - "$envkogaionuser" -c "$cmd" - done - elif [[ "$(uname -m)" = "i686" ]] ; then - export local envkogaionmakeconf="ln -sf /opt/build/conf/intel/portage/make.conf.x86 /etc/portage/make.conf" - export local envkogaionprofile="eselect profile set 1" - echo "Injecting Kogaion Linux i686 Buildsystem && Setting up Portage && Setting up make.conf" - echo "" - sleep 1 - for cmd in "$envkogaionbuildgit" "$envkogaionportageconfig" "$envkogaionmakeconf" "$envkogaionprofile" "$envkogaionenvupdate" ; do - linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$cmd" - done - fi - -} - -envkogaionbuild () { - # build packages in squashfs + overlayfs chroot - if [[ "$(uname -m)" = "x86_64" ]] ; then - echo "" - echo "x86_46 Environment is UP && RUNNING ... building targets" - sleep 1 - chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionbuildtarget" - elif [[ "$(uname -m)" = "i686" ]] ; then - echo "" - echo "i686 Environment is UP && RUNNING ... building targets" - sleep 1 - linux32 chroot "$overlaydir" su - "$envkogaionuser" -c "$envkogaionbuildtarget" - fi -} - -envkogaionchroot() { - # enter squashfs + overlayfs chroot to push packages, or debug build errors - echo -e "" - echo -e "#################################################################" - echo -e "# ENTERING CHROOT ENV FOR YOU TO PUSH BUILT PACKAGES #" - echo -e "# OR TO FIX EVENTUAL BUILD ERRORS #" - echo -e "#################################################################" - echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" - echo -e "#################################################################" - echo -e "# NEXT RUN OF THIS SCRIPT WILL DESTROY ALL YOUR WORK #" - echo -e "# DO NOT EXIT CHROOT UNTIL ALL PACKAGES ARE PUSHED TO REPOS #" - echo -e "# OR, IN CASE OF BUILD FAILURES, UNTIL ALL FIXES ARE COMMITED #" - echo -e "#################################################################" - echo -e "# !!! WARNING !!! WARNING !!! WARNING !!! #" - echo -e "#################################################################" - echo -e "" - echo -e "" - if [[ "$(uname -m)" = "x86_64" ]] ; then - chroot "$overlaydir" su - "$envkogaionuser" - elif [[ "$(uname -m)" = "i686" ]] ; then - linux32 chroot "$overlaydir" su - "$envkogaionuser" - fi -} - -main () { - if envcheckroot ; then - envkogaionsquashfsintegrity - envkogaionprepare - envkogaionoverlays - envkogaionbuildsystem - envkogaionbuild - envkogaionchroot - envkogaionstop - fi -} - -main exit 0 |