Unverified Commit ebb16d0f authored by sternenseemann's avatar sternenseemann Committed by GitHub
Browse files

gnatPackages: AdaCore 2025 updates (#352856)

parents 1dabc1f5 3fd273a5
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -27,19 +27,20 @@ let
    python3 = [ python3 ncurses ];
    syslog = [ ];
    zlib = [ zlib ];
    cpp = [ ];
  };
in


stdenv.mkDerivation rec {
  pname = "gnatcoll-${component}";
  version = "24.0.0";
  version = "25.0.0";

  src = fetchFromGitHub {
    owner = "AdaCore";
    repo = "gnatcoll-bindings";
    rev = "v${version}";
    sha256 = "00aakpmr67r72l1h3jpkaw83p1a2mjjvfk635yy5c1nss3ji1qjm";
    sha256 = "0ayc7zvv8w90v0xzhrjk2x88zrsk62xxcm27ya9crlp6affn5idk";
  };

  nativeBuildInputs = [
@@ -59,7 +60,7 @@ stdenv.mkDerivation rec {
    gnatcoll-core
  ] ++ libsFor."${component}" or [];

  # explicit flag for GPL acceptance because upstreams
  # explicit flag for GPL acceptance because upstream
  # allows a gcc runtime exception for all bindings
  # except for readline (since it is GPL w/o exceptions)
  buildFlags = lib.optionals (component == "readline") [
+44 −3
Original line number Diff line number Diff line
@@ -3,39 +3,80 @@
, gnat
, gprbuild
, fetchFromGitHub
, fetchpatch2
, which
, python3
, rsync
, enableGnatcollCore ? true
  # TODO(@sternenseemann): figure out a way to split this up into three packages
, enableGnatcollProjects ? true
  # for tests
, gnatcoll-core
}:

# gnatcoll-projects depends on gnatcoll-core
assert enableGnatcollProjects -> enableGnatcollCore;

stdenv.mkDerivation rec {
  pname = "gnatcoll-core";
  version = "24.0.0";
  version = "25.0.0";

  src = fetchFromGitHub {
    owner = "AdaCore";
    repo = "gnatcoll-core";
    rev = "v${version}";
    sha256 = "1cks2w0inj9hvamsdxjriwxnx1igmx2khhr6kwxshsl30rs8nzvb";
    sha256 = "1srnh7vhs46c2zy4hcy4pg0a0prghfzlpv7c82k0jan384yz1g6g";
  };

  patches = [
    # Fix compilation with GNAT 12 https://github.com/AdaCore/gnatcoll-core/issues/88
    (fetchpatch2 {
      name = "gnatcoll-core-gnat-12.patch";
      url = "https://github.com/AdaCore/gnatcoll-core/commit/515db1c9f1eea8095f2d9ff9570159a78c981ec6.patch";
      sha256 = "1ghnkhp5fncb7qcmf59kyqvy0sd0pzf1phnr2z7b4ljwlkbmcp36";
    })
  ];

  postPatch = ''
    patchShebangs */*.gpr.py
  '';

  nativeBuildInputs = [
    gprbuild
    which
    gnat
    python3
    rsync
  ];

  # propagate since gprbuild needs to find
  # referenced GPR project definitions
  propagatedBuildInputs = [
  propagatedBuildInputs = lib.optionals enableGnatcollProjects [
    gprbuild # libgpr
  ];

  strictDeps = true;

  makeFlags = [
    "prefix=${placeholder "out"}"
    "PROCESSORS=$(NIX_BUILD_CORES)"
    # confusingly, for gprbuild --target is autoconf --host
    "TARGET=${stdenv.hostPlatform.config}"
    "GNATCOLL_MINIMAL_ONLY=${if !enableGnatcollCore then "yes" else "no"}"
    "GNATCOLL_PROJECTS=${if enableGnatcollProjects then "yes" else "no"}"
  ];

  passthru.tests = {
    minimalOnly = gnatcoll-core.override {
      enableGnatcollProjects = false;
      enableGnatcollCore = false;
    };
    noProjects = gnatcoll-core.override {
      enableGnatcollProjects = false;
      enableGnatcollCore = true;
    };
  };

  meta = with lib; {
    homepage = "https://github.com/AdaCore/gnatcoll-core";
    description = "GNAT Components Collection - Core packages";
+2 −2
Original line number Diff line number Diff line
@@ -54,13 +54,13 @@ stdenv.mkDerivation rec {
    if onlyExecutable
    then builtins.replaceStrings [ "_" ] [ "-" ] component
    else "gnatcoll-${component}";
  version = "24.0.0";
  version = "25.0.0";

  src = fetchFromGitHub {
    owner = "AdaCore";
    repo = "gnatcoll-db";
    rev = "v${version}";
    sha256 = "0jq76s4s7q2x93jh8la6r0i3jkpvgsfj12vbbaqabh410xccyr3p";
    sha256 = "0q35ii0aa4hh59v768l5cilg1b30a4ckcvlbfy0lkcbp3rcfnbz3";
  };

  # Link executables dynamically unless specified by the platform,
+4 −1
Original line number Diff line number Diff line
@@ -13,7 +13,10 @@ let
  gnat_version = lib.versions.major gnat.version;

  # gnatprove fsf-14 requires gpr2 from a special branch
  gpr2_24_2_next = gpr2.overrideAttrs(old: rec {
  gpr2_24_2_next = (gpr2.override {
    # pregenerated kb db is not included
    gpr2kbdir = "${gprbuild}/share/gprconfig";
  }).overrideAttrs(old: rec {
    version = "24.2.0-next";
    src = fetchFromGitHub {
      owner = "AdaCore";
+30 −10
Original line number Diff line number Diff line
@@ -5,19 +5,22 @@
  gprbuild,
  which,
  gnat,
  xmlada,
  gnatcoll-core,
  gnatcoll-iconv,
  gnatcoll-gmp,
  enableShared ? !stdenv.hostPlatform.isStatic,
  # kb database source, if null assume it is pregenerated
  gpr2kbdir ? null,
}:

stdenv.mkDerivation rec {
  pname = "gpr2";
  version = "24.0.0";
  version = "25.0.0";

  src = fetchurl {
    url = "https://github.com/AdaCore/gpr/releases/download/v${version}/gpr2-with-lkparser-${lib.versions.majorMinor version}.tgz";
    sha256 = "1g90689k94q3ma7q76gnjipfblgfvcq6ldwbzcf0l5hx6n8vbly8";
    url = "https://github.com/AdaCore/gpr/releases/download/v${version}/gpr2-with-gprconfig_kb-${lib.versions.majorMinor version}.tgz";
    sha512 = "70fe0fcf541f6d3d90a34cab1638bbc0283dcd765c000406e0cfb73bae1817b30ddfe73f3672247a97c6b6bfc41900bc96a4440ca0c660f9c2f7b9d3cc8f8dcf";
  };

  nativeBuildInputs = [
@@ -26,15 +29,30 @@ stdenv.mkDerivation rec {
    gprbuild
  ];

  makeFlags = [
  makeFlags =
    [
      "prefix=$(out)"
    "GPR2KBDIR=${gprbuild}/share/gprconfig"
      "PROCESSORS=$(NIX_BUILD_CORES)"
      "ENABLE_SHARED=${if enableShared then "yes" else "no"}"
      "GPR2_BUILD=release"
    ]
    ++ lib.optionals (gpr2kbdir != null) [
      "GPR2KBDIR=${gpr2kbdir}"
    ];

  configurePhase = ''
    runHook preConfigure
    make setup "''${makeFlagsArray[@]}" $makeFlags
    runHook postConfigure
  '';

  # fool make into thinking pregenerated targets are up to date
  preBuild = lib.optionalString (gpr2kbdir == null) ''
    touch .build/kb/{*.adb,*.ads,collect_kb}
  '';

  propagatedBuildInputs = [
    gprbuild
    xmlada
    gnatcoll-gmp
    gnatcoll-core
    gnatcoll-iconv
@@ -49,5 +67,7 @@ stdenv.mkDerivation rec {
    ];
    maintainers = with maintainers; [ heijligen ];
    platforms = platforms.all;
    # TODO(@sternenseemann): investigate failure with gnat 13
    broken = lib.versionOlder gnat.version "14";
  };
}
Loading