From 29dff6b8375a40a1c502758142a382e8e12117eb Mon Sep 17 00:00:00 2001 From: "Anthony G. Basile" Date: Thu, 16 May 2013 07:41:33 -0400 Subject: [PATCH] tools-uclibc/desktop: organize build.sh into bash functions --- tools-uclibc/desktop/build.sh | 229 +++++++++++------- tools-uclibc/desktop/installed.xml | 13 + tools-uclibc/desktop/make.conf.layman | 4 + tools-uclibc/desktop/portage/make.conf.1 | 2 +- tools-uclibc/desktop/portage/make.conf.2 | 2 +- tools-uclibc/desktop/portage/make.conf.3 | 2 +- .../portage/package.accept_keywords/nettle | 1 + tools-uclibc/desktop/rebuild.sh | 2 + tools-uclibc/desktop/toolchain.sh | 2 + tools-uclibc/desktop/update.sh | 2 + 10 files changed, 171 insertions(+), 88 deletions(-) create mode 100644 tools-uclibc/desktop/installed.xml create mode 100644 tools-uclibc/desktop/make.conf.layman create mode 100644 tools-uclibc/desktop/portage/package.accept_keywords/nettle diff --git a/tools-uclibc/desktop/build.sh b/tools-uclibc/desktop/build.sh index 51628283..abc2e80c 100755 --- a/tools-uclibc/desktop/build.sh +++ b/tools-uclibc/desktop/build.sh @@ -1,101 +1,160 @@ -# These are just notes for now. A cleaner script is coming. +#!/bin/bash -mkdir desktop-amd64-uclibc-hardened -tar -x -C desktop-amd64-uclibc-hardened -f /var/tmp/catalyst/builds/hardened/amd64/stage3-amd64-uclibc-hardened.tar.bz2 +ROOTFS="desktop-amd64-uclibc-hardened" -mkdir desktop-amd64-uclibc-hardened/usr/portage/ -mount --bind /usr/portage/ desktop-amd64-uclibc-hardened/usr/portage/ -mount --bind /proc/ desktop-amd64-uclibc-hardened/proc/ -mount --bind /dev/ desktop-amd64-uclibc-hardened/dev/ -mount --bind /dev/pts desktop-amd64-uclibc-hardened/dev/pts/ -mount --bind /sys/ desktop-amd64-uclibc-hardened/sys/ - -layman -S -mkdir desktop-amd64-uclibc-hardened/var/lib/layman -cp -a /var/lib/layman/hardened-development/ desktop-amd64-uclibc-hardened/var/lib/layman - -cp -f fstab desktop-amd64-uclibc-hardened/etc/fstab -cp -f lilo.conf desktop-amd64-uclibc-hardened/etc/lilo.conf - -rm -f desktop-amd64-uclibc-hardened/etc/portage/make.conf.catalyst -cp -f portage/make.conf.1 desktop-amd64-uclibc-hardened/etc/portage/make.conf - -for d in env package.accept_keywords package.mask package.use profile; do - [[ -a portage/"${d}" ]] && cp -af portage/${d} desktop-amd64-uclibc-hardened/etc/portage -done -cp -af portage/package.env desktop-amd64-uclibc-hardened/etc/portage - -cp -f toolchain.sh desktop-amd64-uclibc-hardened/tmp/ -chroot desktop-amd64-uclibc-hardened/ /tmp/toolchain.sh -rm -f desktop-amd64-uclibc-hardened/tmp/toolchain.sh +PWD="$(pwd)" +STAGE3="/var/tmp/catalyst/builds/hardened/amd64/stage3-amd64-uclibc-hardened.tar.bz2" +LAYMAN="/var/lib/layman" +KERNEL_SOURCE="/usr/src/linux-lilblue" -cp -f portage/make.conf.2 desktop-amd64-uclibc-hardened/etc/portage/make.conf -cp -f world desktop-amd64-uclibc-hardened/var/lib/portage/world -cp -f rebuild.sh desktop-amd64-uclibc-hardened/tmp/ -chroot desktop-amd64-uclibc-hardened/ /tmp/rebuild.sh -rm -f desktop-amd64-uclibc-hardened/tmp/rebuild.sh +unpack_stage3() { + mkdir "${ROOTFS}" + tar -x -C "${ROOTFS}" -f "${STAGE3}" +} + +mount_dirs() { + mkdir "${ROOTFS}"/usr/portage/ + mount --bind /usr/portage/ "${ROOTFS}"/usr/portage/ + mount --bind /proc/ "${ROOTFS}"/proc/ + mount --bind /dev/ "${ROOTFS}"/dev/ + mount --bind /dev/pts "${ROOTFS}"/dev/pts/ + mount --bind /sys/ "${ROOTFS}"/sys/ +} + +add_overlay() { + layman -S + mkdir "${ROOTFS}"/"${LAYMAN}" + cp -a "${LAYMAN}"/hardened-development/ "${ROOTFS}"/"${LAYMAN}" + cp installed.xml "${ROOTFS}"/"${LAYMAN}"/installed.xml + cp make.conf.layman "${ROOTFS}"/"${LAYMAN}"/make.conf +} + +populate_etc() { + cp -f fstab "${ROOTFS}"/etc/fstab + cp -f lilo.conf "${ROOTFS}"/etc/lilo.conf + + rm -f "${ROOTFS}"/etc/portage/make.conf.catalyst + cp -f portage/make.conf.1 "${ROOTFS}"/etc/portage/make.conf + + for d in env package.accept_keywords package.mask package.use profile; do + [[ -a portage/"${d}" ]] && cp -af portage/${d} "${ROOTFS}"/etc/portage + done + cp -af portage/package.env "${ROOTFS}"/etc/portage +} + +rebuild_toolchain() { + cp -f toolchain.sh "${ROOTFS}"/tmp/ + chroot "${ROOTFS}"/ /tmp/toolchain.sh + rm -f "${ROOTFS}"/tmp/toolchain.sh +} + +rebuild_world() { + cp -f portage/make.conf.2 "${ROOTFS}"/etc/portage/make.conf + cp -f world "${ROOTFS}"/var/lib/portage/world + cp -f rebuild.sh "${ROOTFS}"/tmp/ + chroot "${ROOTFS}"/ /tmp/rebuild.sh + rm -f "${ROOTFS}"/tmp/rebuild.sh +} -cp -f portage/make.conf.3 desktop-amd64-uclibc-hardened/etc/portage/make.conf -cp -f update.sh desktop-amd64-uclibc-hardened/tmp/ -chroot desktop-amd64-uclibc-hardened/ /tmp/update.sh -rm -f desktop-amd64-uclibc-hardened/tmp/update.sh +update_world() { + cp -f portage/make.conf.3 "${ROOTFS}"/etc/portage/make.conf + cp -f update.sh "${ROOTFS}"/tmp/ + chroot "${ROOTFS}"/ /tmp/update.sh + rm -f "${ROOTFS}"/tmp/update.sh +} -mkdir -p desktop-amd64-uclibc-hardened/boot +build_kernel() { + mkdir -p "${ROOTFS}"/boot -genkernel \ - --kernel-config=config \ - --makeopts=-j9 \ - --symlink \ - --no-mountboot \ - --kerneldir=/usr/src/linux-lilblue \ - --bootdir=/root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/boot/ \ - --module-prefix=/root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/ \ - --modprobedir=/root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/etc/modprobe.d \ - all + genkernel \ + --kernel-config=config \ + --makeopts=-j9 \ + --symlink \ + --no-mountboot \ + --kerneldir="${KERNEL_SOURCE}" \ + --bootdir="${PWD}"/"${ROOTFS}"/boot/ \ + --module-prefix="${PWD}"/"${ROOTFS}"/ \ + --modprobedir="${PWD}"/"${ROOTFS}"/etc/modprobe.d \ + all -for i in $(find /root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/lib/modules -iname *ko); do - objcopy --strip-unneeded $i -done + for i in $(find "${PWD}"/"${ROOTFS}"/lib/modules -iname *ko); do + objcopy --strip-unneeded $i + done +} -ln -sf net.lo desktop-amd64-uclibc-hardened/etc/init.d/net.eth0 -chroot desktop-amd64-uclibc-hardened/ rc-update add alsasound default -chroot desktop-amd64-uclibc-hardened/ rc-update add cupsd default -chroot desktop-amd64-uclibc-hardened/ rc-update add fcron default -chroot desktop-amd64-uclibc-hardened/ rc-update add net.eth0 default -chroot desktop-amd64-uclibc-hardened/ rc-update add postfix default -chroot desktop-amd64-uclibc-hardened/ rc-update add sshd default -chroot desktop-amd64-uclibc-hardened/ rc-update add xdm default -chroot desktop-amd64-uclibc-hardened/ rc-update add avahi-daemon default -chroot desktop-amd64-uclibc-hardened/ rc-update add dbus default -chroot desktop-amd64-uclibc-hardened/ rc-update add samba default -chroot desktop-amd64-uclibc-hardened/ rc-update add syslog-ng default +setup_initrc() { + ln -sf net.lo "${ROOTFS}"/etc/init.d/net.eth0 + chroot "${ROOTFS}"/ rc-update add alsasound default + chroot "${ROOTFS}"/ rc-update add cupsd default + chroot "${ROOTFS}"/ rc-update add fcron default + chroot "${ROOTFS}"/ rc-update add net.eth0 default + chroot "${ROOTFS}"/ rc-update add postfix default + chroot "${ROOTFS}"/ rc-update add sshd default + chroot "${ROOTFS}"/ rc-update add xdm default + chroot "${ROOTFS}"/ rc-update add avahi-daemon default + chroot "${ROOTFS}"/ rc-update add dbus default + chroot "${ROOTFS}"/ rc-update add samba default + chroot "${ROOTFS}"/ rc-update add syslog-ng default +} -cp -f passwd.sh desktop-amd64-uclibc-hardened/tmp/ -chroot desktop-amd64-uclibc-hardened/ /tmp/passwd.sh -rm -f desktop-amd64-uclibc-hardened/tmp/passwd.sh +setup_usergroups() { + cp -f passwd.sh "${ROOTFS}"/tmp/ + chroot "${ROOTFS}"/ /tmp/passwd.sh + rm -f "${ROOTFS}"/tmp/passwd.sh -rm -rf desktop-amd64-uclibc-hardened/home/gentoo -cp -a gentoo desktop-amd64-uclibc-hardened/home/ -chroot desktop-amd64-uclibc-hardened/ chown -R gentoo:gentoo /home/gentoo -sed -i 's/# \(%wheel.*NOPASSWD\)/\1/' desktop-amd64-uclibc-hardened/etc/sudoers + rm -rf "${ROOTFS}"/home/gentoo + cp -a gentoo "${ROOTFS}"/home/ + chroot "${ROOTFS}"/ chown -R gentoo:gentoo /home/gentoo + sed -i 's/# \(%wheel.*NOPASSWD\)/\1/' "${ROOTFS}"/etc/sudoers +} -sed -i 's/^\(DISPLAYMANAGER="\)xdm/\1slim/' desktop-amd64-uclibc-hardened/etc/conf.d/xdm -sed -i 's/^\(login.*\)/# \1/' desktop-amd64-uclibc-hardened/etc/slim.conf -sed -i '/# login_cmd.*Xsession/ a\login_cmd exec /bin/bash -login ~/.xinitrc' desktop-amd64-uclibc-hardened/etc/slim.conf -wget -O desktop-amd64-uclibc-hardened/usr/share/slim/themes/default/background.jpg http://www.gentoo.org/images/backgrounds/gentoo1600x1200.jpg +setup_confs() { + sed -i 's/^\(DISPLAYMANAGER="\)xdm/\1slim/' "${ROOTFS}"/etc/conf.d/xdm + sed -i 's/^\(login.*\)/# \1/' "${ROOTFS}"/etc/slim.conf + sed -i '/# login_cmd.*Xsession/ a\login_cmd exec /bin/bash -login ~/.xinitrc' "${ROOTFS}"/etc/slim.conf + wget -O "${ROOTFS}"/usr/share/slim/themes/default/background.jpg http://www.gentoo.org/images/backgrounds/gentoo1600x1200.jpg -sed -i '/^SYNC/d' desktop-amd64-uclibc-hardened/etc/portage/make.conf -sed -i '/^GENTOO_MIRRORS/d' desktop-amd64-uclibc-hardened/etc/portage/make.conf -sed -i 's/^MAKEOPTS/#MAKEOPTS/' desktop-amd64-uclibc-hardened/etc/portage/make.conf + sed -i '/^SYNC/d' "${ROOTFS}"/etc/portage/make.conf + sed -i '/^GENTOO_MIRRORS/d' "${ROOTFS}"/etc/portage/make.conf + sed -i 's/^MAKEOPTS/#MAKEOPTS/' "${ROOTFS}"/etc/portage/make.conf +} -rm -rf desktop-amd64-uclibc-hardened/tmp/* -rm -rf desktop-amd64-uclibc-hardened/var/log/* -rm -rf desktop-amd64-uclibc-hardened/var/tmp/* +cleanup_dirs() { + rm -rf "${ROOTFS}"/tmp/* + rm -rf "${ROOTFS}"/var/log/* + rm -rf "${ROOTFS}"/var/tmp/* +} -umount desktop-amd64-uclibc-hardened/sys/ -umount desktop-amd64-uclibc-hardened/dev/pts/ -umount desktop-amd64-uclibc-hardened/dev/ -umount desktop-amd64-uclibc-hardened/proc/ -umount desktop-amd64-uclibc-hardened/usr/portage/ +unmount_dirs() { + umount "${ROOTFS}"/sys/ + umount "${ROOTFS}"/dev/pts/ + umount "${ROOTFS}"/dev/ + umount "${ROOTFS}"/proc/ + umount "${ROOTFS}"/usr/portage/ +} + +bundle_it() { + cd "${ROOTFS}" + tar jcvf ../"${ROOTFS}".tar.bz2 . +} + +main() { + unpack_stage3 + mount_dirs + add_overlay + populate_etc + rebuild_toolchain + rebuild_world + update_world + build_kernel + setup_initrc + setup_usergroups + setup_confs + cleanup_dirs + unmount_dirs + bundle_it +} + +main > zzz.log 2>&1 & diff --git a/tools-uclibc/desktop/installed.xml b/tools-uclibc/desktop/installed.xml new file mode 100644 index 00000000..f4c6026b --- /dev/null +++ b/tools-uclibc/desktop/installed.xml @@ -0,0 +1,13 @@ + + + + hardened-development + Development Overlay for Hardened Gcc 4.x Toolchain + http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=summary + + hardened@gentoo.org + + git://git.overlays.gentoo.org/proj/hardened-dev.git + http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=atom + + diff --git a/tools-uclibc/desktop/make.conf.layman b/tools-uclibc/desktop/make.conf.layman new file mode 100644 index 00000000..6284058e --- /dev/null +++ b/tools-uclibc/desktop/make.conf.layman @@ -0,0 +1,4 @@ +PORTDIR_OVERLAY=" +/var/lib/layman/hardened-development +$PORTDIR_OVERLAY +" diff --git a/tools-uclibc/desktop/portage/make.conf.1 b/tools-uclibc/desktop/portage/make.conf.1 index d86eb70f..ddc37ae6 100644 --- a/tools-uclibc/desktop/portage/make.conf.1 +++ b/tools-uclibc/desktop/portage/make.conf.1 @@ -7,7 +7,7 @@ USE_BASE="bindist mmx mmxext smp sse sse2 ssse3 static-libs -savedconfig" USE_GCC="gcj graphite objc objc++ objc-gc gtk X" USE="${USE_BASE} ${USE_GCC}" -PORTDIR_OVERLAY="/var/lib/layman/hardened-development" +source "/var/lib/layman/make.conf" SYNC="rsync://192.168.3.1/portage" GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo" diff --git a/tools-uclibc/desktop/portage/make.conf.2 b/tools-uclibc/desktop/portage/make.conf.2 index 4332bbe9..a5cf90f1 100644 --- a/tools-uclibc/desktop/portage/make.conf.2 +++ b/tools-uclibc/desktop/portage/make.conf.2 @@ -38,7 +38,7 @@ INPUT_DEVICES="acecad aiptek elographics evdev fpit hyperpen joystick keyboard m VIDEO_CARDS="apm ark ast chips cirrus epson fbdev glint i128 i740 intel mach64 mga modesetting nouveau nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa" LINGUAS="en" -PORTDIR_OVERLAY="/var/lib/layman/hardened-development" +source "/var/lib/layman/make.conf" SYNC="rsync://192.168.3.1/portage" GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo" diff --git a/tools-uclibc/desktop/portage/make.conf.3 b/tools-uclibc/desktop/portage/make.conf.3 index 6873c925..c7968871 100644 --- a/tools-uclibc/desktop/portage/make.conf.3 +++ b/tools-uclibc/desktop/portage/make.conf.3 @@ -38,7 +38,7 @@ INPUT_DEVICES="acecad aiptek elographics evdev fpit hyperpen joystick keyboard m VIDEO_CARDS="apm ark ast chips cirrus epson fbdev glint i128 i740 intel mach64 mga modesetting nouveau nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa" LINGUAS="en" -PORTDIR_OVERLAY="/var/lib/layman/hardened-development" +source "/var/lib/layman/make.conf" SYNC="rsync://192.168.3.1/portage" GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo" diff --git a/tools-uclibc/desktop/portage/package.accept_keywords/nettle b/tools-uclibc/desktop/portage/package.accept_keywords/nettle new file mode 100644 index 00000000..dc95b611 --- /dev/null +++ b/tools-uclibc/desktop/portage/package.accept_keywords/nettle @@ -0,0 +1 @@ +=dev-libs/nettle-2.7 ~amd64 diff --git a/tools-uclibc/desktop/rebuild.sh b/tools-uclibc/desktop/rebuild.sh index 8d1d74bd..c22e0069 100755 --- a/tools-uclibc/desktop/rebuild.sh +++ b/tools-uclibc/desktop/rebuild.sh @@ -1,3 +1,5 @@ #!/bin/bash -l +source /etc/profile +env-update emerge --keep-going -evq world diff --git a/tools-uclibc/desktop/toolchain.sh b/tools-uclibc/desktop/toolchain.sh index b9ebe457..04586799 100755 --- a/tools-uclibc/desktop/toolchain.sh +++ b/tools-uclibc/desktop/toolchain.sh @@ -1,5 +1,7 @@ #!/bin/bash -l +source /etc/profile +env-update emerge -1q gcc emerge -1q uclibc emerge -1q binutils diff --git a/tools-uclibc/desktop/update.sh b/tools-uclibc/desktop/update.sh index 0ee39fcf..1920e72e 100755 --- a/tools-uclibc/desktop/update.sh +++ b/tools-uclibc/desktop/update.sh @@ -1,3 +1,5 @@ #!/bin/bash -l +source /etc/profile +env-update emerge -uvNDq world