about summary refs log tree commit diff
path: root/pkgs/applications
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
parent7d60bb48eba26a768cf0985e2da0b8c4b6ec3e0c (diff)
downloadnixlib-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar
nixlib-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.gz
nixlib-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.bz2
nixlib-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.lz
nixlib-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.xz
nixlib-24a5d478837f6e845ca9128f23cc672b78a3eaf3.tar.zst
nixlib-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')
-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 c79b85b74bdb..f0de68a1a2b7 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 ..
       '';
     });