summaryrefslogtreecommitdiff
path: root/scripts/build/binary_loopback_cfg
AgeCommit message (Collapse)Author
2020-03-17stagefiles: s/Require_stagefile/Require_stagefiles/Lyndon Brown
this function takes one or more required stage fileS _plural_, and exits if any are missing (or at least it does now after the refactor). let's rename it to make things more clear Gbp-Dch: Short
2020-03-17stagefiles: further robustify with auto filenamesLyndon Brown
as suggested by Raphaël rather than have fixed stagefile filename strings at all in the scripts, use `$(basename $0)` to use the name of the script (which is the same for almost all cases anyway, and the stage files are supposed to be almost exclusively unique per-script). we can thus simplify things by determining the filename for most use cases within the functions themselves. this does change the file used by a couple of scripts, affecting backwards compatibility of executing live-build upon an existing partially or fully completed build: - binary_grub-pc used "binary_grub" - chroot_includes used "includes.chroot" care had to be taken for the following cases: - there are some cases like bootstrap_cache, source_debian and bootstrap_debootstrap which are dealing with more than one file, and/or otherwise a filename that is not specific to the script itself exactly, or should not be based upon its name. - some cases like chroot_cache, bootstrap_cache and chroot_install-packages need to append something to the end of the name depending upon which pass/action mode the script is being executed with. - furthermore in the bootstrap_cache case one of the filenames is used within the bootstrap_debootstrap and thus needs very careful handling to be certain that a change in filename of bootstrap_cache does not break bootstrap_debootstrap. Gbp-Dch: Short
2020-03-17stagefiles: simplify & robustifyLyndon Brown
- avoid all need to pass ".build/" path in stage file names into the functions - add a helper to remove a stage file (required to complete the above properly) - avoid duplicating filenames within scripts which makes them prone to mistakes (some instances of which I've actually encountered and had to fix) Gbp-Dch: Short
2020-03-16use local scope for private function varsLyndon Brown
all vars affected have been carefully checked to be quite certain that they are definitely local where variable is assigned the return value of a function/command, the local "declaration" is deliberately done on a separate line, since `local FOO` is actually treated itself as a command rather than a declaration; will thus always cause $? to be zero, and thus if done on the same line as such an assignment can not only clobber $? but in doing so unintentionally blocks failure of a command from triggering the expected exit from having `set -e`. also, from testing, i have found that when assigning "${@}" this must be done on a separate line confusingly as otherwise an error occurs. Gbp-Dch: Short
2020-03-16bootloaders: add install with speech synthesis menu entriesjnqnfe
Following the official Debian install disks Gbp-Dch: Short
2020-03-16grub1/grub2/loopback: fix missing delimiter in menu kernel parameter listsjnqnfe
The '---' delimiter should appear before the final 'quiet' parameter (which is used by the debian installer I believe). This delimiter is added by live-build in syslinux configs, and is present in both grub2 and syslinux configs in an official debian 7.7 disc image, suggesting strongly that live-build grub/grub2 menu creation code is in the wrong here by missing it. update: this commit previously used -- as was correct at the time, and has since been updated to use --- per #775128; which was previously tackled in a separate later commit. the switch to --- was already done for syslinux (which was not missing the delimiter unlike grub) in ba6b9adeff634845a9ab7cbd5218257a7aa254ab Gbp-Dch: Short Closes: #775143
2020-03-16grub1/grub2/loopback: fix order of quiet kernel parameters in menusjnqnfe
I believe that the `quiet` parameter is meant for d-i not the kernel and thus should be given on the end after a delimiter, as done with syslinux. Here we switch the order to move it to the end. The addition of the missing delimiter will be done in a followup commit. (See #775143) Gbp-Dch: Short
2020-03-16grub2/loopback: fix misapplication of quiet kernel parameterjnqnfe
When building grub2 menu entries the quiet param (meant for d-i) was excluded from the rescue menu entries instead of expert. This is the opposite to what is done in the following: - Menu entries seen in official debian 7.7 disc images (grub2 and syslinux configs) - Menu entries created for grub (legacy) - Menu entries created for syslinux The evidence strongly suggests that the grub2 menu creation was in the wrong! (See #775143) Gbp-Dch: Short
2020-03-13fix comment typoLyndon Brown
Gbp-Dch: Ignore
2020-03-13locks: tidy lock acquisitionjnqnfe
Combine the check+create done in each script. (The original functions are still callable as before, but a new combined `Aquire_lockfile` function can be called instead, as now used). Note, a further simplification could be done in removing the passing of the lock filename in as a parameter since every use of the functions is with ".lock". The lock functions already have a fallback to ".build/lock" though. Checking the history, the fallback used to be for a system wide lock, which was then replaced with this config-tree specific one. As long as that is not used implicitly by 3rd-party hooks then surely we are free to change the fallback to ".lock" and further remove passing in a name as a param...? history: db5d2b0dcdae96e712661605e17bc9875e224f9f 0aa8289a3773fd8a3885090b72622c2f95ab099c Gbp-Dch: Short Closes: #952918
2020-03-13strip useless multi-arch separate directory stuffjnqnfe
(part of never completed side-by-side multi archi support) Several scripts make a call to a function called Check_multiarchitectures, the purpose of which is to adjust the target directory that certain 'live' and 'install' files are located in. The idea is that a script sets up 'DESTDIR', 'DESTDIR_LIVE' and 'DESTDIR_INSTALL' as appropriate and then the script appends a suitable arch dependant postfix to the directory name, depending upon the arch currently being targetted. This would allow the script to be run multiple times, each for a different architecture. This is a part of an implementation of allowing multiple architectures to sit side by side within the same live image, selectable from the bootloader menus. (As opposed to multiple architectures mixed within the same userland). This is evidently the case both from the fact that: 1) The arch specific postfix chosen in that function depends on a var called LB_CURRENT_ARCHITECTURE, which is never set. In fact going back through the git history to the introduction of the function in 0d5ff4ca7596790f853cf637e0fe225cad810a76, the var (even considering var name changes) has never been set by anything. So effectively the call to the function has been entirely redundant all this time. 2) The major build stages do not perform multiple executions of substages per arch. Thus from this perspective it seems that the support was never fully implemented. 3) If any doubt remained, there is an old branch called 'tmp-multiarch' which has a couple of commits making progress with completing support, such as implementing the above missing pieces. The above mentioned branch is 10 years old and can be considered abandoned. It is not clear whether the original author ever intended to complete and merge this; nor is it at all clear at what stage of completion it was at. At any rate, imo it is not at all particularly useful to have extra code and complexity in order to be able to cram multiple environments side by side in one image, not when CDs/DVDs and even to some extent USB pen drives are so cheap. And who really needs more than one environment so desperately on just one such medium. If this was not enough to justify removal, then there is also the fact that the support that was implemented has become completely broken over the years with scripts diverging in terms of the variable names the function modifies such that they are incompatible with it. A quick assessment of the state of this latter aspect: good: - grub-legacy uses the correct var names so is fine - memtest similarly good - installer_debian-installer looks okay questionable: - binary_linux-image uses the correct vars but might not select the right kernel and initrd files to copy (seems to copy all) bad: - grub-pc is making a redundant call, after functionality was moved to the loopback script - loopback is using the wrong vars (INITFS instead of DESTDIR + DESTDIR_INSTALL + DESTDIR_LIVE), plus is doing its own amd64+i686 thing anyway, so the function call would achieve nothing anyway. - syslinux is also using the wrong var names so would not work with it and is not even making the necessary function call. Also the install paths are fixed in the hard coded cfg files anyway so this would need addressing with placeholders and sed replacement, but then it is not entirely clear how things should work with respect to install entries and multi-arch anyway, are we having multiple copies of the installer, one for each target arch and then multiple copies of the install menus, perhaps under different submenus? So, this removes the artefacts of this never completed feature. Gbp-Dch: Short
2020-03-11amend copyright & licensing blocksLyndon Brown
Current versions of the project files are built upon versions published and licensed by Daniel Baumann, but are modified copies of those files and thus need to be marked as such per licensing requirements (afaik he did not pass along ownership / licensing rights to anyone when he left the project). We should also be careful to not be misrepresenting such modified copies as being attributed to Daniel. Adding a new copyright line referring to "The Debian Live team" should suffice for this. The authorship block in man pages has also similarly been updated. Notes: - tweaked a copy of daniel copyright lines stating 2014 instead of 2015. both of these cases were in files that i had personally introduced in some of my past merged commits that moved some code around. i don't know why they stated 2014. - binary_onie was introduced in 2018, so that has a 2018 date instead of 2016 unlike the rest. - 'efi-image' is a 3rd-party (Canonical Ltd) work that we bundle, but it has been modified by 674794a8f4d61a729d2dbd6d99385d2826138694 and 36a3ba76347ef72df1c316312ed3a26aa4b0c816 so I similarly added a debian live copyright line. - 'grub-cpmodules' is similar. it was only changed by the indentation fix of 36a3ba76347ef72df1c316312ed3a26aa4b0c816 but modification is modification, and this does help cover any possible future changes that might be made.
2020-03-10help/usage: remove pointless varsLyndon Brown
build scripts never call Help() and so the empty HELP strings are pointless. (when called with --help they call Man()). Closes: #952859 Gbp-Dch: Short
2020-03-10tidy script init (1/4) - arg and config processingjnqnfe
Partial fix for #952919 Gbp-Dch: Short
2020-03-05help/usage: fix overly complex script description handlingjnqnfe
Closes: #952887
2020-03-05bootloaders: fix ignoring LB_DEBIAN_INSTALLER_GUI in menu creationLyndon Brown
LB_DEBIAN_INSTALLER_GUI defines whether or not to provide the graphical installer. the installer_debian-installer script pays attention to it and does not download it if not wanted. the actual bootloaders however (both grub2/loopback and syslinux) ignore it, which leaves broken and unwanted menu entries. this fixes that. Gbp-Dch: Short Closes: #952890
2020-03-05simplify --debian-installer choicesjnqnfe
`false` and `none` make no sense as choices for this option. Here we replace `false` with `none`, and remove `true`. Note that `true` was treated as an alias for netinst (see the changes to source_disk and and binary_disk). For backwards compatibility we still allow `true` and `false` by converting them to `netinst` and `none` respectively, whilst printing a warning to encourage users to move to `netinst`/`none`. Gbp-Dch: Short Closes: #952864
2020-03-05fix indentationLyndon Brown
including: - spaces replaced with tabs for consistency - alignment of `;;` in some case statements changed for consistency Gbp-Dch: Short Closes: #952857
2020-03-05grub2: fix using wrong directory in certain casesjnqnfe
Update feb-2020: Both grub2 and syslinux were affected by this issue. Someone else's patch fixing syslinux only just recently got merged in 2735f3bd38d3d2f0c48ea1ce023a27943ef0ab84 but grub2 was still affected. I had made patches for both in 2015 which never got merged. This is the grub2 one. Gbp-Dch: Short Closes: #952843
2019-04-21Readd findiso parametre to loopback.cfg generation.adrian15
2017-12-21Failsafe entries rework at binary_loopback_cfgAdrian Gibanel Lopez
[hertzog@debian.org: - Fix conflicts due to renamed variables ] Signed-off-by: Raphaël Hertzog <hertzog@debian.org>
2017-12-21Fix handling of multiple kernels in binary_loopback_cfgAdrian Gibanel Lopez
Now grub.cfg shows all the kernel options. Before this patch when you had more than two kernels it only showed the auto option. Signed-off-by: Raphaël Hertzog <hertzog@debian.org>
2017-12-21Updated binary_loopback_cfg so that it uses Stretch's 686 kernel instead of ↵Adrian Gibanel Lopez
old 486 one. [hertzog@debian.org: Also rename the variables for consistency. ] Signed-off-by: Raphaël Hertzog <hertzog@debian.org>
2016-12-14Cleanup binary_loopback_cfg and offer more freedom in overriding the default ↵Raphaël Hertzog
grub-pc configuration.
2016-12-02Clean up grub configuration codeRaphaël Hertzog
* Use only long kernel names. * Put advanced options in a submenu. * Use distro-agnostic labels. * Don't generate entries with kernel version when we have a single version.
2016-12-02Default for LB_UNION_FILESYSTEM is now "overlay" just like in live-boot.Raphaël Hertzog
2016-11-28Copy sub-directories as well as files in grub config directoryRaphaël Hertzog
This is to cover the case of a theme included in that directory.
2016-11-28Try to reuse /isolinux/splash.png in default grub configuration.Raphaël Hertzog
2016-08-26Readded Installation boot entries to grub configuration files.Adrian Gibanel Lopez
2016-07-31Force the use of insmod all_video in grub.cfg so that we do not boot in ↵Adrian Gibanel Lopez
blind mode in UEFI mode.
2016-07-31binary_loopback_cfg now renders grub.cfg by default.Adrian Gibanel Lopez
The binary parts of grub-pc are left for the original binary_grub-pc. As a consequence both /boot/grub/grub.cfg and /boot/grub/loopback.cfg files will be present in any Debian Live CD. This might be useful to be reused from binary_grub-* bootloaders.
2015-08-30Loopback cfg support.Adrian Gibanel Lopez
Development details -------------------- * This patch has been based originally on: binary_grub2 . It has been improved thanks to some binary_syslinux bits. * This patch ensures that binary_loopback_cfg needs is run before binary_syslinux is run. The reason is that it reuses some code from binary_syslinux to avoid problems when binary_syslinux renames the kernel filenames. * This patch already supports CPU detection * I haven't tested all the possible scenarios for the script (with the latest version). When amd64 and 486 Gnu/Linux flavours is used and the bootloader is syslinux it works ok. * I have not implemented a disable switch for not generating it. Usually you always want loopback.cfg to be there. * Compared to binary_grub2 script I have removed the installation entries because I did not see any of them in binary_syslinux. How to test ----------- These are some steps to easily test if Looback cfg support is working ok. 0) We assume you have generated an iso 1) Make sure you have a partition that Grub understands. Plain ext4 or vfat should do it. 2) Create directory: /boot/boot-isos/ 3) Put the iso file into that directory making sure it has an ISO or iso extension. 4) Setup your computer to boot from cdrom and use: Super Grub2 Disk 2.00s2 (Hybrid version recommended) 5) Choose Boot manually... 6) Choose Bootable ISOs (in /boot- ... ) 7) Choose (the detected) GRUB Loopback Config (hdN,msodsN)/boot/boot-ios/name-of-the.iso 8) You will be presented your loopback.cfg. Choose anyone of the entries (unless it does not match your cpu architecture of course). 9) You should boot into your Debian Live without problems (thanks to findiso boot parametre). If you ever wanted to test from your grub2 installation instead from Super Grub2 Disk check: http://www.supergrubdisk.org/wiki/Loopback.cfg for an example.