<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lbmk.git/.gitignore, branch m920qwip</title>
<subtitle>libreboot build system (LibreBoot MaKe)
</subtitle>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/'/>
<entry>
<title>BROKEN/WIP: NEW MAINBOARD: Lenovo ThinkCentre M920 Tiny</title>
<updated>2024-12-03T14:52:53+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-12-02T23:54:41+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=fb497cec3bf3ca5fada8900cae2917c2af7643d8'/>
<id>fb497cec3bf3ca5fada8900cae2917c2af7643d8</id>
<content type='text'>
WARNING!!!!! i915 driver crashes when loading (KMS driver).
Could not use GRUB or SeaBIOS; SeaBIOS hangs and USB input
fails in GRUB. U-Boot UEFI works, you can boot things.
If you want to set upp a headless service this machine is
totally fine, because you can just avoid loading i915 in
Linux, and just use the EFI framebuffer or the coreboot
framebuffer, or possibly boot xorg with nomodeset.

DO NOT MERGE! This machine needs a lot work work.

Initial notes:

This should cover both the M920q and M920x, though the
x variant is quite rare.

This is a mITX desktop system, documented here:
https://doc.coreboot.org/mainboard/lenovo/m920q.html

Thanks go to Maciej Pijanowski, who ported coreboot to
this board and submitted the code upstream. Libreboot is
using the version that was recently merged upstream in
the coreboot project.

It's not yet known how to auto-download the ME, because the
update images are incomplete. The only reliable way thus far
is to extract the factory dump. However, it's also uncertain
what modules to whitelist in me_cleaner, so for this board, we
only:

* Unlock all IFD regions, setting them read-write
* Set the HAP bit, which is functionally equivalent to
  a valid me_cleaner setup

The result will be a disabled ME, and read-write operation.
No binary images will be provided for now, in releases. You
must also create the directory:

dump/m920q/

Then just extract from the factory dump using:

./ifdtool --platform cnl -x libreboot.rom

Then just stick the files that it creates into there, and
the build should work. I've made lbmk automatically set the
HAP bit and unlock regions, when building with these.

Also, SeaBIOS hung so I restored the possibility of using
GRUB as primary, but GRUB USB input also didn't work! The
board's port author tested edk2 only, it seems. I don't really
want edk2 in lbmk just for this board.

So, I made U-Boot the only payload. It seems to work fine.
However, Debian Linux and OpenBSD both seemed to completely fail:
On OpenBSD it had errors pertaining to i915 video driver.

Debian Linux stalled at startup just when it's switching to
KMS, which would use the i915 driver.

Arch Linux installer, same thing: uses KMS, and failed.

The port author said edk2 was tested. edk2 provides a decent
GOP implementation, so maybe they were using an EFI framebuffer
when booting Linux.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
WARNING!!!!! i915 driver crashes when loading (KMS driver).
Could not use GRUB or SeaBIOS; SeaBIOS hangs and USB input
fails in GRUB. U-Boot UEFI works, you can boot things.
If you want to set upp a headless service this machine is
totally fine, because you can just avoid loading i915 in
Linux, and just use the EFI framebuffer or the coreboot
framebuffer, or possibly boot xorg with nomodeset.

DO NOT MERGE! This machine needs a lot work work.

Initial notes:

This should cover both the M920q and M920x, though the
x variant is quite rare.

This is a mITX desktop system, documented here:
https://doc.coreboot.org/mainboard/lenovo/m920q.html

Thanks go to Maciej Pijanowski, who ported coreboot to
this board and submitted the code upstream. Libreboot is
using the version that was recently merged upstream in
the coreboot project.

It's not yet known how to auto-download the ME, because the
update images are incomplete. The only reliable way thus far
is to extract the factory dump. However, it's also uncertain
what modules to whitelist in me_cleaner, so for this board, we
only:

* Unlock all IFD regions, setting them read-write
* Set the HAP bit, which is functionally equivalent to
  a valid me_cleaner setup

The result will be a disabled ME, and read-write operation.
No binary images will be provided for now, in releases. You
must also create the directory:

dump/m920q/

Then just extract from the factory dump using:

./ifdtool --platform cnl -x libreboot.rom

Then just stick the files that it creates into there, and
the build should work. I've made lbmk automatically set the
HAP bit and unlock regions, when building with these.

Also, SeaBIOS hung so I restored the possibility of using
GRUB as primary, but GRUB USB input also didn't work! The
board's port author tested edk2 only, it seems. I don't really
want edk2 in lbmk just for this board.

So, I made U-Boot the only payload. It seems to work fine.
However, Debian Linux and OpenBSD both seemed to completely fail:
On OpenBSD it had errors pertaining to i915 video driver.

Debian Linux stalled at startup just when it's switching to
KMS, which would use the i915 driver.

Arch Linux installer, same thing: uses KMS, and failed.

The port author said edk2 was tested. edk2 provides a decent
GOP implementation, so maybe they were using an EFI framebuffer
when booting Linux.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>unified cache file handling for vendorfile/subfile</title>
<updated>2024-07-17T17:15:52+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-07-17T17:15:52+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=a9f9de885c07541934ecad56ea6c7126f05a89be'/>
<id>a9f9de885c07541934ecad56ea6c7126f05a89be</id>
<content type='text'>
lib.sh download() is used by subfile handling in git.sh,
e.g. crossgcc tarballs, and also the vendor scripts.

vendor files are cached, but not subfiles for repos.

cache both, under cache/file/, saved with the name equal
to the checksum, so: cache/file/CHECKSUM

also move vendorfiles/app/ to cache/app/ in this change.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
lib.sh download() is used by subfile handling in git.sh,
e.g. crossgcc tarballs, and also the vendor scripts.

vendor files are cached, but not subfiles for repos.

cache both, under cache/file/, saved with the name equal
to the checksum, so: cache/file/CHECKSUM

also move vendorfiles/app/ to cache/app/ in this change.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>trees: auto-delete+auto-rebuild if project changes</title>
<updated>2024-07-17T15:34:34+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-07-17T13:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=0b9cd77fe7ff6ded9425f12f3651615e1863aa87'/>
<id>0b9cd77fe7ff6ded9425f12f3651615e1863aa87</id>
<content type='text'>
actual source code is not scanned, but config directories are
scanned. simply get the checksum of each file under config/
pertaining to a given project/tree, and also for the given
target. coreboot utilities are also handled.

if it changes, in any way, delete and re-build automatically.

such deletions should probably still be done manually, as part
of understanding the build system, but this change should make
the build system much easier to use during development.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
actual source code is not scanned, but config directories are
scanned. simply get the checksum of each file under config/
pertaining to a given project/tree, and also for the given
target. coreboot utilities are also handled.

if it changes, in any way, delete and re-build automatically.

such deletions should probably still be done manually, as part
of understanding the build system, but this change should make
the build system much easier to use during development.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>git.sh: cache git downloads to repo/</title>
<updated>2024-07-17T12:01:12+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-07-17T12:01:12+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=9f09728acac7e36404cfd8c6b03a38281d47b75b'/>
<id>9f09728acac7e36404cfd8c6b03a38281d47b75b</id>
<content type='text'>
do it based on the URL, e.g. https://review.coreboot.org/coreboot
becomes repo/coreboot

the downside is if you have two projects with repo urls specifying
the same string at the end, but this isn't the case at the moment
and likely won't be the case, but it's a theoretical issue.

this saves on bandwidth when downloading identical submodule repos
between multiple trees within the same multi-tree project

for example, coreboot 3rdparty/vboot is no longer downloaded more
than once, instead cloned locally on subsequent downloads.

if repo/DIR exists, git-pull is attempted, but errors do not result
in a non-zero exit, by design.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
do it based on the URL, e.g. https://review.coreboot.org/coreboot
becomes repo/coreboot

the downside is if you have two projects with repo urls specifying
the same string at the end, but this isn't the case at the moment
and likely won't be the case, but it's a theoretical issue.

this saves on bandwidth when downloading identical submodule repos
between multiple trees within the same multi-tree project

for example, coreboot 3rdparty/vboot is no longer downloaded more
than once, instead cloned locally on subsequent downloads.

if repo/DIR exists, git-pull is attempted, but errors do not result
in a non-zero exit, by design.

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>create a lock file during builds</title>
<updated>2024-06-09T14:37:13+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-06-09T14:37:13+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=e80c4b73ceb10c38a93c769e681afb947d9dfb1c'/>
<id>e80c4b73ceb10c38a93c769e681afb947d9dfb1c</id>
<content type='text'>
prevent duplicate main instances of the build
system from running

the lock file is deleted when the parent process
exits, alongside the tmpdir deletion

the build system must only ever be run ot one
instance at a time, per work directory

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
prevent duplicate main instances of the build
system from running

the lock file is deleted when the parent process
exits, alongside the tmpdir deletion

the build system must only ever be run ot one
instance at a time, per work directory

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>put coreboot utils in elf/, not cbutils/</title>
<updated>2024-06-06T20:51:37+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-06-06T20:45:53+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=c0822ac458fc7b0f2630c1cff208bd5066efbc6b'/>
<id>c0822ac458fc7b0f2630c1cff208bd5066efbc6b</id>
<content type='text'>
one directory per util, under elf/

e.g. elf/cbfstool/

further split by tree name, e.g.:

elf/cbfstool/default/
elf/cbfstool/foo/

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
one directory per util, under elf/

e.g. elf/cbfstool/

further split by tree name, e.g.:

elf/cbfstool/default/
elf/cbfstool/foo/

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>update gitignore</title>
<updated>2024-05-28T05:43:16+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-05-28T05:43:16+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=7d50e09feabb06a664d839f832a91e832c1dacfc'/>
<id>7d50e09feabb06a664d839f832a91e832c1dacfc</id>
<content type='text'>
Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>add CHANGELOG to .gitignore</title>
<updated>2024-05-22T01:15:39+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2024-05-22T01:15:39+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=079afb5bd35a1150277fcff6ffeced964b9133f1'/>
<id>079afb5bd35a1150277fcff6ffeced964b9133f1</id>
<content type='text'>
we want ./update release to work in release archives.

under the current logic, CHANGELOG would be cloned into
release/, thus breaking ./update trees -f

fix it by adding the file to .gitignore

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
we want ./update release to work in release archives.

under the current logic, CHANGELOG would be cloned into
release/, thus breaking ./update trees -f

fix it by adding the file to .gitignore

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>put docs under docs/ in releases (not src/docs/)</title>
<updated>2023-11-06T00:04:13+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2023-11-05T23:48:00+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=d5a3abdb8079b60b7ef5f408ca9d6788aa90a334'/>
<id>d5a3abdb8079b60b7ef5f408ca9d6788aa90a334</id>
<content type='text'>
Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lbmk: use 2-level directory structure in script/</title>
<updated>2023-10-20T00:00:38+00:00</updated>
<author>
<name>Leah Rowe</name>
<email>leah@libreboot.org</email>
</author>
<published>2023-10-19T23:17:30+00:00</published>
<link rel='alternate' type='text/html' href='https://browse.libreboot.org/lbmk.git/commit/?id=8d9aeef3de28bcb908e33b804517bdeacce7be38'/>
<id>8d9aeef3de28bcb908e33b804517bdeacce7be38</id>
<content type='text'>
as opposed to the current 3-level structure.

recent build system simplifications have enabled
this change, thus:

./build fw coreboot -&gt; ./build roms
./build fw grub -&gt; ./build grub
./build fw serprog -&gt; ./build serprog
./update project release -&gt; ./update release
./update project trees -&gt; ./update trees
./update vendor download -&gt; ./vendor download
./update vendor inject -&gt; ./vendor inject

alper criticised that the commands were too long,
so i made them shorter!

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
as opposed to the current 3-level structure.

recent build system simplifications have enabled
this change, thus:

./build fw coreboot -&gt; ./build roms
./build fw grub -&gt; ./build grub
./build fw serprog -&gt; ./build serprog
./update project release -&gt; ./update release
./update project trees -&gt; ./update trees
./update vendor download -&gt; ./vendor download
./update vendor inject -&gt; ./vendor inject

alper criticised that the commands were too long,
so i made them shorter!

Signed-off-by: Leah Rowe &lt;leah@libreboot.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
