Open sternenseemann opened 2 years ago
Here are some suspicious -dev
output dependencies in the GNOME ISO closure, found with nix-tree
:
-D_GLIBCXX_ASSERTIONS
. See also #131868.Some selected large packages that jump out at me:
mesa-21.3.5-drivers has a bunch of large identical duplicate libraries in /nix/store/2gl456ql1g1pj9qwkgkpjajknc1j702h-mesa-21.3.5-drivers/lib/dri that are not symlinked or hard-linked.
Symlinking would save some 381 MB (though maybe SquashFS already does its own deduplication?).
- pipewire-media-session-0.4.1 → pipewire-0.3.45-dev
- python3.9-brotlicffi-1.0.9.2 → python3.9-cffi-1.15.0-dev
I tried removing these references but the size changes were insignificant, IIRC.
speech-dispatcher-0.11.1 pulls in multiple speech systems, including mbrola-3.3 at 677 MB and flite-2.2 at 64 MB; do we need them all?
Presumably, different implementations have different quality for different languages. Mbrola was specifically requested.
There are two copies of webkitgtk-2.34.5 with different hashes, at 124 MB each; one of them is used only by yelp-41.2.
This is a consequence of libsoup-3.0
changing ABI so webkitgtk-4.0
linked against libsoup-2.0
cannot be used in packages linked against libsoup-3.0
. However, most of those (including Yelp) will still build with webkitgtk-4.0
and libsoup-2.0
so we could switch to that for now.
By the way, as more and more apps switch to GTK 4, we will need to ship webkitgtk_5_0
ABI variant so there will need to be two webkit versions anyway (unless everything manages to switch this cycle).
strip
would shave 27 MB from libwebkit2gtk-4.1.so.0.0.5
and libjavascriptcoregtk-4.1.so.0.0.5
. We could probably save truckloads of space with some stdenv-wide equivalent of Debian’s dh_strip
.
Would not that also destroy debugging symbols? We want those for webkit because having people rebuild webkit to report crashes is not really feasible.
webkitgtk has separateDebugInfo = stdenv.isLinux
. I don’t know exactly what needs to be preserved for separate debug info to work, but I do know that Debian also uses separate debug info, and its webkitgtk libraries are much smaller than ours, and cannot be further reduced by strip
.
https://stackoverflow.com/q/46197810/115030 addresses exactly that question, and suggests that we should be able to safely use --strip-unneeded
.
I feel like the long term solution to this problem may very well be having a way to allow bigger outputs on Hydra for certain jobs. Having a big graphical live system may very well be a fact of life.
@sternenseemann I think it's worthwile to keep it below 4.7G so it still be burned onto a regular DVD. Burning it onto a CD seems pointless at this point because 700M is pretty much out of reach by now :D
I think a small image should be a goal but yes a graphical live system can only be so small.
POP!_OS is 2.47GB elementary OS is 2.5GB Ubuntu is 2.9GB Linux Mint is 2.1GB Manjaro XFCE which I expected to be fairly small is a wopping 3.4GB and their minimal XFCE edition is 2.6GB Endevor OS is 1.9GB
Burning it onto a CD seems pointless at this point because 700M is pretty much out of reach by now :D
The -minimal ISO is around 0.8G, so maybe there it isn't out of reach, but I don't think CDs are really common anymore. As for flash drives, the interesting limits often are around powers of two.
@vcunat It is pretty out of reach for a Gnome based installer.
All: Can't we just make the ISO a failable/non-required build, such that it unblocks unstable quickly?
No, we most likely don't want that. The ISO is linked from web, etc.
We can continue linking the old working version
Maybe, if it wasn't all automated.
Sarcasm: let's get rid of gnome !
@drupol Honestly? Why not… The installer at least… The Gnome installer has a bad UX, as it just boots into an empty desktop… The Plasma installer has at least 3 desktop icons that make sense…
Whoever chooses to use the Gnome installer needs to know in advance how to find and what to find…
Can we start by temporarily increasing the output limit for Hydra? We can talk later about how to reduce the size of the gnome installer and what the eventual size limit should be.
Right now, though, unstable has been blocked for 7 days, and the first order of business should be unblocking it, correct?
@drupol Honestly? Why not… The installer at least… The Gnome installer has a bad UX, as it just boots into an empty desktop… The Plasma installer has at least 3 desktop icons that make sense…
Whoever chooses to use the Gnome installer needs to know in advance how to find and what to find…
While I was being sarcastic, there was a part of truth behind my statement. Of course I don't want to offend Gnome developers and users... but I definitely agree with your comment.
In case there’s still anyone on this issue who’s interested in, like, working towards solving it, I’d appreciate reviews and merging of
Honest question, Is even burning a DVD still a thing ?
I feel like people don't even have a CD/DVD player anymore.
For the same reason a 4Gb limit seems more appropriate than a 4.7Gb limit. In term of flash drive it is either 4 or 8, and I'm not willing to dedicate an 8Gb flashdrive for an OS installer.
A minimal install that downloads everything needed for the GNOME version will be better.
I understand why live cd isos are still a thing, but having that as the main option now a days makes no sense, just my opinion. It will be even better to have a small menu where you can choose between Gnome and Plasma etc...
I know there is a minimal install, but I mean one that just haves the menu to download from the internet everything needed to install the GNOME version.
Can we please move this discussion elsewhere (e.g. Discourse)? Let’s keep this thread focused on fixing the immediate problem.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/what-should-the-hydra-output-size-limit-be/17761/1
For reference, last I checked the size was 1.98 GiB, but we're blocked due to Hydra not being able to finish an evaluation.
Could someone have a look at https://github.com/NixOS/nixos-org-configurations/pull/206 and decide whether it is good idea or not?
Could someone have a look at NixOS/nixos-org-configurations#206 and decide whether it is good idea or not?
Or perhaps move it so more important security updates and patches can be released.
Having patches released very quickly, and then waiting a week for the unstable channel update because of this failed job, seems counterintuitive :-(
The -small
channels were created (years ago) to get security fixes quickly. Those have been unaffected. They tend to update at least daily, quite reliably.
They do, to which I have tried, but they only include a small subset of the packages, including no gnome.
Am I able to merge channels for security updates and general apps together? As i'd understood, it was one or the other.
It seems perhaps more pragmatic to move longer term challenges into their own lower priority channel.
The -small channels block on a small set of builds, but everything shares the same cache.nixos.org. So each binary is available in cache immediately after it gets built, and you'll get them regardless of which channel you follow.
After Graham resolving some resulting complications, we got a >2G ISO build: https://hydra.nixos.org/build/167219646
Awesome! Thanks for checking. I was still looking https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents, but that is lower in the queue I guess.
After Graham resolving some resulting complications, we got a >2G ISO build: https://hydra.nixos.org/build/167219646
Greater than 2G ? Or smaller?
Well, we've been fighting this from more sides. Limit got raised, so the week-old ISO build succeeded when retried.
File size: 2160033792 bytes (2059.97 MiB)
The tested
job is also at the top of the queue, but it needs many builds to complete, which is probably why it takes time.
As this isn't blocking the channel now I've removed the label so this issue doesn't appear at the top of https://status.nixos.org/
The nixos-unstable
channel updated 🎉 (to a commit from 28 hours ago) Thanks everyone who's helped with this. Some suggestions from above would still be nice to resolve.
Some of the sub-problems have also been moved to separate issues by @andersk. I think the main goal of this issue is now solved. Can this issue be closed?
Should there be an issue for moving ISO generation away from Hydra channels into something separate?
Separate? I can't recall what you mean. It's always been running on a separate machine, I believe.
Ah, I was referring to separating the generation of the ISO like discussed here https://github.com/NixOS/nixpkgs/pull/161070 or suggested here.
There are two copies of openblas-0.3.19 with different hashes, at 29 MB each, one pulled in by opencv-4.5.4, and the other by blas-3 and lapack-3.
Should we even have opencv around? It seems like it only gets pulled in by gst-plugins-bad.
Looks like that supports building without opencv as a dep.
Could either drop gst-plugins-bad or disable opencv in it by default?
Should we close this one?
It's not a blocker anymore, though in my eyes there's at least one point above worth looking into:
- speech-dispatcher-0.11.1 pulls in multiple speech systems, including mbrola-3.3 at 677 MB and flite-2.2 at 64 MB; do we need them all?
Maybe this is better handled as a separate issue?
Hmm, picking up the parts that are still relevant and posting them into a new issue? Maybe.
This has been affecting the ROCm builds a bit, particularly concerning rocm-llvm
(with clang-tools-extra
), miopen
(with KDBs), and rocfft
. (It's just a gigantic .so
, with everything built)
I'm not sure how realistic it is to ask this, or the reasons why we would not want to do this, but raising the limit to around 5GiB would be ideal concerning the ROCm packages.
Describe the bug
The GNOME ISO job currently fails bcause it's output exceeds the configured output limit on Hydra: https://hydra.nixos.org/build/167219646, eventually preventing nixos-unstable from advancing.
I'm not sure what caused this,
presumably the last staging-next rotation?cc @NixOS/gnome