From a70ab23409d4a56c0bc6db7446e38693b470008d Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 4 Oct 2018 21:01:26 +0300 Subject: [PATCH 1/5] chromium: remove gtk2 from build inputs (gtk3 should be enough) --- pkgs/applications/networking/browsers/chromium/common.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index aa59daa168e..7ec94f3ab12 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -11,7 +11,7 @@ , nspr, systemd, kerberos , utillinux, alsaLib , bison, gperf -, glib, gtk2, gtk3, dbus-glib +, glib, gtk3, dbus-glib , libXScrnSaver, libXcursor, libXtst, libGLU_combined , protobuf, speechd, libXdamage, cups , ffmpeg, libxslt, libxml2, at-spi2-core @@ -119,7 +119,7 @@ let nspr nss systemd utillinux alsaLib bison gperf kerberos - glib gtk2 gtk3 dbus-glib + glib gtk3 dbus-glib libXScrnSaver libXcursor libXtst libGLU_combined pciutils protobuf speechd libXdamage ] ++ optional gnomeKeyringSupport libgnome-keyring3 From 254a16c42e20a6b7375a7cf856a8ee69b7ba8d63 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Tue, 30 Oct 2018 17:10:14 +0200 Subject: [PATCH 2/5] chroimum: Improve jumbo reproducibility A little patch to jumbo script, which should improve reproducibility by sorting source files before merge. --- .../networking/browsers/chromium/common.nix | 1 + .../browsers/chromium/patches/jumbo-sorted.patch | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index 7ec94f3ab12..bc0d9a5c2b0 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -132,6 +132,7 @@ let patches = optional enableWideVine ./patches/widevine.patch ++ [ ./patches/nix_plugin_paths_68.patch ./patches/remove-webp-include-69.patch + ./patches/jumbo-sorted.patch # Unfortunately, chromium regularly breaks on major updates and # then needs various patches backported in order to be compiled with GCC. diff --git a/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch b/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch new file mode 100644 index 00000000000..cdf0f695f76 --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch @@ -0,0 +1,11 @@ +--- chromium-70.0.3538.67/build/config/merge_for_jumbo.py.old 2018-10-25 19:15:54.578222230 +0300 ++++ chromium-70.0.3538.67/build/config/merge_for_jumbo.py 2018-10-25 19:20:44.397613032 +0300 +@@ -132,6 +132,8 @@ + assert not inputs + continue + ++ inputs.sort() ++ outputs.sort() + write_jumbo_files(inputs, outputs, written_input_set, written_output_set) + + assert set(args.outputs) == written_output_set, "Did not fill all outputs" From 7b49bd4894e7763f3c5dd2868f6813e5f81615f5 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Fri, 2 Nov 2018 16:43:56 +0200 Subject: [PATCH 3/5] chromium: avoid timestamp build Use $SOURCE_DATE_EPOCH instead --- .../networking/browsers/chromium/common.nix | 1 + .../chromium/patches/no-build-timestamps.patch | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index bc0d9a5c2b0..de0dd9843ff 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -133,6 +133,7 @@ let ./patches/nix_plugin_paths_68.patch ./patches/remove-webp-include-69.patch ./patches/jumbo-sorted.patch + ./patches/no-build-timestamps.patch # Unfortunately, chromium regularly breaks on major updates and # then needs various patches backported in order to be compiled with GCC. diff --git a/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch b/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch new file mode 100644 index 00000000000..3234b7279f7 --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch @@ -0,0 +1,15 @@ +--- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig 2018-11-02 16:00:34.368933077 +0200 ++++ chromium-70.0.3538.67/build/compute_build_timestamp.py 2018-11-03 18:35:20.542943107 +0200 +@@ -94,6 +94,12 @@ + 'build_type', help='The type of build', choices=('official', 'default')) + args = argument_parser.parse_args() + ++ # I don't trust LASTCHANGE magic, and I definelly want something deterministic here ++ SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None) ++ if SOURCE_DATE_EPOCH is not None: ++ print SOURCE_DATE_EPOCH ++ return 0 ++ + # The mtime of the revision in build/util/LASTCHANGE is stored in a file + # next to it. Read it, to get a deterministic time close to "now". + # That date is then modified as described at the top of the file so that From d0351ad3b65b1d2aa489c8ad25eeb3617efc1a5c Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 8 Nov 2018 04:07:27 +0200 Subject: [PATCH 4/5] chromium: fail build, if SOURCE_DATE_EPOCH not set Also fix spacing style to conform google style --- .../chromium/patches/no-build-timestamps.patch | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch b/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch index 3234b7279f7..e06d848095c 100644 --- a/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch +++ b/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch @@ -1,14 +1,16 @@ --- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig 2018-11-02 16:00:34.368933077 +0200 -+++ chromium-70.0.3538.67/build/compute_build_timestamp.py 2018-11-03 18:35:20.542943107 +0200 -@@ -94,6 +94,12 @@ ++++ chromium-70.0.3538.67/build/compute_build_timestamp.py 2018-11-08 04:06:21.658105129 +0200 +@@ -94,6 +94,14 @@ 'build_type', help='The type of build', choices=('official', 'default')) args = argument_parser.parse_args() + # I don't trust LASTCHANGE magic, and I definelly want something deterministic here + SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None) + if SOURCE_DATE_EPOCH is not None: -+ print SOURCE_DATE_EPOCH -+ return 0 ++ print SOURCE_DATE_EPOCH ++ return 0 ++ else: ++ raise RuntimeError("SOURCE_DATE_EPOCH not set") + # The mtime of the revision in build/util/LASTCHANGE is stored in a file # next to it. Read it, to get a deterministic time close to "now". From 9ae406c0749bbc7373d7422edeaf6b1b6caa0dae Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Sun, 18 Nov 2018 02:51:12 +0200 Subject: [PATCH 5/5] chromium: rename "unwrapped" package to chromium-unwrapped --- pkgs/applications/networking/browsers/chromium/common.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index de0dd9843ff..5558281e145 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -103,7 +103,7 @@ let else result; base = rec { - name = "${packageName}-${version}"; + name = "${packageName}-unwrapped-${version}"; inherit (upstream-info) version; inherit packageName buildType buildPath;