diff options
author | Edward Tjörnhammar <ed@cflags.cc> | 2016-01-15 18:18:54 +0100 |
---|---|---|
committer | Edward Tjörnhammar <ed@cflags.cc> | 2016-01-15 18:21:45 +0100 |
commit | 69c98f75e23393baa419757f903bf690bbebb3dd (patch) | |
tree | 272dff6cec56c07398851f6b331b7e2a19522773 /pkgs/applications | |
parent | dbfb717f554db773390a52370e97c9443c6e5454 (diff) | |
download | nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.tar nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.tar.gz nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.tar.bz2 nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.tar.lz nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.tar.xz nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.tar.zst nixlib-69c98f75e23393baa419757f903bf690bbebb3dd.zip |
idea: unpin the common builder
Diffstat (limited to 'pkgs/applications')
-rw-r--r-- | pkgs/applications/editors/idea/common.nix | 71 | ||||
-rw-r--r-- | pkgs/applications/editors/idea/default.nix | 83 |
2 files changed, 81 insertions, 73 deletions
diff --git a/pkgs/applications/editors/idea/common.nix b/pkgs/applications/editors/idea/common.nix new file mode 100644 index 000000000000..96689fa75ad6 --- /dev/null +++ b/pkgs/applications/editors/idea/common.nix @@ -0,0 +1,71 @@ +{ stdenv, fetchurl, makeDesktopItem, makeWrapper, patchelf, p7zip +, coreutils, gnugrep, which, git, python, unzip, androidsdk }: + +{ name, product, version, build, src, meta, jdk } @ attrs: + +with stdenv.lib; + +let loName = toLower product; + hiName = toUpper product; + execName = concatStringsSep "-" (init (splitString "-" name)); +in + +with stdenv; lib.makeOverridable mkDerivation rec { + inherit name build src meta; + desktopItem = makeDesktopItem { + name = execName; + exec = execName; + comment = lib.replaceChars ["\n"] [" "] meta.longDescription; + desktopName = product; + genericName = meta.description; + categories = "Application;Development;"; + icon = execName; + }; + + buildInputs = [ makeWrapper patchelf p7zip unzip ]; + + patchPhase = '' + get_file_size() { + local fname="$1" + echo $(ls -l $fname | cut -d ' ' -f5) + } + + munge_size_hack() { + local fname="$1" + local size="$2" + strip $fname + truncate --size=$size $fname + } + + interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2) + if [ "${stdenv.system}" == "x86_64-linux" ]; then + target_size=$(get_file_size bin/fsnotifier64) + patchelf --set-interpreter "$interpreter" bin/fsnotifier64 + munge_size_hack bin/fsnotifier64 $target_size + else + target_size=$(get_file_size bin/fsnotifier) + patchelf --set-interpreter "$interpreter" bin/fsnotifier + munge_size_hack bin/fsnotifier $target_size + fi + ''; + + installPhase = '' + mkdir -p $out/{bin,$name,share/pixmaps,libexec/${name}} + cp -a . $out/$name + ln -s $out/$name/bin/${loName}.png $out/share/pixmaps/${execName}.png + mv bin/fsnotifier* $out/libexec/${name}/. + + jdk=${jdk.home} + item=${desktopItem} + + makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${execName}" \ + --prefix PATH : "$out/libexec/${name}:${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \ + --set JDK_HOME "$jdk" \ + --set ${hiName}_JDK "$jdk" \ + --set ANDROID_JAVA_HOME "$jdk" \ + --set JAVA_HOME "$jdk" + + ln -s "$item/share/applications" $out/share + ''; + +} diff --git a/pkgs/applications/editors/idea/default.nix b/pkgs/applications/editors/idea/default.nix index 58e9ab347dfb..c89aaab78ee8 100644 --- a/pkgs/applications/editors/idea/default.nix +++ b/pkgs/applications/editors/idea/default.nix @@ -1,82 +1,19 @@ -{ stdenv, fetchurl, makeDesktopItem, makeWrapper, patchelf, p7zip, oraclejdk8 -, coreutils, gnugrep, which, git, python, unzip, androidsdk +{ stdenv, callPackage, fetchurl, makeDesktopItem, makeWrapper, patchelf +, coreutils, gnugrep, which, git, python, unzip, p7zip +, androidsdk, jdk, oraclejdk8 }: assert stdenv.isLinux; let - # After IDEA 15 we can no longer use OpenJDK. - # https://youtrack.jetbrains.com/issue/IDEA-147272 - jdk = oraclejdk8; - - mkIdeaProduct = with stdenv.lib; - { name, product, version, build, src, meta }: - - let loName = toLower product; - hiName = toUpper product; - execName = concatStringsSep "-" (init (splitString "-" name)); - in - - with stdenv; lib.makeOverridable mkDerivation rec { - inherit name build src meta; - desktopItem = makeDesktopItem { - name = execName; - exec = execName; - comment = lib.replaceChars ["\n"] [" "] meta.longDescription; - desktopName = product; - genericName = meta.description; - categories = "Application;Development;"; - icon = execName; - }; - - buildInputs = [ makeWrapper patchelf p7zip unzip ]; - - patchPhase = '' - get_file_size() { - local fname="$1" - echo $(ls -l $fname | cut -d ' ' -f5) - } - - munge_size_hack() { - local fname="$1" - local size="$2" - strip $fname - truncate --size=$size $fname - } - - interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2) - if [ "${stdenv.system}" == "x86_64-linux" ]; then - target_size=$(get_file_size bin/fsnotifier64) - patchelf --set-interpreter "$interpreter" bin/fsnotifier64 - munge_size_hack bin/fsnotifier64 $target_size - else - target_size=$(get_file_size bin/fsnotifier) - patchelf --set-interpreter "$interpreter" bin/fsnotifier - munge_size_hack bin/fsnotifier $target_size - fi - ''; - - installPhase = '' - mkdir -p $out/{bin,$name,share/pixmaps,libexec/${name}} - cp -a . $out/$name - ln -s $out/$name/bin/${loName}.png $out/share/pixmaps/${execName}.png - mv bin/fsnotifier* $out/libexec/${name}/. - - jdk=${jdk.home} - item=${desktopItem} - - makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${execName}" \ - --prefix PATH : "$out/libexec/${name}:${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \ - --set JDK_HOME "$jdk" \ - --set ${hiName}_JDK "$jdk" \ - --set ANDROID_JAVA_HOME "$jdk" \ - --set JAVA_HOME "$jdk" - - ln -s "$item/share/applications" $out/share - ''; - - }; + bnumber = with stdenv.lib; build: last (splitString "-" build); + mkIdeaProduct' = callPackage ./common.nix { }; + mkIdeaProduct = attrs: mkIdeaProduct' ({ + # After IDEA 15 we can no longer use OpenJDK. + # https://youtrack.jetbrains.com/issue/IDEA-147272 + jdk = if (bnumber attrs.build) < "143" then jdk else oraclejdk8; + } // attrs); buildAndroidStudio = { name, version, build, src, license, description }: let drv = (mkIdeaProduct rec { |