[Pkg-raspi-maintainers] Bug#887062: Bug#887062: raspi3-firmware: postinst fails, makes bad assumption about existence of /boot/firmware/

Michael Stapelberg stapelberg at debian.org
Thu Jan 18 22:08:18 UTC 2018


Thanks for the additional details.

Given that the package’s only purpose is to populate /boot/firmware, may I
ask why it’s being installed in your builds at all? I’d like to understand
the use-case before adding code to deal with it.

On Mon, Jan 15, 2018 at 12:42 PM, Raphael Hertzog <hertzog at debian.org>
wrote:

> On Sat, 13 Jan 2018, Michael Stapelberg wrote:
> > The only change that seems in any way related to me is
> > https://anonscm.debian.org/cgit/pkg-raspi/raspi3-
> firmware.git/commit/?id=c977f0210ab5c577b9d5296e4e4391225a7f85ca
>
> This change is not the cause of the regression. The package fails at
> initial installation, not on upgrade. I have added "set -x" and I get
> this:
>
> # dpkg --configure raspi3-firmware
> Setting up raspi3-firmware (1.20171201-2) ...
> + ischroot
> + basename /usr/lib/raspi3-firmware/bootcode.bin
> + file=bootcode.bin
> + cp /usr/lib/raspi3-firmware/bootcode.bin /boot/firmware/bootcode.bin
> cp: cannot create regular file '/boot/firmware/bootcode.bin': No such file
> or directory
> dpkg: error processing package raspi3-firmware (--configure):
>  installed raspi3-firmware package post-installation script subprocess
> returned error exit status 1
> Errors were encountered while processing:
>  raspi3-firmware
>
> I wonder how it worked before. Maybe the package shipped /boot/firmware or
> another package supplied that directory and it now fails because no
> package is creating it.
>
> In any case, you should probably not attempt to copy the files there if the
> directory is not existing.
>
> Something like this:
>
> --- /tmp/postinst       2018-01-15 11:35:43.223477268 +0000
> +++ /var/lib/dpkg/info/raspi3-firmware.postinst 2018-01-15
> 11:40:31.818918341 +0000
> @@ -13,19 +13,23 @@
>        fi
>      fi
>
> -    for file in /usr/lib/raspi3-firmware/*
> -    do
> -      file=$( basename "$file" )
> -      cp "/usr/lib/raspi3-firmware/$file" "/boot/firmware/$file"
> -      # sync might fail when running under qemu, which, as of version 2.7,
> -      # has not implemented the syncfs syscall.
> -      sync -f "/boot/firmware/$file" || true
> -    done
> +    if [ -d /boot/firmware ]; then
> +       for file in /usr/lib/raspi3-firmware/*
> +       do
> +         file=$( basename "$file" )
> +         cp "/usr/lib/raspi3-firmware/$file" "/boot/firmware/$file"
> +         # sync might fail when running under qemu, which, as of version
> 2.7,
> +         # has not implemented the syncfs syscall.
> +         sync -f "/boot/firmware/$file" || true
> +       done
>
> -    # Manually trigger the kernel postinst hook when raspi3-firmware is
> first
> -    # installed (or upgraded), as the kernel package might already be
> installed
> -    # (or not upgraded) and hence the hook would not get triggered
> otherwise.
> -    DEB_MAINT_PARAMS="configure" /etc/kernel/postinst.d/raspi3-firmware
> +       # Manually trigger the kernel postinst hook when raspi3-firmware
> is first
> +       # installed (or upgraded), as the kernel package might already be
> installed
> +       # (or not upgraded) and hence the hook would not get triggered
> otherwise.
> +       DEB_MAINT_PARAMS="configure" /etc/kernel/postinst.d/raspi3-
> firmware
> +    else
> +       echo "Warning: not copying firmwares as /boot/firmware does not
> exist." >&2
> +    fi
>      ;;
>  esac
>
> Cheers,
> --
> Raphaël Hertzog ◈ Debian Developer
>
> Support Debian LTS: https://www.freexian.com/services/debian-lts.html
> Learn to master Debian: https://debian-handbook.info/get/
>



-- 
Best regards,
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-raspi-maintainers/attachments/20180118/e0a6970e/attachment-0001.html>


More information about the Pkg-raspi-maintainers mailing list