Unverified Commit 0ff4d564 authored by Fabián Heredia Montiel's avatar Fabián Heredia Montiel Committed by GitHub
Browse files

jam: fix OS determination on linux (#349044)

parents 579f5122 59ede8c2
Loading
Loading
Loading
Loading
+29 −15
Original line number Diff line number Diff line
@@ -49,12 +49,17 @@ stdenv.mkDerivation (finalAttrs: {
    export AR="$AR rc"
  '';

  postPatch =
    ''
      substituteInPlace jam.h --replace-fail 'ifdef linux' 'ifdef __linux__'
    ''
    +
      # When cross-compiling, we need to set the preprocessor macros
      # OSMAJOR/OSMINOR/OSPLAT to the values from the target platform, not the host
      # platform. This looks a little ridiculous because the vast majority of build
      # tools don't embed target-specific information into their binary, but in this
      # case we behave more like a compiler than a make(1)-alike.
  postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) ''
      lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) ''
         cat >>jam.h <<EOF
         #undef OSMAJOR
         #undef OSMINOR
@@ -87,6 +92,15 @@ stdenv.mkDerivation (finalAttrs: {
      package = finalAttrs.finalPackage;
      command = "jam -v";
    };
    tests.os = testers.runCommand {
      name = "${finalAttrs.finalPackage.name}-os";
      nativeBuildInputs = [ finalAttrs.finalPackage ];
      script = ''
        echo 'echo $(OS) ;' > Jamfile
        os=$(jam -d0)
        [[ $os != UNKNOWN* ]] && touch $out
      '';
    };
  };

  meta = {