diff options
Diffstat (limited to 'pkgs/development/compilers/squeak/default.nix')
-rw-r--r-- | pkgs/development/compilers/squeak/default.nix | 234 |
1 files changed, 0 insertions, 234 deletions
diff --git a/pkgs/development/compilers/squeak/default.nix b/pkgs/development/compilers/squeak/default.nix deleted file mode 100644 index 0494539c4435..000000000000 --- a/pkgs/development/compilers/squeak/default.nix +++ /dev/null @@ -1,234 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, fetchurl -, fetchzip -, autoconf -, automake -, autoreconfHook -, dos2unix -, file -, perl -, pkg-config -, alsa-lib -, coreutils -, freetype -, glib -, glibc -, gnugrep -, libGL -, libpulseaudio -, libtool -, libuuid -, openssl -, pango -, xorg -, squeakImageHash ? null -, squeakSourcesHash ? null -, squeakSourcesVersion ? null -, squeakVersion ? null -, squeakVmCommitHash ? null -, squeakVmCommitHashHash ? null -, squeakVmVersion ? null -} @ args: - -let - inherit (builtins) elemAt toString; - - nullableOr = o: default: if o == null then default else o; - - bits = stdenv.hostPlatform.parsed.cpu.bits; - - squeakVersion = nullableOr args.squeakVersion or null "5.3-19459"; - squeakVersionSplit = builtins.split "-" squeakVersion; - squeakVersionBase = elemAt squeakVersionSplit 0; - squeakVersionBaseSplit = lib.splitVersion squeakVersionBase; - squeakVersionMajor = elemAt squeakVersionBaseSplit 0; - squeakVersionMinor = elemAt squeakVersionBaseSplit 1; - - squeakImageVersion = elemAt squeakVersionSplit 2; - - squeakSourcesVersion = nullableOr args.squeakSourcesVersion or null "50"; - - squeakVmVersion = nullableOr args.squeakVmVersion or null "5.0-202003021730"; - squeakVmVersionSplit = builtins.split "-" squeakVmVersion; - squeakVmVersionBase = elemAt squeakVmVersionSplit 0; - squeakVmVersionBaseSplit = lib.splitVersion squeakVmVersionBase; - squeakVmVersionMajor = elemAt squeakVmVersionBaseSplit 0; - squeakVmVersionMinor = elemAt squeakVmVersionBaseSplit 1; - squeakVmVersionRelease = elemAt squeakVmVersionSplit 2; - - squeakVmCommitHash = nullableOr args.squeakVmCommitHash or null (fetchurl { - url = "https://api.github.com/repos/OpenSmalltalk/opensmalltalk-vm/commits/${squeakVmVersionRelease}"; - curlOpts = "--header Accept:application/vnd.github.v3.sha"; - hash = nullableOr args.squeakVmCommitHashHash or null - "sha256-quwmhpJlb2fp0fI9b03fBxSR44j1xmHPW20wkSqTOhQ="; - }); -in stdenv.mkDerivation { - pname = "squeak"; - version = squeakVersion; - - vmVersionRelease = squeakVmVersionRelease; # "202003021730" - vmHash = squeakVmCommitHash; - - vmSrcUrl = "https://github.com/OpenSmalltalk/opensmalltalk-vm.git"; - src = fetchFromGitHub { - owner = "OpenSmalltalk"; - repo = "opensmalltalk-vm"; - rev = squeakVmVersionRelease; - hash = nullableOr args.squeakVmHash or null - "sha256-rNJn5ya+7ggC21MpwSrl2ByJDjVycONKHADboH7dQLM="; - }; - imageSrc = let - squeakImageName = "Squeak${squeakVersionBase}-${squeakImageVersion}-${toString bits}bit"; - in fetchzip { - url = "https://files.squeak.org/${squeakVersionBase}/${squeakImageName}/${squeakImageName}.zip"; - name = "source"; - stripRoot = false; - hash = nullableOr args.squeakImageHash or null - "sha256-wDuRyc/DNqG1D4DzyBkUvrzFkBlXBtbpnANZlRV/Fas="; - }; - sourcesSrc = fetchurl { - url = "https://files.squeak.org/sources_files/SqueakV${squeakSourcesVersion}.sources.gz"; - hash = nullableOr args.squeakSourcesHash or null - "sha256-ZViZ1VgI32LwLTEyw7utp8oaAK3UmCNJnHqsGm1IKYE="; - }; - - vmBuild = "linux64x64"; - - nativeBuildInputs = [ - autoconf - automake - autoreconfHook - dos2unix - file - perl - pkg-config - ]; - buildInputs = [ - alsa-lib - coreutils - freetype - glib - glibc - gnugrep - libGL - libpulseaudio - libtool - libuuid - openssl - pango - xorg.libX11 - ]; - - postUnpack = '' - for file in "$imageSrc"/*.{image,changes}; do - gzip -c "$file" > "$sourceRoot/''${file##"$imageSrc"/}.gz" - done - ''; - - prePatch = '' - dos2unix platforms/unix/plugins/*/{Makefile.inc,acinclude.m4} - ''; - - patches = [ - ./squeak-configure-version.patch - ./squeak-plugins-discovery.patch - ./squeak-squeaksh-nixpkgs.patch - ]; - - postPatch = '' - vmVersionDate=$(sed 's/\([0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)/\1-\2-\3T\4:\5+0000/' <<< "$vmVersionRelease") - vmVersionDate=$(date -u '+%a %b %-d %T %Y %z' -d "$vmVersionDate") - vmVersionFiles=$(sed -n 's/^versionfiles="\(.*\)"/\1/p' ./scripts/updateSCCSVersions) - vmHash=$(< "$vmHash") - vmAbbrevHash=''${vmHash:0:12} - printf '%s\n' "$vmAbbrevHash" - for vmVersionFile in $vmVersionFiles; do - substituteInPlace "$vmVersionFile" \ - --replace "\$Date\$" "\$Date: ''${vmVersionDate} \$" \ - --replace "\$URL\$" "\$URL: ''${vmSrcUrl} \$" \ - --replace "\$Rev\$" "\$Rev: ''${vmVersionRelease} \$" \ - --replace "\$CommitHash\$" "\$CommitHash: ''${vmAbbrevHash} \$" - done - patchShebangs --build ./"build.$vmBuild"/squeak.cog.spur ./scripts - for squeaksh in ./platforms/unix/config/{,bin.}squeak.sh.in; do - substituteInPlace "$squeaksh" \ - --subst-var-by 'glibc' ${lib.escapeShellArg (lib.getBin glibc)} \ - --subst-var-by 'gnugrep' ${lib.escapeShellArg (lib.getBin gnugrep)} - done - substituteInPlace ./platforms/unix/config/mkmf \ - --replace '/bin/rm ' '${coreutils}/bin/rm ' - ''; - - # Workaround build failure on -fno-common toolchains: - # ld: vm/vm.a(cogit.o):spur64src/vm/cogitX64SysV.c:2552: multiple definition of - # `traceStores'; vm/vm.a(gcc3x-cointerp.o):spur64src/vm/cogit.h:140: first defined here - env.NIX_CFLAGS_COMPILE = toString ( - [ "-fcommon" ] - ++ (lib.optionals stdenv.cc.isClang [ - # LLVM 16 turned these into errors (rightly, perhaps.) - # Allow this package to continue to build despite this change. - "-Wno-error=int-conversion" - "-Wno-error=implicit-function-declaration" - "-Wno-error=incompatible-function-pointer-types" - ]) - ); - - preAutoreconf = '' - pushd ./platforms/unix/config > /dev/null - ./mkacinc > ./acplugins.m4 - ''; - postAutoreconf = '' - rm ./acplugins.m4 - popd > /dev/null - ''; - - preConfigure = '' - if [ -z "''${dontFixLibtool:-}" ]; then - local i - find ./platforms/unix/config -iname "ltmain.sh" -print0 | while IFS=''' read -r -d ''' i; do - echo "fixing libtool script $i" - fixLibtool "$i" - done - fi - - substituteInPlace ./platforms/unix/config/configure \ - --replace "/usr/bin/file" "${file}/bin/file" - cd ./"build.$vmBuild"/squeak.cog.spur/build - substituteInPlace ./mvm \ - --replace 'read a' 'a=y' \ - --replace $'if [ $# -ge 1 ]; then\n\tINSTALLDIR="$1"; shift\nfi\n' "" \ - --replace 'config/configure' 'config/configure "$@"' \ - --replace 'make install' '# make install' - ''; - - configureFlags = [ - "--disable-dynamicopenssl" - "SQ_MAJOR=${squeakVersionMajor}" - "SQ_MINOR=${squeakVersionMinor}" - "SQ_UPDATE=${squeakImageVersion}" - "SQ_VERSION=${squeakVersion}-${toString bits}bit" - "SQ_SRC_VERSION=${squeakSourcesVersion}" - "VM_MAJOR=${squeakVmVersionMajor}" - "VM_MINOR=${squeakVmVersionMinor}" - "VM_RELEASE=${squeakVmVersionRelease}" - "VM_VERSION=${squeakVmVersion}" - ]; - configureScript = "./mvm"; - - installTargets = [ "install" "install-image" ]; - - postInstall = '' - rm "$out/squeak" - cp --no-preserve mode "$sourcesSrc" "$out"/lib/squeak/SqueakV${lib.escapeShellArg squeakSourcesVersion}.sources - ''; - - meta = with lib; { - description = "Squeak virtual machine"; - homepage = "https://opensmalltalk.org/"; - license = with licenses; [ asl20 mit ]; - maintainers = with lib.maintainers; [ ehmry ]; - platforms = [ "x86_64-linux" ]; - }; -} |