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

Bug#732696: os-prober: Fails to detect new package-management Haiku builds



Hi David,

and thanks for your report.

David Given <dg@cowlark.com> (2013-12-20):
> Haiku's new package management builds have changed the way the kernel
> and boot sector is laid out, and os-prober's detection routines no
> longer detect such Haiku partitions.
> 
> Currently package management builds are only available in nightly
> releases but there should be an official release Real Soon Now, and
> package management should become the norm. It'd be nice to get this
> fixed before this happens.

I'm not familiar with haiku, is that out yet?

> I enclose a patch which should fix this (to be applied to /usr/lib/os-
> probes/mounted/83haiku).

Did that get tested against said release if it's published?

> --- /usr/lib/os-probes/mounted/83haiku	2012-08-22 19:21:32.000000000 +0100
> +++ /tmp/83haiku	2013-12-20 12:17:29.143209425 +0000
> @@ -13,18 +13,34 @@
>  	*) debug "$partition is not a BeFS partition: exiting"; exit 1 ;;
>  esac
>  
> -if head -c 512 "$partition" | grep -qs "system.haiku_loader"; then
> +if head -c 512 "$partition" | grep -qs 'system.*haiku_loader'; then
>  	debug "Stage 1 bootloader found"
>  else
>  	debug "Stage 1 bootloader not found: exiting"
>  	exit 1
>  fi
>  
> -if system="$(item_in_dir "system" "$mpoint")" &&
> +system="$(item_in_dir "system" "$mpoint")"
> +packages="$(item_in_dir "packages" "$mpoint/$system")"
> +found=
> +if [ "$system" != "" ] &&
>  	item_in_dir -q "haiku_loader" "$mpoint/$system" &&
>  	(item_in_dir -q "kernel_x86" "$mpoint/$system" ||
>  		item_in_dir -q "kernel_x86_64" "$mpoint/$system")

Do we need to hardcode checking both version? Looking at item_in_dir's
implementation, the pattern is passed to grep, so we could use
'kernel_.*' instead?

>  then
> +	found=1
> +fi
> +
> +if [ "$found" = "" ] && [ "$packages" != "" ] &&
> +	item_in_dir -q "haiku_loader\-.*" "$mpoint/$system/$packages" &&
> +	(item_in_dir -q "haiku_x86\-.*" "$mpoint/$system/$packages" ||
> +		item_in_dir -q "haiku_x86_64\-.*" "$mpoint/$system/$packages")

Ditto.

> +then
> +	found=1
> +fi
> +
> +if [ "$found" != "" ]
> +then
>  	debug "Stage 2 bootloader and kernel found"
>  	label="$(count_next_label Haiku)"
>  	result "$partition:Haiku:$label:chain"
> 

Mraw,
KiBi.

Attachment: signature.asc
Description: Digital signature


Reply to: