[arch-commits] Commit in grub/trunk (PKGBUILD install-grub)

Ronald van Haren ronald at archlinux.org
Wed Aug 3 18:23:56 UTC 2011


    Date: Wednesday, August 3, 2011 @ 14:23:55
  Author: ronald
Revision: 134407

compile fixes; handle new naming scheme in install-grub script

Modified:
  grub/trunk/PKGBUILD
  grub/trunk/install-grub

--------------+
 PKGBUILD     |   62 +++++++-----
 install-grub |  285 ++++++++++++++++++++++++++++++---------------------------
 2 files changed, 189 insertions(+), 158 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-08-03 16:57:15 UTC (rev 134406)
+++ PKGBUILD	2011-08-03 18:23:55 UTC (rev 134407)
@@ -3,7 +3,7 @@
 
 pkgname=grub
 pkgver=0.97
-pkgrel=17
+pkgrel=18
 pkgdesc="A GNU multiboot boot loader"
 arch=('i686' 'x86_64')
 license=('GPL')
@@ -20,20 +20,22 @@
         more-raid.patch
         intelmac.patch
         grub-inode-size.patch
-	ext4.patch)
+	ext4.patch
+	grub-0.97-ldflags-objcopy-remove-build-id.patch)
 backup=('boot/grub/menu.lst')
 install=grub.install
-md5sums=('cd3f3eb54446be6003156158d51f4884'
-         'a2098dc41fc3cb13e53179de2979d088'
-         '3182c4ae4963a16930bc772bba89dacf'
-         'eb9d69c46af3a0667c1f651817d7f075'
-         'ccd2d757e79e3a03dc19ede7391ed328'
-         '826fdbf446067f9861baf9f6a69a4583'
-         '49f6d4bcced0bc8bbcff273f3254bbfa'
-         'f41f702014a064918d7afc6fc23baa6e'
-         '175dc6b9f4ab94e8056c3afb3e34460a'
-         '69c648d2b8d0965df70a74014424f31c'
-         '39e0f9a05b7e04aceb24fc7bc4893e3d')
+sha1sums=('2580626c4579bd99336d3af4482c346c95dac4fb'
+          '734fa37ebe1657bf1f8f74ee4866953ff96f2604'
+          '5479f098c71817ac86d0059cf1c77ca169a6fd93'
+          '157b81dbad3576536b08642242accfa1aeb093a9'
+          'adbb4685c98797ffb4dc83561ec75698991dddbd'
+          'f2e0dff29a7c8a45e90aa07298a1b2a9a9d29afc'
+          'c5e2c94ed0e759590b9eb38c9d979f075d19d7c0'
+          '45fe668a3779664fb292591f426976b6c784d6c8'
+          '066d7ab1ae442f88e94c9e4f1867ac6682965d06'
+          '0436aa6fa0b6f768289172f983a3f4b69384629e'
+          'a36f34e51efed540f1ddafd78e9c9f6d83e4c8d4'
+          '61c4b58d2eaa3c1561d8e9d8fc41341ce8882869')
 
 build() {
   cd $srcdir/$pkgname-$pkgver
@@ -43,26 +45,38 @@
   DESTARCH="x86_64"
   # optimizations break the build -- disable them
   # adding special devices to grub, patches are from fedora
-  patch -Np1 -i ../special-devices.patch || return 1
-  patch -Np1 -i ../i2o.patch || return 1
-  patch -Np1 -i ../more-raid.patch || return 1
-  patch -Np1 -i ../intelmac.patch || return 1
+  patch -Np1 -i ../special-devices.patch
+  patch -Np1 -i ../i2o.patch
+  patch -Np1 -i ../more-raid.patch
+  patch -Np1 -i ../intelmac.patch
   # Add support for bigger inode size to e2fs_stage1_5
-  patch -Np1 -i ../grub-inode-size.patch || return 1
+  patch -Np1 -i ../grub-inode-size.patch
   # Add ext4 support
   # http://www.mail-archive.com/bug-grub@gnu.org/msg11458.html
-  patch -Np1 -i ../ext4.patch || return 1
+  patch -Np1 -i ../ext4.patch
+  # binutils fix
+  patch -Np1 -i ../grub-0.97-ldflags-objcopy-remove-build-id.patch
 
+  sed -e'/^AC_PROG_CC/ a\AM_PROG_CC_C_O\ ' -i "${srcdir}/${pkgname}-${pkgver}/configure.ac"
+  sed -e'/^AC_PROG_CC/ a\AM_PROG_AS\ ' -i "${srcdir}/${pkgname}-${pkgver}/configure.ac"
+
+  ## recreate ./configure script with the required changes in LDFLAGS and objcopy
+  aclocal
+  autoconf
+  autoreconf
+  automake
+
   #arch64 fixes for static build
-  if [ "$CARCH" = "x86_64" ]; then
+  if [ "$CARCH" = "x86_64" ]; then  ## correcting problems for new wersion of autotools
+
     echo "this package has to be built on i686, won't compile on x86_64"
     sleep 5
   else
     if [ "$DESTARCH" = "x86_64" ]; then
       # patch from gentoo for fixing a segfault
-      patch -Np1 -i ../040_all_grub-0.96-nxstack.patch || return 1
+      patch -Np1 -i ../040_all_grub-0.96-nxstack.patch
       # patch from frugalware to make it boot when more than 2GB ram installed
-      patch -Np1 -i ../05-grub-0.97-initrdaddr.diff || return 1
+      patch -Np1 -i ../05-grub-0.97-initrdaddr.diff
       CFLAGS="-static" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \
                            --mandir=/usr/share/man --infodir=/usr/share/info
     else
@@ -71,8 +85,8 @@
     fi
   fi
 
-  CFLAGS= make || return 1
-  make DESTDIR=$pkgdir install || return 1
+  CFLAGS= make
+  make DESTDIR=$pkgdir install
   install -D -m644 ../menu.lst $pkgdir/boot/grub/menu.lst
   install -D -m755 ../install-grub $pkgdir/sbin/install-grub
 

Modified: install-grub
===================================================================
--- install-grub	2011-08-03 16:57:15 UTC (rev 134406)
+++ install-grub	2011-08-03 18:23:55 UTC (rev 134407)
@@ -12,8 +12,8 @@
 #
 # Then start up the 'grub' shell and run something like the following:
 #
-#    grub> root(hd0,0)
-#    grub> setup(hd0)
+#    grub> root (hd0,0)
+#    grub> setup (hd0)
 #
 # The "root" line should point to the partition your kernel is located on,
 # /boot if you have a separate boot partition, otherwise your root (/).
@@ -24,164 +24,181 @@
 #
 
 usage() {
-	echo "usage: install-grub <install_device> [boot_device]"
-	echo
-	echo "where <install_device> is the device where Grub will be installed"
-	echo "and [boot_device] is the partition that contains the /boot"
-	echo "directory (auto-detected if omitted)"
-	echo
-	echo "examples: install-grub /dev/hda"
-	echo "          install-grub /dev/hda /dev/hda1"
-	echo
-	exit 0
+  echo "usage: install-grub <install_device> [boot_device]"
+  echo
+  echo "where <install_device> is the device where Grub will be installed"
+  echo "and [boot_device] is the partition that contains the /boot"
+  echo "directory (auto-detected if omitted)"
+  echo
+  echo "examples: install-grub /dev/hda"
+  echo "          install-grub /dev/hda /dev/hda1"
+  echo
+  exit 0
 }
 
 ## new install-grub, code was taken from setup script
-ROOTDEV=$1
-PART_ROOT=$2
-VMLINUZ=vmlinuz26
+ROOTDEV=${1}
+PART_ROOT=${2}
 
-if [ "$ROOTDEV" = "" ]; then
-	usage
+if [ "${ROOTDEV}" = "" ]; then
+  usage
 fi
-if [ "$PART_ROOT" = "" ]; then
-	PART_ROOT=$(mount | grep "on /boot type" | cut -d' ' -f 1)
+if [ "${PART_ROOT}" = "" ]; then
+  PART_ROOT=$(mount | grep "on /boot type" | cut -d' ' -f 1)
 fi
 if [ "$PART_ROOT" = "" ]; then
-	PART_ROOT=$(mount | grep "on / type" | cut -d' ' -f 1)
+  PART_ROOT=$(mount | grep "on / type" | cut -d' ' -f 1)
 fi
-if [ "$PART_ROOT" = "" ]; then
-	echo "error: could not determine BOOT_DEVICE, please specify manually" >&2
-	exit 1
+if [ "${PART_ROOT}" = "" ]; then
+  echo "error: could not determine BOOT_DEVICE, please specify manually" >&2
+  exit 1
 fi
 
 
 get_grub_map() {
-	[ -e /tmp/dev.map ]  && rm /tmp/dev.map	
-	/sbin/grub --no-floppy --device-map /tmp/dev.map >/tmp/grub.log 2>&1 <<EOF
+  [ -e /tmp/dev.map ]  && rm /tmp/dev.map	
+  /sbin/grub --no-floppy --device-map /tmp/dev.map >/tmp/grub.log 2>&1 <<EOF
 quit
 EOF
 }
 
 mapdev() {
-	partition_flag=0
-	device_found=0
-	devs=$(cat /tmp/dev.map | grep -v fd | sed 's/ *\t/ /' | sed ':a;$!N;$!ba;s/\n/ /g')
-	linuxdevice=$(echo $1 | cut -b1-8)
-	if [ "$(echo $1 | egrep '[0-9]$')" ]; then
-		# /dev/hdXY
-		pnum=$(echo $1 | cut -b9-)
-		pnum=$(($pnum-1))
-		partition_flag=1
-	fi
-	for  dev in $devs
-	do
-	    if [ "(" = $(echo $dev | cut -b1) ]; then
-		grubdevice="$dev"
-	    else
-		if [ "$dev" = "$linuxdevice" ]; then
-			device_found=1
-			break   
-		fi
-	   fi
-	done	
-	if [ "$device_found" = "1" ]; then
-		if [ "$partition_flag" = "0" ]; then
-			echo "$grubdevice"
-		else
-			grubdevice_stringlen=${#grubdevice}
-			let grubdevice_stringlen--
-			grubdevice=$(echo $grubdevice | cut -b1-$grubdevice_stringlen)
-			echo "$grubdevice,$pnum)"
-		fi
-	else
-		echo " DEVICE NOT FOUND"
-	fi
+  partition_flag=0
+  device_found=0
+  devs=$(cat /tmp/dev.map | grep -v fd | sed 's/ *\t/ /' | sed ':a;$!N;$!ba;s/\n/ /g')
+  linuxdevice=$(echo $1 | cut -b1-8)
+  if [ "$(echo ${1} | egrep '[0-9]$')" ]; then
+    # /dev/hdXY
+    pnum=$(echo ${1} | cut -b9-)
+    pnum=$((${pnum}-1))
+    partition_flag=1
+  fi
+  for  dev in ${devs}; do
+    if [ "(" = $(echo ${dev} | cut -b1) ]; then
+      grubdevice="${dev}"
+    else
+      if [ "${dev}" = "${linuxdevice}" ]; then
+	device_found=1
+	break   
+      fi
+    fi
+  done	
+  if [ "${device_found}" = "1" ]; then
+    if [ "${partition_flag}" = "0" ]; then
+      echo "${grubdevice}"
+    else
+      grubdevice_stringlen=${#grubdevice}
+      let grubdevice_stringlen--
+      grubdevice=$(echo $grubdevice | cut -b1-$grubdevice_stringlen)
+      echo "${grubdevice},${pnum})"
+    fi
+  else
+    echo " DEVICE NOT FOUND"
+  fi
 }
 
 dogrub() {
-	get_grub_map	
-	if [ ! -f /boot/grub/menu.lst ]; then
-		echo "Error: Couldn't find /boot/grub/menu.lst.  Is GRUB installed?"
-		exit 1
+  get_grub_map	
+  if [ ! -f /boot/grub/menu.lst ]; then
+    echo "Error: Couldn't find /boot/grub/menu.lst.  Is GRUB installed?"
+    exit 1
+  fi
+  # try to auto-configure GRUB...
+  if [ "${PART_ROOT}" != "" -a "$S_GRUB" != "1" ]; then
+    grubdev=$(mapdev ${PART_ROOT})
+    # look for a separately-mounted /boot partition
+    bootdev=$(mount | grep /boot | cut -d' ' -f 1)
+    if [ "${grubdev}" != "" -o "${bootdev}" != "" ]; then
+      cp /boot/grub/menu.lst /tmp/.menu.lst
+      # remove the default entries by truncating the file at our little tag (#-*)
+      head -n $(cat /tmp/.menu.lst | grep -n '#-\*' | cut -d: -f 1) /tmp/.menu.lst >/boot/grub/menu.lst
+      rm -f /tmp/.menu.lst
+
+      for kernel in /boot/vmlinuz-linux* /boot/vmlinuz26*; do
+	if [ ${kernel} == "/boot/vmlinuz-linux*" ] || [ ${kernel} == "/boot/vmlinuz26*" ] ; then
+	  echo > /dev/null
+	else
+	  VMLINUZ=$( echo ${kernel} | cut -c 7- )
+
+	  if [ "$( echo ${VMLINUZ} | cut -c -13 )" = vmlinuz-linux ]; then # new naming scheme for linux > 3.0
+	    extension=$( echo ${VMLINUZ} | cut -c 14- )
+	    INITRAMFS_BASENAME = initramfs-linux${extension}
+	  else # old naming scheme for lts kernel
+	    extension=$( echo ${VMLINUZ} | cut -c 10- ) 
+	    INITRAMFS_BASENAME=kernel26${extension}
+	  fi
+
+	  echo "" >>/boot/grub/menu.lst
+	  echo "# (0) Arch Linux" >>/boot/grub/menu.lst
+	  echo "title  Arch Linux" >>/boot/grub/menu.lst
+	  subdir=
+	  if [ "${bootdev}" != "" ]; then
+	    grubdev=$(mapdev ${bootdev})
+	  else
+	    subdir="/boot"
+	  fi
+	  echo "root   ${grubdev}" >>/boot/grub/menu.lst
+	  echo "kernel ${subdir}/${VMLINUZ} root=${PART_ROOT} ro" >>/boot/grub/menu.lst
+	  echo "initrd ${subdir}/${INITRAMFS_BASENAME}.img" >>/boot/grub/menu.lst
+	  echo "" >>/boot/grub/menu.lst
+		
+	  # adding fallback/full image
+	  echo "# (1) Arch Linux" >>/boot/grub/menu.lst
+	  echo "title  Arch Linux Fallback" >>/boot/grub/menu.lst
+	  echo "root   ${grubdev}" >>/boot/grub/menu.lst
+	  echo "kernel ${subdir}/${VMLINUZ} root=${PART_ROOT} ro" >>/boot/grub/menu.lst
+	  echo "initrd ${subdir}/${INITRAMFS_BASENAME}-fallback.img" >>/boot/grub/menu.lst
+	  echo "" >>/boot/grub/menu.lst
 	fi
-	# try to auto-configure GRUB...
-	if [ "$PART_ROOT" != "" -a "$S_GRUB" != "1" ]; then
-		grubdev=$(mapdev $PART_ROOT)
-		# look for a separately-mounted /boot partition
-		bootdev=$(mount | grep /boot | cut -d' ' -f 1)
-		if [ "$grubdev" != "" -o "$bootdev" != "" ]; then
-			cp /boot/grub/menu.lst /tmp/.menu.lst
-			# remove the default entries by truncating the file at our little tag (#-*)
-			head -n $(cat /tmp/.menu.lst | grep -n '#-\*' | cut -d: -f 1) /tmp/.menu.lst >/boot/grub/menu.lst
-			rm -f /tmp/.menu.lst
-			echo "" >>/boot/grub/menu.lst
-			echo "# (0) Arch Linux" >>/boot/grub/menu.lst
-			echo "title  Arch Linux" >>/boot/grub/menu.lst
-			subdir=
-			if [ "$bootdev" != "" ]; then
-				grubdev=$(mapdev $bootdev)
-			else
-				subdir="/boot"
-			fi
-			echo "root   $grubdev" >>/boot/grub/menu.lst
-			echo "kernel $subdir/$VMLINUZ root=$PART_ROOT ro" >>/boot/grub/menu.lst
-			if [ "$VMLINUZ" = "vmlinuz26" ]; then
-				echo "initrd $subdir/kernel26.img" >>/boot/grub/menu.lst
-			fi
-			echo "" >>/boot/grub/menu.lst
-			# adding fallback/full image
-			echo "# (1) Arch Linux" >>/boot/grub/menu.lst
-			echo "title  Arch Linux Fallback" >>/boot/grub/menu.lst
-			echo "root   $grubdev" >>/boot/grub/menu.lst
-			echo "kernel $subdir/$VMLINUZ root=$PART_ROOT ro" >>/boot/grub/menu.lst
-			if [ "$VMLINUZ" = "vmlinuz26" ]; then
-				echo "initrd $subdir/kernel26-fallback.img" >>/boot/grub/menu.lst
-			fi
-			echo "" >>/boot/grub/menu.lst
-		fi
-	fi
+      done
+    fi
+  fi
 
-	echo "Installing the GRUB bootloader..."
-	cp -a /usr/lib/grub/i386-pc/* /boot/grub/
-	sync
-	# freeze xfs filesystems to enable grub installation on xfs filesystems
-	if [ -x /usr/sbin/xfs_freeze ]; then
-		/usr/sbin/xfs_freeze -f /boot > /dev/null 2>&1
-		/usr/sbin/xfs_freeze -f / > /dev/null 2>&1
-	fi
-	# look for a separately-mounted /boot partition
-	bootpart=$(mount | grep /boot | cut -d' ' -f 1)
-	if [ "$bootpart" = "" ]; then
-			bootpart=$PART_ROOT
-	fi
-	bootpart=$(mapdev $bootpart)
-	bootdev=$(mapdev $ROOTDEV)
-	if [ "$bootpart" = "" ]; then
-		echo "Error: Missing/Invalid root device: $bootpart"
-		exit 1
-	fi
-	/sbin/grub --no-floppy --batch >/tmp/grub.log 2>&1 <<EOF
-root $bootpart
-setup $bootdev
+  echo "Installing the GRUB bootloader..."
+  cp -a /usr/lib/grub/i386-pc/* /boot/grub/
+  sync
+
+  # freeze xfs filesystems to enable grub installation on xfs filesystems
+  if [ -x /usr/sbin/xfs_freeze ]; then
+    /usr/sbin/xfs_freeze -f /boot > /dev/null 2>&1
+    /usr/sbin/xfs_freeze -f / > /dev/null 2>&1
+  fi
+
+  # look for a separately-mounted /boot partition
+  bootpart=$(mount | grep /boot | cut -d' ' -f 1)
+  if [ "${bootpart}" = "" ]; then
+    bootpart=${PART_ROOT}
+  fi
+  bootpart=$(mapdev ${bootpart})
+  bootdev=$(mapdev ${ROOTDEV})
+  if [ "${bootpart}" = "" ]; then
+    echo "Error: Missing/Invalid root device: ${bootpart}"
+    exit 1
+  fi
+
+  echo ${bootpart}
+  echo ${bootdev}
+  /sbin/grub --no-floppy --batch >/tmp/grub.log 2>&1 <<EOF
+root ${bootpart}
+setup ${bootdev}
 quit
 EOF
-cat /tmp/grub.log
-	# unfreeze xfs filesystems
-	if [ -x /usr/sbin/xfs_freeze ]; then
-		/usr/sbin/xfs_freeze -u /boot > /dev/null 2>&1
-		/usr/sbin/xfs_freeze -u / > /dev/null 2>&1
-	fi
+  cat /tmp/grub.log
 
-	if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then
-		echo "Error installing GRUB. (see /tmp/grub.log for output)"
-		exit 1
-	fi
-	echo "GRUB was successfully installed."
+  # unfreeze xfs filesystems
+  if [ -x /usr/sbin/xfs_freeze ]; then
+    /usr/sbin/xfs_freeze -u /boot > /dev/null 2>&1
+    /usr/sbin/xfs_freeze -u / > /dev/null 2>&1
+  fi
+  if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then
+    echo "Error installing GRUB. (see /tmp/grub.log for output)"
+    exit 1
+  fi
+  echo "GRUB was successfully installed."
 
-rm -f /tmp/grub.log
+  rm -f /tmp/grub.log
 
-exit 0
+  exit 0
 }
 
-dogrub
\ No newline at end of file
+dogrub




More information about the arch-commits mailing list