about summary refs log tree commit diff
path: root/pkgs/tools/misc/pipelight
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2014-10-17 15:33:25 +0400
committerMichael Raskin <7c6f434c@mail.ru>2014-10-18 00:14:51 +0400
commiteee6f5a004b85779140a3d8684dcfe9bf5584566 (patch)
tree38f86b08ba5d0a304cf3c49d81be3e1d0398e26a /pkgs/tools/misc/pipelight
parent9424ab11c6ae996d03deb6080e52fc8d7cfc0934 (diff)
downloadnixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.tar
nixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.tar.gz
nixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.tar.bz2
nixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.tar.lz
nixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.tar.xz
nixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.tar.zst
nixlib-eee6f5a004b85779140a3d8684dcfe9bf5584566.zip
Adding Pipelight via patch from Sven Keidel and some cleanup
Diffstat (limited to 'pkgs/tools/misc/pipelight')
-rw-r--r--pkgs/tools/misc/pipelight/default.nix98
-rw-r--r--pkgs/tools/misc/pipelight/pipelight-fixup.patch54
-rw-r--r--pkgs/tools/misc/pipelight/pipelight.patch149
3 files changed, 301 insertions, 0 deletions
diff --git a/pkgs/tools/misc/pipelight/default.nix b/pkgs/tools/misc/pipelight/default.nix
new file mode 100644
index 000000000000..ea1ba37a2edd
--- /dev/null
+++ b/pkgs/tools/misc/pipelight/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, fetchurl, fetchgit, autoconf, automake, wineUnstable, perl, xlibs
+  , gnupg, gcc48_multi, mesa, curl, bash, cacert, cabextract, utillinux, attr
+  }:
+
+let
+  wine_patches_version = "1.7.28";
+  wine_hash = "04r3zk3dz2vzly2a4nqbcvppjs5iy3lq5ibx3wfrf877p5bz3hv7";
+
+  wine_patches = fetchgit {
+    url = "git://github.com/compholio/wine-compholio.git";
+    rev = "refs/tags/v${wine_patches_version}";
+    sha256 = "17f1wmxbx6ly1ws4p528ijf9b4yvmnmap5k7npw9icvkyaky5xi9";
+  };
+
+  wine_custom =
+    stdenv.lib.overrideDerivation wineUnstable (args: rec {
+      name = "wine-${wine_patches_version}";
+      src = null;
+      srcs = [
+	      (fetchurl {
+                url = "mirror://sourceforge/wine/${name}.tar.bz2";
+                sha256 = wine_hash;
+	      })
+	      wine_patches ];
+      sourceRoot = "./${name}";
+      buildInputs = args.buildInputs ++ [ 
+        autoconf perl utillinux automake attr 
+      ];
+      nativeBuildInputs = args.nativeBuildInputs ++ [ 
+        autoconf perl utillinux automake attr 
+      ];
+      postPatch = ''
+        export wineDir=$(pwd)
+        patchShebangs $wineDir/tools/
+	chmod u+w $wineDir/../git-export/debian/tools/
+        patchShebangs $wineDir/../git-export/debian/tools/
+        chmod -R +rwx ../git-export/
+        make -C ../git-export/patches DESTDIR=$wineDir install
+      '';
+    });
+
+  mozillaPluginPath = "/lib/mozilla/plugins";
+
+  fixupPatch = ./pipelight-fixup.patch;
+
+in stdenv.mkDerivation rec {
+
+  version = "0.2.7.2";
+
+  name = "pipelight-${version}";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/mmueller2012/pipelight/get/v${version}.tar.gz";
+    sha256 = "02132151091f1f62d7409a537649efc86deb0eb4a323fd66907fc22947e2cfbd";
+  };
+
+  buildInputs = [ wine_custom xlibs.libX11 gcc48_multi mesa curl ];
+  propagatedbuildInputs = [ curl cabextract ];
+
+  patches = [ ./pipelight.patch ];
+
+  configurePhase = ''
+    ./configure \
+      --prefix=$out \
+      --moz-plugin-path=$out/${mozillaPluginPath} \
+      --wine-path=${wine_custom} \
+      --gpg-exec=${gnupg}/bin/gpg2 \
+      --bash-interp=${bash}/bin/bash \
+      --downloader=${curl}/bin/curl
+      $configureFlags
+  '';
+
+  passthru = {
+    mozillaPlugin = mozillaPluginPath;
+    wine = wine_custom;
+  };
+
+  postInstall = ''
+    $out/bin/pipelight-plugin --update
+    $out/bin/pipelight-plugin --create-mozilla-plugins
+  '';
+
+  preFixup = ''
+    patch -d $out -p1 <${fixupPatch}
+    substituteInPlace $out/share/pipelight/install-dependency \
+      --replace cabextract ${cabextract}/bin/cabextract
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "http://pipelight.net/";
+    licenses = with stdenv.lib.licenses; [ mpl11 gpl2 lgpl21 ];
+    description = "A wrapper for using Windows plugins in Linux browsers";
+    maintainers = with stdenv.lib.maintainers; [skeidel];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/pkgs/tools/misc/pipelight/pipelight-fixup.patch b/pkgs/tools/misc/pipelight/pipelight-fixup.patch
new file mode 100644
index 000000000000..8033e8458d08
--- /dev/null
+++ b/pkgs/tools/misc/pipelight/pipelight-fixup.patch
@@ -0,0 +1,54 @@
+diff -urN pipelight2.old/share/pipelight/install-dependency pipelight2.new/share/pipelight/install-dependency
+--- pipelight2.old/share/pipelight/install-dependency	2014-07-27 01:38:39.806379602 +0200
++++ pipelight2.new/share/pipelight/install-dependency	2014-07-27 01:40:08.689861556 +0200
+@@ -734,42 +734,14 @@
+	return 0
+ }
+
+-# Use fetch on FreeBSD if wget is not available
+-if command -v wget >/dev/null 2>&1; then
+-	download_file()
+-	{
+-		wget -O "$1" "$2"
+-	}
+-	get_download_size()
+-	{
+-		local filesize="$(wget -O- "$1" --spider --server-response 2>&1 | sed -ne '/Content-Length/{s/.*: //;p}')"
+-		local re='^[0-9]+$'
+-		if [[ "$filesize" -ne "0" ]] && [[ "$filesize" =~ $re ]]; then
+-			echo "$(($filesize/(1024*1024)))"
+-		else
+-			echo "N/A"
+-		fi
+-	}
+-elif command -v fetch >/dev/null 2>&1; then
+-	download_file()
+-	{
+-		fetch -o "$1" "$2"
+-	}
+-	get_download_size()
+-	{
+-		echo "N/A"
+-	}
+-else
+-	download_file()
+-	{
+-		echo "ERROR: Could neither find wget nor fetch. Unable to download file!" >&2
+-		return 1
+-	}
+-	get_download_size()
+-	{
+-		echo "N/A"
+-	}
+-fi
++download_file()
++{
++	curl --cacert /etc/ssl/certs/ca-bundle.crt -o "$1" "$2"
++}
++get_download_size()
++{
++	echo "N/A"
++}
+
+ # Use shasum instead of sha256sum on MacOS / *BSD
+ if ! command -v sha256sum >/dev/null 2>&1 && command -v shasum >/dev/null 2>&1; then
diff --git a/pkgs/tools/misc/pipelight/pipelight.patch b/pkgs/tools/misc/pipelight/pipelight.patch
new file mode 100644
index 000000000000..84f1b137b72b
--- /dev/null
+++ b/pkgs/tools/misc/pipelight/pipelight.patch
@@ -0,0 +1,149 @@
+diff -urN pipelight.old/bin/pipelight-plugin.in pipelight.new/bin/pipelight-plugin.in
+--- pipelight.old/bin/pipelight-plugin.in	2014-07-19 22:53:02.000000000 +0200
++++ pipelight.new/bin/pipelight-plugin.in	2014-07-27 00:02:39.275834030 +0200
+@@ -92,7 +92,7 @@
+	PLUGIN_PATH=$(realpath "$PLUGIN_PATH")
+
+	# Global installation
+-	if [ $(/usr/bin/id -u) -eq 0 ]; then
++	if [ $(id -u) -eq 0 ]; then
+		INSTALLDIR="$PLUGIN_PATH"
+
+	# Use environment variable (only if it doesn't point to the global directory)
+@@ -594,7 +594,7 @@
+	fi
+
+	# Ensure the signature is valid, extract the content
+-	if ! @@GPG@@ --batch --no-default-keyring --keyring "$PIPELIGHT_SHARE_PATH/sig-install-dependency.gpg" --decrypt "$tmpfile" > "$decfile"; then
++	if ! @@GPG@@ --homedir /tmp --batch --no-default-keyring --keyring "$PIPELIGHT_SHARE_PATH/sig-install-dependency.gpg" --decrypt "$tmpfile" > "$decfile"; then
+		rm "$tmpfile"
+		rm "$decfile"
+		echo ""
+@@ -630,24 +630,10 @@
+	return 0
+ }
+
+-# Use fetch on FreeBSD if wget is not available
+-if command -v wget >/dev/null 2>&1; then
+-	download_file()
+-	{
+-		wget -O "$1" "$2"
+-	}
+-elif command -v fetch >/dev/null 2>&1; then
+-	download_file()
+-	{
+-		fetch -o "$1" "$2"
+-	}
+-else
+-	download_file()
+-	{
+-		echo "ERROR: Could neither find wget nor fetch. Unable to download file!" >&2
+-		return 1
+-	}
+-fi
++download_file()
++{
++	curl --cacert /etc/ssl/certs/ca-bundle.crt -o "$1" "$2"
++}
+
+ # Use shasum instead of sha256sum on MacOS / *BSD
+ if ! command -v sha256sum >/dev/null 2>&1 && command -v shasum >/dev/null 2>&1; then
+diff -urN pipelight.old/configure pipelight.new/configure
+--- pipelight.old/configure	2014-07-19 22:53:02.000000000 +0200
++++ pipelight.new/configure	2014-07-26 23:52:13.690881447 +0200
+@@ -66,12 +66,8 @@
+ datadir=""
+ libdir=""
+ mandir=""
+-bash_interp="$(which bash)"
+-if which gpg &> /dev/null; then
+-	gpg_exec="$(which gpg)"
+-else
+-	gpg_exec="/usr/bin/gpg"
+-fi
++bash_interp=bash
++gpg_exec=gpg2
+ moz_plugin_path=""
+ gcc_runtime_dlls=""
+ so_mode="0644"
+diff -urN pipelight.old/Makefile pipelight.new/Makefile
+--- pipelight.old/Makefile	2014-07-19 22:53:02.000000000 +0200
++++ pipelight.new/Makefile	2014-07-26 23:25:22.020707765 +0200
+@@ -29,7 +29,7 @@
+			-e 's|@@BINDIR@@|$(bindir)|g' \
+			-e 's|@@DATADIR@@|$(datadir)|g' \
+			-e 's|@@GCC_RUNTIME_DLLS@@|$(gcc_runtime_dlls)|g' \
+-			-e 's|@@GPG@@|$(gpgexec)|g' \
++			-e 's|@@GPG@@|$(gpg_exec)|g' \
+			-e 's|@@LIBDIR@@|$(libdir)|g' \
+			-e 's|@@MANDIR@@|$(mandir)|g' \
+			-e 's|@@MOZ_PLUGIN_PATH@@|$(moz_plugin_path)|g' \
+@@ -69,12 +69,12 @@
+
+ .PHONY: prebuilt32
+ prebuilt32: config.make pluginloader-$(git_commit).tar.gz pluginloader-$(git_commit).tar.gz.sig
+-	$(gpgexec) --batch --no-default-keyring --keyring "share/sig-pluginloader.gpg" --verify "pluginloader-$(git_commit).tar.gz.sig"
++	$(gpg_exec) --batch --no-default-keyring --keyring "share/sig-pluginloader.gpg" --verify "pluginloader-$(git_commit).tar.gz.sig"
+	tar -xvf "pluginloader-$(git_commit).tar.gz" src/windows/pluginloader.exe src/winecheck/winecheck.exe
+
+ .PHONY: prebuilt64
+ prebuilt64: config.make pluginloader-$(git_commit).tar.gz pluginloader-$(git_commit).tar.gz.sig
+-	$(gpgexec) --batch --no-default-keyring --keyring "share/sig-pluginloader.gpg" --verify "pluginloader-$(git_commit).tar.gz.sig"
++	$(gpg_exec) --batch --no-default-keyring --keyring "share/sig-pluginloader.gpg" --verify "pluginloader-$(git_commit).tar.gz.sig"
+	tar -xvf "pluginloader-$(git_commit).tar.gz" src/windows/pluginloader64.exe src/winecheck/winecheck64.exe
+
+ .PHONY: pluginloader32
+diff -urN pipelight.old/share/install-dependency pipelight.new/share/install-dependency
+--- pipelight.old/share/install-dependency	2014-07-19 22:53:02.000000000 +0200
++++ pipelight.new/share/install-dependency	2014-07-26 23:26:18.431938546 +0200
+@@ -734,42 +734,14 @@
+	return 0
+ }
+
+-# Use fetch on FreeBSD if wget is not available
+-if command -v wget >/dev/null 2>&1; then
+-	download_file()
+-	{
+-		wget -O "$1" "$2"
+-	}
+-	get_download_size()
+-	{
+-		local filesize="$(wget -O- "$1" --spider --server-response 2>&1 | sed -ne '/Content-Length/{s/.*: //;p}')"
+-		local re='^[0-9]+$'
+-		if [[ "$filesize" -ne "0" ]] && [[ "$filesize" =~ $re ]]; then
+-			echo "$(($filesize/(1024*1024)))"
+-		else
+-			echo "N/A"
+-		fi
+-	}
+-elif command -v fetch >/dev/null 2>&1; then
+-	download_file()
+-	{
+-		fetch -o "$1" "$2"
+-	}
+-	get_download_size()
+-	{
+-		echo "N/A"
+-	}
+-else
+-	download_file()
+-	{
+-		echo "ERROR: Could neither find wget nor fetch. Unable to download file!" >&2
+-		return 1
+-	}
+-	get_download_size()
+-	{
+-		echo "N/A"
+-	}
+-fi
++download_file()
++{
++	curl --cacert /etc/ssl/certs/ca-bundle.crt -o "$1" "$2"
++}
++get_download_size()
++{
++	echo "N/A"
++}
+
+ # Use shasum instead of sha256sum on MacOS / *BSD
+ if ! command -v sha256sum >/dev/null 2>&1 && command -v shasum >/dev/null 2>&1; then