Commit Graph

44 Commits

Author SHA1 Message Date
Lyndon Brown 7acd1f488f get rid of a couple of useless variables
Gbp-Dch: Ignore
2020-05-04 13:21:12 +01:00
Lyndon Brown 7276d0213f fix usage/help/man bugs
- the definition of $PROGRAM as used in $USAGE strings defined in each
   script has been broken for a long time, being simply "lb" when it needs
   to be "lb COMMAND".
 - `config` changed $PROGRAM to "lb config" thus its output was correct in
   this regard unlike everything else, but with the switch to a more
   "intelligent" `Man()` function recently, it means that instead of
   `man lb config`, what was actually run was `man lb config config`,
   which displayed the manpage, then on exiting with `q`, it showed some
   sort of index line todo with a "config" search (no exact manpage
   match?), for which you had to enter `ctrl+c` to get rid of.

this revises things to fix the issues, minimising change by changing
$PROGRAM to "lb COMMAND", with the frontend overriding this.

Gbp-Dch: Ignore
2020-05-03 01:38:17 +01:00
johnraff 0e5d0483e5 Replace 'which' with 'command -v' to test for the existance of an executable
This is considered to be more robust.

Two instances remain:

scripts/build/chroot_archives, line 257:
if [ "${LB_APT}" = "aptitude" ] && [ ! $(Chroot chroot "which aptitude") ]
The command is run inside a chroot where the environment might be special,
and would need further testing.

manpages/Makefile, line 42:
@if [ ! -x "$$(which po4a 2>/dev/null)" ]; \
I am insufficiently familiar with makefile syntax to edit this.
2020-05-01 09:59:11 +00:00
Lyndon Brown 1374e82e24 frontend: fix passing along global args
trying to use `lb --debug config` for instance did not output debug info
unlike `lb config --debug`.

Gbp-Dch: Ignore
2020-04-29 19:03:58 +01:00
Raphaël Hertzog 55d9b213cf Improve handling of options allowed for "lb" before the sub-command 2020-04-24 16:24:01 +02:00
Raphaël Hertzog 104fa20399 Revert "frontend: properly handle option processing"
This reverts commit 6b7c8ed4bf as it's
breaking multi-value space-separated parameters.
2020-04-24 15:37:13 +02:00
Raphaël Hertzog 440c0b7738 frontend: do no try to look for sub-commands in the PATH
This is a recipe for disaster and it actually already fails when
you pass something that looks like a long option as first argument
because $(which --long-option) will produce an "Illegal option"
string on its standard output.

$ lb --debug config --archive-areas "main contrib non-free"
Illegal option --
/usr/bin/lb: 54: [: Usage:: unexpected operator
E: Unknown command: --debug
2020-04-23 22:30:43 +02:00
Raphaël Hertzog 4c75f80e67 Use descriptive parameter names for Usage() 2020-04-23 16:38:59 +02:00
Lyndon Brown b3bba232ac usage: take exit code as param
thus it can correctly indicate success/fail status instead of always
indicating failure. when a user asks for usage with -u|--usage then we
should exit in success mode rather than failure as when usage in printed
in response to incorrect usage.

Gbp-Dch: Short
2020-04-23 16:32:26 +02:00
Lyndon Brown 6b7c8ed4bf frontend: properly handle option processing
this means that the usage goes from:
 lb {-h|--help|-u|--usage|-v|--version}
 lb COMMAND [OPTIONS]

to:
 lb {-h|--help|-u|--usage|-v|--version}
 lb [FRONTEND_OPTIONS] COMMAND [COMMAND_OPTIONS]

though it is probably not worth is to update the description in the
manpages...? hmm...

so for instance this matters for color control with --color|--no-color
(you already had full control via environment vars). previously you could
do `lb COMMAND --no-color` to turn off colour, only to find that output
at the frontend level was still coloured (the option is processed at the
command context level, not the frontend), so you might try to instead use
`lb --no-color COMMAND`, only to find that this was not supported. Well
now it is, and used at the frontend level will fully control colour output
(after the command is processed anyway).

the full set of common options are thus available (except --force) at the
frontend level, and thus for instance all Echo_*() helpers used in the
frontend will work correctly after args are processed.

furthermore usage like `lb --color --help` will actually work. (not that
color is used there, but this previously would have failed with the
frontend treating the `--color` argument as the command; that's the point!)

Gbp-Dch: Short
2020-04-23 16:29:00 +02:00
Lyndon Brown 89e965ccae frontend: change "no such script" to "unknown command"
as far as the user is concerned, 'foo' in `lb foo` is a command; they do
not know or need to know that the commands also correspond to actual
scripts.

Gbp-Dch: Short
2020-04-23 16:09:21 +02:00
Lyndon Brown b28095bd56 frontend: reorder checks
perform the check that the script exists before sorting out the environment
to give it, or checking root privileges.

Gbp-Dch: Short
2020-04-23 16:09:00 +02:00
Lyndon Brown 8b1f9f0131 frontend: fix use of config/environment[.binary]
the environment variables when held in a variable need to be used via
`env` otherwise you get command not found errors.

example:
```
$ echo "AA=aa" > config/environment
$ lb config
/usr/bin/lb: 83: AA=aa: not found
$ ENV="AA=aa"
$ ${ENV} true
bash: AA=aa: command not found
$ "${ENV}" true
bash: AA=aa: command not found
$ env ${ENV} true
```

Gbp-Dch: Short
2020-04-23 09:56:13 +00:00
Lyndon Brown 36092f1cb8 highlight commands in script execution
makes reviewing logs in terminal output MUCH more pleasant and efficient

Gbp-Dch: Short
2020-03-23 08:06:51 +00:00
Lyndon Brown d1fcfa339e frontend: just directly call Usage on missing `man` 2020-03-20 09:04:41 +00:00
Lyndon Brown 3d30597e93 frontend: avoid trying to load /scripts/build.sh
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-20 08:36:17 +00:00
Lyndon Brown 67930f3e6e frontend: tidy
no need to have exit in both conditions

no need to have most of the script within a case branch when all other
cases result in an exit.

Gbp-Dch: Short
2020-03-13 14:20:12 +00:00
Luca Boccassi 015e6b65f3 Revert "Test for executables: replace 'which' with more robust 'command -v'"
This reverts commit 2d9ab1f7f8.

Causes test failure due to bashism.
2020-03-12 12:32:26 +00:00
johnraff 2d9ab1f7f8 Test for executables: replace 'which' with more robust 'command -v'
Instances of:
if [ $(which <command> ]
have been replaced with:
if command -v <command> >/dev/null
which is considered to be more robust in a range of environments.

scripts/build/chroot_archives: line 259:
	if [ "${LB_APT}" = "aptitude" ] && [ ! $(Chroot chroot "which aptitude") ]
has been left untouched because the chroot might require a more complex command
which would need more testing.

manpages/Makefile: line 42:
	@if [ ! -x "$$(which po4a 2>/dev/null)" ]; \
has been left untouched because I am not sufficiently familiar with makefiles.
2020-03-12 10:35:57 +00:00
Lyndon Brown 7a4a9f94b8 amend copyright & licensing blocks
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 674794a8f4 and
   36a3ba7634 so I similarly added a
   debian live copyright line.
 - 'grub-cpmodules' is similar. it was only changed by the indentation fix
   of 36a3ba7634 but modification is
   modification, and this does help cover any possible future changes that
   might be made.
2020-03-11 13:51:19 +00:00
Lyndon Brown 7ee59d408e fix consistency in binary execution and existance checking
- prefer using `which` over hard coded paths
 - it is redundant to check that the bin pointed to the return of
   `which` exists and is executable, `which` already gives us
   assurance of that if it returns true!
 - the redirection of output (`2>/dev/null`) seems to be
   unnecessary from my testing.

the instances relatnig to fdisk and losetup in functions/defaults.sh have
been left as they are since they get executed by `lb config` which can run
without sudo elevation unlike `lb build` and in that case `which` would
fail to find these binaries resulting in error.

this also fixes a bug showing an error for missing debootstrap - this tool
requires sudo privileges to run and thus is not found via a none elevated
which search.

Gbp-Dch: Short
Closes: #952927
2020-03-09 10:51:11 +00:00
jnqnfe a67e01638f help/usage: fix overly complex script description handling
Closes: #952887
2020-03-05 20:48:49 +00:00
jnqnfe 5a00487872 fix capitalisation of some output messages
Closes: #952875
2020-03-05 20:36:54 +00:00
Lyndon Brown 95fedc81c1 help/usage: fix usage string of top level script
Gbp-Dch: Ignore
Closes: #952858
2020-03-05 11:31:09 +00:00
Daniel Baumann 320b1ce75e Flattening frontend directory within the source tree. 2015-04-29 08:12:46 +02:00
Daniel Baumann 58bdabe139 Moving cgi to its own source package. 2015-04-28 07:58:14 +02:00
Richard Nelson b883aabc6a On status output of running builds only count directories for l-b-cgi frontend. 2015-04-17 14:58:28 -05:00
Richard Nelson b8cc61dfd7 Added output of processing builds to status page for l-b-cgi frontend. 2015-04-17 14:21:08 -05:00
Richard Nelson c73e1ed5a5 Harmonize variables on build status script for l-b-cgi frontend. 2015-04-15 14:10:26 -05:00
Richard Nelson e4813ea818 Initial commit to provide biuld status on l-b-cgi frontend. 2015-04-15 13:58:58 -05:00
Richard Nelson 3e94a68057 Rename LIVE_IMAGE_TYPE to LB_BINARY_IMAGES on l-b-cgi frontend. 2015-04-15 13:43:38 -05:00
Daniel Baumann 242aef5d83 Updating year in copyright notices to 2015. 2015-01-04 20:05:44 +01:00
Daniel Baumann 2eecd1b814 Cleaning up from python removal (LIVE_IMAGE_ARCHIVE_AREAS). 2014-12-10 07:41:29 +01:00
Daniel Baumann 1f7f6dd88a Cleaning up from python removal (LIVE_IMAGE_ARCHITECTURE). 2014-12-10 07:39:58 +01:00
Richard Nelson e2a9114cb3 Correct variable name for apt_indices and adjust sed order for population of build feedback on frontend/cgi. 2014-09-21 19:28:16 -05:00
Daniel Baumann bc50443cf0 Moving partial python rewrite to separate branch, let's do it in the jessie+1 cycle rather than go with the current mixed code. 2014-08-28 00:59:28 +02:00
Richard Nelson ca941152b4 Add --apt option on frontend/cgi. 2014-06-22 12:15:39 -05:00
Kiel Christofferson 07d1ff5f9b Include "components" when detecting local scripts.
This can help facilitate development and testing during the python transition.
2014-03-02 06:22:19 +01:00
Kiel Christofferson c8daf8fcfd Allow config command without root privileges. 2014-03-02 06:22:19 +01:00
Daniel Baumann eb336bb782 Updating copyright notices for 2014. 2014-02-08 17:47:24 +01:00
Daniel Baumann 35919637af Moving testroot into lb wrapper itself. 2013-11-04 13:00:12 +01:00
Richard Nelson 5e2758b4c0 Updating files to copy for finished build on l-b-cgi frontend and the 4.x branch. 2013-10-21 20:12:00 -05:00
Richard Nelson 4a5d67c5b8 Modify l-b-cgi frontend logging paths. 2013-09-17 11:42:51 -05:00
Daniel Baumann 86746ac72f Reorganizing frontend in source tree. 2013-06-25 09:04:42 +02:00