Best workaround for broken packages in depot?

Dear genodians,

(The following serves as a mere example.)

I tested the current sculpt-25.04 release:

$ sha256sum ~/Downloads/sculpt-25-04.img 
54e8bd5f3b7c5ebf0fac84aa2c103d8bb8efa62ef6bcb5a08f2cad42cc29c366  /home/user/Downloads/sculpt-25-04.img

Upon adding the “acpi support” package through the “+” launcher, the “acpi” component immediatly died with the error
message from the bug reported in:

As a result I can not poweroff my machine.


As other packages can obviously also have bugs, what is the preferred way to replace the malfunctioning package?

Downgrading to an older version like the following:
https://depot.genode.org/genodelabs/pkg/acpica/2024-12-10.tar.xz
did result in another error:

[init -> runtime -> acpica] Error: LD: jump slot relocation failed for symbol: 'Genode::Heap::Heap(Genode::Ram_allocator*, Genode::Region_map*, unsigned long, void*, unsigned long)'
[init -> runtime -> acpica] Error: Uncaught exception of type 'Linker::Not_found'
[init -> runtime -> acpica] Warning: abort called - thread: ep

So my questions would be:

  1. Is my last option for having a working package, to wait for a fix in the master branch of
    GitHub - genodelabs/genode: Genode OS Framework
    and package the fixed version myself?
  2. Can I do this easily through goa? (goa looks like it’s more for 3rd party packages, than rebuilding core packages)
  3. Is there another way, a package downgrade may be successful?
  4. How do I know a package is compatible with current sculpt release? Can there be user friendly message / meta data?
  5. Can there be a “genodelabs-testing” sibling depot, with to be tested bug fixes?

Thanks a lot and kind regards

To solve your problem, someone needs to backport the acpica fix to the a branch based on the sculpt-25.04 tag. The one can indeed be you! :wink:

Applying the fix could be as easy as creating a fresh branch and cherry-picking the single commit. If app/acpica builds successfully that is already a good sign.

To create a package for the fixed version, you can then use the depot/create tool:

genode$ ./tool/depot/create r-freilach/bin/x86_64/acpica UPDATE_VERSIONS=1 -j8
...
...
...
created r-freilach/pkg/x86_64/acpica/2025-07-03

Now, what’s missing is publishing the result. Here, the depot/publish tool comes into play:

genode$ ./tool/depot/publish r-freilach/bin/x86_64/acpica/2025-07-03

You may need to tell the tool about your public key by copying it to repos/gems/sculpt/depot/r-freilach/pubkey. Your private key must be on your GPG keychain. If the key is available, the publish tool creates the archive and signature files.

publish public/r-freilach/api/format/2024-08-28.tar.xz
publish public/r-freilach/api/os/2025-07-03.tar.xz
publish public/r-freilach/api/platform_session/2025-07-03.tar.xz
publish public/r-freilach/api/report_session/2024-08-28.tar.xz
publish public/r-freilach/api/timer_session/2025-05-26.tar.xz
publish public/r-freilach/bin/x86_64/acpica/2025-07-03.tar.xz
publish public/r-freilach/src/acpica/2025-07-03.tar.xz
publish public/r-freilach/pkg/acpica/2025-07-03.tar.xz

(You can find more details about these tools in the package-management section of the Foundations book).
Now, you can sync the resulting public/r-freilach/ directory to a web server.

On the Sculpt-OS side, you need to place your pubkey and download files at /rw/depot/r-freilach/ so that Sculpt knows where to download from and how validate the downloaded depot content.

To one-off install it on your Sculpt machine, you can create an index file at /rw/depot/local/index/25.04 (maybe start with copy of genodelabs’) and add a <pkg> entry referring to your r-freilach/pkg/acpica/2025-07-03 package. Now, you should be able add you component using the + menu and selecting “local” as software provider.
To make the fixed package available for others, you may opt to publish your index file as well and make your download URL and pubkey known.

If these steps are too many hoops to jump through, let me know. Then, I will add an updated version of the acpica pkg to my index for your convenience.

1 Like

Dear nfeske,

Thank you a lot for the detailed and helpful steps! I will try to practice this approach, so I may apply it other situations too. So no new package upload from your side is necessary. Thank you for the offer.

I hope your howto-esque answer can be of use for other people too.

Success or failure will be reported at the beginning of next week.

1 Like