[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#753718: grub-installer: ppc64el support



Package: grub-installer
Version: 1.91
Severity: normal
Tags: patch
User: debian-powerpc@lists.debian.org
Usertags: ppc64el

Dear Maintainer,

here is a patch from Ubuntu to add support for the ppc64el architecture.
Thank you,

F.


-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: ppc64el (ppc64le)

Kernel: Linux 3.14-1-powerpc64le (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -Nru grub-installer-1.91/debian/control grub-installer-1.91/debian/control
--- grub-installer-1.91/debian/control	2013-07-13 07:09:07.000000000 +0000
+++ grub-installer-1.91/debian/control	2014-05-16 14:35:00.000000000 +0000
@@ -8,7 +8,7 @@
 Vcs-Git: git://anonscm.debian.org/d-i/grub-installer.git
 
 Package: grub-installer
-Architecture: i386 hurd-i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc mipsel
+Architecture: i386 hurd-i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc ppc64el mipsel
 XB-Subarchitecture: ${subarch}
 Provides: bootable-system
 Depends: cdebconf-udeb, kernel-installer, created-fstab, di-utils (>= 1.15), di-utils-mapdevfs, os-prober, partman-utils
diff -Nru grub-installer-1.91/debian/grub-installer.install grub-installer-1.91/debian/grub-installer.install
--- grub-installer-1.91/debian/grub-installer.install	2011-07-31 01:01:26.000000000 +0000
+++ grub-installer-1.91/debian/grub-installer.install	2014-05-16 14:39:53.000000000 +0000
@@ -3,3 +3,4 @@
 functions.sh usr/share/grub-installer
 otheros.sh usr/share/grub-installer
 ensure-active usr/lib/grub-installer
+prep-bootdev usr/lib/grub-installer
diff -Nru grub-installer-1.91/grub-installer grub-installer-1.91/grub-installer
--- grub-installer-1.91/grub-installer	2013-07-13 07:09:07.000000000 +0000
+++ grub-installer-1.91/grub-installer	2014-05-16 14:35:00.000000000 +0000
@@ -331,6 +331,9 @@
 	grub_package="grub-ieee1275"
 	experimental_arch
 	;;
+    ppc64el/*)
+	grub_package="grub-ieee1275"
+	;;
     mipsel/loongson-2f)
 	grub_package="grub-yeeloong"
 	;;
@@ -581,6 +584,10 @@
 		fi
 	fi
 	;;
+    ppc64el/*:grub-ieee1275)
+	bootdev="$(/usr/lib/grub-installer/prep-bootdev)"
+	state=3
+	;;
     *)
 	# No need for install device selection on other platforms.
 	bootdev=dummy
@@ -765,9 +772,16 @@
 			grub_install_params="$grub_install_params --force"
 		fi
 
+		case $ARCH:$grub_package in
+		    ppc64el/*:grub-ieee1275)
+			info "Wiping PReP partition $bootdev"
+			log-output -t grub-installer dd if=/dev/zero of="$bootdev" bs=512 count="$(blockdev --getsz "$bootdev")"
+			;;
+		esac
+
 		CODE=0
 		case $ARCH:$grub_package in
-		    *:grub|*:grub-pc|*:grub-efi|sparc:grub-ieee1275)
+		    *:grub|*:grub-pc|*:grub-efi|sparc:grub-ieee1275|ppc64el/*:grub-ieee1275)
 			info "Running $chroot $ROOT grub-install $grub_install_params \"$bootdev\""
 			log-output -t grub-installer $chroot $ROOT grub-install $grub_install_params "$bootdev" || CODE=$?
 			;;
@@ -780,7 +794,7 @@
 			info "grub-install ran successfully"
 		else
 			case $ARCH:$grub_package in
-			    *:grub|*:grub-pc|*:grub-efi|sparc:grub-ieee1275)
+			    *:grub|*:grub-pc|*:grub-efi|sparc:grub-ieee1275|ppc64el/*:grub-ieee1275)
 				error "Running 'grub-install $grub_install_params \"$bootdev\"' failed."
 				;;
 			    *)
diff -Nru grub-installer-1.91/Makefile grub-installer-1.91/Makefile
--- grub-installer-1.91/Makefile	2011-07-31 01:01:26.000000000 +0000
+++ grub-installer-1.91/Makefile	2014-05-16 14:39:53.000000000 +0000
@@ -1,9 +1,12 @@
 CFLAGS := -Os -g -Wall
 
-all: ensure-active
+all: ensure-active prep-bootdev
 
 ensure-active: ensure-active.c
 	$(CC) $(CFLAGS) $^ -o $@ -lparted
 
+prep-bootdev: prep-bootdev.c
+	$(CC) $(CFLAGS) $^ -o $@ -lparted
+
 clean:
-	rm -f ensure-active
+	rm -f ensure-active prep-bootdev
diff -Nru grub-installer-1.91/prep-bootdev.c grub-installer-1.91/prep-bootdev.c
--- grub-installer-1.91/prep-bootdev.c	1970-01-01 00:00:00.000000000 +0000
+++ grub-installer-1.91/prep-bootdev.c	2014-05-21 15:16:14.000000000 +0000
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <parted/parted.h>
+
+int
+main(int argc, char *argv[])
+{
+	PedDevice *dev;
+
+	ped_exception_fetch_all();
+	ped_device_probe_all();
+	for (dev = ped_device_get_next(NULL); dev;
+	     dev = ped_device_get_next(dev)) {
+		PedDisk *disk;
+		PedPartition *part;
+
+		disk = ped_disk_new(dev);
+		if (!disk)
+			continue;
+
+		for (part = ped_disk_next_partition(disk, NULL); part;
+		     part = ped_disk_next_partition(disk, part)) {
+			if (ped_partition_is_active(part) &&
+			    ped_partition_get_flag(part, PED_PARTITION_PREP)) {
+				char *path;
+
+				path = ped_partition_get_path(part);
+				if (path) {
+					printf("%s\n", path);
+					free(path);
+					return 0;
+				}
+				free(path);
+			}
+		}
+	}
+
+	return 0;
+}

Reply to: