From 175a40133a7c79765b19ab22173dfff126e086b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edward=20Tj=C3=B6rnhammar?= Date: Tue, 9 Sep 2014 14:20:07 +0200 Subject: [PATCH] ideas: refactored products into common subexpression. Closes #4039 --- pkgs/applications/editors/idea/default.nix | 187 +++++++++++++++------ pkgs/applications/editors/idea/pycharm.nix | 115 ------------- pkgs/top-level/all-packages.nix | 3 +- 3 files changed, 133 insertions(+), 172 deletions(-) delete mode 100644 pkgs/applications/editors/idea/pycharm.nix diff --git a/pkgs/applications/editors/idea/default.nix b/pkgs/applications/editors/idea/default.nix index c673ea672c7c..ab0d5fea018f 100644 --- a/pkgs/applications/editors/idea/default.nix +++ b/pkgs/applications/editors/idea/default.nix @@ -1,85 +1,120 @@ { stdenv, fetchurl, makeDesktopItem, makeWrapper, patchelf, p7zip, jdk -, coreutils, gnugrep, which, git +, coreutils, gnugrep, which, git, python }: assert stdenv.isLinux; let - buildIdea = - { name, version, build, src, description, longDescription, license }: + mkIdeaProduct = + { name, product, version, build, src, meta }: - stdenv.mkDerivation rec { - inherit name build src; - ideaItem = makeDesktopItem { - name = "IDEA"; - exec = "idea"; - comment = "Integrated Development Environment"; - desktopName = "IntelliJ IDEA"; - genericName = "Integrated Development Environment"; + let loName = stdenv.lib.toLower product; + hiName = stdenv.lib.toUpper product; in + + with stdenv; lib.makeOverridable mkDerivation rec { + inherit name build src meta; + desktopItem = makeDesktopItem { + name = loName; + exec = loName; + comment = meta.longDescription; + desktopName = product; + genericName = meta.description; categories = "Application;Development;"; + icon = loName; }; buildInputs = [ makeWrapper patchelf p7zip ]; - buildCommand = '' - tar xvzf $src - mkdir -p $out - cp -a idea-$build $out - + patchPhase = '' interpreter=$(echo ${stdenv.glibc}/lib/ld-linux*.so.2) + snappyPath="lib/snappy-java-1.0.5" - 7z x $out/idea-$build/lib/snappy-java-1.0.5.jar - rm $out/idea-$build/lib/snappy-java-1.0.5.jar - if [ "${stdenv.system}" == "x86_64-linux" ];then - patchelf --set-interpreter $interpreter $out/idea-$build/bin/fsnotifier64 - patchelf --set-rpath ${stdenv.gcc.gcc}/lib64/ org/xerial/snappy/native/Linux/amd64/libsnappyjava.so + 7z x -o"$snappyPath" "$snappyPath.jar" + if [ "${stdenv.system}" == "x86_64-linux" ]; then + patchelf --set-interpreter "$interpreter" bin/fsnotifier64 + patchelf --set-rpath ${stdenv.gcc.gcc}/lib64/ "$snappyPath/org/xerial/snappy/native/Linux/amd64/libsnappyjava.so" else - patchelf --set-interpreter $interpreter $out/idea-$build/bin/fsnotifier - patchelf --set-rpath ${stdenv.gcc.gcc}/lib/ org/xerial/snappy/native/Linux/i386/libsnappyjava.so + patchelf --set-interpreter "$interpreter" bin/fsnotifier + patchelf --set-rpath ${stdenv.gcc.gcc}/lib/ "$snappyPath/org/xerial/snappy/native/Linux/i386/libsnappyjava.so" fi - 7z a -tzip $out/idea-$build/lib/snappy-java-1.0.5.jar . + 7z a -tzip "$snappyPath.jar" ./"$snappyPath"/* + rm -vr "$snappyPath" + ''; - mkdir -p $out/bin + installPhase = '' + mkdir -vp "$out/bin" "$out/$name" "$out/share/pixmaps" + cp -va . "$out/$name" + ln -s "$out/$name/bin/${loName}.png" "$out/share/pixmaps/" [ -d ${jdk}/lib/openjdk ] \ && jdk=${jdk}/lib/openjdk \ || jdk=${jdk} - makeWrapper $out/idea-$build/bin/idea.sh $out/bin/idea \ - --prefix PATH : ${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin \ - --prefix LD_RUN_PATH : ${stdenv.gcc.gcc}/lib/ \ - --prefix JDK_HOME : $jdk \ - --prefix IDEA_JDK : $jdk + makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${loName}" \ + --prefix PATH : "${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \ + --prefix LD_RUN_PATH : "${stdenv.gcc.gcc}/lib/" \ + --prefix JDK_HOME : "$jdk" \ + --prefix ${hiName}_JDK : "$jdk" - mkdir -p $out/share/applications - cp "${ideaItem}/share/applications/"* $out/share/applications - patchShebangs $out + cp -a "${desktopItem}"/* "$out" ''; - meta = { - homepage = http://www.jetbrains.com/idea/; - inherit description; - inherit longDescription; - inherit license; - maintainers = [ stdenv.lib.maintainers.edwtjo ]; - platforms = stdenv.lib.platforms.linux; - }; }; -in { + buildPycharm = { name, version, build, src, license, description }: + (mkIdeaProduct rec { + inherit name version build src; + product = "PyCharm"; + meta = with stdenv.lib; { + homepage = "https://www.jetbrains.com/pycharm/"; + inherit description license; + longDescription = '' + Python IDE with complete set of tools for productive + development with Python programming language. In addition, the + IDE provides high-class capabilities for professional Web + development with Django framework and Google App Engine. It + has powerful coding assistance, navigation, a lot of + refactoring features, tight integration with various Version + Control Systems, Unit testing, powerful all-singing + all-dancing Debugger and entire customization. PyCharm is + developer driven IDE. It was developed with the aim of + providing you almost everything you need for your comfortable + and productive development! + ''; + maintainers = with maintainers; [ jgeerds ]; + platforms = platforms.linux; + }; + }).override { + propagatedUserEnvPkgs = [ python ]; + }; + + buildIdea = { name, version, build, src, license, description }: + (mkIdeaProduct rec { + inherit name version build src; + product = "IDEA"; + meta = with stdenv.lib; { + homepage = "https://www.jetbrains.com/idea/"; + inherit description license; + longDescription = '' + IDE for Java SE, Groovy & Scala development Powerful + environment for building Google Android apps Integration + with JUnit, TestNG, popular SCMs, Ant & Maven. + ''; + maintainers = with maintainers; [ edwtjo ]; + platforms = platforms.linux; + }; + }); + +in + +{ idea-community = buildIdea rec { name = "idea-community-${version}"; version = "13.1.4b"; build = "IC-135.1230"; description = "Integrated Development Environment (IDE) by Jetbrains, community edition"; - longDescription = '' - Lightweight IDE for Java SE, Groovy & Scala development - Powerful environment for building Google Android apps - Integration with JUnit, TestNG, popular SCMs, Ant & Maven - Free, open-source, Apache 2 licensed. - ''; license = stdenv.lib.licenses.asl20; src = fetchurl { url = "http://download-ln.jetbrains.com/idea/ideaIC-${version}.tar.gz"; @@ -92,12 +127,6 @@ in { version = "13.1.4b"; build = "IU-135.1230"; description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license"; - longDescription = '' - Full-featured IDE for JVM-based and polyglot development - Java EE, Spring/Hibernate and other technologies support - Deployment and debugging with most application servers - Duplicate code search, dependency structure matrix, etc. - ''; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "http://download-ln.jetbrains.com/idea/ideaIU-${version}.tar.gz"; @@ -105,4 +134,52 @@ in { }; }; -} + pycharm-community-313 = buildPycharm rec { + name = "pycharm-community-${version}"; + version = "3.1.3"; + build = "133.1347"; + description = "PyCharm 3.1 Community Edition"; + license = stdenv.lib.licenses.asl20; + src = fetchurl { + url = "http://download.jetbrains.com/python/${name}.tar.gz"; + sha256 = "f671ee4c99207c179f168b5b98fa23afe90a94c3a3914367b95a46b0c2881b23"; + }; + }; + + pycharm-community-341 = buildPycharm rec { + name = "pycharm-community-${version}"; + version = "3.4.1"; + build = "135.1057"; + description = "PyCharm 3.4 Community Edition"; + license = stdenv.lib.licenses.asl20; + src = fetchurl { + url = "http://download.jetbrains.com/python/${name}.tar.gz"; + sha256 = "96427b1e842e7c09141ec4d3ede627c5ca7d821c0d6c98169b56a34f9035ef64"; + }; + }; + + pycharm-professional-313 = buildPycharm rec { + name = "pycharm-professional-${version}"; + version = "3.1.3"; + build = "133.1347"; + description = "PyCharm 3.1 Professional Edition"; + license = stdenv.lib.licenses.unfree; + src = fetchurl { + url = "http://download.jetbrains.com/python/${name}.tar.gz"; + sha256 = "e0c2db8f18cb825a95de6ddc4b0b9f93c5643bf34cca9f1b3c2fa37fd7c14f11"; + }; + }; + + pycharm-professional-341 = buildPycharm rec { + name = "pycharm-professional-${version}"; + version = "3.4.1"; + build = "135.1057"; + description = "PyCharm 3.4 Professional Edition"; + license = stdenv.lib.licenses.unfree; + src = fetchurl { + url = "http://download.jetbrains.com/python/${name}.tar.gz"; + sha256 = "e4f85f3248e8985ac9f8c326543f979b47ba1d7ac6b128a2cf2b3eb8ec545d2b"; + }; + }; + +} \ No newline at end of file diff --git a/pkgs/applications/editors/idea/pycharm.nix b/pkgs/applications/editors/idea/pycharm.nix deleted file mode 100644 index 6a2064549bbc..000000000000 --- a/pkgs/applications/editors/idea/pycharm.nix +++ /dev/null @@ -1,115 +0,0 @@ -{ stdenv, fetchurl, makeDesktopItem, makeWrapper, patchelf, p7zip, jdk -, coreutils, gnugrep, which, git, python -}: - -let - - buildPycharm = - { name, version, build, src, description, license }: - - stdenv.mkDerivation rec { - inherit name build src; - desktopItem = makeDesktopItem { - name = "pycharm"; - exec = "pycharm"; - comment = "Powerful Python and Django IDE"; - desktopName = "PyCharm"; - genericName = "Powerful Python and Django IDE"; - categories = "Application;Development;"; - icon = "pycharm"; - }; - - buildInputs = [ makeWrapper patchelf p7zip ]; - - propagatedUserEnvPkgs = [ python ]; - - patchPhase = '' - interpreter="$(echo ${stdenv.glibc}/lib/ld-linux*.so.2)" - snappyPath="lib/snappy-java-1.0.5" - - 7z x -o"$snappyPath" "$snappyPath.jar" - if [ "${stdenv.system}" == "x86_64-linux" ]; then - patchelf --set-interpreter "$interpreter" bin/fsnotifier64 - patchelf --set-rpath ${stdenv.gcc.gcc}/lib64/ "$snappyPath/org/xerial/snappy/native/Linux/amd64/libsnappyjava.so" - else - patchelf --set-interpreter "$interpreter" bin/fsnotifier - patchelf --set-rpath ${stdenv.gcc.gcc}/lib/ "$snappyPath/org/xerial/snappy/native/Linux/i386/libsnappyjava.so" - fi - 7z a -tzip "$snappyPath.jar" ./"$snappyPath"/* - rm -vr "$snappyPath" - ''; - - installPhase = '' - mkdir -vp "$out/bin" "$out/$name" "$out/share/pixmaps" - cp -va . "$out/$name" - ln -s "$out/$name/bin/pycharm.png" "$out/share/pixmaps/" - - jdk="${jdk}/lib/openjdk" - makeWrapper "$out/$name/bin/pycharm.sh" "$out/bin/pycharm" \ - --prefix PATH : "${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \ - --prefix LD_RUN_PATH : "${stdenv.gcc.gcc}/lib/" \ - --prefix JDK_HOME : "$jdk" \ - --prefix PYCHARM_JDK : "$jdk" - - cp -a "${desktopItem}"/* "$out" - ''; - - meta = with stdenv.lib; { - homepage = "https://www.jetbrains.com/pycharm/"; - inherit description; - inherit license; - maintainers = [ maintainers.jgeerds ]; - platforms = platforms.linux; - }; - }; - -in { - - pycharm-community-313 = buildPycharm rec { - name = "pycharm-community-${version}"; - version = "3.1.3"; - build = "133.1347"; - description = "PyCharm 3.1 Community Edition"; - license = stdenv.lib.licenses.asl20; - src = fetchurl { - url = "http://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "f671ee4c99207c179f168b5b98fa23afe90a94c3a3914367b95a46b0c2881b23"; - }; - }; - - pycharm-community-341 = buildPycharm rec { - name = "pycharm-community-${version}"; - version = "3.4.1"; - build = "135.1057"; - description = "PyCharm 3.4 Community Edition"; - license = stdenv.lib.licenses.asl20; - src = fetchurl { - url = "http://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "96427b1e842e7c09141ec4d3ede627c5ca7d821c0d6c98169b56a34f9035ef64"; - }; - }; - - pycharm-professional-313 = buildPycharm rec { - name = "pycharm-professional-${version}"; - version = "3.1.3"; - build = "133.1347"; - description = "PyCharm 3.1 Professional Edition"; - license = stdenv.lib.licenses.unfree; - src = fetchurl { - url = "http://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "e0c2db8f18cb825a95de6ddc4b0b9f93c5643bf34cca9f1b3c2fa37fd7c14f11"; - }; - }; - - pycharm-professional-341 = buildPycharm rec { - name = "pycharm-professional-${version}"; - version = "3.4.1"; - build = "135.1057"; - description = "PyCharm 3.4 Professional Edition"; - license = stdenv.lib.licenses.unfree; - src = fetchurl { - url = "http://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "e4f85f3248e8985ac9f8c326543f979b47ba1d7ac6b128a2cf2b3eb8ec545d2b"; - }; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3bbeeb96db16..0be9e5e25de6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9169,8 +9169,7 @@ let libart = gnome2.libart_lgpl; }; # latest version: gnome3.goffice - ideas = recurseIntoAttrs ( (callPackage ../applications/editors/idea { }) - // (callPackage ../applications/editors/idea/pycharm.nix { })); + idea = recurseIntoAttrs (callPackage ../applications/editors/idea { }); libquvi = callPackage ../applications/video/quvi/library.nix { };