Commit Graph

1224 Commits

Author SHA1 Message Date
Ryan Finnie 5c838744d6
binary_syslinux: Do not modify grub theme.txt if grub/splash.png exists
If grub/splash.png exists, assume the configuration editor intends
to have a grub-specific splash.png, and do not modify theme.txt.
But if syslinux has the only known splash.png, use it for both
syslinux and grub.

(This allows for a hybrid image where the grub side can have e.g. a
16:9 1920x1080 splash.png which gets grub is capable of automatically
scaling, while the syslinux side has a 640x480 splash.png which
effectively must be this fixed size.)
2021-01-30 21:58:09 -08:00
Raphaël Hertzog 4111df43bd
Fix a small info message 2021-01-21 08:28:38 +01:00
Roland Clobus d145b0c9ec Bugfix: do not create /dev/lock and /dev/lock-frontend 2021-01-17 14:06:11 +00:00
Marcel Partap fdcdab72dc binary_rootfs stage: slightly lower mksquashfs nice levels (19 -> 17)
.. so its priority is low, but above BOINC grid computing (19).
2021-01-16 17:14:17 +01:00
Marcel Partap 0252065950 binary_rootfs stage: disable mksquashfs progress bar only in quiet mode 2021-01-16 17:09:52 +01:00
Marcel Partap 63c1a5997d binary_rootfs stage: give custom MKSQUASHFS_OPTIONS precedence
courtesy of
sed -i -r '/MKSQUASHFS_OPTIONS/ s/"(\$\{.*\}) ([^"]+)"/"\2 \1"/' scripts/build/binary_rootfs
2021-01-15 22:32:14 +01:00
Roland Clobus 91e1e65c87 Apply SOURCE_DATE_EPOCH to newly generated files and create a log 2021-01-15 09:22:29 +00:00
Roland Clobus 5636820be5 Set timestamp in embedded files of the installer 2021-01-15 09:22:29 +00:00
Roland Clobus 15fab34ea2 Set timestamp embedded in EFI files 2021-01-15 09:22:29 +00:00
Roland Clobus 2b0559fd11 Use SOURCE_DATE_EPOCH for the partition-id of /boot/grub/efi.img 2021-01-15 09:22:29 +00:00
Roland Clobus 760684b1e2 Use SOURCE_DATE_EPOCH for the partition-id of /efi.img 2021-01-15 09:22:29 +00:00
Roland Clobus 9712c46cff Use SOURCE_DATE_EPOCH for 'now' in .disk/info 2021-01-15 09:22:29 +00:00
Roland Clobus 0202f17cad Use SOURCE_DATE_EPOCH for 'now' in the boot splash image 2021-01-15 09:22:29 +00:00
Roland Clobus 9d24051669 SOURCE_DATE_EPOCH is always set 2021-01-15 09:22:29 +00:00
Jan Kot 954d9c7c31 bootstrap_debootstrap: change debootstrap path to /usr/sbin/debootstrap
As we're checking if debootstrap is present on the host machine, we should look for it in /usr/sbin and not ./bin
2021-01-13 12:39:07 +00:00
Raphaël Hertzog f13273368a
Don't fail if one of the package lists expands to an empty list
When a package lists contains only packages protected by a test
that doesn't match for the current run, then Expand_package_list
outputs nothing and the following "grep -v" fails because it
has not filtered anything. Avoid this by protecting the "grep -v"
call with "|| true".
2021-01-12 14:48:27 +01:00
Roland Clobus 831da55c01
Preserve timestamps 2021-01-11 14:34:11 +01:00
Roland Clobus 037e93fe37 Preserve timestamps 2021-01-01 16:51:02 +00:00
Roland Clobus 3f7dd00fcb Delay resolving the timestamp for the ISO volume to the moment the ISO-image is created 2020-12-13 20:33:24 +00:00
Roland Clobus edb12253eb
Bugfix: use minutes instead of month in the time of the modification date field 2020-12-13 11:11:55 +01:00
Roland Clobus 4eae44d13d
Bugfix: use minutes instead of month in the time of the modification date field 2020-12-07 08:36:42 +01:00
Matthijs Kooijman e772dfd6d2 binary_iso: Execute mkdir binary/.disk before writing to it
Before commit 9f3e5fe8d (Fix the way the .disk/mkisofs file is created)
all these commands (`mkdir`, write to `binary/.disk/mkisofs` and
`xorriso`) were in the same `binary.sh` script. Since that commit, the
write was extracted, to prevent issues with quoting, but the related
mkdir was left in `binary.sh`. This means that the write is now executed
first, and the `mkdir` only afterwards, making the `mkdir` quite pointless.

In practice, this did not break becaue binary_disk also does the same
`mkdir` and runs before `binary_iso`, but if one runs commands manually
and skips `binary_iso`, then this does break.

Even though this is not really a supported usecase, just move the mkdir
outside of `binary.sh`, so it runs *before* the write again as intended.
2020-11-24 12:24:14 +01:00
Roland Clobus 6e4e10f071 Bugfix: LB_DERIVATIVE was used the wrong way around 2020-11-18 17:11:59 +01:00
Thore Sommer 7360d50fa6 Added the option to include files before and after package installation
Moved includes.chroot to includes.chroot_after_packages and added
includes.chroot_before_packages. includes.chroot does still work as before.

We also now use rsync for copying files if it is installed.
This improves runtime and space consumption for large includes.

Gbp-Dch: Short
Closes: #927128
2020-10-27 15:07:11 +00:00
Thore Sommer 7b19209aae Option for using systemd-nspawn instead of chroot for hooks.
Installation of flatpaks doesn't work with normal chroots.
This patch enables support for using systemd-nspawn in hooks.

Gbp-Dch: Short
Closes: #965953
2020-10-12 18:26:16 +00:00
Thore Sommer 9a26533a06 Add option to change compression algorithm and level for squashfs. 2020-10-12 13:35:16 +00:00
Marcel Partap ce39f3e507 For 32bit UEFI secure boot, the package name is grub-efi-ia32-signed
avoids spitting out warning
> [2020-06-07 22:30:32] lb binary_grub-efi
> P: Begin preparing Grub based EFI support...
> Reading package lists...
> Building dependency tree...
> Reading state information...
> Package grub-efi-amd64-signed is not available, but is referred to by another package.
> This may mean that the package is missing, has been obsoleted, or
> is only available from another source
>
> E: Package 'grub-efi-amd64-signed' has no installation candidate
> W: UEFI Secure Boot disabled due to missing signed Grub/Shim.
2020-10-12 12:41:58 +00:00
Roland Clobus 9536a37af0 The sed -e ‘d’ commands with ‘#’ will not work, a slash is needed, fix for 7ffd2288d9 (2015-01-15) and 578dbee516 (2015-01-29) 2020-10-08 19:21:33 +00:00
Victor Gavro 990dcf2eed chroot_apt: fixed adding Pin-Priority (broken in da1fab11)
Fixes !201
2020-09-14 11:02:51 +02:00
Ryan Finnie 6b0cc5529b Enable arm64 for binary_grub_cfg
Without modification, this produces a usable config for arm64
grub-efi iso-hybrid. Tested on qemu arm64 + serial console.
2020-06-01 08:02:28 +00:00
Ryan Finnie 13cf0e9ebe
Add initial ppc64el support
Note that this does not include grub-ieee1275 support so the images will
not be bootable, but it's a first step and produces ISOs without error.
2020-05-30 14:11:45 -07:00
Lyndon Brown 263f84fe80 clean: handle all common options
support for options like `--debug` was missing.

Gbp-Dch: Short
2020-05-15 19:36:51 +00:00
Lyndon Brown fca1283147 clean: refactor
this simplifies things to avoid the messy recursion.

it is also a necessary step to implementing handling of common options
like --debug. we need to process all options to decide how to approach
doing things (e.g. with debug messages to be output or not) before actually
performing any work, in order for options like --debug to be reacted to
properly.

also, as things were, options like `--debug` were not being passed along
in the recursive executions, while now that is no longer an issue.

the order of file/folder deletions for `--all`|`--purge`|`--remove`
actions is slightly changed here, but i don't see any issue with that and
it's cleaner to not preserve that.

Gbp-Dch: Short
2020-05-15 19:36:51 +00:00
Lyndon Brown 180207d711 Revert "config: catch and report unexpected arguments"
This reverts commit 665372c19d.

the kali test failed due to their script using a hack of passing along a
custom option after an early terminator through to their auto/config file.
the change implemented here was valuable, but i'll have to look into
revising things to work with what Kali is doing.

Gbp-Dch: Ignore
2020-05-05 21:57:57 +01:00
Lyndon Brown 18eefdd6f3 s/Remove_package/Remove_packages/
it removes one or more, so should be plural for clarity

Gbp-Dch: Short
2020-05-05 19:55:28 +01:00
Lyndon Brown 919a464b64 s/Install_package/Install_packages/
it installs one or more, so should be plural for clarity

Gbp-Dch: Short
2020-05-05 19:55:28 +01:00
Lyndon Brown f27d13de08 make temporary state of installed tools recoverable
some scripts temporarily install packages to accomplish some work before
then removing them. the list of packages installed is kept in memory in a
variable.

a weakness of this design is that if a failure occurs or the user cancels,
and then following this the user re-runs `lb build`, letting it try to
pick up and recover from where it left off, that list of packages that had
been installed is lost, resulting in those packages that were installed
then being a permanent part of the chroot.

here we fix this weakness by backing up the list to a file, which is always
read from on removal. thus in a recovery situation, any packages still
installed from a situation like that just described, will be removed upon
the next use of `Remove_package()`.

this is not perfect, since we are having to wait for opportunistic
execution of the remove function. we need to find a suitable place for the
`Cleanup_temp_packages()` function to be used.

 - doing so in `Init_config_data()` would not be suitable because we don't
   hold the lock when that's run, even if we ignored the hijacking of that
   function for taking such action...
 - doing it in `Exit()` doesn't seem a good fit either.
 - putting it explicitly in every build script just seems a little messy...

perhaps a local exit trap like for removing the lock...?

note that `binary_rootfs` skips running the remove function after installing
tooling, since it just throws the wrapper chroot away, which then leaves the
file around with stale data for the next remove instance to pick up, which
then does not actually remove it because it's not installed. this is not
ideal either... perhaps the optimisation should be removed from that script?

Gbp-Dch: Short
2020-05-05 19:43:15 +01:00
Lyndon Brown 665372c19d config: catch and report unexpected arguments
after handling arguments, catch and report any remaining "non-option"
arguments.

for instance users could make the basic mistake of using
`lb config --bootloaders syslinux grub-efi`, i.e. failing to quote the
multiple bootloaders (i actually encountered a user doing this who swore
that "it just worked"). catching and reporting such mistakes could be
valuable to users.

previous behaviour:
```
$ lb config --bootloaders syslinux grub-efi
P: Updating config tree for a debian/buster/amd64 system
P: Symlinking hooks...
```

new behaviour:
```
$ lb config --bootloaders syslinux grub-efi
[2020-05-05 18:56:07] lb config --bootloaders syslinux grub-efi
E: Unexpected argument found: grub-efi
```

Gbp-Dch: Short
2020-05-05 19:02:35 +01:00
Lyndon Brown d68290058e debootstrap: fix wrong param for Check_package call
debootstrap must obviously exist in the host. we thus must pass 'host'
not 'chroot' such that a warning about needing to install it on your host
system is output, rather than it being added to a list of packages to be
installed, which never occurs in this script.

Gbp-Dch: Ignore
2020-05-05 00:52:13 +01:00
Lyndon Brown a542d52141 rename binary_loopback_cfg to binary_grub_cfg
when loopback support was introduced, it initially duplicated the code
for generating a grub2 config, before the duplicated code was removed from
the grub-pc script, effectively thus moving grub config generation to the
loopback feature script.

grub-efi support was added after this.

this results in a misleading filename, since the `binary_loopback_cfg`
script is essential for use of grub-pc|grub-efi, and actually only has a
single line of code on top that's needed for adding actual loopback
support on top. (when grub-pc and grub-efi are not used, the entire script
is still needed for loopback support to work).

so here we rename it to make better sense, and correct/clarify bits of
documentation.

Gbp-Dch: Short
2020-05-04 22:15:09 +01:00
Lyndon Brown 3a523c3fc1 binary_iso: properly handle multiple bootloaders
with LB_BOOTLOADER_BIOS and LB_BOOTLOADER_EFI introduced, we can simplify
and correct things here.

previously it was possible for more than one of each type to be added.

Gbp-Dch: Short
2020-05-04 21:48:03 +01:00
Lyndon Brown d7883ec32b config: improve BIOS/EFI bootloader selection handling
the design choice from when EFI support was introduced was to change
`--bootloader` to `--bootloaders`, with users specifying their selection
of BIOS and EFI bootloaders together. at this time there were not even any
decent validation checks being performed, and invalid combinations could
cause some chaos.

since then proper validation was put in place, including checking that
only a single instance of each of BIOS and EFI bootloaders exists in the
selection.

here we tweak things such that we stick with the same option, but we split
the selection up such that we store the BIOS and EFI selections separately
within the saved config file, and offer it up to scripts to help simplify
those scripts.

we must however retain support for splitting from the combined option,
both because we still use it in the combined option, and for backwards
compatibility with older saved configs.

Gbp-Dch: Short
2020-05-04 21:40:13 +01:00
Lyndon Brown 3f840aeeba fully validate BIOS/EFI bootloader combinations
thus far, config bootloader validation only did the basic check that each
bootloader specified was a known and supported bootloader, it did not check
combinations.

it now checks combinations, and strips out the previous "bootloader role"
stuff.

the no-bootloaders warning is duplicated, covering two slightly different
situations (empty string, and whitespace string). this is anticipated to
be just temporary, with this just being the first step in better handling
bootloader selections.

Gbp-Dch: Short
2020-05-04 21:40:13 +01:00
Lyndon Brown f3a818da9a binary_hdd: remove incorrect local scope
the "FIXME" function wrapper is just to temporarily disable the code.

Gbp-Dch: Ignore
2020-05-04 21:40:08 +01:00
Lyndon Brown 976be9f44b indentation fix
Gbp-Dch: Ignore
2020-05-04 17:40:23 +01:00
Lyndon Brown 7ad96bd644 fix redundant and incorrect source selections
"grub" presumably was what is now called "grub-legacy"

removed both because there is already a proper piece of code adding
bootloader packages.

Gbp-Dch: Ignore
2020-05-04 17:38:53 +01:00
Lyndon Brown cb2d9a0fe4 fix another overlooked "grub" -> "grub-legacy" instance
Gbp-Dch: Ignore
2020-05-04 17:37:14 +01:00
Lyndon Brown 943c8fb5fe extend config validation to all build components
while `lb build` ran the config validation check, spotting invalid configs
and stopping with an error, the major build stages if executed directly did
not, nor did the component stages.

here we move execution of the validation function into the common init
function, with an exported variable used to indicate that validation has
been performed. thus validation is performed no matter what part of the
build system you execute, but only once.

Gbp-Dch: Short
2020-05-04 13:26:19 +01:00
Lyndon Brown 7acd1f488f get rid of a couple of useless variables
Gbp-Dch: Ignore
2020-05-04 13:21:12 +01:00
Lyndon Brown 76459a39cd clean: tweak init
`Init_config_data` is more suited to build scripts than here. note that
it's not used in `config` either. this deliberately does not pass along
arguments to it because `Arguments()` can only handle the basic common
options, not the `clean` set. this is somewhat confusing and causes a
pointless execution of `getopt`. furthermore the function is expanding
slightly further beyond it's original scope, with yet more change coming
that's unsuitable for `clean`, so it makes sense to avoid using the
function here just for the couple of function calls needed.

validation of the config is disabled, as it is not performed currently.
it is not clear if it should be enabled or not for `clean`. it may be
useful to not validate, if we wish to be able to provide users with an
option to be able to delete the config.

Gbp-Dch: Ignore
2020-05-04 13:14:57 +01:00