libreoffice-collabora: fix Hydra failure by splitting src derivation
The Hydra build of the libreoffice-collabora derivation introduced inab5bdfd3c6
("libreoffice-collabora: init at 24.04.5-4") fails with the status "Output limit exceeded" [1], particularly at fetchgit of its sources. Indeed, the full checkout of the git repo along with its submodules takes 4.2 GB which is past the 3.4 GB Hydra's max_output_size [2]. Unfortunately, the Collabora branch lacks the tarball releases like the upstream fresh/still variants, so we still have to fetch these submodules. This commit gives up on the usage of fetchSubmodules and instead fetches the submodules using separate fetchgit calls. This makes the structure of the nix expression for the collabora variant closer to the fresh/still variants than the initial version of the collabora variant. [1]: https://hydra.nixos.org/build/267358376 [2]:4b5dd4f974/build/hydra.nix (L51)
This commit is contained in:
parent
d535c9b184
commit
f31b6e87b7
@ -200,9 +200,8 @@ let
|
||||
}) // {
|
||||
inherit (x) md5name md5;
|
||||
}) srcsAttributes.deps;
|
||||
} // optionalAttrs (variant != "collabora") {
|
||||
translations = fetchurl srcsAttributes.translations;
|
||||
help = fetchurl srcsAttributes.help;
|
||||
translations = srcsAttributes.translations { inherit fetchurl fetchgit; };
|
||||
help = srcsAttributes.help { inherit fetchurl fetchgit; };
|
||||
};
|
||||
|
||||
qtMajor = lib.versions.major qtbase.version;
|
||||
@ -235,14 +234,17 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
ln -sfv ${f} $sourceRoot/${tarballPath}/${f.md5name}
|
||||
ln -sfv ${f} $sourceRoot/${tarballPath}/${f.name}
|
||||
'')}
|
||||
'' + optionalString (variant != "collabora") ''
|
||||
|
||||
'' + (if (variant != "collabora") then ''
|
||||
ln -sv ${srcs.help} $sourceRoot/${tarballPath}/${srcs.help.name}
|
||||
ln -svf ${srcs.translations} $sourceRoot/${tarballPath}/${srcs.translations.name}
|
||||
|
||||
tar -xf ${srcs.help}
|
||||
tar -xf ${srcs.translations}
|
||||
'';
|
||||
'' else ''
|
||||
cp -r --no-preserve=mode ${srcs.help}/. $sourceRoot/helpcontent2/
|
||||
cp -r --no-preserve=mode ${srcs.translations}/. $sourceRoot/translations/
|
||||
'');
|
||||
|
||||
patches = [
|
||||
# Skip some broken tests:
|
||||
|
@ -0,0 +1,6 @@
|
||||
{ fetchgit, ... }:
|
||||
fetchgit {
|
||||
url = "https://gerrit.libreoffice.org/help";
|
||||
rev = "27f62cdb52fe23f6090a3249fcd1433777b2598d";
|
||||
hash = "sha256-lyBuj7FI1jwVLLBkB6JJcmQVtm1FKExYWvRUoGqRbJ0=";
|
||||
}
|
@ -2,6 +2,6 @@
|
||||
fetchgit {
|
||||
url = "https://gerrit.libreoffice.org/core";
|
||||
rev = "refs/tags/cp-24.04.5-4";
|
||||
hash = "sha256-27uLK1u8XWNigxZUCUu8nNZP3p5eFUsS2gCcfSYJK2k=";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-OJ3R8qs8/R8QnXGCRgn/ZJK7Nn8cWwYbZxjEWg0VpBc=";
|
||||
fetchSubmodules = false;
|
||||
}
|
||||
|
@ -0,0 +1,6 @@
|
||||
{ fetchgit, ... }:
|
||||
fetchgit {
|
||||
url = "https://gerrit.libreoffice.org/translations";
|
||||
rev = "5fd34a953e6861cb8e392363c0a3500059ed6b01";
|
||||
hash = "sha256-1j0kTvPbytsCWszXz+xFE+n53zPkR8gNgVaawn+rjfI=";
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
{ fetchurl, ... }:
|
||||
fetchurl {
|
||||
sha256 = "090pi8dnj5izpvng94hgmjid14n7xvy3rlqqvang3pqdn35xnpsl";
|
||||
url = "https://download.documentfoundation.org/libreoffice/src/24.2.5/libreoffice-help-24.2.5.2.tar.xz";
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
{ fetchurl, ... }:
|
||||
fetchurl {
|
||||
sha256 = "0fri41y59zhm8lq0kh6hvf5rpdjdqx0lg1sl40mhh1d6lf1izc1w";
|
||||
url = "https://download.documentfoundation.org/libreoffice/src/24.2.5/libreoffice-translations-24.2.5.2.tar.xz";
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
{ fetchurl, ... }:
|
||||
fetchurl {
|
||||
sha256 = "1l543k603mbr3rnwlnv9j52mblmvkgj9y49w4v7w3xm8b15331rs";
|
||||
url = "https://download.documentfoundation.org/libreoffice/src/7.6.7/libreoffice-help-7.6.7.2.tar.xz";
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
{ fetchurl, ... }:
|
||||
fetchurl {
|
||||
sha256 = "1bzmpa04bv8afhl3p68dlicamh0zyckmbdgqb3v72fjmx2h8i64a";
|
||||
url = "https://download.documentfoundation.org/libreoffice/src/7.6.7/libreoffice-translations-7.6.7.2.tar.xz";
|
||||
}
|
||||
|
@ -47,7 +47,8 @@ case $variant in
|
||||
echo \"$full_version\" > version.nix
|
||||
|
||||
for t in help translations; do
|
||||
echo "{" > $t.nix
|
||||
echo "{ fetchurl, ... }:" > $t.nix
|
||||
echo "fetchurl {" >> $t.nix
|
||||
echo " sha256 = "\"$(nix-prefetch-url $baseurl/libreoffice-$t-$full_version.tar.xz)'";' >> $t.nix
|
||||
echo " url = "\"$baseurl/libreoffice-$t-$full_version.tar.xz'";' >> $t.nix
|
||||
echo "}" >> $t.nix
|
||||
@ -56,7 +57,7 @@ case $variant in
|
||||
# Out of loop nix-prefetch-url, because there is no $t, and we want the output
|
||||
# path as well, to get the download.lst file from there afterwards.
|
||||
main_path_hash=($(nix-prefetch-url --print-path $baseurl/libreoffice-$full_version.tar.xz))
|
||||
echo "{ fetchurl, ...}:" > main.nix
|
||||
echo "{ fetchurl, ... }:" > main.nix
|
||||
echo "fetchurl {" >> main.nix
|
||||
echo " sha256 = "\"${main_path_hash[0]}'";' >> main.nix
|
||||
echo " url = "\"$baseurl/libreoffice-$full_version.tar.xz'";' >> main.nix
|
||||
@ -78,27 +79,41 @@ case $variant in
|
||||
;;
|
||||
|
||||
(collabora)
|
||||
full_version=$(git ls-remote --tags --sort -v:refname https://gerrit.libreoffice.org/core | grep -Pom1 'refs/tags/cp-\K\d+\.\d+\.\d+-\d+$')
|
||||
all_tags=$(git ls-remote --tags --sort -v:refname https://gerrit.libreoffice.org/core)
|
||||
rev=$(grep --perl-regexp --only-matching --max-count=1 \
|
||||
'\Krefs/tags/cp-\d+\.\d+\.\d+-\d+$' <<< "$all_tags")
|
||||
full_version=${rev#refs/tags/cp-}
|
||||
echoerr full version is $full_version
|
||||
echo \"$full_version\" > version.nix
|
||||
|
||||
rev="refs/tags/cp-$full_version"
|
||||
# The full checkout including the submodules is too big for Hydra, so we fetch
|
||||
# submodules separately.
|
||||
declare -A dirnames=([help]=helpcontent2 [translations]=translations)
|
||||
for t in help translations; do
|
||||
sub_rev=$(curl --silent "https://git.libreoffice.org/core/+/$rev/${dirnames[$t]}" |\
|
||||
pup '.gitlink-detail text{}' |\
|
||||
sed -n 's/^Submodule link to \([0-9a-f]\{40\}\) of .*/\1/p')
|
||||
echoerr got rev $sub_rev for $t
|
||||
prefetch_output=$(nix-prefetch-git "https://gerrit.libreoffice.org/$t" --rev "$sub_rev")
|
||||
echo "{ fetchgit, ... }:" > $t.nix
|
||||
echo "fetchgit {" >> $t.nix
|
||||
echo " url = \"$(jq -r '.url' <<< "$prefetch_output")\";" >> $t.nix
|
||||
echo " rev = \"$rev\";" >> $t.nix
|
||||
echo " hash = \"$(jq -r '.hash' <<< "$prefetch_output")\";" >> $t.nix
|
||||
echo "}"
|
||||
done
|
||||
|
||||
prefetch_output=$(nix-prefetch-git https://gerrit.libreoffice.org/core --rev "$rev" --fetch-submodules)
|
||||
fetched_git_path=$(echo "$prefetch_output" | jq -r '.path')
|
||||
hash=$(echo "$prefetch_output" | jq -r '.hash')
|
||||
|
||||
# Generate main.nix
|
||||
local prefetch_output=$(nix-prefetch-git "https://gerrit.libreoffice.org/core" --rev "$rev")
|
||||
echo "{ fetchgit, ... }:" > main.nix
|
||||
echo "fetchgit {" >> main.nix
|
||||
echo " url = \"https://gerrit.libreoffice.org/core\";" >> main.nix
|
||||
echo " url = \"$(jq -r '.url' <<< "$prefetch_output")\";" >> main.nix
|
||||
echo " rev = \"$rev\";" >> main.nix
|
||||
echo " hash = \"$hash\";" >> main.nix
|
||||
echo " fetchSubmodules = true;" >> main.nix
|
||||
echo " hash = \"$(jq -r '.hash' <<< "$prefetch_output")\";" >> main.nix
|
||||
echo " fetchSubmodules = false;" >> main.nix
|
||||
echo "}" >> main.nix
|
||||
|
||||
# Environment variable required by ../generate-libreoffice-srcs.py
|
||||
export downloadList="$fetched_git_path/download.lst"
|
||||
export downloadList=$(jq -r '.path' <<< "$prefetch_output")/download.lst
|
||||
esac
|
||||
|
||||
cd ..
|
||||
|
Loading…
Reference in New Issue
Block a user