New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build: replace libdmg and genisoimage with xorriso #18151
build: replace libdmg and genisoimage with xorriso #18151
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsNo conflicts as of last run. |
Should we add |
Nice work! The only difference I observed is, that the new image is not compressed: Master is around 12 MB (bitcoin-0.19.99-osx-unsigned-2.dmg) where this PR is around 27 (uncompressed).
|
Gitian builds
|
Concept ACK. Nice. Having to maintain less software as part of the build is good. |
I'm unsure if xorriso supports HFS+ compression. If it doesn't support HFS+ compression, we might want to discuss if a uncompressed disk image is acceptable (27MB instead of 12). |
That's a good point. I think that'd be a waste. We might first want to wait (or encourage someone to work on) adding compression there then. |
Even with pruning enabled, the savings of 15 MB are negligible when compared to the minimum disk usage Bitcoin Core requires. So while the savings are nice, it shouldn't be a requirement? |
Rather than doing this, I think switching to a |
7587d11 build: remove cdrkit package from depends (fanquake) 0df9819 build: Replace genisoimage with xorriso (fanquake) 22437fc build: Run libdmg-hfsplus's DMG tool in make deploy (Carl Dong) Pull request description: This is a redo of fanquake's bitcoin/bitcoin#18151, which, aside from switching us from the deprecated `genisoimage` to the maintained `xorriso`, is also necessary for Guix to achieve determinism without using faketime. > xorriso and its mkisofs/genisoimage emulation alter-ego xorrisofs are > more maintained, and has the right toggles for us to achieve output > determinism without using blunt tools like faketime. > > In this commit, we use xorrisofs from the build environment rather than > building it ourselves using depends. This is not necessary and can be > changed in the future. > > From wiki.debian.org/genisoimage?action=recall&rev=11 : > > > The classical command line interface for production of ISO 9660 > > filesystem images is the option set established by program mkisofs. > > For reasons of licensing and other problems with its author, Debian > > ships a fork of mkisofs, called genisoimage, which was split off in > > 2006 and then developed independently. > > > > Meanwhile, genisoimage gets no new features and not even bug fixes. It > > is first choice only if its options -udf or -hfs are needed. > > > > Replacement in most uses cases, especially for bootable ISO 9660 > > filesystems, archiving, and backup, is xorrisofs which starts the -as > > mkisofs emulation mode of program xorriso. ACKs for top commit: laanwj: ACK 7587d11 Tree-SHA512: 62f3aad08fa8bf21192e951d7dd33b24975586d76834cfa3498f4b8cdb586cefec8cab2c073d1951a0884b5e182fd71ef2cf3accad98f84455016776ad3c5422
TLDR: Replace two tools that we build and maintain in depends, as part of our macOS deployment, with one that we don't.
Carl mentioned that
xorriso
(Debian package) could replace our usage oflibdmg-hfsplus
andgenisoimage
. Looks like that's possible. Have tested gitian builds, and reproducibility looks good. Looking for Concept ACKs.Also related to #18128, as this eliminates some dependencies. Will post thoughts on using a
.zip
for distribution there.TODO:
xorrisofs
vs callingxorriso -as mkisofs
zisofs level=9
etc.