diff --git a/pkgs/applications/networking/browsers/firefox/builder.sh b/pkgs/applications/networking/browsers/firefox/builder.sh index d53ff776a15..b025a71d425 100644 --- a/pkgs/applications/networking/browsers/firefox/builder.sh +++ b/pkgs/applications/networking/browsers/firefox/builder.sh @@ -13,22 +13,40 @@ ac_add_options --enable-strip ac_add_options --enable-default-toolkit=gtk2 #ac_add_options --disable-shared #ac_add_options --enable-static +#ac_add_options --with-system-jpeg +#ac_add_options --with-system-png +#ac_add_options --with-system-zlib EOF } +postInstall=postInstall +postInstall() { + + # Strip some more stuff + strip -S $out/lib/*/* || true + + # We don't need this (do we?) + rm -rf $out/include + + # This fixes starting Firefox when there already is a running + # instance. The `firefox' wrapper script actually expects to be + # in the same directory as `run-mozilla.sh', apparently. + cd $out/bin + mv firefox ../lib/firefox-*/ + ln -s ../lib/firefox-*/firefox . + + # Register extension etc. + echo "running firefox -register..." + (cd $out/lib/firefox-* && LD_LIBRARY_PATH=. ./firefox-bin -register) || false + + echo "running regxpcom..." + (cd $out/lib/firefox-* && LD_LIBRARY_PATH=. ./regxpcom) || false + + echo "running regchrome..." + (cd $out/lib/firefox-* && LD_LIBRARY_PATH=. ./regchrome) || false + +} + makeFlags="-f client.mk build" genericBuild - -# Strip some more stuff -strip -S $out/lib/*/* || true - -# We don't need this (do we?) -rm -rf $out/include - -# This fixes starting Firefox when there already is a running -# instance. The `firefox' wrapper script actually expects to be in -# the same directory as `run-mozilla.sh', apparently. -cd $out/bin -mv firefox ../lib/firefox-*/ -ln -s ../lib/firefox-*/firefox . diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix index eafbf4e425d..f100b270f94 100644 --- a/pkgs/applications/networking/browsers/firefox/default.nix +++ b/pkgs/applications/networking/browsers/firefox/default.nix @@ -12,4 +12,6 @@ stdenv.mkDerivation { }; buildInputs = [pkgconfig gtk perl zip libIDL libXi]; + + patches = [./writable-copies.patch]; } diff --git a/pkgs/applications/networking/browsers/firefox/writable-copies.patch b/pkgs/applications/networking/browsers/firefox/writable-copies.patch new file mode 100644 index 00000000000..e3c7752c031 --- /dev/null +++ b/pkgs/applications/networking/browsers/firefox/writable-copies.patch @@ -0,0 +1,23 @@ +diff -rc mozilla-orig/xpcom/io/nsLocalFileUnix.cpp mozilla/xpcom/io/nsLocalFileUnix.cpp +*** mozilla-orig/xpcom/io/nsLocalFileUnix.cpp 2004-04-03 01:48:18.000000000 +0200 +--- mozilla/xpcom/io/nsLocalFileUnix.cpp 2004-10-05 19:48:04.000000000 +0200 +*************** +*** 634,639 **** +--- 634,640 ---- + // get the dirs old permissions + if (NS_FAILED(rv = GetPermissions(&oldPerms))) + return rv; ++ oldPerms |= 0200; + if (NS_FAILED(rv = newParent->Create(DIRECTORY_TYPE, oldPerms))) + return rv; + } else { // dir exists lets try to use leaf +*************** +*** 758,763 **** +--- 759,765 ---- + // get the old permissions + PRUint32 myPerms; + GetPermissions(&myPerms); ++ myPerms |= 0200; + + // Create the new file with the old file's permissions, even if write + // permission is missing. We can't create with write permission and