Skip to content
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

buildEnv (breaking texlive): allow very big lists to be passed #9757

Closed
abbradar opened this issue Sep 9, 2015 · 9 comments
Closed

buildEnv (breaking texlive): allow very big lists to be passed #9757

abbradar opened this issue Sep 9, 2015 · 9 comments
Labels
0.kind: enhancement Add something new

Comments

@abbradar
Copy link
Member

abbradar commented Sep 9, 2015

See #287 (comment). I imagine this as a size check in buildEnv; when input list is too large, it's passed via file.

@abbradar abbradar added the 0.kind: enhancement Add something new label Sep 9, 2015
@vcunat vcunat changed the title Allow very big lists to be passed to buildEnv buildEnv: allow very big lists to be passed Sep 22, 2015
@vcunat
Copy link
Member

vcunat commented Sep 22, 2015

For better discoverability of this issue: texlive.combined.scheme-full gives Argument list too long.

@vcunat
Copy link
Member

vcunat commented Sep 25, 2015

For those who have texlive problems due to this, you can use the old texLiveFull in the meantime, if you really want all those thousands of packages.

@vcunat vcunat changed the title buildEnv: allow very big lists to be passed buildEnv (breaking texlive): allow very big lists to be passed Sep 25, 2015
@Mathnerd314
Copy link
Contributor

I was browsing the Nix manual and found passAsFile, this seems like an ideal case for it.

@abbradar
Copy link
Member Author

@vcunat I've went ahead and implemented passing paths and postBuild as files (note that I don't know Perl at all, so my fix can be unidiomatic or ugly!) at abbradar@5a15be4 . We now have a problem with sed argument list being too long in your postBuild.

@vcunat
Copy link
Member

vcunat commented Oct 15, 2015

I don't know perl either. For the sed problem, I think this should be good:

diff --git a/pkgs/tools/typesetting/tex/texlive-new/combine.nix b/pkgs/tools/typesetting/tex/texlive-new/combine.nix
index 2c9119b..e69c6ec 100644
--- a/pkgs/tools/typesetting/tex/texlive-new/combine.nix
+++ b/pkgs/tools/typesetting/tex/texlive-new/combine.nix
@@ -82,21 +82,21 @@ in buildEnv {
     # updmap.cfg seems like not needing changes

     # now filter hyphenation patterns, in a hacky way ATM
-  ''
+  (let script =
+    writeText "hyphens.sed" (
+      lib.concatMapStrings (pkg: "/^\% from ${pkg.pname}/,/^\%/p;\n") pkgList.splitBin.wrong
+      + "1,/^\% from/p;" );
+  in ''
     (
-      local script='${
-        lib.concatMapStrings (pkg: "/^\% from ${pkg.pname}/,/^\%/p;\n")
-          pkgList.splitBin.wrong
-      } 1,/^\% from/p;'
       cd ./share/texmf/tex/generic/config/
       for fname in language.dat language.def; do
         [ -e $fname ] || continue;
         cnfOrig="$(realpath ./$fname)"
         rm ./$fname
-        cat "$cnfOrig" | sed -n "$script" > ./$fname
+        cat "$cnfOrig" | sed -n -f '${script}' > ./$fname
       done
     )
-  '' +
+  '') +

   # function to wrap created executables with required env vars
   ''
diff --git a/pkgs/tools/typesetting/tex/texlive-new/default.nix b/pkgs/tools/typesetting/tex/texlive-new/default.nix
index c8b2a41..a084c97 100644
--- a/pkgs/tools/typesetting/tex/texlive-new/default.nix
+++ b/pkgs/tools/typesetting/tex/texlive-new/default.nix
@@ -24,7 +24,7 @@
     * in case of any bugs or feature requests, file a github issue and /cc @vcunat
 */

-{ stdenv, lib, fetchurl, runCommand, buildEnv
+{ stdenv, lib, fetchurl, runCommand, writeText, buildEnv
 , callPackage, ghostscriptX, harfbuzz, poppler_min
 , makeWrapper, perl, python, ruby
 , useFixedHashes ? true
@@ -48,7 +48,8 @@ let

   # function for creating a working environment from a set of TL packages
   combine = import ./combine.nix {
-    inherit bin combinePkgs buildEnv fastUnique lib makeWrapper perl stdenv python ruby;
+    inherit bin combinePkgs buildEnv fastUnique lib makeWrapper writeText
+      perl stdenv python ruby;
   };

   # the set of TeX Live packages, collections, and schemes; using upstream naming

@abbradar
Copy link
Member Author

Good news, with the patch I've been able to build texlive.combined.scheme-full! I'll put my fix to the review.

@abbradar
Copy link
Member Author

@vcunat: While we wait, maybe we can merge the sed-related patch? It would be needed anyway I believe.

@abbradar
Copy link
Member Author

@vcunat Now that #10506 is pushed into staging it would be nice to push the patch above -- would you?

vcunat added a commit that referenced this issue Oct 24, 2015
@vcunat
Copy link
Member

vcunat commented Nov 9, 2015

All should be working fine in staging now.

@vcunat vcunat closed this as completed Nov 9, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.kind: enhancement Add something new
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants