Major infrastructure changes, part 2.

* Moved helpers, common and triggers dirs into xbps-src, where
  they belong.
* Renamed the templates dir to srcpkgs, it was so redundant before.
* Make it possible to add subpkgs with no restriction in names, for
  example udev now has a subpkgs called "libgudev". Previously
  subpkgs were named "${sourcepkg}-${pkgname}".
* xbps-src: changed to look for template files in current directory.
  That means that most arguments from the targets have been removed.
* xbps-src: added a reinstall target, to remove + install.
* xbps-src: do not overwrite binpkgs by default, skip them.

And more that I forgot because it's a mega-commit that I've been
working for some days already...

--HG--
extra : convert_revision : 0f466878584d1e6895d2a234f07ea1b2d1e61b3e
This commit is contained in:
Juan RP
2009-11-22 08:31:44 +01:00
parent 3c58e3ad40
commit 85cc462e1d
1305 changed files with 719 additions and 654 deletions

View File

@@ -0,0 +1,202 @@
#!/bin/sh
trap "echo; error_out $?" INT QUIT
[ "$(id -u)" -ne 0 ] && echo "root perms are required." && exit 1
ISOLINUX_ARGS="-b isolinux/isolinux.bin -c isolinux/boot.cat"
ISOLINUX_ARGS="$ISOLINUX_ARGS -boot-load-size 4 -no-emul-boot"
ISOLINUX_ARGS="$ISOLINUX_ARGS -boot-info-table"
CONFIG_FILE="$HOME/.xbps-mklive.conf"
#
# The following vars are overwritten by the config file.
#
PACKAGE_REPO="/storage/xbps/packages"
OUTPUT_FILE="$HOME/xbps-live-$(uname -m).iso"
ISO_VOLUME="XBPS GNU/Linux Live"
SYSLINUX_DATADIR="/usr/share/syslinux"
SPLASH_IMAGE=$HOME/splash.rle
if [ -f $CONFIG_FILE ]; then
. $CONFIG_FILE
fi
if [ -z "$PACKAGE_LIST" ]; then
PACKAGE_LIST="xbps-base-system xbps-casper"
else
PACKAGE_LIST="xbps-base-system xbps-casper $PACKAGE_LIST"
fi
BUILD_TMPDIR=$(mktemp -d /tmp/xbps-image.XXXXXXXX) || exit 1
BUILD_TMPDIR=$(readlink -f $BUILD_TMPDIR)
TEMP_ROOTFS=$(readlink -f $BUILD_TMPDIR)
TEMP_ROOTFS="$TEMP_ROOTFS/casper/rootfs"
ISOLINUX_DIR=$(readlink -f $BUILD_TMPDIR)
ISOLINUX_DIR="$ISOLINUX_DIR/isolinux"
info_msg()
{
printf "\033[1m$@\n\033[m"
}
error_out()
{
[ -d $TEMP_ROOTFS/sys ] && umount -f $TEMP_ROOTFS/sys 2>&1 >/dev/null
[ -d $TEMP_ROOTFS/proc ] && umount -f $TEMP_ROOTFS/proc 2>&1 >/dev/null
[ -d $TEMP_ROOTFS/dev ] && umount -f $TEMP_ROOTFS/dev 2>&1 >/dev/null
[ "$1" -ne 0 ] && echo "ERROR: stage mentioned above returned $1!"
info_msg "Cleaning up $BUILD_TMPDIR..."
rm -rf $BUILD_TMPDIR
exit 1
}
write_etc_motd()
{
cat >> "$TEMP_ROOTFS/etc/motd" <<_EOF
Welcome to the XBPS GNU/Linux Live system, you have been autologged in.
This user has full sudo(8) permissions without any password, be careful
executing commands through sudo(8).
To play with package management use the 'xbps-bin' and 'xbps-repo'
utilities. Please note that working with remote repositories hasn't been
implemented yet. Visit https://launchpad.net/xbps for news about
new releases and other documentation.
---- Juan RP <xtraeme@gmail.com> ----
_EOF
}
write_default_isolinux_conf()
{
local kver="$1"
cat >> "$ISOLINUX_DIR/isolinux.cfg" << _EOF
DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 600
ONTIMEOUT c
MENU BACKGROUND $(basename $SPLASH_IMAGE)
MENU VSHIFT 5
MENU ROWS 20
MENU TABMSGROW 10
MENU TABMSG Press ENTER to boot or TAB to edit a menu entry
MENU AUTOBOOT BIOS default device boot in # second{,s}...
MENU TIMEOUTROW 12
MENU COLOR title * #FF5255FF *
MENU COLOR border * #00000000 #00000000 none
MENU COLOR sel * #ffffffff #FF5255FF *
LABEL linux
MENU LABEL Boot XBPS GNU/Linux ${kver}
KERNEL /casper/vmlinuz
INITRD /casper/initrd.gz
APPEND boot=casper keymap=es locale=es_ES
LABEL linuxtoram
MENU LABEL Boot XBPS GNU/Linux ${kver} (toram)
KERNEL /casper/vmlinuz
INITRD /casper/initrd.gz
APPEND boot=casper toram keymap=es locale=es_ES
LABEL c
MENU LABEL Boot first HD found by the BIOS
LOCALBOOT 0x80
_EOF
}
[ -z "$PACKAGE_LIST" ] && error_out
[ -z "$OUTPUT_FILE" ] && error_out
[ -z "$ISO_VOLUME" ] && error_out
[ -z "$PACKAGE_REPO" ] && error_out
[ ! -d "$TEMP_ROOTFS/var/db/xbps" ] && mkdir -p "$TEMP_ROOTFS/var/db/xbps"
for _repo_ in ${PACKAGE_REPO}; do
info_msg "Adding ${_repo_} package repository..."
xbps-repo.static -r $TEMP_ROOTFS add ${_repo_}
[ $? -ne 0 ] && error_out $?
done
if [ ! -f $SYSLINUX_DATADIR/isolinux.bin -o \
! -f $SYSLINUX_DATADIR/vesamenu.c32 ]; then
echo "Missing required isolinux files in $SYSLINUX_DATADIR!"
error_out
fi
[ ! -d "$ISOLINUX_DIR" ] && mkdir -p "$ISOLINUX_DIR"
if [ ! -f "$ISOLINUX_DIR/isolinux.bin" ]; then
cp -f $SYSLINUX_DATADIR/isolinux.bin "$ISOLINUX_DIR"
fi
if [ ! -f "$ISOLINUX_DIR/isolinux.cfg" ]; then
kernel_ver=$(xbps-repo.static -r $TEMP_ROOTFS show kernel|grep Version|awk '{print $2}')
if [ -z "$kernel_ver" ]; then
echo "Missing 'kernel' pkg in repository pool (xbps-repo)!"
error_out
fi
write_default_isolinux_conf ${kernel_ver}
fi
[ ! -f "$SPLASH_IMAGE" ] && echo "Cannot find splash image!" && error_out 1
cp -f $SPLASH_IMAGE "$ISOLINUX_DIR"
if [ ! -f "$ISOLINUX_DIR/vesamenu.c32" ]; then
cp -f $SYSLINUX_DATADIR/vesamenu.c32 "$ISOLINUX_DIR"
fi
for _pkg_ in ${PACKAGE_LIST}; do
info_msg "Installing ${_pkg_} package..."
xbps-bin.static -r $TEMP_ROOTFS -f install ${_pkg_}
[ $? -ne 0 ] && error_out $?
done
xbps-bin.static -r $TEMP_ROOTFS list > $BUILD_TMPDIR/packages.txt
info_msg "Creating /etc/motd..."
write_etc_motd
info_msg "Rebuilding and copying initramfs..."
chroot $TEMP_ROOTFS xbps-bin -f reconfigure kernel
[ $? -ne 0 ] && error_out $?
cp -f "$TEMP_ROOTFS/boot/initrd.img-${kernel_ver}" \
"$BUILD_TMPDIR/casper/initrd.gz" || error_out $?
mkdir -p $TEMP_ROOTFS/cow
info_msg "Copying kernel binary..."
cp -f "$TEMP_ROOTFS/boot/vmlinuz-${kernel_ver}" \
"$BUILD_TMPDIR/casper/vmlinuz" || error_out $?
info_msg "Building squashed root filesystem..."
mksquashfs "$TEMP_ROOTFS" "$BUILD_TMPDIR/casper/filesystem.squashfs" \
-root-becomes / && \
chmod 444 "$BUILD_TMPDIR/casper/filesystem.squashfs"
[ $? -ne 0 ] && error_out $?
info_msg "Removing temporary rootfs directory..."
rm -rf "$TEMP_ROOTFS" || error_out $?
info_msg "Creating sha256 checksums..."
cd $BUILD_TMPDIR
for f in $(find . -type f -print); do
[ "$f" = "./sha256.txt" ] && continue
printf "${f#.}\t$(xbps-digest $f)\n" >> $BUILD_TMPDIR/sha256.txt
done
info_msg "Building ISO image..."
mkisofs -J -r -V "$ISO_VOLUME" -b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-boot-info-table -o "$OUTPUT_FILE" "$BUILD_TMPDIR"
[ $? -ne 0 ] && error_out $?
info_msg "Removing temporary build directory..."
rm -rf "$BUILD_TMPDIR" || error_out $?
info_msg "Created $(readlink -f $OUTPUT_FILE) successfully."
exit 0

View File

@@ -0,0 +1,22 @@
# Template file for 'xbps-mklive'
pkgname=xbps-mklive
version=0.1.1
build_style=custom-install
short_desc="XBPS Live image maker"
maintainer="Juan RP <xtraeme@gmail.com>"
checksum=b31983b27630b3ef99f68bd8382851a7963542c944b625bdbfd2f2ff301a02d3
long_desc="
$pkgname is a simple shell script to build a bootable live image,
with xbps binary packages."
noextract=yes
noarch=yes
Add_dependency full cdrtools
Add_dependency full squashfs-tools
Add_dependency full syslinux
do_install()
{
install -D -m755 ${FILESDIR}/xbps-mklive.sh \
${DESTDIR}/usr/sbin/xbps-mklive
}