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 <hert...@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