summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-04-23grub2|loopback: use '@' bookended placeholdersLyndon Brown
...for consistency with syslinux config placeholders and improved clarity of what text is a placeholder. the old placeholders without the bookends are still replaced for user configs for backwards compatibility. the new ones are little used just at the moment but are expected to become used much more in later commits. Gbp-Dch: Short
2020-04-22grub2|loopback: remove unnecessary perl based newline escaping for sedLyndon Brown
none of the stuff changed here is multi-line so had no reason to use it. Gbp-Dch: Short
2020-04-20build: fix misleading messageLyndon Brown
2020-04-01loadlin: fix missing directory errorLyndon Brown
fixes an error I experienced in a test build Gbp-Dch: Short
2020-04-01bootstrap_cache: validate action paramLyndon Brown
2020-04-01bootloaders: replace use of vga=normal with vga=788 in live menu entriesjnqnfe
For consistency with install entries (both in live-build and official Debian install discs). Comparing with live-build created installer entries, grub-legacy and grub2 both favour vga-788 for GUI entries and vga=normal for test entries, whilst syslinux uses vga-788 for everything. Gbp-Dch: Short
2020-03-28manpages: fix missing mention of stageLyndon Brown
Gbp-Dch: Ignore
2020-03-27apt: use its new colour supportLyndon Brown
apt v2.0.1 introduced support for coloured E:/W:/N: labels. this adds support to control it based upon our own colour control. note that with utilities like dpkg we do not do this, but apt only uses its new colour support automatically when `apt` is used directly, it is not automatically enabled (per isatty()) for `apt-get`/`aptitude` (the `apt` developer responsible for adding colour support in response to my request for it told me that it was deliberately done like this per being customary to not change behaviour of those tools for compatibility reasons). colour errors/warnings are useful, so we want to turn it on for our use of these tools where we can. Gbp-Dch: Short
2020-03-25syslinux: properly fix shortcut caret appearing in menu entriesLyndon Brown
this reverts commit 0cef87ffca0e9d89ac1f8e0098f890f2eefd3559 though retaining the 'advanced options' menu entry using a label rather than a title. despite having done a lot of testing back in 2015 with my bootloader improvements, i notice now that in fact the syslinux caret fix has an undesired side effect of modifying the title displayed above the menus. it does not help that the text embedded into the splash overlaps with this menu title; perhaps this explains why i missed this problem back in 2015. purely reverting the implemented fix solves this title problem, but restores the caret problem to the advanced options menu (in menu.cfg); however that menu was using a caret in a title entry, unlike everywhere else where they are only used with labels, which must have been the original source of the problem all along. ensuring that this menu uses a label instead of a title in this reversion leaves everything working correctly afaict. Gbp-Dch: Ignore
2020-03-23highlight commands in script executionLyndon Brown
makes reviewing logs in terminal output MUCH more pleasant and efficient Gbp-Dch: Short
2020-03-23move auto colouring decisionLyndon Brown
...from the `Set_config_defaults` function, to being done directly in `build.sh` (the component which is also responsible for loading functions, loaded at the start of every script, including the front end). thus the colouring decision will now correctly... - apply to the frontend, such as to the 'root privileges needed' error, the 'no such script' error, and the command name colouring that I want to add (the most significant issue). - apply to error messages generated by the `Arguments` and `Read_conffiles` functions, which are called before `Set_config_defaults` by scripts. as things were, due to the comparison with "false", colour would _always_ be used in these places (unless _COLOR_ERR=false or _COLOR_OUT=false wrt. the new command highlight, were set in the environment when executing a script throught the frontend). this would not be a problem for normal terminal use of course, besides being inconsistent where color were turned off, but would be a bit of a problem if redirected to a file. a re-evaluation of _COLOR is performed in `Set_config_defaults` to adjust _COLOR_OUT and _COLOR_ERR where necessary, to correctly respond to _COLOR being set in saved config files (disabled by default but a user could always enable), after the point of config files being loaded. _COLOR can still be controlled from the environment just as before, overriding both _COLOR_OUT and _COLOR_ERR. note that this does not address the fact that --color|--no-color do not work in the frontend and thus will not impact the colouring of to-be-introduced command highlighting. this needs to be addressed separately. Gbp-Dch: Short
2020-03-23args: fix a typoLyndon Brown
Gbp-Dch: Ignore
2020-03-22bootloaders: remove old "video=vesa:ywrap,mtrr" kernel param, as done in d-ijnqnfe
d-i removed this in commit 0917b2dde3ff73a204d27dd2f2fffc8a41175ddd Note: There was inconsistency between grub and syslinux in use of this, with syslinux not having it on graphical rescue and auto modes while grub entries did. The patch to fix that has been dropped since we're removing it everywhere anyway. (#395040) Gbp-Dch: Short
2020-03-20manpages: stage clarificationsLyndon Brown
Gbp-Dch: Ignore
2020-03-20manpages: clarify `lb config` notesLyndon Brown
2020-03-20manpages: grammarLyndon Brown
"each" -> "each time" Gbp-Dch: Ignore
2020-03-20manpages: add missing mention of --color|---no-colorLyndon Brown
2020-03-20binary_iso: remove duplicate xorriso paramLyndon Brown
-J is already in the generic set defined at the start Gbp-Dch: Short
2020-03-20autopkgtest: build kali imageLuca Boccassi
2020-03-20archives: param is requiredLyndon Brown
Gbp-Dch: Ignore
2020-03-20archives: clarify varLyndon Brown
Gbp-Dch: Ignore
2020-03-20archives: explicitly pass along _PASS to Create_apt_sources_listLyndon Brown
Gbp-Dch: Ignore
2020-03-20defaults: enable d-i GUI for allLyndon Brown
2020-03-20defaults: ensure labels have defaults for derivativesLyndon Brown
2020-03-20defaults: tidy mirrorsLyndon Brown
2020-03-20strip progress-linux distro hacksLyndon Brown
progress-linux, as discussed in MR #142 ([1]) is a little known distro, which appears to be little more than a personal project of the original author of live-build. given that, the expense of maintaining all of these old hacks for it cannot be justified. it is not known whether or not live-build is even used with respect to it since the author abandoned live-build some years ago. also, at least one past change in live-build possibly broke progress-linux compatibility anyway, which would have required progress-linux users of live-build to use a custom progress-linux config, or a progress-linux fork of live-build, and there is no knowing how much of the hacks in this "upstream" codebase any user of progress-linux currently relies upon. and again, progress-linux appears to just be a personal project of Daniel's, with afaik very little userbase. (Daniel seems to be the only developer working on the project which speaks to how small it is). [1]: https://salsa.debian.org/live-team/live-build/-/merge_requests/142 Gbp-Dch: Short
2020-03-20defaults: purge long unused LB_ROOTLyndon Brown
seems to have been obsolete since all the way back at v1.0~a22-1. history: - in 0d0de885e32ff67d57bb7def451b62d75b8920ab it was renamed from LIVE_ROOT to LH_ROOT, but also seems to have become completely obsolete at this point, and thus mistakenly not actually removed. before this it seems to have been used to hold the base directory of live-build from which paths were constructed, but then this use was removed making it redundant, but it remained in the code. - 83bc63f725263c571094e3af1c88c58992bf0ac6 renamed to LB_ROOT. - a79a5bea1063da4010f145a0e29aaf9a672ef291 dropped setting the variable only if not already set, in favour of always setting it depending upon LB_MODE. but still it remained unused. Gbp-Dch: Short
2020-03-20grub: remove old and unused splash codejnqnfe
The LB_GRUB_SPLASH variable is populated by the --grub-splash param but is not actually used for anything. Gbp-Dch: Short
2020-03-20config: fix backwards compatibility breakLyndon Brown
when the --fdisk and --losetup options were removed, the entries in the getopt option list should have remained for backwards compatibility such that the usage warnings can kick in instead of unknown option errors. Gbp-Dch: Ignore
2020-03-20config: fix incomplete rename of --architecturesLyndon Brown
missed the getopt data update in 8b109ffb96282a6dd1aa5d61aa935bcba69c56f1 Gbp-Dch: Ignore
2020-03-20frontend: just directly call Usage on missing `man`Lyndon Brown
2020-03-20frontend: avoid trying to load /scripts/build.shLyndon Brown
unless `LIVE_BUILD` is set in the environment when running live-build, this var will be empty. this will result in the frontend trying to load the file '/scripts/build.sh', which is doubtful the file intended to be loaded, if it exists. the intention of checking the path "${LIVE_BUILD}/scripts/build.sh" is really only to do so if the var is actually used, so let's only do so if it's non-empty. since we use `set -e`, if build.sh is not found in either location then failure will occur. if it is found, presuming it is the real file that we expect to be found, this file sets the var to a default if it was an empty string, thus we need not worry about use of the var later in the frontend script. also, the var is exported prior to exec'ing the command script, so we know that in the command scripts it is not going to be empty, and those in themselves loading build.sh which again exports the var ensures that it will be set for subsequent loads of component scripts (which happens to go through the frontend again, not that that matters. so except for at the start of execution, it should never be found to be empty. Gbp-Dch: Short
2020-03-19fix -h|--help component script man page redirectionLyndon Brown
the frontend handles -h|--help directly and correctly redirects to the man page. component scripts however fail to load the correct manpage because they are being directed to `man <script>` instead of `man lb script`. (affects the top level commands and major build stages which actually have man pages; the low level components don't and so will always fail anyway).
2020-03-19defaults: remove redundant setting of LIVE_BUILDLyndon Brown
this is handled for every script in build.sh. this is not stored in the saved config or anything, so no need to re-evaluate in `Set_config_defaults`. this just seems to completely pointless. Gbp-Dch: Short
2020-03-18defaults: bump checksums to stronger formLyndon Brown
md5 & sha1 are not considered secure anymore and thus are of questionable value here if checksums are wanted. Gbp-Dch: Short
2020-03-18Minor cleanups in Require_stagefilesRaphaël Hertzog
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: only list missing stagesLyndon Brown
2020-03-17stagefiles: avoid stagename in required errorLyndon Brown
the name of the stage is already printed earlier in the output prior to the error here being printed. so the error really does not need to include the script name itself.
2020-03-17stagefiles: fix completely wrong require-stages logicLyndon Brown
now having investigated my suspicions of the functionality and use of Require_stagefile(), i conclude that it has been fundamentally broken all the way back to v1.0~a8-1 (or at least usage of it since v1.0.1-2). gah. (╯°□°)╯︵ ┻━┻ ---- very early on in the history of live-build this function took the name of a _single_ stage file only and did `exit 1` should the file not be found. this was simple and clearly accomplished "what was on the tin", so to speak. in bd1a5ddc8203907eb40135303bea5488397ec5d0 (2007, 1.0~a8-1) things got weird. it was modified to support a list of multiple files. but instead of being written to cause failure if _any_ of the listed files were missing as perhaps one might expect, it was instead written to fail only if all files were missing! if you jump to the conclusion that i'm talking about a simple flipped logic from a lack or otherwise of a `!` here, you'd be mistaken; there is a comment inside the function that could not be more clear about what was intended by the author - "Find at least one of the required stages"! this makes me thoroughly confused about what they were thinking. as we'll get to, this was fundamentally flawed (or at least its later use was), but furthermore there were other notable issues introduced at this point (but don't worry too much about these, they've all been addressed): - `NAME` was modified in the loop, using the existing value, but nothing initially set it... - the setting of `NAME` seems related to its use in the subsequent error output, yet they are logically separated; it is only set if a file exists, while the error is only printed if none exist. - it is pointlessly using a messy `CONTINUE="true"` based mechanism, when it could just `return 0`. - it did not handle correctly the bad use case of no params having been supplied. it doesn't seem to have been entirely thought through, despite its pervasive use throughout the build system. note that no change was made in that commit to make actual use of the new multi-param support. it would not be used until about a year later. the function has remained largely untouched since then. in c68c0a270832ca340429878ce6a0ab606d435b06 a notable change was made to add an initial setting of `NAME`, which partially addressed one of the above issues. but it did not really address the issue the change was meant to solve, since the `NAME` as printed in the error was now the name of the script when what was really wanted was the name of the stagefile. this was finally fixed properly in d54990695f334d205fa846c42b6e0f2afd3c47f5. however the weirdly pointless setting of `NAME` persisted in the loop. finally i personally just refactored the function in the commit prior to this one, retaining the same functionality but addressing the remaining of the above minor implementation issues. looking at usage of the new functionality introduced in bd1a5ddc8203907eb40135303bea5488397ec5d0, it does not seem to have been until 0cbbde2b9664b9fafb311f1048db25ea69952222 (2008, almost a year after it was made possible) that changes were made to finally start making use of the ability to pass more than one filename at a time to the function, and it would appear that perhaps the author forgot what it actually was that the function accomplished when used with multiple params, and failed to double check. in this first use of multiple parameters, this commit went from passing single file names to individual calls to the function to passing the files in one single call, in a commit the purpose of which was described as simply tidying things up. it was most certainly not intended to change stage requirements. unfortunately, a change in requirements did occur as a result since the new usage of the function was not accomplishing the same as before. this change completely broke the stage requirements protection mechanism such that only a single one of the listed stages needed to have completed for the check to pass, rather than all as expected. this flaw made it into release v1.0.1-2 and it has existed every since. in the very next commit from that one, 6204dc0e6db02859a07a978d87f1a5231c0214cf things got even worse. here we see the config stage being specified commonly as the first stage listed, which is still the case today. this means that ever since this commit, if you've already got a config before building (which you inevitably do, especially after some later commits introduced automatically creating it if missing), then all other stage requirements are simply ignored. so it seems pretty damn clear that this function is accomplishing completely the wrong objective. it _should_ be checking that _all_ files given to it exist, not just one or more. ¯\_(ツ)_/¯ this FINALLY addresses this mistake. (not that i wish to berate the author; i've made silly mistakes of my own before)
2020-03-17stagefiles: refactor Require_stagefile()Lyndon Brown
- count of params is available as $#, we don't need the pipe-to-wc logic. - the whole 'CONTINUE' based logic is silly, we can just return once one of the files is found. - setting of 'NAME' in the loop was completely pointless. - the error message for multiple files was not very clear just injecting a sequence of words into a sentence. - it did not work correctly if no arguments were given (bad usage) note, you might question whether the functionality of this function is correct, as did I; this is tackled in a followup commit whilst this commit retains the existing functionality! Gbp-Dch: Short
2020-03-17stagefiles: fix doc mistakeLyndon Brown
missed in final revision of fe9195b59c9647598ecea00900edfe2678bddcac Gbp-Dch: Ignore
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-17exit: fix missing local scopeLyndon Brown
missed in c55eb8a0c3ca5b8ed1081e7eb8a423563288fb58 Gbp-Dch: Ignore
2020-03-17manpages: correct date & versionLyndon Brown
Gbp-Dch: Ignore
2020-03-16syslinux: apply kernel version filtering logic to multi-flavour kernel scenariosjnqnfe
2020-03-16syslinux: use more dynamic memtest menu config filejnqnfe
Fixes the following - Correct version (memtest86/memtest86+) shown instead of fixed 'memtest86+' text - Ensure correct directory path always used by using replaceable placeholder Gbp-Dch: Short
2020-03-16syslinux: add memtest menu entry only if including memtestjnqnfe
2020-03-16syslinux: add install menu entries only if including installerjnqnfe