diff options
Diffstat (limited to 'pkgs/desktops/gnustep/make')
-rw-r--r-- | pkgs/desktops/gnustep/make/builder.sh | 127 | ||||
-rw-r--r-- | pkgs/desktops/gnustep/make/default.nix | 23 | ||||
-rw-r--r-- | pkgs/desktops/gnustep/make/gsmakeDerivation.nix | 19 | ||||
-rw-r--r-- | pkgs/desktops/gnustep/make/setup-hook.sh | 96 | ||||
-rw-r--r-- | pkgs/desktops/gnustep/make/wrapper.sh | 4 |
5 files changed, 58 insertions, 211 deletions
diff --git a/pkgs/desktops/gnustep/make/builder.sh b/pkgs/desktops/gnustep/make/builder.sh deleted file mode 100644 index 79ead3f7b729..000000000000 --- a/pkgs/desktops/gnustep/make/builder.sh +++ /dev/null @@ -1,127 +0,0 @@ -if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi -source $stdenv/setup - -providedPreConfigure="$preConfigure"; - -preConfigure() { - eval "$providedPreConfigure" - - . $GNUSTEP_MAKEFILES/GNUstep.sh -} - -wrapGSMake() { - local program="$1" - local config="$2" - local wrapped="$(dirname $program)/.$(basename $program)-wrapped" - - mv "$program" "$wrapped" - - cat > "$program"<<EOF -#! $SHELL -e - -export GNUSTEP_CONFIG_FILE="$config" - -exec "$wrapped" "\$@" -EOF - chmod +x "$program" -} - -postInstall() { - local conf="$out/share/.GNUstep.conf" - - mkdir -p "$out/share" - touch $conf - - # add the current package to the paths - local tmp="$out/lib/GNUstep/Applications" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_APPS" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp" - fi - tmp="$out/lib/GNUstep/Applications" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp" - fi - tmp="$out/lib/GNUstep/WebApplications" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_WEB_APPS" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp" - fi - tmp="$out/bin" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp" - fi - tmp="$out/sbin" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp" - fi - tmp="$out/lib/GNUstep" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARY" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp" - fi - tmp="$out/include" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_HEADERS" in *"${tmp}"*) false;; *) true;; esac; then - if [ -z "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then - export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp" - else - export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp" - fi - fi - tmp="$out/lib" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_LIBRARIES" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp" - fi - tmp="$out/share/GNUstep/Documentation" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp" - fi - tmp="$out/share/man" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_MAN" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp" - fi - tmp="$out/share/info" - if [ -d "$tmp" ] && case "$NIX_GNUSTEP_SYSTEM_DOC_INFO" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp" - fi - - # write the config file - echo GNUSTEP_MAKEFILES=$GNUSTEP_MAKEFILES >> $conf - if [ -n "$NIX_GNUSTEP_SYSTEM_APPS" ]; then - echo NIX_GNUSTEP_SYSTEM_APPS="$NIX_GNUSTEP_SYSTEM_APPS" - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" ]; then - echo NIX_GNUSTEP_SYSTEM_ADMIN_APPS="$NIX_GNUSTEP_SYSTEM_ADMIN_APPS" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_WEB_APPS" ]; then - echo NIX_GNUSTEP_SYSTEM_WEB_APPS="$NIX_GNUSTEP_SYSTEM_WEB_APPS" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_TOOLS" ]; then - echo NIX_GNUSTEP_SYSTEM_TOOLS="$NIX_GNUSTEP_SYSTEM_TOOLS" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" ]; then - echo NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS="$NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARY" ]; then - echo NIX_GNUSTEP_SYSTEM_LIBRARY="$NIX_GNUSTEP_SYSTEM_LIBRARY" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_HEADERS" ]; then - echo NIX_GNUSTEP_SYSTEM_HEADERS="$NIX_GNUSTEP_SYSTEM_HEADERS" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_LIBRARIES" ]; then - echo NIX_GNUSTEP_SYSTEM_LIBRARIES="$NIX_GNUSTEP_SYSTEM_LIBRARIES" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_DOC" ]; then - echo NIX_GNUSTEP_SYSTEM_DOC="$NIX_GNUSTEP_SYSTEM_DOC" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_MAN" ]; then - echo NIX_GNUSTEP_SYSTEM_DOC_MAN="$NIX_GNUSTEP_SYSTEM_DOC_MAN" >> $conf - fi - if [ -n "$NIX_GNUSTEP_SYSTEM_DOC_INFO" ]; then - echo NIX_GNUSTEP_SYSTEM_DOC_INFO="$NIX_GNUSTEP_SYSTEM_DOC_INFO" >> $conf - fi - - for i in $out/bin/*; do - echo "wrapping $(basename $i)" - wrapGSMake "$i" "$out/share/.GNUstep.conf" - done -} - -genericBuild diff --git a/pkgs/desktops/gnustep/make/default.nix b/pkgs/desktops/gnustep/make/default.nix index f9b4ae553c85..290e3004497f 100644 --- a/pkgs/desktops/gnustep/make/default.nix +++ b/pkgs/desktops/gnustep/make/default.nix @@ -1,11 +1,16 @@ -{ lib, stdenv, fetchurl, clang, which, libobjc }: +{ lib +, stdenv +, fetchurl +, which +, libobjc +}: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "gnustep-make"; version = "2.9.1"; src = fetchurl { - url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${version}.tar.gz"; + url = "ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-make-${finalAttrs.version}.tar.gz"; sha256 = "sha256-w9bnDPFWsn59HtJQHFffP5bidIjOLzUbk+R5xYwB6uc="; }; @@ -22,17 +27,19 @@ stdenv.mkDerivation rec { "GNUSTEP_INSTALLATION_DOMAIN=SYSTEM" ]; - nativeBuildInputs = [ clang which ]; buildInputs = [ libobjc ]; + propagatedBuildInputs = [ which ]; + patches = [ ./fixup-paths.patch ]; setupHook = ./setup-hook.sh; + meta = { + changelog = "https://github.com/gnustep/tools-make/releases/tag/make-${builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version}"; description = "A build manager for GNUstep"; - homepage = "http://gnustep.org/"; - changelog = "https://github.com/gnustep/tools-make/releases/tag/make-${builtins.replaceStrings [ "." ] [ "_" ] version}"; + homepage = "https://gnustep.github.io/"; license = lib.licenses.lgpl2Plus; - maintainers = with lib.maintainers; [ ashalkhakov matthewbauer ]; + maintainers = with lib.maintainers; [ ashalkhakov matthewbauer dblsaiko ]; platforms = lib.platforms.unix; }; -} +}) diff --git a/pkgs/desktops/gnustep/make/gsmakeDerivation.nix b/pkgs/desktops/gnustep/make/gsmakeDerivation.nix deleted file mode 100644 index 04cfcc1ca343..000000000000 --- a/pkgs/desktops/gnustep/make/gsmakeDerivation.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ lib, stdenv, make, makeWrapper, which }: -{ nativeBuildInputs ? [], ...} @ args: -stdenv.mkDerivation (args // { - nativeBuildInputs = [ makeWrapper make which ] ++ nativeBuildInputs; - - builder = ./builder.sh; - setupHook = ./setup-hook.sh; - - GNUSTEP_MAKEFILES = "${make}/share/GNUstep/Makefiles"; - - meta = { - homepage = "http://gnustep.org/"; - - license = lib.licenses.lgpl2Plus; - - maintainers = with lib.maintainers; [ ashalkhakov matthewbauer ]; - platforms = lib.platforms.linux; - } // (lib.optionalAttrs (builtins.hasAttr "meta" args) args.meta); -}) diff --git a/pkgs/desktops/gnustep/make/setup-hook.sh b/pkgs/desktops/gnustep/make/setup-hook.sh index 83adfefc10cd..0bfbd35f45f5 100644 --- a/pkgs/desktops/gnustep/make/setup-hook.sh +++ b/pkgs/desktops/gnustep/make/setup-hook.sh @@ -20,62 +20,52 @@ addGnustepInstallFlags() { preInstallPhases+=" addGnustepInstallFlags" -addEnvVars() { +addGNUstepEnvVars() { local filename + gsAddToSearchPath() { + if [[ -d "$2" && "${!1-}" != *"$2"* ]]; then + addToSearchPath "$1" "$2" + fi + } + + gsAddToIncludeSearchPath() { + local -n ref="$1" + + # NOTE: contrary to the one in wrapGNUstepAppsHook, use -e here instead of -d since it's also used for the makefiles + if [[ -e "$2" && "${ref-}" != *"$2"* ]]; then + if [[ "${ref-}" != "" ]]; then + ref+=" " + fi + + ref+="$2" + fi + } + for filename in $1/share/GNUstep/Makefiles/Additional/*.make ; do - if case "${NIX_GNUSTEP_MAKEFILES_ADDITIONAL-}" in *"{$filename}"*) false;; *) true;; esac; then - export NIX_GNUSTEP_MAKEFILES_ADDITIONAL+=" $filename" - fi + gsAddToIncludeSearchPath NIX_GNUSTEP_MAKEFILES_ADDITIONAL "$filename" done - local tmp="$1/lib/GNUstep/Applications" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$tmp" - fi - tmp="$1/lib/GNUstep/Applications" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_ADMIN_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$tmp" - fi - tmp="$1/lib/GNUstep/WebApplications" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_WEB_APPS-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$tmp" - fi - tmp="$1/bin" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_TOOLS-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$tmp" - fi - tmp="$1/sbin" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$tmp" - fi - tmp="$1/lib/GNUstep" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_LIBRARY-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$tmp" - fi - tmp="$1/include" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_HEADERS-}" in *"${tmp}"*) false;; *) true;; esac; then - if [ -z "${NIX_GNUSTEP_SYSTEM_HEADERS-}" ]; then - export NIX_GNUSTEP_SYSTEM_HEADERS="$tmp" - else - export NIX_GNUSTEP_SYSTEM_HEADERS+=" $tmp" - fi - fi - tmp="$1/lib" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_LIBRARIES-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$tmp" - fi - tmp="$1/share/GNUstep/Documentation" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$tmp" - fi - tmp="$1/share/man" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC_MAN-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$tmp" - fi - tmp="$1/share/info" - if [ -d "$tmp" ] && case "${NIX_GNUSTEP_SYSTEM_DOC_INFO-}" in *"${tmp}"*) false;; *) true;; esac; then - addToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$tmp" - fi + export NIX_GNUSTEP_MAKEFILES_ADDITIONAL + + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_APPS "$1/lib/GNUstep/Applications" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_APPS "$1/lib/GNUstep/Applications" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_WEB_APPS "$1/lib/GNUstep/WebApplications" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_TOOLS "$1/bin" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_ADMIN_TOOLS "$1/sbin" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARY "$1/lib/GNUstep" + gsAddToIncludeSearchPath NIX_GNUSTEP_SYSTEM_HEADERS "$1/include" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_LIBRARIES "$1/lib" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC "$1/share/GNUstep/Documentation" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC_MAN "$1/share/man" + gsAddToSearchPath NIX_GNUSTEP_SYSTEM_DOC_INFO "$1/share/info" +} +addEnvHooks "$targetOffset" addGNUstepEnvVars + +gsmakeSetup() { + export GNUSTEP_MAKEFILES="$(gnustep-config --variable=GNUSTEP_MAKEFILES)" + + . $GNUSTEP_MAKEFILES/GNUstep.sh } -addEnvHooks "$targetOffset" addEnvVars + +preConfigureHooks+=(gsmakeSetup) diff --git a/pkgs/desktops/gnustep/make/wrapper.sh b/pkgs/desktops/gnustep/make/wrapper.sh deleted file mode 100644 index 1bc2e130d88d..000000000000 --- a/pkgs/desktops/gnustep/make/wrapper.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -. $GNUSTEP_MAKEFILES/GNUstep.sh -$1 |