diff --git a/pkgs/development/tools/build-managers/scons/common.nix b/pkgs/development/tools/build-managers/scons/common.nix new file mode 100644 index 00000000000..de36925368d --- /dev/null +++ b/pkgs/development/tools/build-managers/scons/common.nix @@ -0,0 +1,32 @@ +{ version, sha256 }: + +{ stdenv, fetchurl, fetchpatch, python2Packages }: + +let name = "scons"; +in python2Packages.buildPythonApplication { + name = "${name}-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/scons/${name}-${version}.tar.gz"; + inherit sha256; + }; + + # Fix a regression in 3.0.0 (causes build errors for some packages) + patches = stdenv.lib.optional (version == "3.0.0") ./print-statements.patch; + + meta = with stdenv.lib; { + homepage = http://scons.org/; + description = "An improved, cross-platform substitute for Make"; + license = licenses.mit; + longDescription = '' + SCons is an Open Source software construction tool. Think of + SCons as an improved, cross-platform substitute for the classic + Make utility with integrated functionality similar to + autoconf/automake and compiler caches such as ccache. In short, + SCons is an easier, more reliable and faster way to build + software. + ''; + platforms = platforms.all; + maintainers = [ primeos ]; + }; +} diff --git a/pkgs/development/tools/build-managers/scons/default.nix b/pkgs/development/tools/build-managers/scons/default.nix index 1b2a8220361..8e40777815c 100644 --- a/pkgs/development/tools/build-managers/scons/default.nix +++ b/pkgs/development/tools/build-managers/scons/default.nix @@ -1,30 +1,14 @@ -{stdenv, fetchurl, python2Packages}: +{ callPackage, stdenv }: let - name = "scons"; - version = "2.5.1"; -in python2Packages.buildPythonApplication { - name = "${name}-${version}"; - - src = fetchurl { - url = "mirror://sourceforge/scons/${name}-${version}.tar.gz"; + mkScons = args: callPackage (import ./common.nix args) { }; +in { + scons_2_5_1 = mkScons { + version = "2.5.1"; sha256 = "1wji1z9jdkhnmm99apx6fhld9cs52rr56aigniyrcsmlwy52298b"; }; - # No tests - doCheck = false; - - meta = { - homepage = http://scons.org/; - description = "An improved, cross-platform substitute for Make"; - license = stdenv.lib.licenses.mit; - longDescription = '' - SCons is an Open Source software construction tool. Think of - SCons as an improved, cross-platform substitute for the classic - Make utility with integrated functionality similar to - autoconf/automake and compiler caches such as ccache. In short, - SCons is an easier, more reliable and faster way to build - software. - ''; - platforms = stdenv.lib.platforms.all; + scons_3_0_0 = mkScons { + version = "3.0.0"; + sha256 = "05jjykllk4icnq6gfrkgkbc4ggxm7983q6r33mrhpilqbd02ylqg"; }; } diff --git a/pkgs/development/tools/build-managers/scons/default.upstream b/pkgs/development/tools/build-managers/scons/default.upstream deleted file mode 100644 index f9dae2818c8..00000000000 --- a/pkgs/development/tools/build-managers/scons/default.upstream +++ /dev/null @@ -1,10 +0,0 @@ -url http://sourceforge.net/projects/scons/files/scons/ -SF_version_dir -version_link '[.]tar[.]gz/download$' -SF_redirect -ensure_hash - -do_overwrite() { - set_var_value version "$CURRENT_VERSION" - set_var_value sha256 "$CURRENT_HASH" -} diff --git a/pkgs/development/tools/build-managers/scons/print-statements.patch b/pkgs/development/tools/build-managers/scons/print-statements.patch new file mode 100644 index 00000000000..a963bf78aba --- /dev/null +++ b/pkgs/development/tools/build-managers/scons/print-statements.patch @@ -0,0 +1,13 @@ +diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py +index 558e28f9..8fea9c4d 100644 +--- src/engine/SCons/Script/SConscript.py ++++ src/engine/SCons/Script/SConscript.py +@@ -5,8 +5,6 @@ + + """ + +-from __future__ import print_function +- + # + # __COPYRIGHT__ + # diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2ced90b2d0f..1b362df2e59 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7536,7 +7536,9 @@ with pkgs; selendroid = callPackage ../development/tools/selenium/selendroid { }; - scons = callPackage ../development/tools/build-managers/scons { }; + sconsPackages = callPackage ../development/tools/build-managers/scons { }; + scons = sconsPackages.scons_3_0_0; + scons_2_5_1 = sconsPackages.scons_2_5_1; sbt = callPackage ../development/tools/build-managers/sbt { }; sbt-with-scala-native = callPackage ../development/tools/build-managers/sbt/scala-native.nix { };