Commit Graph

27 Commits

Author SHA1 Message Date
Denis 'GNUtoo' Carikli 16c0c3e783
Add docker and singularity files.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-05-25 22:13:18 +02:00
Denis 'GNUtoo' Carikli 947853d2ac
merge
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-05-25 22:13:18 +02:00
Denis 'GNUtoo' Carikli 7df6d6169b
Build bucts and patched flashrom for I945 ThinkPads with Guix.
GNU Boot can be installed on some I945 ThinkPads without disassembling
them. To do that it requires both a patched flashrom and bucts.

This build them and also integrate Guix in GNU Boot as a dependency to
build them.

This will enable us to later on ship these utilities and then update
the installation instructions to use them somehow.

It also makes sure that we have proper authorship of the patch used
for flashrom and also unify the two flashrom patches not to require
two different flashrom binaries.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-05-12 22:56:04 +02:00
Denis 'GNUtoo' Carikli d7ad533fb8
packages: release: test: fix typo
Without that fix the test fail with the following error:
    $ ./build test release
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_colemak.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_deqwertz.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_esqwerty.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_frazerty.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_frdvbepo.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_itqwerty.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_svenska.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_trqwerty.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_ukdvorak.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_ukqwerty.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_usdvorak.rom
    [ !! ] qemu-pc_2mb/seabios_withgrub_qemu-pc_2mb_libgfxinit_txtmode_usqwerty.rom

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-29 18:39:32 +01:00
Denis 'GNUtoo' Carikli 1611a810b4
packages: roms: boot: filter out invalid computers.
For some reason, 'make release' produces the following files:
- release/roms/gnuboot-lbwww-20211122-328-gafe01fb_default.tar.xz
- release/roms/gnuboot-lbwww-20211122-328-gafe01fb_fam15h_rdimm.tar.xz
- release/roms/gnuboot-lbwww-20211122-328-gafe01fb_fam15h_udimm.tar.xz

This commit works around that issue.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:43:27 +01:00
Denis 'GNUtoo' Carikli e4c2fd5eb6
packages: release tests: check the content of the qemu-pc_2mb rom archive.
We also need to check if we have all the files and no superfluous
files inside the released archives.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:43:09 +01:00
Denis 'GNUtoo' Carikli 771688ac4c
packages: release tests: check for superfluous files.
This has several goals:

- It checks if the test works fine and if someone forgot to add some
  files.

- It checks if the build system produces files that it should not
  produce due to some bugs.

- It can also check if some leftover files are there from previous
  builds. This can help avoiding pushing wrong files as part as a
  release.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:42:16 +01:00
Denis 'GNUtoo' Carikli 578fda0e90
packages: Add target to test the release.
This makes sure that the release at least has all the expected files.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:41:15 +01:00
Denis 'GNUtoo' Carikli 5b9dd7adba
packages: fix calls to build descriptors.
Without that fix building images with make release or './build release
all' results in the following error:
    [...]
    Built lenovo/t400 (ThinkPad R400)
    make[1]: Leaving directory '/home/gnutoo/gnuboot/coreboot/default'

    Creating new ROM image: bin/r400_16mb/seabios_withgrub_r400_16mb_libgfxinit_corebootfb_colemak.rom
    Usage:
            ./build <TASK> <PACKAGE>
            ./build --help
    [...]
    Refer to the gnuboot documentation for more information.
    Error: Invalid task 'descriptors'.
    Error:  See './build --help'.
    Error: build/roms: something went wrong
    make: *** [Makefile:47: release] Error 1

This was broken by the commit 857afa42a8
("Switch to packages structure.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:40:31 +01:00
Denis 'GNUtoo' Carikli fcccaee8a5
packages: Also release GNU Boot source code.
This can be restored with the following command:
  $ mkdir /tmp/gnuboot-source
  $ cp release/gnuboot-source-*.bundle /tmp/gnuboot-source
  $ cd /tmp/gnuboot-source
  $ git init
  $ git fetch gnuboot-source-*.bundle
  $ git checkout FETCH_HEAD -b main

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:40:17 +01:00
Denis 'GNUtoo' Carikli 864df2a04b
packages: website: Also release untitled source code.
Since we use untitled as well it's a good practice to release its
corresponding source code as well to make sure people can rebuild the
website in case upstream disapear.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:39:16 +01:00
Denis 'GNUtoo' Carikli bc72f06f37
resources/packages/website/download: fix progname
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:39:00 +01:00
Denis 'GNUtoo' Carikli 1b18d46adf
packages: dependencies: fix distribution detection for Trisquel 10.
This was broken from the start in the commit
fe28bc3c82 ("dependencies: move into
single package.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:38:41 +01:00
Denis 'GNUtoo' Carikli 87c1e4c195
packages: dependencies: fix debian/pureos
This was broken by the commit 8f3d30f809
("dependencies: rename debian in pureos-10.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:38:16 +01:00
Denis 'GNUtoo' Carikli e1b48e7436
packages: dependencies: fix is_base_distro argument
This was broken from the start in the commit
fe28bc3c82 ("dependencies: move into
single package.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:37:19 +01:00
Denis 'GNUtoo' Carikli a3b5f5dc7b
packages: dependencies: fix finding dependencies scripts.
The "$(dirname $0)"/../dependencies/ directory is the same as
"$(dirname $0)".

So when running the script we have:
     # ./resources/packages/dependencies/install
     ./resources/packages/dependencies/install: 49:
     ./resources/packages/dependencies/../dependencies/arch: not found

This was broken from the start in the commit
fe28bc3c82 ("dependencies: move into
single package.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:36:55 +01:00
Denis 'GNUtoo' Carikli a9c754e324
packages: dependencies: fix command line usage.
Without that fix, running ./resources/packages/dependencies/install
prints the help and does not do any dependency installation.

This was broken from the start in the commit
fe28bc3c82 ("dependencies: move into
single package.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-11 11:36:29 +01:00
Denis 'GNUtoo' Carikli 4744953f73
u-boot-libre: move to different tasks.
The 'make release' or './build release all' commands build releases of
GNU Boot that consist of installable images and the upstream source
code used to build them.

The u-boot-libre package is instead meant to follow different release
schedules as it releases deblobbed versions of various u-boot releases
for reuse by distributions like Parabola.

Before the commit 857afa42a8 ("Switch to
packages structure.") users were expected to run the release script of
u-boot-libre separately but after it it ended up being run
automatically as part of 'make release' or ./build release all.

Renaming this script ensure that it's not run during regular releases.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-09 16:00:19 +01:00
Denis 'GNUtoo' Carikli 190d9f37bd
packages: also ship website tarball.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-09 16:00:05 +01:00
Denis 'GNUtoo' Carikli 0057ddf2a1
packages: coreboot: distclean: Use bash to avoid issue in PureOS.
Without that fix we have the following issue on PureOS byzantium:
    $ resources/packages/coreboot/distclean
    resources/packages/coreboot/distclean: 19:
    resources/packages/coreboot/../../scripts/tasks/distclean.sh:
    Bad substitution
    resources/packages/coreboot/distclean: 20: .:
    cannot open /../../..//resources/scripts/misc/sysexits.sh:
    No such file

This happens because packages/coreboot/distclean uses #!/bin/sh and
that the default sh shell isn't using bash:
    $ readlink $(which sh)
    dash
and using bash instead works fine:
    $ bash resources/packages/coreboot/distclean ; echo $?
    0
all the other distclean scripts in packages/*/ have exactly the same
issue. The tests/distlean script is also affected since it also
sources the distclean task.

So we use #!/usr/bin/env bash as it work with both Guix and regular
more or less FHS compliant distributions.

This issue was introduced by the commit
c7e28dc660 ("packages: Add distclean").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-09 15:53:48 +01:00
Denis 'GNUtoo' Carikli dbdeb37326
dependencies: rename ubuntu2004 in trisquel-10.
We can't require contributors to install Ubuntu as it has freedom
issues[1] but for contributors, installing Trisquel is easier since
it's at least FSDG compliant[2]. So it makes sense to show that
Trisquel is the primary target here.

This is also reflected in the reality as the current GNU Boot
maintainers already installed Trisquel 10 inside virtual machines
and/or containers to test this script.

[1]https://www.gnu.org/distros/common-distros.html#Ubuntu
[2]https://www.gnu.org/distros/free-distros.html

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-09 15:45:50 +01:00
Denis 'GNUtoo' Carikli fd9986da0b
Move releases from releases/<git describe> to releases.
This can simplify the overal structure of GNU Boot as we don't need to
compute some git tag everytime in the code.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:32:45 +01:00
Denis 'GNUtoo' Carikli 585f4d359a
coreboot/i945 Thinkpads: replace dd commands with INTEL_ADD_TOP_SWAP_BOOTBLOCK
It is possible to install GNU Boot on I945 Thinkpads without opening
the computer even if the nonfree bios sets the bootblock region (the
last 64K of the flash chip) read-only.

The flash chip looks like that:
+-----   -----+---------------------------+-------------------------+
|     ...     | Secondary bootblock (64k) | Primary bootblock (64k) |
+-----   -----+---------------------------+-------------------------+
0      0x1e0000                                                  2MiB

To bypass the read-only restriction we use an utility (bucts) that
tells the hardware to swap the primary bootblock with the secondary
one for the next boot. We then have to disable that swap and reflash
again.

CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK generates the two bootblocks
directly in coreboot so we don't need to use special commands to do
that anymore.

In addition the MacBook 1.1 and 2.1 are known not to have such
read-only restrictions so they don't need to have
CONFIG_INTEL_ADD_TOP_SWAP_BOOTBLOCK enabled.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:32:36 +01:00
Denis 'GNUtoo' Carikli c7e28dc660
packages: Add distclean
The various scripts present in GNU Boot are very fragile, so it's a
good idea to have a pristine GNU Boot source code for making releases.

The issue is that 'git clean -dfx' doesn't remove existing git
repositories like coreboot/ grub/ etc, so we need additional code to
take care of that.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:32:18 +01:00
Denis 'GNUtoo' Carikli 5d2405eb2e
packages: grub: payload: cleanup line length and whitespaces.
This should contain no functional modifications.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
neox: wrote the commit message
2023-12-06 17:14:34 +01:00
Denis 'GNUtoo' Carikli fe28bc3c82
dependencies: move into single package.
Having an {arch,debian,fedora35,ubuntu2004,void} GNU Boot package
looked strange. Having a dependencies package instead makes more
sense.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:14:30 +01:00
Denis 'GNUtoo' Carikli 857afa42a8
Switch to packages structure.
The various build scripts are scattered around in multiple
places. This make it hard for contributors to understand what they
need to modify.

Most GNU Boot users are interested in running GNU/Linux or BSD
operating systems. And the way to install software on these
operating systems is through a package manager. So most users and
contributors already know the package manager abstraction.

So using that abstraction makes it easier to find where things are.

The scripts to install dependencies don't really fit the new structure
but for now we move them in to make sure that everything works
fine. This could be fixed later on and migrated to a single
dependencies packages by auto-detecting the distribution with
/etc/os-release.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
2023-12-06 17:14:14 +01:00