git.iko.soy/typeable/nixpkgs
on master help sign in
libreoffice: replace `openjdk` runtime-input with minimal JRE

Previously, `pkgs.libreoffice` had a total closure-size of 2.4GB where `pkgs.openjdk` was a significant part: $ nix path-info ./result -Sh /nix/store/7xyfklmiz2azcnrfa8n9cz12dyyqc85r-libreoffice-7.1.7.2 2.4G $ nix path-info ./result -shr | grep openjdk /nix/store/qcn7ihaak9g8ayyj4995ila2z0pkm37i-openjdk-17.0.1+12 643.6M However we need exactly two components: * a `javac` from `pkgs.openjdk` * a minimal runtime (i.e. a JRE) for `libofficebean.so` where `libjawt.so` is also available. I moved `jdk` to the `nativeBuildInputs` to ensure that `javac` is still available in the build-environment and created a minimal JRE that seems sufficient. Now, the total closure-size is reduced by ~29.1% (basically the 600M from `pkgs.openjdk`): $ nix path-info ./result -Sh /nix/store/zv34xijv64k7sz7rv50g3v6y59qg7p8k-libreoffice-7.1.7.2 1.7G

commit2f9426ad8312101f4e84bcc4e28860695d28005f authorMaximilian Bosch <maximilian@mbosch.me> dateTue 23 Nov 2021, 19:15 (5 years ago) parentc70341a
1 file changed+9−5
pkgs/applications/office/libreoffice/default.nix+9−5
pkgs/applications/office/libreoffice/default.nix+9−5
@@ -2,7 +2,7 @@
22, IOCompress, zlib, libjpeg, expat, freetype, libwpd
33, libxml2, db, curl, fontconfig, libsndfile, neon
44, bison, flex, zip, unzip, gtk3, libmspack, getopt, file, cairo, which
5−, icu, boost, jdk, ant, cups, xorg, fontforge
5+, icu, boost, jdk, ant, cups, xorg, fontforge, jre_minimal
66, openssl, gperf, cppunit, poppler, util-linux
77, librsvg, libGLU, libGL, bsh, CoinMP, libwps, libabw, libmysqlclient
88, autoconf, automake, openldap, bash, hunspell, librdf_redland, nss, nspr
@@ -24,6 +24,10 @@
2424assert builtins.elem variant [ "fresh" "still" ];
2525
2626let
27+ jre' = jre_minimal.override {
28+ modules = [ "java.base" "java.desktop" ];
29+ };
30+
2731 importVariant = f: import (./. + "/src-${variant}/${f}");
2832
2933 primary-src = importVariant "primary.nix" { inherit fetchurl; };
@@ -318,7 +322,6 @@ in (mkDrv rec {
318322 "--enable-dbus"
319323 "--enable-release-build"
320324 "--enable-epm"
321− "--with-jdk-home=${jdk.home}"
322325 "--with-ant-home=${ant}/lib/ant"
323326 "--with-system-cairo"
324327 "--with-system-libs"
@@ -379,7 +382,7 @@ in (mkDrv rec {
379382 '';
380383
381384 nativeBuildInputs = [
382− gdb fontforge autoconf automake bison pkg-config libtool
385+ gdb fontforge autoconf automake bison pkg-config libtool jdk
383386 ] ++ lib.optional (!kdeIntegration) wrapGAppsHook
384387 ++ lib.optional kdeIntegration wrapQtAppsHook;
385388
@@ -387,7 +390,7 @@ in (mkDrv rec {
387390 [ ant ArchiveZip boost box2d cairo clucene_core
388391 IOCompress cppunit cups curl db dbus-glib expat file flex fontconfig
389392 freetype getopt gperf gtk3
390− hunspell icu jdk lcms libcdr libexttextcat unixODBC libjpeg
393+ hunspell icu jre' lcms libcdr libexttextcat unixODBC libjpeg
391394 libmspack librdf_redland librsvg libsndfile libvisio libwpd libwpg libX11
392395 libXaw libXext libXi libXinerama libxml2 libxslt libXtst
393396 libXdmcp libpthreadstubs libGLU libGL mythes
@@ -407,7 +410,8 @@ in (mkDrv rec {
407410 ++ lib.optional kdeIntegration [ qtbase qtx11extras kcoreaddons kio ];
408411
409412 passthru = {
410− inherit srcs jdk;
413+ inherit srcs;
414+ jdk = jre';
411415 };
412416
413417 requiredSystemFeatures = [ "big-parallel" ];