diff options
Diffstat (limited to 'pkgs/development/compilers/gnat-bootstrap')
-rw-r--r-- | pkgs/development/compilers/gnat-bootstrap/default.nix | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/pkgs/development/compilers/gnat-bootstrap/default.nix b/pkgs/development/compilers/gnat-bootstrap/default.nix deleted file mode 100644 index d59a6b4f51fb..000000000000 --- a/pkgs/development/compilers/gnat-bootstrap/default.nix +++ /dev/null @@ -1,150 +0,0 @@ -{ stdenv, lib, autoPatchelfHook, fetchzip, xz, ncurses5, readline, gmp, mpfr -, expat, libipt, zlib, dejagnu, sourceHighlight, python3, elfutils, guile, glibc -, majorVersion -}: - -let - throwUnsupportedSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}"; -in -stdenv.mkDerivation(finalAttrs: - let versionMap = - let url = "https://github.com/alire-project/GNAT-FSF-builds/releases/download/gnat-${finalAttrs.version}/gnat-${stdenv.hostPlatform.system}-${finalAttrs.version}.tar.gz"; - in { - "11" = { - gccVersion = "11.2.0"; - alireRevision = "4"; - } // { - x86_64-darwin = { - inherit url; - hash = "sha256-FmBgD20PPQlX/ddhJliCTb/PRmKxe9z7TFPa2/SK4GY="; - upstreamTriplet = "x86_64-apple-darwin19.6.0"; - }; - x86_64-linux = { - inherit url; - hash = "sha256-8fMBJp6igH+Md5jE4LMubDmC4GLt4A+bZG/Xcz2LAJQ="; - upstreamTriplet = "x86_64-pc-linux-gnu"; - }; - }.${stdenv.hostPlatform.system} or throwUnsupportedSystem; - "12" = { - gccVersion = "12.1.0"; - alireRevision = "2"; - } // { - x86_64-darwin = { - inherit url; - hash = "sha256-zrcVFvFZMlGUtkG0p1wST6kGInRI64Icdsvkcf25yVs="; - upstreamTriplet = "x86_64-apple-darwin19.6.0"; - }; - x86_64-linux = { - inherit url; - hash = "sha256-EPDPOOjWJnJsUM7GGxj20/PXumjfLoMIEFX1EDtvWVY="; - upstreamTriplet = "x86_64-pc-linux-gnu"; - }; - }.${stdenv.hostPlatform.system} or throwUnsupportedSystem; - }; - inherit (versionMap.${majorVersion}) gccVersion alireRevision upstreamTriplet; -in { - pname = "gnat-bootstrap"; - inherit (versionMap.${majorVersion}) gccVersion alireRevision; - - version = "${gccVersion}${lib.optionalString (alireRevision!="") "-"}${alireRevision}"; - - src = fetchzip { - inherit (versionMap.${majorVersion}) url hash; - }; - - nativeBuildInputs = [ - dejagnu - expat - gmp - guile - libipt - mpfr - ncurses5 - python3 - readline - sourceHighlight - xz - zlib - ] ++ lib.optionals stdenv.buildPlatform.isLinux [ - autoPatchelfHook - glibc - ] ++ lib.optionals (lib.meta.availableOn stdenv.buildPlatform elfutils) [ - elfutils - ]; - - postPatch = lib.optionalString (stdenv.hostPlatform.isDarwin) '' - substituteInPlace lib/gcc/${upstreamTriplet}/${gccVersion}/install-tools/mkheaders.conf \ - --replace "SYSTEM_HEADER_DIR=\"/usr/include\"" "SYSTEM_HEADER_DIR=\"/include\"" - '' - # The included fixincl binary that is called during header fixup has a - # hardcoded execvp("/usr/bin/sed", ...) call, but /usr/bin/sed isn't - # available in the Nix Darwin stdenv. Fortunately, execvp() will search the - # PATH environment variable for the executable if its first argument does not - # contain a slash, so we can just change the string to "sed" and zero the - # other bytes. - + '' - sed -i "s,/usr/bin/sed,sed\x00\x00\x00\x00\x00\x00\x00\x00\x00," libexec/gcc/${upstreamTriplet}/${gccVersion}/install-tools/fixincl - ''; - - installPhase = '' - mkdir -p $out - cp -ar * $out/ - '' - - # So far with the Darwin gnat-bootstrap binary packages, there have been two - # types of dylib path references to other dylibs that need fixups: - # - # 1. Dylibs in $out/lib with paths starting with - # /Users/runner/.../gcc/install that refer to other dylibs in $out/lib - # 2. Dylibs in $out/lib/gcc/*/*/adalib with paths starting with - # @rpath that refer to other dylibs in $out/lib/gcc/*/*/adalib - # - # Additionally, per Section 14.4 Fixed Headers in the GCC 12.2.0 manual [2], - # we have to update the fixed header files in current Alire GCC package, since it - # was built against macOS 10.15 (Darwin 19.6.0), but Nix currently - # builds against macOS 10.12, and the two header file structures differ. - # For example, the current Alire GCC package has a fixed <stdio.h> - # from macOS 10.15 that contains a #include <_stdio.h>, but neither the Alire - # GCC package nor macOS 10.12 have such a header (<xlocale/_stdio.h> and - # <secure/_stdio.h> in 10.12 are not equivalent; indeed, 10.15 <_stdio.h> - # says it contains code shared by <stdio.h> and <xlocale/_stdio.h>). - # - # [2]: https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Fixed-Headers.html - - + lib.optionalString (stdenv.hostPlatform.isDarwin) '' - upstreamBuildPrefix="/Users/runner/work/GNAT-FSF-builds/GNAT-FSF-builds/sbx/x86_64-darwin/gcc/install" - for i in "$out"/lib/*.dylib "$out"/lib/gcc/*/*/adalib/*.dylib; do - if [[ -f "$i" && ! -h "$i" ]]; then - install_name_tool -id "$i" "$i" || true - for old_path in $(otool -L "$i" | grep "$upstreamBuildPrefix" | awk '{print $1}'); do - new_path=`echo "$old_path" | sed "s,$upstreamBuildPrefix,$out,"` - install_name_tool -change "$old_path" "$new_path" "$i" || true - done - for old_path in $(otool -L "$i" | grep "@rpath" | awk '{print $1}'); do - new_path=$(echo "$old_path" | sed "s,@rpath,$(dirname "$i"),") - install_name_tool -change "$old_path" "$new_path" "$i" || true - done - fi - done - - "$out"/libexec/gcc/${upstreamTriplet}/${gccVersion}/install-tools/mkheaders -v -v \ - "$out" "${stdenv.cc.libc}" - ''; - - passthru = { - langC = true; # TRICK for gcc-wrapper to wrap it - langCC = false; - langFortran = false; - langAda = true; - isGNU = true; - }; - - meta = with lib; { - description = "GNAT, the GNU Ada Translator"; - homepage = "https://www.gnu.org/software/gnat"; - license = licenses.gpl3; - maintainers = with maintainers; [ ethindp ]; - platforms = [ "x86_64-linux" "x86_64-darwin" ]; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - }; -}) |