Date: Tuesday, February 25, 2014 @ 12:32:23
  Author: tpowa
Revision: 206398

upgpkg: grub 1:2.02.beta2-2

fix 10_archlinux to reduce issues with entries

Modified:
  grub/trunk/10_archlinux
  grub/trunk/PKGBUILD

--------------+
 10_archlinux |   49 +++++++++++++++++++++++++++++++++----------------
 PKGBUILD     |   11 ++++++++++-
 2 files changed, 43 insertions(+), 17 deletions(-)

Modified: 10_archlinux
===================================================================
--- 10_archlinux        2014-02-25 11:30:45 UTC (rev 206397)
+++ 10_archlinux        2014-02-25 11:32:23 UTC (rev 206398)
@@ -2,7 +2,8 @@
 
 ##
 ## grub-mkconfig helper script specific to Arch Linux
-## Contributed by "Keshav Padram Amburay" <the ddoott ridikulus ddoott rat 
aatt geemmayil ddoott ccoomm>
+## Contributed by "Keshav Amburay" <the ddoott ridikulus ddoott rat aatt 
geemmayil ddoott ccoomm>
+## Updated on 08 February 2014
 ##
 ## Script based on do_grub_config() function in Arch Linux Archboot ISO 
Installer/Setup script 
 ## Some parts taken from /etc/grub.d/10_linux script shipped by GRUB(2) 
upstream
@@ -64,20 +65,29 @@
 [[ "${grub_file}" != "" ]] && _FUNC_GRUB_FILE_PRESENT
 
 BOOT_PART_FS_UUID="$(${grub_probe} --target="fs_uuid" "/boot" 2>/dev/null)"
-BOOT_PART_HINTS_STRING="$(${grub_probe} --target="hints_string" "/boot" 
2>/dev/null)"
+BOOT_PART_HINTS_STRING="$(${grub_probe} --target="hints_string" "/boot" 
2>/dev/null || true)"
 BOOT_PART_FS="$(${grub_probe} --target="fs" "/boot" 2>/dev/null)"
 
-ROOT_PART_FS_UUID="$(${grub_probe} --target="fs_uuid" "/" 2>/dev/null)"
-ROOT_PART_HINTS_STRING="$(${grub_probe} --target="hints_string" "/" 
2>/dev/null)"
-ROOT_PART_FS="$(${grub_probe} --target="fs" "/" 2>/dev/null)"
+ROOT_PART_GRUB_DEVICE="$(${grub_probe} --target=device / || true)"
+ROOT_PART_FS="$(${grub_probe} --device ${ROOT_PART_GRUB_DEVICE} --target=fs 2> 
/dev/null || echo "unknown")"
 
-if [[ "${ROOT_PART_FS_UUID}" == "${BOOT_PART_FS_UUID}" ]]; then
-    SUBDIR="/boot"
-else
-    SUBDIR=""
-fi
-
 if [[ "${GRUB_LINUX_ROOT_DEVICE}" == "" ]]; then
+    
+    case "${ROOT_PART_FS}" in
+        btrfs)
+            rootsubvol="$(make_system_path_relative_to_its_root /)"
+            rootsubvol="${rootsubvol#/}"
+            if [[ "${rootsubvol}" != "" ]]; then
+                GRUB_LINUX_ROOT_DEVICE="subvol=${rootsubvol}"
+            fi
+        ;;
+        zfs)
+            rpool="$(${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 
2>/dev/null || true)"
+            bootfs="$(make_system_path_relative_to_its_root / | sed -e 
"s,@$,,")"
+            GRUB_LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
+        ;;
+    esac
+    
     if [[ "${GRUB_DEVICE_UUID}" == "" ]] || \
        [[ "${GRUB_DISABLE_LINUX_UUID}" == "true" ]] || \
        [[ ! -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ]] || \
@@ -94,6 +104,10 @@
     
     echo "Found linux image: ${_KERNEL_}" >&2
     
+    basename="$(basename "${_KERNEL_}")"
+    dirname="$(dirname "${_KERNEL_}")"
+    REAL_DIR="$(make_system_path_relative_to_its_root "${dirname}")"
+  
     _KERNEL_FILE_="$(echo ${_KERNEL_} | sed 's,/boot/,,g')"
     _KERNEL_PKG_="pkg-$(echo ${_KERNEL_FILE_} | sed 's,vmlinuz-,,g')"
     
@@ -106,6 +120,7 @@
 cat << EOF
 
 menuentry "Arch Linux ${_KERNEL_PKG_} kernel" ${CLASS} {
+    $(save_default_entry)
     if [ x\$feature_all_video_module = xy ]; then
         insmod all_video
     fi
@@ -117,9 +132,9 @@
         search --no-floppy --fs-uuid  --set=root ${BOOT_PART_FS_UUID}
     fi
     echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel ...'
-    linux ${SUBDIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw 
${GRUB_LINUX_PARAMS}
+    linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw 
${GRUB_LINUX_PARAMS}
     echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel initramfs ...'
-    initrd ${SUBDIR}/${_INITRAMFS_}
+    initrd ${REAL_DIR}/${_INITRAMFS_}
 }
 
 EOF
@@ -134,6 +149,7 @@
 cat << EOF
 
 menuentry "Arch Linux ${_KERNEL_PKG_} kernel (fallback initramfs)" ${CLASS} {
+    $(save_default_entry)
     if [ x\$feature_all_video_module = xy ]; then
         insmod all_video
     fi
@@ -145,9 +161,9 @@
         search --no-floppy --fs-uuid  --set=root ${BOOT_PART_FS_UUID}
     fi
     echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel ...'
-    linux ${SUBDIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw 
${GRUB_LINUX_PARAMS}
+    linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw 
${GRUB_LINUX_PARAMS}
     echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel fallback initramfs ...'
-    initrd ${SUBDIR}/${_INITRAMFS_FALLBACK_}
+    initrd ${REAL_DIR}/${_INITRAMFS_FALLBACK_}
 }
 
 EOF
@@ -157,6 +173,7 @@
 cat << EOF
 
 menuentry "Arch Linux ${_KERNEL_PKG_} kernel (no initramfs)" ${CLASS} {
+    $(save_default_entry)
     if [ x\$feature_all_video_module = xy ]; then
         insmod all_video
     fi
@@ -168,7 +185,7 @@
         search --no-floppy --fs-uuid  --set=root ${BOOT_PART_FS_UUID}
     fi
     echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel ...'
-    linux ${SUBDIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw 
${GRUB_LINUX_PARAMS}
+    linux ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw 
${GRUB_LINUX_PARAMS}
 }
 
 EOF

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2014-02-25 11:30:45 UTC (rev 206397)
+++ PKGBUILD    2014-02-25 11:32:23 UTC (rev 206398)
@@ -13,7 +13,7 @@
 pkgname="grub"
 pkgdesc="GNU GRand Unified Bootloader (2)"
 pkgver=2.02.beta2
-pkgrel=1
+pkgrel=2
 epoch="1"
 url="https://www.gnu.org/software/grub/";
 arch=('x86_64' 'i686')
@@ -272,3 +272,12 @@
        _package_grub-common_and_bios
        
 }
+md5sums=('SKIP'
+         'SKIP'
+         '728b7439ac733a7c0d56049adec364c7'
+         'SKIP'
+         'e506ae4a9f9f7d1b765febfa84e10d48'
+         'dcf3e0b47119b0bb06ce987c8f030ffa'
+         'be55eabc102f2c60b38ed35c203686d6'
+         'a03ffd56324520393bf574cefccb893d'
+         'c8b9511586d57d6f2524ae7898397a46')

Reply via email to