commit
ecfc1992d3
|
|
@ -0,0 +1,13 @@
|
|||
Based on idea/code from Sven Vermeulen of Gentoo.
|
||||
|
||||
Run in nightly crontab to update packages and precompile them to binary
|
||||
ebuilds to save time on install.
|
||||
|
||||
To use them in emerge use parameter `-k`, e.g. like `emerge -DNvuak --with-bdeps=yes world`
|
||||
|
||||
Stuff that makes no sense is exluded like modules and virtual packages.
|
||||
|
||||
|
||||
Requires
|
||||
- bash
|
||||
- logger
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
#!/bin/sh
|
||||
# VERSION=2018-01-28.2
|
||||
# TODO: Register failed packes to /var/eos/precompile.failed
|
||||
# and skip on rerun
|
||||
#
|
||||
|
||||
|
||||
# script based on idea of
|
||||
# sven vermeulen http://blog.siphos.be/2013/04/gentoo-protip-using-buildpkgonly/
|
||||
|
||||
echo "Start w/ eix-sync" | logger -t precompile
|
||||
eix-sync -q
|
||||
|
||||
|
||||
|
||||
LIST=$(mktemp);
|
||||
|
||||
#emerge -puDN --with-bdeps=y --color=n --columns --quiet=y world | grep "^.*[a-z][a-z][a-z]-.*/[a-z0-9].*" | awk '{print $2}' > ${LIST};
|
||||
|
||||
# New: Skip already compiled packages, by excluding result starting with [binary
|
||||
# New: Include --binpkg-respect-use=y, should be default in this case, but just to be sure.
|
||||
# New: Set PORTAGE_ELOG_SYSTEM-env-var so we won't get per-package-mails from ebuild on systems having sending mails enabled in make.conf
|
||||
PORTAGE_ELOG_SYSTEM="save" emerge -puDNk --with-bdeps=y --changed-deps=y --binpkg-respect-use=y --color=n --quiet=y world | grep "^\[ebuild " | sed -nr 's/^\[.+\]\ ([^\ ]+)(\ .*|$)/\1/p' > ${LIST};
|
||||
|
||||
for PACKAGE in $(cat ${LIST});
|
||||
do
|
||||
skip=0
|
||||
if [ -f /etc/eos/precompile.exclude ]; then
|
||||
for i in `cat /etc/eos/precompile.exclude | grep -v "^#"`; do
|
||||
if [ "`echo ${PACKAGE} | grep "^${i}" | wc -l`" == "1" ]; then
|
||||
skip=1
|
||||
break;
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if [ "$skip" == "1" ]; then
|
||||
echo "Skipping ${PACKAGE} due to /etc/eos/precompile.exclude"
|
||||
echo "Skipping ${PACKAGE} due to /etc/eos/precompile.exclude" | logger -t precompile
|
||||
else
|
||||
printf "Building binary package for ${PACKAGE}... "
|
||||
emerge -1uN --quiet-build --quiet=y --changed-deps=y --buildpkgonly =${PACKAGE};
|
||||
if [[ $? -eq 0 ]];
|
||||
then
|
||||
echo "ok";
|
||||
echo "OK: ${PACKAGE} " | logger -t precompile
|
||||
else
|
||||
echo "failed";
|
||||
echo "FAILED: ${PACKAGE} " | logger -t precompile
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Cleaning distfiles + packages" | logger -t precompile
|
||||
eclean packages
|
||||
eclean distfiles
|
||||
rm $LIST
|
||||
|
||||
echo "Ending" | logger -t precompile
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
|
||||
## kernbuild_w_zfs
|
||||
|
||||
Builds an prepares a kernel together with an initramfs.
|
||||
|
||||
Includes ZFS-modules. Also builds a shiftfs-module (for LXD, not for use with overlayfs!)
|
||||
|
||||
Requires:
|
||||
- genkernel
|
||||
- linux-source
|
||||
|
||||
Parameters:
|
||||
- Suffix for your kernel e.g. turing1 (adds -turing1 to final kernel version instead of x86_64)
|
||||
|
||||
Howto:
|
||||
- emerge gentoo-source
|
||||
- check link /usr/src/linux to new source is OK
|
||||
- make menuconfig
|
||||
- Run script
|
||||
- In boot check existances of new kernels
|
||||
- Add to bootloader
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
#!/bin/sh
|
||||
|
||||
|
||||
LOCALVERSION="-x86_64"
|
||||
|
||||
|
||||
if [ "$1" != "" ]; then
|
||||
LOCALVERSION="-eo${1}"
|
||||
fi
|
||||
|
||||
|
||||
echo "Going after kernel with localversion ${LOCALVERSION}"
|
||||
|
||||
sleep 2
|
||||
|
||||
PARAM="--no-clean --no-save-config --no-clean --mountboot \
|
||||
--no-lvm \
|
||||
--busybox \
|
||||
--mdadm \
|
||||
--no-iscsi \
|
||||
--e2fsprogs \
|
||||
--disklabel \
|
||||
--hyperv \
|
||||
--virtio \
|
||||
--zfs \
|
||||
--install \
|
||||
--microcode \
|
||||
--kernel-localversion=${LOCALVERSION}
|
||||
"
|
||||
|
||||
genkernel $PARAM all || exit 1
|
||||
emerge @module-rebuild || exit 1
|
||||
genkernel $PARAM initramfs || exit 1
|
||||
|
||||
########### ShiftFS
|
||||
|
||||
|
||||
echo "Now rebuilding shiftfs"
|
||||
|
||||
S=`dirname $0`
|
||||
T="/usr/src/shiftfs"
|
||||
mkdir -p $T
|
||||
|
||||
echo "LOCALVERSION=${LOCALVERSION}" > $T/Makefile
|
||||
|
||||
cat >>$T/Makefile <<'EOF'
|
||||
|
||||
modname := shiftfs
|
||||
obj-m := $(modname).o
|
||||
|
||||
KVERSION := $(shell readlink /usr/src/linux | tr -d '/' | cut -b 7- )
|
||||
KDIR := /lib/modules/$(KVERSION)$(LOCALVERSION)
|
||||
PWD := "$$(pwd)"
|
||||
|
||||
ifdef DEBUG
|
||||
CFLAGS_$(obj-m) := -DDEBUG
|
||||
endif
|
||||
|
||||
EXTRA_CFLAGS := -DSHIFTFS_MAGIC=0x6a656a62
|
||||
|
||||
default:
|
||||
$(MAKE) -C $(KDIR)/build M=$(PWD) EXTRA_CFLAGS="${EXTRA_CFLAGS}" modules
|
||||
|
||||
clean:
|
||||
$(MAKE) O=$(PWD) -C $(KDIR)/build M=$(PWD) clean
|
||||
|
||||
load:
|
||||
-rmmod $(modname)
|
||||
insmod $(modname).ko
|
||||
|
||||
install:
|
||||
install -m 0755 -o root -g root -d $(KDIR)/extra/fs
|
||||
install -m 0755 -o root -g root $(modname).ko $(KDIR)/extra/fs/
|
||||
depmod -a $(KVERSION)$(LOCALVERSION)
|
||||
|
||||
uninstall:
|
||||
rm $(KDIR)/extra/fs/$(modname).ko
|
||||
depmod -a $(KVERSION)$(LOCALVERSION)
|
||||
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
#cp ${S}/Makefile.shiftfs $T/Makefile || exit 1
|
||||
mv -f $T/shiftfs.c $T/shiftfs.c.bak 2> /dev/null
|
||||
wget -O $T/shiftfs.c https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/focal/plain/fs/shiftfs.c
|
||||
make -C $T clean && make -C $T && make -C $T install || exit 1
|
||||
|
||||
echo Complete with success
|
||||
Loading…
Reference in New Issue