Darwin support

This commit is contained in:
Nathan McCarty 2023-05-16 16:48:00 -04:00
parent d4b3e8f2bb
commit df64fb851a
No known key found for this signature in database
1 changed files with 51 additions and 19 deletions

View File

@ -7,7 +7,12 @@
};
outputs = { self, nixpkgs, utils }:
utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system:
(utils.lib.eachSystem [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
] (system:
let
sources = builtins.fromJSON (builtins.readFile ./sources.json);
buildAdoptLike = with import nixpkgs { system = system; };
@ -23,22 +28,29 @@
sha256 = value.sha256;
};
version = value.java_version;
buildInputs = with pkgs; [
alsa-lib
fontconfig
freetype
stdenv.cc.cc.lib
xorg.libX11
xorg.libXext
xorg.libXi
xorg.libXrender
xorg.libXtst
zlib
];
nativeBuildInputs = with pkgs; [ autoPatchelfHook makeWrapper ];
buildInputs = if pkgs.stdenv.isLinux then
with pkgs; [
alsa-lib
fontconfig
freetype
stdenv.cc.cc.lib
xorg.libX11
xorg.libXext
xorg.libXi
xorg.libXrender
xorg.libXtst
zlib
]
else
[ ];
nativeBuildInputs = if pkgs.stdenv.isLinux then
with pkgs; [ autoPatchelfHook makeWrapper ]
else
[ ];
dontStrip = 1;
installPhase = ''
installPhase = if pkgs.stdenv.isLinux then ''
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/
@ -69,11 +81,31 @@
}
fi
done
'';
preFixup = ''
'' else if pkgs.stdenv.isDarwin then ''
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
'' else
(throw "Unsupported OS");
preFixup = if pkgs.stdenv.isLinux then ''
find "$out" -name libfontmanager.so -exec \
patchelf --add-needed libfontconfig.so {} \;
'';
'' else
"";
};
in with import nixpkgs { system = system; }; {
packages = {
@ -92,5 +124,5 @@
};
defaultPackage = self.packages.${system}.temurin.stable;
});
}));
}