uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,12 @@
diff -Naur 4th-3.64.0-old/sources/Makefile 4th-3.64.0-new/sources/Makefile
--- 4th-3.64.0-old/sources/Makefile 2022-03-15 12:37:45.925122854 -0300
+++ 4th-3.64.0-new/sources/Makefile 2022-03-15 12:38:50.987870211 -0300
@@ -125,7 +125,7 @@
install: mostlyinstall
install -Dm644 ../documentation/4th.1 $(MANDIR)/man1/4th.1
- install -Dm644 ../documentation/4tHmanual.txt $(DOCDIR)/4th/
+ install -Dm644 ../documentation/4tHmanual.pdf $(DOCDIR)/4th/
uninstall:
-rm -f $(LIBRARIES)/lib4th.{a,so*}

View file

@ -0,0 +1,46 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
pname = "4th";
version = "3.64.0";
src = fetchurl {
url = "https://sourceforge.net/projects/forth-4th/files/${pname}-${version}/${pname}-${version}-unix.tar.gz";
hash = "sha256-wJBekjFsFRIkhY/P/yHBQ8he+k+fGyrePGTP2Yjgpqg=";
};
patches = [
# Fix install manual; report this patch to upstream
./001-install-manual-fixup.diff
];
dontConfigure = true;
makeFlags = [
"-C sources"
"CC=${stdenv.cc.targetPrefix}cc"
];
preInstall = ''
install -d ${placeholder "out"}/bin \
${placeholder "out"}/lib \
${placeholder "out"}/share/doc/${pname} \
${placeholder "out"}/share/man
'';
installFlags = [
"BINARIES=${placeholder "out"}/bin"
"LIBRARIES=${placeholder "out"}/lib"
"DOCDIR=${placeholder "out"}/share/doc"
"MANDIR=${placeholder "out"}/share/man"
];
meta = with lib; {
homepage = "https://thebeez.home.xs4all.nl/4tH/index.html";
description = "A portable Forth compiler";
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix;
};
}
# TODO: set Makefile according to platform

View file

@ -0,0 +1,43 @@
{lib, stdenv, fetchurl, ant, jre, jdk}:
stdenv.mkDerivation rec {
pname = "abcl";
version = "1.9.0";
# or fetchFromGitHub(owner,repo,rev) or fetchgit(rev)
src = fetchurl {
url = "https://common-lisp.net/project/armedbear/releases/${version}/${pname}-src-${version}.tar.gz";
sha256 = "sha256-oStchPKINL2Yjjra4K0q1MxsRR2eRPPAhT0AcVjBmGk=";
};
configurePhase = ''
mkdir nix-tools
export PATH="$PWD/nix-tools:$PATH"
echo "echo nix-builder.localdomain" > nix-tools/hostname
chmod a+x nix-tools/*
hostname
'';
buildPhase = ''
ant
'';
# Fix for https://github.com/armedbear/abcl/issues/484
javaOpts =
lib.optionalString
(lib.versionAtLeast jre.version "17")
"--add-opens=java.base/java.util.jar=ALL-UNNAMED";
installPhase = ''
mkdir -p "$out"/{bin,share/doc/abcl,lib/abcl}
cp -r README COPYING CHANGES examples/ "$out/share/doc/abcl/"
cp -r dist/*.jar contrib/ "$out/lib/abcl/"
echo "#! ${stdenv.shell}" >> "$out/bin/abcl"
echo "${jre}/bin/java $javaOpts -cp \"$out/lib/abcl/abcl.jar:$out/lib/abcl/abcl-contrib.jar:\$CLASSPATH\" org.armedbear.lisp.Main \"\$@\"" >> "$out/bin/abcl"
chmod a+x "$out"/bin/*
'';
buildInputs = [jre ant jdk jre];
meta = {
description = "A JVM-based Common Lisp implementation";
license = lib.licenses.gpl3 ;
maintainers = [lib.maintainers.raskin];
platforms = lib.platforms.linux;
homepage = "https://common-lisp.net/project/armedbear/";
};
}

View file

@ -0,0 +1,29 @@
{ lib, stdenv, fetchsvn }:
stdenv.mkDerivation rec {
pname = "acme";
version = "unstable-2021-02-14";
src = fetchsvn {
url = "svn://svn.code.sf.net/p/acme-crossass/code-0/trunk";
rev = "319";
sha256 = "sha256-VifIQ+UEVMKJ+cNS+Xxusazinr5Cgu1lmGuhqj/5Mpk=";
};
sourceRoot = "code-0-r${src.rev}/src";
makeFlags = [ "BINDIR=$(out)/bin" ];
postPatch = ''
substituteInPlace Makefile \
--replace "= gcc" "?= gcc"
'';
meta = with lib; {
description = "A multi-platform cross assembler for 6502/6510/65816 CPUs";
homepage = "https://sourceforge.net/projects/acme-crossass/";
license = licenses.gpl2Plus;
platforms = platforms.all;
maintainers = with maintainers; [ OPNA2608 ];
};
}

View file

@ -0,0 +1,67 @@
#!/usr/bin/env nix-shell
#!nix-shell --pure -i python3 -p "python3.withPackages (ps: with ps; [ requests ])"
import json
import re
import requests
import sys
releases = ("openjdk8", "openjdk11", "openjdk13", "openjdk14", "openjdk15", "openjdk16")
oses = ("mac", "linux")
types = ("jre", "jdk")
impls = ("hotspot", "openj9")
arch_to_nixos = {
"x64": ("x86_64",),
"aarch64": ("aarch64",),
"arm": ("armv6l", "armv7l"),
"ppc64le": ("powerpc64le",),
}
def get_sha256(url):
resp = requests.get(url)
if resp.status_code != 200:
print("error: could not fetch checksum from url {}: code {}".format(url, resp.code), file=sys.stderr)
sys.exit(1)
return resp.text.strip().split(" ")[0]
def generate_sources(release, assets):
out = {}
for asset in assets:
if asset["os"] not in oses: continue
if asset["binary_type"] not in types: continue
if asset["openjdk_impl"] not in impls: continue
if asset["heap_size"] != "normal": continue
if asset["architecture"] not in arch_to_nixos: continue
# examples: 11.0.1+13, 8.0.222+10
version, build = asset["version_data"]["semver"].split("+")
type_map = out.setdefault(asset["os"], {})
impl_map = type_map.setdefault(asset["binary_type"], {})
arch_map = impl_map.setdefault(asset["openjdk_impl"], {
"packageType": asset["binary_type"],
"vmType": asset["openjdk_impl"],
})
for nixos_arch in arch_to_nixos[asset["architecture"]]:
arch_map[nixos_arch] = {
"url": asset["binary_link"],
"sha256": get_sha256(asset["checksum_link"]),
"version": version,
"build": build,
}
return out
out = {}
for release in releases:
resp = requests.get("https://api.adoptopenjdk.net/v2/latestAssets/releases/" + release)
if resp.status_code != 200:
print("error: could not fetch data for release {} (code {})".format(release, resp.code), file=sys.stderr)
sys.exit(1)
out[release] = generate_sources(release, resp.json())
with open("sources.json", "w") as f:
json.dump(out, f, indent=2, sort_keys=True)
f.write('\n')

View file

@ -0,0 +1,66 @@
{ sourcePerArch, knownVulnerabilities ? [] }:
{ swingSupport ? true # not used for now
, lib, stdenv
, fetchurl
, setJavaClassPath
}:
assert (stdenv.isDarwin && stdenv.isx86_64);
let cpuName = stdenv.hostPlatform.parsed.cpu.name;
result = stdenv.mkDerivation {
pname = if sourcePerArch.packageType == "jdk"
then "adoptopenjdk-${sourcePerArch.vmType}-bin"
else "adoptopenjdk-${sourcePerArch.packageType}-${sourcePerArch.vmType}-bin";
version = sourcePerArch.${cpuName}.version or (throw "unsupported CPU ${cpuName}");
src = fetchurl {
inherit (sourcePerArch.${cpuName}) url sha256;
};
# See: https://github.com/NixOS/patchelf/issues/10
dontStrip = 1;
installPhase = ''
cd ..
mv $sourceRoot $out
# jni.h expects jni_md.h to be in the header search path.
ln -s $out/Contents/Home/include/darwin/*_md.h $out/Contents/Home/include/
rm -rf $out/Home/demo
# Remove some broken manpages.
rm -rf $out/Home/man/ja*
ln -s $out/Contents/Home/* $out/
# Propagate the setJavaClassPath setup hook from the JDK so that
# any package that depends on the JDK has $CLASSPATH set up
# properly.
mkdir -p $out/nix-support
printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs
# Set JAVA_HOME automatically.
cat <<EOF >> $out/nix-support/setup-hook
if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi
EOF
'';
# FIXME: use multiple outputs or return actual JRE package
passthru.jre = result;
passthru.home = result;
meta = with lib; {
license = licenses.gpl2Classpath;
description = "AdoptOpenJDK, prebuilt OpenJDK binary";
platforms = [ "x86_64-darwin" ]; # some inherit jre.meta.platforms
maintainers = with lib.maintainers; [ taku0 ];
inherit knownVulnerabilities;
mainProgram = "java";
};
}; in result

View file

@ -0,0 +1,122 @@
{ sourcePerArch, knownVulnerabilities ? [] }:
{ stdenv
, lib
, fetchurl
, autoPatchelfHook
, makeWrapper
, setJavaClassPath
# minimum dependencies
, alsa-lib
, fontconfig
, freetype
, libffi
, xorg
, zlib
# runtime dependencies
, cups
# runtime dependencies for GTK+ Look and Feel
, gtkSupport ? true
, cairo
, glib
, gtk3
}:
let
cpuName = stdenv.hostPlatform.parsed.cpu.name;
runtimeDependencies = [
cups
] ++ lib.optionals gtkSupport [
cairo glib gtk3
];
runtimeLibraryPath = lib.makeLibraryPath runtimeDependencies;
in
let result = stdenv.mkDerivation rec {
pname = if sourcePerArch.packageType == "jdk"
then "adoptopenjdk-${sourcePerArch.vmType}-bin"
else "adoptopenjdk-${sourcePerArch.packageType}-${sourcePerArch.vmType}-bin";
version = sourcePerArch.${cpuName}.version or (throw "unsupported CPU ${cpuName}");
src = fetchurl {
inherit (sourcePerArch.${cpuName}) url sha256;
};
buildInputs = [
alsa-lib # libasound.so wanted by lib/libjsound.so
fontconfig
freetype
stdenv.cc.cc.lib # libstdc++.so.6
xorg.libX11
xorg.libXext
xorg.libXi
xorg.libXrender
xorg.libXtst
zlib
] ++ lib.optional stdenv.isAarch32 libffi;
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
# See: https://github.com/NixOS/patchelf/issues/10
dontStrip = 1;
installPhase = ''
cd ..
mv $sourceRoot $out
# jni.h expects jni_md.h to be in the header search path.
ln -s $out/include/linux/*_md.h $out/include/
rm -rf $out/demo
# Remove some broken manpages.
rm -rf $out/man/ja*
# Remove embedded freetype to avoid problems like
# https://github.com/NixOS/nixpkgs/issues/57733
find "$out" -name 'libfreetype.so*' -delete
# Propagate the setJavaClassPath setup hook from the JDK so that
# any package that depends on the JDK has $CLASSPATH set up
# properly.
mkdir -p $out/nix-support
printWords ${setJavaClassPath} > $out/nix-support/propagated-build-inputs
# Set JAVA_HOME automatically.
cat <<EOF >> "$out/nix-support/setup-hook"
if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi
EOF
# We cannot use -exec since wrapProgram is a function but not a command.
#
# jspawnhelper is executed from JVM, so it doesn't need to wrap it, and it
# breaks building OpenJDK (#114495).
for bin in $( find "$out" -executable -type f -not -name jspawnhelper ); do
if patchelf --print-interpreter "$bin" &> /dev/null; then
wrapProgram "$bin" --prefix LD_LIBRARY_PATH : "${runtimeLibraryPath}"
fi
done
'';
preFixup = ''
find "$out" -name libfontmanager.so -exec \
patchelf --add-needed libfontconfig.so {} \;
'';
# FIXME: use multiple outputs or return actual JRE package
passthru.jre = result;
passthru.home = result;
meta = with lib; {
license = licenses.gpl2Classpath;
description = "AdoptOpenJDK, prebuilt OpenJDK binary";
platforms = lib.mapAttrsToList (arch: _: arch + "-linux") sourcePerArch; # some inherit jre.meta.platforms
maintainers = with lib.maintainers; [ taku0 ];
inherit knownVulnerabilities;
mainProgram = "java";
};
}; in result

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk11.mac.jdk.hotspot; };
jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk11.mac.jre.hotspot; };
jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk11.mac.jdk.openj9; };
jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk11.mac.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk11.linux.jdk.hotspot; };
jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk11.linux.jre.hotspot; };
jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk11.linux.jdk.openj9; };
jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk11.linux.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk13.mac.jdk.hotspot; knownVulnerabilities = ["Support ended"]; };
jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk13.mac.jre.hotspot; knownVulnerabilities = ["Support ended"]; };
jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk13.mac.jdk.openj9; knownVulnerabilities = ["Support ended"]; };
jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk13.mac.jre.openj9; knownVulnerabilities = ["Support ended"]; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk13.linux.jdk.hotspot; knownVulnerabilities = ["Support ended"]; };
jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk13.linux.jre.hotspot; knownVulnerabilities = ["Support ended"]; };
jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk13.linux.jdk.openj9; knownVulnerabilities = ["Support ended"]; };
jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk13.linux.jre.openj9; knownVulnerabilities = ["Support ended"]; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk14.mac.jdk.hotspot; knownVulnerabilities = ["Support ended"]; };
jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk14.mac.jre.hotspot; knownVulnerabilities = ["Support ended"]; };
jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk14.mac.jdk.openj9; knownVulnerabilities = ["Support ended"]; };
jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk14.mac.jre.openj9; knownVulnerabilities = ["Support ended"]; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk14.linux.jdk.hotspot; knownVulnerabilities = ["Support ended"]; };
jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk14.linux.jre.hotspot; knownVulnerabilities = ["Support ended"]; };
jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk14.linux.jdk.openj9; knownVulnerabilities = ["Support ended"]; };
jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk14.linux.jre.openj9; knownVulnerabilities = ["Support ended"]; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jdk.hotspot; };
jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jre.hotspot; };
jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jdk.openj9; };
jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk15.mac.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.linux.jdk.hotspot; };
jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.linux.jre.hotspot; };
jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.linux.jdk.openj9; };
jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk15.linux.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jdk.hotspot; };
jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jre.hotspot; };
jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jdk.openj9; };
jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk16.mac.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.linux.jdk.hotspot; };
jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.linux.jre.hotspot; };
jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.linux.jdk.openj9; };
jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk16.linux.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk8.mac.jdk.hotspot; };
jre-hotspot = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk8.mac.jre.hotspot; };
jdk-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk8.mac.jdk.openj9; };
jre-openj9 = import ./jdk-darwin-base.nix { sourcePerArch = sources.openjdk8.mac.jre.openj9; };
}

View file

@ -0,0 +1,11 @@
{ lib }:
let
sources = lib.importJSON ./sources.json;
in
{
jdk-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk8.linux.jdk.hotspot; };
jre-hotspot = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk8.linux.jre.hotspot; };
jdk-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk8.linux.jdk.openj9; };
jre-openj9 = import ./jdk-linux-base.nix { sourcePerArch = sources.openjdk8.linux.jre.openj9; };
}

View file

@ -0,0 +1,962 @@
{
"openjdk11": {
"linux": {
"jdk": {
"hotspot": {
"aarch64": {
"build": "101",
"sha256": "79572f5172c6a040591d34632f98a20ed148702bbce2f57649e8ac01c0d2e3db",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"armv6l": {
"build": "101",
"sha256": "f4d53a1753cdde830d7872c6a1279df441f3f9aeb5d5037a568b3a392ebce9c2",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_arm_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"armv7l": {
"build": "101",
"sha256": "f4d53a1753cdde830d7872c6a1279df441f3f9aeb5d5037a568b3a392ebce9c2",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_arm_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"packageType": "jdk",
"powerpc64le": {
"build": "101",
"sha256": "9750e11721282a9afd18a07743f19c699b2b71ce20d02f3f0a906088b9ae6d9a",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"vmType": "hotspot",
"x86_64": {
"build": "101",
"sha256": "43fb84f8063ad9bf6b6d694a67b8f64c8827552b920ec5ce794dfe5602edffe7",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
}
},
"openj9": {
"aarch64": {
"build": "9",
"sha256": "31242e10bb826679aae3ed303be17ad3ef3c2551afbbd19f031ada87dd73258f",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jdk_aarch64_linux_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11-ea"
},
"packageType": "jdk",
"powerpc64le": {
"build": "9",
"sha256": "691f2b252b5be5e36079177d56ff7b516e3058277f0ba852a16a9a0cd9668224",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jdk_ppc64le_linux_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11"
},
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "a605ab06f76533d44ce0828bd96836cc9c0e71ec3df3f8672052ea98dcbcca22",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jdk_x64_linux_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11"
}
}
},
"jre": {
"hotspot": {
"aarch64": {
"build": "101",
"sha256": "6426ce7dfdacaa798ec7779e0bec30ec8510df491fb2c965e8e6bf2f88af27e9",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_aarch64_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"armv6l": {
"build": "101",
"sha256": "964a5d3c1f63209e5ad908a302220b3ba2e81a6574b7b7a5020f736e1496835f",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_arm_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"armv7l": {
"build": "101",
"sha256": "964a5d3c1f63209e5ad908a302220b3ba2e81a6574b7b7a5020f736e1496835f",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_arm_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"packageType": "jre",
"powerpc64le": {
"build": "101",
"sha256": "8c9efc13680f43b742a54ecb3be614efd62749d401e780143fef3ac5403a6284",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_ppc64le_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
},
"vmType": "hotspot",
"x86_64": {
"build": "101",
"sha256": "b5a6960bc6bb0b1a967e307f908ea9b06ad7adbbd9df0b8954ab51374faa8a98",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_x64_linux_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
}
},
"openj9": {
"aarch64": {
"build": "9",
"sha256": "434219d233bdb8f1bee024b1ca5accfc3f1f832320b5221ded715eed101e705f",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jre_aarch64_linux_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11-ea"
},
"packageType": "jre",
"powerpc64le": {
"build": "9",
"sha256": "f11ae15da7f2809caeeca70a7cf3b9e7f943848869f498f1b73efc10ef7170f0",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jre_ppc64le_linux_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11"
},
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "152bf992d965ed018e9e1c3c2eb2c1771f92e0b6485b9a1f2c6d84d282117715",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jre_x64_linux_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11"
}
}
}
},
"mac": {
"jdk": {
"hotspot": {
"packageType": "jdk",
"vmType": "hotspot",
"x86_64": {
"build": "101",
"sha256": "8c69808f5d9d209b195575e979de0e43cdf5d0f1acec1853a569601fe2c1f743",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jdk_x64_mac_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
}
},
"openj9": {
"packageType": "jdk",
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "797cee6b9f6e18bcc026ee9dcebbce81d62ca897038402d247630b25d41efe15",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jdk_x64_mac_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11"
}
}
},
"jre": {
"hotspot": {
"packageType": "jre",
"vmType": "hotspot",
"x86_64": {
"build": "101",
"sha256": "1b2f792ad05af9dba876db962c189527e645b48f50ceb842b4e39169de553303",
"url": "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_x64_mac_hotspot_11.0.14.1_1.tar.gz",
"version": "11.0.14"
}
},
"openj9": {
"packageType": "jre",
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "80a0c03f0b603d6008e29c651f884878743fcaa90fc05aef15f3411749da94e7",
"url": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.11%2B9_openj9-0.26.0/OpenJDK11U-jre_x64_mac_openj9_11.0.11_9_openj9-0.26.0.tar.gz",
"version": "11.0.11"
}
}
}
}
},
"openjdk13": {
"linux": {
"jdk": {
"hotspot": {
"aarch64": {
"build": "8.1",
"sha256": "0e6081cb51f8a6f3062bef4f4c45dbe1fccfd3f3b4b5d52522a3edb76581e3af",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_aarch64_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
},
"armv6l": {
"build": "8.1",
"sha256": "9beec080f2b2a7f6883b024272f4e8d5a0b027325e83647be318215781af1d1a",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_arm_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
},
"armv7l": {
"build": "8.1",
"sha256": "9beec080f2b2a7f6883b024272f4e8d5a0b027325e83647be318215781af1d1a",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_arm_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
},
"packageType": "jdk",
"powerpc64le": {
"build": "8.1",
"sha256": "fb3362e34aac091a4682394d20dcdc3daea51995d369d62c28424573e0fc04aa",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_ppc64le_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "8.1",
"sha256": "9ccc063569f19899fd08e41466f8c4cd4e05058abdb5178fa374cb365dcf5998",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_x64_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
}
},
"openj9": {
"packageType": "jdk",
"powerpc64le": {
"build": "8.1",
"sha256": "f71513e525172dfef695b7c27b25e151f232e05b2281648c2b794650c4970832",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jdk_ppc64le_linux_openj9_13.0.2_8_openj9-0.18.0.tar.gz",
"version": "13.0.2"
},
"vmType": "openj9",
"x86_64": {
"build": "8.1",
"sha256": "aeecf6d30d0c847db81d07793cf97e5dc44890c29366d7d9f8f9f397f6c52590",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jdk_x64_linux_openj9_13.0.2_8_openj9-0.18.0.tar.gz",
"version": "13.0.2"
}
}
},
"jre": {
"hotspot": {
"aarch64": {
"build": "8.1",
"sha256": "6c4b69d1609f4c65c576c80d6aa101de80048f8ce5566f890e8fff5349228bae",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jre_aarch64_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
},
"packageType": "jre",
"powerpc64le": {
"build": "8.1",
"sha256": "43d6fb71bdf7b6ad9295087c46dfc9b00bf26db1b5cdcff0c418cbe43b49904a",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jre_ppc64le_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "8.1",
"sha256": "897f16fe8e056395209e35d2384013bd1ff250e717465769079e3f4793628c34",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jre_x64_linux_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
}
},
"openj9": {
"packageType": "jre",
"powerpc64le": {
"build": "8.1",
"sha256": "7bf8dc4c3b95e87b154f7bc2f9388a6539413fe76d49b362bba878217ccb7ed7",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jre_ppc64le_linux_openj9_13.0.2_8_openj9-0.18.0.tar.gz",
"version": "13.0.2"
},
"vmType": "openj9",
"x86_64": {
"build": "8.1",
"sha256": "a0ab38607811e282f64082edc68a2dea3fa6a5113391efb124a6d7d02883110a",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jre_x64_linux_openj9_13.0.2_8_openj9-0.18.0.tar.gz",
"version": "13.0.2"
}
}
}
},
"mac": {
"jdk": {
"hotspot": {
"packageType": "jdk",
"vmType": "hotspot",
"x86_64": {
"build": "8.1",
"sha256": "0ddb24efdf5aab541898d19b7667b149a1a64a8bd039b708fc58ee0284fa7e07",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jdk_x64_mac_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
}
},
"openj9": {
"packageType": "jdk",
"vmType": "openj9",
"x86_64": {
"build": "8.1",
"sha256": "dd8d92eec98a3455ec5cd065a0a6672cc1aef280c6a68c507c372ccc1d98fbaa",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jdk_x64_mac_openj9_13.0.2_8_openj9-0.18.0.tar.gz",
"version": "13.0.2"
}
}
},
"jre": {
"hotspot": {
"packageType": "jre",
"vmType": "hotspot",
"x86_64": {
"build": "8.1",
"sha256": "3149b9ebf0db1eaf2dc152df9efae82003e7971efb1cf550060e6a4798fe8c5c",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8/OpenJDK13U-jre_x64_mac_hotspot_13.0.2_8.tar.gz",
"version": "13.0.2"
}
},
"openj9": {
"packageType": "jre",
"vmType": "openj9",
"x86_64": {
"build": "8.1",
"sha256": "6a8a636fca4c7e368241e232a37cd73c9867cdec8f0869fd158b1f58c6128cc2",
"url": "https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13.0.2%2B8_openj9-0.18.0/OpenJDK13U-jre_x64_mac_openj9_13.0.2_8_openj9-0.18.0.tar.gz",
"version": "13.0.2"
}
}
}
}
},
"openjdk14": {
"linux": {
"jdk": {
"hotspot": {
"aarch64": {
"build": "12",
"sha256": "ee87e9f03b1fbe6f328429b78fe1a9f44900026d220c90dfd747fe0bcd62d904",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_aarch64_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"armv6l": {
"build": "12",
"sha256": "65f193496c6977ba7aed1563edc4b5be091b5ff03e3d790074bb4e389a034b36",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_arm_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"armv7l": {
"build": "12",
"sha256": "65f193496c6977ba7aed1563edc4b5be091b5ff03e3d790074bb4e389a034b36",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_arm_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"packageType": "jdk",
"powerpc64le": {
"build": "12",
"sha256": "465a3b8e931896b8d95e452d479615c4bf543535c05b6ea246323ae114e67d7d",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_ppc64le_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "12",
"sha256": "7d5ee7e06909b8a99c0d029f512f67b092597aa5b0e78c109bd59405bbfa74fe",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
}
},
"openj9": {
"packageType": "jdk",
"powerpc64le": {
"build": "12",
"sha256": "177fd161ae14df92203d70cd618559daf889ec0c172d6ee615859352f68a2371",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_ppc64le_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz",
"version": "14.0.2"
},
"vmType": "openj9",
"x86_64": {
"build": "12",
"sha256": "306f7138cdb65daaf2596ec36cafbde72088144c83b2e964f0193662e6caf3be",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz",
"version": "14.0.2"
}
}
},
"jre": {
"hotspot": {
"aarch64": {
"build": "12",
"sha256": "2b749ceead19d68dd7e3c28b143dc4f94bb0916378a98b7346e851318ea4da84",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_aarch64_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"armv6l": {
"build": "12",
"sha256": "4468ecf74956783ae41a46e8ba023c003c69e4d111622944aad1af764a1bc4af",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_arm_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"armv7l": {
"build": "12",
"sha256": "4468ecf74956783ae41a46e8ba023c003c69e4d111622944aad1af764a1bc4af",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_arm_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"packageType": "jre",
"powerpc64le": {
"build": "12",
"sha256": "0f96998be562cfbe8a4114581349dbd2609d0a23091e538fe142dcd9c83e70cf",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_ppc64le_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "12",
"sha256": "1107845947da56e6bdad0da0b79210a079a74ec5c806f815ec5db9d09e1a9236",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_x64_linux_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
}
},
"openj9": {
"packageType": "jre",
"powerpc64le": {
"build": "12",
"sha256": "ad7a55a3669878c0c7d7c66faafe7c626d4341374719b6fdd81d2986c6e80945",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jre_ppc64le_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz",
"version": "14.0.2"
},
"vmType": "openj9",
"x86_64": {
"build": "12",
"sha256": "3a137146a7b0bd8b029e72beb37c5fbb09dcfb9e33a10125076fff1555227cfd",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jre_x64_linux_openj9_14.0.2_12_openj9-0.21.0.tar.gz",
"version": "14.0.2"
}
}
}
},
"mac": {
"jdk": {
"hotspot": {
"packageType": "jdk",
"vmType": "hotspot",
"x86_64": {
"build": "12",
"sha256": "09b7e6ab5d5eb4b73813f4caa793a0b616d33794a17988fa6a6b7c972e8f3dd3",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jdk_x64_mac_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
}
},
"openj9": {
"packageType": "jdk",
"vmType": "openj9",
"x86_64": {
"build": "12",
"sha256": "95e6abcc12dde676ccd5ba65ab86f06ddaa22749dde00e31f4c6d3ea95277359",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jdk_x64_mac_openj9_14.0.2_12_openj9-0.21.0.tar.gz",
"version": "14.0.2"
}
}
},
"jre": {
"hotspot": {
"packageType": "jre",
"vmType": "hotspot",
"x86_64": {
"build": "12",
"sha256": "e8b5196de8ecb2b136a28494c2888784b9d9e22e29d2c38528892fb7d0c95260",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12/OpenJDK14U-jre_x64_mac_hotspot_14.0.2_12.tar.gz",
"version": "14.0.2"
}
},
"openj9": {
"packageType": "jre",
"vmType": "openj9",
"x86_64": {
"build": "12",
"sha256": "2562a442d7278409358f474071db34df4ba9c555925f28d0270139f97133c8d5",
"url": "https://github.com/AdoptOpenJDK/openjdk14-binaries/releases/download/jdk-14.0.2%2B12_openj9-0.21.0/OpenJDK14U-jre_x64_mac_openj9_14.0.2_12_openj9-0.21.0.tar.gz",
"version": "14.0.2"
}
}
}
}
},
"openjdk15": {
"linux": {
"jdk": {
"hotspot": {
"aarch64": {
"build": "7",
"sha256": "6e8b6b037148cf20a284b5b257ec7bfdf9cc31ccc87778d0dfd95a2fddf228d4",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_aarch64_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"armv6l": {
"build": "7",
"sha256": "ff39c0380224e419d940382c4d651cb1e6297a794854e0cc459c1fd4973b3368",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_arm_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"armv7l": {
"build": "7",
"sha256": "ff39c0380224e419d940382c4d651cb1e6297a794854e0cc459c1fd4973b3368",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_arm_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"packageType": "jdk",
"powerpc64le": {
"build": "7",
"sha256": "486f2aad94c5580c0b27c9007beebadfccd4677c0bd9565a77ca5c34af5319f9",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_ppc64le_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "7",
"sha256": "94f20ca8ea97773571492e622563883b8869438a015d02df6028180dd9acc24d",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_x64_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
}
},
"openj9": {
"aarch64": {
"build": "7",
"sha256": "b69a4bc87ed2e985d252cff02d53f1a11b8d83d39e0800cd4a1cab4521375314",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jdk_aarch64_linux_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2-ea"
},
"packageType": "jdk",
"powerpc64le": {
"build": "7",
"sha256": "5b2158268de0be247801b7823ee3e7f739254d77718a1879848627181feee2f4",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jdk_ppc64le_linux_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2"
},
"vmType": "openj9",
"x86_64": {
"build": "7",
"sha256": "5515ccd79b1b5e8d8a615b80d5fe1272f7bb41100e46d94fb78ee611ea014816",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jdk_x64_linux_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2"
}
}
},
"jre": {
"hotspot": {
"aarch64": {
"build": "7",
"sha256": "1c1fc968d76004b0be0042027712835dcbe3570a6fc3a208157a4ab6adabbef2",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jre_aarch64_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"armv6l": {
"build": "7",
"sha256": "304be224952dbea7000cda6223b2978b3eefdf2e3749032c3b381a213c8d9c5e",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jre_arm_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"armv7l": {
"build": "7",
"sha256": "304be224952dbea7000cda6223b2978b3eefdf2e3749032c3b381a213c8d9c5e",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jre_arm_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"packageType": "jre",
"powerpc64le": {
"build": "7",
"sha256": "dc2480948ac3e6b192fb77c9d37227510f44482e52a330002d6e7497a62a7d67",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jre_ppc64le_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "7",
"sha256": "31af7efdb1cc0ffd001bc145c3d255266889ad6b502133283ae8bf233d11334c",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jre_x64_linux_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
}
},
"openj9": {
"aarch64": {
"build": "7",
"sha256": "37492012e75d75021dfb2b25fe5cc73664c03fee85532cec30ce4f5a4e5389c6",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jre_aarch64_linux_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2-ea"
},
"packageType": "jre",
"powerpc64le": {
"build": "7",
"sha256": "79f657141f1cd0e4a70d041b9215b8b00140d479ce73ed71bc4f3dd015157958",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jre_ppc64le_linux_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2"
},
"vmType": "openj9",
"x86_64": {
"build": "7",
"sha256": "a4ae1b7275fcfd6d87a3387edacc8e353dc95ee44f00ca5a348ea90331ec2084",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jre_x64_linux_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2"
}
}
}
},
"mac": {
"jdk": {
"hotspot": {
"packageType": "jdk",
"vmType": "hotspot",
"x86_64": {
"build": "7",
"sha256": "d358a7ff03905282348c6c80562a4da2e04eb377b60ad2152be4c90f8d580b7f",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jdk_x64_mac_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
}
},
"openj9": {
"packageType": "jdk",
"vmType": "openj9",
"x86_64": {
"build": "7",
"sha256": "1336ae5529af3a0e35ae569e4188944831aeed7080a482f2490fc619380cbe53",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jdk_x64_mac_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2"
}
}
},
"jre": {
"hotspot": {
"packageType": "jre",
"vmType": "hotspot",
"x86_64": {
"build": "7",
"sha256": "6a7150fa3ca8277394ff5bae6f56a70f61d2144a5dbbea4f008d86a3e5498795",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7/OpenJDK15U-jre_x64_mac_hotspot_15.0.2_7.tar.gz",
"version": "15.0.2"
}
},
"openj9": {
"packageType": "jre",
"vmType": "openj9",
"x86_64": {
"build": "7",
"sha256": "2c0ba5e66764d660037343db4bf32f1ed75ad27661e54e9a4df23d40cae448b0",
"url": "https://github.com/AdoptOpenJDK/openjdk15-binaries/releases/download/jdk-15.0.2%2B7_openj9-0.24.0/OpenJDK15U-jre_x64_mac_openj9_15.0.2_7_openj9-0.24.0.tar.gz",
"version": "15.0.2"
}
}
}
}
},
"openjdk16": {
"linux": {
"jdk": {
"hotspot": {
"aarch64": {
"build": "7",
"sha256": "cb77d9d126f97898dfdc8b5fb694d1e0e5d93d13a0a6cb2aeda76f8635384340",
"url": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_aarch64_linux_hotspot_16.0.2_7.tar.gz",
"version": "16.0.2"
},
"armv6l": {
"build": "7",
"sha256": "7721ef81416af8122a28448f3d661eb4bda40a9f78d400e4ecc55b58e627a00c",
"url": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_arm_linux_hotspot_16.0.2_7.tar.gz",
"version": "16.0.2"
},
"armv7l": {
"build": "7",
"sha256": "7721ef81416af8122a28448f3d661eb4bda40a9f78d400e4ecc55b58e627a00c",
"url": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_arm_linux_hotspot_16.0.2_7.tar.gz",
"version": "16.0.2"
},
"packageType": "jdk",
"powerpc64le": {
"build": "7",
"sha256": "36ebe6c72f2fc19b8b17371f731390e15fa3aab08c28b55b9a8b71d0a578adc9",
"url": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_ppc64le_linux_hotspot_16.0.2_7.tar.gz",
"version": "16.0.2"
},
"vmType": "hotspot",
"x86_64": {
"build": "7",
"sha256": "323d6d7474a359a28eff7ddd0df8e65bd61554a8ed12ef42fd9365349e573c2c",
"url": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_linux_hotspot_16.0.2_7.tar.gz",
"version": "16.0.2"
}
},
"openj9": {
"aarch64": {
"build": "9",
"sha256": "abc56cd266b4acc96cc700b166ad016907dac97d7a593bd5c369d54efc4b4acd",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jdk_aarch64_linux_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1-ea"
},
"packageType": "jdk",
"powerpc64le": {
"build": "9",
"sha256": "9200acc9ddb6b0d4facf3ea44b17d3a10035316a379b4b148382b25cacf2bb83",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jdk_ppc64le_linux_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1"
},
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "7395aaa479a7410bbe5bd5efc43d2669718c61ba146b06657315dbd467b98bf1",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jdk_x64_linux_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1"
}
}
},
"jre": {
"hotspot": {
"aarch64": {
"build": "9",
"sha256": "4e47f1cbf46190727be74cd73445ec2b693f5ba4a74542c554d6b3285811cab5",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jre_aarch64_linux_hotspot_16.0.1_9.tar.gz",
"version": "16.0.1"
},
"armv6l": {
"build": "9",
"sha256": "c1f88f3ce955cb2e9a4236a916cc6660ef55231d29c4390b1a4398ebbca358b7",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jre_arm_linux_hotspot_16.0.1_9.tar.gz",
"version": "16.0.1"
},
"armv7l": {
"build": "9",
"sha256": "c1f88f3ce955cb2e9a4236a916cc6660ef55231d29c4390b1a4398ebbca358b7",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jre_arm_linux_hotspot_16.0.1_9.tar.gz",
"version": "16.0.1"
},
"packageType": "jre",
"powerpc64le": {
"build": "9",
"sha256": "495805e2e9bcabeac0d8271623b6c92604440608286f4ce411ea48f582854930",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jre_ppc64le_linux_hotspot_16.0.1_9.tar.gz",
"version": "16.0.1"
},
"vmType": "hotspot",
"x86_64": {
"build": "9",
"sha256": "5eca19d406c6d130e9c3a4b932b9cb0a6e9cd45932450668c3e911bded4bcf40",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jre_x64_linux_hotspot_16.0.1_9.tar.gz",
"version": "16.0.1"
}
},
"openj9": {
"aarch64": {
"build": "9",
"sha256": "01d8337d1069b8bfdcdf096b30cc24d1df42ffeede676da99fed77bef2670454",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jre_aarch64_linux_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1-ea"
},
"packageType": "jre",
"powerpc64le": {
"build": "9",
"sha256": "f9734c100f0e85ac63b9f9327b77135221a905e1d743cd9cd4edc0ea0e0fe8d9",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jre_ppc64le_linux_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1"
},
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "fab572dd1a2ef00fd18ad4f5a4c373d0cf140045e61f9104cd5b8dbf6b3a517d",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jre_x64_linux_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1"
}
}
}
},
"mac": {
"jdk": {
"hotspot": {
"packageType": "jdk",
"vmType": "hotspot",
"x86_64": {
"build": "7",
"sha256": "27975d9e695cfbb93861540926f9f7bcac973a254ceecbee549706a99cbbdf95",
"url": "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_mac_hotspot_16.0.2_7.tar.gz",
"version": "16.0.2"
}
},
"openj9": {
"packageType": "jdk",
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "6d4241c6ede2167fb71bd57f7a770a74564ee007c06bcae98e1abc3c1de4756f",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jdk_x64_mac_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1"
}
}
},
"jre": {
"hotspot": {
"packageType": "jre",
"vmType": "hotspot",
"x86_64": {
"build": "9",
"sha256": "33eeccbeea75e70b09610ba12e9591386a0e42248525b8358c9ae683bce82779",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jre_x64_mac_hotspot_16.0.1_9.tar.gz",
"version": "16.0.1"
}
},
"openj9": {
"packageType": "jre",
"vmType": "openj9",
"x86_64": {
"build": "9",
"sha256": "f57a6f04cf21a8470bb6f9488c57031d89db73c8b24997d74812855372f4e6b8",
"url": "https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9_openj9-0.26.0/OpenJDK16U-jre_x64_mac_openj9_16.0.1_9_openj9-0.26.0.tar.gz",
"version": "16.0.1"
}
}
}
}
},
"openjdk8": {
"linux": {
"jdk": {
"hotspot": {
"aarch64": {
"build": "6",
"sha256": "42ed3ff5a859f9015a1362fb7e650026b913d688eab471714f795651120be173",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_aarch64_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"armv6l": {
"build": "6",
"sha256": "0666c466b8aefcc66ab25aea9c0605f5c6eda3b174b1b817a4e4e74da0de0365",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_arm_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"armv7l": {
"build": "6",
"sha256": "0666c466b8aefcc66ab25aea9c0605f5c6eda3b174b1b817a4e4e74da0de0365",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_arm_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"packageType": "jdk",
"powerpc64le": {
"build": "6",
"sha256": "c7cc9c5b237e9e1f1e3296593aba427375823592e4604fadf89a8c234c2574e1",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"vmType": "hotspot",
"x86_64": {
"build": "6",
"sha256": "3d62362a78c9412766471b05253507a4cfc212daea5cdf122860173ce902400e",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
}
},
"openj9": {
"aarch64": {
"build": "10",
"sha256": "b168245ddc18b85135c15ed6baea5cbcc06192b49af04dcfa698458373efc061",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jdk_aarch64_linux_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292-ea"
},
"packageType": "jdk",
"powerpc64le": {
"build": "10",
"sha256": "bc88be757a884b90a2bb91365b7e922c0e7d0fea991cd69d1f74c59b2257a4b5",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jdk_ppc64le_linux_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292"
},
"vmType": "openj9",
"x86_64": {
"build": "10",
"sha256": "06d6c9421778575cf59d50f69b7ac6a7bb237485b3a3c2f89cfb61a056c7b2de",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jdk_x64_linux_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292"
}
}
},
"jre": {
"hotspot": {
"aarch64": {
"build": "6",
"sha256": "22496d5e677aaccc5a85e90584d0a012c51a08898f0e09e259eabe67ed81da2b",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jre_aarch64_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"armv6l": {
"build": "6",
"sha256": "48181f17b85a13c0e2f260c8f4b39483e61664cf07ea00e6210a666fb5210492",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jre_arm_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"armv7l": {
"build": "6",
"sha256": "48181f17b85a13c0e2f260c8f4b39483e61664cf07ea00e6210a666fb5210492",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jre_arm_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"packageType": "jre",
"powerpc64le": {
"build": "6",
"sha256": "f15b536a97c27d114c0b59c86de07ca80a271d3979ed0aa056318ea329e31e5d",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jre_ppc64le_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
},
"vmType": "hotspot",
"x86_64": {
"build": "6",
"sha256": "9c4607cee01919a21c57a36e8c009a7aca7aefd63010c64d7a3023fe8590ebe1",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jre_x64_linux_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
}
},
"openj9": {
"aarch64": {
"build": "10",
"sha256": "f87f90673e25c3ce9e868e96a6059b22665f12d05e389813f75dfbc95d970393",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jre_aarch64_linux_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292-ea"
},
"packageType": "jre",
"powerpc64le": {
"build": "10",
"sha256": "b75216f7905cff08432a9200a78a2694a4074279f79d859d27f82a998ca1b1e9",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jre_ppc64le_linux_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292"
},
"vmType": "openj9",
"x86_64": {
"build": "10",
"sha256": "6d5b67979e0935febe893895b622647bf8a59df6093ae57074db11d2ac9373ea",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jre_x64_linux_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292"
}
}
}
},
"mac": {
"jdk": {
"hotspot": {
"packageType": "jdk",
"vmType": "hotspot",
"x86_64": {
"build": "6",
"sha256": "96a3124bf0f5ca777954239893cc89ea34c4bc9a9b7c1559aa2c69baa0ee84e3",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jdk_x64_mac_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
}
},
"openj9": {
"packageType": "jdk",
"vmType": "openj9",
"x86_64": {
"build": "10",
"sha256": "d262bc226895e80b7e80d61905e65fe043ca0a3e3b930f7b88ddfacb8835e939",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jdk_x64_mac_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292"
}
}
},
"jre": {
"hotspot": {
"packageType": "jre",
"vmType": "hotspot",
"x86_64": {
"build": "6",
"sha256": "42d4ada88e39b0f222ffdcf3c833f442af22852687992997eca82c573e65b86f",
"url": "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u322-b06/OpenJDK8U-jre_x64_mac_hotspot_8u322b06.tar.gz",
"version": "8.0.322"
}
},
"openj9": {
"packageType": "jre",
"vmType": "openj9",
"x86_64": {
"build": "10",
"sha256": "50cbc5ef48d0167d649d3ba2c2b8d71553541bffb98914418f4a26e0c5f69aca",
"url": "https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10_openj9-0.26.0/OpenJDK8U-jre_x64_mac_openj9_8u292b10_openj9-0.26.0.tar.gz",
"version": "8.0.292"
}
}
}
}
}
}

View file

@ -0,0 +1,63 @@
{ lib, stdenv, fetchFromGitHub, cargo, rustc, autoreconfHook, jdk, glib, xulrunner, zip, pkg-config, npapi_sdk, bash, bc }:
stdenv.mkDerivation rec {
pname = "adoptopenjdk-icedtea-web";
version = "1.8.8";
src = fetchFromGitHub {
owner = "AdoptOpenJDK";
repo = "IcedTea-Web";
rev = "icedtea-web-${version}";
sha256 = "sha256-hpEVWG9ltNDL/0EFJjgQRRce+BLcCO4ZERULYZxyC1o=";
};
nativeBuildInputs = [ autoreconfHook pkg-config bc ];
buildInputs = [ cargo rustc glib xulrunner zip npapi_sdk ];
preConfigure = ''
configureFlagsArray+=("BIN_BASH=${bash}/bin/bash")
'';
patches = [ ./patches/0001-make-cargo-work-with-nix-build-on-linux.patch ];
doCheck = true;
preCheck = ''
# Needed for the below rust-launcher tests to pass
# dirs_paths_helper::tests::check_config_files_paths
# dirs_paths_helper::tests::check_legacy_config_files_paths
mkdir -p $HOME/.icedtea
touch $HOME/.icedtea/deployment.properties
mkdir -p $XDG_CONFIG_HOME/icedtea-web
touch $XDG_CONFIG_HOME/icedtea-web/deployment.properties
'';
HOME = "/build";
XDG_CONFIG_HOME = "/build";
configureFlags = [
"--with-itw-libs=DISTRIBUTION"
"--with-jdk-home=${jdk.home}"
"--disable-docs"
];
mozillaPlugin = "/lib";
postInstall = ''
mkdir -p $out/share/applications
cp javaws.desktop itweb-settings.desktop policyeditor.desktop $out/share/applications
'';
meta = {
description = "Java web browser plugin and an implementation of Java Web Start";
longDescription = ''
A Free Software web browser plugin running applets written in the Java
programming language and an implementation of Java Web Start, originally
based on the NetX project.
'';
homepage = "https://github.com/adoptopenjdk/icedtea-web";
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,46 @@
Subject: [PATCH] make cargo work with nix-build on linux
---
.cargo/config | 2 ++
rust-launcher/Cargo.lock | 4 ++++
rust-launcher/Cargo.toml | 7 ++++---
3 files changed, 10 insertions(+), 3 deletions(-)
create mode 100644 .cargo/config
create mode 100644 rust-launcher/Cargo.lock
diff --git a/.cargo/config b/.cargo/config
new file mode 100644
index 0000000..03ec4a2
--- /dev/null
+++ b/.cargo/config
@@ -0,0 +1,2 @@
+[net]
+offline=true
diff --git a/rust-launcher/Cargo.lock b/rust-launcher/Cargo.lock
new file mode 100644
index 0000000..6055cc0
--- /dev/null
+++ b/rust-launcher/Cargo.lock
@@ -0,0 +1,4 @@
+[[package]]
+name = "launcher"
+version = "1.8.0"
+
diff --git a/rust-launcher/Cargo.toml b/rust-launcher/Cargo.toml
index 61ee308..5e6e91b 100644
--- a/rust-launcher/Cargo.toml
+++ b/rust-launcher/Cargo.toml
@@ -3,6 +3,7 @@ name = "launcher"
version = "1.8.0"
authors = ["https://icedtea.classpath.org/wiki/IcedTea-Web"]
-[dependencies]
-[target.'cfg(windows)'.dependencies]
-dunce = "0.1.1"
+[workspace]
+# We need this too or cargo will fail. Some files seem to be copied around and
+# cargo thinks we are in a workspace, so let's exclude everything.
+exclude = ["*"]
--
2.19.2

View file

@ -0,0 +1,35 @@
{ stdenv, lib, fetchFromGitHub
}:
stdenv.mkDerivation rec {
pname = "alan2";
version = "2.8.7";
src = fetchFromGitHub {
owner = "alan-if";
repo = "alan";
rev = "71f23ec79f7f5d66aa5ae9fd3f9b8dae41a89f15";
sha256 = "066jknqz1v6sismvfxjfffl35h14v8qwgcq99ibhp08dy2fwraln";
};
makefile = "Makefile.unix";
# Add a workarounf for -fno-common tollchains like upstream gcc-10.
# alan-3 is already fixed, but the backport is nontrivial.
NIX_CFLAGS_COMPILE = "-fcommon";
installPhase = ''
mkdir -p $out/bin $out/share/alan2
cp compiler/alan $out/bin/alan2
cp interpreter/arun $out/bin/arun2
cp alan.readme ChangeLog $out/share/alan2
'';
meta = with lib; {
homepage = "https://www.alanif.se/";
description = "The Alan interactive fiction language (legacy version)";
license = licenses.artistic2;
platforms = platforms.linux;
maintainers = with maintainers; [ neilmayhew ];
};
}

View file

@ -0,0 +1,48 @@
{ stdenv, lib, fetchFromGitHub
, cgreen, openjdk, pkg-config, which
}:
stdenv.mkDerivation rec {
pname = "alan";
version = "3.0beta8";
src = fetchFromGitHub {
owner = "alan-if";
repo = "alan";
rev = "v${version}";
sha256 = "0zfg1frmb4yl39hk8h733bmlwk4rkikzfhvv7j34cxpdpsp7spzl";
};
postPatch = ''
patchShebangs --build bin
# The Makefiles have complex CFLAGS that don't allow separate control of optimization
sed -i 's/-O0/-O2/g' compiler/Makefile.common
sed -i 's/-Og/-O2/g' interpreter/Makefile.common
'';
installPhase = ''
mkdir -p $out/bin $out/share/alan/examples
# Build the release tarball
make package
# The release tarball isn't split up into subdirectories
tar -xf alan*.tgz --strip-components=1 -C $out/share/alan
mv $out/share/alan/*.alan $out/share/alan/examples
chmod a-x $out/share/alan/examples/*.alan
mv $out/share/alan/{alan,arun} $out/bin
# a2a3 isn't included in the release tarball
cp bin/a2a3 $out/bin
'';
nativeBuildInputs = [
cgreen
openjdk pkg-config which
];
meta = with lib; {
homepage = "https://www.alanif.se/";
description = "The Alan interactive fiction language";
license = licenses.artistic2;
platforms = platforms.linux;
maintainers = with maintainers; [ neilmayhew ];
};
}

View file

@ -0,0 +1,27 @@
diff -Naur algol68g-2.8.4-old/source/plotutils.c algol68g-2.8.4-new/source/plotutils.c
--- algol68g-2.8.4-old/source/plotutils.c 2016-10-11 18:14:48.000000000 -0300
+++ algol68g-2.8.4-new/source/plotutils.c 2021-07-30 02:42:29.762627511 -0300
@@ -1026,10 +1026,10 @@
X_COORD (&DEVICE (f)) = 0;
Y_COORD (&DEVICE (f)) = 0;
return (PLOTTER (&DEVICE (f)));
- } else if (!strcmp (device_type, "gif")) {
-/*------------------------------------+
-| Supported plotter type - pseudo GIF |
-+------------------------------------*/
+ } else if (!strcmp (device_type, "gif") || !strcmp (device_type, "png")) {
+/*-------------------------------------------+
+| Supported plotter type - pseudo GIF or PNG |
++-------------------------------------------*/
char *z = DEREF (char, &A68_PAGE_SIZE (&DEVICE (f))), size[BUFFER_SIZE];
/* Establish page size */
if (!scan_int (&z, &(WINDOW_X_SIZE (&DEVICE (f))))) {
@@ -1067,7 +1067,7 @@
(void) pl_setplparam (PLOTTER_PARAMS (&DEVICE (f)), "BITMAPSIZE", size);
(void) pl_setplparam (PLOTTER_PARAMS (&DEVICE (f)), "BG_COLOR", (void *) "black");
(void) pl_setplparam (PLOTTER_PARAMS (&DEVICE (f)), "GIF_ANIMATION", (void *) "no");
- PLOTTER (&DEVICE (f)) = pl_newpl_r ("gif", NULL, STREAM (&DEVICE (f)), stderr, PLOTTER_PARAMS (&DEVICE (f)));
+ PLOTTER (&DEVICE (f)) = pl_newpl_r (device_type, NULL, STREAM (&DEVICE (f)), stderr, PLOTTER_PARAMS (&DEVICE (f)));
if (PLOTTER (&DEVICE (f)) == NULL) {
diagnostic_node (A68_RUNTIME_ERROR, p, ERROR_DEVICE_CANNOT_OPEN);
exit_genie (p, A68_RUNTIME_ERROR);

View file

@ -0,0 +1,56 @@
{ lib
, stdenv
, fetchurl
, gsl
, plotutils
, postgresql
}:
stdenv.mkDerivation rec {
pname = "algol68g";
version = "2.8.4";
src = fetchurl {
url = "https://jmvdveer.home.xs4all.nl/${pname}-${version}.tar.gz";
hash = "sha256-WCPM0MGP4Qo2ihF8w5JHSMSl0P6N/w2dgY/3PDQlZfA=";
};
patches = [
# add PNG support
./0001-plotutils-png-support.diff
];
buildInputs = [
gsl
plotutils
postgresql
];
postInstall = let
pdfdoc = fetchurl {
url = "https://jmvdveer.home.xs4all.nl/learning-algol-68-genie.pdf";
hash = "sha256-QCwn1e/lVfTYTeolCFErvfMhvwCgsBnASqq2K+NYmlU=";
};
in
''
install -m644 ${pdfdoc} $out/share/doc/${pname}/learning-algol-68-genie.pdf
'';
meta = with lib; {
homepage = "https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html";
description = "Algol 68 Genie compiler-interpreter";
longDescription = ''
Algol 68 Genie (a68g) is a recent checkout hybrid compiler-interpreter,
written from scratch by Marcel van der Veer. It ranks among the most
complete Algol 68 implementations. It implements for example arbitrary
precision arithmetic, complex numbers, parallel processing, partial
parametrisation and formatted transput, as well as support for curses,
regular expressions and sounds. It can be linked to GNU plotutils, the GNU
scientific library and PostgreSQL.
'';
license = licenses.gpl3Plus;
maintainers = with maintainers; [ AndersonTorres ];
mainProgram = "a68g";
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,56 @@
{ lib, stdenv, fetchurl, makeWrapper, jre }:
let
playerglobal_ver = "27.0";
playerglobal = fetchurl {
url = "https://fpdownload.macromedia.com/get/flashplayer/updaters/27/playerglobal27_0.swc";
sha256 = "0qw2bgls8qsmp80j8vpd4c7s0c8anlrk0ac8z42w89bajcdbwk2f";
};
in stdenv.mkDerivation rec {
pname = "apache-flex-sdk";
version = "4.16.1";
src = fetchurl {
url = "mirror://apache/flex/${version}/binaries/${pname}-${version}-bin.tar.gz";
sha256 = "13iq16dqvgcpb0p35x66hzxsq5pkbr2lbwr766nnqiryinnagz8p";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
dontBuild = true;
postPatch = ''
shopt -s extglob
for i in bin/!(aasdoc|acompc|amxmlc); do
substituteInPlace $i --replace "java " "${jre}/bin/java "
done
'';
installPhase = ''
t=$out/opt/apache-flex-sdk
mkdir -p $t $out/bin
mv * $t
rm $t/bin/*.bat
ln -s $t/bin/* $out/bin/
for i in $out/bin/!(aasdoc|acompc|amxmlc); do
wrapProgram $i \
--set FLEX_HOME $t \
--set PLAYERGLOBAL_HOME $t/frameworks/libs/player/
done
mkdir -p $t/frameworks/libs/player/${playerglobal_ver}/
cp ${playerglobal} $t/frameworks/libs/player/${playerglobal_ver}/playerglobal.swc
'';
dontFixup = true;
meta = with lib; {
description = "Flex SDK for Adobe Flash / ActionScript";
homepage = "https://flex.apache.org/";
license = with licenses; [ asl20 ];
maintainers = with maintainers; [ dywedir ];
};
}

View file

@ -0,0 +1,42 @@
{ lib, stdenv, fetchFromGitHub, icestorm }:
stdenv.mkDerivation rec {
pname = "arachne-pnr";
version = "2019.07.29";
src = fetchFromGitHub {
owner = "yosyshq";
repo = "arachne-pnr";
rev = "c40fb2289952f4f120cc10a5a4c82a6fb88442dc";
sha256 = "0lg9rccr486cvips3jf289af2b4a2j9chc8iqnkhykgi1hw4pszc";
};
enableParallelBuilding = true;
makeFlags = [
"PREFIX=$(out)"
"ICEBOX=${icestorm}/share/icebox"
];
postPatch = ''
substituteInPlace ./Makefile \
--replace 'echo UNKNOWN' 'echo ${lib.substring 0 10 src.rev}'
'';
meta = with lib; {
description = "Place and route tool for FPGAs";
longDescription = ''
Arachne-pnr implements the place and route step of
the hardware compilation process for FPGAs. It
accepts as input a technology-mapped netlist in BLIF
format, as output by the Yosys [0] synthesis suite
for example. It currently targets the Lattice
Semiconductor iCE40 family of FPGAs [1]. Its output
is a textual bitstream representation for assembly by
the IceStorm [2] icepack command.
'';
homepage = "https://github.com/cseed/arachne-pnr";
license = licenses.mit;
maintainers = with maintainers; [ shell thoughtpolice ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,31 @@
{ stdenv, lib, fetchFromGitHub, cmake }:
stdenv.mkDerivation rec {
pname = "armips";
version = "0.11.0";
src = fetchFromGitHub {
owner = "Kingcom";
repo = "armips";
rev = "v${version}";
sha256 = "sha256-L+Uxww/WtvDJn1xZqoqA6Pkzq/98sy1qTxZbv6eEjbA=";
};
nativeBuildInputs = [ cmake ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp armips $out/bin
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/Kingcom/armips";
description = "Assembler for various ARM and MIPS platforms.";
license = licenses.mit;
maintainers = with maintainers; [ marius851000 ];
};
}

View file

@ -0,0 +1,24 @@
diff --git old/as31/run.c new/as31/run.c
index 28c5317..9e5263b 100644
--- old/as31/run.c
+++ new/as31/run.c
@@ -113,7 +113,8 @@ int run_as31(const char *infile, int lst, int use_stdout,
}
while (!feof(finPre)) {
- getline(&lineBuffer,&sizeBuf,finPre);
+ if (getline(&lineBuffer,&sizeBuf,finPre) == -1)
+ break;
if ((includePtr=strstr(lineBuffer,INC_CMD))) {
includePtr=includePtr+strlen(INC_CMD);
while ((*includePtr==' ')|| //move includePtr to filename
@@ -138,7 +139,8 @@ int run_as31(const char *infile, int lst, int use_stdout,
mesg_f("Cannot open include file: %s\n",includePtr);
} else {
while (!feof(includeFile)) {
- getline(&incLineBuffer,&incSizeBuf,includeFile);
+ if (getline(&incLineBuffer,&incSizeBuf,includeFile) == -1)
+ break;
fprintf(fin,"%s",incLineBuffer);
if (strlen(incLineBuffer)) {
incLineCount++;

View file

@ -0,0 +1,43 @@
{ lib
, stdenv
, fetchurl
, bison
}:
stdenv.mkDerivation rec {
pname = "as31";
version = "2.3.1";
src = fetchurl {
url = "http://wiki.erazor-zone.de/_media/wiki:projects:linux:as31:${pname}-${version}.tar.gz";
name = "${pname}-${version}.tar.gz";
hash = "sha256-zSEyWHFon5nyq717Mpmdv1XZ5Hz0e8ZABqsP8M83c1U=";
};
patches = [
# Check return value of getline in run.c
./0000-getline-break.patch
];
postPatch = ''
# parser.c is generated from parser.y; it is better to generate it via bison
# instead of using the prebuilt one, especially in x86_64
rm -f as31/parser.c
'';
preConfigure = ''
chmod +x configure
'';
nativeBuildInputs = [
bison
];
meta = with lib; {
homepage = "http://wiki.erazor-zone.de/wiki:projects:linux:as31";
description = "An 8031/8051 assembler";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,31 @@
# -------------------------------------------------------------------------
# choose your compiler (must be ANSI-compliant!) and linker command, plus
# any additionally needed flags
OBJDIR = .objdir/
CC = cc
CFLAGS = -g -fomit-frame-pointer -Wall
HOST_OBJEXTENSION = .o
LD = $(CC)
LDFLAGS =
HOST_EXEXTENSION =
# no cross build
TARG_OBJDIR = $(OBJDIR)
TARG_CC = $(CC)
TARG_CFLAGS = $(CFLAGS)
TARG_OBJEXTENSION = $(HOST_OBJEXTENSION)
TARG_LD = $(LD)
TARG_LDFLAGS = $(LDFLAGS)
TARG_EXEXTENSION = $(HOST_EXEXTENSION)
# -------------------------------------------------------------------------
# directories where binaries, includes, and manpages should go during
# installation
BINDIR = @bindir@
INCDIR = @incdir@
MANDIR = @mandir@
LIBDIR = @libdir@
DOCDIR = @docdir@

View file

@ -0,0 +1,53 @@
{ lib
, stdenv
, fetchzip
, buildDocs ? false, tex
}:
stdenv.mkDerivation rec {
pname = "asl";
version = "142-bld211";
src = fetchzip {
name = "${pname}-${version}";
url = "http://john.ccac.rwth-aachen.de:8000/ftp/as/source/c_version/asl-current-${version}.tar.bz2";
hash = "sha256-Sbm16JX7kC/7Ws7YgNBUXNqOCl6u+RXgfNjTODhCzSM=";
};
nativeBuildInputs = lib.optionals buildDocs [ tex ];
postPatch = lib.optionalString (!buildDocs) ''
substituteInPlace Makefile --replace "all: binaries docs" "all: binaries"
'';
dontConfigure = true;
preBuild = ''
bindir="${placeholder "out"}/bin" \
docdir="${placeholder "out"}/doc/asl" \
incdir="${placeholder "out"}/include/asl" \
libdir="${placeholder "out"}/lib/asl" \
mandir="${placeholder "out"}/share/man" \
substituteAll ${./Makefile-nixos.def} Makefile.def
mkdir -p .objdir
'';
meta = with lib; {
homepage = "http://john.ccac.rwth-aachen.de:8000/as/index.html";
description = "Portable macro cross assembler";
longDescription = ''
AS is a portable macro cross assembler for a variety of microprocessors
and -controllers. Though it is mainly targeted at embedded processors and
single-board computers, you also find CPU families in the target list that
are used in workstations and PCs.
'';
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix;
};
}
# TODO: multiple outputs
# TODO: cross-compilation support
# TODO: customize TeX input
# TODO: report upstream about `mkdir -p .objdir/`
# TODO: suggest upstream about building docs as an option

View file

@ -0,0 +1,27 @@
source $stdenv/setup
export JAVA_HOME=$jre
cat >> props <<EOF
output.dir=$out
context.javaPath=$jre
EOF
mkdir -p $out
$jre/bin/java -jar $src -text props
echo "Removing files at top level"
for file in $out/*
do
if test -f $file ; then
rm $file
fi
done
cat >> $out/bin/aj-runtime-env <<EOF
#! $SHELL
export CLASSPATH=$CLASSPATH:.:$out/lib/aspectjrt.jar
EOF
chmod u+x $out/bin/aj-runtime-env

View file

@ -0,0 +1,25 @@
{lib, stdenv, fetchurl, jre}:
stdenv.mkDerivation rec {
pname = "aspectj";
version = "1.9.7";
builder = ./builder.sh;
src = let
versionSnakeCase = builtins.replaceStrings ["."] ["_"] version;
in fetchurl {
url = "https://github.com/eclipse/org.aspectj/releases/download/V${versionSnakeCase}/aspectj-${version}.jar";
sha256 = "sha256-xrg88nLOcagaAsFSnnYChhlv6EKhdBqkJJTDzhUBvTo=";
};
inherit jre;
buildInputs = [jre];
meta = {
homepage = "http://www.eclipse.org/aspectj/";
description = "A seamless aspect-oriented extension to the Java programming language";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
platforms = lib.platforms.unix;
license = lib.licenses.epl10;
};
}

View file

@ -0,0 +1,16 @@
diff -Naur atasm109-old/src/Makefile atasm109-new/src/Makefile
--- atasm109-old/src/Makefile 2021-09-08 09:53:25.581598063 -0300
+++ atasm109-new/src/Makefile 2021-09-08 09:55:20.366131338 -0300
@@ -55,9 +55,9 @@
chown root.root $(DESTDIR)/atasm || true
chmod 711 $(DESTDIR)/atasm
mkdir $(DOCDIR) >/dev/null 2>&1 || echo $(DOCDIR) already exists
- cp ../atasm.txt $(DOCDIR)
- chown root.root $(DOCDIR)/atasm.txt || true
- chmod 644 $(DOCDIR)/atasm.txt
+ # cp ../atasm.txt $(DOCDIR)
+ # chown root.root $(DOCDIR)/atasm.txt || true
+ # chmod 644 $(DOCDIR)/atasm.txt
sed -e 's,%%DOCDIR%%,$(DOCDIR),g' < atasm.1.in > atasm.1
cp atasm.1 $(MANDIR)
chown root.root $(MANDIR)/atasm.1 || true

View file

@ -0,0 +1,14 @@
diff -Naur atasm109-old/src/Makefile atasm109-new/src/Makefile
--- atasm109-old/src/Makefile 2021-09-08 09:53:25.581598063 -0300
+++ atasm109-new/src/Makefile 2021-09-08 09:55:20.366131338 -0300
@@ -16,8 +16,8 @@
UNIX = -DUNIX
# Compiler flags, if you are using egcs, pgcs, or gcc >2.8.1 use:
-#CFLAGS = -g -Wall $(USEZ) $(DOS) $(UNIX) $(ARCH)
-CFLAGS = -Wall $(USEZ) $(DOS) $(UNIX) -O3 -fomit-frame-pointer $(ARCH)
+CFLAGS = -g -Wall $(USEZ) $(DOS) $(UNIX) $(ARCH)
+#CFLAGS = -Wall $(USEZ) $(DOS) $(UNIX) -O3 -fomit-frame-pointer $(ARCH)
L = $(ZLIB)
CC = gcc

View file

@ -0,0 +1,64 @@
{ lib
, stdenv
, fetchurl
, unzip
, zlib
}:
stdenv.mkDerivation rec {
pname = "atasm";
version = "1.09";
src = fetchurl {
url = "https://atari.miribilist.com/${pname}/${pname}${builtins.replaceStrings ["."] [""] version}.zip";
hash = "sha256-26shhw2r30GZIPz6S1rf6dOLKRpgpLwrqCRZX3+8PvA=";
};
patches = [
# make install fails because atasm.txt was moved; report to upstream
./0000-file-not-found.diff
# select flags for compilation
./0001-select-flags.diff
];
dontConfigure = true;
nativeBuildInputs = [
unzip
];
buildInputs = [
zlib
];
preBuild = ''
makeFlagsArray+=(
-C ./src
CC=cc
USEZ="-DZLIB_CAPABLE -I${zlib}/include"
ZLIB="-L${zlib}/lib -lz"
UNIX="-DUNIX"
)
'';
preInstall = ''
install -d $out/share/doc/${pname} $out/man/man1
installFlagsArray+=(
DESTDIR=$out
DOCDIR=$out/share/doc/${pname}
MANDIR=$out/man/man1
)
'';
postInstall = ''
mv docs/* $out/share/doc/${pname}
'';
meta = with lib; {
homepage = "https://atari.miribilist.com/atasm/";
description = "A commandline 6502 assembler compatible with Mac/65";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ AndersonTorres ];
platforms = with platforms; unix;
};
}

View file

@ -0,0 +1,25 @@
{ lib, stdenv, fetchurl, gmp }:
stdenv.mkDerivation rec {
pname = "ats";
version = "0.2.12";
src = fetchurl {
url = "mirror://sourceforge/ats-lang/ats-lang-anairiats-${version}.tgz";
sha256 = "0l2kj1fzhxwsklwmn5yj2vp9rmw4jg0b18bzwqz72bfi8i39736k";
};
# this is necessary because atxt files usually include some .hats files
patches = [ ./install-atsdoc-hats-files.patch ];
buildInputs = [ gmp ];
meta = {
description = "Functional programming language with dependent types";
homepage = "http://www.ats-lang.org";
license = lib.licenses.gpl3Plus;
# TODO: it looks like ATS requires gcc specifically. Someone with more knowledge
# will need to experiment.
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.thoughtpolice ];
};
}

View file

@ -0,0 +1,38 @@
--- ats-lang-anairiats-0.2.11/Makefile 2013-12-10 00:43:52.000000000 +0100
+++ ats-lang-anairiats-0.2.11/Makefile 2014-03-02 07:49:06.985837425 +0100
@@ -97,7 +97,7 @@
cd $(abs_top_srcdir)
[ -d $(bindir2) ] || $(MKDIR_P) $(bindir2)
$(MKDIR_P) $(ATSLIBHOME2)/bin
- find ccomp contrib doc libats libc prelude -type d \
+ find ccomp contrib doc libats libatsdoc libc prelude -type d \
-exec $(MKDIR_P) $(ATSLIBHOME2)/\{} \; \
-print
@@ -105,7 +105,7 @@
#
# recursively install all files in the list except .svn control files.
#
- for d in ccomp/runtime contrib doc libats libc prelude; do \
+ for d in ccomp/runtime contrib doc libats libatsdoc libc prelude; do \
cd $(abs_top_srcdir) && \
$(INSTALL) -d $(ATSLIBHOME2)/"$$d" && \
find "$$d" -name .svn -prune -o -type f \
@@ -143,6 +143,17 @@
$(INSTALL) -m 755 ats_env.sh $(bindir2)/"$$b" && \
echo [ats_env.sh] is installed into $(bindir2)/"$$b"; \
done
+#
+# install atsdoc headers
+#
+ for f in \
+ utils/atsdoc/SATS/*.sats utils/atsdoc/DATS/*.dats utils/atsdoc/HATS/*.hats; \
+ do \
+ [ -f "$$f" ] || continue; \
+ cd $(abs_top_srcdir) && \
+ $(INSTALL) -m 644 -D "$$f" $(ATSLIBHOME2)/"$$f" && \
+ echo "$$f"; \
+ done
install:: install_files

View file

@ -0,0 +1,61 @@
{ lib, stdenv, fetchurl, gmp
, withEmacsSupport ? true
, withContrib ? true }:
let
versionPkg = "0.4.2";
contrib = fetchurl {
url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-contrib-${versionPkg}.tgz";
hash = "sha256-m0hfBLsaNiLaIktcioK+ZtWUsWht3IDSJ6CzgJmS06c=";
};
postInstallContrib = lib.optionalString withContrib
''
local contribDir=$out/lib/ats2-postiats-*/ ;
mkdir -p $contribDir ;
tar -xzf "${contrib}" --strip-components 1 -C $contribDir ;
'';
postInstallEmacs = lib.optionalString withEmacsSupport
''
local siteLispDir=$out/share/emacs/site-lisp/ats2 ;
mkdir -p $siteLispDir ;
install -m 0644 -v ./utils/emacs/*.el $siteLispDir ;
'';
in
stdenv.mkDerivation rec {
pname = "ats2";
version = versionPkg;
src = fetchurl {
url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-gmp-${version}.tgz";
hash = "sha256-UWgDjFojPBYgykrCrJyYvVWY+Gc5d4aRGjTWjc528AM=";
};
buildInputs = [ gmp ];
# Disable parallel build, errors:
# *** No rule to make target 'patscc.dats', needed by 'patscc_dats.c'. Stop.
enableParallelBuilding = false;
setupHook = with lib;
let
hookFiles =
[ ./setup-hook.sh ]
++ optional withContrib ./setup-contrib-hook.sh;
in
builtins.toFile "setupHook.sh"
(concatMapStringsSep "\n" builtins.readFile hookFiles);
postInstall = postInstallContrib + postInstallEmacs;
meta = with lib; {
description = "Functional programming language with dependent types";
homepage = "http://www.ats-lang.org";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ thoughtpolice ttuegel bbarker ];
};
}

View file

@ -0,0 +1 @@
export PATSHOMERELOC=@out@/lib/ats2-postiats-@version@

View file

@ -0,0 +1 @@
export PATSHOME=@out@/lib/ats2-postiats-@version@

View file

@ -0,0 +1,24 @@
{ lib, stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "avra";
version = "1.4.2";
src = fetchFromGitHub {
owner = "Ro5bert";
repo = pname;
rev = version;
hash = "sha256-joOj89WZ9Si5fcu1w1VHj5fOcnB9N2313Yb29A+nCCY=";
};
makeFlags = [ "PREFIX=${placeholder "out"}" ];
doCheck = true;
meta = with lib; {
description = "Assembler for the Atmel AVR microcontroller family";
homepage = "https://github.com/Ro5bert/avra";
license = licenses.gpl2Plus;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,74 @@
{ fetchurl, lib, stdenv, autoconf, automake, libtool, gmp
, darwin, libunistring
}:
stdenv.mkDerivation rec {
pname = "bigloo";
version = "4.4b";
src = fetchurl {
url = "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo-${version}.tar.gz";
sha256 = "sha256-oxOSJwKWmwo7PYAwmeoFrKaYdYvmvQquWXyutolc488=";
};
nativeBuildInputs = [ autoconf automake libtool ];
buildInputs = lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.ApplicationServices
libunistring
];
propagatedBuildInputs = [ gmp ];
preConfigure =
# For libuv on darwin
lib.optionalString stdenv.isDarwin ''
export LIBTOOLIZE=libtoolize
'' +
# Help libgc's configure.
'' export CXXCPP="$CXX -E"
'';
patchPhase = ''
# Fix absolute paths.
sed -e 's=/bin/mv=mv=g' -e 's=/bin/rm=rm=g' \
-e 's=/tmp=$TMPDIR=g' -i autoconf/* \
[Mm]akefile* */[Mm]akefile* */*/[Mm]akefile* \
*/*/*/[Mm]akefile* */*/*/*/[Mm]akefile* \
comptime/Cc/cc.scm gc/install-*
# Make sure we don't change string lengths in the generated
# C files.
sed -e 's=/bin/rm= rm=g' -e 's=/bin/mv= mv=g' \
-i comptime/Cc/cc.c
'';
checkTarget = "test";
# Hack to avoid TMPDIR in RPATHs.
preFixup = ''rm -rf "$(pwd)" '';
meta = {
description = "Efficient Scheme compiler";
homepage = "http://www-sop.inria.fr/indes/fp/Bigloo/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ thoughtpolice ];
# dyld: Library not loaded: /nix/store/w3liqjlrcmzc0sf2kgwjprqgqwqx8z47-libunistring-1.0/lib/libunistring.2.dylib
# Referenced from: /private/tmp/nix-build-bigloo-4.4b.drv-0/bigloo-4.4b/bin/bigloo
# Reason: Incompatible library version: bigloo requires version 5.0.0 or later, but libunistring.2.dylib provides version 4.0.0
broken = (stdenv.isDarwin && stdenv.isx86_64);
longDescription = ''
Bigloo is a Scheme implementation devoted to one goal: enabling
Scheme based programming style where C(++) is usually
required. Bigloo attempts to make Scheme practical by offering
features usually presented by traditional programming languages
but not offered by Scheme and functional programming. Bigloo
compiles Scheme modules. It delivers small and fast stand alone
binary executables. Bigloo enables full connections between
Scheme and C programs, between Scheme and Java programs, and
between Scheme and C# programs.
'';
};
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, cmake, python3, fetchFromGitHub, emscripten }:
stdenv.mkDerivation rec {
pname = "binaryen";
version = "102";
src = fetchFromGitHub {
owner = "WebAssembly";
repo = "binaryen";
rev = "version_${version}";
sha256 = "sha256-UlktpY9tyjYNkmiBZM42QGg67kcPo7VDy2B4Ty1YIew=";
};
nativeBuildInputs = [ cmake python3 ];
meta = with lib; {
homepage = "https://github.com/WebAssembly/binaryen";
description = "Compiler infrastructure and toolchain library for WebAssembly, in C++";
platforms = platforms.all;
maintainers = with maintainers; [ asppsa ];
license = licenses.asl20;
};
passthru.tests = {
inherit emscripten;
};
}

View file

@ -0,0 +1,51 @@
{ python3
, stdenv
, fetchFromGitLab
, gobject-introspection
, lib
, meson
, ninja
}:
stdenv.mkDerivation rec {
pname = "blueprint-compiler";
version = "unstable-2022-05-27";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "jwestman";
repo = pname;
rev = "cebd9ecadc53790cd547392899589dd5de0ac552";
sha256 = "sha256-mNR0ooJSRBIXy2E4avXYEdO1aSST+j41TsVg8+kitwo=";
};
# Requires pythonfuzz, which I've found difficult to package
doCheck = false;
nativeBuildInputs = [
meson
ninja
python3.pkgs.wrapPython
];
buildInputs = [
python3
];
propagatedBuildInputs = [
# So that the compiler can find GIR and .ui files
gobject-introspection
];
postFixup = ''
wrapPythonPrograms
'';
meta = with lib; {
description = "A markup language for GTK user interface files";
homepage = "https://gitlab.gnome.org/jwestman/blueprint-compiler";
license = licenses.lgpl3Plus;
maintainers = [ maintainers.ranfdev ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,133 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchurl
, autoconf
, automake
, fontconfig
, libX11
, perl
, flex
, bison
, pkg-config
, tcl
, tk
, xorg
, yices
, zlib
, ghc
, gmp-static
, verilog
, asciidoctor
, tex
, which
}:
let
ghcWithPackages = ghc.withPackages (g: (with g; [ old-time regex-compat syb split ]));
in stdenv.mkDerivation rec {
pname = "bluespec";
version = "2022.01";
src = fetchFromGitHub {
owner = "B-Lang-org";
repo = "bsc";
rev = version;
sha256 = "sha256-ivTua3MLa8akma3MGkhsqwSdwswYX916kywKdlj7TqY=";
};
yices-src = fetchurl {
url = "https://github.com/B-Lang-org/bsc/releases/download/${version}/yices-src-for-bsc-${version}.tar.gz";
sha256 = "sha256-ey5yIIVFZyG4EnYGqbIJqmxK1rZ70FWM0Jz+2hIoGXE=";
};
enableParallelBuilding = true;
outputs = [ "out" "doc" ];
# https://github.com/B-Lang-org/bsc/pull/278
patches = [ ./libstp_stub_makefile.patch ];
postUnpack = ''
mkdir -p $sourceRoot/src/vendor/yices/v2.6/yices2
tar -C $sourceRoot/src/vendor/yices/v2.6/yices2 -xf ${yices-src}
chmod -R +rwX $sourceRoot/src/vendor/yices/v2.6/yices2
'';
preBuild = ''
patchShebangs \
src/Verilog/copy_module.pl \
src/comp/update-build-version.sh \
src/comp/update-build-system.sh \
src/comp/wrapper.sh
substituteInPlace src/comp/Makefile \
--replace 'BINDDIR' 'BINDIR' \
--replace 'install-bsc install-bluetcl' 'install-bsc install-bluetcl $(UTILEXES) install-utils'
# allow running bsc to bootstrap
export LD_LIBRARY_PATH=$PWD/inst/lib/SAT
'';
buildInputs = yices.buildInputs ++ [
fontconfig
libX11 # tcltk
tcl
tk
which
xorg.libXft
zlib
];
nativeBuildInputs = [
automake
autoconf
asciidoctor
bison
flex
ghcWithPackages
perl
pkg-config
tex
];
makeFlags = [
"release"
"NO_DEPS_CHECKS=1" # skip the subrepo check (this deriviation uses yices.src instead of the subrepo)
"NOGIT=1" # https://github.com/B-Lang-org/bsc/issues/12
"LDCONFIG=ldconfig" # https://github.com/B-Lang-org/bsc/pull/43
"STP_STUB=1"
];
doCheck = true;
checkInputs = [
gmp-static
verilog
];
checkTarget = "check-smoke";
installPhase = ''
mkdir -p $out
mv inst/bin $out
mv inst/lib $out
# fragile, I know..
mkdir -p $doc/share/doc/bsc
mv inst/README $doc/share/doc/bsc
mv inst/ReleaseNotes.* $doc/share/doc/bsc
mv inst/doc/*.pdf $doc/share/doc/bsc
'';
meta = {
description = "Toolchain for the Bluespec Hardware Definition Language";
homepage = "https://github.com/B-Lang-org/bsc";
license = lib.licenses.bsd3;
platforms = [ "x86_64-linux" ];
# darwin fails at https://github.com/B-Lang-org/bsc/pull/35#issuecomment-583731562
# aarch64 fails, as GHC fails with "ghc: could not execute: opt"
maintainers = with lib.maintainers; [ jcumming thoughtpolice ];
};
}

View file

@ -0,0 +1,28 @@
diff -ru bsc-orig/src/vendor/stp/Makefile bsc-new/src/vendor/stp/Makefile
--- bsc-orig/src/vendor/stp/Makefile 1969-12-31 16:00:01.000000000 -0800
+++ bsc-new/src/vendor/stp/Makefile 2020-11-12 17:42:40.115143035 -0800
@@ -9,12 +9,13 @@
SRC = src
else
SRC = src_stub
+SNAME += lib/libstp_stub.so
endif
ifeq ($(OSTYPE), Darwin)
-SNAME=libstp.dylib
+SNAME = lib/libstp.dylib
else
-SNAME=libstp.so.1
+SNAME += lib/libstp.so.1
endif
all: install
@@ -23,7 +24,7 @@
$(MAKE) -C $(SRC) install
ln -fsn HaskellIfc include_hs
install -m 755 -d $(PREFIX)/lib/SAT
- install -m 644 lib/$(SNAME) $(PREFIX)/lib/SAT
+ install -m 644 $(SNAME) $(PREFIX)/lib/SAT
clean:
$(MAKE) -C $(SRC) clean

View file

@ -0,0 +1,65 @@
# This file is based on https://github.com/turboMaCk/bs-platform.nix/blob/master/build-bs-platform.nix
# to make potential future updates simpler
{ lib, stdenv, fetchFromGitHub, ninja, runCommand, nodejs, python3,
ocaml-version, version, src,
patches ? [],
ocaml ? (import ./ocaml.nix {
version = ocaml-version;
inherit lib stdenv;
src = "${src}/ocaml";
}),
custom-ninja ? (ninja.overrideAttrs (attrs: {
src = runCommand "ninja-patched-source" {} ''
mkdir -p $out
tar zxvf ${src}/vendor/ninja.tar.gz -C $out
'';
patches = [];
}))
}:
let
bin_folder = if stdenv.isDarwin then "darwin" else "linux";
in
stdenv.mkDerivation rec {
inherit src version patches;
pname = "bs-platform";
BS_RELEASE_BUILD = "true";
# BuckleScript's idiosyncratic build process only builds artifacts required
# for editor-tooling to work when this environment variable is set:
# https://github.com/BuckleScript/bucklescript/blob/7.2.0/scripts/install.js#L225-L227
BS_TRAVIS_CI = "1";
buildInputs = [ nodejs python3 custom-ninja ];
prePatch = ''
sed -i 's:./configure.py --bootstrap:python3 ./configure.py --bootstrap:' ./scripts/install.js
mkdir -p ./native/${ocaml-version}/bin
ln -sf ${ocaml}/bin/* ./native/${ocaml-version}/bin
'';
# avoid building the development version, will break aarch64 build
dontConfigure = true;
buildPhase = ''
# This is an unfortunate name, but it's actually how to build a release
# binary for BuckleScript
npm run postinstall
'';
installPhase = ''
mkdir -p $out/bin
cp -rf jscomp lib ${bin_folder} vendor odoc_gen native bsb bsc bsrefmt $out
mkdir -p $out/lib/ocaml
cp jscomp/runtime/js.* jscomp/runtime/*.cm* $out/lib/ocaml
cp jscomp/others/*.ml jscomp/others/*.mli jscomp/others/*.cm* $out/lib/ocaml
cp jscomp/stdlib-406/*.ml jscomp/stdlib-406/*.mli jscomp/stdlib-406/*.cm* $out/lib/ocaml
cp bsconfig.json package.json $out
ln -s $out/bsb $out/bin/bsb
ln -s $out/bsc $out/bin/bsc
ln -s $out/bsrefmt $out/bin/bsrefmt
'';
}

View file

@ -0,0 +1,27 @@
{ lib, stdenv, runCommand, fetchFromGitHub, ninja, nodejs, python3, ... }:
let
build-bs-platform = import ./build-bs-platform.nix;
in
(build-bs-platform rec {
inherit lib stdenv runCommand fetchFromGitHub ninja nodejs python3;
version = "8.2.0";
ocaml-version = "4.06.1";
patches = [ ./jscomp-release-ninja.patch ];
src = fetchFromGitHub {
owner = "BuckleScript";
repo = "bucklescript";
rev = version;
sha256 = "1hql7sxps1k17zmwyha6idq6nw20abpq770l55ry722birclmsmf";
fetchSubmodules = true;
};
}).overrideAttrs (attrs: {
meta = with lib; {
description = "A JavaScript backend for OCaml focused on smooth integration and clean generated code";
homepage = "https://bucklescript.github.io";
license = licenses.lgpl3;
maintainers = with maintainers; [ turbomack gamb ];
platforms = platforms.all;
};
})

View file

@ -0,0 +1,16 @@
jscomp/others/release.ninja | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/jscomp/others/release.ninja b/jscomp/others/release.ninja
index 9ea6d11c5..a91ed9c80 100644
--- a/jscomp/others/release.ninja
+++ b/jscomp/others/release.ninja
@@ -30,7 +30,7 @@ build others/js_json.cmj : cc_cmi others/js_json.ml | others/js_array2.cmj other
build others/js_json.cmi : cc others/js_json.mli | others/js_dict.cmi others/js_null.cmi others/js_string.cmj others/js_types.cmi runtime
build others/js_list.cmj : cc_cmi others/js_list.ml | others/js_array2.cmj others/js_list.cmi others/js_vector.cmj runtime
build others/js_list.cmi : cc others/js_list.mli | others/js_vector.cmi runtime
-build others/js_mapperRt.cmj : cc_cmi others/js_mapperRt.ml | others/js_mapperRt.cmi runtime
+build others/js_mapperRt.cmj : cc_cmi others/js_mapperRt.ml | others/js_array2.cmj others/js_mapperRt.cmi runtime
build others/js_mapperRt.cmi : cc others/js_mapperRt.mli | runtime
build others/js_math.cmi others/js_math.cmj : cc others/js_math.ml | others/js_int.cmj runtime
build others/js_null.cmj : cc_cmi others/js_null.ml | others/js_exn.cmj others/js_null.cmi runtime

View file

@ -0,0 +1,16 @@
{ lib, stdenv, src, version }:
stdenv.mkDerivation rec {
inherit src version;
pname = "ocaml-bs";
configurePhase = ''
./configure -prefix $out
'';
buildPhase = ''
make -j9 world.opt
'';
meta = with lib; {
branch = "4.06";
platforms = platforms.all;
};
}

View file

@ -0,0 +1,40 @@
{ lib, stdenv, fetchurl, perl, coreutils }:
stdenv.mkDerivation rec {
pname = "berkeley_upc";
version = "2.22.0";
src = fetchurl {
url = "http://upc.lbl.gov/download/release/berkeley_upc-${version}.tar.gz";
sha256 = "041l215x8z1cvjcx7kwjdgiaf9rl2d778k6kiv8q09bc68nwd44m";
};
postPatch = ''
patchShebangs .
'';
# Used during the configure phase
ENVCMD = "${coreutils}/bin/env";
buildInputs = [ perl ];
meta = with lib; {
description = "A compiler for the Berkely Unified Parallel C language";
longDescription = ''
Unified Parallel C (UPC) is an extension of the C programming language
designed for high performance computing on large-scale parallel
machines.The language provides a uniform programming model for both
shared and distributed memory hardware. The programmer is presented with
a single shared, partitioned address space, where variables may be
directly read and written by any processor, but each variable is
physically associated with a single processor. UPC uses a Single Program
Multiple Data (SPMD) model of computation in which the amount of
parallelism is fixed at program startup time, typically with a single
thread of execution per processor.
'';
homepage = "https://upc.lbl.gov/";
license = licenses.mit;
platforms = with platforms; [ linux ];
maintainers = with maintainers; [ zimbatm ];
};
}

View file

@ -0,0 +1,47 @@
{ llvmPackages
, lib
, fetchFromGitHub
, cmake
, python3
}:
llvmPackages.stdenv.mkDerivation rec {
pname = "c3c";
version = "unstable-2021-07-30";
src = fetchFromGitHub {
owner = "c3lang";
repo = pname;
rev = "2246b641b16e581aec9059c8358858e10a548d94";
sha256 = "VdMKdQsedDQCnsmTxO4HnBj5GH/EThspnotvrAscSqE=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
llvmPackages.llvm
llvmPackages.lld
];
checkInputs = [ python3 ];
doCheck = true;
checkPhase = ''
( cd ../resources/testproject; ../../build/c3c build )
( cd ../test; python src/tester.py ../build/c3c test_suite )
'';
installPhase = ''
install -Dm755 c3c $out/bin/c3c
cp -r lib $out
'';
meta = with lib; {
description = "Compiler for the C3 language";
homepage = "https://github.com/c3lang/c3c";
license = licenses.lgpl3Only;
maintainers = with maintainers; [ luc65r ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,42 @@
{ lib, stdenv, fetchFromGitHub, gcc }:
stdenv.mkDerivation rec {
pname = "cakelisp";
version = "0.1.0";
src = fetchFromGitHub {
owner = "makuto";
repo = "cakelisp";
rev = "v${version}";
sha256 = "126va59jy7rvy6c2wrf8j44m307f2d8jixqkc49s9wllxprj1dmg";
};
buildInputs = [ gcc ];
postPatch = ''
substituteInPlace runtime/HotReloading.cake \
--replace '"/usr/bin/g++"' '"${gcc}/bin/g++"'
substituteInPlace src/ModuleManager.cpp \
--replace '"/usr/bin/g++"' '"${gcc}/bin/g++"'
'' + lib.optionalString stdenv.isDarwin ''
substituteInPlace Build.sh --replace '--export-dynamic' '-export_dynamic'
substituteInPlace runtime/HotReloading.cake --replace '--export-dynamic' '-export_dynamic'
substituteInPlace Bootstrap.cake --replace '--export-dynamic' '-export_dynamic'
'';
buildPhase = ''
./Build.sh
'';
installPhase = ''
install -Dm755 bin/cakelisp -t $out/bin
'';
meta = with lib; {
description = "A performance-oriented Lisp-like language";
homepage = "https://github.com/makuto/cakelisp";
license = licenses.gpl3Plus;
platforms = platforms.darwin ++ platforms.linux;
maintainers = [ maintainers.sbond75 ];
};
}

View file

@ -0,0 +1,53 @@
{ lib, fetchFromGitHub, makeWrapper, clang, haskellPackages }:
haskellPackages.mkDerivation rec {
pname = "carp";
version = "0.5.4";
src = fetchFromGitHub {
owner = "carp-lang";
repo = "Carp";
rev = "v${version}";
sha256 = "sha256-o7NLd7jC1BvcoVzbD18LvHg/SqOnfn9yELUrpg2uZtY=";
};
# -Werror breaks build with GHC >= 9.0
# https://github.com/carp-lang/Carp/issues/1386
postPatch = ''
substituteInPlace CarpHask.cabal --replace "-Werror" ""
'';
buildTools = [ makeWrapper ];
executableHaskellDepends = with haskellPackages; [
HUnit blaze-markup blaze-html split ansi-terminal cmark
edit-distance hashable open-browser optparse-applicative
];
isExecutable = true;
# The carp executable must know where to find its core libraries and other
# files. Set the environment variable CARP_DIR so that it points to the root
# of the Carp repo. See:
# https://github.com/carp-lang/Carp/blob/master/docs/Install.md#setting-the-carp_dir
#
# Also, clang must be available run-time because carp is compiled to C which
# is then compiled with clang.
postInstall = ''
wrapProgram $out/bin/carp \
--set CARP_DIR $src \
--prefix PATH : ${clang}/bin
wrapProgram $out/bin/carp-header-parse \
--set CARP_DIR $src \
--prefix PATH : ${clang}/bin
'';
description = "A statically typed lisp, without a GC, for real-time applications";
homepage = "https://github.com/carp-lang/Carp";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jluttine ];
# Windows not (yet) supported.
platforms = with lib.platforms; unix ++ darwin;
}

View file

@ -0,0 +1,58 @@
{ lib, gccStdenv, fetchFromGitHub }:
gccStdenv.mkDerivation rec {
pname = "cc65";
version = "2.19";
src = fetchFromGitHub {
owner = "cc65";
repo = pname;
rev = "V${version}";
sha256 = "01a15yvs455qp20hri2pbg2wqvcip0d50kb7dibi9427hqk9cnj4";
};
makeFlags = [ "PREFIX=${placeholder "out"}" ];
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://cc65.github.io/";
description = "C compiler for processors of 6502 family";
longDescription = ''
cc65 is a complete cross development package for 65(C)02 systems,
including a powerful macro assembler, a C compiler, linker, librarian and
several other tools.
cc65 has C and runtime library support for many of the old 6502 machines,
including the following Commodore machines:
- VIC20
- C16/C116 and Plus/4
- C64
- C128
- CBM 510 (aka P500)
- the 600/700 family
- newer PET machines (not 2001).
- the Apple ][+ and successors.
- the Atari 8-bit machines.
- the Atari 2600 console.
- the Atari 5200 console.
- GEOS for the C64, C128 and Apple //e.
- the Bit Corporation Gamate console.
- the NEC PC-Engine (aka TurboGrafx-16) console.
- the Nintendo Entertainment System (NES) console.
- the Watara Supervision console.
- the VTech Creativision console.
- the Oric Atmos.
- the Oric Telestrat.
- the Lynx console.
- the Ohio Scientific Challenger 1P.
The libraries are fairly portable, so creating a version for other 6502s
shouldn't be too much work.
'';
license = licenses.zlib;
maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,128 @@
{ lib, stdenv, fetchurl, fetchpatch, runCommand, bootstrap_cmds, coreutils, glibc, m4, runtimeShell }:
let
options = rec {
/* TODO: there are also FreeBSD and Windows versions */
x86_64-linux = {
arch = "linuxx86";
sha256 = "0d5bsizgpw9hv0jfsf4bp5sf6kxh8f9hgzz9hsjzpfhs3npmmac4";
runtime = "lx86cl64";
kernel = "linuxx8664";
};
i686-linux = {
arch = "linuxx86";
sha256 = x86_64-linux.sha256;
runtime = "lx86cl";
kernel = "linuxx8632";
};
armv7l-linux = {
arch = "linuxarm";
sha256 = throw "ccl all-in-one linuxarm archive missing upstream";
runtime = "armcl";
kernel = "linuxarm";
};
x86_64-darwin = {
arch = "darwinx86";
sha256 = "1l060719k8mjd70lfdnr0hkybk7v88zxvfrsp7ww50q808cjffqk";
runtime = "dx86cl64";
kernel = "darwinx8664";
};
armv6l-linux = armv7l-linux;
};
cfg = options.${stdenv.hostPlatform.system} or (throw "missing source url for platform ${stdenv.hostPlatform.system}");
# The 1.12 github release of CCL seems to be missing the usual
# ccl-1.12-linuxarm.tar.gz tarball, so we build it ourselves here
linuxarm-src = runCommand "ccl-1.12-linuxarm.tar.gz" {
outer = fetchurl {
url = "https://github.com/Clozure/ccl/archive/v1.12.tar.gz";
sha256 = "0lmxhll6zgni0l41h4kcf3khbih9r0f8xni6zcfvbi3dzfs0cjkp";
};
inner = fetchurl {
url = "https://github.com/Clozure/ccl/releases/download/v1.12/linuxarm.tar.gz";
sha256 = "0x4bjx6cxsjvxyagijhlvmc7jkyxifdvz5q5zvz37028va65243c";
};
} ''
tar xf $outer
tar xf $inner -C ccl
tar czf $out ccl
'';
in
stdenv.mkDerivation rec {
pname = "ccl";
version = "1.12";
src = if cfg.arch == "linuxarm" then linuxarm-src else fetchurl {
url = "https://github.com/Clozure/ccl/releases/download/v${version}/ccl-${version}-${cfg.arch}.tar.gz";
sha256 = cfg.sha256;
};
patches = [
# Pull upstream fiux for -fno-common toolchains:
# https://github.com/Clozure/ccl/pull/316
(fetchpatch {
name = "fno-common-p1.patch";
url = "https://github.com/Clozure/ccl/commit/185dc1a00e7492f8be98e5f93b561758423595f1.patch";
sha256 = "0wqfds7346qdwdsxz3bl2p601ib94rdp9nknj7igj01q8lqfpajw";
})
(fetchpatch {
name = "fno-common-p2.patch";
url = "https://github.com/Clozure/ccl/commit/997de91062d1f152d0c3b322a1e3694243e4a403.patch";
sha256 = "10w6zw8wgalkdyya4m48lgca4p9wgcp1h44hy9wqr94dzlllq0f6";
})
];
buildInputs = if stdenv.isDarwin then [ bootstrap_cmds m4 ] else [ glibc m4 ];
CCL_RUNTIME = cfg.runtime;
CCL_KERNEL = cfg.kernel;
postPatch = if stdenv.isDarwin then ''
substituteInPlace lisp-kernel/${CCL_KERNEL}/Makefile \
--replace "M4 = gm4" "M4 = m4" \
--replace "dtrace" "/usr/sbin/dtrace" \
--replace "/bin/rm" "${coreutils}/bin/rm" \
--replace "/bin/echo" "${coreutils}/bin/echo"
substituteInPlace lisp-kernel/m4macros.m4 \
--replace "/bin/pwd" "${coreutils}/bin/pwd"
'' else ''
substituteInPlace lisp-kernel/${CCL_KERNEL}/Makefile \
--replace "/bin/rm" "${coreutils}/bin/rm" \
--replace "/bin/echo" "${coreutils}/bin/echo"
substituteInPlace lisp-kernel/m4macros.m4 \
--replace "/bin/pwd" "${coreutils}/bin/pwd"
'';
buildPhase = ''
make -C lisp-kernel/${CCL_KERNEL} clean
make -C lisp-kernel/${CCL_KERNEL} all
./${CCL_RUNTIME} -n -b -e '(ccl:rebuild-ccl :full t)' -e '(ccl:quit)'
'';
installPhase = ''
mkdir -p "$out/share"
cp -r . "$out/share/ccl-installation"
mkdir -p "$out/bin"
echo -e '#!${runtimeShell}\n'"$out/share/ccl-installation/${CCL_RUNTIME}"' "$@"\n' > "$out"/bin/"${CCL_RUNTIME}"
chmod a+x "$out"/bin/"${CCL_RUNTIME}"
ln -s "$out"/bin/"${CCL_RUNTIME}" "$out"/bin/ccl
'';
hardeningDisable = [ "format" ];
meta = with lib; {
description = "Clozure Common Lisp";
homepage = "https://ccl.clozure.com/";
maintainers = with maintainers; [ raskin muflax tohl ];
platforms = attrNames options;
# assembler failures during build, x86_64-darwin broken since 2020-10-14
broken = (stdenv.isDarwin && stdenv.isx86_64);
license = licenses.asl20;
};
}

View file

@ -0,0 +1,52 @@
{ stdenv, buildPackages, callPackage }:
let
chezSystemMap = {
# See `/workarea` of source code for list of systems
"aarch64-darwin" = "tarm64osx";
"aarch64-linux" = "tarm64le";
"armv7l-linux" = "tarm32le";
"x86_64-darwin" = "ta6osx";
"x86_64-linux" = "ta6le";
};
inherit (stdenv.hostPlatform) system;
chezSystem = chezSystemMap.${system} or (throw "Add ${system} to chezSystemMap to enable building chez-racket");
# Chez Scheme uses an ad-hoc `configure`, hence we don't use the usual
# stdenv abstractions.
forBoot = {
pname = "chez-scheme-racket-boot";
configurePhase = ''
runHook preConfigure
./configure --pb ZLIB=$ZLIB LZ4=$LZ4
runHook postConfigure
'';
makeFlags = [ "${chezSystem}.bootquick" ];
installPhase = ''
runHook preInstall
mkdir -p $out
pushd boot
mv $(ls -1 | grep -v "^pb$") -t $out
popd
runHook postInstall
'';
};
boot = buildPackages.callPackage (import ./shared.nix forBoot) {};
forFinal = {
pname = "chez-scheme-racket";
configurePhase = ''
runHook preConfigure
cp -r ${boot}/* -t ./boot
./configure -m=${chezSystem} --installprefix=$out --installman=$out/share/man ZLIB=$ZLIB LZ4=$LZ4
runHook postConfigure
'';
preBuild = ''
pushd ${chezSystem}/c
'';
postBuild = ''
popd
'';
setupHook = ./setup-hook.sh;
};
final = callPackage (import ./shared.nix forFinal) {};
in
final

View file

@ -0,0 +1,5 @@
addChezLibraryPath() {
addToSearchPath CHEZSCHEMELIBDIRS "$1/lib/csv-site"
}
addEnvHooks "$targetOffset" addChezLibraryPath

View file

@ -0,0 +1,41 @@
args:
{ stdenv, lib, fetchFromGitHub, coreutils, darwin
, ncurses, libiconv, libX11, zlib, lz4
}:
stdenv.mkDerivation (args // {
version = "unstable-2021-12-11";
src = fetchFromGitHub {
owner = "racket";
repo = "ChezScheme";
rev = "8846c96b08561f05a937d5ecfe4edc96cc99be39";
sha256 = "IYJQzT88T8kFahx2BusDOyzz6lQDCbZIfSz9rZoNF7A=";
fetchSubmodules = true;
};
prePatch = ''
rm -rf zlib/*.c lz4/lib/*.c
'';
postPatch = ''
export ZLIB="$(find ${zlib.out}/lib -type f | sort | head -n1)"
export LZ4="$(find ${lz4.out}/lib -type f | sort | head -n1)"
'';
nativeBuildInputs = lib.optionals stdenv.isDarwin (with darwin; [ cctools autoSignDarwinBinariesHook ]);
buildInputs = [ ncurses libX11 zlib lz4 ]
++ lib.optional stdenv.isDarwin libiconv;
enableParallelBuilding = true;
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isGNU "-Wno-error=format-truncation";
meta = {
description = "Fork of Chez Scheme for Racket";
homepage = "https://github.com/racket/ChezScheme";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ l-as ];
platforms = lib.platforms.unix;
};
})

View file

@ -0,0 +1,78 @@
{ lib, stdenv, fetchFromGitHub
, coreutils, cctools
, ncurses, libiconv, libX11, libuuid
}:
stdenv.mkDerivation rec {
pname = "chez-scheme";
version = "9.5.8";
src = fetchFromGitHub {
owner = "cisco";
repo = "ChezScheme";
rev = "refs/tags/v${version}";
sha256 = "sha256-esCWEzny/I+Ors6+upKlt4h13oN0bRLWN9OTKuSqdl8=";
fetchSubmodules = true;
};
nativeBuildInputs = lib.optional stdenv.isDarwin cctools;
buildInputs = [ ncurses libiconv libX11 libuuid ];
enableParallelBuilding = true;
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isGNU "-Wno-error=format-truncation";
/*
** We patch out a very annoying 'feature' in ./configure, which
** tries to use 'git' to update submodules.
**
** We have to also fix a few occurrences to tools with absolute
** paths in some helper scripts, otherwise the build will fail on
** NixOS or in any chroot build.
*/
patchPhase = ''
substituteInPlace ./configure \
--replace "git submodule init && git submodule update || exit 1" "true"
substituteInPlace ./workarea \
--replace "/bin/ln" ln \
--replace "/bin/cp" cp
substituteInPlace ./makefiles/installsh \
--replace "/usr/bin/true" "${coreutils}/bin/true"
substituteInPlace zlib/configure \
--replace "/usr/bin/libtool" libtool
'';
/*
** Don't use configureFlags, since that just implicitly appends
** everything onto a --prefix flag, which ./configure gets very angry
** about.
**
** Also, carefully set a manual workarea argument, so that we
** can later easily find the machine type that we built Chez
** for.
*/
configurePhase = ''
./configure --threads --installprefix=$out --installman=$out/share/man
'';
/*
** Clean up some of the examples from the build output.
*/
postInstall = ''
rm -rf $out/lib/csv${version}/examples
'';
setupHook = ./setup-hook.sh;
meta = {
description = "A powerful and incredibly fast R6RS Scheme compiler";
homepage = "https://cisco.github.io/ChezScheme/";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ thoughtpolice ];
platforms = lib.platforms.unix;
badPlatforms = [ "aarch64-linux" "aarch64-darwin" ];
};
}

View file

@ -0,0 +1,5 @@
addChezLibraryPath() {
addToSearchPath CHEZSCHEMELIBDIRS "$1/lib/csv-site"
}
addEnvHooks "$targetOffset" addChezLibraryPath

View file

@ -0,0 +1,157 @@
From 2877f33747e3871c3a682b3a0c812b8ba2e4da5a Mon Sep 17 00:00:00 2001
From: Caolan McMahon <caolan@caolanmcmahon.com>
Date: Sat, 25 Jun 2016 11:52:28 +0100
Subject: [PATCH] Introduce CHICKEN_REPOSITORY_EXTRA
This environment variable works like CHICKEN_REPOSITORY but supports
multiple paths separated by `:'. Those paths are searched after
CHICKEN_REPOSITORY when loading extensions via `require-library' and
friends. It can be accessed and changed at runtime via the new procedure
`repository-extra-paths' which is analog to `repository-path'.
Original patch by Moritz Heidkamp.
Updated by Caolan McMahon for CHICKEN 4.11.0
---
chicken-install.scm | 29 ++++++++++++++++++++++++-----
chicken.import.scm | 1 +
eval.scm | 37 +++++++++++++++++++++++++++++++------
3 files changed, 56 insertions(+), 11 deletions(-)
diff --git a/chicken-install.scm b/chicken-install.scm
index 7bc6041..f557793 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -120,6 +120,19 @@
(sprintf "lib/chicken/~a" (##sys#fudge 42)))
(repository-path)))))
+ (define (repo-paths)
+ (if *deploy*
+ *prefix*
+ (if (and *cross-chicken* (not *host-extension*))
+ (list (make-pathname C_TARGET_LIB_HOME (sprintf "chicken/~a" C_BINARY_VERSION)))
+ (cons
+ (if *prefix*
+ (make-pathname
+ *prefix*
+ (sprintf "lib/chicken/~a" (##sys#fudge 42)))
+ (repository-path))
+ (repository-extra-paths)))))
+
(define (get-prefix #!optional runtime)
(cond ((and *cross-chicken*
(not *host-extension*))
@@ -226,10 +239,13 @@
(chicken-version) )
;; Duplication of (extension-information) to get custom
;; prefix. This should be fixed.
- ((let* ((ep (##sys#canonicalize-extension-path x 'ext-version))
- (sf (make-pathname (repo-path) ep "setup-info")))
- (and (file-exists? sf)
- (with-input-from-file sf read))) =>
+ ((let ((ep (##sys#canonicalize-extension-path x 'ext-version)))
+ (let loop ((paths (repo-paths)))
+ (cond ((null? paths) #f)
+ ((let ((sf (make-pathname (car paths) ep "setup-info")))
+ (and (file-exists? sf)
+ (with-input-from-file sf read))))
+ (else (loop (cdr paths)))))) =>
(lambda (info)
(let ((a (assq 'version info)))
(if a
@@ -776,7 +792,10 @@
"installed extension has no information about which egg it belongs to"
(pathname-file sf))
#f))))
- (glob (make-pathname (repo-path) "*" "setup-info")))
+ (append-map
+ (lambda (path)
+ (glob (make-pathname path "*" "setup-info")))
+ (repo-paths)))
equal?))
(define (list-available-extensions trans locn)
diff --git a/chicken.import.scm b/chicken.import.scm
index f6e3a19..be1637c 100644
--- a/chicken.import.scm
+++ b/chicken.import.scm
@@ -200,6 +200,7 @@
repl
repl-prompt
repository-path
+ repository-extra-paths
require
reset
reset-handler
diff --git a/eval.scm b/eval.scm
index 6242f62..f7d76d4 100644
--- a/eval.scm
+++ b/eval.scm
@@ -81,6 +81,7 @@
(define-constant source-file-extension ".scm")
(define-constant setup-file-extension "setup-info")
(define-constant repository-environment-variable "CHICKEN_REPOSITORY")
+(define-constant repository-extra-environment-variable "CHICKEN_REPOSITORY_EXTRA")
(define-constant prefix-environment-variable "CHICKEN_PREFIX")
; these are actually in unit extras, but that is used by default
@@ -1176,6 +1177,25 @@
(define ##sys#repository-path repository-path)
+(define ##sys#repository-extra-paths
+ (let* ((repaths (get-environment-variable repository-extra-environment-variable))
+ (repaths (if repaths
+ (let ((len (string-length repaths)))
+ (let loop ((i 0) (offset 0) (res '()))
+ (cond ((> i len)
+ (reverse res))
+ ((or (= i len) (eq? #\: (string-ref repaths i)))
+ (loop (+ i 1) (+ i 1) (cons (substring repaths offset i) res)))
+ (else
+ (loop (+ i 1) offset res)))))
+ '())))
+ (lambda (#!optional val)
+ (if val
+ (set! repaths val)
+ repaths))))
+
+(define repository-extra-paths ##sys#repository-extra-paths)
+
(define ##sys#setup-mode #f)
(define ##sys#find-extension
@@ -1193,6 +1213,7 @@
(let loop ((paths (##sys#append
(if ##sys#setup-mode '(".") '())
(if rp (list rp) '())
+ (##sys#repository-extra-paths)
(if inc? ##sys#include-pathnames '())
(if ##sys#setup-mode '() '("."))) ))
(and (pair? paths)
@@ -1252,12 +1273,16 @@
[string-append string-append]
[read read] )
(lambda (id loc)
- (and-let* ((rp (##sys#repository-path)))
- (let* ((p (##sys#canonicalize-extension-path id loc))
- (rpath (string-append rp "/" p ".")) )
- (cond ((file-exists? (string-append rpath setup-file-extension))
- => (cut with-input-from-file <> read) )
- (else #f) ) ) ) ) ))
+ (let loop ((rpaths (cons (##sys#repository-path) (##sys#repository-extra-paths))))
+ (and (pair? rpaths)
+ (let ((rp (car rpaths)))
+ (if (not rp)
+ (loop (cdr rpaths))
+ (let* ((p (##sys#canonicalize-extension-path id loc))
+ (rpath (string-append rp "/" p ".")) )
+ (cond ((file-exists? (string-append rpath setup-file-extension))
+ => (cut with-input-from-file <> read) )
+ (else (loop (cdr rpaths))) ) )) ))) ) ))
(define (extension-information ext)
(##sys#extension-information ext 'extension-information) )
--
2.1.4

View file

@ -0,0 +1,84 @@
{ lib, stdenv, fetchurl, makeWrapper, darwin, bootstrap-chicken ? null }:
let
version = "4.13.0";
platform = with stdenv;
if isDarwin then "macosx"
else if isCygwin then "cygwin"
else if (isFreeBSD || isOpenBSD) then "bsd"
else if isSunOS then "solaris"
else "linux"; # Should be a sane default
in
stdenv.mkDerivation {
pname = "chicken";
inherit version;
binaryVersion = 8;
src = fetchurl {
url = "https://code.call-cc.org/releases/${version}/chicken-${version}.tar.gz";
sha256 = "0hvckhi5gfny3mlva6d7y9pmx7cbwvq0r7mk11k3sdiik9hlkmdd";
};
setupHook = lib.optional (bootstrap-chicken != null) ./setup-hook.sh;
# -fno-strict-overflow is not a supported argument in clang on darwin
hardeningDisable = lib.optionals stdenv.isDarwin ["strictoverflow"];
makeFlags = [
"PLATFORM=${platform}" "PREFIX=$(out)"
"VARDIR=$(out)/var/lib"
] ++ (lib.optionals stdenv.isDarwin [
"XCODE_TOOL_PATH=${darwin.binutils.bintools}/bin"
"C_COMPILER=$(CC)"
]);
# We need a bootstrap-chicken to regenerate the c-files after
# applying a patch to add support for CHICKEN_REPOSITORY_EXTRA
patches = lib.optionals (bootstrap-chicken != null) [
./0001-Introduce-CHICKEN_REPOSITORY_EXTRA.patch
];
buildInputs = [
makeWrapper
] ++ (lib.optionals (bootstrap-chicken != null) [
bootstrap-chicken
]);
preBuild = lib.optionalString (bootstrap-chicken != null) ''
# Backup the build* files - those are generated from hostname,
# git-tag, etc. and we don't need/want that
mkdir -p build-backup
mv buildid buildbranch buildtag.h build-backup
# Regenerate eval.c after the patch
make spotless $makeFlags
mv build-backup/* .
'';
postInstall = ''
for f in $out/bin/*
do
wrapProgram $f \
--prefix PATH : ${stdenv.cc}/bin
done
'';
# TODO: Assert csi -R files -p '(pathname-file (repository-path))' == binaryVersion
meta = {
homepage = "http://www.call-cc.org/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ corngood ];
platforms = lib.platforms.linux ++ lib.platforms.darwin; # Maybe other Unix
description = "A portable compiler for the Scheme programming language";
longDescription = ''
CHICKEN is a compiler for the Scheme programming language.
CHICKEN produces portable and efficient C, supports almost all
of the R5RS Scheme language standard, and includes many
enhancements and extensions. CHICKEN runs on Linux, macOS,
Windows, and many Unix flavours.
'';
};
}

View file

@ -0,0 +1,21 @@
{ lib, newScope } :
let
callPackage = newScope self;
self = {
pkgs = self;
fetchegg = callPackage ./fetchegg { };
eggDerivation = callPackage ./eggDerivation.nix { };
chicken = callPackage ./chicken.nix {
bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; };
};
chickenEggs = lib.recurseIntoAttrs (callPackage ./eggs.nix { });
egg2nix = callPackage ./egg2nix.nix { };
};
in lib.recurseIntoAttrs self

View file

@ -0,0 +1,28 @@
{ lib, eggDerivation, fetchFromGitHub, chickenEggs }:
# Note: This mostly reimplements the default.nix already contained in
# the tarball. Is there a nicer way than duplicating code?
eggDerivation rec {
name = "egg2nix-${version}";
version = "0.5";
src = fetchFromGitHub {
owner = "the-kenny";
repo = "egg2nix";
rev = version;
sha256 = "sha256-5ov2SWVyTUQ6NHnZNPRywd9e7oIxHlVWv4uWbsNaj/s=";
};
buildInputs = with chickenEggs; [
matchable http-client
];
meta = {
description = "Generate nix-expression from CHICKEN scheme eggs";
homepage = "https://github.com/the-kenny/egg2nix";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ corngood ];
};
}

View file

@ -0,0 +1,45 @@
{ lib, stdenv, chicken, makeWrapper }:
{ name, src
, buildInputs ? []
, chickenInstallFlags ? []
, cscOptions ? []
, ...} @ args:
let
libPath = "${chicken}/var/lib/chicken/${toString chicken.binaryVersion}/";
overrides = import ./overrides.nix;
baseName = lib.getName name;
override = if builtins.hasAttr baseName overrides
then
builtins.getAttr baseName overrides
else
{};
in
stdenv.mkDerivation ({
name = "chicken-${name}";
propagatedBuildInputs = buildInputs;
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ chicken ];
CSC_OPTIONS = lib.concatStringsSep " " cscOptions;
CHICKEN_REPOSITORY = libPath;
CHICKEN_INSTALL_PREFIX = "$out";
installPhase = ''
runHook preInstall
chicken-install -p $out ${lib.concatStringsSep " " chickenInstallFlags}
for f in $out/bin/*
do
wrapProgram $f \
--set CHICKEN_REPOSITORY $CHICKEN_REPOSITORY \
--prefix CHICKEN_REPOSITORY_EXTRA : "$out/lib/chicken/${toString chicken.binaryVersion}/:$CHICKEN_REPOSITORY_EXTRA" \
--prefix CHICKEN_INCLUDE_PATH \; "$CHICKEN_INCLUDE_PATH;$out/share/" \
--prefix PATH : "$out/bin:${chicken}/bin:$CHICKEN_REPOSITORY_EXTRA:$CHICKEN_REPOSITORY"
done
runHook postInstall
'';
} // (builtins.removeAttrs args ["name" "buildInputs"]) // override)

View file

@ -0,0 +1,138 @@
{ pkgs }:
rec {
inherit (pkgs) eggDerivation fetchegg;
base64 = eggDerivation {
name = "base64-3.3.1";
src = fetchegg {
name = "base64";
version = "3.3.1";
sha256 = "0wmldiwwg1jpcn07wb906nc53si5j7sa83wgyq643xzqcx4v4x1d";
};
buildInputs = [
];
};
defstruct = eggDerivation {
name = "defstruct-1.6";
src = fetchegg {
name = "defstruct";
version = "1.6";
sha256 = "0lsgl32nmb5hxqiii4r3292cx5vqh50kp6v062nfiyid9lhrj0li";
};
buildInputs = [
];
};
http-client = eggDerivation {
name = "http-client-0.18";
src = fetchegg {
name = "http-client";
version = "0.18";
sha256 = "1b9x66kfcglld4xhm06vba00gw37vr07c859kj7lmwnk9nwhcplg";
};
buildInputs = [
intarweb
uri-common
simple-md5
sendfile
];
};
intarweb = eggDerivation {
name = "intarweb-1.7";
src = fetchegg {
name = "intarweb";
version = "1.7";
sha256 = "1arjgn5g4jfdzj3nlrhxk235qwf6k6jxr14yhnncnfbgdb820xp8";
};
buildInputs = [
defstruct
uri-common
base64
];
};
matchable = eggDerivation {
name = "matchable-3.7";
src = fetchegg {
name = "matchable";
version = "3.7";
sha256 = "1vc9rpb44fhn0n91hzglin986dw9zj87fikvfrd7j308z22a41yh";
};
buildInputs = [
];
};
sendfile = eggDerivation {
name = "sendfile-1.8.3";
src = fetchegg {
name = "sendfile";
version = "1.8.3";
sha256 = "036x4xdndx7qly94afnag5b9idd1yymdm8d832w2cy054y7lxqsi";
};
buildInputs = [
];
};
simple-md5 = eggDerivation {
name = "simple-md5-0.0.1";
src = fetchegg {
name = "simple-md5";
version = "0.0.1";
sha256 = "1h0b51p9wl1dl3pzs39hdq3hk2qnjgn8n750bgmh0651g4lzmq3i";
};
buildInputs = [
];
};
uri-common = eggDerivation {
name = "uri-common-1.4";
src = fetchegg {
name = "uri-common";
version = "1.4";
sha256 = "01ds1gixcn4rz657x3hr4rhw2496hsjff42ninw0k39l8i1cbh7c";
};
buildInputs = [
uri-generic
defstruct
matchable
];
};
uri-generic = eggDerivation {
name = "uri-generic-2.46";
src = fetchegg {
name = "uri-generic";
version = "2.46";
sha256 = "10ivf4xlmr6jcm00l2phq1y73hjv6g3qgr38ycc8rw56wv6sbm4g";
};
buildInputs = [
matchable
];
};
}

View file

@ -0,0 +1,5 @@
;; Eggs used by egg2nix
http-client
intarweb
matchable
uri-common

View file

@ -0,0 +1,9 @@
source $stdenv/setup
header "exporting egg ${eggName} (version $version) into $out"
mkdir -p $out
chicken-install -r "${eggName}:${version}"
cp -r ${eggName}/* $out/
stopNest

View file

@ -0,0 +1,25 @@
# Fetches a chicken egg from henrietta using `chicken-install -r'
# See: http://wiki.call-cc.org/chicken-projects/egg-index-4.html
{ lib, stdenvNoCC, chicken }:
{ name, version, md5 ? "", sha256 ? "" }:
if md5 != "" then
throw "fetchegg does not support md5 anymore, please use sha256"
else
stdenvNoCC.mkDerivation {
name = "chicken-${name}-export-${version}";
builder = ./builder.sh;
nativeBuildInputs = [ chicken ];
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = sha256;
inherit version;
eggName = name;
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
}

View file

@ -0,0 +1,10 @@
{
setup-helper = {
preBuild = ''
substituteInPlace setup-helper.setup \
--replace "(chicken-home)" \"$out/share/\"
cat setup-helper.setup
'';
};
}

View file

@ -0,0 +1,6 @@
addChickenRepositoryPath() {
addToSearchPathWithCustomDelimiter : CHICKEN_REPOSITORY_EXTRA "$1/lib/chicken/8/"
export CHICKEN_INCLUDE_PATH="$1/share${CHICKEN_INCLUDE_PATH:+;$CHICKEN_INCLUDE_PATH}"
}
addEnvHooks "$targetOffset" addChickenRepositoryPath

View file

@ -0,0 +1,73 @@
{ lib, stdenv, fetchurl, makeWrapper, darwin, bootstrap-chicken ? null }:
let
platform = with stdenv;
if isDarwin then "macosx"
else if isCygwin then "cygwin"
else if (isFreeBSD || isOpenBSD) then "bsd"
else if isSunOS then "solaris"
else "linux"; # Should be a sane default
in
stdenv.mkDerivation rec {
pname = "chicken";
version = "5.3.0";
binaryVersion = 11;
src = fetchurl {
url = "https://code.call-cc.org/releases/${version}/chicken-${version}.tar.gz";
sha256 = "sha256-w62Z2PnhftgQkS75gaw7DC4vRvsOzAM7XDttyhvbDXY=";
};
setupHook = lib.optional (bootstrap-chicken != null) ./setup-hook.sh;
# -fno-strict-overflow is not a supported argument in clang on darwin
hardeningDisable = lib.optionals stdenv.isDarwin ["strictoverflow"];
makeFlags = [
"PLATFORM=${platform}" "PREFIX=$(out)"
] ++ (lib.optionals stdenv.isDarwin [
"XCODE_TOOL_PATH=${darwin.binutils.bintools}/bin"
"C_COMPILER=$(CC)"
]);
buildInputs = [
makeWrapper
] ++ (lib.optionals (bootstrap-chicken != null) [
bootstrap-chicken
]);
postInstall = ''
for f in $out/bin/*
do
wrapProgram $f \
--prefix PATH : ${lib.makeBinPath [ stdenv.cc ]}
done
'';
doCheck = !stdenv.isDarwin;
postCheck = ''
./csi -R chicken.pathname -R chicken.platform \
-p "(assert (equal? \"${toString binaryVersion}\" (pathname-file (car (repository-path)))))"
'';
doInstallCheck = true;
installCheckPhase = ''
$out/bin/chicken -version
'';
meta = {
homepage = "https://call-cc.org/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ corngood ];
platforms = lib.platforms.unix;
description = "A portable compiler for the Scheme programming language";
longDescription = ''
CHICKEN is a compiler for the Scheme programming language.
CHICKEN produces portable and efficient C, supports almost all
of the R5RS Scheme language standard, and includes many
enhancements and extensions. CHICKEN runs on Linux, macOS,
Windows, and many Unix flavours.
'';
};
}

View file

@ -0,0 +1,21 @@
{ lib, newScope } :
let
callPackage = newScope self;
self = {
pkgs = self;
fetchegg = callPackage ./fetchegg { };
eggDerivation = callPackage ./eggDerivation.nix { };
chicken = callPackage ./chicken.nix {
bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; };
};
chickenEggs = lib.recurseIntoAttrs (callPackage ./eggs.nix { });
egg2nix = callPackage ./egg2nix.nix { };
};
in lib.recurseIntoAttrs self

View file

@ -0,0 +1,29 @@
{ lib, eggDerivation, fetchFromGitHub, chickenEggs }:
# Note: This mostly reimplements the default.nix already contained in
# the tarball. Is there a nicer way than duplicating code?
let
version = "c5-git";
in
eggDerivation {
src = fetchFromGitHub {
owner = "corngood";
repo = "egg2nix";
rev = "chicken-5";
sha256 = "1vfnhbcnyakywgjafhs0k5kpsdnrinzvdjxpz3fkwas1jsvxq3d1";
};
name = "egg2nix-${version}";
buildInputs = with chickenEggs; [
args matchable
];
meta = {
description = "Generate nix-expression from CHICKEN scheme eggs";
homepage = "https://github.com/the-kenny/egg2nix";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ corngood ];
};
}

View file

@ -0,0 +1,42 @@
{ lib, stdenv, chicken, makeWrapper }:
{ name, src
, buildInputs ? []
, chickenInstallFlags ? []
, cscOptions ? []
, ...} @ args:
let
overrides = import ./overrides.nix;
baseName = lib.getName name;
override = if builtins.hasAttr baseName overrides
then
builtins.getAttr baseName overrides
else
{};
in
stdenv.mkDerivation ({
name = "chicken-${name}";
propagatedBuildInputs = buildInputs;
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ chicken ];
CSC_OPTIONS = lib.concatStringsSep " " cscOptions;
installPhase = ''
runHook preInstall
export CHICKEN_INSTALL_PREFIX=$out
export CHICKEN_INSTALL_REPOSITORY=$out/lib/chicken/${toString chicken.binaryVersion}
chicken-install ${lib.concatStringsSep " " chickenInstallFlags}
for f in $out/bin/*
do
wrapProgram $f \
--prefix CHICKEN_REPOSITORY_PATH : "$out/lib/chicken/${toString chicken.binaryVersion}:$CHICKEN_REPOSITORY_PATH" \
--prefix CHICKEN_INCLUDE_PATH : "$CHICKEN_INCLUDE_PATH:$out/share" \
--prefix PATH : "$out/bin:${chicken}/bin:$CHICKEN_REPOSITORY_PATH"
done
runHook postInstall
'';
} // (builtins.removeAttrs args ["name" "buildInputs"]) // override)

View file

@ -0,0 +1,551 @@
{ pkgs, stdenv }:
rec {
inherit (pkgs) eggDerivation fetchegg;
address-info = eggDerivation {
name = "address-info-1.0.5";
src = fetchegg {
name = "address-info";
version = "1.0.5";
sha256 = "1nv87ghfv8szmi2l0rybrgrds6fs5w6jxafqslnzw0mw5sfj6jyk";
};
buildInputs = [
srfi-1
];
};
apropos = eggDerivation {
name = "apropos-3.6.0";
src = fetchegg {
name = "apropos";
version = "3.6.0";
sha256 = "0jq5d4zijbf5dw2vsfn89smp7zjpgp82y5hs10xkysf831x7l551";
};
buildInputs = [
srfi-1
srfi-13
check-errors
string-utils
symbol-utils
];
};
args = eggDerivation {
name = "args-1.6.0";
src = fetchegg {
name = "args";
version = "1.6.0";
sha256 = "1y9sznh4kxqxvhd8k44bjx0s7xspp52sx4bn8i8i0f8lwch6r2g4";
};
buildInputs = [
srfi-1
srfi-13
srfi-37
];
};
base64 = eggDerivation {
name = "base64-1.0";
src = fetchegg {
name = "base64";
version = "1.0";
sha256 = "01lid9wxf94nr7gmskamxlfngack1hyxig8rl9swwgnbmz9qgysi";
};
buildInputs = [
srfi-13
];
};
check-errors = eggDerivation {
name = "check-errors-3.2.0";
src = fetchegg {
name = "check-errors";
version = "3.2.0";
sha256 = "0d0hpq1nmwyvbg162bqzgk62f70rin0pxsr5a3pgx6xin5i3ngah";
};
buildInputs = [
];
};
defstruct = eggDerivation {
name = "defstruct-2.0";
src = fetchegg {
name = "defstruct";
version = "2.0";
sha256 = "0q1v1gdwqlpmwcsa4jnqldfqky9k7kvb83qgkhdyqym52bm5aln8";
};
buildInputs = [
srfi-1
];
};
feature-test = eggDerivation {
name = "feature-test-0.2.0";
src = fetchegg {
name = "feature-test";
version = "0.2.0";
sha256 = "1dxdisv64d8alg6r45cwxf5gmdpcvql1hvlq808lgwphd7kvfpgr";
};
buildInputs = [
];
};
foreigners = eggDerivation {
name = "foreigners-1.5";
src = fetchegg {
name = "foreigners";
version = "1.5";
sha256 = "1mm91y61nlawgb7iqdrkz2fi9sc3fic07f5m1ig541b2hbscfiqy";
};
buildInputs = [
matchable
];
};
intarweb = eggDerivation {
name = "intarweb-2.0.1";
src = fetchegg {
name = "intarweb";
version = "2.0.1";
sha256 = "0md226jikqhj993cw17588ipmnz0v7l34zrvylamyrs6zbvj3scm";
};
buildInputs = [
srfi-1
srfi-13
srfi-14
defstruct
uri-common
base64
];
};
iset = eggDerivation {
name = "iset-2.2";
src = fetchegg {
name = "iset";
version = "2.2";
sha256 = "0yfkcd07cw6xnnqfbbvjy81x0vc54k40vdjp2m7gwxx64is6m3rz";
};
buildInputs = [
];
};
json = eggDerivation {
name = "json-1.6";
src = fetchegg {
name = "json";
version = "1.6";
sha256 = "0sb8285dqrm27c8zaqfzc0gixvfmvf0cq2nbza8c4z7j5snxzs2w";
};
buildInputs = [
packrat
srfi-1
srfi-69
];
};
matchable = eggDerivation {
name = "matchable-1.1";
src = fetchegg {
name = "matchable";
version = "1.1";
sha256 = "084hm5dvbvgnpb32ispkp3hjili8z02hamln860r99jx68jx6j2v";
};
buildInputs = [
];
};
r7rs = eggDerivation {
name = "r7rs-1.0.5";
src = fetchegg {
name = "r7rs";
version = "1.0.5";
sha256 = "0zyi1z4m1995hm2wfc5wpi8jjgxcwk03qknq5v2ygff3akxazsf6";
};
buildInputs = [
matchable
srfi-1
srfi-13
];
};
memory-mapped-files = eggDerivation {
name = "memory-mapped-files-0.4";
src = fetchegg {
name = "memory-mapped-files";
version = "0.4";
sha256 = "0by3r18bj9fs0bs9w5czx84vssmr58br3x7pz1m3myb4mns3mpsc";
};
buildInputs = [
];
};
message-digest-primitive = eggDerivation {
name = "message-digest-primitive-4.3.2";
src = fetchegg {
name = "message-digest-primitive";
version = "4.3.2";
sha256 = "1wfmyyp1fv0sz70m0rgzbhkiqgzjc15ppz7fwmpnxg12rvfzdvq0";
};
buildInputs = [
check-errors
];
};
miscmacros = eggDerivation {
name = "miscmacros-1.0";
src = fetchegg {
name = "miscmacros";
version = "1.0";
sha256 = "0n2ia4ib4f18hcbkm5byph07ncyx61pcpfp2qr5zijf8ykp8nbvr";
};
buildInputs = [
];
};
packrat = eggDerivation {
name = "packrat-1.5";
src = fetchegg {
name = "packrat";
version = "1.5";
sha256 = "0hfnh57a8yga3byrk8522al5wdj7dyz48lixvvcgnsn3vdy333hq";
};
buildInputs = [
srfi-1
];
};
regex = eggDerivation {
name = "regex-2.0";
src = fetchegg {
name = "regex";
version = "2.0";
sha256 = "0qgqrrdr95yqggw8xyvb693nhizwqvf1fp9cjx9p3z80c4ih8j4j";
};
buildInputs = [
];
};
sendfile = eggDerivation {
name = "sendfile-1.8.3";
src = fetchegg {
name = "sendfile";
version = "1.8.3";
sha256 = "0acmydjxlrbq7bdspmrzv9q9l3gh4xxnbpi5g1d5mz1g2mjwgm63";
};
buildInputs = [
memory-mapped-files
];
};
sha2 = eggDerivation {
name = "sha2-4.0.5";
src = fetchegg {
name = "sha2";
version = "4.0.5";
sha256 = "020yc41gkpg2s48v5n1nnq02dii340yly2y1zsi71bbfbkai2vcs";
};
buildInputs = [
message-digest-primitive
];
};
socket = eggDerivation {
name = "socket-0.3.3";
src = fetchegg {
name = "socket";
version = "0.3.3";
sha256 = "04wfxrwjizvf1jdpfqp3r7381rp9lscrm3z21ihq2dc2lfzjgrxw";
};
buildInputs = [
srfi-13
srfi-18
foreigners
feature-test
];
};
spiffy = eggDerivation {
name = "spiffy-6.3";
src = fetchegg {
name = "spiffy";
version = "6.3";
sha256 = "0f22gfdyysgbm3q6cjibn1z1yavks3imxi1mxcyfmms3x91k5k3c";
};
buildInputs = [
intarweb
uri-common
uri-generic
sendfile
srfi-1
srfi-13
srfi-14
srfi-18
];
};
srfi-1 = eggDerivation {
name = "srfi-1-0.5.1";
src = fetchegg {
name = "srfi-1";
version = "0.5.1";
sha256 = "15x0ajdkw5gb3vgs8flzh5g0pzl3wmcpf11iimlm67mw6fxc8p7j";
};
buildInputs = [
];
};
srfi-13 = eggDerivation {
name = "srfi-13-0.3.1";
src = fetchegg {
name = "srfi-13";
version = "0.3.1";
sha256 = "12ryxs3w3las0wjdh0yp52g1xmyq1fb48xi3i26l5a9sfx7gbilp";
};
buildInputs = [
srfi-14
];
};
srfi-14 = eggDerivation {
name = "srfi-14-0.2.1";
src = fetchegg {
name = "srfi-14";
version = "0.2.1";
sha256 = "0gc33cx4xll9vsf7fm8jvn3gc0604kn3bbi6jfn6xscqp86kqb9p";
};
buildInputs = [
];
};
srfi-145 = eggDerivation {
name = "srfi-145-0.1";
src = fetchegg {
name = "srfi-145";
version = "0.1";
sha256 = "1r4278xhpmm8gww64j6akpyv3qjnn14b6nsisyb9qm7yx3pkpim9";
};
buildInputs = [
];
};
srfi-189 = eggDerivation {
name = "srfi-189-0.1";
src = fetchegg {
name = "srfi-189";
version = "0.1";
sha256 = "1nmrywpi9adi5mm1vcbxxsgw0j3v6m7s4j1mii7icj83xn81cgvx";
};
buildInputs = [
r7rs
srfi-1
srfi-145
];
};
srfi-18 = eggDerivation {
name = "srfi-18-0.1.6";
src = fetchegg {
name = "srfi-18";
version = "0.1.6";
sha256 = "00lykm5lqbrcxl3dab9dqwimpgm36v4ys2957k3vdlg4xdb1abfa";
};
buildInputs = [
];
};
srfi-37 = eggDerivation {
name = "srfi-37-1.4";
src = fetchegg {
name = "srfi-37";
version = "1.4";
sha256 = "17f593497n70gldkj6iab6ilgryiqar051v6azn1szhnm1lk7dwd";
};
buildInputs = [
];
};
srfi-69 = eggDerivation {
name = "srfi-69-0.4.1";
src = fetchegg {
name = "srfi-69";
version = "0.4.1";
sha256 = "1l102kppncz27acsr4jyi46q0r7g2lb6gdbkd6p3h1xmvwcnk2hl";
};
buildInputs = [
];
};
string-utils = eggDerivation {
name = "string-utils-2.4.0";
src = fetchegg {
name = "string-utils";
version = "2.4.0";
sha256 = "09m3s0p199r2nmvc8qnqvbxjbq967gvwqrzp236wsw3hdcil6p8v";
};
buildInputs = [
srfi-1
srfi-13
srfi-69
miscmacros
check-errors
utf8
];
};
symbol-utils = eggDerivation {
name = "symbol-utils-2.1.0";
src = fetchegg {
name = "symbol-utils";
version = "2.1.0";
sha256 = "17nq8bj18f3bbf3mdfx1m8agy97izn1xcl8ymvgvvd5g384b2xil";
};
buildInputs = [
check-errors
];
};
tcp6 = eggDerivation {
name = "tcp6-0.2.1";
src = fetchegg {
name = "tcp6";
version = "0.2.1";
sha256 = "14dynnjgac28f46v781hi6kam326q6rh57pf0pvl0chdva4hlf3q";
};
buildInputs = [
socket
srfi-1
];
};
uri-common = eggDerivation {
name = "uri-common-2.0";
src = fetchegg {
name = "uri-common";
version = "2.0";
sha256 = "07rq7ppkyk3i85vqspc048pnj6gmjhj236z00chslli9xybqkgrd";
};
buildInputs = [
uri-generic
defstruct
matchable
srfi-1
srfi-13
srfi-14
];
};
uri-generic = eggDerivation {
name = "uri-generic-3.2";
src = fetchegg {
name = "uri-generic";
version = "3.2";
sha256 = "1lpvnk1mnhmrga149km7ygpy7fkq7z2pvw0mvpx2aql03l8gpdsj";
};
buildInputs = [
matchable
srfi-1
srfi-14
];
};
utf8 = eggDerivation {
name = "utf8-3.6.2";
src = fetchegg {
name = "utf8";
version = "3.6.2";
sha256 = "10wzp3qmwik4gx3hhaqm2n83wza0rllgy57363h5ccv8fga5nnm6";
};
buildInputs = [
srfi-69
iset
regex
];
};
}

View file

@ -0,0 +1,11 @@
;; Eggs used by egg2nix
args
matchable
apropos
spiffy
json
tcp6
sha2
;; other eggs to include in nixpkgs
srfi-189

View file

@ -0,0 +1,10 @@
source $stdenv/setup
header "exporting egg ${eggName} (version $version) into $out"
mkdir -p $out
CHICKEN_EGG_CACHE=. chicken-install -r "${eggName}:${version}"
rm ${eggName}/{STATUS,TIMESTAMP}
cp -r ${eggName}/* $out/
stopNest

View file

@ -0,0 +1,25 @@
# Fetches a chicken egg from henrietta using `chicken-install -r'
# See: http://wiki.call-cc.org/chicken-projects/egg-index-5.html
{ lib, stdenvNoCC, chicken }:
{ name, version, md5 ? "", sha256 ? "" }:
if md5 != "" then
throw "fetchegg does not support md5 anymore, please use sha256"
else
stdenvNoCC.mkDerivation {
name = "chicken-${name}-export";
builder = ./builder.sh;
nativeBuildInputs = [ chicken ];
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = sha256;
inherit version;
eggName = name;
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
}

View file

@ -0,0 +1,2 @@
{
}

View file

@ -0,0 +1,6 @@
addChickenRepositoryPath() {
addToSearchPathWithCustomDelimiter : CHICKEN_REPOSITORY_PATH "$1/lib/chicken/11"
addToSearchPathWithCustomDelimiter : CHICKEN_INCLUDE_PATH "$1/share"
}
addEnvHooks "$targetOffset" addChickenRepositoryPath

View file

@ -0,0 +1,33 @@
{ lib, stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "ciao";
version = "1.21.0-m1";
src = fetchFromGitHub {
owner = "ciao-lang";
repo = "ciao";
rev = "v${version}";
sha256 = "sha256-o9EQS7KsoTg458Uw+1shgKE6NlZO495XE/rLq6/1S4g=";
};
configurePhase = ''
./ciao-boot.sh configure --instype=global --prefix=$prefix
'';
buildPhase = ''
./ciao-boot.sh build
'';
installPhase = ''
./ciao-boot.sh install
'';
meta = with lib; {
homepage = "https://ciao-lang.org/";
description = "A general purpose, multi-paradigm programming language in the Prolog family";
license = licenses.lgpl21;
maintainers = with maintainers; [ suhr ];
platforms = platforms.unix;
broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/staging-next/ciao.x86_64-darwin
};
}

View file

@ -0,0 +1,129 @@
{ lib, stdenv, fetchFromGitHub, fetchFromGitLab
, llvmPackages
, cmake, boehmgc, gmp, zlib, ncurses, boost, libelf
, python3, git, sbcl
, wafHook
}:
let
sicl = fetchFromGitHub {
owner = "Bike";
repo = "SICL";
rev = "78052fb5f02a3814eb7295f3dcac09f21f98702b";
sha256 = "0wnmp40310ls6q9gkr5ysfkj2qirq26ljjicnkqifc53mm0ghz4i";
};
cst = fetchFromGitHub {
owner = "robert-strandh";
repo = "Concrete-Syntax-Tree";
rev = "8d8c5abf8f1690cb2b765241d81c2eb86d60d77e";
sha256 = "1rs8a5nbfffdyli126sccd0z1a8h5axp222b4pgwvgfxsb9w7g3s";
};
c2mop = fetchFromGitHub {
owner = "pcostanza";
repo = "closer-mop";
rev = "d4d1c7aa6aba9b4ac8b7bb78ff4902a52126633f";
sha256 = "1amcv0f3vbsq0aqhai7ki5bi367giway1pbfxyc47r7q3hq5hw3c";
};
acclimation = fetchFromGitHub {
owner = "robert-strandh";
repo = "Acclimation";
rev = "dd15c86b0866fc5d8b474be0da15c58a3c04c45c";
sha256 = "0ql224qs3zgflvdhfbca621v3byhhqfb71kzy70bslyczxv1bsh2";
};
eclector = fetchFromGitHub {
owner = "robert-strandh";
repo = "Eclector";
rev = "287ce817c0478668bd389051d2cc6b26ddc62ec9";
sha256 = "0v7mgkq49ddyx5vvsradcp772y5l7cv9xrll3280hyginpm8w6q3";
};
alexandria = fetchFromGitHub {
owner = "clasp-developers";
repo = "alexandria";
rev = "e5c54bc30b0887c237bde2827036d17315f88737";
sha256 = "14h7a9fwimiw9gqxjm2h47d95bfhrm7b81f6si7x8vy18d78fn4g";
};
mps = fetchFromGitHub {
owner = "Ravenbrook";
repo = "mps";
rev = "b8a05a3846430bc36c8200f24d248c8293801503";
sha256 = "1q2xqdw832jrp0w9yhgr8xihria01j4z132ac16lr9ssqznkprv6";
};
asdf = fetchFromGitLab {
domain = "gitlab.common-lisp.net";
owner = "asdf";
repo = "asdf";
rev = "3.3.1.2";
sha256 = "0ljr2vc0cb2wrijcyjmp9hcaj2bdhh05ci3zf4f43hdq6i2fgg6g";
};
in
stdenv.mkDerivation rec {
pname = "clasp";
version = "0.8.99.20181128";
src = fetchFromGitHub {
owner = "drmeister";
repo = "clasp";
rev = "2f2b52ccb750048460562b5987a7eaf7a1aa4445";
sha256 = "0ra55vdnk59lygwzlxr5cg16vb9c45fmg59wahaxclwm461w7fwz";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake python3 git sbcl wafHook ] ++
(with llvmPackages; [ llvm clang ]);
buildInputs = with llvmPackages;
(
builtins.map (x: lib.overrideDerivation x
(x: {NIX_CFLAGS_COMPILE= (x.NIX_CFLAGS_COMPILE or "") + " -frtti"; }))
[ llvm clang clang-unwrapped clang ]) ++
[
gmp zlib ncurses
boost boehmgc libelf
(boost.override {enableStatic = true; enableShared = false;})
(lib.overrideDerivation boehmgc
(x: {configureFlags = (x.configureFlags or []) ++ ["--enable-static"];}))
];
NIX_CXXSTDLIB_COMPILE = " -frtti ";
postPatch = ''
echo "
PREFIX = '$out'
" | sed -e 's/^ *//' > wscript.config
mkdir -p src/lisp/kernel/contrib/sicl
mkdir -p src/lisp/kernel/contrib/Concrete-Syntax-Tree
mkdir -p src/lisp/kernel/contrib/closer-mop
mkdir -p src/lisp/kernel/contrib/Acclimation
mkdir -p src/lisp/kernel/contrib/Eclector
mkdir -p src/lisp/kernel/contrib/alexandria
mkdir -p src/mps
mkdir -p src/lisp/modules/asdf
cp -rfT "${sicl}" src/lisp/kernel/contrib/sicl
cp -rfT "${cst}" src/lisp/kernel/contrib/Concrete-Syntax-Tree
cp -rfT "${c2mop}" src/lisp/kernel/contrib/closer-mop
cp -rfT "${acclimation}" src/lisp/kernel/contrib/Acclimation
cp -rfT "${eclector}" src/lisp/kernel/contrib/Eclector
cp -rfT "${alexandria}" src/lisp/kernel/contrib/alexandria
cp -rfT "${mps}" src/mps
cp -rfT "${asdf}" src/lisp/modules/asdf
chmod -R u+rwX src
( cd src/lisp/modules/asdf; make )
'';
buildTargets = "build_cboehm";
installTargets = "install_cboehm";
CLASP_SRC_DONTTOUCH = "true";
meta = {
description = "A Common Lisp implementation based on LLVM with C++ integration";
license = lib.licenses.lgpl21Plus ;
maintainers = [lib.maintainers.raskin];
platforms = lib.platforms.linux;
# Large, long to build, a private build of clang is needed, a prerelease.
hydraPlatforms = [];
homepage = "https://github.com/drmeister/clasp";
};
}

View file

@ -0,0 +1,17 @@
The clean command line compiler clm checks modules for freshness by comparing timestamps.
However, in chroot builds all files installed have the same timestamp. This leads to clm
trying to rebuild the library modules distributed with the Clean install every time a user
compiles any file. This patch changes the freshness check to use less than instead of less
than or equal to in order to avoid this.
--- clean-upstream/src/tools/clm/clm.c 2010-12-10 06:12:17.000000000 -0430
+++ clean/src/tools/clm/clm.c 2010-12-25 10:29:09.840675925 -0430
@@ -250,7 +250,7 @@
|| (t1.dwHighDateTime==t2.dwHighDateTime && (unsigned)(t1.dwLowDateTime)<=(unsigned)(t2.dwLowDateTime)))
#else
typedef unsigned long FileTime;
-# define FILE_TIME_LE(t1,t2) (t1<=t2)
+# define FILE_TIME_LE(t1,t2) (t1<t2)
#endif
typedef struct project_node {

View file

@ -0,0 +1,53 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation {
pname = "clean";
version = "3.0";
src =
if stdenv.hostPlatform.system == "i686-linux" then (fetchurl {
url = "https://ftp.cs.ru.nl/Clean/Clean30/linux/clean3.0_32_boot.tar.gz";
sha256 = "0cjxv3vqrg6pz3aicwfdz1zyhk0q650464j3qyl0wzaikh750010";
})
else if stdenv.hostPlatform.system == "x86_64-linux" then (fetchurl {
url = "https://ftp.cs.ru.nl/Clean/Clean30/linux/clean3.0_64_boot.tar.gz";
sha256 = "06k283y9adbi28f78k3m5ssg6py73qqkz3sm8dgxc89drv4krl2i";
})
else throw "Architecture not supported";
hardeningDisable = [ "format" "pic" ];
# clm uses timestamps of dcl, icl, abc and o files to decide what must be rebuild
# and for chroot builds all of the library files will have equal timestamps. This
# makes clm try to rebuild the library modules (and fail due to absence of write permission
# on the Nix store) every time any file is compiled.
patches = [ ./chroot-build-support-do-not-rebuild-equal-timestamps.patch ];
preBuild = ''
substituteInPlace Makefile --replace 'INSTALL_DIR = $(CURRENTDIR)' 'INSTALL_DIR = '$out
substituteInPlace src/tools/clm/clm.c --replace '/usr/bin/gcc' $(type -p gcc)
substituteInPlace src/tools/clm/clm.c --replace '/usr/bin/as' $(type -p as)
cd src
'';
postBuild = ''
cd ..
'';
meta = {
description = "General purpose, state-of-the-art, pure and lazy functional programming language";
longDescription = ''
Clean is a general purpose, state-of-the-art, pure and lazy functional
programming language designed for making real-world applications. Some
of its most notable language features are uniqueness typing, dynamic typing,
and generic functions.
'';
homepage = "http://wiki.clean.cs.ru.nl/Clean";
license = lib.licenses.bsd2;
maintainers = [ lib.maintainers.erin ];
platforms = [ "i686-linux" "x86_64-linux" ];
};
}

View file

@ -0,0 +1,31 @@
{ lib, stdenv, fetchurl, jre, makeWrapper }:
stdenv.mkDerivation rec {
pname = "closure-compiler";
version = "20220202";
src = fetchurl {
url = "mirror://maven/com/google/javascript/closure-compiler/v${version}/closure-compiler-v${version}.jar";
sha256 = "sha256-I9kcK9oL6AMStI7eGfruJ+CYQuAsVsixTzkh0JWJrw8=";
};
dontUnpack = true;
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];
installPhase = ''
mkdir -p $out/share/java $out/bin
cp ${src} $out/share/java/closure-compiler-v${version}.jar
makeWrapper ${jre}/bin/java $out/bin/closure-compiler \
--add-flags "-jar $out/share/java/closure-compiler-v${version}.jar"
'';
meta = with lib; {
description = "A tool for making JavaScript download and run faster";
homepage = "https://developers.google.com/closure/compiler/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.asl20;
platforms = platforms.all;
};
}

View file

@ -0,0 +1,57 @@
{ lib, stdenv, fetchurl, python3, runtimeShell }:
stdenv.mkDerivation rec {
pname = "cmdstan";
version = "2.29.2";
# includes stanc binaries needed to build cmdstand
src = fetchurl {
url = "https://github.com/stan-dev/cmdstan/releases/download/v${version}/cmdstan-${version}.tar.gz";
sha256 = "sha256-VntTH6c//fcGyqF+szROHftB6GmTyvi6QIdf+RAzUVM=";
};
buildFlags = [ "build" ];
enableParallelBuilding = true;
doCheck = true;
checkInputs = [ python3 ];
postPatch = ''
substituteInPlace stan/lib/stan_math/make/libraries \
--replace "/usr/bin/env bash" "bash"
patchShebangs .
'';
checkPhase = ''
./runCmdStanTests.py -j$NIX_BUILD_CORES src/test/interface
'';
installPhase = ''
mkdir -p $out/opt $out/bin
cp -r . $out/opt/cmdstan
ln -s $out/opt/cmdstan/bin/stanc $out/bin/stanc
ln -s $out/opt/cmdstan/bin/stansummary $out/bin/stansummary
cat > $out/bin/stan <<EOF
#!${runtimeShell}
make -C $out/opt/cmdstan "\$(realpath "\$1")"
EOF
chmod a+x $out/bin/stan
'';
# Hack to ensure that patchelf --shrink-rpath get rids of a $TMPDIR reference.
preFixup = "rm -rf $(pwd)";
meta = {
broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
description = "Command-line interface to Stan";
longDescription = ''
Stan is a probabilistic programming language implementing full Bayesian
statistical inference with MCMC sampling (NUTS, HMC), approximate Bayesian
inference with Variational inference (ADVI) and penalized maximum
likelihood estimation with Optimization (L-BFGS).
'';
homepage = "https://mc-stan.org/interfaces/cmdstan.html";
license = lib.licenses.bsd3;
platforms = lib.platforms.all;
};
}

View file

@ -0,0 +1,44 @@
{lib, stdenv, fetchurl}:
let
inherit (stdenv.hostPlatform) system;
version = "21b";
downloadUrl = arch:
"http://common-lisp.net/project/cmucl/downloads/release/" +
"${version}/cmucl-${version}-${arch}.tar.bz2";
fetchDist = {arch, sha256}: fetchurl {
url = downloadUrl arch;
inherit sha256;
};
dist =
if system == "i686-linux" then fetchDist {
arch = "x86-linux";
sha256 = "13k3b5ygnbsq6n2i3r5i4ljw3r1qlskn2p5f4x9hrx6vfvbb3k7a";
}
else throw "Unsupported platform for cmucl.";
in
stdenv.mkDerivation {
pname = "cmucl-binary";
inherit version;
buildCommand = ''
mkdir -p $out
tar -C $out -xjf ${dist}
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/bin/lisp
'';
meta = {
description = "The CMU implementation of Common Lisp";
longDescription = ''
CMUCL is a free implementation of the Common Lisp programming language
which runs on most major Unix platforms. It mainly conforms to the
ANSI Common Lisp standard.
'';
license = lib.licenses.free; # public domain
homepage = "http://www.cons.org/cmucl/";
maintainers = [lib.maintainers.tohl];
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,13 @@
--- a/configure.ac 2019-07-09 22:41:03.166948024 -0700
+++ b/configure.ac 2019-07-09 22:41:16.699948056 -0700
@@ -40,9 +40,7 @@
dnl Choose a default for the build_manual var. If the dist file is present in
dnl the root then default to no, otherwise go for it.
-AC_CHECK_FILES( [$srcdir/DIST],
- [. $srcdir/DIST;],
- [build_manual=yes; ] )
+build_manual=yes;
dnl Set to true if the manual should be built.
AM_CONDITIONAL(BUILD_MANUAL, [test "x$build_manual" = "xyes"])

View file

@ -0,0 +1,30 @@
{ lib, stdenv, fetchurl, makeWrapper, gcc, asciidoc, autoreconfHook }:
stdenv.mkDerivation rec {
pname = "colm";
version = "0.13.0.7";
src = fetchurl {
url = "https://www.colm.net/files/colm/${pname}-${version}.tar.gz";
sha256 = "0f76iri173l2wja2v7qrwmf958cqwh5g9x4bhj2z8wknmlla6gz4";
};
patches = [ ./cross-compile.patch ];
nativeBuildInputs = [ makeWrapper asciidoc autoreconfHook ];
doCheck = true;
postInstall = ''
wrapProgram $out/bin/colm \
--prefix PATH ":" ${gcc}/bin
'';
meta = with lib; {
description = "A programming language for the analysis and transformation of computer languages";
homepage = "http://www.colm.net/open-source/colm";
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ pSub ];
};
}

View file

@ -0,0 +1,49 @@
{ lib, stdenv
, fetchzip
, pkg-config
, autoPatchelfHook
, installShellFiles
, ocl-icd
, zlib
}:
stdenv.mkDerivation rec {
pname = "computecpp";
version = "2.3.0";
src = fetchzip {
url = "https://computecpp.codeplay.com/downloads/computecpp-ce/${version}/x86_64-linux-gnu.tar.gz";
hash = "sha256-AUHSls4BOX20PVKzDAp3RqpeRDwgbgYzz6CRvRN+kdk=";
stripRoot = true;
};
dontStrip = true;
buildInputs = [ stdenv.cc.cc.lib ocl-icd zlib ];
nativeBuildInputs = [ autoPatchelfHook pkg-config installShellFiles ];
installPhase = ''
runHook preInstall
find ./lib -type f -exec install -D -m 0755 {} -t $out/lib \;
find ./bin -type l -exec install -D -m 0755 {} -t $out/bin \;
find ./bin -type f -exec install -D -m 0755 {} -t $out/bin \;
find ./doc -type f -exec install -D -m 0644 {} -t $out/doc \;
find ./include -type f -exec install -D -m 0644 {} -t $out/include \;
runHook postInstall
'';
passthru = {
isClang = true;
};
meta = with lib; {
description =
"Accelerate Complex C++ Applications on Heterogeneous Compute Systems using Open Standards";
homepage = "https://www.codeplay.com/products/computesuite/computecpp";
license = licenses.unfree;
maintainers = with maintainers; [ davidtwco ];
platforms = [ "x86_64-linux" ];
};
}

View file

@ -0,0 +1,42 @@
{ llvmPackages
, lib
, fetchFromGitHub
, cmake
}:
llvmPackages.stdenv.mkDerivation rec {
pname = "cone";
version = "unstable-2021-07-25";
src = fetchFromGitHub {
owner = "jondgoodwin";
repo = pname;
rev = "5feaabc342bcff3755f638a7e25155cd12127592";
sha256 = "CTDS83AWtuDY5g6NDn7O2awrYsKFf3Kp35FkMEjfbVw=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
llvmPackages.llvm
];
postPatch = ''
sed -i CMakeLists.txt \
-e 's/LLVM 7/LLVM/' \
-e '/AVR/d'
'';
installPhase = ''
install -Dm755 conec $out/bin/conec
install -Dm644 libconestd.a $out/lib/libconestd.a
'';
meta = with lib; {
description = "Cone Programming Language";
homepage = "https://cone.jondgoodwin.com";
license = licenses.mit;
maintainers = with maintainers; [ luc65r ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,32 @@
{ lib, stdenv
, fetchurl
, libffi
}:
stdenv.mkDerivation rec {
pname = "copper";
version = "4.6";
src = fetchurl {
url = "https://tibleiz.net/download/copper-${version}-src.tar.gz";
sha256 = "sha256-tyxAMJp4H50eBz8gjt2O3zj5fq6nOIXKX47wql8aUUg=";
};
buildInputs = [
libffi
];
postPatch = ''
patchShebangs .
'';
buildPhase = ''
make BACKEND=elf64 boot-elf64
make BACKEND=elf64 COPPER=stage3/copper-elf64 copper-elf64
'';
installPhase = ''
make BACKEND=elf64 install prefix=$out
'';
meta = with lib; {
description = "Simple imperative language, statically typed with type inference and genericity";
homepage = "https://tibleiz.net/copper/";
license = licenses.bsd2;
platforms = platforms.x86_64;
broken = stdenv.isDarwin;
};
}

View file

@ -0,0 +1,159 @@
{ stdenv
, lib
, crystal
, shards
, git
, pkg-config
, which
, linkFarm
, fetchgit
, fetchFromGitHub
, installShellFiles
, removeReferencesTo
}:
{
# Some projects do not include a lock file, so you can pass one
lockFile ? null
# Generate shards.nix with `nix-shell -p crystal2nix --run crystal2nix` in the projects root
, shardsFile ? null
# We support different builders. To make things more straight forward, make it
# user selectable instead of trying to autodetect
, format ? "make"
, installManPages ? true
# Specify binaries to build in the form { foo.src = "src/foo.cr"; }
# The default `crystal build` options can be overridden with { foo.options = [ "--optionname" ]; }
, crystalBinaries ? { }
, enableParallelBuilding ? true
, ...
}@args:
assert (builtins.elem format [ "make" "crystal" "shards" ]);
let
mkDerivationArgs = builtins.removeAttrs args [
"format"
"installManPages"
"lockFile"
"shardsFile"
"crystalBinaries"
];
crystalLib = linkFarm "crystal-lib" (lib.mapAttrsToList
(name: value: {
inherit name;
path =
if (builtins.hasAttr "url" value)
then fetchgit value
else fetchFromGitHub value;
})
(import shardsFile));
defaultOptions = [ "--release" "--progress" "--verbose" "--no-debug" ];
buildDirectly = shardsFile == null || crystalBinaries != { };
mkCrystalBuildArgs = bin: attrs:
lib.concatStringsSep " " ([
"crystal"
"build"
] ++ lib.optionals enableParallelBuilding [
"--threads"
"$NIX_BUILD_CORES"
] ++ [
"-o"
bin
(attrs.src or (throw "No source file for crystal binary ${bin} provided"))
(lib.concatStringsSep " " (attrs.options or defaultOptions))
]);
in
stdenv.mkDerivation (mkDerivationArgs // {
configurePhase = args.configurePhase or lib.concatStringsSep "\n"
(
[
"runHook preConfigure"
]
++ lib.optional (lockFile != null) "cp ${lockFile} ./shard.lock"
++ lib.optionals (shardsFile != null) [
"test -e lib || mkdir lib"
"for d in ${crystalLib}/*; do ln -s $d lib/; done"
"cp shard.lock lib/.shards.info"
]
++ [ "runHook postConfigure" ]
);
CRFLAGS = lib.concatStringsSep " " defaultOptions;
PREFIX = placeholder "out";
inherit enableParallelBuilding;
strictDeps = true;
buildInputs = args.buildInputs or [ ] ++ [ crystal ];
nativeBuildInputs = args.nativeBuildInputs or [ ] ++ [
crystal
git
installShellFiles
removeReferencesTo
pkg-config
which
] ++ lib.optional (format != "crystal") shards;
buildPhase = args.buildPhase or (lib.concatStringsSep "\n" ([
"runHook preBuild"
] ++ lib.optional (format == "make")
"make \${buildTargets:-build} $makeFlags"
++ lib.optionals (format == "crystal") (lib.mapAttrsToList mkCrystalBuildArgs crystalBinaries)
++ lib.optional (format == "shards")
"shards build --local --production ${lib.concatStringsSep " " (args.options or defaultOptions)}"
++ [ "runHook postBuild" ]));
installPhase = args.installPhase or (lib.concatStringsSep "\n" ([
"runHook preInstall"
] ++ lib.optional (format == "make")
"make \${installTargets:-install} $installFlags"
++ lib.optionals (format == "crystal") (map
(bin: ''
install -Dm555 ${lib.escapeShellArgs [ bin "${placeholder "out"}/bin/${bin}" ]}
'')
(lib.attrNames crystalBinaries))
++ lib.optional (format == "shards")
"install -Dm555 bin/* -t $out/bin"
++ [
''
for f in README* *.md LICENSE; do
test -f $f && install -Dm444 $f -t $out/share/doc/${args.pname}
done
''
] ++ (lib.optional installManPages ''
if [ -d man ]; then
installManPage man/*.?
fi
'') ++ [
"remove-references-to -t ${lib.getLib crystal} $out/bin/*"
"runHook postInstall"
]));
doCheck = args.doCheck or true;
checkPhase = args.checkPhase or (lib.concatStringsSep "\n" ([
"runHook preCheck"
] ++ lib.optional (format == "make")
"make \${checkTarget:-test} $checkFlags"
++ lib.optional (format != "make")
"crystal \${checkTarget:-spec} $checkFlags"
++ [ "runHook postCheck" ]));
doInstallCheck = args.doInstallCheck or true;
installCheckPhase = args.installCheckPhase or ''
for f in $out/bin/*; do
$f --help > /dev/null
done
'';
meta = args.meta or { } // {
platforms = args.meta.platforms or crystal.meta.platforms;
};
})

View file

@ -0,0 +1,266 @@
{ stdenv
, callPackage
, fetchFromGitHub
, fetchurl
, lib
# Dependencies
, boehmgc
, coreutils
, git
, gmp
, hostname
, libatomic_ops
, libevent
, libiconv
, libxml2
, libyaml
, llvmPackages
, makeWrapper
, openssl
, pcre
, pkg-config
, readline
, tzdata
, which
, zlib
}:
# We need to keep around at least the latest version released with a stable
# NixOS
let
archs = {
x86_64-linux = "linux-x86_64";
i686-linux = "linux-i686";
x86_64-darwin = "darwin-x86_64";
aarch64-darwin = "darwin-universal";
aarch64-linux = "linux-aarch64";
};
arch = archs.${stdenv.system} or (throw "system ${stdenv.system} not supported");
isAarch64Darwin = stdenv.system == "aarch64-darwin";
checkInputs = [ git gmp openssl readline libxml2 libyaml ];
binaryUrl = version: rel:
if arch == archs.aarch64-linux then
"https://dev.alpinelinux.org/archive/crystal/crystal-${version}-aarch64-alpine-linux-musl.tar.gz"
else
"https://github.com/crystal-lang/crystal/releases/download/${version}/crystal-${version}-${toString rel}-${arch}.tar.gz";
genericBinary = { version, sha256s, rel ? 1 }:
stdenv.mkDerivation rec {
pname = "crystal-binary";
inherit version;
src = fetchurl {
url = binaryUrl version rel;
sha256 = sha256s.${stdenv.system};
};
buildCommand = ''
mkdir -p $out
tar --strip-components=1 -C $out -xf ${src}
patchShebangs $out/bin/crystal
'';
meta.broken = lib.versionOlder version "1.2.0" && isAarch64Darwin;
};
commonBuildInputs = extraBuildInputs: [
boehmgc
libatomic_ops
pcre
libevent
libyaml
zlib
libxml2
openssl
] ++ extraBuildInputs
++ lib.optionals stdenv.isDarwin [ libiconv ];
generic = (
{ version
, sha256
, binary
, doCheck ? true
, extraBuildInputs ? [ ]
, buildFlags ? [ "all" "docs" ]
}:
lib.fix (compiler: stdenv.mkDerivation {
pname = "crystal";
inherit buildFlags doCheck version;
src = fetchFromGitHub {
owner = "crystal-lang";
repo = "crystal";
rev = version;
inherit sha256;
};
outputs = [ "out" "lib" "bin" ];
postPatch = ''
export TMP=$(mktemp -d)
export HOME=$TMP
mkdir -p $HOME/test
# Add dependency of crystal to docs to avoid issue on flag changes between releases
# https://github.com/crystal-lang/crystal/pull/8792#issuecomment-614004782
substituteInPlace Makefile \
--replace 'docs: ## Generate standard library documentation' 'docs: crystal ## Generate standard library documentation'
substituteInPlace src/crystal/system/unix/time.cr \
--replace /usr/share/zoneinfo ${tzdata}/share/zoneinfo
ln -sf spec/compiler spec/std
mkdir -p $TMP/crystal
substituteInPlace spec/std/file_spec.cr \
--replace '/bin/ls' '${coreutils}/bin/ls' \
--replace '/usr/share' "$TMP/crystal" \
--replace '/usr' "$TMP" \
--replace '/tmp' "$TMP"
substituteInPlace spec/std/process_spec.cr \
--replace '/bin/cat' '${coreutils}/bin/cat' \
--replace '/bin/ls' '${coreutils}/bin/ls' \
--replace '/usr/bin/env' '${coreutils}/bin/env' \
--replace '"env"' '"${coreutils}/bin/env"' \
--replace '/usr' "$TMP" \
--replace '/tmp' "$TMP"
substituteInPlace spec/std/system_spec.cr \
--replace '`hostname`' '`${hostname}/bin/hostname`'
# See https://github.com/crystal-lang/crystal/issues/8629
substituteInPlace spec/std/socket/udp_socket_spec.cr \
--replace 'it "joins and transmits to multicast groups"' 'pending "joins and transmits to multicast groups"'
'';
# Defaults are 4
preBuild = ''
export CRYSTAL_WORKERS=$NIX_BUILD_CORES
export threads=$NIX_BUILD_CORES
export CRYSTAL_CACHE_DIR=$TMP
'';
strictDeps = true;
nativeBuildInputs = [ binary makeWrapper which pkg-config llvmPackages.llvm ];
buildInputs = commonBuildInputs extraBuildInputs;
makeFlags = [
"CRYSTAL_CONFIG_VERSION=${version}"
];
LLVM_CONFIG = "${llvmPackages.llvm.dev}/bin/llvm-config";
FLAGS = [
"--release"
"--single-module" # needed for deterministic builds
];
# This makes sure we don't keep depending on the previous version of
# crystal used to build this one.
CRYSTAL_LIBRARY_PATH = "${placeholder "lib"}/crystal";
# We *have* to add `which` to the PATH or crystal is unable to build
# stuff later if which is not available.
installPhase = ''
runHook preInstall
install -Dm755 .build/crystal $bin/bin/crystal
wrapProgram $bin/bin/crystal \
--suffix PATH : ${lib.makeBinPath [ pkg-config llvmPackages.clang which ]} \
--suffix CRYSTAL_PATH : lib:$lib/crystal \
--suffix CRYSTAL_LIBRARY_PATH : ${
lib.makeLibraryPath (commonBuildInputs extraBuildInputs)
}
install -dm755 $lib/crystal
cp -r src/* $lib/crystal/
install -dm755 $out/share/doc/crystal/api
cp -r docs/* $out/share/doc/crystal/api/
cp -r samples $out/share/doc/crystal/
install -Dm644 etc/completion.bash $out/share/bash-completion/completions/crystal
install -Dm644 etc/completion.zsh $out/share/zsh/site-functions/_crystal
install -Dm644 man/crystal.1 $out/share/man/man1/crystal.1
install -Dm644 -t $out/share/licenses/crystal LICENSE README.md
mkdir -p $out
ln -s $bin/bin $out/bin
ln -s $lib $out/lib
runHook postInstall
'';
enableParallelBuilding = true;
dontStrip = true;
checkTarget = "compiler_spec";
preCheck = ''
export LIBRARY_PATH=${lib.makeLibraryPath checkInputs}:$LIBRARY_PATH
export PATH=${lib.makeBinPath checkInputs}:$PATH
'';
passthru.buildCrystalPackage = callPackage ./build-package.nix {
crystal = compiler;
};
meta = with lib; {
broken = stdenv.isDarwin;
description = "A compiled language with Ruby like syntax and type inference";
homepage = "https://crystal-lang.org/";
license = licenses.asl20;
maintainers = with maintainers; [ david50407 manveru peterhoeg ];
platforms = let archNames = builtins.attrNames archs; in
if (lib.versionOlder version "1.2.0") then remove "aarch64-darwin" archNames else archNames;
};
})
);
in
rec {
binaryCrystal_1_0 = genericBinary {
version = "1.0.0";
sha256s = {
x86_64-linux = "1949argajiyqyq09824yj3wjyv88gd8wbf20xh895saqfykiq880";
i686-linux = "0w0f4fwr2ijhx59i7ppicbh05hfmq7vffmgl7lal6im945m29vch";
x86_64-darwin = "01n0rf8zh551vv8wq3h0ifnsai0fz9a77yq87xx81y9dscl9h099";
aarch64-linux = "0sns7l4q3z82qi3dc2r4p63f4s8hvifqzgq56ykwyrvawynjhd53";
};
};
binaryCrystal_1_2 = genericBinary {
version = "1.2.0";
sha256s = {
aarch64-darwin = "1hrs8cpjxdkcf8mr9qgzilwbg6bakq87sd4yydfsk2f4pqd6g7nf";
};
};
crystal_1_0 = generic {
version = "1.0.0";
sha256 = "sha256-RI+a3w6Rr+uc5jRf7xw0tOenR+q6qii/ewWfID6dbQ8=";
binary = binaryCrystal_1_0;
};
crystal_1_1 = generic {
version = "1.1.1";
sha256 = "sha256-hhhT3reia8acZiPsflwfuD638Ll2JiXwMfES1TyGyNQ=";
binary = crystal_1_0;
};
crystal_1_2 = generic {
version = "1.2.2";
sha256 = "sha256-nyOXhsutVBRdtJlJHe2dALl//BUXD1JeeQPgHU4SwiU=";
binary = if isAarch64Darwin then binaryCrystal_1_2 else crystal_1_1;
};
crystal = crystal_1_2;
}

View file

@ -0,0 +1,36 @@
{ lib, fetchFromGitHub, crystal, makeWrapper, nix-prefetch-git }:
crystal.buildCrystalPackage rec {
pname = "crystal2nix";
version = "0.1.1";
src = fetchFromGitHub {
owner = "peterhoeg";
repo = "crystal2nix";
rev = "v${version}";
sha256 = "sha256-LKZychkhWy/rVdrP3Yo6g8CL1pGdiZlBykzFjnWh0fg=";
};
format = "shards";
shardsFile = ./shards.nix;
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
wrapProgram $out/bin/crystal2nix \
--prefix PATH : ${lib.makeBinPath [ nix-prefetch-git ]}
'';
# temporarily off. We need the checks to execute the wrapped binary
doCheck = false;
# it requires an internet connection when run
doInstallCheck = false;
meta = with lib; {
description = "Utility to convert Crystal's shard.lock files to a Nix file";
license = licenses.mit;
maintainers = with maintainers; [ manveru peterhoeg ];
};
}

Some files were not shown because too many files have changed in this diff Show more