* [PATCH v3 0/4]
@ 2025-11-19 19:49 Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 1/4] bootstrap: Run linguas.sh in bootstrap epilogue Glenn Washburn
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Glenn Washburn @ 2025-11-19 19:49 UTC (permalink / raw)
To: grub-devel; +Cc: Daniel Kiper, Mike Gilbert, Glenn Washburn
I've seen several times and believe that quite often people building GRUB
forget to run linguas.sh to download and setup the build for the external
translations. So make setting up LINGUAS happen by default when running
bootstrap. If a user does not want to setup LINGUAS it can be skipped by
running bootstrap with the existing --skip-po argument. In fact, bootstrap
already has functionality that automatically downloads a projects translations,
so switch to using that in patch #2. Also it is needed to run some extra code
because bootstrap will not add GRUB's autogenerated languages. In patch #3
simplify the LINGUAS generation and patch #4 fixes a couple issues in the
INSTALL that is dependent on patch #1.
NOTE: Instead of using the non-POSIX -r option to xargs, use a more POSIX
friendly way of ensuring that basename is not run with no arguments.
v3:
* Fix an issue where basename could be called by xargs with no arguments
v2:
* There wasn't intentionally a v1, but I accidentally created a patch
series, and then I realized that patch #2 depends on patch #1.
Glenn
Glenn Washburn (4):
bootstrap: Run linguas.sh in bootstrap epilogue
bootstrap: Migrate linguas.sh into bootstrap.conf
bootstrap: Condense and simplify LINGUAS generation
INSTALL: Fix a grammatical error
INSTALL | 25 +++++++++++--------------
bootstrap.conf | 21 +++++++++++++++++++--
2 files changed, 30 insertions(+), 16 deletions(-)
Range-diff against v2:
1: 62f0c3965921 = 1: 20d27aed572a bootstrap: Run linguas.sh in bootstrap epilogue
2: 7ffeeb595903 = 2: 6b6fed0beba3 bootstrap: Migrate linguas.sh into bootstrap.conf
3: b9bbe64cd8b8 ! 3: 3678bd68c4b6 bootstrap: Condense and simplify LINGUAS generation
@@ bootstrap.conf: bootstrap_epilogue () {
- ) | sort | uniq | xargs
- ) >po/LINGUAS
+ {
-+ ls po/*.po | xargs -L 100 basename -s .po -a
++ # NOTE: xargs has no POSIX compliant way to avoid running the program
++ # given as an argument when there are no input lines. So ensure that
++ # basename is always run with at least one argument, the empty string,
++ # and ignore the first line of output.
++ ls po/*.po | xargs -L 100 basename -s .po -a "" | tail -n +2
+ for x in $autogenerated; do
+ rm -f "po/$x.po"
+ echo "$x"
4: eb88d70454f4 = 4: c74c01d6fd85 INSTALL: Fix a grammatical error
--
2.34.1
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 1/4] bootstrap: Run linguas.sh in bootstrap epilogue
2025-11-19 19:49 [PATCH v3 0/4] Glenn Washburn
@ 2025-11-19 19:49 ` Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf Glenn Washburn
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Glenn Washburn @ 2025-11-19 19:49 UTC (permalink / raw)
To: grub-devel; +Cc: Daniel Kiper, Mike Gilbert, Glenn Washburn
Heretofore, linguas.sh had to be run by the user and a common mistake
made when building GRUB was to not run the command. By adding it to
the bootstrap epilogue it will by default get run at the end of the
bootstrap script. The user no longer needs to remember to run it.
If the --skip-po option is passed to bootstrap, do not run linguas.sh.
This allows for bootstrap to be run without updating the translations,
which might be desired in the future if we track po files so that
translations can be used as they were at time of release.
Update INSTALL file to reflect that it is no longer necessary to run
linguas.sh. Also, fix a list numbering error.
Fixes: 9f73ebd49be (* INSTALL: Document linguas.sh.)
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
INSTALL | 17 +++++++----------
bootstrap.conf | 8 +++++++-
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/INSTALL b/INSTALL
index 22b68cb6c766..f49bfdd2d0c5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -140,15 +140,12 @@ The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code.
- 2. Skip this and following step if you use release tarball and proceed to
- step 4. If you want translations type `./linguas.sh'.
-
- 3. Type `./bootstrap'.
+ 2. Type `./bootstrap'.
The autogen.sh (called by bootstrap) uses python. By default autodetect
it, but it can be overridden by setting the PYTHON variable.
- 4. Type `./configure' to configure the package for your system.
+ 3. Type `./configure' to configure the package for your system.
If you're using `csh' on an old version of System V, you might
need to type `sh ./configure' instead to prevent `csh' from trying
to execute `configure' itself.
@@ -156,19 +153,19 @@ The simplest way to compile this package is:
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
- 6. Type `make' to compile the package.
+ 4. Type `make' to compile the package.
- 7. Optionally, type `make check' to run any self-tests that come with
+ 5. Optionally, type `make check' to run any self-tests that come with
the package. Note that many of the tests require root privileges in
order to run.
- 8. Type `make install' to install the programs and any data files and
+ 6. Type `make install' to install the programs and any data files and
documentation.
- 9. Type `make html' or `make pdf' to generate the html or pdf
+ 7. Type `make html' or `make pdf' to generate the html or pdf
documentation. Note, these are not built by default.
- 10. You can remove the program binaries and object files from the
+ 8. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
diff --git a/bootstrap.conf b/bootstrap.conf
index 8eff35b45d5d..e894666fd252 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -63,7 +63,7 @@ checkout_only_file=
copy=true
vc_ignore=
-SKIP_PO=t
+SKIP_PO=n
# Build prerequisites
buildreq="\
@@ -108,4 +108,10 @@ bootstrap_post_import_hook () {
bootstrap_epilogue () {
mv INSTALL.grub INSTALL
+
+ # Update translation files and create LINGUAS file used to determine
+ # the set of languages used to translate.
+ if [ "x$SKIP_PO" = "xn" ]; then
+ ./linguas.sh
+ fi
}
--
2.34.1
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf
2025-11-19 19:49 [PATCH v3 0/4] Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 1/4] bootstrap: Run linguas.sh in bootstrap epilogue Glenn Washburn
@ 2025-11-19 19:49 ` Glenn Washburn
2025-11-19 21:34 ` Daniel Kiper
2025-11-19 19:49 ` [PATCH v3 3/4] bootstrap: Condense and simplify LINGUAS generation Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 4/4] INSTALL: Fix a grammatical error Glenn Washburn
3 siblings, 1 reply; 7+ messages in thread
From: Glenn Washburn @ 2025-11-19 19:49 UTC (permalink / raw)
To: grub-devel; +Cc: Daniel Kiper, Mike Gilbert, Glenn Washburn
Bootstrap has infrustructure for downloading/updating project po files
and generating the LINGUAS file. It uses wget instead of rsync, but
provides the same functionality, namely that only po files that have a
modification date before the corresponding one on the server will get
redownloaded. Bootstrap creates a pristine copy of the po files in
po/.reference, so update .gitignore to ignore that directory.
Bootstrap also creates the po/LINGUAS file, but it does not know to add
in GRUB's autogenerated po files. So move that code from linguas.sh into
the bootstrap epilogue.
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
bootstrap.conf | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/bootstrap.conf b/bootstrap.conf
index e894666fd252..79d4248c84aa 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -63,8 +63,6 @@ checkout_only_file=
copy=true
vc_ignore=
-SKIP_PO=n
-
# Build prerequisites
buildreq="\
autoconf 2.64
@@ -109,9 +107,23 @@ bootstrap_post_import_hook () {
bootstrap_epilogue () {
mv INSTALL.grub INSTALL
- # Update translation files and create LINGUAS file used to determine
- # the set of languages used to translate.
- if [ "x$SKIP_PO" = "xn" ]; then
- ./linguas.sh
+ if [ "x$SKIP_PO" = "x" ]; then
+ # Generate LINGUAS with all supported languages. Bootstrap will
+ # generate a LINGUAS, but it will not contain the autogenerated
+ # languages.
+ autogenerated="en@quot en@hebrew de@hebrew en@cyrillic en@greek en@arabic en@piglatin de_CH"
+
+ for x in $autogenerated; do
+ rm -f "po/$x.po";
+ done
+
+ (
+ (
+ cd po && ls *.po| cut -d. -f1
+ for x in $autogenerated; do
+ echo "$x";
+ done
+ ) | sort | uniq | xargs
+ ) >po/LINGUAS
fi
}
--
2.34.1
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/4] bootstrap: Condense and simplify LINGUAS generation
2025-11-19 19:49 [PATCH v3 0/4] Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 1/4] bootstrap: Run linguas.sh in bootstrap epilogue Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf Glenn Washburn
@ 2025-11-19 19:49 ` Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 4/4] INSTALL: Fix a grammatical error Glenn Washburn
3 siblings, 0 replies; 7+ messages in thread
From: Glenn Washburn @ 2025-11-19 19:49 UTC (permalink / raw)
To: grub-devel; +Cc: Daniel Kiper, Mike Gilbert, Glenn Washburn
Remove unnecessary subshells. Loop over autogenerated po files only once.
Use existing LINGUAS created by bootstrap instead of finding po files
again.
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
bootstrap.conf | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)
diff --git a/bootstrap.conf b/bootstrap.conf
index 79d4248c84aa..40e0b0cf47bb 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -113,17 +113,16 @@ bootstrap_epilogue () {
# languages.
autogenerated="en@quot en@hebrew de@hebrew en@cyrillic en@greek en@arabic en@piglatin de_CH"
- for x in $autogenerated; do
- rm -f "po/$x.po";
- done
-
- (
- (
- cd po && ls *.po| cut -d. -f1
- for x in $autogenerated; do
- echo "$x";
- done
- ) | sort | uniq | xargs
- ) >po/LINGUAS
+ {
+ # NOTE: xargs has no POSIX compliant way to avoid running the program
+ # given as an argument when there are no input lines. So ensure that
+ # basename is always run with at least one argument, the empty string,
+ # and ignore the first line of output.
+ ls po/*.po | xargs -L 100 basename -s .po -a "" | tail -n +2
+ for x in $autogenerated; do
+ rm -f "po/$x.po"
+ echo "$x"
+ done
+ } | sort | uniq | xargs >po/LINGUAS
fi
}
--
2.34.1
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 4/4] INSTALL: Fix a grammatical error
2025-11-19 19:49 [PATCH v3 0/4] Glenn Washburn
` (2 preceding siblings ...)
2025-11-19 19:49 ` [PATCH v3 3/4] bootstrap: Condense and simplify LINGUAS generation Glenn Washburn
@ 2025-11-19 19:49 ` Glenn Washburn
3 siblings, 0 replies; 7+ messages in thread
From: Glenn Washburn @ 2025-11-19 19:49 UTC (permalink / raw)
To: grub-devel; +Cc: Daniel Kiper, Mike Gilbert, Glenn Washburn
Also, add more documentation mentioning that the tests require a
"specially crafted environment" to run. Just running as root is not
enough.
Signed-off-by: Glenn Washburn <development@efficientek.com>
---
INSTALL | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/INSTALL b/INSTALL
index f49bfdd2d0c5..8b10e954873f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -142,8 +142,8 @@ The simplest way to compile this package is:
2. Type `./bootstrap'.
- The autogen.sh (called by bootstrap) uses python. By default autodetect
- it, but it can be overridden by setting the PYTHON variable.
+ The autogen.sh (called by bootstrap) uses python. By default it is
+ autodetected, but it can be overridden by setting the PYTHON variable.
3. Type `./configure' to configure the package for your system.
If you're using `csh' on an old version of System V, you might
@@ -156,8 +156,8 @@ The simplest way to compile this package is:
4. Type `make' to compile the package.
5. Optionally, type `make check' to run any self-tests that come with
- the package. Note that many of the tests require root privileges in
- order to run.
+ the package. Note that many of the tests require root privileges and
+ a specially crafted environment in order to run.
6. Type `make install' to install the programs and any data files and
documentation.
--
2.34.1
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf
2025-11-19 19:49 ` [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf Glenn Washburn
@ 2025-11-19 21:34 ` Daniel Kiper
2025-11-20 18:42 ` Glenn Washburn
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Kiper @ 2025-11-19 21:34 UTC (permalink / raw)
To: Glenn Washburn; +Cc: grub-devel, Mike Gilbert
On Wed, Nov 19, 2025 at 01:49:19PM -0600, Glenn Washburn wrote:
> Bootstrap has infrustructure for downloading/updating project po files
> and generating the LINGUAS file. It uses wget instead of rsync, but
Both wget and rsync are missing from INSTALL file. Could you add them there?
If you do that you can add my RB to all patch from this series.
Daniel
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf
2025-11-19 21:34 ` Daniel Kiper
@ 2025-11-20 18:42 ` Glenn Washburn
0 siblings, 0 replies; 7+ messages in thread
From: Glenn Washburn @ 2025-11-20 18:42 UTC (permalink / raw)
To: Daniel Kiper; +Cc: grub-devel, Mike Gilbert
On Wed, 19 Nov 2025 22:34:19 +0100
Daniel Kiper <dkiper@net-space.pl> wrote:
> On Wed, Nov 19, 2025 at 01:49:19PM -0600, Glenn Washburn wrote:
> > Bootstrap has infrustructure for downloading/updating project po files
> > and generating the LINGUAS file. It uses wget instead of rsync, but
>
> Both wget and rsync are missing from INSTALL file. Could you add them there?
> If you do that you can add my RB to all patch from this series.
I think I should not add the rsync as a requirement now that the
patches use the bootstrap code for downloading translations. It
appears that the only place where rsync might be used is in
gnulib/build-aux/gnu-web-doc-update, which you might be using to update
the documentation on gnu.org. Currently, I don't think we have a place
to document requirements needed by project maintainers. If we want to
document that it should be in a separate series.
Of course rsync is still used in the, now depreciated, linguas.sh, but
users should not be using that. I left linguas.sh as a fallback in the
unlikely case that there's some edge case where it might be needed. I
would say after the release we should remove that file.
Glenn
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-11-20 18:42 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-19 19:49 [PATCH v3 0/4] Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 1/4] bootstrap: Run linguas.sh in bootstrap epilogue Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 2/4] bootstrap: Migrate linguas.sh into bootstrap.conf Glenn Washburn
2025-11-19 21:34 ` Daniel Kiper
2025-11-20 18:42 ` Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 3/4] bootstrap: Condense and simplify LINGUAS generation Glenn Washburn
2025-11-19 19:49 ` [PATCH v3 4/4] INSTALL: Fix a grammatical error Glenn Washburn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox