diff options
Diffstat (limited to 'main/mkinitfs/0001-init-generate-the-repositories-after-relocation.patch')
-rw-r--r-- | main/mkinitfs/0001-init-generate-the-repositories-after-relocation.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/main/mkinitfs/0001-init-generate-the-repositories-after-relocation.patch b/main/mkinitfs/0001-init-generate-the-repositories-after-relocation.patch new file mode 100644 index 0000000000..b5c14d8dd6 --- /dev/null +++ b/main/mkinitfs/0001-init-generate-the-repositories-after-relocation.patch @@ -0,0 +1,71 @@ +From eb96e64b989ae7cf39cd0cdf849104ac1d5ee655 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Wed, 4 Jan 2012 14:53:52 +0000 +Subject: [PATCH] init: generate the repositories after relocation + +This solves problem when UUID is used in syslinux.cfg when booting +USB devices. The generated repositories had /media/$UUID/apks but +the /media/$UUID got relocated to /media/usb +--- + initramfs-init.in | 24 +++++++++++++++--------- + 1 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/initramfs-init.in b/initramfs-init.in +index 98916d7..226872b 100755 +--- a/initramfs-init.in ++++ b/initramfs-init.in +@@ -269,6 +269,12 @@ find_fs_type() { + done + } + ++# find the dirs under ALPINE_MNT that are boot repositories ++find_boot_repositories() { ++ find $ALPINE_MNT -name .boot_repository -type f -maxdepth 3 \ ++ | sed 's:/.boot_repository$::' ++} ++ + # gotta start from somewhere :) + echo "Alpine Init $VERSION" + +@@ -429,8 +435,7 @@ retry_mount -o ro $mount_opts $ALPINE_DEV $ALPINE_MNT >/dev/null 2>&1 + eend $? + + # generate apk repositories file +-echo "$(find $ALPINE_MNT -name .boot_repository -type f -maxdepth 3 \ +- | sed 's:/.boot_repository$::')" > /tmp/repositories ++find_boot_repositories > /tmp/repositories + + # early console? + if [ "$SINGLEMODE" = "yes" ]; then +@@ -526,13 +531,9 @@ mkdir -p $sysroot/etc/apk/keys/ + cp -a /etc/apk/keys $sysroot/etc/apk + + # generate repo opts for apk +-if [ ! -f $sysroot/etc/apk/repositories ]; then +- mv /tmp/repositories $sysroot/etc/apk/ +-else +- for i in $(cat /tmp/repositories); do +- repo_opt="$repo_opt --repository $i" +- done +-fi ++for i in $(cat /tmp/repositories); do ++ repo_opt="$repo_opt --repository $i" ++done + + # install new root + ebegin "Installing packages to root filesystem" +@@ -565,6 +566,11 @@ if [ -z "$has_fstab" ] && [ -f "$sysroot"/etc/fstab ]; then + relocate_alpine_mnt "$sysroot"/etc/fstab + fi + ++# generate repositories if none exists. this needs to be done after relocation ++if ! [ -f "$sysroot"/etc/apk/repositories ]; then ++ find_boot_repositories > "$sysroot"/etc/apk/repositories ++fi ++ + # respect mount options in fstab for ALPINE_MNT (e.g if user wants rw) + opts=$(awk "\$2 == \"$ALPINE_MNT\" {print \$4}" $sysroot/etc/fstab) + if [ -n "$opts" ]; then +-- +1.7.8.2 + |