diff options
Diffstat (limited to 'pkgs/development/skaware-packages/execline/default.nix')
-rw-r--r-- | pkgs/development/skaware-packages/execline/default.nix | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pkgs/development/skaware-packages/execline/default.nix b/pkgs/development/skaware-packages/execline/default.nix new file mode 100644 index 0000000000000..953a081051677 --- /dev/null +++ b/pkgs/development/skaware-packages/execline/default.nix @@ -0,0 +1,68 @@ +{ fetchFromGitHub, skawarePackages }: + +with skawarePackages; +let + version = "2.9.0.1"; + + # Maintainer of manpages uses following versioning scheme: for every + # upstream $version he tags manpages release as ${version}.1, and, + # in case of extra fixes to manpages, new tags in form ${version}.2, + # ${version}.3 and so on are created. + manpages = fetchFromGitHub { + owner = "flexibeast"; + repo = "execline-man-pages"; + rev = "v2.9.0.0.1"; + sha256 = "sha256-hT0YsuYJ3XSMYwtlwDR8PGlD8ng8XPky93rCprruHu8="; + }; + +in buildPackage { + inherit version; + + pname = "execline"; + sha256 = "sha256-ASYPyvgP+8oqlKpV6kdN+545swM7VciviBJnkYeVMfY="; + + description = "A small scripting language, to be used in place of a shell in non-interactive scripts"; + + outputs = [ "bin" "man" "lib" "dev" "doc" "out" ]; + + # TODO: nsss support + configureFlags = [ + "--libdir=\${lib}/lib" + "--dynlibdir=\${lib}/lib" + "--bindir=\${bin}/bin" + "--includedir=\${dev}/include" + "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps" + "--with-include=${skalibs.dev}/include" + "--with-lib=${skalibs.lib}/lib" + "--with-dynlib=${skalibs.lib}/lib" + ]; + + postInstall = '' + # remove all execline executables from build directory + rm $(find -type f -mindepth 1 -maxdepth 1 -executable) + rm libexecline.* + + mv doc $doc/share/doc/execline/html + mv examples $doc/share/doc/execline/examples + + mv $bin/bin/execlineb $bin/bin/.execlineb-wrapped + + # A wrapper around execlineb, which provides all execline + # tools on `execlineb`’s PATH. + # It is implemented as a C script, because on non-Linux, + # nested shebang lines are not supported. + # The -lskarnet has to come at the end to support static builds. + $CC \ + -O \ + -Wall -Wpedantic \ + -D "EXECLINEB_PATH()=\"$bin/bin/.execlineb-wrapped\"" \ + -D "EXECLINE_BIN_PATH()=\"$bin/bin\"" \ + -I "${skalibs.dev}/include" \ + -L "${skalibs.lib}/lib" \ + -o "$bin/bin/execlineb" \ + ${./execlineb-wrapper.c} \ + -lskarnet + mkdir -p $man/share/ + cp -vr ${manpages}/man* $man/share + ''; +} |