tools-uclibc/desktop: organize build.sh into bash functions

This commit is contained in:
Anthony G. Basile 2013-05-16 07:41:33 -04:00
parent 861c54b57f
commit 29dff6b837
10 changed files with 171 additions and 88 deletions

View file

@ -1,101 +1,160 @@
# These are just notes for now. A cleaner script is coming. #!/bin/bash
mkdir desktop-amd64-uclibc-hardened ROOTFS="desktop-amd64-uclibc-hardened"
tar -x -C desktop-amd64-uclibc-hardened -f /var/tmp/catalyst/builds/hardened/amd64/stage3-amd64-uclibc-hardened.tar.bz2
mkdir desktop-amd64-uclibc-hardened/usr/portage/ PWD="$(pwd)"
mount --bind /usr/portage/ desktop-amd64-uclibc-hardened/usr/portage/ STAGE3="/var/tmp/catalyst/builds/hardened/amd64/stage3-amd64-uclibc-hardened.tar.bz2"
mount --bind /proc/ desktop-amd64-uclibc-hardened/proc/ LAYMAN="/var/lib/layman"
mount --bind /dev/ desktop-amd64-uclibc-hardened/dev/ KERNEL_SOURCE="/usr/src/linux-lilblue"
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
cp -f portage/make.conf.2 desktop-amd64-uclibc-hardened/etc/portage/make.conf unpack_stage3() {
cp -f world desktop-amd64-uclibc-hardened/var/lib/portage/world mkdir "${ROOTFS}"
cp -f rebuild.sh desktop-amd64-uclibc-hardened/tmp/ tar -x -C "${ROOTFS}" -f "${STAGE3}"
chroot desktop-amd64-uclibc-hardened/ /tmp/rebuild.sh }
rm -f desktop-amd64-uclibc-hardened/tmp/rebuild.sh
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 update_world() {
cp -f update.sh desktop-amd64-uclibc-hardened/tmp/ cp -f portage/make.conf.3 "${ROOTFS}"/etc/portage/make.conf
chroot desktop-amd64-uclibc-hardened/ /tmp/update.sh cp -f update.sh "${ROOTFS}"/tmp/
rm -f desktop-amd64-uclibc-hardened/tmp/update.sh 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 \ genkernel \
--kernel-config=config \ --kernel-config=config \
--makeopts=-j9 \ --makeopts=-j9 \
--symlink \ --symlink \
--no-mountboot \ --no-mountboot \
--kerneldir=/usr/src/linux-lilblue \ --kerneldir="${KERNEL_SOURCE}" \
--bootdir=/root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/boot/ \ --bootdir="${PWD}"/"${ROOTFS}"/boot/ \
--module-prefix=/root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/ \ --module-prefix="${PWD}"/"${ROOTFS}"/ \
--modprobedir=/root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/etc/modprobe.d \ --modprobedir="${PWD}"/"${ROOTFS}"/etc/modprobe.d \
all all
for i in $(find /root/releng/tools-uclibc/desktop/desktop-amd64-uclibc-hardened/lib/modules -iname *ko); do for i in $(find "${PWD}"/"${ROOTFS}"/lib/modules -iname *ko); do
objcopy --strip-unneeded $i objcopy --strip-unneeded $i
done done
}
ln -sf net.lo desktop-amd64-uclibc-hardened/etc/init.d/net.eth0 setup_initrc() {
chroot desktop-amd64-uclibc-hardened/ rc-update add alsasound default ln -sf net.lo "${ROOTFS}"/etc/init.d/net.eth0
chroot desktop-amd64-uclibc-hardened/ rc-update add cupsd default chroot "${ROOTFS}"/ rc-update add alsasound default
chroot desktop-amd64-uclibc-hardened/ rc-update add fcron default chroot "${ROOTFS}"/ rc-update add cupsd default
chroot desktop-amd64-uclibc-hardened/ rc-update add net.eth0 default chroot "${ROOTFS}"/ rc-update add fcron default
chroot desktop-amd64-uclibc-hardened/ rc-update add postfix default chroot "${ROOTFS}"/ rc-update add net.eth0 default
chroot desktop-amd64-uclibc-hardened/ rc-update add sshd default chroot "${ROOTFS}"/ rc-update add postfix default
chroot desktop-amd64-uclibc-hardened/ rc-update add xdm default chroot "${ROOTFS}"/ rc-update add sshd default
chroot desktop-amd64-uclibc-hardened/ rc-update add avahi-daemon default chroot "${ROOTFS}"/ rc-update add xdm default
chroot desktop-amd64-uclibc-hardened/ rc-update add dbus default chroot "${ROOTFS}"/ rc-update add avahi-daemon default
chroot desktop-amd64-uclibc-hardened/ rc-update add samba default chroot "${ROOTFS}"/ rc-update add dbus default
chroot desktop-amd64-uclibc-hardened/ rc-update add syslog-ng 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/ setup_usergroups() {
chroot desktop-amd64-uclibc-hardened/ /tmp/passwd.sh cp -f passwd.sh "${ROOTFS}"/tmp/
rm -f desktop-amd64-uclibc-hardened/tmp/passwd.sh chroot "${ROOTFS}"/ /tmp/passwd.sh
rm -f "${ROOTFS}"/tmp/passwd.sh
rm -rf desktop-amd64-uclibc-hardened/home/gentoo rm -rf "${ROOTFS}"/home/gentoo
cp -a gentoo desktop-amd64-uclibc-hardened/home/ cp -a gentoo "${ROOTFS}"/home/
chroot desktop-amd64-uclibc-hardened/ chown -R gentoo:gentoo /home/gentoo chroot "${ROOTFS}"/ chown -R gentoo:gentoo /home/gentoo
sed -i 's/# \(%wheel.*NOPASSWD\)/\1/' desktop-amd64-uclibc-hardened/etc/sudoers sed -i 's/# \(%wheel.*NOPASSWD\)/\1/' "${ROOTFS}"/etc/sudoers
}
sed -i 's/^\(DISPLAYMANAGER="\)xdm/\1slim/' desktop-amd64-uclibc-hardened/etc/conf.d/xdm setup_confs() {
sed -i 's/^\(login.*\)/# \1/' desktop-amd64-uclibc-hardened/etc/slim.conf sed -i 's/^\(DISPLAYMANAGER="\)xdm/\1slim/' "${ROOTFS}"/etc/conf.d/xdm
sed -i '/# login_cmd.*Xsession/ a\login_cmd exec /bin/bash -login ~/.xinitrc' desktop-amd64-uclibc-hardened/etc/slim.conf sed -i 's/^\(login.*\)/# \1/' "${ROOTFS}"/etc/slim.conf
wget -O desktop-amd64-uclibc-hardened/usr/share/slim/themes/default/background.jpg http://www.gentoo.org/images/backgrounds/gentoo1600x1200.jpg 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 '/^SYNC/d' "${ROOTFS}"/etc/portage/make.conf
sed -i '/^GENTOO_MIRRORS/d' desktop-amd64-uclibc-hardened/etc/portage/make.conf sed -i '/^GENTOO_MIRRORS/d' "${ROOTFS}"/etc/portage/make.conf
sed -i 's/^MAKEOPTS/#MAKEOPTS/' desktop-amd64-uclibc-hardened/etc/portage/make.conf sed -i 's/^MAKEOPTS/#MAKEOPTS/' "${ROOTFS}"/etc/portage/make.conf
}
rm -rf desktop-amd64-uclibc-hardened/tmp/* cleanup_dirs() {
rm -rf desktop-amd64-uclibc-hardened/var/log/* rm -rf "${ROOTFS}"/tmp/*
rm -rf desktop-amd64-uclibc-hardened/var/tmp/* rm -rf "${ROOTFS}"/var/log/*
rm -rf "${ROOTFS}"/var/tmp/*
}
umount desktop-amd64-uclibc-hardened/sys/ unmount_dirs() {
umount desktop-amd64-uclibc-hardened/dev/pts/ umount "${ROOTFS}"/sys/
umount desktop-amd64-uclibc-hardened/dev/ umount "${ROOTFS}"/dev/pts/
umount desktop-amd64-uclibc-hardened/proc/ umount "${ROOTFS}"/dev/
umount desktop-amd64-uclibc-hardened/usr/portage/ 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 &

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<repositories version="1.0">
<repo priority="50" quality="experimental" status="official">
<name>hardened-development</name>
<description>Development Overlay for Hardened Gcc 4.x Toolchain</description>
<homepage>http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=summary</homepage>
<owner>
<email>hardened@gentoo.org</email>
</owner>
<source type="git">git://git.overlays.gentoo.org/proj/hardened-dev.git</source>
<feed>http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=atom</feed>
</repo>
</repositories>

View file

@ -0,0 +1,4 @@
PORTDIR_OVERLAY="
/var/lib/layman/hardened-development
$PORTDIR_OVERLAY
"

View file

@ -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_GCC="gcj graphite objc objc++ objc-gc gtk X"
USE="${USE_BASE} ${USE_GCC}" 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" SYNC="rsync://192.168.3.1/portage"
GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo" GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo"

View file

@ -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" 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" LINGUAS="en"
PORTDIR_OVERLAY="/var/lib/layman/hardened-development" source "/var/lib/layman/make.conf"
SYNC="rsync://192.168.3.1/portage" SYNC="rsync://192.168.3.1/portage"
GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo" GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo"

View file

@ -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" 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" LINGUAS="en"
PORTDIR_OVERLAY="/var/lib/layman/hardened-development" source "/var/lib/layman/make.conf"
SYNC="rsync://192.168.3.1/portage" SYNC="rsync://192.168.3.1/portage"
GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo" GENTOO_MIRRORS="ftp://192.168.3.1/pub/gentoo"

View file

@ -0,0 +1 @@
=dev-libs/nettle-2.7 ~amd64

View file

@ -1,3 +1,5 @@
#!/bin/bash -l #!/bin/bash -l
source /etc/profile
env-update
emerge --keep-going -evq world emerge --keep-going -evq world

View file

@ -1,5 +1,7 @@
#!/bin/bash -l #!/bin/bash -l
source /etc/profile
env-update
emerge -1q gcc emerge -1q gcc
emerge -1q uclibc emerge -1q uclibc
emerge -1q binutils emerge -1q binutils

View file

@ -1,3 +1,5 @@
#!/bin/bash -l #!/bin/bash -l
source /etc/profile
env-update
emerge -uvNDq world emerge -uvNDq world