From 24a5d478837f6e845ca9128f23cc672b78a3eaf3 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Sat, 1 Aug 2015 15:16:17 +0200 Subject: [PATCH] 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. --- pkgs/applications/editors/eclipse/plugins.nix | 27 ++++++++++++++++--- 1 file 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 .. ''; });