swt: fix build with gcc15 and add darwin support
This commit is contained in:
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
x86_64-darwin.platform = "cocoa-macosx-x86_64";
|
x86_64-darwin.platform = "cocoa-macosx-x86_64";
|
||||||
x86_64-darwin.hash = "sha256-Uns3fMoetbZAIrL/N0eVd42/3uygXakDdxpaxf5SWDI=";
|
x86_64-darwin.hash = "sha256-Uns3fMoetbZAIrL/N0eVd42/3uygXakDdxpaxf5SWDI=";
|
||||||
aarch64-darwin.platform = "cocoa-macosx-aarch64";
|
aarch64-darwin.platform = "cocoa-macosx-aarch64";
|
||||||
aarch64-darwin.hash = "sha256-Uns3fMoetbZAIrL/N0eVd42/3uygXakDdxpaxf5SWDI";
|
aarch64-darwin.hash = "sha256-jvxmoRFGquYClPgMqWi2ylw26YiGSG5bONnM1PcjlTM=";
|
||||||
};
|
};
|
||||||
passthru.srcMetadata =
|
passthru.srcMetadata =
|
||||||
finalAttrs.passthru.srcMetadataByPlatform.${stdenv.hostPlatform.system} or null;
|
finalAttrs.passthru.srcMetadataByPlatform.${stdenv.hostPlatform.system} or null;
|
||||||
@@ -47,25 +47,29 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
url = "https://archive.eclipse.org/eclipse/downloads/drops4/R-${finalAttrs.fullVersion}/swt-${finalAttrs.version}-${srcMetadata.platform}.zip";
|
url = "https://archive.eclipse.org/eclipse/downloads/drops4/R-${finalAttrs.fullVersion}/swt-${finalAttrs.version}-${srcMetadata.platform}.zip";
|
||||||
inherit (srcMetadata) hash;
|
inherit (srcMetadata) hash;
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
postFetch = ''
|
postFetch =
|
||||||
mkdir "$unpackDir"
|
# On Linux, extract and use only the sources from src.zip
|
||||||
cd "$unpackDir"
|
lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
|
mkdir "$unpackDir"
|
||||||
|
cd "$unpackDir"
|
||||||
|
|
||||||
renamed="$TMPDIR/src.zip"
|
renamed="$TMPDIR/src.zip"
|
||||||
mv -- "$out/src.zip" "$renamed"
|
mv -- "$out/src.zip" "$renamed"
|
||||||
unpackFile "$renamed"
|
unpackFile "$renamed"
|
||||||
rm -r -- "$out"
|
rm -r -- "$out"
|
||||||
|
|
||||||
mv -- "$unpackDir" "$out"
|
mv -- "$unpackDir" "$out"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
jdk
|
jdk
|
||||||
stripJavaArchivesHook
|
stripJavaArchivesHook
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
pkg-config
|
pkg-config
|
||||||
];
|
];
|
||||||
buildInputs = [
|
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||||
gtk3
|
gtk3
|
||||||
libGLU
|
libGLU
|
||||||
];
|
];
|
||||||
@@ -76,14 +80,17 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
OUTPUT_DIR = "${placeholder "out"}/lib";
|
OUTPUT_DIR = "${placeholder "out"}/lib";
|
||||||
# GTK4 is not supported yet. See:
|
# GTK4 is not supported yet. See:
|
||||||
# https://github.com/eclipse-platform/eclipse.platform.swt/issues/652
|
# https://github.com/eclipse-platform/eclipse.platform.swt/issues/652
|
||||||
makeFlags = "gtk3";
|
makeFlags = lib.optionals stdenv.hostPlatform.isLinux [ "gtk3" ];
|
||||||
preBuild = ''
|
|
||||||
|
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isLinux "-std=gnu17";
|
||||||
|
postPatch = lib.optionalString stdenv.hostPlatform.isLinux "substituteInPlace library/make_linux.mak --replace-fail 'CFLAGS += -Werror' ''";
|
||||||
|
preBuild = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
cd library
|
cd library
|
||||||
mkdir -p ${finalAttrs.OUTPUT_DIR}
|
mkdir -p ${finalAttrs.OUTPUT_DIR}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Build the jar
|
# Build the jar (Linux only, Darwin uses prebuilt)
|
||||||
postBuild = ''
|
postBuild = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
cd ../
|
cd ../
|
||||||
mkdir out
|
mkdir out
|
||||||
find org/ -name '*.java' -type f -exec javac -encoding utf8 -d out/ {} +
|
find org/ -name '*.java' -type f -exec javac -encoding utf8 -d out/ {} +
|
||||||
@@ -97,9 +104,27 @@ stdenv.mkDerivation (finalAttrs: {
|
|||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
install -d -- "$out/jars"
|
install -d -- "$out/jars"
|
||||||
|
|
||||||
|
''
|
||||||
|
# On Darwin, use the prebuilt swt.jar which includes native libraries
|
||||||
|
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||||
|
# Remove signature files to avoid validation errors after stripJavaArchivesHook modifies the jar
|
||||||
|
mkdir -p jar-temp
|
||||||
|
cd jar-temp
|
||||||
|
${jdk}/bin/jar -xf ../swt.jar
|
||||||
|
rm -f META-INF/*.SF META-INF/*.RSA META-INF/*.DSA
|
||||||
|
${jdk}/bin/jar -cf "$out/jars/swt.jar" *
|
||||||
|
cd ..
|
||||||
|
rm -rf jar-temp
|
||||||
|
|
||||||
|
''
|
||||||
|
# On Linux, build from source
|
||||||
|
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||||
install -m 644 -t out -- version.txt
|
install -m 644 -t out -- version.txt
|
||||||
(cd out && jar -c *) > "$out/jars/swt.jar"
|
(cd out && jar -c *) > "$out/jars/swt.jar"
|
||||||
|
|
||||||
|
''
|
||||||
|
+ ''
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user