Re: live-build is utterly determined to pull in jh7100-bootloader-recovery?
On Mon, 14 Oct 2024 19:40:19 -0500
Aaron Rainbolt <arraybolt3@gmail.com> wrote:
> I'm currently banging my head against a proverbial wall trying to
> figure out why there are some packages being incorrectly pulled into
> an ISO I'm building. I assume all of the packages are being pulled in
> for a similar reason, so right now I just want to focus on one
> particular package. My live-build config is located
> at https://github.com/ArrayBolt3/kicksecure-live-build. I am using my
> own fork of live-build, however none of the code modifications I have
> made or integrated from other sources seem likely to cause this
> particular issue.
>
> Some notable parts of my config:
>
> * I'm using aptitude rather than apt for installing packages for
> debugging purposes.
> * I explicitly set '--apt-recommends false' in auto/config.
> * I have a list of packages at
> https://github.com/ArrayBolt3/kicksecure-live-build/blob/master/config/apt/preferences
> that I do NOT want to be installed on the live ISO.
>
> For some reason, when I build my ISO without the
> config/apt/preferences file in place, a package called
> jh7100-bootloader-recovery is installed. According to `apt-cache
> show`, this is apparently something intended to help fix some
> particular StarFive RISC-V SOC. I don't have any use for this
> package, and did not put anything in my config that would result in
> it being installed. If I `cd` into the root of the config tree and do
> a `grep -Ri jh7100`, I see nothing except a mention of it in my
> README (which is there because I was listing it as "I don't know how
> this got installed, figure out how to remove it) and a mention of it
> in config/apt/preferences, which is attempting to prevent it from
> being installed. I similarly see no mention of it in my live-build
> source tree. Running `apt-cache rdepends jh7100-bootloader-recovery`
> shows me that this package has no reverse dependencies, recommends,
> or suggests. Thus as far as I can tell, this should not be getting
> installed.
>
> Looking at the build log, it looks like the package is being installed
> explicitly for some reason, not that it's being pulled in by anything
> in particular:
>
> put logs here
Ahem. As you can probably tell, I meant to put some logs here, and then
sent this email too early. Here are the logs I meant to put here:
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...
Building tag database...
Package live-tools is not installed, so it will not be removed
Package live-boot is not installed, so it will not be removed
Package live-tools is not installed, so it will not be removed
Package live-boot is not installed, so it will not be removed
The following NEW packages will be installed:
jh7100-bootloader-recovery
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.4 kB of archives. After unpacking 36.9 kB will be used.
Writing extended state information...
Get: 1 http://deb.debian.org/debian bookworm/main amd64 jh7100-bootloader-recovery all 0~2021.07.14~git2b268a1c-2 [12.4 kB]
Fetched 12.4 kB in 0s (81.2 kB/s)
Selecting previously unselected package jh7100-bootloader-recovery.
(Reading database ... 58189 files and directories currently installed.)
Preparing to unpack .../jh7100-bootloader-recovery_0~2021.07.14~git2b268a1c-2_all.deb ...
Unpacking jh7100-bootloader-recovery (0~2021.07.14~git2b268a1c-2) ...
Setting up jh7100-bootloader-recovery (0~2021.07.14~git2b268a1c-2) ...
This is about 3690 lines down a 15913 line long log file from a
successful ISO build. Apologies for any typos, I typed this across
rather than copy-pasting.
> In an attempt to prevent the package from being installed, I tried to
> blacklist it with config/apt/preferences as documented at the end of
> https://live-team.pages.debian.net/live-manual/html/live-manual/customizing-package-installation.en.html.
> Not only did this fail to fix the problem, it actually made it worse.
> Now the build fails entirely, with the following error shown at the
> end of the log:
>
> Reading package lists...
> Building dependency tree...
> Reading state information...
> Reading extended state information...
> Initializing package states...
> Writing extended state information...
> Building tag database...
> Unable to apply some actions, aborting
> Package live-tools is not installed, so it will not be removed
> Package live-boot is not installed, so it will not be removed
> No candidate version found for jh7100-bootloader-recovery
> xargs: aptitude: exited with status 255; aborting
> E: An unexpected failure occurred, exiting...
> P: Begin unmounting filesystems...
> P: Saving caches...
> Reading package lists...
> Building dependency tree...
> Reading state information...
>
> (The messages about live-tools and live-boot are benign and are a
> result of me blacklisting them via a hacky patch to the live-build
> code, which I intend on getting rid of and replacing with a proper
> blacklisting mechanism.)
>
> At this point, I have two questions:
>
> * How in creation is this package getting pulled in, in the first
> place?
> * Failing that, or should it be infeasible to fix the root issue, how
> do I blacklist the package to get it to go away? Nothing depends on
> it, not in Debian's repos and not in any of the other repos I'm
> pulling in, and I don't need it.
>
> This is not the only package being incorrectly pulled in - the rest of
> the packages listed in the config/apt/preferences file are also ones
> that I want rid of, and while some of them seem like they're probably
> the result of the build system being "too helpful", at least two of
> the others (ixo-usb-jtag and hdmi2usb-fx2-firmware) are similarly
> unnecessary, unreferenced anywhere I can find, and aren't being pulled
> in due to dependencies. Is there some file that live-build pulls in
> over the network at build time that has a list of packages to install
> that might be the culprit here?
Reply to: