summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
blob: f29f569cd3a0cbbdb32d33d67de2be5f653c1935 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
{ stdenv
, lib
, fetchurl
, zlib
, alsaLib
, curl
, nspr
, fontconfig
, freetype
, expat
, libX11
, libXext
, libXrender
, libXcursor
, libXt
, libvdpau
, gtk
, glib
, pango
, cairo
, atk
, gdk_pixbuf
, nss
, unzip
, debug ? false

/* you have to add ~/mm.cfg :

    TraceOutputFileEnable=1
    ErrorReportingEnable=1
    MaxWarnings=1

  in order to read the flash trace at ~/.macromedia/Flash_Player/Logs/flashlog.txt
  Then FlashBug (a FireFox plugin) shows the log as well
*/

}:

let
  arch =
    if      stdenv.system == "x86_64-linux" then
      if    debug then throw "no x86_64 debugging version available"
      else  "64bit"
    else if stdenv.system == "i686-linux"   then
      if    debug then "32bit_debug"
      else             "32bit"
    else throw "Flash Player is not supported on this platform";

  suffix =
    if      stdenv.system == "x86_64-linux" then
      if    debug then throw "no x86_64 debugging version available"
      else             "-release.x86_64"
    else if stdenv.system == "i686-linux"   then
      if    debug then "_linux_debug.i386"
      else             "_linux.i386"
    else throw "Flash Player is not supported on this platform";

  is-i686 = (stdenv.system == "i686-linux");
in
stdenv.mkDerivation rec {
  name = "flashplayer-${version}";
  version = "11.2.202.559";

  src = fetchurl {
    url = "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/fp_${version}_archive.zip";
    sha256 = "1vb01pd1jhhh86r01nwdzcf66d72jksiyiyp92hs4khy6n5qfsl3";
  };

  buildInputs = [ unzip ];

  postUnpack = ''
    pushd $sourceRoot
    tar -xvzf *${arch}/*${suffix}.tar.gz

    ${ lib.optionalString is-i686 ''
       tar -xvzf */*_sa.*.tar.gz
       tar -xvzf */*_sa_debug.*.tar.gz
    ''}

    popd
  '';

  sourceRoot = "fp_${version}_archive";

  dontStrip = true;
  dontPatchELF = true;

  outputs = [ "out" ] ++ lib.optionals is-i686 ["sa" "saDbg" ];

  installPhase = ''
    mkdir -p $out/lib/mozilla/plugins
    cp -pv libflashplayer.so $out/lib/mozilla/plugins
    patchelf --set-rpath "$rpath" $out/lib/mozilla/plugins/libflashplayer.so

    ${ lib.optionalString is-i686 ''
       mkdir -p $sa/bin
       cp flashplayer $sa/bin/

       patchelf \
         --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
         --set-rpath "$rpath" \
         $sa/bin/flashplayer


       mkdir -p $saDbg/bin
       cp flashplayerdebugger $saDbg/bin/

       patchelf \
         --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
         --set-rpath "$rpath" \
         $saDbg/bin/flashplayerdebugger
    ''}
  '';

  passthru = {
    mozillaPlugin = "/lib/mozilla/plugins";
  };

  rpath = stdenv.lib.makeLibraryPath
    [ zlib alsaLib curl nspr fontconfig freetype expat libX11
      libXext libXrender libXcursor libXt gtk glib pango atk cairo gdk_pixbuf
      libvdpau nss
    ];

  meta = {
    description = "Adobe Flash Player browser plugin";
    homepage = http://www.adobe.com/products/flashplayer/;
    license = stdenv.lib.licenses.unfree;
    maintainers = [];
    platforms = [ "x86_64-linux" "i686-linux" ];
  };
}