about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-01-07 02:07:42 +0000
committerAlyssa Ross <hi@alyssa.is>2019-01-27 14:58:17 +0000
commitb39db41257649ae6168b5818852da6181ba7fe14 (patch)
treeda3efa6dd7fddb435eaba844f441b9bd0a9f35da
parent2bb1e7eb075f7f97e4b446536342627fdc382041 (diff)
downloadnixlib-b39db41257649ae6168b5818852da6181ba7fe14.tar
nixlib-b39db41257649ae6168b5818852da6181ba7fe14.tar.gz
nixlib-b39db41257649ae6168b5818852da6181ba7fe14.tar.bz2
nixlib-b39db41257649ae6168b5818852da6181ba7fe14.tar.lz
nixlib-b39db41257649ae6168b5818852da6181ba7fe14.tar.xz
nixlib-b39db41257649ae6168b5818852da6181ba7fe14.tar.zst
nixlib-b39db41257649ae6168b5818852da6181ba7fe14.zip
firefox-{nightly,beta,,esr}: init (from source)
-rw-r--r--nixpkgs-overlays/nixpkgs-mozilla/firefox-overlay.nix62
1 files changed, 58 insertions, 4 deletions
diff --git a/nixpkgs-overlays/nixpkgs-mozilla/firefox-overlay.nix b/nixpkgs-overlays/nixpkgs-mozilla/firefox-overlay.nix
index 083b9fbbe683..98648ba42688 100644
--- a/nixpkgs-overlays/nixpkgs-mozilla/firefox-overlay.nix
+++ b/nixpkgs-overlays/nixpkgs-mozilla/firefox-overlay.nix
@@ -39,13 +39,17 @@ let
 
   # The timestamp argument is a yyyy-mm-dd-hh-mm-ss date, which corresponds to
   # one specific version. This is used mostly for bisecting.
-  versionInfo = { name, version, release, system ? arch, timestamp ? null }: with builtins;
+  versionInfo =
+    { name, version, release, source ? false, system ? arch, timestamp ? null }:
+    with builtins;
     if release then
       # For versions such as Beta & Release:
       # https://download.cdn.mozilla.net/pub/firefox/releases/55.0b3/SHA256SUMS
       let
         dir = "https://download.cdn.mozilla.net/pub/firefox/releases/${version}";
-        file = "${system}/en-US/firefox-${version}.tar.bz2";
+        file = if source
+               then "source/firefox-${version}.source.tar.xz"
+               else "${system}/en-US/firefox-${version}.tar.bz2";
       in rec {
         chksum = "${dir}/SHA512SUMS";
         chksumSig = "${chksum}.asc";
@@ -59,7 +63,8 @@ let
         dir =
           if timestamp == null then "https://download.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-central"
           else "https://download.cdn.mozilla.net/pub/firefox/nightly/${yearOf timestamp}/${monthOf timestamp}/${timestamp}-mozilla-central" ;
-        file = "firefox-${version}.en-US.${system}.tar.bz2";
+        name = "firefox-${version}.en-US.${system}";
+        file = "${name}.tar.bz2";
       in rec {
         chksum = "${dir}/firefox-${version}.en-US.${system}.checksums";
         chksumSig = "${chksum}.asc";
@@ -68,6 +73,7 @@ let
         # <hash> sha256 62733881 firefox-56.0a1.en-US.linux-x86_64.tar.bz2
         url = "${dir}/${file}";
         sha512 = head (match ".*[\n]([0-9a-f]*) sha512 [0-9]* ${file}[\n].*" (readFile (fetchurl chksum)));
+        rev = (fromJSON (readFile (fetchurl "${dir}/${name}.json"))).moz_source_stamp;
       };
 
   # From the version info, check the authenticity of the check sum file, such
@@ -99,6 +105,34 @@ let
       '';
   };
 
+  firefoxVersionFromSource = version:
+    let
+      info = versionInfo (version // { source = true; });
+      common = import <nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix>;
+    in
+      self.callPackage (common {
+        pname = "firefox-${version.version}";
+        ffversion = version.version;
+        src =
+          if version.release then
+            fetchVersion info
+          else
+            fetchTarball "https://hg.mozilla.org/mozilla-central/archive/${info.rev}.tar.bz2";
+        meta = self.firefox-unwrapped.meta // {
+          description = "A web browser built from Firefox source tree";
+        };
+        extraNativeBuildInputs = [ self.python3 ];
+      }) {
+        inherit (self.gnome2) libIDL;
+        libpng = self.libpng_apng;
+        gnused = self.gnused_422;
+        icu = self.icu63;
+        inherit (self.darwin.apple_sdk.frameworks) CoreMedia ExceptionHandling
+                                                   Kerberos AVFoundation MediaToolbox
+                                                   CoreLocation Foundation AddressBook;
+        inherit (self.darwin) libobjc;
+      };
+
   firefoxVersion = version:
     let info = versionInfo version; in
     super.wrapFirefox ((self.firefox-bin-unwrapped.override {
@@ -146,6 +180,26 @@ in
       version = firefox_versions.FIREFOX_ESR;
       release = true;
     };
+    firefox-nightly = firefoxVersionFromSource {
+      name = "Firefox Nightly";
+      version = firefox_versions.FIREFOX_NIGHTLY;
+      release = false;
+    };
+    firefox-beta = firefoxVersionFromSource {
+      name = "Firefox Beta";
+      version = firefox_versions.LATEST_FIREFOX_DEVEL_VERSION;
+      release = true;
+    };
+    firefox = firefoxVersionFromSource {
+      name = "Firefox";
+      version = firefox_versions.LATEST_FIREFOX_VERSION;
+      release = true;
+    };
+    firefox-esr = firefoxVersionFromSource {
+      name = "Firefox Esr";
+      version = firefox_versions.FIREFOX_ESR;
+      release = true;
+    };
   };
 
   # Set of packages which used to build developer environment
@@ -159,7 +213,7 @@ in
 
       rust-cbindgen =
         if !(self ? "rust-cbindgen") then self.rust-cbindgen-latest
-        else if builtins.compareVersions self.rust-cbindgen.version "0.6.7" < 0
+        else if builtins.compareVersions self.rust-cbindgen.version "0.6.8" < 0
         then self.rust-cbindgen-latest else self.rust-cbindgen;
 
       # Due to std::ascii::AsciiExt changes in 1.23, Gecko does not compile, so