diff options
Diffstat (limited to 'pkgs/aszlig')
-rwxr-xr-x | pkgs/aszlig/aacolorize/aacolorize.py | 182 | ||||
-rw-r--r-- | pkgs/aszlig/aacolorize/default.nix | 13 | ||||
-rw-r--r-- | pkgs/aszlig/axbo/default.nix | 53 | ||||
-rw-r--r-- | pkgs/aszlig/default.nix | 14 | ||||
-rw-r--r-- | pkgs/aszlig/git-detach/default.nix | 33 | ||||
-rw-r--r-- | pkgs/aszlig/grandpa/default.nix | 18 | ||||
-rw-r--r-- | pkgs/aszlig/librxtx-java/default.nix | 47 | ||||
-rw-r--r-- | pkgs/aszlig/lockdev/default.nix | 23 | ||||
-rw-r--r-- | pkgs/aszlig/nixops/default.nix | 37 | ||||
-rw-r--r-- | pkgs/aszlig/pvolctrl/default.nix | 35 | ||||
-rw-r--r-- | pkgs/aszlig/santander/default.nix | 155 | ||||
-rw-r--r-- | pkgs/aszlig/santander/pipelight.patch | 13 | ||||
-rw-r--r-- | pkgs/aszlig/santander/wine-no-unixfs.patch | 292 | ||||
-rw-r--r-- | pkgs/aszlig/santander/winscard.patch | 11 | ||||
-rw-r--r-- | pkgs/aszlig/tomahawk/default.nix | 90 |
15 files changed, 1016 insertions, 0 deletions
diff --git a/pkgs/aszlig/aacolorize/aacolorize.py b/pkgs/aszlig/aacolorize/aacolorize.py new file mode 100755 index 00000000..ff19b687 --- /dev/null +++ b/pkgs/aszlig/aacolorize/aacolorize.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python +import os +import sys + +from optparse import Option, OptionParser + +COLORS = { + "k": (30, "Black"), + "r": (31, "Red"), + "g": (32, "Green"), + "y": (33, "Yellow"), + "b": (34, "Blue"), + "p": (35, "Pink"), + "c": (36, "Cyan"), + "w": (37, "White"), +} + +ESC = chr(27) + +class ColorizeError(Exception): + pass + +class Color(object): + def __init__(self, ident=None): + """ + Initialize a color object, if no `ident` is given or it's invalid, + the Color object represents "no color". + """ + if ident is not None: + spec = COLORS.get(ident.lower(), None) + else: + spec = None + + if spec is None: + self.ident = None + self.bold = False + self.code = None + self.name = "None" + else: + self.ident = ident + self.code, self.name = spec + + if ident.isupper(): + self.bold = True + else: + self.bold = False + + @property + def attrs(self): + """ + A tuple consisting of the SGR attributes. + """ + if self.ident is None: + return () + + if self.bold: + return (1, self.code) + else: + return (self.code,) + + def sgr_attrs(self, *attrs): + """ + Return the attributes specified by `attrs` formatted according + to the CSI specification. + """ + return ';'.join(map(lambda c: str(c), attrs)) + + def sgr(self, *attrs): + """ + Start Set Graphics Rendition + Return the CSI escape code for `attrs`. + """ + return "%s[%sm" % (ESC, self.sgr_attrs(*attrs)) + + def sgr_start(self): + """ + Start Set Graphics Rendition + Return the CSI start escape code for the current color. + """ + return self.sgr(*self.attrs) + + def sgr_stop(self): + """ + Clear Set Graphics Rendition + """ + return self.sgr() + + def apply(self, value): + """ + Apply the current color to the string in `value`. + """ + return "%s%s%s" % (self.sgr_start(), value, self.sgr_stop()) + + def describe(self): + """ + Return the description of the current color IN color :-) + """ + fmt = "%c: <ESC>[%sm -> [%s]" + return fmt % ( + self.ident, + self.sgr_attrs(*self.attrs), + self.apply(self.name) + ) + + def transform_to(self, new_color): + """ + Return the CSI sequences needed to transform into `new_color`. + """ + if self.ident is None and new_color.ident is not None: + return new_color.sgr_start() + elif self.ident is not None and new_color.ident is None: + return self.sgr_stop() + elif self.ident is None and new_color.ident is None: + return '' + elif self.code == new_color.code: + if not self.bold and new_color.bold: + return self.sgr(1) + elif self.bold and not new_color.bold: + return self.sgr(22) + elif self.bold == new_color.bold: + return '' + else: + if self.bold and new_color.bold: + return new_color.sgr(new_color.code) + + return self.sgr_stop()+new_color.sgr_start() + + def __repr__(self): + if self.bold: + return "<Bold color %s>" % self.name.lower() + else: + return "<Color %s>" % self.name.lower() + +def print_colortable(): + for ident in COLORS.iterkeys(): + normal = Color(ident).describe() + bold = Color(ident.upper()).describe() + sys.stdout.write("%-35s%s\n" % (normal, bold)) + +def colorize_art(art, colmap): + if len(art) != len(colmap): + raise ColorizeError("Art and colormap differ in size!") + + no_color = Color() + + out = "" + last_color = no_color + for i, char in enumerate(colmap): + color = Color(char) + out += last_color.transform_to(color) + art[i] + last_color = color + + last_color.transform_to(no_color) + + return out + +def colorize_file(artfile, mapfile=None): + if mapfile is None: + mapfile = os.path.splitext(artfile)[0]+'.colmap' + + asciiart = open(artfile, 'r').read() + colormap = open(mapfile, 'r').read() + + return colorize_art(asciiart, colormap) + +if __name__ == "__main__": + parser = OptionParser(usage="%prog [options] artfile [mapfile]") + parser.add_option("-t", "--table", action="store_true", dest="table", + help="Show color table and exit.") + + (options, args) = parser.parse_args() + + if options.table: + print_colortable() + parser.exit() + + if not len(args) in (1, 2): + parser.print_help() + parser.exit() + else: + colorized = colorize_file(*args) + sys.stdout.write(colorized) diff --git a/pkgs/aszlig/aacolorize/default.nix b/pkgs/aszlig/aacolorize/default.nix new file mode 100644 index 00000000..ef36f4e0 --- /dev/null +++ b/pkgs/aszlig/aacolorize/default.nix @@ -0,0 +1,13 @@ +{ pythonPackages, runCommand }: + +pythonPackages.buildPythonPackage { + name = "aacolorize"; + src = runCommand "aacolorize-src" {} '' + mkdir -p "$out" + cp "${./aacolorize.py}" "$out/aacolorize" + cat > "$out/setup.py" <<SETUP + from distutils.core import setup + setup(name='aacolorize', scripts=['aacolorize']) + SETUP + ''; +} diff --git a/pkgs/aszlig/axbo/default.nix b/pkgs/aszlig/axbo/default.nix new file mode 100644 index 00000000..fe503863 --- /dev/null +++ b/pkgs/aszlig/axbo/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, fetchFromGitHub, jdk, jre, ant, makeWrapper +, commonsLogging, librxtx_java +}: + +stdenv.mkDerivation rec { + name = "axbo-research-${version}"; + version = "3.0.12"; + + src = fetchFromGitHub { + owner = "jansolo"; + repo = "aXbo-research"; + #rev = "aXbo-research_${version}"; + # Includes MIT license: + rev = "6e6888917b5f200a44509650d6f46ec42c133cdc"; + sha256 = "0nbyxajl75q80cnyl9c0sjlyk3rmhm7k8w8mksg4lfyh78ynayyc"; + }; + + sourceRoot = "${src.name}/aXbo-research"; + + buildInputs = [ jdk ant makeWrapper ]; + + buildPhase = '' + ant -Dplatforms.JDK_1.7.home="$JAVA_HOME" jar + ''; + + extraJars = [ + "commons-beanutils-1.8.3" + "commons-digester3-3.2" + "commons-io-2.4" + "jcommon-1.0.20" + "jfreechart-1.0.16" + "streamflyer-core-1.0.1" + "swingx-all-1.6.4" + ]; + + installPhase = with stdenv.lib; let + classpath = makeSearchPath "share/java/\\*" [ + "$out" + commonsLogging + librxtx_java + ]; + in '' + for dep in $extraJars; do + install -vD -m 644 "lib/$dep.jar" "$out/share/java/$dep.jar" + done + install -vD -m 644 dist/axbo.jar "$out/share/java/axbo.jar" + + mkdir -p "$out/bin" + makeWrapper "${jre}/bin/java" "$out/bin/axbo-research" \ + --add-flags "-Djava.library.path='${librxtx_java}/lib'" \ + --add-flags "-cp ${classpath} com.dreikraft.axbo.Axbo" + ''; +} diff --git a/pkgs/aszlig/default.nix b/pkgs/aszlig/default.nix new file mode 100644 index 00000000..1d2a3e0b --- /dev/null +++ b/pkgs/aszlig/default.nix @@ -0,0 +1,14 @@ +{ callPackage, callPackage_i686, boost155 }: + +{ + aacolorize = callPackage ./aacolorize { }; + axbo = callPackage ./axbo { }; + git-detach = callPackage ./git-detach { }; + grandpa = callPackage ./grandpa { }; + nixops = callPackage ./nixops { }; + librxtx_java = callPackage ./librxtx-java { }; + lockdev = callPackage ./lockdev { }; + pvolctrl = callPackage ./pvolctrl { }; + santander = callPackage_i686 ./santander { }; + tomahawk = callPackage ./tomahawk { boost = boost155; }; +} diff --git a/pkgs/aszlig/git-detach/default.nix b/pkgs/aszlig/git-detach/default.nix new file mode 100644 index 00000000..fb20843e --- /dev/null +++ b/pkgs/aszlig/git-detach/default.nix @@ -0,0 +1,33 @@ +{ writeScriptBin, stdenv, git, coreutils, patch }: + +writeScriptBin "git-detach" '' + #!${stdenv.shell} + + if [ $# -le 0 -o "$1" = "--help" -o "$1" = "-h" ]; then + echo "Usage: $0 COMMAND [ARGS...]" >&2 + echo >&2 + echo "Run COMMAND in a clean Git working directory" >&2 + echo "without untracked files and .git directory." >&2 + exit 1 + fi + + diffToHead="$("${git}/bin/git" diff HEAD)" + + if tmpdir="$("${coreutils}/bin/mktemp" -d git-detach.XXXXXXXXXX)"; then + trap "rm -rf '${"\${tmpdir//\\'/\\'\\\\\\'\\'}"}'" EXIT + "${git}/bin/git" archive --format=tar HEAD | ( + set -e + basedir="$tmpdir/$("${coreutils}/bin/basename" "$(pwd)")" + mkdir "$basedir" + cd "$basedir" + tar x + if [ -n "$diffToHead" ]; then + echo "$diffToHead" | "${patch}/bin/patch" -s -p1 + fi + exec "$@" + ) + exit $? + else + echo "Unable to create temporary directory!" >&2 + fi +'' diff --git a/pkgs/aszlig/grandpa/default.nix b/pkgs/aszlig/grandpa/default.nix new file mode 100644 index 00000000..f37f6b2f --- /dev/null +++ b/pkgs/aszlig/grandpa/default.nix @@ -0,0 +1,18 @@ +{ fetchFromGitHub, pythonPackages, gpm }: + +pythonPackages.buildPythonPackage { + name = "grandpa-0.5"; + namePrefix = ""; + + src = fetchFromGitHub { + owner = "aszlig"; + repo = "GrandPA"; + rev = "d8d2571f732a68ed18be7533244db2cfb822b4c1"; + sha256 = "19zf3pnr1adngncvinvn8yyvc0sj66lp7lwiql6379rf78xxlmhn"; + }; + + doCheck = false; + + buildInputs = [ pythonPackages.cython gpm ]; + propagatedBuildInputs = [ pythonPackages.pyserial ]; +} diff --git a/pkgs/aszlig/librxtx-java/default.nix b/pkgs/aszlig/librxtx-java/default.nix new file mode 100644 index 00000000..1553a146 --- /dev/null +++ b/pkgs/aszlig/librxtx-java/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl, fetchpatch, unzip, jdk, lockdev }: + +stdenv.mkDerivation rec { + name = "rxtx-${version}"; + version = "2.2pre2"; + + src = fetchurl { + urls = [ + "http://rxtx.qbang.org/pub/rxtx/${name}.zip" + "ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/${name}.zip" + ]; + sha256 = "00sv9604hkq81mshih0fhqfzn4mf01d6rish6vplsi0gfqz3fc1w"; + }; + + patches = let + baseurl = "https://sources.debian.net/data/main/" + + "r/rxtx/2.2pre2-13/debian/patches"; + in [ + (fetchpatch { + url = "${baseurl}/fhs_lock_buffer_overflow_fix.patch"; + sha256 = "1v31q6ciy5v6bm5z8a1wssqn4nwvbcg4nnplgsvv1h8mzdq2832i"; + }) + (fetchpatch { + url = "${baseurl}/fix_snprintf.patch"; + sha256 = "09r9jca0hb13bx85l348jkxnh1p0g5i0d6dnpm142vlwsj0d7afy"; + }) + (fetchpatch { + url = "${baseurl}/format_security.patch"; + sha256 = "0adg7y9ak4xvgyswdhx6fsxq8jlb8y55xl3s6l0p8w0mfrhw7ysk"; + }) + ]; + + buildInputs = [ unzip jdk lockdev ]; + + NIX_CFLAGS_COMPILE = "-DUTS_RELEASE=\"3.8.0\""; + + configureFlags = [ "--enable-liblock" ]; + + makeFlags = [ + "JHOME=$(out)/share/java" + "RXTX_PATH=$(out)/lib" + ]; + + preInstall = '' + mkdir -p "$out/lib" "$out/share/java" + ''; +} diff --git a/pkgs/aszlig/lockdev/default.nix b/pkgs/aszlig/lockdev/default.nix new file mode 100644 index 00000000..52e78eb5 --- /dev/null +++ b/pkgs/aszlig/lockdev/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, perl }: + +let + baseurl = "ftp://ftp.debian.org/debian/pool/main/l/lockdev/"; +in stdenv.mkDerivation rec { + name = "lockdev-${version}"; + version = "1.0.3"; + + buildInputs = [ perl ]; + + patches = stdenv.lib.singleton (fetchurl { + url = baseurl + "lockdev_1.0.3-1.5.diff.gz"; + sha256 = "1l3pq1nfb5qx3i91cjaiz3c53368gw6m28a5mv9391n5gmsdmi3r"; + }); + + NIX_CFLAGS_COMPILE = "-fPIC -D_PATH_LOCK=\"/tmp\""; + installFlags = [ "basedir=$(out)" ]; + + src = fetchurl { + url = baseurl + "lockdev_${version}.orig.tar.gz"; + sha256 = "10lzhq6r2dn8y3ki7wlqsa8s3ndkf842bszcjw4dbzf3g9fn7bnc"; + }; +} diff --git a/pkgs/aszlig/nixops/default.nix b/pkgs/aszlig/nixops/default.nix new file mode 100644 index 00000000..f97e3716 --- /dev/null +++ b/pkgs/aszlig/nixops/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchFromGitHub, fetchpatch, git }: + +let + rev = "bbf9a792d06c9a60c74dabe2937a9dfda9bff8f7"; + sha256 = "0a1mx0ngp0zg65r1rx99rina4wbfjyzrziw2z9788v629j58p4jd"; + + master = stdenv.mkDerivation rec { + name = "nixops-upstream-patched"; + + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nixops"; + inherit rev sha256; + }; + + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + + postPatch = '' + sed -i -re 's!<nixpkgs([^>]*)>!${import ../../../nixpkgs-path.nix}\1!g' \ + release.nix doc/manual/default.nix doc/manual/resource.nix + ''; + + installPhase = '' + cp -a . "$out" + ''; + }; + + release = import "${master}/release.nix" { + nixopsSrc = { + outPath = master; + inherit rev; + revCount = 0; + shortRev = builtins.substring 0 7 rev; + }; + officialRelease = false; + }; +in stdenv.lib.getAttr stdenv.system release.build diff --git a/pkgs/aszlig/pvolctrl/default.nix b/pkgs/aszlig/pvolctrl/default.nix new file mode 100644 index 00000000..5701c19e --- /dev/null +++ b/pkgs/aszlig/pvolctrl/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl, pkgconfig, libpulseaudio }: + +stdenv.mkDerivation rec { + name = "pvolctrl-0.23"; + + unpackPhase = let + baseurl = "https://sites.google.com/site/guenterbartsch/blog/" + + "volumecontrolutilityforpulseaudio/"; + makefile = fetchurl { + url = baseurl + "Makefile"; + sha256 = "0l2ffvb617csk6h29y64v6ywhpcp7la6vvcip1w4nq0yry6jhrqz"; + }; + source = fetchurl { + url = baseurl + "pvolctrl.c"; + sha256 = "0vcd5dlw9l47jpabwmmzdvlkn67fz55dr3sryyh56sl263mibjda"; + }; + in '' + mkdir -p "${name}" + sed -e 's|/usr/bin/||' "${makefile}" > "${name}/Makefile" + sed -e 's/PA_VOLUME_MAX/PA_VOLUME_NORM/ + /avg_vol += (avg_vol \* vol_mod) \/ 100;/ { + s/(avg_vol/((int)PA_VOLUME_NORM/ + } + /if (vol_mod)/i \ + if (info->name == NULL || strncmp(info->name, "combined", 8) != 0) \ + return;' "${source}" > "${name}/pvolctrl.c" + sourceRoot="${name}" + ''; + + installPhase = '' + install -D -T pvolctrl "$out/bin/pvolctrl" + ''; + + buildInputs = [ pkgconfig libpulseaudio ]; +} diff --git a/pkgs/aszlig/santander/default.nix b/pkgs/aszlig/santander/default.nix new file mode 100644 index 00000000..9f6690b0 --- /dev/null +++ b/pkgs/aszlig/santander/default.nix @@ -0,0 +1,155 @@ +{ stdenv, fetchurl, fetchgit, fetchFromBitbucket +, runCommand, writeScript, writeScriptBin, writeText +, xvfb_run, xdotool, coreutils, wineMinimal, pipelight, dwb-unwrapped, pcsclite +}: + +let + name = "SecurityPluginHBCIChipcard"; + version = "2.9.8.0"; + dllName = "NP_${name}.dll"; + + pluginInstaller = fetchurl { + url = "https://service.santanderbank.de/special/banking/files/" + + "SecurityPluginHBCIChipcard-${version}-Installer.exe"; + sha256 = "0xnfb730mwxdx83dnqyplp4bxwx6g01wc87xa4dl1spxia9kjmmh"; + }; + + patchedWine = let + libpcsclite = "${pcsclite}/lib/libpcsclite.so"; + in (wineMinimal.override { + wineBuild = "wine32"; + wineRelease = "staging"; + }).overrideDerivation (drv: { + scard4wine = fetchgit { + url = "git://git.code.sf.net/p/scard4wine/code"; + rev = "c14c02c80bf1f2bb4cedd1f53a3a2ab9c48bed76"; + sha256 = "0ffmbl9mdnaih4h3ggpnzqbih3kgbwl3wv6j1ag5s4czn8gcpdq3"; + }; + + prePatch = (drv.prePatch or "") + '' + cp -t dlls/winscard "$scard4wine/src/"* + sed -i -re 's,"libpcsclite\.so(\.[0-9]+)*","${libpcsclite}",' \ + dlls/winscard/winscard.c + ''; + + patches = (drv.patches or []) ++ [ ./winscard.patch ]; + + postPatch = (drv.postPatch or "") + '' + sed -i -e '/not owned by you/d' libs/wine/config.c + # Modified patch from https://bugs.winehq.org/show_bug.cgi?id=22450 + patch -p1 < "${./wine-no-unixfs.patch}" + ''; + }); + + installPath = [ "Program Files" "ppi" "SecurityPluginHBCIChipcard" ]; + + scard4wine = stdenv.mkDerivation rec { + name = "scard4wine-${version}"; + version = "1.2.0-2016-06-05"; + + src = fetchgit { + url = "git://git.code.sf.net/p/scard4wine/code"; + rev = "c14c02c80bf1f2bb4cedd1f53a3a2ab9c48bed76"; + sha256 = "0ffmbl9mdnaih4h3ggpnzqbih3kgbwl3wv6j1ag5s4czn8gcpdq3"; + }; + }; + + winePrefix = runCommand "santander-wineprefix" { + installPath = stdenv.lib.concatStringsSep "/" (installPath ++ [ dllName ]); + } '' + export WINEPREFIX="$out" + export WINEDLLOVERRIDES="mscoree,mshtml=" + mkdir -p "$out" + ${patchedWine}/bin/wine wineboot.exe + ${xvfb_run}/bin/xvfb-run "${writeScript "install-santander-wine" '' + ${patchedWine}/bin/wine "${pluginInstaller}" & + while [ "$(jobs -r | wc -l)" -gt 0 ]; do + ${xdotool}/bin/xdotool \ + search --sync --onlyvisible \ + --name 'Security-Plugin-HBCI-Chipcard ${version}' \ + key Return &> /dev/null || : + sleep 1 + done + wait + ''}" + if [ ! -e "$out/drive_c/$installPath" ]; then + echo "Unable to find plugin in $installPath." >&2 + exit 1 + fi + ln -sf -T "${builtins.storeDir}" "$WINEPREFIX/dosdevices/z:" + echo disable > "$WINEPREFIX/.update-timestamp" + ''; + + pluginConfig = { + winePath = "$share/wine"; + inherit winePrefix dllName; + wineArch = "win32"; + pluginLoaderPath = "$share/pluginloader.exe"; + dllPath = "c:\\${stdenv.lib.concatStringsSep "\\" installPath}"; + }; + + pipelightConfigFile = let + mkVal = val: if val == true then "true" + else if val == false then "false" + else toString val; + mkCfgLine = key: val: "# ${key} = ${mkVal val}"; + in with stdenv.lib; writeText "pipelight-santander.config" '' + # ---BEGIN CONFIG--- + ${concatStringsSep "\n" (mapAttrsToList mkCfgLine pluginConfig)} + # ---END CONFIG--- + ''; + + finalPlugin = runCommand "santander-plugin" { + pipelight = (pipelight.override { + wineStaging = patchedWine; + }).overrideDerivation (drv: { + src = fetchFromBitbucket { + repo = "pipelight"; + owner = "mmueller2012"; + rev = "181bab804f80b99cb46f63f9ed36e4fdf12ca319"; + sha256 = "0ydivpxayzs5aklf0x5vl5bl4issz10k7zl3cv76649kxxhxkh1z"; + }; + + patches = [ ./pipelight.patch ]; + + postPatch = (drv.postPatch or "") + '' + sed -i -e '/static \+bool \+openConfig.*{$/,/}/ { + /getConfigNameFromLibrary/a \ + configFile.open("${pipelightConfigFile}"); \ + if (configFile.is_open()) return true; + }' src/linux/libpipelight/configloader.c + ''; + + # We don't want or have share/pipelight/install-dependency! + preFixup = null; + }); + } '' + install -vD "$pipelight/lib/pipelight/libpipelight.so" \ + "$out/lib/pipelight/libpipelight-santander.so" + ''; + + # Allow to use dwb for now until we have a better solution. + dwb = dwb-unwrapped.override { + inherit (import (import ../../../nixpkgs-path.nix) { + inherit (stdenv) system; + config = { + permittedInsecurePackages = [ "webkitgtk-2.4.11" ]; + }; + }) webkitgtk2; + }; + + inherit (stdenv.lib) escapeShellArg; + +in writeScriptBin "santander" '' + #!${stdenv.shell} + if tmpdir="$("${coreutils}/bin/mktemp" -d)"; then + trap "rm -rf '$tmpdir'" EXIT + export HOME="$tmpdir" + export MOZ_PLUGIN_PATH=${escapeShellArg "${finalPlugin}/lib/pipelight"} + "${dwb}/bin/dwb" -t https://karte.santanderbank.de/ + exit $? + else + echo "Unable to create temporary profile directory." >&2 + exit 1 + fi +'' diff --git a/pkgs/aszlig/santander/pipelight.patch b/pkgs/aszlig/santander/pipelight.patch new file mode 100644 index 00000000..3a07da72 --- /dev/null +++ b/pkgs/aszlig/santander/pipelight.patch @@ -0,0 +1,13 @@ +diff --git a/src/windows/pluginloader/pluginloader.c b/src/windows/pluginloader/pluginloader.c +index 9e8556f..c50be2a 100644 +--- a/src/windows/pluginloader/pluginloader.c ++++ b/src/windows/pluginloader/pluginloader.c +@@ -1510,7 +1510,7 @@ void dispatcher(int functionid, Stack &stack){ + NPObject *objectValue; + NPError result; + +- if (variable == NPPVpluginScriptableNPObject) ++ if (variable == NPPVpluginScriptableNPObject && pluginFuncs.getvalue) + result = pluginFuncs.getvalue(instance, variable, &objectValue); + else{ + DBG_WARN("FUNCTION_NPP_GETVALUE_OBJECT - variable %d not allowed", variable); diff --git a/pkgs/aszlig/santander/wine-no-unixfs.patch b/pkgs/aszlig/santander/wine-no-unixfs.patch new file mode 100644 index 00000000..b0e6a9e9 --- /dev/null +++ b/pkgs/aszlig/santander/wine-no-unixfs.patch @@ -0,0 +1,292 @@ +diff -urN wine-1.9.7-orig/dlls/krnl386.exe16/int21.c wine-1.9.7/dlls/krnl386.exe16/int21.c +--- wine-1.9.7-orig/dlls/krnl386.exe16/int21.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/krnl386.exe16/int21.c 2016-04-10 02:33:20 +0900 +@@ -35,6 +35,7 @@ + # include <unistd.h> + #endif + ++#include "ntstatus.h" + #include "windef.h" + #include "winbase.h" + #include "winreg.h" +@@ -842,11 +843,13 @@ + */ + static HANDLE INT21_CreateMagicDeviceHandle( LPCWSTR name ) + { ++ HANDLE ret; ++ NTSTATUS status; ++ ++#if 0 + static const WCHAR prefixW[] = {'\\','?','?','\\','u','n','i','x'}; + const char *dir = wine_get_server_dir(); + int len; +- HANDLE ret; +- NTSTATUS status; + OBJECT_ATTRIBUTES attr; + UNICODE_STRING nameW; + IO_STATUS_BLOCK io; +@@ -875,12 +878,16 @@ + status = NtCreateFile( &ret, GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE, &attr, &io, NULL, 0, + FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN_IF, + FILE_SYNCHRONOUS_IO_ALERT, NULL, 0 ); ++ RtlFreeUnicodeString( &nameW ); ++#else ++ status = STATUS_NOT_IMPLEMENTED; ++#endif ++ + if (status) + { + ret = 0; + SetLastError( RtlNtStatusToDosError(status) ); + } +- RtlFreeUnicodeString( &nameW ); + return ret; + } + +diff -urN wine-1.9.7-orig/dlls/krnl386.exe16/vxd.c wine-1.9.7/dlls/krnl386.exe16/vxd.c +--- wine-1.9.7-orig/dlls/krnl386.exe16/vxd.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/krnl386.exe16/vxd.c 2016-04-10 02:33:20 +0900 +@@ -113,11 +113,13 @@ + /* create a file handle to represent a VxD, by opening a dummy file in the wineserver directory */ + static HANDLE open_vxd_handle( LPCWSTR name ) + { ++ HANDLE ret; ++ NTSTATUS status; ++ ++#if 0 + static const WCHAR prefixW[] = {'\\','?','?','\\','u','n','i','x'}; + const char *dir = wine_get_server_dir(); + int len; +- HANDLE ret; +- NTSTATUS status; + OBJECT_ATTRIBUTES attr; + UNICODE_STRING nameW; + IO_STATUS_BLOCK io; +@@ -146,12 +148,16 @@ + status = NtCreateFile( &ret, SYNCHRONIZE, &attr, &io, NULL, 0, + FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN_IF, + FILE_SYNCHRONOUS_IO_ALERT, NULL, 0 ); ++ RtlFreeUnicodeString( &nameW ); ++#else ++ status = STATUS_NOT_IMPLEMENTED; ++#endif ++ + if (status) + { + ret = 0; + SetLastError( RtlNtStatusToDosError(status) ); + } +- RtlFreeUnicodeString( &nameW ); + return ret; + } + +diff -urN wine-1.9.7-orig/dlls/ntdll/directory.c wine-1.9.7/dlls/ntdll/directory.c +--- wine-1.9.7-orig/dlls/ntdll/directory.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/ntdll/directory.c 2016-04-10 02:33:20 +0900 +@@ -3098,8 +3098,10 @@ + NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret, + UINT disposition, BOOLEAN check_case ) + { ++#if 0 + static const WCHAR unixW[] = {'u','n','i','x'}; + static const WCHAR pipeW[] = {'p','i','p','e'}; ++#endif + static const WCHAR invalid_charsW[] = { INVALID_NT_CHARS, 0 }; + + NTSTATUS status = STATUS_SUCCESS; +@@ -3143,11 +3145,13 @@ + name_len -= prefix_len; + + /* check for invalid characters (all chars except 0 are valid for unix and pipes) */ ++#if 0 + if (prefix_len == 4) + { + is_unix = !memcmp( prefix, unixW, sizeof(unixW) ); + is_pipe = !memcmp( prefix, pipeW, sizeof(pipeW) ); + } ++#endif + if (is_unix || is_pipe) + { + for (p = name; p < name + name_len; p++) +diff -urN wine-1.9.7-orig/dlls/ntdll/path.c wine-1.9.7/dlls/ntdll/path.c +--- wine-1.9.7-orig/dlls/ntdll/path.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/ntdll/path.c 2016-04-10 02:33:20 +0900 +@@ -1025,7 +1025,9 @@ + NTSTATUS CDECL wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt ) + { + static const WCHAR prefixW[] = {'\\','?','?','\\','A',':','\\'}; ++#if 0 + static const WCHAR unix_prefixW[] = {'\\','?','?','\\','u','n','i','x'}; ++#endif + unsigned int lenW, lenA = name->Length; + const char *path = name->Buffer; + char *cwd; +@@ -1065,6 +1067,7 @@ + + if (status != STATUS_SUCCESS) + { ++#if 0 + if (status == STATUS_OBJECT_PATH_NOT_FOUND) + { + lenW = ntdll_umbstowcs( 0, path, lenA, NULL, 0 ); +@@ -1084,6 +1087,7 @@ + for (p = nt->Buffer + sizeof(unix_prefixW)/sizeof(WCHAR); *p; p++) if (*p == '/') *p = '\\'; + status = STATUS_SUCCESS; + } ++#endif + goto done; + } + while (lenA && path[0] == '/') { lenA--; path++; } +diff -urN wine-1.9.7-orig/dlls/shell32/folders.c wine-1.9.7/dlls/shell32/folders.c +--- wine-1.9.7-orig/dlls/shell32/folders.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/shell32/folders.c 2016-04-10 02:33:20 +0900 +@@ -236,9 +236,11 @@ + *piIndex = -IDI_SHELL_MY_DOCUMENTS; + else if(IsEqualGUID(riid, &CLSID_NetworkPlaces)) + *piIndex = -IDI_SHELL_MY_NETWORK_PLACES; ++#if 0 + else if(IsEqualGUID(riid, &CLSID_UnixFolder) || + IsEqualGUID(riid, &CLSID_UnixDosFolder)) + *piIndex = -IDI_SHELL_DRIVE; ++#endif + else + *piIndex = -IDI_SHELL_FOLDER; + } +diff -urN wine-1.9.7-orig/dlls/shell32/shellole.c wine-1.9.7/dlls/shell32/shellole.c +--- wine-1.9.7-orig/dlls/shell32/shellole.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/shell32/shellole.c 2016-04-10 02:33:20 +0900 +@@ -78,8 +78,10 @@ + {&CLSID_ShellFSFolder, IFSFolder_Constructor}, + {&CLSID_ShellItem, IShellItem_Constructor}, + {&CLSID_ShellLink, IShellLink_Constructor}, ++#if 0 + {&CLSID_UnixDosFolder, UnixDosFolder_Constructor}, + {&CLSID_UnixFolder, UnixFolder_Constructor}, ++#endif + {&CLSID_ExplorerBrowser,ExplorerBrowser_Constructor}, + {&CLSID_KnownFolderManager, KnownFolderManager_Constructor}, + {&CLSID_Shell, IShellDispatch_Constructor}, +diff -urN wine-1.9.7-orig/dlls/shell32/shellpath.c wine-1.9.7/dlls/shell32/shellpath.c +--- wine-1.9.7-orig/dlls/shell32/shellpath.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/shell32/shellpath.c 2016-04-10 02:33:20 +0900 +@@ -4481,9 +4481,11 @@ + DWORD call_for_attr; + } folders[] = + { ++#if 0 + { &CLSID_UnixFolder, TRUE, FALSE, FALSE }, + { &CLSID_UnixDosFolder, TRUE, FALSE, FALSE, + SFGAO_FILESYSANCESTOR|SFGAO_FOLDER|SFGAO_HASSUBFOLDER, SFGAO_FILESYSTEM }, ++#endif + { &CLSID_FolderShortcut, FALSE, FALSE, FALSE, + SFGAO_FILESYSTEM|SFGAO_FOLDER|SFGAO_LINK, + SFGAO_HASSUBFOLDER|SFGAO_FILESYSTEM|SFGAO_FOLDER|SFGAO_FILESYSANCESTOR }, +@@ -4613,9 +4615,11 @@ + *ppidl = _ILCreateDesktop(); + break; + ++#if 0 + case CSIDL_PERSONAL: + *ppidl = _ILCreateMyDocuments(); + break; ++#endif + + case CSIDL_INTERNET: + *ppidl = _ILCreateIExplore(); +diff -urN wine-1.9.7-orig/dlls/shell32/shfldr.h wine-1.9.7/dlls/shell32/shfldr.h +--- wine-1.9.7-orig/dlls/shell32/shfldr.h 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/shell32/shfldr.h 2016-04-10 02:33:20 +0900 +@@ -75,5 +75,7 @@ + void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags) DECLSPEC_HIDDEN; + BOOL SHELL_FS_HideExtension(LPCWSTR pwszPath) DECLSPEC_HIDDEN; + ++#if 0 + DEFINE_GUID( CLSID_UnixFolder, 0xcc702eb2, 0x7dc5, 0x11d9, 0xc6, 0x87, 0x00, 0x04, 0x23, 0x8a, 0x01, 0xcd ); + DEFINE_GUID( CLSID_UnixDosFolder, 0x9d20aae8, 0x0625, 0x44b0, 0x9c, 0xa7, 0x71, 0x88, 0x9c, 0x22, 0x54, 0xd9 ); ++#endif +diff -urN wine-1.9.7-orig/dlls/shell32/shfldr_desktop.c wine-1.9.7/dlls/shell32/shfldr_desktop.c +--- wine-1.9.7-orig/dlls/shell32/shfldr_desktop.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/shell32/shfldr_desktop.c 2016-04-10 02:33:20 +0900 +@@ -186,26 +186,30 @@ + } + else if (PathGetDriveNumberW (lpszDisplayName) >= 0) + { ++#if 0 + /* + * UNIXFS can't handle drives without a mount point yet. We fall back + * to use the MyComputer interface if we can't get the file attributes + * on the device. + */ + char drivePath[] = "A:\\"; + drivePath[0] = 'A' + PathGetDriveNumberW(lpszDisplayName); + + /* it's a filesystem path with a drive. Let MyComputer/UnixDosFolder parse it */ + if (UNIXFS_is_rooted_at_desktop() && + GetFileAttributesA(drivePath) != INVALID_FILE_ATTRIBUTES) + { + pidlTemp = _ILCreateGuid(PT_GUID, &CLSID_UnixDosFolder); + TRACE("Using unixfs for %s\n", debugstr_w(lpszDisplayName)); + } + else + { ++#endif + pidlTemp = _ILCreateMyComputer (); + TRACE("Using MyComputer for %s\n", debugstr_w(lpszDisplayName)); ++#if 0 + } ++#endif + szNext = lpszDisplayName; + } + else if (PathIsUNCW(lpszDisplayName)) +diff -urN wine-1.9.7-orig/dlls/shell32/shfldr_unixfs.c wine-1.9.7/dlls/shell32/shfldr_unixfs.c +--- wine-1.9.7-orig/dlls/shell32/shfldr_unixfs.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/dlls/shell32/shfldr_unixfs.c 2016-04-10 02:33:20 +0900 +@@ -167,7 +167,7 @@ + + WINE_DEFAULT_DEBUG_CHANNEL(shell); + +-#if !defined(__MINGW32__) && !defined(_MSC_VER) ++#if 0 + + #define LEN_SHITEMID_FIXED_PART ((USHORT) \ + ( sizeof(USHORT) /* SHITEMID's cb field. */ \ +@@ -2569,6 +2569,7 @@ + * FALSE, if not. + */ + BOOL UNIXFS_is_rooted_at_desktop(void) { ++#if 0 + HKEY hKey; + WCHAR wszRootedAtDesktop[69 + CHARS_IN_GUID] = { + 'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\', +@@ -2582,5 +2583,6 @@ + RegCloseKey(hKey); + return TRUE; + } ++#endif + return FALSE; + } +diff -urN wine-1.9.7-orig/include/config.h.in wine-1.9.7/include/config.h.in +--- wine-1.9.7-orig/include/config.h.in 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/include/config.h.in 2016-04-10 02:33:20 +0900 +@@ -7,6 +7,9 @@ + /* Define to a function attribute for Microsoft hotpatch assembly prefix. */ + #undef DECLSPEC_HOTPATCH + ++/* Define to enable unixfs */ ++#undef ENABLE_UNIXFS ++ + /* Define to the file extension for executables. */ + #undef EXEEXT + +diff -urN wine-1.9.7-orig/programs/wineboot/wineboot.c wine-1.9.7/programs/wineboot/wineboot.c +--- wine-1.9.7-orig/programs/wineboot/wineboot.c 2016-04-02 00:02:39 +0900 ++++ wine-1.9.7/programs/wineboot/wineboot.c 2016-04-10 02:33:20 +0900 +@@ -946,7 +946,7 @@ + 'I','n','s','t','a','l','l','H','i','n','f','S','e','c','t','i','o','n',0}; + static const WCHAR definstall[] = {' ','D','e','f','a','u','l','t','I','n','s','t','a','l','l',0}; + static const WCHAR wowinstall[] = {' ','W','o','w','6','4','I','n','s','t','a','l','l',0}; +- static const WCHAR inf[] = {' ','1','2','8',' ','\\','\\','?','\\','u','n','i','x',0 }; ++ static const WCHAR inf[] = {' ','1','2','8',' ','z',':',0 }; + + WCHAR app[MAX_PATH + sizeof(rundll)/sizeof(WCHAR)]; + STARTUPINFOW si; diff --git a/pkgs/aszlig/santander/winscard.patch b/pkgs/aszlig/santander/winscard.patch new file mode 100644 index 00000000..7dfa04ac --- /dev/null +++ b/pkgs/aszlig/santander/winscard.patch @@ -0,0 +1,11 @@ +--- a/dlls/winscard/winscard.c 1970-01-01 01:00:01.000000000 +0100 ++++ b/dlls/winscard/winscard.c 2016-06-06 01:52:53.631444433 +0200 +@@ -1527,7 +1527,7 @@ + { + LONG lRet; + TRACE(" 0x%08X %p %p %p %p %p %p\n",(unsigned int) hCard,mszReaderNames,pcchReaderLen,pdwState,pdwProtocol,pbAtr,pcbAtrLen); +- if(!pcchReaderLen || !pdwState || !pdwProtocol || !pcbAtrLen) ++ if(!pcchReaderLen || !pcbAtrLen) + lRet = SCARD_E_INVALID_PARAMETER; + else if(!liteSCardStatus) + lRet = SCARD_F_INTERNAL_ERROR; diff --git a/pkgs/aszlig/tomahawk/default.nix b/pkgs/aszlig/tomahawk/default.nix new file mode 100644 index 00000000..ee006d46 --- /dev/null +++ b/pkgs/aszlig/tomahawk/default.nix @@ -0,0 +1,90 @@ +{ stdenv, fetchFromGitHub, fetchurl, cmake, pkgconfig, boost, gnutls +, libechonest, liblastfm, lucenepp, kdeFrameworks, qt5, libsForQt5, sparsehash +, taglib, websocketpp, ffmpeg_2, v4l_utils, libtasn1, libidn, p11_kit + +, enableXMPP ? true, libjreen ? null +, enableKDE ? false, kdelibs ? null +, enableTelepathy ? false, telepathy_qt ? null +}: + +assert enableXMPP -> libjreen != null; +assert enableKDE -> kdelibs != null; +assert enableTelepathy -> telepathy_qt != null; + +with stdenv.lib; + +let + useQT5 = pkg: let + qt5variant = pkg.override (attrs: { + ${if attrs ? qt4 then "qt4" else "qt"} = qt5.qtbase; + }); + in qt5variant.overrideDerivation (drv: { + postInstall = (drv.postInstall or "") + '' + for i in "$out"/include/*; do + [ -d "$i" ] || continue + ! expr "$i" : '.*5$$' > /dev/null || continue + ln -sv "$i" "''${i}5" + done + for l in "$out"/lib*/*.so*; do + bn="$(basename "$l")" + ! expr "''${bn%.so*}" : '.*5$$' > /dev/null || continue + ln -sv "$l" "$(dirname "$l")/''${bn%.so*}5.''${bn#*.}" + done + ''; + }); + + libechonestQT5 = overrideDerivation ((useQT5 libechonest).override { + qjson = null; + }) (drv: { + cmakeFlags = (drv.cmakeFlags or []) ++ [ "-DBUILD_WITH_QT4=OFF" ]; + }); + + jreenPatched = overrideDerivation (useQT5 libjreen) (drv: { + postPatch = (drv.postPatch or "") + '' + sed -i -e 's/QMetaTypeId/QMap/g' src/stanzaextension.h + ''; + }); + +in stdenv.mkDerivation rec { + name = "tomahawk-${version}"; + version = "0.9.0-git"; + + src = fetchFromGitHub { + owner = "tomahawk-player"; + repo = "tomahawk"; + rev = "97a407f83701ee2343e4826043c311c03fe5675b"; + sha256 = "1palfsn8kz8q0xb19xhiwy3n993q2kifz9dy1ry5cnys7706l9b8"; + }; + + postPatch = '' + sed -i -e '/set(QUAZIP_LIB_VERSION_SUFFIX/d' CMakeModules/FindQuaZip.cmake + sed -i -e 's,quazip5/,quazip/,' src/libtomahawk/utils/TomahawkUtils.cpp + ''; + + cmakeFlags = [ + "-DLUCENEPP_INCLUDE_DIR=${lucenepp}/include" + "-DLUCENEPP_LIBRARY_DIR=${lucenepp}/lib" + ]; + + nativeBuildInputs = [ cmake pkgconfig kdeFrameworks.extra-cmake-modules ]; + + buildInputs = [ + libtasn1 libidn p11_kit + libsForQt5.attica libsForQt5.qca-qt5 libsForQt5.qtkeychain libsForQt5.quazip + libsForQt5.vlc qt5.qtbase qt5.qtsvg qt5.qttools qt5.qtwebkit qt5.qtx11extras + ] ++ map useQT5 [ liblastfm ] ++ [ + boost gnutls lucenepp sparsehash taglib websocketpp libechonestQT5 + ] ++ stdenv.lib.optional enableXMPP jreenPatched + ++ stdenv.lib.optional enableKDE (useQT5 kdelibs) + ++ stdenv.lib.optional enableTelepathy (useQT5 telepathy_qt); + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A multi-source music player"; + homepage = "http://tomahawk-player.org/"; + license = licenses.gpl3Plus; + platforms = platforms.all; + maintainers = [ maintainers.aszlig ]; + }; +} |