summary refs log tree commit diff
path: root/pkgs/applications/editors/eclipse/plugins.nix
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2015-08-01 15:16:17 +0200
committerBjørn Forsman <bjorn.forsman@gmail.com>2015-08-10 23:12:03 +0200
commit24a5d478837f6e845ca9128f23cc672b78a3eaf3 (patch)
tree7e8562c3ac4c98b9cde0ec98364c06f7acbdf06d /pkgs/applications/editors/eclipse/plugins.nix
parent7d60bb48eba26a768cf0985e2da0b8c4b6ec3e0c (diff)
downloadnixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar
nixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.gz
nixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.bz2
nixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.lz
nixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.xz
nixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.zst
nixpkgs-24a5d478837f6e845ca9128f23cc672b78a3eaf3.zip
eclipse.plugins: unpack plugins when required
Some plugin bundles must be unpacked when used in Eclipse. With this
change the plugin manifest is checked for the setting indicating that
unpacking should happen.
Diffstat (limited to 'pkgs/applications/editors/eclipse/plugins.nix')
-rw-r--r--pkgs/applications/editors/eclipse/plugins.nix27
1 files changed, 23 insertions, 4 deletions
diff --git a/pkgs/applications/editors/eclipse/plugins.nix b/pkgs/applications/editors/eclipse/plugins.nix
index c79b85b74bd..f0de68a1a2b 100644
--- a/pkgs/applications/editors/eclipse/plugins.nix
+++ b/pkgs/applications/editors/eclipse/plugins.nix
@@ -49,16 +49,35 @@ rec {
       installPhase = ''
         dropinDir="$out/eclipse/dropins/${name}"
 
+        # Install features.
         cd features
         for feature in *.jar; do
-          feat=''${feature%.jar}
-          mkdir -p $dropinDir/features/$feat
-          unzip $feature -d $dropinDir/features/$feat
+          featureName=''${feature%.jar}
+          mkdir -p $dropinDir/features/$featureName
+          unzip $feature -d $dropinDir/features/$featureName
         done
         cd ..
 
+        # Install plugins.
         mkdir -p $dropinDir/plugins
-        cp -v "plugins/"*.jar $dropinDir/plugins/
+
+        # A bundle should be unpacked if the manifest matches this
+        # pattern.
+        unpackPat="Eclipse-BundleShape:\\s*dir"
+
+        cd plugins
+        for plugin in *.jar ; do
+          pluginName=''${plugin%.jar}
+          manifest=$(unzip -p $plugin META-INF/MANIFEST.MF)
+
+          if [[ $manifest =~ $unpackPat ]] ; then
+            mkdir $dropinDir/plugins/$pluginName
+            unzip $plugin -d $dropinDir/plugins/$pluginName
+          else
+            cp -v $plugin $dropinDir/plugins/
+          fi
+        done
+        cd ..
       '';
     });