···72727373 meta = with lib; {
7474 homepage = "https://www.gromacs.org";
7575- license = licenses.gpl2;
7575+ license = licenses.lgpl21Plus;
7676 description = "Molecular dynamics software package";
7777 longDescription = ''
7878 GROMACS is a versatile package to perform molecular dynamics,
···9191 reference or manual for details), but there are also quite a
9292 few features that make it stand out from the competition.
93939494- See: https://www.gromacs.org/About_Gromacs for details.
9494+ See: https://www.gromacs.org/about.html for details.
9595 '';
9696 platforms = platforms.unix;
9797 maintainers = with maintainers; [ sheepforce markuskowa ];
···219219 # TERMINFO to a store path, but allows installing foot.terminfo
220220 # on remote systems for proper foot terminfo support.
221221 priority = (ncurses.meta.priority or 5) + 3 + 1;
222222+ mainProgram = "foot";
222223 };
223224}
···98989999Please make sure to follow the [CONTRIBUTING](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md)
100100guidelines.
101101+102102+## Reviewing the bin containers
103103+104104+Most `tlType == "bin"` containers consist of links to scripts distributed in
105105+`$TEXMFDIST/scripts` with a number of patches applied within `default.nix`.
106106+107107+At each upgrade, please run the tests `tests.texlive.shebangs` to verify that
108108+all shebangs have been patched and in case add the relevant interpreters, and
109109+use `tests.texlive.binaries` to check if basic execution of all binaries works.
110110+111111+Please review manually all binaries in the `broken` and `ignored` lists of
112112+`tests.texlive.binaries` at least once for major TeX Live release.
113113+114114+Since the tests cannot catch all runtime dependencies, you should grep the
115115+`$TEXMFDIST/scripts` folder for common cases, for instance (where `$scripts`
116116+points to the relevant folder of `scheme-full`):
117117+- Calls to `exec $interpreter`
118118+ ```
119119+ grep -IRS 'exec ' "$TEXMFDIST/scripts" | cut -d: -f2 | sort -u | less -S
120120+ ```
121121+- Calls to Ghostscripts (see `needsGhostscript` in `combine.nix`)
122122+ ```
123123+ grep -IR '\([^a-zA-Z]\|^\)gs\( \|$\|"\)' "$TEXMFDIST"/scripts
124124+ grep -IR 'rungs' "$TEXMFDIST"
125125+ ```
126126+127127+As a general rule, if a runtime dependency as above is essential for the core
128128+functionality of the package, then it should be made available in the bin
129129+containers (by patching `PATH`), or in `texlive.combine` (as we do for
130130+Ghostscript). Non-essential runtime dependencies should be ignored if they
131131+increase the closure substantially.
···11+# load realpath
22+loadables="$(command -v bash)"
33+loadables="${loadables%/bin/bash}/lib/bash"
44+enable -f "$loadables/realpath" realpath
55+mkdir -p "$out/bin"
66+77+# find interpreters
88+export interpPerl="$(PATH="$HOST_PATH" command -v perl)"
99+export interpJava="$(PATH="$HOST_PATH" command -v java || :)"
1010+export interpWish="$(PATH="$HOST_PATH" command -v wish || :)"
1111+1212+# prepare sed script
1313+substituteAll "$patchScripts" patch-scripts.sed
1414+1515+for binname in $binfiles ; do
1616+ # binlinks to be created last, after the other binaries are in place
1717+ if [[ " $binlinks " == *" $binname "* ]] ; then
1818+ continue
1919+ fi
2020+2121+ output="$out/bin/$binname"
2222+2323+ # look for existing binary from bin.core or bin.${pname}
2424+ for folder in $binfolders ; do
2525+ target="$folder"/bin/"$binname"
2626+ if [[ -f "$target" && -x "$target" ]] ; then
2727+ ln -s "$(realpath "$target")" "$output"
2828+ continue 2
2929+ fi
3030+ done
3131+3232+ # look for scripts
3333+ # the explicit list of extensions avoid non-scripts such as $binname.cmd, $binname.jar, $binname.pm
3434+ # the order is relevant: $binname.sh is preferred to other $binname.*
3535+ if [[ -n "$scriptsFolder" ]] ; then
3636+ for script in "$scriptsFolder/$binname"{,.sh,.lua,.pl,.py,.rb,.sno,.tcl,.texlua,.tlu}; do
3737+ if [[ -f "$script" ]] ; then
3838+ sed -f patch-scripts.sed \
3939+ -e 's/^scriptname=`basename "\$0"`$/'"scriptname='$(basename "$binname")'/" \
4040+ -e 's/^scriptname=`basename "\$0" .sh`$'"/scriptname='$(basename "$binname" .sh)'/" \
4141+ "$script" > "$output"
4242+ chmod +x "$output"
4343+ continue 2
4444+ fi
4545+ done
4646+ fi
4747+4848+ echo "error: could not find source for 'bin/$binname'" >&2
4949+ exit 1
5050+done
5151+5252+# patch shebangs
5353+patchShebangs "$out/bin"
5454+5555+# generate links
5656+# we canonicalise the source to avoid symlink chains, and to check that it exists
5757+cd "$out"/bin
5858+for alias in $binlinks ; do
5959+ target="${bintargets%% *}"
6060+ bintargets="${bintargets#* }"
6161+ ln -s "$(realpath "$target")" "$out/bin/$alias"
6262+done
···186186 Keras = keras; # added 2021-11-25
187187 ldap = python-ldap; # added 2022-09-16
188188 lammps-cython = throw "lammps-cython no longer builds and is unmaintained"; # added 2021-07-04
189189+ lektor = throw "lektor has been promoted to a top-level attribute"; # added 2023-08-01
189190 logilab_astng = throw "logilab-astng has not been released since 2013 and is unmaintained"; # added 2022-11-29
190191 logilab_common = logilab-common; # added 2022-11-21
191192 loo-py = loopy; # added 2022-05-03
···204205 mistune_0_8 = throw "mistune_0_8 was removed because it was outdated and insecure"; # added 2022-08-12
205206 mistune_2_0 = mistune; # added 2022-08-12
206207 mox = throw "mox was removed because it is unmaintained"; # added 2023-02-21
208208+ mrkd = throw "mrkd has been promoted to a top-level attribute"; # added 2023-08-01
207209 mutmut = throw "mutmut has been promoted to a top-level attribute"; # added 2022-10-02
208210 net2grid = gridnet; # add 2022-04-22
209211 nghttp2 = throw "in 1.52.0 removed deprecated python bindings."; # added 2023-06-08