Commit Graph

198 Commits

Author SHA1 Message Date
Denis 'GNUtoo' Carikli 6fa9af30ad
Remove images with the seabios_grubfirst main payload.
The seabios_grubfirst images provides the same functionality than the
GRUB images, but instead of having GRUB being loaded directly by
Coreboot, Coreboot loads SeaBIOS which then loads GRUB.

These images probably exist to enable end users to try it to workaround
potential compatibility issues between the OS and GRUB with the GRUB
image as we have a BIOS implementation being loaded.

While this looks useful, it also makes things more complicated:

- It increase the number of images to choose from, and it's
  complicated to explain the difference between grub and
  seabios_grubfirst to end users.

  For instance for the "x200_8mb", users need to choose between 2 GPU
  modes (corebootfb, or txtmode) and 12 keyboard layouts. So having to
  choose between 2 payloads instead of 3 with one difference that is
  hard to understand makes things easier.

- It makes testing more complicated as we have one more payload to
  test and we also need to make sure to always differenciate both
  images in bug reports, documentation, etc.

And if issues arise from this change in the future, we could work with
upstream to fix them and/or replace the grub images with
'seabios_grubfirst' while keeping the 'grub' name to avoid
complicating things by having two main payloads with identical
features.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
neox: fixed typos in commit message
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:32:14 +02:00
Denis 'GNUtoo' Carikli ab4cd051e2
packages: roms: download: fix missing qemu-img.
Without that fix we have the following build error on Trisquel when
qemu-utils is not installed:
    successfully built /gnu/store/[...]-gnuboot-trisquel-preseed.img-07-2024.drv
    resources/packages/roms/download: line 175: qemu-img: command not found
    make: *** [Makefile:713: release] Error 127

An option would be to make sure that the host has qemu_img by adding
its corresponding packages in resources/dependencies/ and to check for
it in configure.ac, but since we already build the qemu with Guix,
it's easier to just reuse that, and this also gives us less
maintenance in the long run.

This was broken by the commit 9cc02ddde1
("packages: roms: Start adding automatic tests.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:25:47 +02:00
Denis 'GNUtoo' Carikli 56537e0f2e
guix: gnuboot-trisquel-grub.img: add missing inputs.
The bug #66224 (https://savannah.gnu.org/bugs/?66224) was spoted
because the checksum check failed in the gnuboot-trisquel-preseed.img
package.

We only observed the following with diffoscope:
    $ diffoscope preseed.img.old preseed.img.new
    --- preseed.img.old
    +++ preseed.img.new
    [...]
     00000a20: 5052 4553 4545 4420 4346 4720 1800 0000  PRESEED CFG ....
    -00000a30: 21ec 21ec 0000 0000 21ec 0200 f50d 0000  !.!.....!.......
    +00000a30: 21ec 2859 0000 0000 21ec 0200 f50d 0000  !.(Y....!.......
     00000a40: 4365 0000 00ff ffff ffff ff0f 0000 ffff  Ce..............
    [...]
     00000aa0: 5348 5554 444f 7e31 5345 5220 0000 0000  SHUTDO~1SER ....
    -00000ab0: 21ec 21ec 0000 0000 21ec 0400 3002 0000  !.!.....!...0...
    +00000ab0: 21ec 2859 0000 0000 21ec 0400 3002 0000  !.(Y....!...0...
     00000ac0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
    [...]

instead of having observed something like that as well:
    +00005a10: 7061 7274 206f 6620 474e 5520 426f 6f74  part of GNU Boot
    +00005a20: 2e0a 230a 2320 2043 6f70 7972 6967 6874  ..#.#  Copyright
    +00005a30: 2028 4329 2032 3032 3420 4465 6e69 7320   (C) 2024 Denis
    +00005a40: 2747 4e55 746f 6f27 2043 6172 696b 6c69  'GNUtoo' Carikli
    +00005a50: 203c 474e 5574 6f6f 4063 7962 6572 6469   <GNUtoo@cyberdi
    +00005a60: 6d65 6e73 696f 6e2e 6f72 673e 0a23 0a23  mension.org>.#.#
    +00005a70: 2020 5468 6973 2066 696c 6520 6973 2066    This file is f
    +00005a80: 7265 6520 736f 6674 7761 7265 3b20 796f  ree software; yo
    +00005a90: 7520 6361 6e20 7265 6469 7374 7269 6275  u can redistribu
    +00005aa0: 7465 2069 7420 616e 642f 6f72 206d 6f64  te it and/or mod
    +00005ab0: 6966 7920 6974 0a23 2020 756e 6465 7220  ify it.#  under
    +00005ac0: 7468 6520 7465 726d 7320 6f66 2074 6865  the terms of the
    +00005ad0: 2047 4e55 204c 6573 7365 7220 4765 6e65   GNU Lesser Gene
    +00005ae0: 7261 6c20 5075 626c 6963 204c 6963 656e  ral Public Licen
    +00005af0: 7365 2061 7320 7075 626c 6973 6865 6420  se as published
    +00005b00: 6279 0a23 2020 7468 6520 4672 6565 2053  by.#  the Free S
    +00005b10: 6f66 7477 6172 6520 466f 756e 6461 7469  oftware Foundati
    +00005b20: 6f6e 3b20 6569 7468 6572 2076 6572 7369  on; either versi
    +00005b30: 6f6e 2032 2e31 206f 6620 7468 6520 4c69  on 2.1 of the Li
    +00005b40: 6365 6e73 652c 206f 720a 2320 2028 6174  cense, or.#  (at
    +00005b50: 2079 6f75 7220 6f70 7469 6f6e 2920 616e   your option) an
    +00005b60: 7920 6c61 7465 7220 7665 7273 696f 6e2e  y later version.
    +00005b70: 0a0a 5b55 6e69 745d 0a44 6573 6372 6970  ..[Unit].Descrip
    +00005b80: 7469 6f6e 3d53 6875 7420 646f 776e 2074  tion=Shut down t
    +00005b90: 6865 2056 4d20 746f 206d 616b 6520 7468  he VM to make th
    +00005ba0: 6520 626f 6f74 2074 6573 7420 636f 6e63  e boot test conc
    +00005bb0: 6c75 6465 2e0a 4465 6661 756c 7444 6570  lude..DefaultDep
    +00005bc0: 656e 6465 6e63 6965 733d 6e6f 0a57 616e  endencies=no.Wan
    +00005bd0: 7473 3d64 6973 706c 6179 2d6d 616e 6167  ts=display-manag
    +00005be0: 6572 2e73 6572 7669 6365 0a41 6674 6572  er.service.After
    +00005bf0: 3d64 6973 706c 6179 2d6d 616e 6167 6572  =display-manager
    +00005c00: 2e73 6572 7669 6365 0a0a 5b53 6572 7669  .service..[Servi
    +00005c10: 6365 5d0a 5479 7065 3d6f 6e65 7368 6f74  ce].Type=oneshot
    +00005c20: 0a52 656d 6169 6e41 6674 6572 4578 6974  .RemainAfterExit
    +00005c30: 3d79 6573 0a45 7865 6353 7461 7274 3d2f  =yes.ExecStart=/
    +00005c40: 7573 722f 7362 696e 2f70 6f77 6572 6f66  usr/sbin/powerof
    +00005c50: 660a 0a5b 496e 7374 616c 6c5d 0a57 616e  f..[Install].Wan
    +00005c60: 7465 6442 793d 6d75 6c74 692d 7573 6572  tedBy=multi-user
    +00005c70: 2e74 6172 6765 740a 0000 0000 0000 0000  .target.........

To my understanding, this is because shutdown-after-boot.service was
modified without touching the package definition at all, so Guix
didn't see any changes.

Adding the missing files in either source or inputs should normally
fix this issue. My interpretation has also been confirmed by
discussing with Simon Tournier during a local event (though he was in
a hurry as he had to leave).

I didn't manage to reproduce the problem after that, but given the
discussion with Simon Tournier, it's a good idea to still add
local-files as inputs to all the packages that use local-files. Some
packages in Guix also add source code inside inputs like in the
musl-cross package.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:20:30 +02:00
Denis 'GNUtoo' Carikli 55ec388b69
guix: gnuboot-trisquel-preseed.img: add missing inputs.
The bug #66224 (https://savannah.gnu.org/bugs/?66224) was spoted
because the checksum check failed in the gnuboot-trisquel-preseed.img
package.

We only observed the following with diffoscope:
    $ diffoscope preseed.img.old preseed.img.new
    --- preseed.img.old
    +++ preseed.img.new
    [...]
     00000a20: 5052 4553 4545 4420 4346 4720 1800 0000  PRESEED CFG ....
    -00000a30: 21ec 21ec 0000 0000 21ec 0200 f50d 0000  !.!.....!.......
    +00000a30: 21ec 2859 0000 0000 21ec 0200 f50d 0000  !.(Y....!.......
     00000a40: 4365 0000 00ff ffff ffff ff0f 0000 ffff  Ce..............
    [...]
     00000aa0: 5348 5554 444f 7e31 5345 5220 0000 0000  SHUTDO~1SER ....
    -00000ab0: 21ec 21ec 0000 0000 21ec 0400 3002 0000  !.!.....!...0...
    +00000ab0: 21ec 2859 0000 0000 21ec 0400 3002 0000  !.(Y....!...0...
     00000ac0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
    [...]

instead of having observed something like that as well:
    +00005a10: 7061 7274 206f 6620 474e 5520 426f 6f74  part of GNU Boot
    +00005a20: 2e0a 230a 2320 2043 6f70 7972 6967 6874  ..#.#  Copyright
    +00005a30: 2028 4329 2032 3032 3420 4465 6e69 7320   (C) 2024 Denis
    +00005a40: 2747 4e55 746f 6f27 2043 6172 696b 6c69  'GNUtoo' Carikli
    +00005a50: 203c 474e 5574 6f6f 4063 7962 6572 6469   <GNUtoo@cyberdi
    +00005a60: 6d65 6e73 696f 6e2e 6f72 673e 0a23 0a23  mension.org>.#.#
    +00005a70: 2020 5468 6973 2066 696c 6520 6973 2066    This file is f
    +00005a80: 7265 6520 736f 6674 7761 7265 3b20 796f  ree software; yo
    +00005a90: 7520 6361 6e20 7265 6469 7374 7269 6275  u can redistribu
    +00005aa0: 7465 2069 7420 616e 642f 6f72 206d 6f64  te it and/or mod
    +00005ab0: 6966 7920 6974 0a23 2020 756e 6465 7220  ify it.#  under
    +00005ac0: 7468 6520 7465 726d 7320 6f66 2074 6865  the terms of the
    +00005ad0: 2047 4e55 204c 6573 7365 7220 4765 6e65   GNU Lesser Gene
    +00005ae0: 7261 6c20 5075 626c 6963 204c 6963 656e  ral Public Licen
    +00005af0: 7365 2061 7320 7075 626c 6973 6865 6420  se as published
    +00005b00: 6279 0a23 2020 7468 6520 4672 6565 2053  by.#  the Free S
    +00005b10: 6f66 7477 6172 6520 466f 756e 6461 7469  oftware Foundati
    +00005b20: 6f6e 3b20 6569 7468 6572 2076 6572 7369  on; either versi
    +00005b30: 6f6e 2032 2e31 206f 6620 7468 6520 4c69  on 2.1 of the Li
    +00005b40: 6365 6e73 652c 206f 720a 2320 2028 6174  cense, or.#  (at
    +00005b50: 2079 6f75 7220 6f70 7469 6f6e 2920 616e   your option) an
    +00005b60: 7920 6c61 7465 7220 7665 7273 696f 6e2e  y later version.
    +00005b70: 0a0a 5b55 6e69 745d 0a44 6573 6372 6970  ..[Unit].Descrip
    +00005b80: 7469 6f6e 3d53 6875 7420 646f 776e 2074  tion=Shut down t
    +00005b90: 6865 2056 4d20 746f 206d 616b 6520 7468  he VM to make th
    +00005ba0: 6520 626f 6f74 2074 6573 7420 636f 6e63  e boot test conc
    +00005bb0: 6c75 6465 2e0a 4465 6661 756c 7444 6570  lude..DefaultDep
    +00005bc0: 656e 6465 6e63 6965 733d 6e6f 0a57 616e  endencies=no.Wan
    +00005bd0: 7473 3d64 6973 706c 6179 2d6d 616e 6167  ts=display-manag
    +00005be0: 6572 2e73 6572 7669 6365 0a41 6674 6572  er.service.After
    +00005bf0: 3d64 6973 706c 6179 2d6d 616e 6167 6572  =display-manager
    +00005c00: 2e73 6572 7669 6365 0a0a 5b53 6572 7669  .service..[Servi
    +00005c10: 6365 5d0a 5479 7065 3d6f 6e65 7368 6f74  ce].Type=oneshot
    +00005c20: 0a52 656d 6169 6e41 6674 6572 4578 6974  .RemainAfterExit
    +00005c30: 3d79 6573 0a45 7865 6353 7461 7274 3d2f  =yes.ExecStart=/
    +00005c40: 7573 722f 7362 696e 2f70 6f77 6572 6f66  usr/sbin/powerof
    +00005c50: 660a 0a5b 496e 7374 616c 6c5d 0a57 616e  f..[Install].Wan
    +00005c60: 7465 6442 793d 6d75 6c74 692d 7573 6572  tedBy=multi-user
    +00005c70: 2e74 6172 6765 740a 0000 0000 0000 0000  .target.........

To my understanding, this is because shutdown-after-boot.service was
modified without touching the package definition at all, so Guix
didn't see any changes.

Adding the missing files in either source or inputs should normally
fix this issue. My interpretation has also been confirmed by
discussing with Simon Tournier during a local event (though he was in
a hurry as he had to leave).

The change was introduced during the review of the patch that became
the commit 9cc02ddde1 ("packages: roms:
Start adding automatic tests.") where an issue was fixed in
shutdown-after-boot.service but the two GNU Boot maintainers forget to
update the checksum of the resulting preseed.img file.

I didn't manage to reproduce the problem after that, but given the
discussion with Simon Tournier, it's a good idea to still add
local-files as inputs. Some packages in Guix also add source code
inside inputs like in the musl-cross package.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:18:20 +02:00
Denis 'GNUtoo' Carikli 4c3de49fbb
guix: gnuboot-trisquel-preseed.img: Make it reproducible.
The "4.7 Mcopy" section inside the mtools info manual explains that
mcopy's '-m' argument "Preserve the file modification time.".

So in the commit 9cc02ddde1 ("packages:
roms: Start adding automatic tests."), I vaguely recall having used it
to workaround some reproducibility issues.

Guix 1.4.0 uses mtools 4.0.42. So after retrieving the source with
'guix time-machine --commit=v1.4.0 -- build --system=i686-linux
--source mtools' we have that in the writeit function in mcopy.c (with
arg->preserveTime being set by -m):
	/* preserve mod time? */
	if (arg->preserveTime)
		now = date;
	else
		getTimeNow(&now);

And date is set by the following in mtools 4.0.42:
	if (Source->Class->get_data(Source, &date, &filesize,
				    &type, 0) < 0 ){
		fprintf(stderr, "Can't stat source file\n");
		return -1;
	}

Since Guix is supposed to make images reproducible somehow, and that
mtools isn't patched by Guix to do that, and that it takes the time
from the source file, I used '-m'.

Since I was confident enough that gnuboot-trisquel-preseed.img was
reproducible, in the commit 9cc02ddde1
("packages: roms: Start adding automatic tests."), I also added the
checksum and checked it at build time to make sure the image is really
reproducible.

But when building this image again few days ago the checksum was
different. So I used the Guix diffoscope package to investigate the
issue.

Note that at the time of writing, you either need to use Guix's
diffoscope or to disable guestfs support in diffoscope for it to work,
otherwise diffoscope 277-1 (the version in the Parabola at the time of
writing) produce a python error probably because the partition table
size is 0, and it contains a FAT12 filesystem according to fdisk, but
then the FAT12 filesystem contained within also contains that
partition table. See the upstream bugreport at
https://salsa.debian.org/reproducible-builds/diffoscope/-/issues/390
for more details.

Here the preseed.img.old file corresponds to the checksum in the
commit 9cc02ddde1 ("packages: roms:
Start adding automatic tests."), and preseed.img.new to the one I got
by building again few days ago:
    $ sha512sum preseed.img.old preseed.img.new
    f12a4a941afc9e24288481ed1b44fbfedf52d706e9e8aa01cfb26bf5ccd54ca52afe9ef5497faf2966ba730c1200d8b8691ebb87e6a75cd8966e0edd49bcb3c0  preseed.img.old
    5613d9a5cdd8847d5a688d56c77b8cf8881baa5eef7f373bb05a5ec601e383204e6a57b399d3de913c29386b18e7e3903c9511037922204744e3234cadc8671b  preseed.img.new

And by using diffoscope we have:
    $ diffoscope preseed.img.old preseed.img.new
    --- preseed.img.old
    +++ preseed.img.new
    │┄ Format-specific differences are supported for ext2/ext3/ext4/btrfs/fat filesystems but no file-specific differences were detected; falling back to a binary diff. file(1) reports: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 2048 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 2, sectors/track 16, serial number 0x1234abcd, label: "MEDIA      ", FAT (12 bit)
    │┄ Installing the 'guestfs' Python module may produce a better output.
    @@ -157,23 +157,23 @@
     000009c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     000009d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     000009e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     000009f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000a00: 4d45 4449 4120 2020 2020 2008 0000 5a4b  MEDIA      ...ZK
     00000a10: 6e46 6e46 0000 5a4b 6e46 0000 0000 0000  nFnF..ZKnF......
     00000a20: 5052 4553 4545 4420 4346 4720 1800 0000  PRESEED CFG ....
    -00000a30: 21ec 21ec 0000 0000 21ec 0200 f50d 0000  !.!.....!.......
    +00000a30: 21ec 2859 0000 0000 21ec 0200 f50d 0000  !.(Y....!.......
     00000a40: 4365 0000 00ff ffff ffff ff0f 0000 ffff  Ce..............
     00000a50: ffff ffff ffff ffff ffff 0000 ffff ffff  ................
     00000a60: 0272 002d 0062 006f 006f 000f 0000 7400  .r.-.b.o.o....t.
     00000a70: 2e00 7300 6500 7200 7600 0000 6900 6300  ..s.e.r.v...i.c.
     00000a80: 0173 0068 0075 0074 0064 000f 0000 6f00  .s.h.u.t.d....o.
     00000a90: 7700 6e00 2d00 6100 6600 0000 7400 6500  w.n.-.a.f...t.e.
     00000aa0: 5348 5554 444f 7e31 5345 5220 0000 0000  SHUTDO~1SER ....
    -00000ab0: 21ec 21ec 0000 0000 21ec 0400 3002 0000  !.!.....!...0...
    +00000ab0: 21ec 2859 0000 0000 21ec 0400 3002 0000  !.(Y....!...0...
     00000ac0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000ad0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000ae0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000af0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000b00: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000b10: 0000 0000 0000 0000 0000 0000 0000 0000  ................
     00000b20: 0000 0000 0000 0000 0000 0000 0000 0000  ................

Here it really look like a timestamp, and since mdir gave no
difference between the 2 files inside the 2 images, I patched mdir
with the following patch:
@@ -438,6 +438,18 @@ static int list_file(direntry_t *entry, MainParam_t *mp UNUSEDP)
                if(*mdir_longname)
                        printf(" %s", mdir_longname);
                printf("\n");
+
+               printf("-> ctime_ms: 0x%hhx\n", entry->dir.ctime_ms);
+               printf("-> ctime[0]: 0x%hhx\n", entry->dir.ctime[0]);
+               printf("-> ctime[1]: 0x%hhx\n", entry->dir.ctime[1]);
+               printf("-> cdate[0]: 0x%hhx\n", entry->dir.cdate[0]);
+               printf("-> cdate[1]: 0x%hhx\n", entry->dir.cdate[1]);
+               printf("-> adate[0]: 0x%hhx\n", entry->dir.adate[0]);
+               printf("-> adate[1]: 0x%hhx\n", entry->dir.adate[1]);
+               printf("-> time[0]: 0x%hhx\n", entry->dir.time[0]);
+               printf("-> time[1]: 0x%hhx\n", entry->dir.time[1]);
+               printf("-> date[0]: 0x%hhx\n", entry->dir.date[0]);
+               printf("-> date[1]: 0x%hhx\n", entry->dir.date[1]);
        } else {
                char tmp[4*MAX_VNAMELEN+1];

And this then gives  the following diff:
 -> ctime[1]: 0x0
 -> cdate[0]: 0x21
 -> cdate[1]: 0xec
--> adate[0]: 0x21
--> adate[1]: 0xec
+-> adate[0]: 0x28
+-> adate[1]: 0x59
 -> time[0]: 0x0
 -> time[1]: 0x0
 -> date[0]: 0x21
@@ -20,8 +20,8 @@
 -> ctime[1]: 0x0
 -> cdate[0]: 0x21
 -> cdate[1]: 0xec
--> adate[0]: 0x21
--> adate[1]: 0xec
+-> adate[0]: 0x28
+-> adate[1]: 0x59
 -> time[0]: 0x0
 -> time[1]: 0x0
 -> date[0]: 0x21

This means that the access date difers. This also explains why it was
not spoted during the creation of the commit
9cc02ddde1 ("packages: roms: Start
adding automatic tests.") as tests were done at the same date.

So this time I created a build VM by adding the following service to
my Guix system configuration (I also had to remove hacks I had that
set the kvm group id to the same ID used by Trisquel run 'guix system
reconfigure' and rebooted):
    (service virtual-build-machine-service-type
            (virtual-build-machine
             (cpu "host")
             (cpu-count 2)
             (auto-start? #f)))

This created a VM whose clock is set to 'a few years ago' according to
the Guix manual[1].

[1]https://guix.gnu.org/manual/devel/en/html_node/Virtualization-Services.html#Virtual-Build-Machines

I then ran built the image as usual:
    $ guix time-machine --commit=v1.4.0 -- build -L resources/guix/ \
      gnuboot-trisquel-preseed.img
      --without-tests=gnuboot-trisquel-preseed.img

I then copied the resulting image, started the build VM with 'herd
start build-vm', deleted the old image from the store (with 'guix gc
-D') and then re-built it (it used the VM to offload the build as
shown in the build logs).

And now both resulting files are now the same despite being built on a
different date.

See also the following blog post for more context into use cases for
this build VM[2]:

[2]https://hpc.guix.info/blog/2024/03/adventures-on-the-quest-for-long-term-reproducible-deployment/

Bug: https://savannah.gnu.org/bugs/?66224
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:05:39 +02:00
Denis 'GNUtoo' Carikli 40fcb94e2f
guix: gnuboot-trisquel-preseed.img: enable to disable tests.
The image resulting from the gnuboot-trisquel-preseed.img package is
checked against checksums inside the 'check function of this package.

If for some reasons we want to update the checksums, an easy way to do
it is to build the package but not run the 'check function and do the
checksum on the resulting file. The Guix 1.4.0 manual explains how to
not run 'check with the "--without-tests=package" option in the
"10.1.2 Package Transformation Options" section.

However if we attempt that with the following command, the
without-tests has no impact at all:
    $ guix time-machine --commit=v1.4.0 -- build -L resources/guix/ \
    gnuboot-trisquel-preseed.img \
    --without-tests=gnuboot-trisquel-preseed.img

This changes makes the above command work as expected.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-10-05 11:05:14 +02:00
Denis 'GNUtoo' Carikli bcb729a8aa
coreboot: blobs.list: remove nonfree vboot futility test data.
The test data consists mostly in nonfree boot firmware images. The
images contain nonfree binaries like for instance microcode updates
without complete and corresponding source code.

As more and more boot firmware images are added over time it's a good
idea to just remove everything in that directory to make sure that we
don't ship nonfree software from that directory again, while also
lowering the maintenance costs.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-09 17:33:54 +02:00
Adrien Bourmault c18e78555d
ressources/coreboot/fam15h*: fix building crossgcc 8.3.0 (fixes #64870)
This commit fixes an error encountered on Trisquel 11 while trying to
build the fam15h coreboot crossgcc 8.3.0:

In file included from /usr/include/signal.h:328,
                 from /usr/include/x86_64-linux-gnu/sys/param.h:28,
                 from ../../gcc-8.3.0/gcc/system.h:298,
                 from ../../gcc-8.3.0/gcc/ada/init.c:65:
../../gcc-8.3.0/gcc/ada/init.c:575:18: error: missing binary operator before token "("
  575 | # if 16 * 1024 < MINSIGSTKSZ
      |                  ^~~~~~~~~~~
make[1]: *** [Makefile:1110 : ada/init.o] Erreur 1

The changes of the GLIBC that removed the MINSKTSZ constant was
introduced only for systems using the Linux kernel, and while the
changelog is recommanding using sysconf to get the value of
`_SC_MINSTKSZ`. The problem is that it does not allow to get the value
in the preprocessor context.

This error has been corrected on upstream GCC by Eric Botcazou <ebotcazou@adacore.com>
but this was not applied on upstream coreboot (even 4.11 branch).
It has been accepted by GCC and the bug report has been set as RESOLVED
FIXED, meaning it solved the bug.

The MINSTKSZ patch is needed for all GCC versions from 8 to 9, since this
commit solved the bug for 9, 10 and later versions. It has been adopted
by OpenSUSE for its GCC 8 package:
https://build.opensuse.org/projects/devel:gcc/packages/gcc8/files/gcc8-ada-MINSTKSZ.patch

Here's the corresponding patch header (in debian's format:
https://dep-team.pages.debian.net/deps/dep3/):
    Origin: upstream, https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=a5a7cdcaa0c29ee547c41d24f495e9694a6fe7f1
    Bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99264
    Bug-GNU Boot: https://savannah.gnu.org/bugs/?64870

The MINSTKSZ patch added by this commit is unmodified from the
OpenSUSE one mentioned above, and the OpenSUSE patch is probably a
backport of the upstream GCC patch as there is not difference in what
it does.

Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
GNUtoo: small formatting of the commit message + last paragraph.
Acked-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
2024-09-09 16:05:14 +02:00
Denis 'GNUtoo' Carikli 23118cc799
packages: release: test: really fail when files are missing from ${release_files}.
We have a test for catching a situation where new files are added in
releases without adding them as well in the ${release_files} variable
to test for their existance.

But this test only warn of the issue instead of failing. And since
people might not inspect all the log details in depth, it's better to
fail instead.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:35:57 +02:00
Denis 'GNUtoo' Carikli a113eceaa4
packages: release: test: really warn when files are missing from ${release_files}.
Before this commit if some files were in the release directory but
missing from ${release_files}, it would show something like that:
    [ !! ] release/i945-thinkpads-install/gnuboot_src.tar

The ${release_files} variable is used to test for files missing in the
release directory, and it prints something if a file is missing:
    [ !! ] release/roms/gnuboot-0.1-rc3-95-g1783708_d510mo.tar.xz is missing

Since confusion is possible between the two tests (especially if the
people looking at the log don't have all the code and context in mind
when doing that), this commit changes the code to print something like
that instead:
    [ !! ] release/i945-thinkpads-install/gnuboot_src.tar missing in ${release_files}

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
neox: fixed commit message
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:34:14 +02:00
Denis 'GNUtoo' Carikli 77d000a1ab
packages: release: test: add files missing from ${release_files}.
This was broken by the commit 7df6d6169b
("Build bucts and patched flashrom for I945 ThinkPads with Guix.").

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:32:36 +02:00
Denis 'GNUtoo' Carikli fc1c2686b4
i945-thinkpads-install-utilities: fix build.
Without that fix the build is stuck on the following during days on a
ThinkPad X200 with 8GiB of RAM and an Intel P8600:
    building /gnu/store/z7k1rs4j98s5zj0f9xrn1p3k1w1fmgqa-proot-static-5.3.0.drv...
    / 'check' phase

And the Guix manual says the following about -R/-RR:
    When this option is passed once, the resulting binaries require
    support for “user namespaces” in the kernel Linux; when passed
    _twice_(1), relocatable binaries fall to back to other techniques
    if user namespaces are unavailable, and essentially work
    anywhere—see below for the implications.

So by using -R instead of -RR we don't build proot-static anymore, and
we rely on the fact that most GNU/Linux distribution have namespaces
enabled (else a lot of packages like Guix or container software
would not work on them).

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
neox: fixed typo in commit message
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:31:15 +02:00
Denis 'GNUtoo' Carikli 2c5382f249
build system: wrap git commands.
We need to somehow isolate the git configuration being used to build
GNU Boot from the rest of the system as otherwise things like
automatic gpg signatures can kick in and block the build because it
waits for a pinentry.

In addition:
- It enables us to simplify the build code as the git configuration is
  now the same during all the build.
- Contributors don't need to setup git anymore just to build GNU
  Boot. This also makes GNU Boot a bit more reproductible.

Replacing git inside the build scripts / Makefiles enable us to still
run them manually (like ./resources/packages/coreboot/download).

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:18:53 +02:00
Denis 'GNUtoo' Carikli d0028b81ed
packages: roms: boot: add --help option.
The resources/packages/roms/boot script already work with the "help"
argument, however most of the other scripts use --help, so for
consistency we need to add --help as well.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:14:14 +02:00
Denis 'GNUtoo' Carikli 6721094e10
packages: descriptors: add tests.
The Intel Flash Descriptor files are supposed to be reproducible
already, so it's a good idea to add a test for that.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:13:06 +02:00
Denis 'GNUtoo' Carikli 5dccbfb4c7
dependencies: add libtool.
Without that fix, with a very basic Trisquel 11 (aramo) installation
and after running resources/dependencies/trisquel-10, the GNU Boot
autogen.sh is broken due to the lack of libtool:
    $ ./autogen.sh 2>&1  > temp
    autoreconf: export WARNINGS=
    autoreconf: Entering directory '.'
    autoreconf: configure.ac: not using Gettext
    autoreconf: running: aclocal --force
    autoreconf: configure.ac: tracing
    autoreconf: configure.ac: not using Libtool
    autoreconf: configure.ac: not using Intltool
    autoreconf: configure.ac: not using Gtkdoc
    autoreconf: running: /usr/bin/autoconf --force
    configure.ac:79: error: possibly undefined macro: AC_PROG_LIBTOOL
          If this token and others are legitimate, please use m4_pattern_allow.
          See the Autoconf documentation.
    autoreconf: error: /usr/bin/autoconf failed with exit status: 1

So we simply make sure that libtool is installed as part of the
dependencies.

For Arch, libtool is already in base-devel (checked with Parabola).

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:12:30 +02:00
Denis 'GNUtoo' Carikli 9cc02ddde1
packages: roms: Start adding automatic tests.
In GNU Boot, at the time of writing, we want to advise users to use
the GRUB images as they don't require users to modify their
distribtions.

However before the commit aec2e2f2bcf7693a05e416f9722e15b9d1854516
("Fix bug #65663 (No support for LVM2)."), most computers using LVM2
would not boot with these images.

The bug is now fixed by this commit, however since we ship a custom
grub.cfg and that it is very important to get it right, it's a good
idea to have some sort of automated testing for it.

It uses Trisquel (instead of other FSF certified distributions) for
several reasons:
- Trisquel can be used by less technical users, and so it's important
  to make sure it works as less technical users tend to have harder
  times finding workaround when things break.

- It's probably the GNU/Linux distribution that most current and
  potential GNU Boot users use.

- It is also maintained by a community that welcome contributions, so
  if we hit some issues, we can also contribute to get it fixed (we
  also verified that multiple times by contributing to it).

Note that we also welcome tests that reuse other distributions as
well.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
neox: fixed typos in the commit message and fixed copyright notice
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 17:11:04 +02:00
Denis 'GNUtoo' Carikli f0959c9283
packages: roms, src: release: xz: show progress.
The xz compression operation can be quite long, so it's a good idea to
show its progression.

To do that we need to produce a tarball file first as xz doesn't have
any idea of the progression when just compressing a piped stream of
data.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 16:33:31 +02:00
Denis 'GNUtoo' Carikli 860b00bf1e
ressources/grub, website: add LVM2 support (fix bug #65663 "No support for LVM2").
This commit fixes a bug causing the GRUB2 payload not finding
LVM2 partitions.

See https://savannah.gnu.org/bugs/index.php?65663

Reported-by: WodeShengli <wodeshengli@disroot.org>
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien Bourmault <neox@gnu.org>
2024-09-08 16:31:12 +02:00
Denis 'GNUtoo' Carikli 2d2c6f1fbd
packages: Add extremely basic documentation for the various tasks.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-07 13:04:17 +02:00
Denis 'GNUtoo' Carikli ada459875c
Use a released guix revision globally.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-07 13:01:46 +02:00
Denis 'GNUtoo' Carikli 4857df11a6
releases: fix autogen.sh not found.
Without that fix, 'make release' results in the following issue:
    resources/scripts/misc/generate-configure-makefiles.sh:
    line 46: ./autogen.sh: No such file or directory
    make: *** [Makefile:711: release] Error 127

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-07 12:36:43 +02:00
Denis 'GNUtoo' Carikli 33e4563ca2
releases: fix 'i945-thinkpads-install-utilities/' not found.
Without that fix we have the following when running 'make release':
    make[1]: Leaving directory '/home/gnutoo/work/projects/gnuboot/gnuboot'
    cp: cannot stat 'i945-thinkpads-install-utilities/':
        No such file or directory

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-07 12:35:34 +02:00
Denis 'GNUtoo' Carikli b84b45ca06
clarify configure option to limit the number of cores used by Guix.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-07 12:34:39 +02:00
Denis 'GNUtoo' Carikli 84293df92f
resources: grub: config: grub_memdisk.cfg: Update copyrights.
The creation of what became grub_memdisk.cfg can be tracked back to
the grub.cfg that I published in 2013 in my build-makefiles repository
and that is available in the very first Libreboot release in
build-makefiles/grub/memdisk/boot/grub/grub.cfg.

It was then modified by leah in 2014 who removed most of my work from
it. Details can be seen in the following repository:
[1]https://notabug.org/libreboot/obsolete-repository-preserved-for-historical-purposes

It was then picked up as-is in the osbmk repository and then the lbmk
repository that GNU Boot also has the history of.

Since we now have proper copyright history in all the files in
resources/grub/config we can now safely remove the AUTHORS file.

As for the COPYING file, we already have copyright headers and we
already ship a copy of the GPLv3 in our repository.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-09-07 12:33:05 +02:00
Denis 'GNUtoo' Carikli 65c0e57a55
resources: packages: src: release: Update copyright header.
The resources/packages/src/release content appeared in osbmk in the
2e2fe863172b513c3bdd4d0497657223ff6abdb4 ("Retroboot beta release,
20201228"). This commit is present in both the master branch and the
libre branch of osbmk.

The libre branch was then used as a basis to the (first) commit
89517ed6b9 ("libreboot!").

Then since GNU Boot kept the history of lbmk, we then have the rest of
the history of that file.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-08-30 16:42:06 +02:00
Denis 'GNUtoo' Carikli 2695c97561
grub.cfg: Add copyright header.
The GNU Boot project merged several repositories in its main git
repository, each with their separate histories. So far we have:
- the documentation/website that came from Libreboot
- the documentation/website pictures that also came from Libreboot
- the build system that also came from Libreboot (it's called lbmk there).
- some website autotools build system that was made from scratch by me.

The grub.cfg we use comes from the build system repository (lbmk). I
extracted the copyrights from the git commits of this repository.

However the first commit of lbmk (which we also have in our main GNU
Boot repository) is the following:
    commit 89517ed6b9
    Author: [Leah Rowe]
    Date:   [2021]

        libreboot!

        this is forked from the "libre" branch in osboot, which is itself a libre,
        deblobbed fork of osboot, a blobbed up fork of libreboot

        libreboot needed to be purged clean. this is the new libreboot development
        repository. the old one has been abandoned

So I had to continue and look at the libre branch of osboot and
extract the copyrights from its commits as well.

Then I downloaded osbmk (https://notabug.org/osboot/osbmk) and
continued to look.

And here too we need to go beyond the first commit again, because
osbmk is based on 'Libreboot 20160907':
    commit df76c3eb63dd8f4979d78ca262218eedb93512ed
    Author: [Leah Rowe]
    Date:   [2020]

        Fork Libreboot 20160907 build system. Large parts have been re-written.

        This build system builds ROMs for X230, but they are so far untested.
        Use at your own risk!

        I still need to write documentation and do testing.
        SOON: T60 with ATI GPU

We can find Libreboot 20160907 in
https://notabug.org/libreboot/obsolete-repository-preserved-for-historical-purposes

And then we end up with this commit:

    commit cee90ae0fce6d6aee8d78969b60c952c8890abd6
    Author: [Leah Rowe]
    Date:   [2014]

        Libreboot release 6 beta 1.

Before that Libreboot only had tarball releases and the very first
tarball release was based on build scripts/Makefiles made by me, and
the git repository having the GRUB configuration can be found in
Libreboot 20131212 in X60/build-makefiles.

    commit 80c37b9093be8325bf9ca8271ae4c6dba8fe81d6
    Author: [GNUtoo]
    Date:   [2013]

        Initial commit.

        For now we only build the grub payload.

        Signed-off-by: [GNUtoo]

And the intial grub.cfg was made by hand by me.

While I was at it I also updated the name/email combination in the
copyright header for the ones currently used.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-08-30 16:40:07 +02:00
Denis 'GNUtoo' Carikli cf8a1e26c7
automake: add i945-thinkpads-install-utilities-help target.
Even if we still don't have any installation instructions that use
these tools, we still need to document somehow what the targets to.

And not adding a help for that would make it inconsistent with the
other targets that are somewhat documented in make help.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-06-16 12:55:15 +02:00
Adrien Bourmault e3caa43f38
Remove old logos, and make the website point to the new ones.
Signed-off-by: Adrien 'neox' Bourmault <neox@gnu.org>
GNUtoo: removed old logos and stickers, Libreboot -> GNU Boot,
        commit message, merged resources/grub/background/ and
	reworded a bit the copyright declaration.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-06-16 12:55:14 +02:00
Denis 'GNUtoo' Carikli 6e5e4f3421
Merge website and website-build.
Before being merged with the commit
dc6e1f32c1 ("Import website-build to
build the GNU Boot website."), website-build was a separate git
repository.

And so, even after the merge, until the commit
20d122e94a ("website-build: use website
from local git repository."), it still worked in the same way and
still downloaded the website from git.

This prevented merging the website and website-build directories
together as the GNU Boot repository also needed to be a valid Untitled
website repository as well.

Now after this commit, the website is built from the same git tree, so
we can simply adjust the build scripts to be able to move things
around.

In addition of making things more clear for contributors, it also
simplify the migration to haunt as with haunt we typically have the
haunt.cfg (and the autotools build code if needed) code in the top
directory and the markdown files in a subdirectory.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-06-11 20:29:47 +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 b175bd85a5
Add topdir ./configure.
The goal here is to be able to add configure options later on.

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 34007c4baf
scripts: misc: guix.sh: make it pass shellcheck.
Without this fix, running shellcheck -x on
resources/scripts/misc/guix.sh returns many errors.

For each guix version declaration we have something like that:
    In resources/scripts/misc/guix.sh line 21:
    guix_v0_0="6365068393254e1131ab80eb0d68a759e7fd2256"
    ^-------^ SC2034 (warning): guix_v0_0 appears unused.
    Verify use (or export if used externally).
and here the variables are actually used in this code:
    guix_version_commit()
    {
        version="$1"

        eval echo "$(echo \$guix_"${version}" | sed 's#\.#_#g')"
    }
so we workaround by disabling that test for each version declaration.

Then shellcheck cannot find "$GUIX_PROFILE"/etc/profile:
In resources/scripts/misc/guix.sh line 91:
        . "$GUIX_PROFILE"/etc/profile
          ^-------------------------^ SC1091 (info):
   Not following: ./etc/profile: openBinaryFile:
   does not exist (No such file or directory)
so we disabled that test for this line.

After that we have many issues with quoting like this one:
    In resources/scripts/misc/guix.sh line 104:
        eval echo $(echo \$guix_"${version}" | sed 's#\.#_#g')
                  ^-- SC2046 (warning):
                  Quote this to prevent word splitting.
or this one:
    In resources/scripts/misc/guix.sh line 233:
        major="$(echo ${version} | awk -F . '{print $1}')"
                      ^--------^ SC2086 (info):
                      Double quote to prevent globbing and word splitting.
these were fixed.

We also improved a test by using grep -q:
    In resources/scripts/misc/guix.sh line 272:
        elif [ -n "$(echo ${revision} | grep '\.')" ] ; then
               ^-- SC2143 (style):
        Use grep -q instead of comparing output with [ -n .. ]

And finally in guix_version_commit a sed was avoided by using bash
replacement, and when that was not possible (in guix_next_version),
the shellcheck test for that was disabled.

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 b3a0ddd92c
scripts: misc: guix.sh: fix last version detection.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-05-12 22:55:33 +02:00
Denis 'GNUtoo' Carikli 4672e02a45
scripts: misc: guix.sh: fix forgetten tab.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-04-30 12:12:44 +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 a73a33fb17
dependencies: trisquel: fix python path.
Several scripts in the SeaBIOS source code used during its build use
'#!/usr/bin/env python' but there is no 'python' when installing
Trisquel through debootstrap.

So to fix that we simply add the python-is-python3 package which
creates the /usr/bin/python symlink and points it to python3.

This work is based on the commit
eeddd2b610 ("build/dependencies: debian:
adding python-is-python3 to build seabios properly").

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