Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
328 lines
8.5 KiB
Nix
328 lines
8.5 KiB
Nix
{
|
|
fetchFromGitHub,
|
|
fetchurl,
|
|
fetchzip,
|
|
lib,
|
|
linkFarm,
|
|
makeWrapper,
|
|
runCommand,
|
|
stdenv,
|
|
stdenvNoCC,
|
|
rustPlatform,
|
|
|
|
ant,
|
|
cmake,
|
|
fsnotifier,
|
|
glib,
|
|
glibc,
|
|
jetbrains,
|
|
kotlin,
|
|
libdbusmenu,
|
|
maven,
|
|
p7zip,
|
|
pkg-config,
|
|
xorg,
|
|
|
|
version,
|
|
buildNumber,
|
|
buildType,
|
|
ideaHash,
|
|
androidHash,
|
|
jpsHash,
|
|
restarterHash,
|
|
mvnDeps,
|
|
repositories,
|
|
kotlin-jps-plugin,
|
|
}:
|
|
|
|
let
|
|
kotlin' = kotlin.overrideAttrs (oldAttrs: {
|
|
version = "2.1.10";
|
|
src = fetchurl {
|
|
url = oldAttrs.src.url;
|
|
sha256 = "sha256-xuniY2iJgo4ZyIEdWriQhiU4yJ3CoxAZVt/uPCqLprE=";
|
|
};
|
|
});
|
|
|
|
jbr = jetbrains.jdk-no-jcef-17;
|
|
|
|
ideaSrc = fetchFromGitHub {
|
|
owner = "jetbrains";
|
|
repo = "intellij-community";
|
|
rev = "${buildType}/${buildNumber}";
|
|
hash = ideaHash;
|
|
};
|
|
|
|
androidSrc = fetchFromGitHub {
|
|
owner = "jetbrains";
|
|
repo = "android";
|
|
rev = "${buildType}/${buildNumber}";
|
|
hash = androidHash;
|
|
};
|
|
|
|
src = runCommand "source" { } ''
|
|
cp -r ${ideaSrc} $out
|
|
chmod +w -R $out
|
|
cp -r ${androidSrc} $out/android
|
|
'';
|
|
|
|
libdbusmenu-jb = libdbusmenu.overrideAttrs (old: {
|
|
version = "jetbrains-fork";
|
|
src = fetchFromGitHub {
|
|
owner = "jetbrains";
|
|
repo = "libdbusmenu";
|
|
rev = "d8a49303f908a272e6670b7cee65a2ba7c447875";
|
|
hash = "sha256-u87ZgbfeCPJ0qG8gsom3gFaZxbS5NcHEodb0EVakk60=";
|
|
};
|
|
configureFlags = old.configureFlags ++ [
|
|
"--enable-static"
|
|
];
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/lib
|
|
cp libdbusmenu-glib/.libs/libdbusmenu-glib.a $out/lib
|
|
|
|
runHook postInstall
|
|
'';
|
|
});
|
|
|
|
libdbm = stdenv.mkDerivation {
|
|
pname = "libdbm";
|
|
version = buildNumber;
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
];
|
|
buildInputs = [
|
|
glib
|
|
xorg.libX11
|
|
libdbusmenu
|
|
];
|
|
inherit src;
|
|
sourceRoot = "${src.name}/native/LinuxGlobalMenu";
|
|
patches = [ ../patches/libdbm-headers.patch ];
|
|
postPatch = ''
|
|
# Fix the build with CMake 4.
|
|
substituteInPlace CMakeLists.txt \
|
|
--replace-fail 'cmake_minimum_required(VERSION 2.6.0)' 'cmake_minimum_required(VERSION 3.10)'
|
|
cp ${libdbusmenu-jb}/lib/libdbusmenu-glib.a libdbusmenu-glib.a
|
|
'';
|
|
passthru.patched-libdbusmenu = libdbusmenu-jb;
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/lib
|
|
mv libdbm.so $out/lib/libdbm.so
|
|
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
|
|
restarter = rustPlatform.buildRustPackage {
|
|
pname = "restarter";
|
|
version = buildNumber;
|
|
inherit src;
|
|
sourceRoot = "${src.name}/native/restarter";
|
|
|
|
cargoHash = restarterHash;
|
|
|
|
# Allow static linking
|
|
buildInputs = [
|
|
glibc
|
|
glibc.static
|
|
];
|
|
};
|
|
|
|
jpsRepo =
|
|
runCommand "jps-bootstrap-repository"
|
|
{
|
|
outputHashAlgo = "sha256";
|
|
outputHashMode = "recursive";
|
|
outputHash = jpsHash;
|
|
nativeBuildInputs = [
|
|
ant
|
|
jbr
|
|
];
|
|
}
|
|
''
|
|
ant -Duser.home=$out -Dbuild.dir=/build/tmp -f ${src}/platform/jps-bootstrap/jps-bootstrap-classpath.xml
|
|
find $out -type f \( \
|
|
-name \*.lastUpdated \
|
|
-o -name resolver-status.properties \
|
|
-o -name _remote.repositories \) \
|
|
-delete
|
|
'';
|
|
|
|
jps-bootstrap = stdenvNoCC.mkDerivation {
|
|
pname = "jps-bootstrap";
|
|
version = buildNumber;
|
|
inherit src;
|
|
sourceRoot = "${src.name}/platform/jps-bootstrap";
|
|
nativeBuildInputs = [
|
|
ant
|
|
makeWrapper
|
|
jbr
|
|
];
|
|
patches = [ ../patches/kotlinc-path.patch ];
|
|
postPatch = "sed -i 's|KOTLIN_PATH_HERE|${kotlin'}|' src/main/java/org/jetbrains/jpsBootstrap/KotlinCompiler.kt";
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
ant -Duser.home=${jpsRepo} -Dbuild.dir=/build/out -f jps-bootstrap-classpath.xml
|
|
|
|
runHook postBuild
|
|
'';
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/java/
|
|
cp /build/out/jps-bootstrap.classes.jar $out/share/java/jps-bootstrap.jar
|
|
cp -r /build/out/jps-bootstrap.out.lib $out/share/java/jps-bootstrap-classpath
|
|
makeWrapper ${jbr}/bin/java $out/bin/jps-bootstrap \
|
|
--add-flags "-cp $out/share/java/jps-bootstrap-classpath/'*' org.jetbrains.jpsBootstrap.JpsBootstrapMain"
|
|
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
|
|
artefactsJson = lib.importJSON mvnDeps;
|
|
mkRepoEntry = entry: {
|
|
name = ".m2/repository/" + entry.path;
|
|
path = fetchurl {
|
|
urls = map (url: "${url}/${entry.url}") repositories;
|
|
sha256 = entry.hash;
|
|
};
|
|
};
|
|
mvnRepo = linkFarm "intellij-deps" (map mkRepoEntry artefactsJson);
|
|
|
|
kotlin-jps-plugin-classpath =
|
|
let
|
|
repoUrl = "https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide-plugin-dependencies";
|
|
groupId = builtins.replaceStrings [ "." ] [ "/" ] "org.jetbrains.kotlin";
|
|
artefactId = "kotlin-jps-plugin-classpath";
|
|
version = kotlin-jps-plugin.version;
|
|
in
|
|
fetchurl {
|
|
url =
|
|
repoUrl
|
|
+ "/"
|
|
+ groupId
|
|
+ "/"
|
|
+ artefactId
|
|
+ "/"
|
|
+ version
|
|
+ "/"
|
|
+ artefactId
|
|
+ "-"
|
|
+ version
|
|
+ ".jar";
|
|
hash = kotlin-jps-plugin.hash;
|
|
};
|
|
|
|
targetClass =
|
|
if buildType == "pycharm" then
|
|
"intellij.pycharm.community.build"
|
|
else
|
|
"intellij.idea.community.build";
|
|
targetName =
|
|
if buildType == "pycharm" then
|
|
"PyCharmCommunityInstallersBuildTarget"
|
|
else
|
|
"OpenSourceCommunityInstallersBuildTarget";
|
|
|
|
xplat-launcher = fetchzip {
|
|
url = "https://cache-redirector.jetbrains.com/intellij-dependencies/org/jetbrains/intellij/deps/launcher/242.22926/launcher-242.22926.tar.gz";
|
|
hash = "sha256-ttrQZUbBvvyH1BSVt1yWOoD82WwRi/hkoRfrsdCjwTA=";
|
|
stripRoot = false;
|
|
};
|
|
|
|
brokenPlugins = fetchurl {
|
|
url = "https://web.archive.org/web/20250509141038/https://downloads.marketplace.jetbrains.com/files/brokenPlugins.json";
|
|
hash = "sha256-FzYANZSTasCdVEu9jLF1+2PEH8SadUddaIaec5vhKH8=";
|
|
};
|
|
|
|
in
|
|
stdenvNoCC.mkDerivation rec {
|
|
pname = "${buildType}-community";
|
|
inherit version buildNumber;
|
|
name = "${pname}-${version}.tar.gz";
|
|
inherit src;
|
|
nativeBuildInputs = [
|
|
p7zip
|
|
jbr
|
|
jps-bootstrap
|
|
];
|
|
repo = mvnRepo;
|
|
|
|
patches = [
|
|
../patches/no-download.patch
|
|
../patches/disable-sbom-generation.patch
|
|
../patches/bump-jackson-core-in-source.patch
|
|
];
|
|
|
|
postPatch = ''
|
|
cp ${restarter}/bin/restarter bin/linux/amd64/restarter
|
|
cp ${fsnotifier}/bin/fsnotifier bin/linux/amd64/fsnotifier
|
|
cp ${libdbm}/lib/libdbm.so bin/linux/amd64/libdbm.so
|
|
|
|
substituteInPlace \
|
|
platform/build-scripts/src/org/jetbrains/intellij/build/kotlin/KotlinCompilerDependencyDownloader.kt \
|
|
--replace-fail 'JPS_PLUGIN_CLASSPATH_HERE' '${kotlin-jps-plugin-classpath}' \
|
|
--replace-fail 'KOTLIN_PATH_HERE' '${kotlin'}'
|
|
substituteInPlace \
|
|
platform/build-scripts/downloader/src/org/jetbrains/intellij/build/dependencies/JdkDownloader.kt \
|
|
--replace-fail 'JDK_PATH_HERE' '${jbr}/lib/openjdk'
|
|
substituteInPlace \
|
|
platform/build-scripts/src/org/jetbrains/intellij/build/impl/brokenPlugins.kt \
|
|
--replace-fail 'BROKEN_PLUGINS_HERE' '${brokenPlugins}'
|
|
substituteInPlace \
|
|
platform/build-scripts/src/org/jetbrains/intellij/build/impl/LinuxDistributionBuilder.kt \
|
|
--replace-fail 'XPLAT_LAUNCHER_PREBUILT_PATH_HERE' '${xplat-launcher}'
|
|
substituteInPlace \
|
|
build/deps/src/org/jetbrains/intellij/build/impl/BundledMavenDownloader.kt \
|
|
--replace-fail 'MAVEN_REPO_HERE' '${mvnRepo}/.m2/repository/' \
|
|
--replace-fail 'MAVEN_PATH_HERE' '${maven}/maven'
|
|
|
|
echo '${buildNumber}.SNAPSHOT' > build.txt
|
|
'';
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
ln -s "$repo"/.m2 /build/.m2
|
|
export JPS_BOOTSTRAP_COMMUNITY_HOME=/build/source
|
|
jps-bootstrap \
|
|
-Dbuild.number=${buildNumber} \
|
|
-Djps.kotlin.home=${kotlin'} \
|
|
-Dintellij.build.target.os=linux \
|
|
-Dintellij.build.target.arch=x64 \
|
|
-Dintellij.build.skip.build.steps=mac_artifacts,mac_dmg,mac_sit,windows_exe_installer,windows_sign,repair_utility_bundle_step,sources_archive \
|
|
-Dintellij.build.unix.snaps=false \
|
|
--java-argfile-target=java_argfile \
|
|
/build/source \
|
|
${targetClass} \
|
|
${targetName}
|
|
|
|
runHook postConfigure
|
|
'';
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
java \
|
|
-Djps.kotlin.home=${kotlin'} \
|
|
"@java_argfile"
|
|
|
|
runHook postBuild
|
|
'';
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mv out/*/artifacts/*-no-jbr.tar.gz $out
|
|
runHook postInstall
|
|
'';
|
|
|
|
passthru = {
|
|
inherit libdbm fsnotifier jps-bootstrap;
|
|
};
|
|
}
|