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
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 &

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="${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"

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"
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"

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"
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"

View file

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

View file

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

View file

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

View file

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