Received: (at 50384) by debbugs.gnu.org; 21 Sep 2021 16:55:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 21 12:55:49 2021 Received: from localhost ([127.0.0.1]:47731 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mSj3W-00044n-62 for submit <at> debbugs.gnu.org; Tue, 21 Sep 2021 12:55:48 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36634) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1mSj3T-00044U-9z for 50384 <at> debbugs.gnu.org; Tue, 21 Sep 2021 12:55:40 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:58740) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mSj3L-0004PK-Dw; Tue, 21 Sep 2021 12:55:32 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=35942 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mSj3J-0004Xq-Of; Tue, 21 Sep 2021 12:55:31 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Maxime Devos <maximedevos@HIDDEN> Subject: [PATCH v4] Optimise search-patch (reducing I/O) References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <87tuj0xaja.fsf@HIDDEN> <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> <87ee9xerac.fsf_-_@HIDDEN> Date: Tue, 21 Sep 2021 18:55:27 +0200 In-Reply-To: <87ee9xerac.fsf_-_@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s?= =?utf-8?Q?=22's?= message of "Thu, 09 Sep 2021 16:51:07 +0200") Message-ID: <87r1dhj2bk.fsf_-_@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi! I took the liberty to reopen this patch because there were good ideas IMO. I=E2=80=99m sorry if my many questions and lack of responsiveness cam= e out as a suggestion that this approach wasn=E2=80=99t good. Ludovic Court=C3=A8s <ludo@HIDDEN> skribis: >> +;; repeated 'stat' calls. Allow computing the hash of the file in adva= nce, >> +;; to avoid having to send the file to the daemon when it is already in= terned >> +;; in the store. >> (define-record-type <local-file> >> - (%%local-file file absolute name recursive? select?) >> + (%%local-file file absolute name sha256 recursive? select?) >> local-file? >> (file local-file-file) ;string >> (absolute %local-file-absolute-file-name) ;promise string >> (name local-file-name) ;string >> + (sha256 local-file-sha256) ;sha256 bytevector | = #f > > Could we store the result of =E2=80=98fixed-output-path=E2=80=99 rather t= han the SHA256, > while we=E2=80=99re at it? I tried that with the patch below, roughly taking the same approach as your patch series, but somewhat simplified, mostly so I could experiment. I changed just a few files to use the new =E2=80=98local-patches=E2=80=99 i= nstead of =E2=80=98search-patches=E2=80=99 (I thought it might make sense to introduc= e a new macro, to make it clear that =E2=80=98%package-module-path=E2=80=99 is not = used at all). The end result is that it works as intended :-), but it=E2=80=99s actually a tiny bit slower: on a cache hit, we do 2 RPCs (add-temp-root + valid-path?) instead of 1 (add-to-store). The extra round-trip is more expensive than the I/O we=E2=80=99re saving, at least on my laptop (with SS= D; it might be different with slower disk I/O and/or when talking to a remote daemon, as on clusters.) Now, this could be addressed by adding an =E2=80=98add-temp-root-if-valid= =E2=80=99 RPC, which would do both in one. We can estimate the performance of that strategy by commenting out the =E2=80=98add-temp-root*=E2=80=99 call (thus getting a single RPC) in =E2=80=98local-file-compiler=E2=80=99: this time it=E2=80=99s slightly fast= er, but we=E2=80=99re in the 1% range on the wall-clock time of =E2=80=98guix build pigx -d --no-grafts= =E2=80=99: --8<---------------cut here---------------start------------->8--- $ time GUIX_DISABLE_LOCAL_FILE_CACHE=3Dt ./pre-inst-env guix build pigx -d = --no-grafts /gnu/store/dqaknknlsw8a97xwjrhhd1g4jg71jqg7-pigx-0.0.3.drv real 0m3.488s user 0m3.718s sys 0m0.132s $ time GUIX_DISABLE_LOCAL_FILE_CACHE=3Dt ./pre-inst-env guix build pigx -d = --no-grafts /gnu/store/dqaknknlsw8a97xwjrhhd1g4jg71jqg7-pigx-0.0.3.drv real 0m3.501s user 0m3.722s sys 0m0.138s $ time ./pre-inst-env guix build pigx -d --no-grafts /gnu/store/dqaknknlsw8a97xwjrhhd1g4jg71jqg7-pigx-0.0.3.drv real 0m3.437s user 0m3.622s sys 0m0.174s $ time ./pre-inst-env guix build pigx -d --no-grafts /gnu/store/dqaknknlsw8a97xwjrhhd1g4jg71jqg7-pigx-0.0.3.drv real 0m3.492s user 0m3.708s sys 0m0.151s --8<---------------cut here---------------end--------------->8--- Perhaps the gains would be a bit higher if we change all the package files to use =E2=80=98local-patches=E2=80=99, but we probably can=E2=80=99t= expect a lot more anyway since that process is CPU-bound. So I don=E2=80=99t know. It feels like a worthy optimization, and one that= =E2=80=99s manageable from a maintenance viewpoint, but it buys us very little. Thoughts? Looking at the big picture, what I=E2=80=99d like to have is a package derivation cache designed in such a way that =E2=80=9Cguix install foo=E2= =80=9D wouldn=E2=80=99t even need to load any package module on a cache hit. That=E2=80=99d make a noticeable difference performance-wise, that=E2=80=99s another level of complexity=E2=80=A6 (I have a rough design in mind that we could discuss.) Ludo=E2=80=99. --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable diff --git a/gnu/packages.scm b/gnu/packages.scm index ccfc83dd11..4e7045e605 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 = Ludovic Court=C3=A8s <ludo@HIDDEN> +;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,= 2021 Ludovic Court=C3=A8s <ludo@HIDDEN> ;;; Copyright =C2=A9 2013 Mark H Weaver <mhw@HIDDEN> ;;; Copyright =C2=A9 2014 Eric Bavier <bavier@HIDDEN> ;;; Copyright =C2=A9 2016, 2017 Alex Kost <alezost@HIDDEN> @@ -34,6 +34,7 @@ #:use-module (guix profiles) #:use-module (guix describe) #:use-module (guix deprecation) + #:use-module (guix gexp) #:use-module (ice-9 vlist) #:use-module (ice-9 match) #:use-module (ice-9 binary-ports) @@ -46,6 +47,7 @@ #:use-module (srfi srfi-39) #:export (search-patch search-patches + local-patches search-auxiliary-file %patch-path %auxiliary-files-path @@ -101,6 +103,17 @@ FILE-NAME found in %PATCH-PATH." (list (search-patch file-name) ...)) =20 +(define-syntax local-patches + (lambda (s) + (syntax-case s () + ((_ files ...) + (let ((scoped (map (lambda (file) + (string-append "patches/" file)) + (syntax->datum #'(files ...))))) + (with-syntax (((scoped ...) (datum->syntax #'x scoped))) + #`(list (local-file scoped #:recursive? #t) + ...))))))) + (define %distro-root-directory ;; Absolute file name of the module hierarchy. Since (gnu packages =E2= =80=A6) might ;; live in a directory different from (guix), try to get the best match. diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index ea2e102c15..b449b5c2b5 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -106,7 +106,7 @@ command-line arguments, multiple languages, and so on.") (sha256 (base32 "1yy33kiwrxrwj2nxa4fg15bvmwyghqbs8qwkdvy5phm784f7brjq")) - (patches (search-patches "grep-timing-sensitive-test.patch")))) + (patches (local-patches "grep-timing-sensitive-test.patch")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) ;some of the tests requir= e it (inputs `(("pcre" ,pcre))) @@ -187,7 +187,7 @@ implementation offers several extensions over the stand= ard utility.") (sha256 (base32 "1n7xy657ii0sa42zx6944v2m4v9qrh6sqgmw17l3nch3y43sxlyh")) - (patches (search-patches "tar-skip-unreliable-tests.patch" + (patches (local-patches "tar-skip-unreliable-tests.patch" "tar-remove-wholesparse-check.patch")= ))) (build-system gnu-build-system) ;; Note: test suite requires ~1GiB of disk space. @@ -245,7 +245,7 @@ standard utility.") (sha256 (base32 "1zfqy4rdcy279vwn2z1kbv19dcfw25d2aqy9nzvdkq5bjzd0nqdc")) - (patches (search-patches "patch-hurd-path-max.patch")))) + (patches (local-patches "patch-hurd-path-max.patch")))) (build-system gnu-build-system) (arguments ;; Work around a cross-compilation bug whereby libpatch.a would provide @@ -298,7 +298,7 @@ interactive means to merge two files.") (sha256 (base32 "16kqz9yz98dasmj70jwf5py7jk558w96w0vgp3zf9xsqk3gzpzn5")) - (patches (search-patches "findutils-localstatedir.patch" + (patches (local-patches "findutils-localstatedir.patch" "findutils-test-rwlock-threads.patch"= )))) (build-system gnu-build-system) (arguments @@ -335,7 +335,7 @@ used to apply commands with arbitrarily long arguments.= ") (sha256 (base32 "1yjcrh5hw70c0yn8zw55pd6j51dj90anpq8mmg649ps9g3gdhn24")) - (patches (search-patches "coreutils-ls.patch")))) + (patches (local-patches "coreutils-ls.patch")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) ; TODO: add SELinux ("gmp" ,gmp) ;bignums in 'expr', yay! @@ -450,7 +450,7 @@ standard.") (sha256 (base32 "06cfqzpqsvdnsxbysl5p2fgdgxgl9y4p7scpnrfa8z2zgkjdspz0")) - (patches (search-patches "make-impure-dirs.patch")))) + (patches (local-patches "make-impure-dirs.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) ; to detect Guile (inputs `(("guile" ,guile-3.0))) @@ -518,7 +518,7 @@ change. GNU make offers many powerful extensions over = the standard utility.") (sha256 (base32 "1rin1f5c7wm4n3piky6xilcrpf2s0n3dd5vqq8irrxkcic3i1w49")) - (patches (search-patches "binutils-loongson-workaround.patch")= ))) + (patches (local-patches "binutils-loongson-workaround.patch"))= )) (build-system gnu-build-system) =20 ;; TODO: Add dependency on zlib + those for Gold. @@ -722,7 +722,7 @@ the store.") "use_ldconfig=3Dno")) #t)) (modules '((guix build utils))) - (patches (search-patches "glibc-ldd-x86_64.patch" + (patches (local-patches "glibc-ldd-x86_64.patch" "glibc-hidden-visibility-ldconfig.pat= ch" "glibc-versioned-locpath.patch" "glibc-allow-kernel-2.6.32.patch" @@ -938,7 +938,7 @@ the store.") ("python" ,python-minimal) =20 ,@(if (target-powerpc?) - `(("powerpc64le-patch" ,@(search-patches + `(("powerpc64le-patch" ,@(local-patches "glibc-ldd-powerpc.patc= h"))) '()) ,@(if (hurd-target?) @@ -979,7 +979,7 @@ with the Linux kernel.") (sha256 (base32 "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72")) - (patches (search-patches "glibc-ldd-x86_64.patch" + (patches (local-patches "glibc-ldd-x86_64.patch" "glibc-CVE-2019-19126.patch" "glibc-hidden-visibility-ldconfig.p= atch" "glibc-versioned-locpath.patch" @@ -997,7 +997,7 @@ with the Linux kernel.") (sha256 (base32 "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk")) - (patches (search-patches "glibc-ldd-x86_64.patch" + (patches (local-patches "glibc-ldd-x86_64.patch" "glibc-CVE-2019-7309.patch" "glibc-CVE-2019-9169.patch" "glibc-2.29-git-updates.patch" @@ -1017,7 +1017,7 @@ with the Linux kernel.") (sha256 (base32 "10iha5ynvdj5m62vgpgqbq4cwvc2yhyl2w9yyyjgfxmdmx8h145i")) - (patches (search-patches "glibc-ldd-x86_64.patch" + (patches (local-patches "glibc-ldd-x86_64.patch" "glibc-2.28-git-fixes.patch" "glibc-hidden-visibility-ldconfig.p= atch" "glibc-versioned-locpath.patch" @@ -1036,7 +1036,7 @@ with the Linux kernel.") (sha256 (base32 "0wpwq7gsm7sd6ysidv0z575ckqdg13cr2njyfgrbgh4f65adwwji")) - (patches (search-patches "glibc-ldd-x86_64.patch" + (patches (local-patches "glibc-ldd-x86_64.patch" "glibc-2.27-git-fixes.patch" "glibc-hidden-visibility-ldconfig.p= atch" "glibc-versioned-locpath.patch" diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.= scm index 2b67cab609..d35179f5bc 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -5108,7 +5108,7 @@ form of assemblies or reads.") (sha256 (base32 "0hyg2smw1nz69mfvjpk45xyyychmda92c80a0cv7baji84ri4iyn")) - (patches (search-patches "metabat-fix-compilation.patch")))) + (patches (local-patches "metabat-fix-compilation.patch")))) (build-system scons-build-system) (arguments `(#:scons ,scons-python2 @@ -6232,7 +6232,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.") (sha256 (base32 "1n2s5wvvj2y0vfgjkg1q11xahpbagxz7h2vf5q7qyy25s12kbzbd")) - (patches (search-patches "mosaicatcher-unbundle-htslib.patch= ")))) + (patches (local-patches "mosaicatcher-unbundle-htslib.patch"= )))) (build-system cmake-build-system) (arguments `(#:tests? #false ; there are no tests @@ -6454,7 +6454,7 @@ accessed/downloaded on demand across HTTP.") version "-src.zip")) (sha256 (base32 "0as8gxm4pjyc8dxmm1sl873rrd7wn5qs0l29nqfnl31x8i467xaa")) - (patches (search-patches "plink-1.07-unclobber-i.patch" + (patches (local-patches "plink-1.07-unclobber-i.patch" "plink-endian-detection.patch")))) (build-system gnu-build-system) (arguments @@ -7705,7 +7705,7 @@ includes software to (sha256 (base32 "0vhrpjfdf75ba04b24xknp41790cvcgwl0vgpy7qbzj5xh2521ss")) - (patches (search-patches "vsearch-unbundle-cityhash.patch")) + (patches (local-patches "vsearch-unbundle-cityhash.patch")) (snippet '(begin ;; Remove bundled cityhash sources. The vsearch source is adju= sted diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index e7bd6cf002..237540d7e3 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 = Ludovic Court=C3=A8s <ludo@HIDDEN> +;;; Copyright =C2=A9 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,= 2021 Ludovic Court=C3=A8s <ludo@HIDDEN> ;;; Copyright =C2=A9 2014 Andreas Enge <andreas@HIDDEN> ;;; Copyright =C2=A9 2012 Nikita Karetnikov <nikita@HIDDEN> ;;; Copyright =C2=A9 2014, 2015, 2017 Mark H Weaver <mhw@HIDDEN> @@ -2115,7 +2115,7 @@ ac_cv_c_float_format=3D'IEEE (little-endian)' (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) - (patches (search-patches "binutils-boot-2.20.1a.patch")) + (patches (local-patches "binutils-boot-2.20.1a.patch")) (sha256 (base32 "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi")))= )) @@ -2191,7 +2191,7 @@ ac_cv_c_float_format=3D'IEEE (little-endian)' (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.gz")) - (patches (search-patches "glibc-boot-2.16.0.patch" + (patches (local-patches "glibc-boot-2.16.0.patch" "glibc-bootstrap-system-2.16.0.pat= ch")) (sha256 (base32 @@ -3317,7 +3317,7 @@ memoized as a function of '%current-system'." ("perl" ,perl-boot0) ("python" ,python-boot0) ,@(if (target-powerpc?) - `(("powerpc64le-patch" ,@(search-patches + `(("powerpc64le-patch" ,@(local-patches "glibc-ldd-powerpc.patch"))) '()))) (inputs @@ -3471,7 +3471,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a= /~a \"$@\"~%" ;; This time we need 'msgfmt' to install all the libc.mo files. (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-ba= sh) ,@(if (target-powerpc?) - `(("powerpc64le-patch" ,@(search-patches + `(("powerpc64le-patch" ,@(local-patches "glibc-ldd-powerpc.pat= ch"))) '()) ("gettext" ,gettext-boot0))) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 493ff2659f..1576b90503 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -155,7 +155,7 @@ where the OS part is overloaded to denote a specific AB= I---into GCC (sha256 (base32 "10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj")) - (patches (search-patches "gcc-4-compile-with-gcc-5.patch" + (patches (local-patches "gcc-4-compile-with-gcc-5.patch" "gcc-fix-texi2pod.patch")))) (build-system gnu-build-system) =20 @@ -380,7 +380,7 @@ Go. It also includes runtime support libraries for the= se languages.") (sha256 (base32 "08yggr18v373a1ihj0rg2vd6psnic42b518xcgp3r9k81xz1xyr2")) - (patches (search-patches "gcc-arm-link-spec-fix.patch" + (patches (local-patches "gcc-arm-link-spec-fix.patch" "gcc-4.8-libsanitizer-fix.patch" "gcc-asan-missing-include.patch" "gcc-fix-texi2pod.patch")) @@ -413,7 +413,7 @@ Go. It also includes runtime support libraries for the= se languages.") (sha256 (base32 "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc")) - (patches (search-patches "gcc-4.9-libsanitizer-fix.patch" + (patches (local-patches "gcc-4.9-libsanitizer-fix.patch" "gcc-4.9-libsanitizer-ustat.patch" "gcc-4.9-libsanitizer-mode-size.pat= ch" "gcc-arm-bug-71399.patch" @@ -475,7 +475,7 @@ Go. It also includes runtime support libraries for the= se languages.") (sha256 (base32 "11zd1hgzkli3b2v70qsm2hyqppngd4616qc96lmm9zl2kl9yl32k")) - (patches (search-patches "gcc-arm-bug-71399.patch" + (patches (local-patches "gcc-arm-bug-71399.patch" "gcc-libsanitizer-ustat.patch" "gcc-strmov-store-file-names.patch" "gcc-5.0-libvtv-runpath.patch" @@ -514,7 +514,7 @@ Go. It also includes runtime support libraries for the= se languages.") (sha256 (base32 "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby")) - (patches (search-patches "gcc-strmov-store-file-names.patch" + (patches (local-patches "gcc-strmov-store-file-names.patch" "gcc-6-libsanitizer-mode-size.patch" "gcc-6-source-date-epoch-1.patch" "gcc-6-source-date-epoch-2.patch" @@ -544,7 +544,7 @@ Go. It also includes runtime support libraries for the= se languages.") (sha256 (base32 "0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq")) - (patches (search-patches "gcc-strmov-store-file-names.patch" + (patches (local-patches "gcc-strmov-store-file-names.patch" "gcc-7-libsanitizer-mode-size.patch" "gcc-5.0-libvtv-runpath.patch")))) (description @@ -563,7 +563,7 @@ It also includes runtime support libraries for these la= nguages."))) (sha256 (base32 "0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k")) - (patches (search-patches "gcc-8-strmov-store-file-names.patc= h" + (patches (local-patches "gcc-8-strmov-store-file-names.patch" "gcc-5.0-libvtv-runpath.patch" "gcc-8-sort-libtool-find-output.pat= ch")))))) =20 @@ -578,7 +578,7 @@ It also includes runtime support libraries for these la= nguages."))) (sha256 (base32 "13l3p6g2krilaawbapmn9zmmrh3zdwc36mfr3msxfy038hps6pf9")) - (patches (search-patches "gcc-9-strmov-store-file-names.patch" + (patches (local-patches "gcc-9-strmov-store-file-names.patch" "gcc-9-asan-fix-limits-include.patch" "gcc-5.0-libvtv-runpath.patch")))))) =20 @@ -593,7 +593,7 @@ It also includes runtime support libraries for these la= nguages."))) (sha256 (base32 "0i6378ig6h397zkhd7m4ccwjx5alvzrf2hm27p1pzwjhlv0h9x34")) - (patches (search-patches "gcc-9-strmov-store-file-names.patch" + (patches (local-patches "gcc-9-strmov-store-file-names.patch" "gcc-5.0-libvtv-runpath.patch")))))) =20 (define-public gcc-11 @@ -607,7 +607,7 @@ It also includes runtime support libraries for these la= nguages."))) (sha256 (base32 "12zs6vd2rapp42x154m479hg3h3lsafn3xhg06hp5hsldd9xr3nh")) - (patches (search-patches "gcc-9-strmov-store-file-names.patch" + (patches (local-patches "gcc-9-strmov-store-file-names.patch" "gcc-5.0-libvtv-runpath.patch")))))) =20 ;; Note: When changing the default gcc version, update @@ -1129,7 +1129,7 @@ dependence analysis and bounds on piecewise step-poly= nomials.") (sha256 (base32 "13d9cqa5rzhbjq0xf0b2dyxag7pqa72xj9dhsa03m8ccr1a4npq9")) - (patches (search-patches "isl-0.11.1-aarch64-support.patch"))= )))) + (patches (local-patches "isl-0.11.1-aarch64-support.patch")))= ))) =20 (define-public cloog (package diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 3bb57ee2bd..413c3cb01e 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -116,7 +116,7 @@ (sha256 (base32 "0hds28cg226m8j8sr394nm9yc4gxhvlv109w0avsf2mxrlrz0hsd")) - (patches (search-patches "python-2.7-search-paths.patch" + (patches (local-patches "python-2.7-search-paths.patch" "python-2-deterministic-build-info.patch" "python-2.7-site-prefixes.patch" "python-2.7-source-date-epoch.patch" @@ -370,7 +370,7 @@ data types.") (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) - (patches (search-patches + (patches (local-patches "python-CVE-2020-26116.patch" "python-3.8-CVE-2021-3177.patch" "python-3-fix-tests.patch" @@ -531,7 +531,7 @@ data types.") (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) - (patches (search-patches + (patches (local-patches "python-3.9-fix-tests.patch" "python-3-deterministic-build-info.patch" "python-3-search-paths.patch")) diff --git a/guix/gexp.scm b/guix/gexp.scm index f3d278b3e6..830fea6c1d 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -30,12 +30,15 @@ #:use-module (guix diagnostics) #:use-module (guix i18n) #:use-module (rnrs bytevectors) + #:autoload (gcrypt hash) (file-sha256 open-sha256-port) + #:autoload (guix serialization) (write-file) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-9 gnu) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) + #:use-module (srfi srfi-71) #:use-module (ice-9 format) #:use-module (ice-9 match) #:export (gexp @@ -59,6 +62,7 @@ local-file-name local-file-recursive? local-file-select? + local-file-cache-authoritative? =20 plain-file plain-file? @@ -421,27 +425,30 @@ Here TARGET is bound to the cross-compilation triplet= or #f." ;; absolute file name. We keep it in a promise to compute it lazily and a= void ;; repeated 'stat' calls. (define-record-type <local-file> - (%%local-file file absolute name recursive? select?) + (%%local-file file absolute name recursive? select? + store-file) local-file? (file local-file-file) ;string (absolute %local-file-absolute-file-name) ;promise string (name local-file-name) ;string (recursive? local-file-recursive?) ;Boolean - (select? local-file-select?)) ;string stat -> Boolean + (select? local-file-select?) ;string stat -> Boolean + (store-file local-file-store-file)) ;string | #f =20 (define (true file stat) #t) =20 (define* (%local-file file promise #:optional (name (basename file)) #:key (literal? #t) location - recursive? (select? true)) + recursive? (select? true) store-file) ;; This intermediate procedure is part of our ABI, but the underlying ;; %%LOCAL-FILE is not. (when (and (not literal?) (not (string-prefix? "/" file))) (warning (and=3D> location source-properties->location) (G_ "resolving '~a' relative to current directory~%") file)) - (%%local-file file promise name recursive? select?)) + (%%local-file file promise name recursive? select? + store-file)) =20 (define (absolute-file-name file directory) "Return the canonical absolute file name for FILE, which lives in the @@ -451,7 +458,7 @@ vicinity of DIRECTORY." ((not directory) file) ((string-prefix? "/" directory) (string-append directory "/" file)) - (else file)))) + (else (string-append directory "/" file))))) =20 (define-syntax-rule (assume-valid-file-name file) "This is a syntactic keyword to tell 'local-file' that it can assume that @@ -477,13 +484,43 @@ where FILE is the entry's absolute file name and STAT= is the result of This is the declarative counterpart of the 'interned-file' monadic procedu= re. It is implemented as a macro to capture the current source directory where= it appears." + (define (store-file-name file recursive?) + (pk 'f-o-p file recursive? + (fixed-output-path (basename file) + (if recursive? + (let ((port get-hash (open-sha256-port))) + (write-file file port) + (force-output port) + (get-hash)) + (file-sha256 file)) + #:hash-algo 'sha256 + #:recursive? recursive?))) + (syntax-case s (assume-valid-file-name) ((_ file rest ...) (string? (syntax->datum #'file)) ;; FILE is a literal, so resolve it relative to the source director= y. - #'(%local-file file - (delay (absolute-file-name file (current-source-dire= ctory))) - rest ...)) + (let* ((directory (and=3D> (syntax-source s) + (lambda (properties) + (and=3D> (assq-ref properties 'filename)= dirname)))) + (absolute (and directory + (absolute-file-name (syntax->datum #'file) + directory))) + (recursive? (equal? '(#:recursive? #t) + (syntax->datum #'(rest ...)))) + (store-file (and absolute + (or recursive? + (null? (syntax->datum #'(rest ...)))) + (catch 'system-error + (lambda () + (store-file-name absolute recursive?)) + (const #f))))) + #`(%local-file file + (delay (absolute-file-name file (current-source-di= rectory))) + #,@(if store-file + #`(#:store-file #,store-file) + #'()) + rest ...))) ((_ (assume-valid-file-name file) rest ...) ;; FILE is not a literal, so resolve it relative to the current ;; directory. Since the user declared FILE is valid, do not pass @@ -514,16 +551,34 @@ appears." 'system-error' exception is raised if FILE could not be found." (force (%local-file-absolute-file-name file))) =20 +(define valid-path?* + (store-lift valid-path?)) +(define add-temp-root* + (store-lift add-temp-root)) + +(define local-file-cache-authoritative? + (make-parameter (and (not (getenv "GUIX_DISABLE_LOCAL_FILE_CACHE")) + #;(not (getenv "GUIX_UNINSTALLED"))))) + (define-gexp-compiler (local-file-compiler (file <local-file>) system targ= et) ;; "Compile" FILE by adding it to the store. (match file - (($ <local-file> file (=3D force absolute) name recursive? select?) + (($ <local-file> file absolute name recursive? select? + store-file) ;; Canonicalize FILE so that if it's a symlink, it is resolved. Fail= ing ;; to do that, when RECURSIVE? is #t, we could end up creating a dang= ling ;; symlink in the store, and when RECURSIVE? is #f 'add-to-store' wou= ld ;; just throw an error, both of which are inconvenient. - (interned-file absolute name - #:recursive? recursive? #:select? select?)))) + (mlet %store-monad ((valid? (if (and store-file + (local-file-cache-authoritative?= )) + (mbegin %store-monad + ;; (add-temp-root* store-file) + (valid-path?* store-file)) + (return #f)))) + (if valid? + (return store-file) + (interned-file (force absolute) name + #:recursive? recursive? #:select? select?)))))) =20 (define-record-type <plain-file> (%plain-file name content references) --=-=-=--
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Ludovic Courtès <ludo@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Debbugs Internal Request <help-debbugs@HIDDEN>
to internal_control <at> debbugs.gnu.org
.
Full text available.Received: (at 50384-done) by debbugs.gnu.org; 10 Sep 2021 09:54:47 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Sep 10 05:54:47 2021 Received: from localhost ([127.0.0.1]:36902 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mOdF9-0006ui-Dh for submit <at> debbugs.gnu.org; Fri, 10 Sep 2021 05:54:47 -0400 Received: from albert.telenet-ops.be ([195.130.137.90]:49368) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mOdF7-0006uY-Hr for 50384-done <at> debbugs.gnu.org; Fri, 10 Sep 2021 05:54:46 -0400 Received: from butterfly.local ([213.251.110.34]) by albert.telenet-ops.be with bizsmtp id s9ui2500T0kaXst069ujJd; Fri, 10 Sep 2021 11:54:43 +0200 Message-ID: <d989362bf612f305891c30339d34bcd68196fe8a.camel@HIDDEN> Subject: Re: [bug#50384] [PATCH v3] Optimise search-patch (reducing I/O) From: Maxime Devos <maximedevos@HIDDEN> To: 50384-done <at> debbugs.gnu.org Date: Fri, 10 Sep 2021 11:54:36 +0200 In-Reply-To: <04603bca34f16b284a5e3052a4b0765b60952817.camel@HIDDEN> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <04603bca34f16b284a5e3052a4b0765b60952817.camel@HIDDEN> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-RiXDpsaPTryz6a7ncBUo" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1631267683; bh=WQZPcVKJwuuEwNO+l3GsD1qWD/w+mvIkrryYoLyDuKg=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=VkAJ1j3KjG2wuObKzoEmVq9zHD0otngLlfKSo1q2j8C6qYUEh21OP3Nc00zY/Nj9t 2KtAThk6+s4BbpMQurAPb+g+OF4vkh0GG78fbpppvgEmFdRMn6AfK10ViR2ATLll+S Kzo1FM4VEhXxt6fkCye5EudS62brNbUWxjHda09Ueu/8K2zejlHb0BqCN9PVwxeUqN T2Jd1uCsEbEj+M6gSQAVuvYMNps6QWQCLT5e80LrqrHwkvnsZQDgb0imiilRZ23Z0F gvNb9uE3O//Ob6OnZ5l0RhAOcd1rINfFqmXiq22gSbG5JgZPLZIb8yX4pJSp9NFDmo i+d+hxTyCqEIg== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50384-done Cc: Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN>, zimoun <zimon.toutoune@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-RiXDpsaPTryz6a7ncBUo Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable It doesn't seem like the patch series is going to end up improving anything, so I'm closing it. Greetings, Maxime --=-RiXDpsaPTryz6a7ncBUo Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTsrXBccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7sgFAQDRkDHAX5JIQv5D7szRQiFx8vxr RnZ4TMHFCxdUfWB3jwD+LxyX6J51HBZkPvzRA7eQpnfx+9SNuqe4E4bTLjLX5ws= =7nyo -----END PGP SIGNATURE----- --=-RiXDpsaPTryz6a7ncBUo--
Maxime Devos <maximedevos@HIDDEN>
:Maxime Devos <maximedevos@HIDDEN>
:Received: (at 50384) by debbugs.gnu.org; 9 Sep 2021 20:26:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 09 16:26:22 2021 Received: from localhost ([127.0.0.1]:36313 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mOQce-0007H3-SS for submit <at> debbugs.gnu.org; Thu, 09 Sep 2021 16:26:22 -0400 Received: from albert.telenet-ops.be ([195.130.137.90]:56352) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mOQca-0007Gs-JA for 50384 <at> debbugs.gnu.org; Thu, 09 Sep 2021 16:26:11 -0400 Received: from [172.20.10.4] ([213.119.128.77]) by albert.telenet-ops.be with bizsmtp id rwS52500M1gKkhx06wS6Ps; Thu, 09 Sep 2021 22:26:06 +0200 Message-ID: <04603bca34f16b284a5e3052a4b0765b60952817.camel@HIDDEN> Subject: [PATCH v3] Optimise search-patch (reducing I/O) From: Maxime Devos <maximedevos@HIDDEN> To: 50384 <at> debbugs.gnu.org Date: Thu, 09 Sep 2021 22:25:46 +0200 In-Reply-To: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-dT8/QEIsPOYFhIUcHEMW" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1631219166; bh=NeSWZ9++rmDMz2rlTfIoHLEwpHJGgCJEl8ZYXLxYMlI=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=b/tCOePDAsJ7fkeqhWgY+RI6XiuqClxqEW5nEPxfnMMyVQ4j6yv9whOKbOZpkNe+g UAL17Ez7pEc1/tCV08LQzksy6nQ8t1rpAP2ExAuYF0MpczsN+9265BLjB16nXzFhuo 9PtAMEJqHJTMAqVHJFbHjzvDUecp5G/e8683GWzNv/2VcvzN36wl7jwetYjsArKuCb pg0YBBgL7Q9Y7mr5HLYPahDQa8hJ+4mxiwzZsdn+xHYqwDbryf7oLXkgE6AGPmGq75 zYGB70vnDij5RTEtb4RWt+Van/EN0YwYbaOwUctUmd8jMoWJjltWxtyaI2kyCBO6VA 4ylSZ0mWw3QmA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50384 Cc: Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN>, zimoun <zimon.toutoune@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --=-dT8/QEIsPOYFhIUcHEMW Content-Type: multipart/mixed; boundary="=-VRWJSoloRA3mhw8ZjuSt" --=-VRWJSoloRA3mhw8ZjuSt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi guix, This is a v3, without the base16 and base32 optimisations which are split-off into <https://issues.guix.gnu.org/50456>. It doesn't seem this patch series will bring improvements, but feel free to test (in particular, I wonder if this will help people using a remote daemon, where transmitting data can take (relatively) long?). (guix scripts hash) is broken, which would need to be fixed in the final version, if any. Ludovic has some concerns about dependency tracking in search-patch which need to be adressed. I think a more fruitful goal is to somehow parallelize the derivation computation, with multiple separate connections to the store, such that if one connection is blocking, the other one can be used for something separate (threads aren't necessary if current-read-waiter, current-write-waiter and non-blocking I/O are used). Now, what improvements does this version of the patch series bring? (Make sure to start the daemon with ./pre-inst-env guix daemon ..., and set --localstatedir=3D/var! Some changes to the daemon were made.) 1. RPC count (tested in a local checkout) After the patch series: make && GUIX_PROFILING=3Drpc ./pre-inst-env guix build -d pigx --no-grafts accepted connection from pid 4917, user [USER] /gnu/store/jfjfg7dnis7v6947a0rncxdn3y1nz0ad-pigx-0.0.3.drv Remote procedure call summary: 5754 RPCs built-in-builders ... 1 add-to-store ... 3 add-to-store/tree ... 26 add-temp-root-and-valid-path? ... 195 add-text-to-store ... 5529 After the patch series, with (if sha256 ...) replaced with (if #f ...) in (guix gexp), to simulate the situation before the patch series /gnu/store/jfjfg7dnis7v6947a0rncxdn3y1nz0ad-pigx-0.0.3.drv Remote procedure call summary: 5749 RPCs built-in-builders ... 1 add-to-store/tree ... 26 add-to-store ... 193 add-text-to-store ... 5529 (add-to-store RPCs are converted to add-temp-root-and-valid-path? RPCs) 2. Timing First do echo powersave | sudo tee /sys/devices/system/cpu/cpu{0,1,2,3}/cpufreq= /scaling_governor to eliminate CPU frequency scaling effects. To automatically repeat the tests and compute the standard deviation, 'hyperfine' is used: HYP=3D/gnu/store/3ya4iw6fzq1ns73bv1g3a96jvwhbv60c-hyperfine-1.11.0/bin/h= yperfine To determine the effect of the change to 'local-file-compiler' and 'search-patch' and nothing else, I will compare the performance of guix after the patch series with the performance of guix after the patch seri= es and 'sha256' replaced by #false. With #f, --runs=3D60: make && ./pre-inst-env $HYP --runs=3D60 --warmup 1 -- 'guix build -d pig= x --no-grafts' Time (mean =C2=B1 =CF=83): 15.428 s =C2=B1 0.385 s [User: 15.925= s, System: 0.652 s] Range (min =E2=80=A6 max): 14.768 s =E2=80=A6 16.550 s 60 runs With sha256, --runs=3D60 make && ./pre-inst-env $HYP --runs=3D60 --warmup 1 -- 'guix build -d pig= x --no-grafts' Time (mean =C2=B1 =CF=83): 15.493 s =C2=B1 0.252 s [User: 15.585= s, System: 0.680 s] Range (min =E2=80=A6 max): 14.981 s =E2=80=A6 16.294 s 60 runs These numbers don't have a clear difference. Maybe statistics can help? = First, formulate a null-hypothesis. As the total number of RPCs didn't change, = the amount of data sent to the daemon is reduced and some "stats", "open" and "reads= " are avoided, I would expect that the mean decreases. Thus, as null-hypothesis, I choo= se: H0: the (theoretical) mean for =E2=80=98with sha256=E2=80=99 is less than= the mean for =E2=80=98with #f=E2=80=99 In the timing tests, the observed mean for 'with sha256=E2=80=99 is actua= lly larger. But is this significant? guix environment --ad-hoc r before.mean =3D 15.428 before.stddev =3D 0.385 after.mean =3D 15.493 after.stddev =3D 0.252 samples =3D 60 # =E2=80=98statistical=E2=80=99 crate used by hyperfine # performs N/(N-1) correction XXX t =3D (before.mean - after.mean)/(sqrt(samples) * sqrt(before.stddev^2 + = after.stddev^2)) v =3D (samples - 1) * (before.stddev^2 + after.stddev^2)^2/(before.stddev= ^4 + after.stddev^4) q =3D dt(-t, v); q # p-value: 0.5072571 # Null-hypothesis is not rejected It's not rejected, though that doesn't prove much since t is almost zero, so this test cannot reject the hypothesis =E2=80=98the means are equal=E2= =80=99 or =E2=80=98the patch series makes things slower=E2=80=99 either. I don't think this patch series helps on my laptop (at least on a hot dis= k cache, I'd have to check for a cold cache). However, I wonder if this would help a littl= e for people using a remote build daemon (with a nfs setup or something) (see GUIX_DAE= MON_SOCKET)? Greetings, Maxime. --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename="0001-build-self-Implement-basic-hash-algorithm.patch" Content-Type: text/x-patch; name="0001-build-self-Implement-basic-hash-algorithm.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjZmZmZTYyZmZmNzE4ODVkYjlmZWIxYzQ2ZWU1ZDBiNmJiZTJmNGM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAyMDowOTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDEv MTBdIGJ1aWxkLXNlbGY6IEltcGxlbWVudCBiYXNpYyAnaGFzaC1hbGdvcml0aG0nLgpNSU1FLVZl cnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVu dC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhlIG1vZHVsZSAoZ3VpeCBoYXNoKSB1c2VkIGZy b20gJ3NlYXJjaC1wYXRjaCcgaW4gYSBmdXR1cmUKcGF0Y2ggbmVlZHMgaXQgdG8gYmUgcHJvcGVy bHkgZGVmaW5lZCB3aGVuIChndWl4IGhhc2gpIGlzIGJlaW5nCmNvbXBpbGVkLiAgJ3NlYXJjaC1w YXRjaCcgaXMgdXNlZCB3aGVuIHRoZSBkZXJpdmF0aW9uIG9mIEd1aXggaXMKYmVpbmcgY29tcHV0 ZWQsIHNvIGl0IGlzIGltcG9ydGFudCB0byBhdm9pZCB0aGUg4oCYd3JvbmcgdHlwZSB0bwphcHBs eTogIzxzeW50YXgtdHJhbnNmb3JtZXIgaGFzaC1hbGdvcml0aG0+4oCZIGVycm9yLgoKKiBidWls ZC1hdXgvYnVpbGQtc2VsZi5zY20KICAoYnVpbGQtcHJvZ3JhbSlbZmFrZS1nY3J5cHQtaGFzaF06 IERlZmluZSBoYXNoLWFsZ29yaXRobSBmb3Igc2hhMQogIGFuZCBzaGEyNTYuCi0tLQogYnVpbGQt YXV4L2J1aWxkLXNlbGYuc2NtIHwgMTMgKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDEx IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2J1 aWxkLXNlbGYuc2NtIGIvYnVpbGQtYXV4L2J1aWxkLXNlbGYuc2NtCmluZGV4IDNhMmQxM2NjMDku LjJjMTNkOWQ1MzAgMTAwNjQ0Ci0tLSBhL2J1aWxkLWF1eC9idWlsZC1zZWxmLnNjbQorKysgYi9i dWlsZC1hdXgvYnVpbGQtc2VsZi5zY20KQEAgLTI1OSw4ICsyNTksMTcgQEAgaW50ZXJmYWNlIChG RkkpIG9mIEd1aWxlLiIpCiAgIChkZWZpbmUgZmFrZS1nY3J5cHQtaGFzaAogICAgIDs7IEZha2Ug KGdjcnlwdCBoYXNoKSBtb2R1bGU7IHNlZSBiZWxvdy4KICAgICAoc2NoZW1lLWZpbGUgImhhc2gu c2NtIgotICAgICAgICAgICAgICAgICAjfihkZWZpbmUtbW9kdWxlIChnY3J5cHQgaGFzaCkKLSAg ICAgICAgICAgICAgICAgICAgICM6ZXhwb3J0IChzaGExIHNoYTI1NikpKSkKKyAgICAgICAgICAg ICAgICAgI34oYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgIChkZWZpbmUtbW9kdWxlIChnY3J5 cHQgaGFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIzpleHBvcnQgKHNoYTEgc2hhMjU2IGhh c2gtYWxnb3JpdGhtKSkKKyAgICAgICAgICAgICAgICAgICAgIDs7IEF2b2lkIOKAmFdyb25nIHR5 cGUgdG8gYXBwbHk6CisgICAgICAgICAgICAgICAgICAgICA7OyAjPHN5bnRheC10cmFuc2Zvcm1l ciBoYXNoLWFsZ29yaXRobT7igJkgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgKGRlZmlu ZSBzaGExKQorICAgICAgICAgICAgICAgICAgICAgKGRlZmluZSBzaGEyNTYpCisgICAgICAgICAg ICAgICAgICAgICAoZGVmaW5lLXN5bnRheCBoYXNoLWFsZ29yaXRobQorICAgICAgICAgICAgICAg ICAgICAgICAoc3ludGF4LXJ1bGVzIChzaGExIHNoYTI1NikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoKF8gc2hhMSkgMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKF8gc2hhMjU2KSA4 KSkpKSkpCiAKICAgKGRlZmluZSBmYWtlLWdpdAogICAgIChzY2hlbWUtZmlsZSAiZ2l0LnNjbSIg I34oZGVmaW5lLW1vZHVsZSAoZ2l0KSkpKQotLSAKMi4zMy4wCgo= --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename="0002-guix-hash-Extract-file-hashing-procedures.patch" Content-Type: text/x-patch; name="0002-guix-hash-Extract-file-hashing-procedures.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBmYzUzNTI0MTMwZTU2YmJkYjUzYzk3ZTBlNDdlZjIwMjlkN2RiYWQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYXJhaCBNb3JnZW5zZW4gPGlza2FyaWFuQG1nc24uZGV2PgpE YXRlOiBTdW4sIDE1IEF1ZyAyMDIxIDE2OjI1OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMi8x MF0gZ3VpeCBoYXNoOiBFeHRyYWN0IGZpbGUgaGFzaGluZyBwcm9jZWR1cmVzLgoKKiBndWl4L3Nj cmlwdHMvaGFzaC5zY20gKGd1aXgtaGFzaClbdmNzLWZpbGU/LCBmaWxlLWhhc2hdOiBFeHRyYWN0 IGxvZ2ljCnRvLi4uCiogZ3VpeC9oYXNoLnNjbTogLi4uaGVyZS4gTmV3IGZpbGUuCiogTWFrZWZp bGUuYW0gKE1PRFVMRVMpOiBBZGQgbmV3IGZpbGUuCi0tLQogTWFrZWZpbGUuYW0gICAgICAgICAg IHwgIDEgKwogZ3VpeC9oYXNoLnNjbSAgICAgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZ3VpeC9zY3JpcHRzL2hhc2guc2NtIHwgMjkgKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDIy IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGd1aXgvaGFzaC5zY20KCmRpZmYgLS1n aXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCmluZGV4IDMyN2QzZjk5NjEuLjhmODA4OWMw NWMgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC0xMDcsNiAr MTA3LDcgQEAgTU9EVUxFUyA9CQkJCQlcCiAgIGd1aXgvbmFyaW5mby5zY20JCQkJXAogICBndWl4 L2Rlcml2YXRpb25zLnNjbQkJCQlcCiAgIGd1aXgvZ3JhZnRzLnNjbQkJCQlcCisgIGd1aXgvaGFz aC5zY20JCQkJCVwKICAgZ3VpeC9yZXBsLnNjbQkJCQkJXAogICBndWl4L3RyYW5zZm9ybWF0aW9u cy5zY20JCQlcCiAgIGd1aXgvaW5mZXJpb3Iuc2NtCQkJCVwKZGlmZiAtLWdpdCBhL2d1aXgvaGFz aC5zY20gYi9ndWl4L2hhc2guc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjhjMmFiODE4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L2hhc2guc2NtCkBAIC0wLDAg KzEsNTEgQEAKKzs7OyBHTlUgR3VpeCAtLS0gRnVuY3Rpb25hbCBwYWNrYWdlIG1hbmFnZW1lbnQg Zm9yIEdOVQorOzs7IENvcHlyaWdodCDCqSAyMDIxIFNhcmFoIE1vcmdlbnNlbiA8aXNrYXJpYW5A bWdzbi5kZXY+Cis7OzsKKzs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KKzs7Owor Ozs7IEdOVSBHdWl4IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQKKzs7OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAorOzs7IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorOzs7IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7OyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCis7OzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7 OworOzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCis7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworKGRlZmluZS1tb2R1bGUgKGd1aXggaGFz aCkKKyAgIzp1c2UtbW9kdWxlIChnY3J5cHQgaGFzaCkKKyAgIzp1c2UtbW9kdWxlIChndWl4IHNl cmlhbGl6YXRpb24pCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCisgICM6dXNlLW1vZHVs ZSAoc3JmaSBzcmZpLTExKQorICAjOmV4cG9ydCAodmNzLWZpbGU/CisgICAgICAgICAgICBmaWxl LWhhc2gqKSkKKworKGRlZmluZSAodmNzLWZpbGU/IGZpbGUgc3RhdCkKKyAgIlJldHVybnMgdHJ1 ZSBpZiBGSUxFIGlzIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBmaWxlLiIKKyAgKGNhc2UgKHN0 YXQ6dHlwZSBzdGF0KQorICAgICgoZGlyZWN0b3J5KQorICAgICAobWVtYmVyIChiYXNlbmFtZSBm aWxlKSAnKCIuYnpyIiAiLmdpdCIgIi5oZyIgIi5zdm4iICJDVlMiKSkpCisgICAgKChyZWd1bGFy KQorICAgICA7OyBHaXQgc3ViLW1vZHVsZXMgaGF2ZSBhICcuZ2l0JyBmaWxlIHRoYXQgaXMgYSBy ZWd1bGFyIHRleHQgZmlsZS4KKyAgICAgKHN0cmluZz0/IChiYXNlbmFtZSBmaWxlKSAiLmdpdCIp KQorICAgIChlbHNlCisgICAgICNmKSkpCisKKyhkZWZpbmUqIChmaWxlLWhhc2gqIGZpbGUgIzpr ZXkKKyAgICAgICAgICAgICAgICAgICAgIChhbGdvcml0aG0gKGhhc2gtYWxnb3JpdGhtIHNoYTI1 NikpCisgICAgICAgICAgICAgICAgICAgICAocmVjdXJzaXZlPyAjdCkKKyAgICAgICAgICAgICAg ICAgICAgIChzZWxlY3Q/IChuZWdhdGUgdmNzLWZpbGU/KSkpCisgICJDb21wdXRlIHRoZSBoYXNo IG9mIEZJTEUgd2l0aCBBTEdPUklUSE0uICBJZiBSRUNVUlNJVkU/IGlzIHRydWUsIHJlY3Vyc2UK K2ludG8gc3ViZGlyZWN0b3JpZXMgb2YgRklMRSwgY29tcHV0aW5nIHRoZSBjb21iaW5lZCBoYXNo IG9mIGFsbCBmaWxlcyBmb3IKK3doaWNoIChTRUxFQ1Q/ICBGSUxFIFNUQVQpIHJldHVybnMgdHJ1 ZS4iCisgIChpZiByZWN1cnNpdmU/CisgICAgICAobGV0LXZhbHVlcyAoKChwb3J0IGdldC1oYXNo KQorICAgICAgICAgICAgICAgICAgICAob3Blbi1oYXNoLXBvcnQgYWxnb3JpdGhtKSkpCisgICAg ICAgICh3cml0ZS1maWxlIGZpbGUgcG9ydCAjOnNlbGVjdD8gc2VsZWN0PykKKyAgICAgICAgKGZv cmNlLW91dHB1dCBwb3J0KQorICAgICAgICAoZ2V0LWhhc2gpKQorICAgICAgKGZpbGUtaGFzaCBh bGdvcml0aG0gZmlsZSkpKQpkaWZmIC0tZ2l0IGEvZ3VpeC9zY3JpcHRzL2hhc2guc2NtIGIvZ3Vp eC9zY3JpcHRzL2hhc2guc2NtCmluZGV4IGI4NjIyMzczY2MuLjM1M2NhMzBjMmMgMTAwNjQ0Ci0t LSBhL2d1aXgvc2NyaXB0cy9oYXNoLnNjbQorKysgYi9ndWl4L3NjcmlwdHMvaGFzaC5zY20KQEAg LTMsNiArMyw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMTMgTmlraXRhIEthcmV0bmlrb3YgPG5p a2l0YUBrYXJldG5pa292Lm9yZz4KIDs7OyBDb3B5cmlnaHQgwqkgMjAxNiBKYW4gTmlldXdlbmh1 aXplbiA8amFubmVrZUBnbnUub3JnPgogOzs7IENvcHlyaWdodCDCqSAyMDE4IFRpbSBHZXN0aHVp emVuIDx0aW0uZ2VzdGh1aXplbkB5YWhvby5kZT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTYXJh aCBNb3JnZW5zZW4gPGlza2FyaWFuQG1nc24uZGV2PgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTIzLDYgKzI0LDcgQEAKICAgIzp1c2UtbW9kdWxlIChn Y3J5cHQgaGFzaCkKICAgIzp1c2UtbW9kdWxlIChndWl4IHNlcmlhbGl6YXRpb24pCiAgICM6dXNl LW1vZHVsZSAoZ3VpeCB1aSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGhhc2gpCiAgICM6dXNlLW1v ZHVsZSAoZ3VpeCBzY3JpcHRzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggYmFzZTE2KQogICAjOnVz ZS1tb2R1bGUgKGd1aXggYmFzZTMyKQpAQCAtMTI1LDE2ICsxMjcsNiBAQCBhbmQgJ2Jhc2UxNicg KCdoZXgnIGFuZCAnaGV4YWRlY2ltYWwnIGNhbiBiZSB1c2VkIGFzIHdlbGwpLlxuIikpCiAgICAg KHBhcnNlLWNvbW1hbmQtbGluZSBhcmdzICVvcHRpb25zIChsaXN0ICVkZWZhdWx0LW9wdGlvbnMp CiAgICAgICAgICAgICAgICAgICAgICAgICAjOmJ1aWxkLW9wdGlvbnM/ICNmKSkKIAotICAoZGVm aW5lICh2Y3MtZmlsZT8gZmlsZSBzdGF0KQotICAgIChjYXNlIChzdGF0OnR5cGUgc3RhdCkKLSAg ICAgICgoZGlyZWN0b3J5KQotICAgICAgIChtZW1iZXIgKGJhc2VuYW1lIGZpbGUpICcoIi5ienIi ICIuZ2l0IiAiLmhnIiAiLnN2biIgIkNWUyIpKSkKLSAgICAgICgocmVndWxhcikKLSAgICAgICA7 OyBHaXQgc3ViLW1vZHVsZXMgaGF2ZSBhICcuZ2l0JyBmaWxlIHRoYXQgaXMgYSByZWd1bGFyIHRl eHQgZmlsZS4KLSAgICAgICAoc3RyaW5nPT8gKGJhc2VuYW1lIGZpbGUpICIuZ2l0IikpCi0gICAg ICAoZWxzZQotICAgICAgICNmKSkpCi0KICAgKGxldCogKChvcHRzIChwYXJzZS1vcHRpb25zKSkK ICAgICAgICAgIChhcmdzIChmaWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKCdhcmd1bWVudCAuIHZhbHVlKQpAQCAtMTUwLDE4ICsxNDIsMTEgQEAg YW5kICdiYXNlMTYnICgnaGV4JyBhbmQgJ2hleGFkZWNpbWFsJyBjYW4gYmUgdXNlZCBhcyB3ZWxs KS5cbiIpKQogICAgICAgOzsgQ29tcHV0ZSB0aGUgaGFzaCBvZiBGSUxFLgogICAgICAgOzsgQ2F0 Y2ggYW5kIGdyYWNlZnVsbHkgcmVwb3J0IHBvc3NpYmxlICcmbmFyLWVycm9yJyBjb25kaXRpb25z LgogICAgICAgKHdpdGgtZXJyb3ItaGFuZGxpbmcKLSAgICAgICAgKGlmIChhc3NvYy1yZWYgb3B0 cyAncmVjdXJzaXZlPykKLSAgICAgICAgICAgIChsZXQtdmFsdWVzICgoKHBvcnQgZ2V0LWhhc2gp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuLWhhc2gtcG9ydCAoYXNzb2MtcmVmIG9w dHMgJ2hhc2gtYWxnb3JpdGhtKSkpKQotICAgICAgICAgICAgICAod3JpdGUtZmlsZSBmaWxlIHBv cnQgIzpzZWxlY3Q/IHNlbGVjdD8pCi0gICAgICAgICAgICAgIChmb3JjZS1vdXRwdXQgcG9ydCkK LSAgICAgICAgICAgICAgKGdldC1oYXNoKSkKLSAgICAgICAgICAgIChtYXRjaCBmaWxlCi0gICAg ICAgICAgICAgICgiLSIgKHBvcnQtaGFzaCAoYXNzb2MtcmVmIG9wdHMgJ2hhc2gtYWxnb3JpdGht KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtaW5wdXQtcG9ydCkpKQot ICAgICAgICAgICAgICAoXyAgIChjYWxsLXdpdGgtaW5wdXQtZmlsZSBmaWxlCi0gICAgICAgICAg ICAgICAgICAgICAoY3V0ZSBwb3J0LWhhc2ggKGFzc29jLXJlZiBvcHRzICdoYXNoLWFsZ29yaXRo bSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+KSkpKSkpKQorICAgICAgICAobWF0Y2gg ZmlsZQorICAgICAgICAgICgiLSIgKHBvcnQtaGFzaCAoYXNzb2MtcmVmIG9wdHMgJ2hhc2gtYWxn b3JpdGhtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1pbnB1dC1wb3J0KSkp CisgICAgICAgICAgKF8gICAoZmlsZS1oYXNoKiAjOmFsZ29yaXRobSAoYXNzb2MtcmVmIG9wdHMg J2hhc2gtYWxnb3JpdGhtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpyZWN1cnNpdmU/ IChhc3NvYy1yZWYgb3B0cyAncmVjdXJzaXZlPykpKSkpKQogCiAgICAgKG1hdGNoIGFyZ3MKICAg ICAgICgoZmlsZSkKLS0gCjIuMzMuMAoK --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0003-store-Define-new-add-temp-root-and-valid-path-operat.pat; filename*1=ch Content-Type: text/x-patch; name="0003-store-Define-new-add-temp-root-and-valid-path-operat.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2MmFkOTczZmU0ODMxOWNhYWFkZWRlNWMzNjM3MGJjZDA4NTQyZmJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFRodSwgOSBTZXAgMjAyMSAxNzo0Mjo0OSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDMv MTBdIHN0b3JlOiBEZWZpbmUgbmV3IGFkZC10ZW1wLXJvb3QtYW5kLXZhbGlkLXBhdGg/CiBvcGVy YXRpb24uCgpUaGlzIHdpbGwgYWxsb3cgc3BlZWRpbmcgdXAgJ2xvY2FsLWZpbGUtY29tcGlsZXIn IGEgbGl0dGxlLApzZWUgPGh0dHBzOi8vaXNzdWVzLmd1aXguZ251Lm9yZy81MDM4ND4uCgoqIG5p eC9saWJzdG9yZS93b3JrZXItcHJvdG9jb2xzLmhoCiAgKFdvcmtlck9wKVt3b3BBZGRUZW1wUm9v dEFuZElzVmFsaWRQYXRoKTogTmV3IG9wZXJhdGlvbi4KICAoUFJPVE9DT0xfVkVSU0lPTik6IEJ1 bXAgdmVyc2lvbi4KKiBuaXgvbml4LWRhZW1vbi9uaXgtZGFlbW9uLmNjCiAgKHBlcmZvcm1PcClb d29wQWRkVGVtcFJvb3RBbmRJc1ZhbGlkUGF0aF06IEhhbmRsZSBuZXcgb3BlcmF0aW9uLgoqIGd1 aXgvc3RvcmUuc2NtCiAgKGFkZC10ZW1wLXJvb3QtYW5kLXZhbGlkLXBhdGg/KTogTmV3IG9wZXJh dGlvbi4KICAob3BlcmF0aW9uLWlkKVthZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoPyk6IE5l dyBvcGVyYXRpb24uCiAgKCVwcm90b2NvbC12ZXJzaW9uKTogQnVtcCB2ZXJzaW9uLgoqIHRlc3Rz L3N0b3JlLnNjbQogICgiYWRkLXRlbXAtcm9vdC12YWxpZC1wYXRoPyBsaXZlIiwgImFkZC10ZW1w LXJvb3QtYW5kLXZhbGlkLXBhdGg/IGZhbHNlIik6CiAgTmV3IHRlc3RzLgotLS0KIGd1aXgvc3Rv cmUuc2NtICAgICAgICAgICAgICAgICAgfCAxMSArKysrKysrKystLQogbml4L2xpYnN0b3JlL3dv cmtlci1wcm90b2NvbC5oaCB8ICA1ICsrKy0tCiBuaXgvbml4LWRhZW1vbi9uaXgtZGFlbW9uLmNj ICAgIHwgMTIgKysrKysrKysrKysrCiB0ZXN0cy9zdG9yZS5zY20gICAgICAgICAgICAgICAgIHwg MTAgKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2d1aXgvc3RvcmUuc2NtIGIvZ3VpeC9zdG9yZS5zY20KaW5k ZXggMDQ2M2IwZThmYS4uYzlmN2I5MDViNyAxMDA2NDQKLS0tIGEvZ3VpeC9zdG9yZS5zY20KKysr IGIvZ3VpeC9zdG9yZS5zY20KQEAgLTEyNCw2ICsxMjQsNyBAQAogICAgICAgICAgICAgZW5zdXJl LXBhdGgKICAgICAgICAgICAgIGZpbmQtcm9vdHMKICAgICAgICAgICAgIGFkZC10ZW1wLXJvb3QK KyAgICAgICAgICAgIGFkZC10ZW1wLXJvb3QtYW5kLXZhbGlkLXBhdGg/CiAgICAgICAgICAgICBh ZGQtaW5kaXJlY3Qtcm9vdAogICAgICAgICAgICAgYWRkLXBlcm1hbmVudC1yb290CiAgICAgICAg ICAgICByZW1vdmUtcGVybWFuZW50LXJvb3QKQEAgLTE5NSw3ICsxOTYsNyBAQAogICAgICAgICAg ICAgZGVyaXZhdGlvbi1sb2ctZmlsZQogICAgICAgICAgICAgbG9nLWZpbGUpKQogCi0oZGVmaW5l ICVwcm90b2NvbC12ZXJzaW9uICN4MTYzKQorKGRlZmluZSAlcHJvdG9jb2wtdmVyc2lvbiAjeDE2 NCkKIAogKGRlZmluZSAld29ya2VyLW1hZ2ljLTEgI3g2ZTY5Nzg2MykgICAgICAgICAgICAgICA7 ICJuaXhjIgogKGRlZmluZSAld29ya2VyLW1hZ2ljLTIgI3g2NDc4Njk2ZikgICAgICAgICAgICAg ICA7ICJkeGlvIgpAQCAtMjQ5LDcgKzI1MCw4IEBACiAgIChxdWVyeS12YWxpZC1kZXJpdmVycyAz MykKICAgKG9wdGltaXplLXN0b3JlIDM0KQogICAodmVyaWZ5LXN0b3JlIDM1KQotICAoYnVpbHQt aW4tYnVpbGRlcnMgODApKQorICAoYnVpbHQtaW4tYnVpbGRlcnMgODApCisgIChhZGQtdGVtcC1y b290LWFuZC12YWxpZC1wYXRoPyA4MSkpCiAKIChkZWZpbmUtZW51bWVyYXRlLXR5cGUgaGFzaC1h bGdvCiAgIDs7IGhhc2guaGgKQEAgLTE0NTUsNiArMTQ1NywxMSBAQCBwb3RlbnRpYWwgcm9vdHMg dGhhdCBkbyBub3QgcG9pbnQgdG8gc3RvcmUgaXRlbXMuIgogUmV0dXJuICN0LiIKICAgYm9vbGVh bikKIAorKGRlZmluZS1vcGVyYXRpb24gKGFkZC10ZW1wLXJvb3QtYW5kLXZhbGlkLXBhdGg/IChz dG9yZS1wYXRoIHBhdGgpKQorICAiTWFrZSBQQVRIIGEgdGVtcG9yYXJ5IHJvb3QgZm9yIHRoZSBk dXJhdGlvbiBvZiB0aGUgY3VycmVudCBzZXNzaW9uLAorYW5kIHRlc3QgaWYgUEFUSCBpcyBhIHZh bGlkIHN0b3JlIHBhdGggKHNlZSAndmFsaWQtcGF0aD8nKS4iCisgIGJvb2xlYW4pCisKIChkZWZp bmUtb3BlcmF0aW9uIChhZGQtaW5kaXJlY3Qtcm9vdCAoc3RyaW5nIGZpbGUtbmFtZSkpCiAgICJN YWtlIHRoZSBzeW1saW5rIEZJTEUtTkFNRSBhbiBpbmRpcmVjdCByb290IGZvciB0aGUgZ2FyYmFn ZSBjb2xsZWN0b3I6CiB3aGF0ZXZlciBzdG9yZSBpdGVtIEZJTEUtTkFNRSBwb2ludHMgdG8gd2ls bCBub3QgYmUgY29sbGVjdGVkLiAgUmV0dXJuICN0IG9uCmRpZmYgLS1naXQgYS9uaXgvbGlic3Rv cmUvd29ya2VyLXByb3RvY29sLmhoIGIvbml4L2xpYnN0b3JlL3dvcmtlci1wcm90b2NvbC5oaApp bmRleCBlYTY3YjEwYTViLi5iYjk5ZTYzMmNmIDEwMDY0NAotLS0gYS9uaXgvbGlic3RvcmUvd29y a2VyLXByb3RvY29sLmhoCisrKyBiL25peC9saWJzdG9yZS93b3JrZXItcHJvdG9jb2wuaGgKQEAg LTYsNyArNiw3IEBAIG5hbWVzcGFjZSBuaXggewogI2RlZmluZSBXT1JLRVJfTUFHSUNfMSAweDZl Njk3ODYzCiAjZGVmaW5lIFdPUktFUl9NQUdJQ18yIDB4NjQ3ODY5NmYKIAotI2RlZmluZSBQUk9U T0NPTF9WRVJTSU9OIDB4MTYzCisjZGVmaW5lIFBST1RPQ09MX1ZFUlNJT04gMHgxNjQKICNkZWZp bmUgR0VUX1BST1RPQ09MX01BSk9SKHgpICgoeCkgJiAweGZmMDApCiAjZGVmaW5lIEdFVF9QUk9U T0NPTF9NSU5PUih4KSAoKHgpICYgMHgwMGZmKQogCkBAIC00NCw3ICs0NCw4IEBAIHR5cGVkZWYg ZW51bSB7CiAgICAgd29wUXVlcnlWYWxpZERlcml2ZXJzID0gMzMsCiAgICAgd29wT3B0aW1pc2VT dG9yZSA9IDM0LAogICAgIHdvcFZlcmlmeVN0b3JlID0gMzUsCi0gICAgd29wQnVpbHRpbkJ1aWxk ZXJzID0gODAKKyAgICB3b3BCdWlsdGluQnVpbGRlcnMgPSA4MCwKKyAgICB3b3BBZGRUZW1wUm9v dEFuZElzVmFsaWRQYXRoID0gODEKIH0gV29ya2VyT3A7CiAKIApkaWZmIC0tZ2l0IGEvbml4L25p eC1kYWVtb24vbml4LWRhZW1vbi5jYyBiL25peC9uaXgtZGFlbW9uL25peC1kYWVtb24uY2MKaW5k ZXggNDk3ZGUxMWEwNC4uYjczYmIxNWE2NCAxMDA2NDQKLS0tIGEvbml4L25peC1kYWVtb24vbml4 LWRhZW1vbi5jYworKysgYi9uaXgvbml4LWRhZW1vbi9uaXgtZGFlbW9uLmNjCkBAIC0zMDYsNiAr MzA2LDE4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1PcChib29sIHRydXN0ZWQsIHVuc2lnbmVkIGlu dCBjbGllbnRWZXJzaW9uLAogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIHdvcEFk ZFRlbXBSb290QW5kSXNWYWxpZFBhdGg6IHsKKyAgICAgIC8qIFRoaXMgaXMgYSBjb21iaW5hdGlv biBvZiBBZGRUZW1wUm9vdCBhbmQgSXNWYWxpZFBhdGgsIHRvIHJlZHVjZQorICAgICAgICAgdGhl IG51bWVyIG9mIFJQQyBjYWxscyBtYWRlIGJ5IOKAmGxvY2FsLWZpbGUtY29tcGlsZXLigJkgaW4g KGd1aXggZ2V4cCkuICovCisgICAgICAgIFBhdGggcGF0aCA9IHJlYWRTdG9yZVBhdGgoZnJvbSk7 CisgICAgICAgIHN0YXJ0V29yaygpOworICAgICAgICBzdG9yZS0+YWRkVGVtcFJvb3QocGF0aCk7 CisgICAgICAgIGJvb2wgcmVzdWx0ID0gc3RvcmUtPmlzVmFsaWRQYXRoKHBhdGgpOworICAgICAg ICBzdG9wV29yaygpOworICAgICAgICB3cml0ZUludChyZXN1bHQsIHRvKTsKKyAgICAgICAgYnJl YWs7CisgICAgfQorCiAgICAgY2FzZSB3b3BRdWVyeVZhbGlkUGF0aHM6IHsKICAgICAgICAgUGF0 aFNldCBwYXRocyA9IHJlYWRTdG9yZVBhdGhzPFBhdGhTZXQ+KGZyb20pOwogICAgICAgICBzdGFy dFdvcmsoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL3N0b3JlLnNjbSBiL3Rlc3RzL3N0b3JlLnNjbQpp bmRleCAzMjY2ZmE3YTgyLi5kNzI0ZmYxOGIyIDEwMDY0NAotLS0gYS90ZXN0cy9zdG9yZS5zY20K KysrIGIvdGVzdHMvc3RvcmUuc2NtCkBAIC0xLDUgKzEsNiBAQAogOzs7IEdOVSBHdWl4IC0tLSBG dW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCiA7OzsgQ29weXJpZ2h0IMKpIDIw MTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYsIDIwMTcsIDIwMTgsIDIwMTksIDIwMjAsIDIwMjEg THVkb3ZpYyBDb3VydMOocyA8bHVkb0BnbnUub3JnPgorOzs7IENvcHlyaWdodCDCqSAyMDIxIE1h eGltZSBEZXZvcyA8bWF4aW1lZGV2b3NAdGVsZW5ldC5iZT4KIDs7OwogOzs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0xMzgsMTAgKzEzOSwxOSBAQAogICAobGV0ICgo cCAoYWRkLXRleHQtdG8tc3RvcmUgJXN0b3JlICJoZWxsbyIgImhlbGxvLCB3b3JsZCIpKSkKICAg ICAodmFsaWQtcGF0aD8gJXN0b3JlIHApKSkKIAorKHRlc3QtYXNzZXJ0ICJhZGQtdGVtcC1yb290 LXZhbGlkLXBhdGg/IGxpdmUiCisgIChsZXQgKChwIChhZGQtdGV4dC10by1zdG9yZSAlc3RvcmUg ImhlbGxvIiAiaGVsbG8sIHdvcmxkIikpKQorICAgIChhZGQtdGVtcC1yb290LWFuZC12YWxpZC1w YXRoPyAlc3RvcmUgcCkpKQorCiAodGVzdC1hc3NlcnQgInZhbGlkLXBhdGg/IGZhbHNlIgogICAo bm90ICh2YWxpZC1wYXRoPyAlc3RvcmUKICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBl bmQgKCVzdG9yZS1wcmVmaXgpICIvIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobWFrZS1zdHJpbmcgMzIgI1xlKSAiLWZvb2JhciIpKSkpCisodGVzdC1hc3NlcnQgImFkZC10 ZW1wLXJvb3QtYW5kLXZhbGlkLXBhdGg/IGZhbHNlIgorICAobm90IChhZGQtdGVtcC1yb290LWFu ZC12YWxpZC1wYXRoPworICAgICAgICAgJXN0b3JlCisgICAgICAgICAoc3RyaW5nLWFwcGVuZCAo JXN0b3JlLXByZWZpeCkgIi8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1ha2Utc3RyaW5nIDMyICNcZSkgIi1mb29iYXIiKSkpKQogCiAodGVzdC1lcXVhbCAid2l0 aC1zdG9yZSwgbXVsdGlwbGUgdmFsdWVzIiAgICAgICAgOzxodHRwczovL2J1Z3MuZ251Lm9yZy80 MjkxMj4KICAgJygxIDIgMykKLS0gCjIuMzMuMAoK --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0004-store-Add-compatibility-fall-back-for-add-temp-root-.pat; filename*1=ch Content-Type: text/x-patch; name="0004-store-Add-compatibility-fall-back-for-add-temp-root-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0MzU3OGYzZmJiN2YxODQ4ODFhZTRmMWNhNmI0Y2YzZGY4YjY3YzExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFRodSwgOSBTZXAgMjAyMSAxODo1OTo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDQv MTBdIHN0b3JlOiBBZGQgY29tcGF0aWJpbGl0eSBmYWxsLWJhY2sgZm9yCiAnYWRkLXRlbXAtcm9v dC1hbmQtdmFsaWQtcGF0aD8nLgoKKiBndWl4L3N0b3JlLnNjbSAoYWRkLXRlbXAtcm9vdC1hbmQt dmFsaWQtcGF0aD8pOiBSZW5hbWUgdG8gLi4uCiAgKGFkZC10ZW1wLXJvb3QtYW5kLXZhbGlkLXBh dGgqPyk6IC4uLiB0aGlzLgogIChhZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoPyk6IE5ldyBw cm9jZWR1cmUuCi0tLQogZ3VpeC9zdG9yZS5zY20gfCAxNiArKysrKysrKysrKysrKy0tCiAxIGZp bGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9ndWl4L3N0b3JlLnNjbSBiL2d1aXgvc3RvcmUuc2NtCmluZGV4IGM5ZjdiOTA1YjcuLmYyZmIy NDZmY2EgMTAwNjQ0Ci0tLSBhL2d1aXgvc3RvcmUuc2NtCisrKyBiL2d1aXgvc3RvcmUuc2NtCkBA IC00LDYgKzQsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDE5LCAyMDIwIE1hdGhpZXUgT3RoYWNl aGUgPG0ub3RoYWNlaGVAZ21haWwuY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIwIEZsb3JpYW4g UGVseiA8cGVsemZsb3JpYW5AcGVsemZsb3JpYW4uZGU+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjAg TGFycy1Eb21pbmlrIEJyYXVuIDxsZGJAbGVpYm5pei1wc3ljaG9sb2d5Lm9yZz4KKzs7OyBDb3B5 cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+CiA7OzsK IDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMTI0LDcgKzEyNSw3 IEBACiAgICAgICAgICAgICBlbnN1cmUtcGF0aAogICAgICAgICAgICAgZmluZC1yb290cwogICAg ICAgICAgICAgYWRkLXRlbXAtcm9vdAotICAgICAgICAgICAgYWRkLXRlbXAtcm9vdC1hbmQtdmFs aWQtcGF0aD8KKyAgICAgICAgICAgIChhZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoKj8gLiBh ZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoPykKICAgICAgICAgICAgIGFkZC1pbmRpcmVjdC1y b290CiAgICAgICAgICAgICBhZGQtcGVybWFuZW50LXJvb3QKICAgICAgICAgICAgIHJlbW92ZS1w ZXJtYW5lbnQtcm9vdApAQCAtMTQ1OSw5ICsxNDYwLDIwIEBAIFJldHVybiAjdC4iCiAKIChkZWZp bmUtb3BlcmF0aW9uIChhZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoPyAoc3RvcmUtcGF0aCBw YXRoKSkKICAgIk1ha2UgUEFUSCBhIHRlbXBvcmFyeSByb290IGZvciB0aGUgZHVyYXRpb24gb2Yg dGhlIGN1cnJlbnQgc2Vzc2lvbiwKLWFuZCB0ZXN0IGlmIFBBVEggaXMgYSB2YWxpZCBzdG9yZSBw YXRoIChzZWUgJ3ZhbGlkLXBhdGg/JykuIgorYW5kIHRlc3QgaWYgUEFUSCBpcyBhIHZhbGlkIHN0 b3JlIHBhdGggKHNlZSAndmFsaWQtcGF0aD8nKS4gIFRoaXMgcmVxdWlyZXMKK2EgcmVjZW50IGRh ZW1vbiB2ZXJzaW9uICgjeDE2NCBvciBsYXRlcik7IHVzZSAnYWRkLXRlbXAtcm9vdC1hbmQtdmFs aWQtcGF0aCo/JworZm9yIGNvbXBhdGliaWxpdHkuIgogICBib29sZWFuKQogCisoZGVmaW5lIChh ZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoKj8gc3RvcmUgcGF0aCkKKyAgIk1ha2UgUEFUSCBh IHRlbXBvcmFyeSByb290IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJlbnQgc2Vzc2lvbiwK K2FuZCB0ZXN0IGlmIFBBVEggaXMgYSB2YWxpZCBzdG9yZSBwYXRoIChzZWUgJ3ZhbGlkLXBhdGg/ JykuIgorICAoaWYgKD49IChzdG9yZS1jb25uZWN0aW9uLW1pbm9yLXZlcnNpb24gc3RvcmUpICN4 NjQpCisgICAgICAoYWRkLXRlbXAtcm9vdC1hbmQtdmFsaWQtcGF0aD8gc3RvcmUgcGF0aCkKKyAg ICAgIChiZWdpbgorICAgICAgICAoYWRkLXRlbXAtcm9vdCBzdG9yZSBwYXRoKQorICAgICAgICAo dmFsaWQtcGF0aD8gc3RvcmUgcGF0aCkpKSkKKwogKGRlZmluZS1vcGVyYXRpb24gKGFkZC1pbmRp cmVjdC1yb290IChzdHJpbmcgZmlsZS1uYW1lKSkKICAgIk1ha2UgdGhlIHN5bWxpbmsgRklMRS1O QU1FIGFuIGluZGlyZWN0IHJvb3QgZm9yIHRoZSBnYXJiYWdlIGNvbGxlY3RvcjoKIHdoYXRldmVy IHN0b3JlIGl0ZW0gRklMRS1OQU1FIHBvaW50cyB0byB3aWxsIG5vdCBiZSBjb2xsZWN0ZWQuICBS ZXR1cm4gI3Qgb24KLS0gCjIuMzMuMAoK --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0005-gexp-Allow-computing-the-hash-of-the-local-file-in-a.pat; filename*1=ch Content-Type: text/x-patch; name="0005-gexp-Allow-computing-the-hash-of-the-local-file-in-a.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3NWNiM2ExZTdiMDBiOTViMmFhMDUzNzNiYzdjMGU4MzY3NjZjOGMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNTozNTo1MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUv MTBdIGdleHA6IEFsbG93IGNvbXB1dGluZyB0aGUgaGFzaCBvZiB0aGUgbG9jYWwgZmlsZSBpbgog YWR2YW5jZS4KClRoZSBuZXcgZmllbGQgaXMgY3VycmVudGx5IHVudXNlZC4gIFRoZSBmb2xsb3dp bmcgcGF0Y2hlcyB3aWxsCnBvcHVsYXRlIGFuZCB1c2UgdGhlIGZpZWxkIHRvIHJlZHVjZSB0aGUg dGltZS10by1kZXJpdmF0aW9uCndoZW4gdGhlIGZpbGUgaXMgYWxyZWFkeSBpbnRlcm5lZCBpbiB0 aGUgc3RvcmUuCgoqIGd1aXgvZ2V4cC5zY20KICAoPGxvY2FsLWZpbGU+KTogQWRkIHNoYTI1NiBm aWVsZC4KICAoJWxvY2FsLWZpbGUpOiBBZGQgc2hhMjU2IGFyZ3VtZW50IGZvciBwb3B1bGF0aW5n IHRoZSBmaWVsZC4KICAobG9jYWwtZmlsZS1jb21waWxlcik6IEFkanVzdCAnbWF0Y2gnIGV4cHJl c3Npb24uCi0tLQogZ3VpeC9nZXhwLnNjbSB8IDEyICsrKysrKysrLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ndWl4L2dl eHAuc2NtIGIvZ3VpeC9nZXhwLnNjbQppbmRleCBmM2QyNzhiM2U2Li5hNjMzOTg0Njg4IDEwMDY0 NAotLS0gYS9ndWl4L2dleHAuc2NtCisrKyBiL2d1aXgvZ2V4cC5zY20KQEAgLTQxOSwxMyArNDE5 LDE2IEBAIEhlcmUgVEFSR0VUIGlzIGJvdW5kIHRvIHRoZSBjcm9zcy1jb21waWxhdGlvbiB0cmlw bGV0IG9yICNmLiIKIDs7IEEgbG9jYWwgZmlsZSBuYW1lLiAgRklMRSBpcyB0aGUgZmlsZSBuYW1l IHRoZSB1c2VyIGVudGVyZWQsIHdoaWNoIGNhbiBiZSBhCiA7OyByZWxhdGl2ZSBmaWxlIG5hbWUs IGFuZCBBQlNPTFVURSBpcyBhIHByb21pc2UgdGhhdCBjb21wdXRlcyBpdHMgY2Fub25pY2FsCiA7 OyBhYnNvbHV0ZSBmaWxlIG5hbWUuICBXZSBrZWVwIGl0IGluIGEgcHJvbWlzZSB0byBjb21wdXRl IGl0IGxhemlseSBhbmQgYXZvaWQKLTs7IHJlcGVhdGVkICdzdGF0JyBjYWxscy4KKzs7IHJlcGVh dGVkICdzdGF0JyBjYWxscy4gIEFsbG93IGNvbXB1dGluZyB0aGUgaGFzaCBvZiB0aGUgZmlsZSBp biBhZHZhbmNlLAorOzsgdG8gYXZvaWQgaGF2aW5nIHRvIHNlbmQgdGhlIGZpbGUgdG8gdGhlIGRh ZW1vbiB3aGVuIGl0IGlzIGFscmVhZHkgaW50ZXJuZWQKKzs7IGluIHRoZSBzdG9yZS4KIChkZWZp bmUtcmVjb3JkLXR5cGUgPGxvY2FsLWZpbGU+Ci0gICglJWxvY2FsLWZpbGUgZmlsZSBhYnNvbHV0 ZSBuYW1lIHJlY3Vyc2l2ZT8gc2VsZWN0PykKKyAgKCUlbG9jYWwtZmlsZSBmaWxlIGFic29sdXRl IG5hbWUgc2hhMjU2IHJlY3Vyc2l2ZT8gc2VsZWN0PykKICAgbG9jYWwtZmlsZT8KICAgKGZpbGUg ICAgICAgbG9jYWwtZmlsZS1maWxlKSAgICAgICAgICAgICAgICAgICAgO3N0cmluZwogICAoYWJz b2x1dGUgICAlbG9jYWwtZmlsZS1hYnNvbHV0ZS1maWxlLW5hbWUpICAgICA7cHJvbWlzZSBzdHJp bmcKICAgKG5hbWUgICAgICAgbG9jYWwtZmlsZS1uYW1lKSAgICAgICAgICAgICAgICAgICAgO3N0 cmluZworICAoc2hhMjU2ICAgICBsb2NhbC1maWxlLXNoYTI1NikgICAgICAgICAgICAgICAgICA7 c2hhMjU2IGJ5dGV2ZWN0b3IgfCAjZgogICAocmVjdXJzaXZlPyBsb2NhbC1maWxlLXJlY3Vyc2l2 ZT8pICAgICAgICAgICAgICA7Qm9vbGVhbgogICAoc2VsZWN0PyAgICBsb2NhbC1maWxlLXNlbGVj dD8pKSAgICAgICAgICAgICAgICA7c3RyaW5nIHN0YXQgLT4gQm9vbGVhbgogCkBAIC00MzQsNiAr NDM3LDcgQEAgSGVyZSBUQVJHRVQgaXMgYm91bmQgdG8gdGhlIGNyb3NzLWNvbXBpbGF0aW9uIHRy aXBsZXQgb3IgI2YuIgogKGRlZmluZSogKCVsb2NhbC1maWxlIGZpbGUgcHJvbWlzZSAjOm9wdGlv bmFsIChuYW1lIChiYXNlbmFtZSBmaWxlKSkKICAgICAgICAgICAgICAgICAgICAgICAjOmtleQog ICAgICAgICAgICAgICAgICAgICAgIChsaXRlcmFsPyAjdCkgbG9jYXRpb24KKyAgICAgICAgICAg ICAgICAgICAgICBzaGEyNTYKICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNpdmU/IChzZWxl Y3Q/IHRydWUpKQogICA7OyBUaGlzIGludGVybWVkaWF0ZSBwcm9jZWR1cmUgaXMgcGFydCBvZiBv dXIgQUJJLCBidXQgdGhlIHVuZGVybHlpbmcKICAgOzsgJSVMT0NBTC1GSUxFIGlzIG5vdC4KQEAg LTQ0MSw3ICs0NDUsNyBAQCBIZXJlIFRBUkdFVCBpcyBib3VuZCB0byB0aGUgY3Jvc3MtY29tcGls YXRpb24gdHJpcGxldCBvciAjZi4iCiAgICAgKHdhcm5pbmcgKGFuZD0+IGxvY2F0aW9uIHNvdXJj ZS1wcm9wZXJ0aWVzLT5sb2NhdGlvbikKICAgICAgICAgICAgICAoR18gInJlc29sdmluZyAnfmEn IHJlbGF0aXZlIHRvIGN1cnJlbnQgZGlyZWN0b3J5fiUiKQogICAgICAgICAgICAgIGZpbGUpKQot ICAoJSVsb2NhbC1maWxlIGZpbGUgcHJvbWlzZSBuYW1lIHJlY3Vyc2l2ZT8gc2VsZWN0PykpCisg ICglJWxvY2FsLWZpbGUgZmlsZSBwcm9taXNlIG5hbWUgc2hhMjU2IHJlY3Vyc2l2ZT8gc2VsZWN0 PykpCiAKIChkZWZpbmUgKGFic29sdXRlLWZpbGUtbmFtZSBmaWxlIGRpcmVjdG9yeSkKICAgIlJl dHVybiB0aGUgY2Fub25pY2FsIGFic29sdXRlIGZpbGUgbmFtZSBmb3IgRklMRSwgd2hpY2ggbGl2 ZXMgaW4gdGhlCkBAIC01MTcsNyArNTIxLDcgQEAgYXBwZWFycy4iCiAoZGVmaW5lLWdleHAtY29t cGlsZXIgKGxvY2FsLWZpbGUtY29tcGlsZXIgKGZpbGUgPGxvY2FsLWZpbGU+KSBzeXN0ZW0gdGFy Z2V0KQogICA7OyAiQ29tcGlsZSIgRklMRSBieSBhZGRpbmcgaXQgdG8gdGhlIHN0b3JlLgogICAo bWF0Y2ggZmlsZQotICAgICgoJCA8bG9jYWwtZmlsZT4gZmlsZSAoPSBmb3JjZSBhYnNvbHV0ZSkg bmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pCisgICAgKCgkIDxsb2NhbC1maWxlPiBmaWxlICg9IGZv cmNlIGFic29sdXRlKSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8pCiAgICAgIDs7IENh bm9uaWNhbGl6ZSBGSUxFIHNvIHRoYXQgaWYgaXQncyBhIHN5bWxpbmssIGl0IGlzIHJlc29sdmVk LiAgRmFpbGluZwogICAgICA7OyB0byBkbyB0aGF0LCB3aGVuIFJFQ1VSU0lWRT8gaXMgI3QsIHdl IGNvdWxkIGVuZCB1cCBjcmVhdGluZyBhIGRhbmdsaW5nCiAgICAgIDs7IHN5bWxpbmsgaW4gdGhl IHN0b3JlLCBhbmQgd2hlbiBSRUNVUlNJVkU/IGlzICNmICdhZGQtdG8tc3RvcmUnIHdvdWxkCi0t IAoyLjMzLjAKCg== --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename="0006-gexp-Allow-overriding-the-absolute-file-name.patch" Content-Type: text/x-patch; name="0006-gexp-Allow-overriding-the-absolute-file-name.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkNjQ3ZmQ3MTNiMGE5ZTJiMWIxYmNhY2ZhOTU0NmRhOWNlMjNjNjkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNjoyNToyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYv MTBdIGdleHA6IEFsbG93IG92ZXJyaWRpbmcgdGhlIGFic29sdXRlIGZpbGUgbmFtZS4KClRoaXMg d2lsbCBiZSB1c2VkIGJ5IHRoZSBuZXh0IHBhdGNoIHRvIGltcGxlbWVudCBzZWFyY2gtcGF0Y2gg aW4KdGVybXMgb2YgbG9jYWwtZmlsZS4KCiogZ3VpeC9nZXhwLnNjbQogIChwcmVjYW5vbmljYWxp emVkLWZpbGUtbmFtZSk6IE5ldyBtYWNyby4KICAobG9jYWwtZmlsZSk6IFVzZSB0aGUgYWJzb2x1 dGUgZmlsZSBuYW1lIGZyb20gcHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUKICB3aGVuIGF2YWls YWJsZS4KLS0tCiBndWl4L2dleHAuc2NtIHwgMTIgKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdl ZCwgMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2d1aXgvZ2V4 cC5zY20gYi9ndWl4L2dleHAuc2NtCmluZGV4IGE2MzM5ODQ2ODguLmM2OWU0YWEyOTkgMTAwNjQ0 Ci0tLSBhL2d1aXgvZ2V4cC5zY20KKysrIGIvZ3VpeC9nZXhwLnNjbQpAQCAtNTEsNiArNTEsNyBA QAogICAgICAgICAgICAgZ2V4cC1pbnB1dC1vdXRwdXQKICAgICAgICAgICAgIGdleHAtaW5wdXQt bmF0aXZlPwogCisgICAgICAgICAgICBwcmVjYW5vbmljYWxpemVkLWZpbGUtbmFtZQogICAgICAg ICAgICAgYXNzdW1lLXZhbGlkLWZpbGUtbmFtZQogICAgICAgICAgICAgbG9jYWwtZmlsZQogICAg ICAgICAgICAgbG9jYWwtZmlsZT8KQEAgLTQ2Myw2ICs0NjQsMTIgQEAgdGhlIGdpdmVuIGZpbGUg bmFtZSBpcyB2YWxpZCwgZXZlbiBpZiBpdCdzIG5vdCBhIHN0cmluZyBsaXRlcmFsLCBhbmQgdGh1 cyBub3QKIHdhcm4gYWJvdXQgaXQuIgogICBmaWxlKQogCisoZGVmaW5lLXN5bnRheC1ydWxlIChw cmVjYW5vbmljYWxpemVkLWZpbGUtbmFtZSBmaWxlIGFic29sdXRlKQorICAiVGhpcyBpcyBhIHN5 bnRhY3RpYyBrZXl3b3JkIHRvIHRlbGwgJ2xvY2FsLWZpbGUnIHRoYXQgaXQgY2FuIGFzc3VtZSB0 aGF0Cit0aGUgZ2l2ZW4gZmlsZSBuYW1lIEZJTEUgaGFzIEFCU09MVVRFIGFzIGFic29sdXRlIGZp bGUgbmFtZSBhbmQgJ2xvY2FsLWZpbGUnCitkb2VzIG5vdCBuZWVkIHRvIGNvbXB1dGUgdGhlIGFi c29sdXRlIGZpbGUgbmFtZSBieSBpdHNlbGYuIgorICBhYnNvbHV0ZSkKKwogKGRlZmluZS1zeW50 YXggbG9jYWwtZmlsZQogICAobGFtYmRhIChzKQogICAgICJSZXR1cm4gYW4gb2JqZWN0IHJlcHJl c2VudGluZyBsb2NhbCBmaWxlIEZJTEUgdG8gYWRkIHRvIHRoZSBzdG9yZTsgdGhpcwpAQCAtNDgx LDcgKzQ4OCw3IEBAIHdoZXJlIEZJTEUgaXMgdGhlIGVudHJ5J3MgYWJzb2x1dGUgZmlsZSBuYW1l IGFuZCBTVEFUIGlzIHRoZSByZXN1bHQgb2YKIFRoaXMgaXMgdGhlIGRlY2xhcmF0aXZlIGNvdW50 ZXJwYXJ0IG9mIHRoZSAnaW50ZXJuZWQtZmlsZScgbW9uYWRpYyBwcm9jZWR1cmUuCiBJdCBpcyBp bXBsZW1lbnRlZCBhcyBhIG1hY3JvIHRvIGNhcHR1cmUgdGhlIGN1cnJlbnQgc291cmNlIGRpcmVj dG9yeSB3aGVyZSBpdAogYXBwZWFycy4iCi0gICAgKHN5bnRheC1jYXNlIHMgKGFzc3VtZS12YWxp ZC1maWxlLW5hbWUpCisgICAgKHN5bnRheC1jYXNlIHMgKGFzc3VtZS12YWxpZC1maWxlLW5hbWUg cHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUpCiAgICAgICAoKF8gZmlsZSByZXN0IC4uLikKICAg ICAgICAoc3RyaW5nPyAoc3ludGF4LT5kYXR1bSAjJ2ZpbGUpKQogICAgICAgIDs7IEZJTEUgaXMg YSBsaXRlcmFsLCBzbyByZXNvbHZlIGl0IHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgZGlyZWN0b3J5 LgpAQCAtNDk1LDYgKzUwMiw5IEBAIGFwcGVhcnMuIgogICAgICAgICMnKCVsb2NhbC1maWxlIGZp bGUKICAgICAgICAgICAgICAgICAgICAgICAoZGVsYXkgKGFic29sdXRlLWZpbGUtbmFtZSBmaWxl IChnZXRjd2QpKSkKICAgICAgICAgICAgICAgICAgICAgICByZXN0IC4uLikpCisgICAgICAoKF8g KHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lIGZpbGUgYWJzb2x1dGUpIHJlc3QgLi4uKQorICAg ICAgIDs7IFVzZSB0aGUgZ2l2ZW4gZmlsZSBuYW1lIEFCU09MVVRFIGFzIGFic29sdXRlIGZpbGUg bmFtZS4KKyAgICAgICAjJyglbG9jYWwtZmlsZSBmaWxlIChkZWxheSBhYnNvbHV0ZSkgcmVzdCAu Li4pKQogICAgICAgKChfIGZpbGUgcmVzdCAuLi4pCiAgICAgICAgOzsgUmVzb2x2ZSBGSUxFIHJl bGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgICAgICAod2l0aC1zeW50YXggKChs b2NhdGlvbiAoZGF0dW0tPnN5bnRheCBzIChzeW50YXgtc291cmNlIHMpKSkpCi0tIAoyLjMzLjAK Cg== --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0007-packages-Compute-the-hash-of-patches-in-advance-when.pat; filename*1=ch Content-Type: text/x-patch; name="0007-packages-Compute-the-hash-of-patches-in-advance-when.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2NjI4Y2NkYTM5NjI0MzQ2ZTdkZjdkNjYwZjgwNWI2OTA2YzNiMWQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNzoyNTo1OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDcv MTBdIHBhY2thZ2VzOiBDb21wdXRlIHRoZSBoYXNoIG9mIHBhdGNoZXMgaW4gYWR2YW5jZSB3aGVu CiBwb3NzaWJsZS4KCiogZ251L3BhY2thZ2VzLnNjbQogIChzZWFyY2gtcGF0Y2gpOiBSZW5hbWUg dG8gLi4uCiAgKCVzZWFyY2gtcGF0Y2gpOiAuLi4gdGhpcy4KICAodHJ5LXNlYXJjaC1wYXRjaCk6 IE5ldyBwcm9jZWR1cmUsIGV4dHJhY3RlZCBmcm9tIC4uLgogICglc2VhcmNoLXBhdGNoKTogLi4u IHRoaXMgcHJvY2VkdXJlLgogICglbG9jYWwtcGF0Y2gtZmlsZSk6IE5ldyBwcm9jZWR1cmUuCiAg KHRydWUpOiBOZXcgcHJvY2VkdXJlLgogIChzZWFyY2gtcGF0Y2gpOiBOZXcgbWFjcm8sIGJlaGF2 aW5nIGxpa2UgJXNlYXJjaC1wYXRjaCwgYnV0IGNvbXB1dGluZyB0aGUKICBoYXNoIGF0IGV4cGFu c2lvbiB0aW1lIHdoZW4gcG9zc2libGUuCiogZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbQogICgl Z3VpeC1wYXRjaGVzKTogVXNlIHNlYXJjaC1wYXRjaGVzIGluc3RlYWQgb2YgbG9jYWwtZmlsZSAr CiAgYXNzdW1lLXZhbGlkLWZpbGUtbmFtZSArIHNlYXJjaC1wYXRjaC4KKiBnbnUvcGFja2FnZXMv Z251emlsbGEuc2NtCiAgKGljZWNhdC1zb3VyY2UpW2dudXppbGxhLWZpeGVzLXBhdGNoXTogVXNl IHNlYXJjaC1wYXRjaCBpbnN0ZWFkIG9mCiAgbG9jYWwtZmlsZSArIGFzc3VsZS12YWxpZC1maWxl LW5hbWUgKyBzZWFyY2gtcGF0Y2guCiAgKGljZWNhdC1zb3VyY2UpW21ha2VpY2VjYXQtcGF0Y2hd OiBMaWtld2lzZS4KKiBnbnUvcGFja2FnZXMvZW1iZWRkZWQuc2NtCiAgKGdjYy1hcm0tbm9uZS1l YWJpLTQuOSlbc291cmNlXXtwYXRjaGVzfTogRXhwZWN0IHBhdGNoZXMgdG8gYmUKICBsb2NhbC1m aWxlIG9iamVjdHMgaW5zdGVhZCBvZiBzdHJpbmdzLgogIG9mIHN0cmluZ3MuCiogZ3VpeC9saW50 LnNjbSAoY2hlY2stcGF0Y2gtZmlsZS1uYW1lcyk6IEFsbG93IGxvY2FsLWZpbGUgb2JqZWN0cy4K LS0tCiBnbnUvcGFja2FnZXMuc2NtICAgICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tCiBnbnUvcGFja2FnZXMvY2hyb21pdW0uc2NtIHwgIDQgKy0tLQog Z251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbSB8ICAzICsrLQogZ251L3BhY2thZ2VzL2dudXppbGxh LnNjbSB8ICA4ICsrLS0tLS0tCiBndWl4L2xpbnQuc2NtICAgICAgICAgICAgIHwgMjggKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwg MjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzLnNjbSBiL2dudS9wYWNr YWdlcy5zY20KaW5kZXggY2NmYzgzZGQxMS4uZjU1NTJlNWE5YiAxMDA2NDQKLS0tIGEvZ251L3Bh Y2thZ2VzLnNjbQorKysgYi9nbnUvcGFja2FnZXMuc2NtCkBAIC00LDYgKzQsNyBAQAogOzs7IENv cHlyaWdodCDCqSAyMDE0IEVyaWMgQmF2aWVyIDxiYXZpZXJAbWVtYmVyLmZzZi5vcmc+CiA7Ozsg Q29weXJpZ2h0IMKpIDIwMTYsIDIwMTcgQWxleCBLb3N0IDxhbGV6b3N0QGdtYWlsLmNvbT4KIDs7 OyBDb3B5cmlnaHQgwqkgMjAxNiBNYXRoaWV1IExpcnppbiA8bXRobEBnbnUub3JnPgorOzs7IENv cHlyaWdodCDCqSAyMDIxIE1heGltZSBEZXZvcyA8bWF4aW1lZGV2b3NAdGVsZW5ldC5iZT4KIDs7 OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0yMSwxMSArMjIs MTMgQEAKIDs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgogCiAoZGVmaW5lLW1vZHVsZSAoZ251IHBhY2thZ2VzKQorICAj OnVzZS1tb2R1bGUgKGd1aXggZ2V4cCkKICAgIzp1c2UtbW9kdWxlIChndWl4IHBhY2thZ2VzKQog ICAjOnVzZS1tb2R1bGUgKGd1aXggdWkpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCB1dGlscykKICAg Izp1c2UtbW9kdWxlIChndWl4IGRpYWdub3N0aWNzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZGlz Y292ZXJ5KQorICAjOnVzZS1tb2R1bGUgKGd1aXggaGFzaCkKICAgIzp1c2UtbW9kdWxlIChndWl4 IG1lbW9pemF0aW9uKQogICAjOnVzZS1tb2R1bGUgKChndWl4IGJ1aWxkIHV0aWxzKQogICAgICAg ICAgICAgICAgICM6c2VsZWN0ICgocGFja2FnZS1uYW1lLT5uYW1lK3ZlcnNpb24KQEAgLTkwLDEy ICs5Myw0NyBAQAogICAiU2VhcmNoIHRoZSBhdXhpbGlhcnkgRklMRS1OQU1FLiAgUmV0dXJuICNm IGlmIG5vdCBmb3VuZC4iCiAgIChzZWFyY2gtcGF0aCAoJWF1eGlsaWFyeS1maWxlcy1wYXRoKSBm aWxlLW5hbWUpKQogCi0oZGVmaW5lIChzZWFyY2gtcGF0Y2ggZmlsZS1uYW1lKQorKGRlZmluZSAo dHJ5LXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpCisgICJTZWFyY2ggdGhlIHBhdGNoIEZJTEUtTkFN RS4gIFJldHVybiAjZiBpZiBub3QgZm91bmQuIgorICAoc2VhcmNoLXBhdGggKCVwYXRjaC1wYXRo KSBmaWxlLW5hbWUpKQorCisoZGVmaW5lICglc2VhcmNoLXBhdGNoIGZpbGUtbmFtZSkKICAgIlNl YXJjaCB0aGUgcGF0Y2ggRklMRS1OQU1FLiAgUmFpc2UgYW4gZXJyb3IgaWYgbm90IGZvdW5kLiIK LSAgKG9yIChzZWFyY2gtcGF0aCAoJXBhdGNoLXBhdGgpIGZpbGUtbmFtZSkKKyAgKG9yICh0cnkt c2VhcmNoLXBhdGNoIGZpbGUtbmFtZSkKICAgICAgIChyYWlzZSAoZm9ybWF0dGVkLW1lc3NhZ2Ug KEdfICJ+YTogcGF0Y2ggbm90IGZvdW5kIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmlsZS1uYW1lKSkpKQogCisoZGVmaW5lICglbG9jYWwtcGF0Y2gtZmlsZSBmaWxlLW5hbWUg aGFzaCkKKyAgIlNlYXJjaCB0aGUgcGF0Y2ggRklMRS1OQU1FLCB3aGljaCBpcyBrbm93biB0byBo YXZlIEhBU0guIgorICAobG9jYWwtZmlsZSAocHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUgZmls ZS1uYW1lICglc2VhcmNoLXBhdGNoIGZpbGUtbmFtZSkpCisgICAgICAgICAgICAgICM6c2hhMjU2 IGhhc2ggIzpyZWN1cnNpdmU/ICN0KSkKKworKGRlZmluZSB0cnVlIChjb25zdCAjdCkpCisKKyhk ZWZpbmUtc3ludGF4IHNlYXJjaC1wYXRjaAorICAobGFtYmRhIChzKQorICAgICJTZWFyY2ggdGhl IHBhdGNoIEZJTEUtTkFNRSBhbmQgY29tcHV0ZSBpdHMgaGFzaCBhdCBleHBhbnNpb24gdGltZQor aWYgcG9zc2libGUuICBSZXR1cm4gI2YgaWYgbm90IGZvdW5kLiIKKyAgICAoc3ludGF4LWNhc2Ug cyAoKQorICAgICAgKChfIGZpbGUtbmFtZSkKKyAgICAgICAoc3RyaW5nPyAoc3ludGF4LT5kYXR1 bSAjJ2ZpbGUtbmFtZSkpCisgICAgICAgOzsgRklMRS1OQU1FIGlzIGEgY29uc3RhbnQgc3RyaW5n LCBzbyB0aGUgaGFzaCBjYW4gYmUgY29tcHV0ZWQKKyAgICAgICA7OyBpbiBhZHZhbmNlLgorICAg ICAgIChsZXQgKChwYXRjaCAodHJ5LXNlYXJjaC1wYXRjaCAoc3ludGF4LT5kYXR1bSAjJ2ZpbGUt bmFtZSkpKSkKKyAgICAgICAgIChpZiBwYXRjaAorICAgICAgICAgICAgICNgKCVsb2NhbC1wYXRj aC1maWxlIGZpbGUtbmFtZSAjLChmaWxlLWhhc2gqIHBhdGNoICM6c2VsZWN0PyB0cnVlKSkKKyAg ICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgICAgICh3YXJuaW5nIChzb3VyY2UtcHJvcGVy dGllcy0+bG9jYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3ludGF4LXNvdXJjZSAj J2ZpbGUtbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoR18gIn5hOiBwYXRjaCBub3Qg Zm91bmQgYXQgZXhwYW5zaW9uIHRpbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgKHN5bnRh eC0+ZGF0dW0gIydpbGUtbmFtZSkpCisgICAgICAgICAgICAgICAjJyglc2VhcmNoLXBhdGNoIGZp bGUtbmFtZSkpKSkpCisgICAgICA7OyBGSUxFLU5BTUUgaXMgdmFyaWFibGUsIHNvIHRoZSBoYXNo IGNhbm5vdCBiZSBwcmUtY29tcHV0ZWQuCisgICAgICAoKF8gZmlsZS1uYW1lKSAjJyglc2VhcmNo LXBhdGNoIGZpbGUtbmFtZSkpCisgICAgICA7OyBzZWFyY2gtcGF0Y2ggaXMgYmVpbmcgdXNlZCB1 c2VkIGluIGEgY29uc3RydWN0IGxpa2UKKyAgICAgIDs7IChtYXAgc2VhcmNoLXBhdGNoIC4uLiku CisgICAgICAoaWQgKGlkZW50aWZpZXI/ICMnaWQpICMnJXNlYXJjaC1wYXRjaCkpKSkKKwogKGRl ZmluZS1zeW50YXgtcnVsZSAoc2VhcmNoLXBhdGNoZXMgZmlsZS1uYW1lIC4uLikKICAgIlJldHVy biB0aGUgbGlzdCBvZiBhYnNvbHV0ZSBmaWxlIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaAog RklMRS1OQU1FIGZvdW5kIGluICVQQVRDSC1QQVRILiIKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdl cy9jaHJvbWl1bS5zY20gYi9nbnUvcGFja2FnZXMvY2hyb21pdW0uc2NtCmluZGV4IDI2YWUxZTI1 NTAuLmNmNDE5Y2Y0MWIgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KKysr IGIvZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbQpAQCAtMzUxLDkgKzM1MSw3IEBACiAgICAgICAi MHdiY2Jqemg1YWs0bmNpYWhxdzR5dnhjNHg4aWs0eDBpejloNGtmeTBtMDExc3h6eTE3NCIpKSkp CiAKIChkZWZpbmUgJWd1aXgtcGF0Y2hlcwotICAobGlzdCAobG9jYWwtZmlsZQotICAgICAgICAg KGFzc3VtZS12YWxpZC1maWxlLW5hbWUKLSAgICAgICAgICAoc2VhcmNoLXBhdGNoICJ1bmdvb2ds ZWQtY2hyb21pdW0tZXh0ZW5zaW9uLXNlYXJjaC1wYXRoLnBhdGNoIikpKSkpCisgIChzZWFyY2gt cGF0Y2hlcyAidW5nb29nbGVkLWNocm9taXVtLWV4dGVuc2lvbi1zZWFyY2gtcGF0aC5wYXRjaCIp KQogCiA7OyBUaGlzIGlzIGEgc291cmNlICdzbmlwcGV0JyB0aGF0IGRvZXMgdGhlIGZvbGxvd2lu ZzoKIDs7ICopIEFwcGxpZXMgdmFyaW91cyBwYXRjaGVzIGZvciB1bmJ1bmRsaW5nIHB1cnBvc2Vz IGFuZCBsaWJzdGRjKysgY29tcGF0aWJpbGl0eS4KZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9l bWJlZGRlZC5zY20gYi9nbnUvcGFja2FnZXMvZW1iZWRkZWQuc2NtCmluZGV4IGYzODhjMTFjM2Qu LjgyNmY1NjU1YzMgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9lbWJlZGRlZC5zY20KKysrIGIv Z251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQpAQCAtMzAsNiArMzAsNyBAQAogICAjOnVzZS1tb2R1 bGUgKGd1aXggcGFja2FnZXMpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAgIzp1 c2UtbW9kdWxlIChndWl4IHN2bi1kb3dubG9hZCkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGdleHAp CiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBnaXQtZG93bmxvYWQpCiAgICM6dXNlLW1vZHVsZSAoKGd1 aXggbGljZW5zZXMpICM6cHJlZml4IGxpY2Vuc2U6KQogICAjOnVzZS1tb2R1bGUgKGd1aXggYnVp bGQtc3lzdGVtIGNtYWtlKQpAQCAtOTEsNyArOTIsNyBAQAogICAgICAgICAgOzsgUmVtb3ZlIHRo ZSBvbmUgcGF0Y2ggdGhhdCBkb2Vzbid0IGFwcGx5IHRvIHRoaXMgNC45IHNuYXBzaG90ICh0aGUK ICAgICAgICAgIDs7IHBhdGNoIGlzIGZvciA0LjkuNCBhbmQgbGF0ZXIgYnV0IHRoaXMgc3ZuIHNu YXBzaG90IGlzIG9sZGVyKS4KICAgICAgICAgIChwYXRjaGVzIChyZW1vdmUgKGxhbWJkYSAocGF0 Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZz0/IChiYXNlbmFtZSBwYXRj aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nPT8gKGxvY2FsLWZpbGUtbmFt ZSBwYXRjaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdjYy1hcm0t YnVnLTcxMzk5LnBhdGNoIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmlnaW4tcGF0 Y2hlcyAocGFja2FnZS1zb3VyY2UgeGdjYykpKSkpKQogICAgICAgKG5hdGl2ZS1pbnB1dHMKZGlm ZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9nbnV6aWxsYS5zY20gYi9nbnUvcGFja2FnZXMvZ251emls bGEuc2NtCmluZGV4IDU3NmJjMjU4NmYuLmJlNjc0ZGNlOGYgMTAwNjQ0Ci0tLSBhL2dudS9wYWNr YWdlcy9nbnV6aWxsYS5zY20KKysrIGIvZ251L3BhY2thZ2VzL2dudXppbGxhLnNjbQpAQCAtNzM2 LDE0ICs3MzYsMTAgQEAgZnJvbSBmb3JjaW5nIEdFWFAtUFJPTUlTRS4iCiAgICAgICAgICAgICAg KGJhc2UzMgogICAgICAgICAgICAgICAiMDB3czM1NDB4NXdocGljYzVmeDRrOTQ5ZmY3M2NxdmFq ejZqcDEzYWhuNDl3cWRhZHM0NyIpKSkpCiAKLSAgICAgICAgIDs7ICdzZWFyY2gtcGF0Y2gnIHJl dHVybnMgZWl0aGVyIGEgdmFsaWQgZmlsZSBuYW1lIG9yICNmLCBzbyB3cmFwIGl0Ci0gICAgICAg ICA7OyBpbiAnYXNzdW1lLXZhbGlkLWZpbGUtbmFtZScgdG8gYXZvaWQgJ2xvY2FsLWZpbGUnIHdh cm5pbmdzLgogICAgICAgICAgKGdudXppbGxhLWZpeGVzLXBhdGNoCi0gICAgICAgICAgKGxvY2Fs LWZpbGUgKGFzc3VtZS12YWxpZC1maWxlLW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgKHNl YXJjaC1wYXRjaCAiaWNlY2F0LXVzZS1vbGRlci1yZXZlYWwtaGlkZGVuLWh0bWwucGF0Y2giKSkp KQorICAgICAgICAgIChzZWFyY2gtcGF0Y2ggImljZWNhdC11c2Utb2xkZXItcmV2ZWFsLWhpZGRl bi1odG1sLnBhdGNoIikpCiAgICAgICAgICAobWFrZWljZWNhdC1wYXRjaAotICAgICAgICAgIChs b2NhbC1maWxlIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAg IChzZWFyY2gtcGF0Y2ggImljZWNhdC1tYWtlaWNlY2F0LnBhdGNoIikpKSkpCisgICAgICAgICAg KHNlYXJjaC1wYXRjaCAiaWNlY2F0LW1ha2VpY2VjYXQucGF0Y2giKSkpCiAKICAgICAob3JpZ2lu CiAgICAgICAobWV0aG9kIGNvbXB1dGVkLW9yaWdpbi1tZXRob2QpCmRpZmYgLS1naXQgYS9ndWl4 L2xpbnQuc2NtIGIvZ3VpeC9saW50LnNjbQppbmRleCA0MTNiMGI5OTA1Li5mNzA4NDY1ZWQ4IDEw MDY0NAotLS0gYS9ndWl4L2xpbnQuc2NtCisrKyBiL2d1aXgvbGludC5zY20KQEAgLTQ2LDYgKzQ2 LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V4cC0+YXBwcm94aW1hdGUt c2V4cCkpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBsaWNlbnNlcykKICAgIzp1c2UtbW9kdWxlIChn dWl4IHJlY29yZHMpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQogICAjOnVzZS1tb2R1bGUg KGd1aXggZ3JhZnRzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggdXBzdHJlYW0pCiAgICM6dXNlLW1v ZHVsZSAoZ3VpeCB1dGlscykKQEAgLTkzMiw2ICs5MzMsOCBAQCBwYXRjaCBjb3VsZCBub3QgYmUg Zm91bmQuIgogICAgICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChi YXNlbmFtZSBwYXRjaCkpKQogICAgICAgICAgICAgICAgICAgKCg/IG9yaWdpbj8gcGF0Y2gpCiAg ICAgICAgICAgICAgICAgICAgKHN0YXJ0cy13aXRoLXBhY2thZ2UtbmFtZT8gKG9yaWdpbi1hY3R1 YWwtZmlsZS1uYW1lIHBhdGNoKSkpCisgICAgICAgICAgICAgICAgICAoKD8gbG9jYWwtZmlsZT8g cGF0Y2gpCisgICAgICAgICAgICAgICAgICAgKHN0YXJ0cy13aXRoLXBhY2thZ2UtbmFtZT8gKGxv Y2FsLWZpbGUtbmFtZSBwYXRjaCkpKQogICAgICAgICAgICAgICAgICAgKF8gICNmKSkgICAgIDtt dXN0IGJlIHNvbWUgb3RoZXIgZmlsZS1saWtlIG9iamVjdAogICAgICAgICAgICAgICAgIHBhdGNo ZXMpCiAgICAgICAgICAnKCkKQEAgLTk0NSwxOSArOTQ4LDIyIEBAIHBhdGNoIGNvdWxkIG5vdCBi ZSBmb3VuZC4iCiAgICAgIChsZXQgKChwcmVmaXggKHN0cmluZy1sZW5ndGggKCVkaXN0cm8tZGly ZWN0b3J5KSkpCiAgICAgICAgICAgIChtYXJnaW4gKHN0cmluZy1sZW5ndGggImd1aXgtMi4wLjBy YzMtMTAwMDAtMTIzNDU2Nzg5MC8iKSkKICAgICAgICAgICAgKG1heCAgICA5OSkpCisgICAgICAg KGRlZmluZSAodGVzdC1wYXRjaC1uYW1lIGZpbGUtbmFtZSkKKyAgICAgICAgIChpZiAoPiAoKyBt YXJnaW4gKGlmIChzdHJpbmctcHJlZml4PyAoJWRpc3Ryby1kaXJlY3RvcnkpIGZpbGUtbmFtZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChzdHJpbmctbGVuZ3RoIGZpbGUtbmFt ZSkgcHJlZml4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1sZW5ndGgg ZmlsZS1uYW1lKSkpCisgICAgICAgICAgICAgICAgbWF4KQorICAgICAgICAgICAgIChtYWtlLXdh cm5pbmcKKyAgICAgICAgICAgICAgcGFja2FnZQorICAgICAgICAgICAgICAoR18gIn5hOiBmaWxl IG5hbWUgaXMgdG9vIGxvbmciKQorICAgICAgICAgICAgICAobGlzdCAoYmFzZW5hbWUgZmlsZS1u YW1lKSkKKyAgICAgICAgICAgICAgIzpmaWVsZCAncGF0Y2gtZmlsZS1uYW1lcykKKyAgICAgICAg ICAgICAjZikpCiAgICAgICAgKGZpbHRlci1tYXAgKG1hdGNoLWxhbWJkYQogICAgICAgICAgICAg ICAgICAgICAgKCg/IHN0cmluZz8gcGF0Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgKGlmICg+ ICgrIG1hcmdpbiAoaWYgKHN0cmluZy1wcmVmaXg/ICglZGlzdHJvLWRpcmVjdG9yeSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0 Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHN0cmlu Zy1sZW5ndGggcGF0Y2gpIHByZWZpeCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RyaW5nLWxlbmd0aCBwYXRjaCkpKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXdhcm5pbmcKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIChHXyAifmE6IGZpbGUgbmFtZSBpcyB0b28gbG9uZyIpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAobGlzdCAoYmFzZW5hbWUgcGF0Y2gpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIzpmaWVsZCAncGF0Y2gtZmlsZS1uYW1lcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAg I2YpKQorICAgICAgICAgICAgICAgICAgICAgICh0ZXN0LXBhdGNoLW5hbWUgcGF0Y2gpKQorICAg ICAgICAgICAgICAgICAgICAgKCg/IGxvY2FsLWZpbGU/IHBhdGNoKQorICAgICAgICAgICAgICAg ICAgICAgICh0ZXN0LXBhdGNoLW5hbWUgKGxvY2FsLWZpbGUtYWJzb2x1dGUtZmlsZS1uYW1lIHBh dGNoKSkpCiAgICAgICAgICAgICAgICAgICAgICAoXyAjZikpCiAgICAgICAgICAgICAgICAgICAg cGF0Y2hlcykpKSkpCiAKLS0gCjIuMzMuMAoK --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0008-compile-all-compile-Keep-track-of-dependencies-of-co.pat; filename*1=ch Content-Type: text/x-patch; name="0008-compile-all-compile-Keep-track-of-dependencies-of-co.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5M2E0NjVmMzc3OGFhZTAxNDlhODZjNGZjOGRlOTQ0MzVkOGRiY2E2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNDowMjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDgv MTBdIGNvbXBpbGUtYWxsLGNvbXBpbGU6IEtlZXAgdHJhY2sgb2YgZGVwZW5kZW5jaWVzIG9mCiBj b21waWxlZCBtb2R1bGVzLgoKVGhpcyBwYXRjaCBkZWZpbmVzIGEgJ25vdGljZS1kZXBlbmRlbmN5 JyBwcm9jZWR1cmUuCk1hY3JvcyBjYW4gdXNlIHRoaXMgcHJvY2VkdXJlIHRvIGluZm9ybSBidWls ZC1hdXgvY29tcGlsZS1hbGwuc2NtCnRoYXQgYSBtb2R1bGUgbmVlZHMgdG8gYmUgcmVjb21waWxl ZCB3aGVuIHNvbWUgZmlsZSBpcyB1cGRhdGVkLgoKKiBndWl4L2J1aWxkL2NvbXBpbGUuc2NtCiAg KGN1cnJlbnQtZGVwZW5kZW5jeS1pbmZvLCBjdXJyZW50LW91dHB1dC1maWxlKTogTmV3IHBhcmFt ZXRlcnMuCiAgKG5vdGljZS1kZXBlbmRlbmN5KTogTmV3IHByb2NlZHVyZS4KICAoY29tcGlsZS1m aWxlcylbYnVpbGRdOiBTZXQgJ291dHB1dC1maWxlJy4gIERlbGV0ZSB0aGUgb2xkIGNvbXBpbGVk IGZpbGUKICBpZiBuZWNlc3NhcnkuICBSZW1vdmUgb2xkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24u CiogYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbTogUG9wdWxhdGUgY3VycmVudC1kZXBlbmRlbmN5 LWluZm8gZnJvbSBhIGZpbGUuCiAgUG9wdWxhdGUgdGhlIGZpbGUgZGVwZW5kZW5jeS1pbmZvLnNj bSBmcm9tIHRoZSBoYXNoIHRhYmxlLgogIChidWlsZGRpcik6IE5ldyB2YXJpYWJsZS4KICAoZmls ZS1uZWVkcy1jb21waWxhdGlvbj8pOiBDaGVjayBpZiB0aGUgLmdvIGZpbGUgaXMgb2xkZXIgdGhh biB0aGUKICBkZXBlbmRlbmNpZXMuCiogLmdpdGlnbm9yZTogSWdub3JlIGRlcGVuZGVuY3ktaW5m by5zY20uCi0tLQogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICB8ICAxICsKIGJ1aWxkLWF1eC9j b21waWxlLWFsbC5zY20gfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGd1 aXgvYnVpbGQvY29tcGlsZS5zY20gICAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODhmZTI0 NTg2ZC4uZjI0ZWE1ZmMzYiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3Jl CkBAIC0xNTQsMyArMTU0LDQgQEAgdG1wCiAvZ251L3BhY2thZ2VzL2Jvb3RzdHJhcAogL2dudS9w YWNrYWdlcy9hdXgtZmlsZXMvZ3VpbGUtZ3VpbGUtbGF1bmNoZXIubwogL2d1aWxlCisvZGVwZW5k ZW5jeS1pbmZvLnNjbQpkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbSBiL2J1 aWxkLWF1eC9jb21waWxlLWFsbC5zY20KaW5kZXggOWZmYmNlNDNhZC4uOTAyNTI3YjA4MyAxMDA2 NDQKLS0tIGEvYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbQorKysgYi9idWlsZC1hdXgvY29tcGls ZS1hbGwuc2NtCkBAIC0xLDYgKzEsNyBAQAogOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBh Y2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCiA7OzsgQ29weXJpZ2h0IMKpIDIwMTYgVGF5bGFuIFVs cmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlpcmxpQGdtYWlsLmNvbT4KIDs7OyBDb3B5 cmlnaHQgwqkgMjAxNiwgMjAxNywgMjAxOSwgMjAyMCwgMjAyMSBMdWRvdmljIENvdXJ0w6hzIDxs dWRvQGdudS5vcmc+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgTWF4aW1lIERldm9zIDxtYXhpbWVk ZXZvc0B0ZWxlbmV0LmJlPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXgu CiA7OzsKQEAgLTIwLDEyICsyMSwxNSBAQAogKHVzZS1tb2R1bGVzIChpY2UtOSBmb3JtYXQpCiAg ICAgICAgICAgICAgKGljZS05IG1hdGNoKQogICAgICAgICAgICAgIChpY2UtOSB0aHJlYWRzKQor ICAgICAgICAgICAgIChpY2UtOSBoYXNoLXRhYmxlKQogICAgICAgICAgICAgIChzcmZpIHNyZmkt MSkKKyAgICAgICAgICAgICAoc3JmaSBzcmZpLTI2KQogICAgICAgICAgICAgIChndWl4IGJ1aWxk IGNvbXBpbGUpCiAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRpbHMpKQogCiAoZGVmaW5lIGhv c3QgKGdldGVudiAiaG9zdCIpKQogKGRlZmluZSBzcmNkaXIgKGdldGVudiAic3JjZGlyIikpCiso ZGVmaW5lIGJ1aWxkZGlyIChnZXRjd2QpKQogCiAoZGVmaW5lIChyZWxhdGl2ZS1maWxlIGZpbGUp CiAgIChpZiAoc3RyaW5nLXByZWZpeD8gKHN0cmluZy1hcHBlbmQgc3JjZGlyICIvIikgZmlsZSkK QEAgLTQxLDEwICs0NSwzNSBAQAogICAgICAgICAgKHdpdGhvdXQtZXh0ZW5zaW9uIChzdHJpbmct ZHJvcC1yaWdodCByZWxhdGl2ZSA0KSkpCiAgICAgKHN0cmluZy1hcHBlbmQgd2l0aG91dC1leHRl bnNpb24gIi5nbyIpKSkKIAorOzsgUmVhZCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZyb20gcHJl dmlvdXMgIm1ha2UiIHJ1bnMuCisoY3VycmVudC1kZXBlbmRlbmN5LWluZm8gKG1ha2UtaGFzaC10 YWJsZSkpCisoaWYgKGZpbGUtZXhpc3RzPyAiZGVwZW5kZW5jeS1pbmZvLnNjbSIpCisgICAgKGN1 cnJlbnQtZGVwZW5kZW5jeS1pbmZvCisgICAgIChhbGlzdC0+aGFzaC10YWJsZQorICAgICAgKGNh bGwtd2l0aC1pbnB1dC1maWxlICJkZXBlbmRlbmN5LWluZm8uc2NtIiByZWFkICM6ZW5jb2Rpbmcg IlVURi04IikpKQorICAgIChjdXJyZW50LWRlcGVuZGVuY3ktaW5mbyAobWFrZS1oYXNoLXRhYmxl KSkpCisKKyhkZWZpbmUgKGR1bXAtZGVwZW5kZW5jeS1pbmZvKQorICAiRHVtcCB0aGUgY3VycmVu dCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvciB0aGUgbmV4dCBcIm1ha2VcIiBydW4uIgorICAo Y2FsbC13aXRoLW91dHB1dC1maWxlICJkZXBlbmRlbmN5LWluZm8uc2NtLm5ldyIKKyAgICAobGFt YmRhIChwb3J0KQorICAgICAgKGRpc3BsYXkgIjs7IFRoaXMgaXMgYXV0by1nZW5lcmF0ZWQgYnkg YnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbSwKKzs7IGRvIG5vdCBtb2RpZnkgbWFudWFsbHkhCisi IHBvcnQpCisgICAgICAod3JpdGUgKGhhc2gtbWFwLT5saXN0IGNvbnMgKGN1cnJlbnQtZGVwZW5k ZW5jeS1pbmZvKSkgcG9ydCkpCisgICAgIzplbmNvZGluZyAiVVRGLTgiKQorICAocmVuYW1lLWZp bGUgImRlcGVuZGVuY3ktaW5mby5zY20ubmV3IiAiZGVwZW5kZW5jeS1pbmZvLnNjbSIpKQorCiAo ZGVmaW5lIChmaWxlLW5lZWRzLWNvbXBpbGF0aW9uPyBmaWxlKQotICAobGV0ICgoZ28gKHNjbS0+ Z28gZmlsZSkpKQorICAobGV0KiAoKGdvIChzY20tPmdvIGZpbGUpKQorICAgICAgICAgKGV4dHJh LWRlcGVuZGVuY2llcworICAgICAgICAgIChoYXNoLXJlZiAoY3VycmVudC1kZXBlbmRlbmN5LWlu Zm8pIChpbi12aWNpbml0eSBidWlsZGRpciBnbykKKyAgICAgICAgICAgICAgICAgICAgJygpKSkp CiAgICAgKG9yIChub3QgKGZpbGUtZXhpc3RzPyBnbykpCi0gICAgICAgIChmaWxlLW10aW1lPD8g Z28gZmlsZSkpKSkKKyAgICAgICAgKGZpbGUtbXRpbWU8PyBnbyBmaWxlKQorICAgICAgICAoYW55 IChsYW1iZGEgKGRlcGVuZGVuY3kpCisgICAgICAgICAgICAgICAob3IgKG5vdCAoZmlsZS1leGlz dHM/IGRlcGVuZGVuY3kpKQorICAgICAgICAgICAgICAgICAgIChmaWxlLW10aW1lPD8gZ28gZGVw ZW5kZW5jeSkpKSBleHRyYS1kZXBlbmRlbmNpZXMpKSkpCiAKIChkZWZpbmUqIChwYXJhbGxlbC1q b2ItY291bnQgIzpvcHRpb25hbCAoZmxhZ3MgKGdldGVudiAiTUFLRUZMQUdTIikpKQogICAiUmV0 dXJuIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgam9icyBhcyBkZXRlcm1pbmVkIGJ5IEZMQUdTLCB0 aGUgZmxhZ3MgcGFzc2VkCkBAIC0xMDksNyArMTM4LDcgQEAgdG8gJ21ha2UnLiIKICAgICAgICAo bGV0KiAoKHRvLWJ1aWxkICAoZmlsdGVyIGZpbGUtbmVlZHMtY29tcGlsYXRpb24/IGZpbGVzKSkK ICAgICAgICAgICAgICAgKHByb2Nlc3NlZCAoKyBwcm9jZXNzZWQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoLSAobGVuZ3RoIGZpbGVzKSAobGVuZ3RoIHRvLWJ1aWxkKSkpKSkKLSAgICAg ICAgIChjb21waWxlLWZpbGVzIHNyY2RpciAoZ2V0Y3dkKSB0by1idWlsZAorICAgICAgICAgKGNv bXBpbGUtZmlsZXMgc3JjZGlyIGJ1aWxkZGlyIHRvLWJ1aWxkCiAgICAgICAgICAgICAgICAgICAg ICAgICAjOndvcmtlcnMgKHBhcmFsbGVsLWpvYi1jb3VudCopCiAgICAgICAgICAgICAgICAgICAg ICAgICAjOmhvc3QgaG9zdAogICAgICAgICAgICAgICAgICAgICAgICAgIzpyZXBvcnQtbG9hZCAo bGFtYmRhIChmaWxlIHRvdGFsIGNvbXBsZXRlZCkKQEAgLTEyNyw4ICsxNTYsMTAgQEAgdG8gJ21h a2UnLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgqIDIgcHJvY2Vzc2VkKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDIgZ3JhbmQtdG90YWwp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNjbS0+Z28gZmlsZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZvcmNlLW91dHB1dCkpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JjZS1vdXRwdXQpKSkpKQorICAgICAgIChkdW1w LWRlcGVuZGVuY3ktaW5mbykpCiAgICAgIChsYW1iZGEgXworICAgICAgIChkdW1wLWRlcGVuZGVu Y3ktaW5mbykKICAgICAgICAocHJpbWl0aXZlLWV4aXQgMSkpCiAgICAgIChsYW1iZGEgYXJncwog ICAgICAgIDs7IFRyeSB0byByZXBvcnQgdGhlIGVycm9yIGluIGFuIGludGVsbGlnaWJsZSB3YXku CmRpZmYgLS1naXQgYS9ndWl4L2J1aWxkL2NvbXBpbGUuc2NtIGIvZ3VpeC9idWlsZC9jb21waWxl LnNjbQppbmRleCBiODZlYzNiNzQzLi5jMjU5YjI3YWJmIDEwMDY0NAotLS0gYS9ndWl4L2J1aWxk L2NvbXBpbGUuc2NtCisrKyBiL2d1aXgvYnVpbGQvY29tcGlsZS5zY20KQEAgLTEsNiArMSw3IEBA CiA7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZvciBHTlUK IDs7OyBDb3B5cmlnaHQgwqkgMjAxMywgMjAxNCwgMjAxNiwgMjAxNywgMjAxOCwgMjAxOSwgMjAy MCBMdWRvdmljIENvdXJ0w6hzIDxsdWRvQGdudS5vcmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTUg VGF5bGFuIFVscmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlpcmxpQGdtYWlsLmNvbT4K Kzs7OyBDb3B5cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQu YmU+CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjks MTQgKzMwLDI3IEBACiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1dGlscykKICAgIzp1c2Ut bW9kdWxlIChsYW5ndWFnZSB0cmVlLWlsIG9wdGltaXplKQogICAjOnVzZS1tb2R1bGUgKGxhbmd1 YWdlIGNwcyBvcHRpbWl6ZSkKLSAgIzpleHBvcnQgKGNvbXBpbGUtZmlsZXMpKQorICAjOmV4cG9y dCAoY29tcGlsZS1maWxlcyBub3RpY2UtZGVwZW5kZW5jeSBjdXJyZW50LWRlcGVuZGVuY3ktaW5m bykpCiAKIDs7OyBDb21tZW50YXJ5OgogOzs7Ci07OzsgU3VwcG9ydCBjb2RlIHRvIGNvbXBpbGUg R3VpbGUgY29kZSBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZSAod2l0aCAyLjIpLgorOzs7IFN1 cHBvcnQgY29kZSB0byBjb21waWxlIEd1aWxlIGNvZGUgYXMgZWZmaWNpZW50bHkgYXMgcG9zc2li bGUgKHdpdGggMi4yKQorOzs7IGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBkZXBlbmRlbmNpZXMgb2Yg Y29tcGlsZWQgZmlsZXMuCiA7OzsKIDs7OyBDb2RlOgogCisoZGVmaW5lIGN1cnJlbnQtZGVwZW5k ZW5jeS1pbmZvIChtYWtlLXBhcmFtZXRlciAjZikpCisoZGVmaW5lIGN1cnJlbnQtb3V0cHV0LWZp bGUgKG1ha2UtcGFyYW1ldGVyICNmKSkKKworKGRlZmluZSAobm90aWNlLWRlcGVuZGVuY3kgZGVw ZW5kZW5jeSkKKyAgIkFkZCB0aGUgZmlsZSBERVBFTkRFTkNZIHRvIHRoZSBsaXN0IG9mIGRlcGVu ZGVuY2llcyBvZiB0aGUgY29tcGlsZWQgZmlsZQordGhhdCBpcyBiZWluZyBjb21wdXRlZCwgaWYg YW55LiIKKyAgKGRlZmluZSBkZXBlbmRlbmN5LXRhYmxlIChjdXJyZW50LWRlcGVuZGVuY3ktaW5m bykpCisgIChkZWZpbmUgb3V0cHV0IChjdXJyZW50LW91dHB1dC1maWxlKSkKKyAgKHdoZW4gKGFu ZCBkZXBlbmRlbmN5LXRhYmxlIG91dHB1dCkKKyAgICAoaGFzaC1zZXQhIGRlcGVuZGVuY3ktdGFi bGUgb3V0cHV0CisgICAgICAgICAgICAgICAoY29ucyBkZXBlbmRlbmN5IChoYXNoLXJlZiBkZXBl bmRlbmN5LXRhYmxlIG91dHB1dCAnKCkpKSkpKQorCiAoZGVmaW5lIG9wdGltaXphdGlvbnMtZm9y LWxldmVsCiAgIChvciAoYW5kPT4gKGZhbHNlLWlmLWV4Y2VwdGlvbgogICAgICAgICAgICAgICAo cmVzb2x2ZS1pbnRlcmZhY2UgJyhzeXN0ZW0gYmFzZSBvcHRpbWl6ZSkpKQpAQCAtMjA3LDEyICsy MjEsMjcgQEAgZmlsZXMgYXJlIGZvciBIT1NULCBhIEdOVSB0cmlwbGV0IHN1Y2ggYXMgXCJ4ODZf NjQtbGludXgtZ251XCIuIgogICAgIDs7IEV4aXQgYXMgc29vbiBhcyBzb21ldGhpbmcgZ29lcyB3 cm9uZy4KICAgICAoZXhpdC1vbi1leGNlcHRpb24KICAgICAgZmlsZQotICAgICAobGV0ICgocmVs YXRpdmUgKHJlbGF0aXZlLWZpbGUgc291cmNlLWRpcmVjdG9yeSBmaWxlKSkpCi0gICAgICAgKGNv bXBpbGUtZmlsZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAjOm91dHB1dC1maWxlIChzdHJp bmctYXBwZW5kIGJ1aWxkLWRpcmVjdG9yeSAiLyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNjbS0+Z28gcmVsYXRpdmUpKQotICAgICAgICAgICAg ICAgICAgICAgIzpvcHRzIChhcHBlbmQgd2FybmluZy1vcHRpb25zCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAob3B0aW1pemF0aW9uLW9wdGlvbnMgcmVsYXRpdmUpKSkpKSkK KyAgICAgKGxldCogKChyZWxhdGl2ZSAocmVsYXRpdmUtZmlsZSBzb3VyY2UtZGlyZWN0b3J5IGZp bGUpKQorICAgICAgICAgICAgKG91dHB1dC1maWxlIChzdHJpbmctYXBwZW5kIGJ1aWxkLWRpcmVj dG9yeSAiLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NtLT5n byByZWxhdGl2ZSkpKSkKKyAgICAgICAocGFyYW1ldGVyaXplICgoY3VycmVudC1vdXRwdXQtZmls ZSBvdXRwdXQtZmlsZSkpCisgICAgICAgICAod2hlbiAoY3VycmVudC1kZXBlbmRlbmN5LWluZm8p CisgICAgICAgICAgIDs7IElmIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gaXMgYmVpbmcgdHJhY2tl ZCwgcmVtb3ZlCisgICAgICAgICAgIDs7IHRoZSBvbGQgY29tcGlsZWQgZmlsZSBmaXJzdC4gIE90 aGVyd2lzZSwgaWYgcmVjb21waWxpbmcKKyAgICAgICAgICAgOzsgdGhlIGZpbGUgZHVlIHRvIGFu IHVwZGF0ZWQgZGVwZW5kZW5jeSBjYXVzZXMgYW4gZXhjZXB0aW9uLAorICAgICAgICAgICA7OyB0 aGUgbmV3IGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gd29uJ3QgaW5jbHVkZSB0aGUgY29tcGlsZWQK KyAgICAgICAgICAgOzsgZmlsZSBhbmQgdGhlcmVmb3JlIHRoZSBvbGQgY29tcGlsZWQgZmlsZSB3 b3VsZCBiZSBjb25zaWRlcmVkCisgICAgICAgICAgIDs7IHVwLXRvLWRhdGUgb24gdGhlIGZvbGxv d2luZyAibWFrZSIgcnVuLgorICAgICAgICAgICAod2hlbiAoZmlsZS1leGlzdHM/IG91dHB1dC1m aWxlKQorICAgICAgICAgICAgIChkZWxldGUtZmlsZSBvdXRwdXQtZmlsZSkpCisgICAgICAgICAg IDs7IFJlbW92ZSB0aGUgb2xkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24sIG90aGVyd2lzZQorICAg ICAgICAgICA7OyB0aGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiB0YWJsZSB3aWxsIGtlZXAgZ3Jv d2luZworICAgICAgICAgICA7OyBhZnRlciBlYWNoICJtYWtlIiBydW4uCisgICAgICAgICAgICho YXNoLXJlbW92ZSEgKGN1cnJlbnQtZGVwZW5kZW5jeS1pbmZvKSBvdXRwdXQtZmlsZSkpCisgICAg ICAgICAoY29tcGlsZS1maWxlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIzpvdXRwdXQt ZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAjOm9wdHMgKGFwcGVuZCB3 YXJuaW5nLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9w dGltaXphdGlvbi1vcHRpb25zIHJlbGF0aXZlKSkpKSkpKQogCiAgICh3aXRoLWF1Z21lbnRlZC1z ZWFyY2gtcGF0aCAlbG9hZC1wYXRoIHNvdXJjZS1kaXJlY3RvcnkKICAgICAod2l0aC1hdWdtZW50 ZWQtc2VhcmNoLXBhdGggJWxvYWQtY29tcGlsZWQtcGF0aCBidWlsZC1kaXJlY3RvcnkKLS0gCjIu MzMuMAoK --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0009-packages-Add-patches-to-the-dependency-list-of-packa.pat; filename*1=ch Content-Type: text/x-patch; name="0009-packages-Add-patches-to-the-dependency-list-of-packa.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkOWMzZmZjZTkyNzc4MmNlMmVmODk0Mzc4NGYwZTdiNWNkNDY2ZmVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNzoxNTowOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDkv MTBdIHBhY2thZ2VzOiBBZGQgcGF0Y2hlcyB0byB0aGUgZGVwZW5kZW5jeSBsaXN0IG9mIHBhY2th Z2UKIG1vZHVsZXMuCgoqIGdudS9wYWNrYWdlcy5zY20gKHNlYXJjaC1wYXRjaCk6IENhbGwgJ25v dGljZS1kZXBlbmRlbmN5JyBvbgogIHRoZSBwYXRjaCBmaWxlLgotLS0KIGdudS9wYWNrYWdlcy5z Y20gfCA3ICsrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMuc2NtIGIvZ251L3BhY2thZ2VzLnNjbQpp bmRleCBmNTU1MmU1YTliLi4zOTkyOWFlMDIyIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMuc2Nt CisrKyBiL2dudS9wYWNrYWdlcy5zY20KQEAgLTM0LDYgKzM0LDggQEAKICAgICAgICAgICAgICAg ICAjOnNlbGVjdCAoKHBhY2thZ2UtbmFtZS0+bmFtZSt2ZXJzaW9uCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAuIGh5cGhlbi1zZXBhcmF0ZWQtbmFtZS0+bmFtZSt2ZXJzaW9uKQogICAgICAg ICAgICAgICAgICAgICAgICAgICBta2Rpci1wKSkKKyAgOzsgb25seSByZXF1aXJlZCBhdCBleHBh bnNpb24gdGltZQorICAjOmF1dG9sb2FkICAgKGd1aXggYnVpbGQgY29tcGlsZSkgKG5vdGljZS1k ZXBlbmRlbmN5KQogICAjOnVzZS1tb2R1bGUgKGd1aXggcHJvZmlsZXMpCiAgICM6dXNlLW1vZHVs ZSAoZ3VpeCBkZXNjcmliZSkKICAgIzp1c2UtbW9kdWxlIChndWl4IGRlcHJlY2F0aW9uKQpAQCAt MTIxLDcgKzEyMywxMCBAQCBpZiBwb3NzaWJsZS4gIFJldHVybiAjZiBpZiBub3QgZm91bmQuIgog ICAgICAgIDs7IGluIGFkdmFuY2UuCiAgICAgICAgKGxldCAoKHBhdGNoICh0cnktc2VhcmNoLXBh dGNoIChzeW50YXgtPmRhdHVtICMnZmlsZS1uYW1lKSkpKQogICAgICAgICAgKGlmIHBhdGNoCi0g ICAgICAgICAgICAgI2AoJWxvY2FsLXBhdGNoLWZpbGUgZmlsZS1uYW1lICMsKGZpbGUtaGFzaCog cGF0Y2ggIzpzZWxlY3Q/IHRydWUpKQorICAgICAgICAgICAgIChiZWdpbgorICAgICAgICAgICAg ICAgKG5vdGljZS1kZXBlbmRlbmN5IHBhdGNoKQorICAgICAgICAgICAgICAgI2AoJWxvY2FsLXBh dGNoLWZpbGUgZmlsZS1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj LChmaWxlLWhhc2gqIHBhdGNoICM6c2VsZWN0PyB0cnVlKSkpCiAgICAgICAgICAgICAgKGJlZ2lu CiAgICAgICAgICAgICAgICAod2FybmluZyAoc291cmNlLXByb3BlcnRpZXMtPmxvY2F0aW9uCiAg ICAgICAgICAgICAgICAgICAgICAgICAgKHN5bnRheC1zb3VyY2UgIydmaWxlLW5hbWUpKQotLSAK Mi4zMy4wCgo= --=-VRWJSoloRA3mhw8ZjuSt Content-Disposition: attachment; filename*0=0010-gexp-Do-not-intern-if-the-file-is-already-in-the-sto.pat; filename*1=ch Content-Type: text/x-patch; name="0010-gexp-Do-not-intern-if-the-file-is-already-in-the-sto.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBkMzU5ZmVmYWJmMjgzMWU0MmFlYTZlZGY2NDZhOWUwMzczYmU1ZDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxODoxMDozMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAv MTBdIGdleHA6IERvIG5vdCBpbnRlcm4gaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBpbiB0aGUKIHN0 b3JlLgoKKiBndWl4L2dleHAuc2NtIChsb2NhbC1maWxlLWNvbXBpbGVyKTogV2hlbiB0aGUgZmls ZSBpcyBhbHJlYWR5IGluIHRoZQogIHN0b3JlLCByZS11c2UgdGhlIGZpeGVkIG91dHB1dCBwYXRo IGluc3RlYWQgb2YgaW50ZXJuaW5nIHRoZSBmaWxlCiAgYWdhaW4uCiogZ3VpeC9nZXhwLnNjbSAo YWRkLXRlbXAtcm9vdC1hbmQtdmFsaWQtcGF0aD8qKTogTmV3IHByb2NlZHVyZS4KLS0tCiBndWl4 L2dleHAuc2NtIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2d1 aXgvZ2V4cC5zY20gYi9ndWl4L2dleHAuc2NtCmluZGV4IGM2OWU0YWEyOTkuLjIwYzlkOTMxNzAg MTAwNjQ0Ci0tLSBhL2d1aXgvZ2V4cC5zY20KKysrIGIvZ3VpeC9nZXhwLnNjbQpAQCAtNTI4LDE2 ICs1MjgsMzQgQEAgYXBwZWFycy4iCiAnc3lzdGVtLWVycm9yJyBleGNlcHRpb24gaXMgcmFpc2Vk IGlmIEZJTEUgY291bGQgbm90IGJlIGZvdW5kLiIKICAgKGZvcmNlICglbG9jYWwtZmlsZS1hYnNv bHV0ZS1maWxlLW5hbWUgZmlsZSkpKQogCisoZGVmaW5lIGFkZC10ZW1wLXJvb3QtYW5kLXZhbGlk LXBhdGg/KiAoc3RvcmUtbGlmdCBhZGQtdGVtcC1yb290LWFuZC12YWxpZC1wYXRoPykpCisKIChk ZWZpbmUtZ2V4cC1jb21waWxlciAobG9jYWwtZmlsZS1jb21waWxlciAoZmlsZSA8bG9jYWwtZmls ZT4pIHN5c3RlbSB0YXJnZXQpCiAgIDs7ICJDb21waWxlIiBGSUxFIGJ5IGFkZGluZyBpdCB0byB0 aGUgc3RvcmUuCiAgIChtYXRjaCBmaWxlCi0gICAgKCgkIDxsb2NhbC1maWxlPiBmaWxlICg9IGZv cmNlIGFic29sdXRlKSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8pCi0gICAgIDs7IENh bm9uaWNhbGl6ZSBGSUxFIHNvIHRoYXQgaWYgaXQncyBhIHN5bWxpbmssIGl0IGlzIHJlc29sdmVk LiAgRmFpbGluZwotICAgICA7OyB0byBkbyB0aGF0LCB3aGVuIFJFQ1VSU0lWRT8gaXMgI3QsIHdl IGNvdWxkIGVuZCB1cCBjcmVhdGluZyBhIGRhbmdsaW5nCi0gICAgIDs7IHN5bWxpbmsgaW4gdGhl IHN0b3JlLCBhbmQgd2hlbiBSRUNVUlNJVkU/IGlzICNmICdhZGQtdG8tc3RvcmUnIHdvdWxkCi0g ICAgIDs7IGp1c3QgdGhyb3cgYW4gZXJyb3IsIGJvdGggb2Ygd2hpY2ggYXJlIGluY29udmVuaWVu dC4KLSAgICAgKGludGVybmVkLWZpbGUgYWJzb2x1dGUgbmFtZQotICAgICAgICAgICAgICAgICAg ICAjOnJlY3Vyc2l2ZT8gcmVjdXJzaXZlPyAjOnNlbGVjdD8gc2VsZWN0PykpKSkKKyAgICA7OyBE ZWxheSBjb21wdXRpbmcgdGhlIGFic29sdXRlIGZpbGUgbmFtZSB1bnRpbCAnaW50ZXJuJywgYXMg dGhpcworICAgIDs7IG1pZ2h0IGJlIGEgcmVsYXRpdmVseSBleHBlbnNpdmUgY29tcHV0YXRpb24g KGUuZy4gaWYgc2VhcmNoLXBhdGNoCisgICAgOzsgaXMgdXNlZCksIGVzcGVjaWFsbHkgb24gYSBz cGlubmluZyBkaXNrLgorICAgICgoJCA8bG9jYWwtZmlsZT4gZmlsZSBhYnNvbHV0ZS1wcm9taXNl IG5hbWUgc2hhMjU2IHJlY3Vyc2l2ZT8gc2VsZWN0PykKKyAgICAgKGxldCAoKQorICAgICAgIChk ZWZpbmUgKGludGVybikKKyAgICAgICAgIDs7IENhbm9uaWNhbGl6ZSBGSUxFIHNvIHRoYXQgaWYg aXQncyBhIHN5bWxpbmssIGl0IGlzIHJlc29sdmVkLgorICAgICAgICAgOzsgRmFpbGluZyB0byBk byB0aGF0LCB3aGVuIFJFQ1VSU0lWRT8gaXMgI3QsIHdlIGNvdWxkIGVuZCB1cCBjcmVhdGluZwor ICAgICAgICAgOzsgYSBkYW5nbGluZyBzeW1saW5rIGluIHRoZSBzdG9yZSwgYW5kIHdoZW4gUkVD VVJTSVZFPyBpcyAjZgorICAgICAgICAgOzsgJ2FkZC10by1zdG9yZScgd291bGQganVzdCB0aHJv dyBhbiBlcnJvciwgYm90aCBvZiB3aGljaCBhcmUKKyAgICAgICAgIDs7IGluY29udmVuaWVudC4K KyAgICAgICAgIChpbnRlcm5lZC1maWxlIChmb3JjZSBhYnNvbHV0ZS1wcm9taXNlKSBuYW1lCisg ICAgICAgICAgICAgICAgICAgICAgICAjOnJlY3Vyc2l2ZT8gcmVjdXJzaXZlPyAjOnNlbGVjdD8g c2VsZWN0PykpCisgICAgICAgOzsgSWYgdGhlIGhhc2ggaXMga25vd24gaW4gYWR2YW5jZSBhbmQg dGhlIHN0b3JlIGFscmVhZHkgaGFzIHRoZQorICAgICAgIDs7IGl0ZW0sIHRoZXJlIGlzIG5vIG5l ZWQgdG8gaW50ZXJuIHRoZSBmaWxlLgorICAgICAgIChpZiBzaGEyNTYKKyAgICAgICAgICAgKGxl dCAoKHBhdGggKGZpeGVkLW91dHB1dC1wYXRoIG5hbWUgc2hhMjU2ICM6cmVjdXJzaXZlPyByZWN1 cnNpdmU/KSkpCisgICAgICAgICAgICAgKG1sZXQgJXN0b3JlLW1vbmFkICgodmFsaWQ/IChhZGQt dGVtcC1yb290LWFuZC12YWxpZC1wYXRoPyogcGF0aCkpKQorICAgICAgICAgICAgICAgKGlmIHZh bGlkPworICAgICAgICAgICAgICAgICAgIChyZXR1cm4gcGF0aCkKKyAgICAgICAgICAgICAgICAg ICAoaW50ZXJuKSkpKQorICAgICAgICAgICA7OyBJZiBQQVRIIGRvZXMgbm90IHlldCBleGlzdCwg ZmFsbCBiYWNrIHRvIGludGVybmluZy4KKyAgICAgICAgICAgKGludGVybikpKSkpKQogCiAoZGVm aW5lLXJlY29yZC10eXBlIDxwbGFpbi1maWxlPgogICAoJXBsYWluLWZpbGUgbmFtZSBjb250ZW50 IHJlZmVyZW5jZXMpCi0tIAoyLjMzLjAKCg== --=-VRWJSoloRA3mhw8ZjuSt-- --=-dT8/QEIsPOYFhIUcHEMW Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTptyhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7g5MAQCYR/HigA+hNpUcnd/dyzE292kC 5+dDA2yZMO86lbwZkgD/SKntJUezYbdYRp1wspCfqNVsTfodQkufXNP1UnYMygA= =+x9D -----END PGP SIGNATURE----- --=-dT8/QEIsPOYFhIUcHEMW--
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 9 Sep 2021 14:51:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Sep 09 10:51:17 2021 Received: from localhost ([127.0.0.1]:35974 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mOLOX-0000MV-0L for submit <at> debbugs.gnu.org; Thu, 09 Sep 2021 10:51:17 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50022) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1mOLOV-0000MH-5n for 50384 <at> debbugs.gnu.org; Thu, 09 Sep 2021 10:51:15 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:34170) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mOLOP-0001GS-9y; Thu, 09 Sep 2021 10:51:09 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=47216 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mOLOP-0003Xv-0d; Thu, 09 Sep 2021 10:51:09 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Maxime Devos <maximedevos@HIDDEN> Subject: Re: bug#50384: [PATCH] Optimise search-patch (reducing I/O) References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <87tuj0xaja.fsf@HIDDEN> <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> Date: Thu, 09 Sep 2021 16:51:07 +0200 In-Reply-To: <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> (Maxime Devos's message of "Sun, 05 Sep 2021 21:48:22 +0200") Message-ID: <87ee9xerac.fsf_-_@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Hello, Maxime Devos <maximedevos@HIDDEN> skribis: >> To address this, =E2=80=98local-file=E2=80=99 could store the inode/mtim= e + computed >> store file name (rather than the SHA256). =E2=80=98local-file-compiler= =E2=80=99 would >> check whether the actual file has matching inode/mtime before returning >> the computed store file name. Problem is that inode/mtime are >> guaranteed to differ once you=E2=80=99ve run =E2=80=9Cmake install=E2=80= =9D. :-/ > > An additional problem is that 'local-file-compiler' would have to 'stat' > the file even if it is already in the store, undoing the (fairly limited?) > performance gains of this patch series. > > The dependency tracking avoids this. OK. >> Intuitively, I=E2=80=99d have imagined a cache populated at run time; it= would >> map, say, file name/inode/mtime to a store file name. =E2=80=98add-to-s= tore=E2=80=99 >> (or some wrapper above it) would check the cache and return the store >> file name directly, unless =E2=80=98valid-path?=E2=80=99 says it no long= er exists. >> Downside is that this would be a per-user cache and you=E2=80=99d still = pay the >> cost until it=E2=80=99s warm. Advantage is that you could easily tell w= hether >> it=E2=80=99s stale. >>=20 >> Thoughts? > > Intuitively, I'd have imagined doing as much as possible at compilation t= ime. Of course, but it=E2=80=99s important for the caching model to match =E2=80= =9Creality=E2=80=9D, which is that patch files live independently of the source files that refer to them. I=E2=80=99d all be fine if =E2=80=98local-file=E2=80=99 were to inline file= contents at macro-expansion time, because then we could be sure the hash and contents match (but I=E2=80=99m not saying we should do this=E2=80=A6). What we could do is have a boolean saying whether the cached value is authoritative, similar to what=E2=80=99s in (gnu packages). That way, when using ./pre-inst-env or passing a -L flag or setting GUIX_PACKAGE_PATH, the cached value would not be authoritative; we=E2=80=99d be safe, without needing ad hoc dependency tracking. Thoughts? [...] > Because fixed-output-path is now called more often, I've added a patch > optimising (guix base32). [...] > From e5dc46800597023dfc1c9d53cc6e0db2f3999022 Mon Sep 17 00:00:00 2001 > From: Maxime Devos <maximedevos@HIDDEN> > Date: Sat, 4 Sep 2021 15:35:51 +0200 > Subject: [PATCH v2 3/9] gexp: Allow computing the hash of the local file = in > advance. > > The new field is currently unused. The following patches will > populate and use the field to reduce the time-to-derivation > when the file is already interned in the store. > > * guix/gexp.scm > (<local-file>): Add sha256 field. > (%local-file): Add sha256 argument for populating the field. > (local-file-compiler): Adjust 'match' expression. [...] > +;; repeated 'stat' calls. Allow computing the hash of the file in advan= ce, > +;; to avoid having to send the file to the daemon when it is already int= erned > +;; in the store. > (define-record-type <local-file> > - (%%local-file file absolute name recursive? select?) > + (%%local-file file absolute name sha256 recursive? select?) > local-file? > (file local-file-file) ;string > (absolute %local-file-absolute-file-name) ;promise string > (name local-file-name) ;string > + (sha256 local-file-sha256) ;sha256 bytevector | #f Could we store the result of =E2=80=98fixed-output-path=E2=80=99 rather tha= n the SHA256, while we=E2=80=99re at it? Again, care must be taken because it=E2=80=99s possible to set NIX_STORE_DI= R at run time, which may invalidate the pre-computed store file name. Can we make hash/file name computation a feature of =E2=80=98local-file=E2= =80=99 rather than one of =E2=80=98search-patch=E2=80=99 as in these patches? I=E2=80=99= d rather not provide a way to override this new field. There are cases where we cannot know the value of =E2=80=98recursive?=E2=80= =99 at expansion time, for instance if the user wrote: (local-file "foo.txt" #:recursive? r) In that case, we cannot compute the hash or file name. Thanks, Ludo=E2=80=99.
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 7 Sep 2021 15:37:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Sep 07 11:37:04 2021 Received: from localhost ([127.0.0.1]:57413 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mNd9k-00010f-G6 for submit <at> debbugs.gnu.org; Tue, 07 Sep 2021 11:37:04 -0400 Received: from albert.telenet-ops.be ([195.130.137.90]:41022) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mNd9h-000102-Un for 50384 <at> debbugs.gnu.org; Tue, 07 Sep 2021 11:37:02 -0400 Received: from butterfly.local ([188.188.3.227]) by albert.telenet-ops.be with bizsmtp id r3cz2500M4tskic063d0Z9; Tue, 07 Sep 2021 17:37:00 +0200 Message-ID: <aefe08ead06d3054308fe6101bbf7b174bbc0c57.camel@HIDDEN> Subject: Base16 and base32 optimisations split off From: Maxime Devos <maximedevos@HIDDEN> To: 50456 <at> debbugs.gnu.org, 50384 <at> debbugs.gnu.org Date: Tue, 07 Sep 2021 17:36:58 +0200 Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-5970CM5+qaQR6f8qMTaV" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1631029020; bh=SYaUpu/lFZTpRXEY7LqAPO6HFM2sjHphtfYeuhp7v+o=; h=Subject:From:To:Date; b=LZcgSR9h1Y4JAsYUEAHY2csbz2WjxM83tr+5SvjogffiLOiCYIIYzYLaDIGu2jWcN G1dwwyIVu4enj590Vwn8LlC3cP46tL6ej6ps4We/14fEQHUoiDj1jC6GxLze8HIUEC wKshx9GzwC94HDc1nxqdONCxEOJXr1gDyMYwdmuMvvbLTXROon19pdw4amoMRVwU1u 1fHVtXz7XH1Y0QEMjysD1dyXoWW9icJhdAB7m2GXfk4N7YOAaSfeMRyHwz9e75hTLq RAeloSlN6PrwQpOebyuZ0X6lQe2DADefkX9fSaXZxwGBEool/vxj9CJWrIPxfO6zy6 go609aWGssD8Q== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50384 X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-5970CM5+qaQR6f8qMTaV Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I split off the base16 and base32 optimisations to a separate patch series: 50456 <at> debbugs.gnu.org. --=-5970CM5+qaQR6f8qMTaV Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTeHGxccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vHIAP9HaFsK5/PDqxGZIPrXymwN4QiZ Q27xDLZCo9RSk4YQTAD/b/0b1jDshU+EVtF3PN/6lmo+F9DzTrwr/nxjqwZ6/Qg= =ztev -----END PGP SIGNATURE----- --=-5970CM5+qaQR6f8qMTaV--
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 6 Sep 2021 10:06:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 06 06:06:13 2021 Received: from localhost ([127.0.0.1]:51974 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mNBW0-0005oZ-Tv for submit <at> debbugs.gnu.org; Mon, 06 Sep 2021 06:06:13 -0400 Received: from laurent.telenet-ops.be ([195.130.137.89]:49160) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mNBVy-0005oM-AC for 50384 <at> debbugs.gnu.org; Mon, 06 Sep 2021 06:06:11 -0400 Received: from butterfly.local ([213.132.129.254]) by laurent.telenet-ops.be with bizsmtp id qa672500C5VU3ct01a68iy; Mon, 06 Sep 2021 12:06:08 +0200 Message-ID: <3491bccdaa15281fa254c2b788121cb42ea81adb.camel@HIDDEN> Subject: Re: [bug#50384] [PATCH v2] Optimise search-patch (reducing I/O) From: Maxime Devos <maximedevos@HIDDEN> To: zimoun <zimon.toutoune@HIDDEN>, Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN> Date: Mon, 06 Sep 2021 12:06:00 +0200 In-Reply-To: <864kayjdwz.fsf@HIDDEN> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <87tuj0xaja.fsf@HIDDEN> <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> <864kayjdwz.fsf@HIDDEN> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-UKv/eq1qQMChClGAB6nC" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1630922768; bh=KdPIZOIIfP0vwU8cNjUKWuc75Um5mMgg23CO1Lt6ZAs=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=NMbf86vbfd3Wlu/ZD0yv8xYiMO5+XIOQsIEsS8iy0AeDPU9Pgbqa7wW8pHhyutkHU 852I5+G+EJopKik5OQDfkeE+gbMbVWFWARKUlD9HdB7CkJhUQTkNB2DxGQr1Pe/vsd uj5ZTl1fqqep2ylt9zHZsbqVCJtUtZ5iC/+1nnNbKgMdniDdscK2Y6h3SxtGey0qlV kVOfLIC8t2dYz05epoiyjlt1kUOtL1CJ5YzsgPtVP0YviRC6N0ArBQmgbmpf5fvLqj d2Q5sfk0n3Z93Au2gwV8G4len76xKhbWZ0G52yLkU1xXT6yyAvSqKHQrq4hyGPxWuf sAqK9TBqvrHEA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-UKv/eq1qQMChClGAB6nC Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable zimoun schreef op ma 06-09-2021 om 10:39 [+0200]: > Hi Maxime, >=20 > Thanks for looking at optimising stuff. :-) >=20 > On Sun, 05 Sep 2021 at 21:48, Maxime Devos <maximedevos@HIDDEN> wrote= : >=20 > > Let's compare the numbers again! This time, I've run > >=20 > > echo powersave |sudo tee /sys/devices/system/cpu/cpufreq/policy{0,1,2,3= }/scaling_governor > >=20 > > to make sure the CPU frequency doesn't change. On a hot (disk) cache: > >=20 > > # After the patch series > > time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d -= -no-grafts pigx >=20 > [...] >=20 > > So on a hot disk cache, there doesn't appear to be any improvement > > (except for =E2=80=98time spent in GC=E2=80=99 -- presumably that's due= to the optimisations > > to guix/base32.scm). >=20 > Which kind of disk do you have? SSD, spinning HDD, other? A spinning disk, presumably a HDD. FWIW, it's a =E2=80=98TOSHIBA MQ01ABD10= 0 (AX1P2C)=E2=80=99 that has been =E2=80=98on=E2=80=99 for 10 months and 10 days, according to = =E2=80=98SMART-data and selftests=E2=80=99 I just noticed it has =E2=80=982304 bad sectors=E2=80=99. Maybe I should m= ake backups and run file system checks? >=20 > > What about a cold cache? > >=20 > > # After the patch series > >=20 > > sync && echo 3 | sudo tee /proc/sys/vm/drop_caches > > ./the-optimised-guix/bin/guix --help > > time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d -= -no-grafts pigx > > /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv > > Remote procedure call summary: 5949 RPCs > > built-in-builders ... 1 > > add-to-store ... 3 > > add-to-store/tree ... 26 > > add-temp-root ... 195 > > valid-path? ... 195 > > add-text-to-store ... 5529 > > Garbage collection statistics: > > heap size: 93.85 MiB > > allocated: 312.03 MiB > > GC times: 17 > > time spent in GC: 3.37 seconds (23% of user time) > >=20 > > real 1m39,178s > > user 0m14,557s > > sys 0m0,990s >=20 > How the average (against 3 examples) looks like? I'll try to optimise more things and report the average for the v3.=20 > > It seems that if the disk cache is cold, the time-to-derivation decreas= es > > a little by this patch series. Much less than I had hoped for though; = I'll > > have to look into other areas for interesting performance gains ... >=20 > Please update the number using your diff showed in [1]. :-) >=20 >=20 > 1: <http://issues.guix.gnu.org/50384#4> Are you referring to: > Oops, I forgot to include the following change to build-aux/compile-all.s= cm: > (or (not (file-exists? go)) > (file-mtime<? go file) > - (any (cut file-mtime<? go <>) extra-dependencies)))) > + (any (lambda (dependency) > + (or (not (file-exists? dependency)) > + (file-mtime<? go dependency))) extra-dependencies)))) That's compilation-time only, so that cannot affect the timing of "guix bui= ld -d ...". Geetings, Maxime. --=-UKv/eq1qQMChClGAB6nC Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTXoCBccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7knUAPsFC+FnKuZi84gnBq8MxOI30aMh oaD+uWxdH1s8I5b8ZAEAql84Fw0nw5HENSkMgpGhxMjdtFg2m8YfXq0rCupfrg0= =ihV5 -----END PGP SIGNATURE----- --=-UKv/eq1qQMChClGAB6nC--
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 6 Sep 2021 09:00:37 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Sep 06 05:00:37 2021 Received: from localhost ([127.0.0.1]:51738 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mNAUW-0005mN-PM for submit <at> debbugs.gnu.org; Mon, 06 Sep 2021 05:00:37 -0400 Received: from mail-wm1-f46.google.com ([209.85.128.46]:56019) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <zimon.toutoune@HIDDEN>) id 1mNAUU-0005m8-Sg for 50384 <at> debbugs.gnu.org; Mon, 06 Sep 2021 05:00:35 -0400 Received: by mail-wm1-f46.google.com with SMTP id g135so4017334wme.5 for <50384 <at> debbugs.gnu.org>; Mon, 06 Sep 2021 02:00:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-transfer-encoding; bh=OR2HCCMMGVfuJiMIlzY60l1onkYa1ky8Q0yAGLWn+eQ=; b=n5ZojW2TEF5eguA6VwXjKOwJwrX+4w3MblYJHWC5yXEs2OGse0bo+Na3pfCGfWxGLO qOcKoWeK4jA6oAebPbrcatf6tWaXreJHpRBUslZtNK1ycZCb50mJ6G/pmCw3oMlXR4yG ojdM273dqVBh0IZFCiEv4/HdhM5HeAH4MEAQJ9acCXN3RvQIaSpFLEOGdaYNbx2Yr7TO K/hcDyJi/BcdlAqTlpKLtE8uc6h5elt1eKkBvcmZ9RyftvHukGN6aISobZmR8KbvdWtw AaHEfvegBxIGCgqoVnmEE8oPEJZUnNl+8WP9H4oxBva8sYFQcLHGP+0ty4T3PU+dZqPv F+hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=OR2HCCMMGVfuJiMIlzY60l1onkYa1ky8Q0yAGLWn+eQ=; b=NAhccR1HvEkYsJGBK4/sAy1B3oD753PZDTssPxZXvc0mCLptP0TkanRzO9vDMiUhUH juHJE67b9RiHpiMN9fzx5RsCMFrnDhfNvnouPkNmk8koD5FehDMiwQtFYA21GJcNnbEM 3Ips4XVP8glWNDsp/EMgnqGdmHOvdx07HM/0zS1a2BMUoLGFunIx+54W4zD1cOWWFw6f +cn6E798JMk8Ta54UK+FwHCt+zea32i6yHGwDJLzjB132/DnM0oTrB3R0oGmgTj6e0G3 uTdizhHBRmYTFHiGtxlB7acaYhQYWG9OiSn8RR+PAyJnDXP+BbWHs+LVrJ01boIRSPF/ omcw== X-Gm-Message-State: AOAM531DDKO82JO+BTwvcMKR2TtQkgZIjLKQpye6bEJQd0uuRd+Z9BQh dMi6HYOVVlQ3UHOCPBmYprUsN5i3RIc= X-Google-Smtp-Source: ABdhPJw4/CO7bAbz358yCkuZe0xVOAG59rORxB8PpMNO1XKjcCwUN6OSoJzNd/+SXoD/H0KQD47UQg== X-Received: by 2002:a05:600c:220f:: with SMTP id z15mr10103869wml.74.1630918828865; Mon, 06 Sep 2021 02:00:28 -0700 (PDT) Received: from lili ([2a01:e0a:59b:9120:65d2:2476:f637:db1e]) by smtp.gmail.com with ESMTPSA id g1sm7554000wrc.65.2021.09.06.02.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Sep 2021 02:00:28 -0700 (PDT) From: zimoun <zimon.toutoune@HIDDEN> To: Maxime Devos <maximedevos@HIDDEN>, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN> Subject: Re: [bug#50384] [PATCH v2] Optimise search-patch (reducing I/O) In-Reply-To: <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <87tuj0xaja.fsf@HIDDEN> <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> Date: Mon, 06 Sep 2021 10:39:40 +0200 Message-ID: <864kayjdwz.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) Hi Maxime, Thanks for looking at optimising stuff. :-) On Sun, 05 Sep 2021 at 21:48, Maxime Devos <maximedevos@HIDDEN> wrote: > Let's compare the numbers again! This time, I've run > > echo powersave |sudo tee /sys/devices/system/cpu/cpufreq/policy{0,1,2,3}/= scaling_governor > > to make sure the CPU frequency doesn't change. On a hot (disk) cache: > > # After the patch series > time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d --n= o-grafts pigx [...] > So on a hot disk cache, there doesn't appear to be any improvement > (except for =E2=80=98time spent in GC=E2=80=99 -- presumably that's due t= o the optimisations > to guix/base32.scm). Which kind of disk do you have? SSD, spinning HDD, other? > What about a cold cache? > > # After the patch series > > sync && echo 3 | sudo tee /proc/sys/vm/drop_caches > ./the-optimised-guix/bin/guix --help > time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d --n= o-grafts pigx > /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv > Remote procedure call summary: 5949 RPCs > built-in-builders ... 1 > add-to-store ... 3 > add-to-store/tree ... 26 > add-temp-root ... 195 > valid-path? ... 195 > add-text-to-store ... 5529 > Garbage collection statistics: > heap size: 93.85 MiB > allocated: 312.03 MiB > GC times: 17 > time spent in GC: 3.37 seconds (23% of user time) > > real 1m39,178s > user 0m14,557s > sys 0m0,990s How the average (against 3 examples) looks like? > It seems that if the disk cache is cold, the time-to-derivation decreases > a little by this patch series. Much less than I had hoped for though; I'= ll > have to look into other areas for interesting performance gains ... Please update the number using your diff showed in [1]. :-) 1: <http://issues.guix.gnu.org/50384#4> All the best, simon
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 5 Sep 2021 22:40:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 05 18:40:35 2021 Received: from localhost ([127.0.0.1]:51141 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mN0oU-0000FA-Rm for submit <at> debbugs.gnu.org; Sun, 05 Sep 2021 18:40:35 -0400 Received: from laurent.telenet-ops.be ([195.130.137.89]:39526) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mN0oT-0000F1-Av for 50384 <at> debbugs.gnu.org; Sun, 05 Sep 2021 18:40:34 -0400 Received: from butterfly.local ([213.132.129.254]) by laurent.telenet-ops.be with bizsmtp id qNgW2500Z5VU3ct01NgXsu; Mon, 06 Sep 2021 00:40:31 +0200 Message-ID: <f30b144e0cfaa6187f8df2074d4fa0913f16b512.camel@HIDDEN> Subject: Re: [PATCH v2] Optimise search-patch (reducing I/O) From: Maxime Devos <maximedevos@HIDDEN> To: Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN> Date: Mon, 06 Sep 2021 00:40:25 +0200 In-Reply-To: <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <87tuj0xaja.fsf@HIDDEN> <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-8PFn3UvLuEaYOsrLL9hA" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1630881631; bh=1zip/nzL0NaIuCwswkrlWoiSPVR8rXKY4cvR0IgwlC0=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=kGaorbEv2TlLV2teEtxGXeDYN3kMv8E1GAwjRwxe3fQ3+m8Mno9udligvOe9BFdB8 dsXbJIgxlGWChrLkQS+IujgzwwvZoEkWvpbt8Vznab4yjtJssGImabAzAlyVCmYjPb EJ5lCy03cRG+wMJoXcW/lu3+u3H7vy8mW3ramdRuqBSw7NyZb3d72tPTdU0eLS+N+B T7Vk5kN8lesBnOPLeaodC9opMruo2guFXh/c097UbZZMSQK5OdEp9yr51fPYLCiqcD /4O3n73BciMXJnCi0e7qWh9SjtFBewnbsMpDEoOAncA59OBoB2vpwdPVD9drZaEDrR kX0EOkIurPz/g== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) --=-8PFn3UvLuEaYOsrLL9hA Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Maxime Devos schreef op zo 05-09-2021 om 21:48 [+0200]: > Ludovic Court=C3=A8s schreef op zo 05-09-2021 om 00:04 [+0200]: > > Maxime Devos <maximedevos@HIDDEN> skribis: > >=20 [..] > I added two patches adding (limited) dependency tracking to compile-all.s= cm. > If a patch file is now modified or deleted, the corresponding package mod= ules > will be recompiled. This should remove the =E2=80=98evilness=E2=80=99 I = think. Oops, I forgot to include the following change to build-aux/compile-all.scm= : (or (not (file-exists? go)) (file-mtime<? go file) - (any (cut file-mtime<? go <>) extra-dependencies)))) + (any (lambda (dependency) + (or (not (file-exists? dependency)) + (file-mtime<? go dependency))) extra-dependencies)))) It will be included in the v3. Greetings, Maxime. --=-8PFn3UvLuEaYOsrLL9hA Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTVHWRccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7s5eAQCrVq4u1QOuqRzGfQf4cQKUUvLS ngcmVX0ASeWj0U7Y9wD/WvkYGdPHfNg586iuPHeHu3Vl1YzQSJN9pA4goPouXg0= =RVuf -----END PGP SIGNATURE----- --=-8PFn3UvLuEaYOsrLL9hA--
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 5 Sep 2021 19:48:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 05 15:48:52 2021 Received: from localhost ([127.0.0.1]:51105 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mMy8D-0004PS-3c for submit <at> debbugs.gnu.org; Sun, 05 Sep 2021 15:48:52 -0400 Received: from michel.telenet-ops.be ([195.130.137.88]:49422) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mMy88-0004PI-Nl for 50384 <at> debbugs.gnu.org; Sun, 05 Sep 2021 15:48:43 -0400 Received: from butterfly.local ([213.132.129.254]) by michel.telenet-ops.be with bizsmtp id qKoc250065VU3ct06KocgV; Sun, 05 Sep 2021 21:48:39 +0200 Message-ID: <0ec7f0270fcccec730808f9210f074cd5339961f.camel@HIDDEN> Subject: [PATCH v2] Optimise search-patch (reducing I/O) From: Maxime Devos <maximedevos@HIDDEN> To: Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN> Date: Sun, 05 Sep 2021 21:48:22 +0200 In-Reply-To: <87tuj0xaja.fsf@HIDDEN> References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> <87tuj0xaja.fsf@HIDDEN> Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-eExp0UHbbratciKFMMXn" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1630871319; bh=LTK4Qm30Q4MEw0udAk8n2qwU0brmPO4phFU7bKKyIbw=; h=Subject:From:To:Cc:Date:In-Reply-To:References; b=ozXpCrEY/bJAKDKo8mitE0eRvlEpDG2jgLrQXYPT2yGA+tYPU+vQS9gfiUZkfTz7P CO1cngyVZ2GxLoBRylOchUdcYIwu+LOvIQpk+k7cvDmpmj1Q9l8oOgtOjuPFD5pVZ/ jja7A03u5AVO2cR0bIeHx7FqENhb1c+lEqF/91uPmeXAMMADR4GOGxmHjhH0LQpQFF Pt51TytK6d521jUeUcgJQXAieOTKGE9qkUSlr4ydGM0Xqb54/jO+YFVD+6DYijpc/j EmiDTvc/+B4kVXtEqimDEdgxNN54TGp1VUdC856GCBV5fhC2yndILbPakfIMs9GjUJ V3FwXke+SSJAw== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) --=-eExp0UHbbratciKFMMXn Content-Type: multipart/mixed; boundary="=-FFYmpQl4eyfmi+ZCpAS1" --=-FFYmpQl4eyfmi+ZCpAS1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Ludovic Court=C3=A8s schreef op zo 05-09-2021 om 00:04 [+0200]: > Maxime Devos <maximedevos@HIDDEN> skribis: >=20 > > +(define-syntax search-patch > > + (lambda (s) > > + "Search the patch FILE-NAME and compute its hash at expansion time > > +if possible. Return #f if not found." > > + (syntax-case s () > > + ((_ file-name) > > + (string? (syntax->datum #'file-name)) > > + ;; FILE-NAME is a constant string, so the hash can be computed > > + ;; in advance. > > + (let ((patch (try-search-patch (syntax->datum #'file-name)))) > > + (if patch > > + #`(%local-patch-file file-name #,(file-hash* patch #:sele= ct? true)) > > + (begin > > + (warning (source-properties->location > > + (syntax-source #'file-name)) > > + (G_ "~a: patch not found at expansion time") > > + (syntax->datum #'ile-name)) > > + #'(%search-patch file-name))))) > > + ;; FILE-NAME is variable, so the hash cannot be pre-computed. > > + ((_ file-name) #'(%search-patch file-name)) > > + ;; search-patch is being used used in a construct like > > + ;; (map search-patch ...). > > + (id (identifier? #'id) #'%search-patch)))) >=20 > It=E2=80=99s clever=E2=80=A6 but also a bit evil, in that it changes the = semantics of > package files in a surprising way. Modifying foo.patch without > recompiling foo.scm would lead you to still use the old foo.patch, which > can be rather off-putting and error-prone IMO. I added two patches adding (limited) dependency tracking to compile-all.scm= . If a patch file is now modified or deleted, the corresponding package modul= es will be recompiled. This should remove the =E2=80=98evilness=E2=80=99 I th= ink. > To address this, =E2=80=98local-file=E2=80=99 could store the inode/mtime= + computed > store file name (rather than the SHA256). =E2=80=98local-file-compiler= =E2=80=99 would > check whether the actual file has matching inode/mtime before returning > the computed store file name. Problem is that inode/mtime are > guaranteed to differ once you=E2=80=99ve run =E2=80=9Cmake install=E2=80= =9D. :-/ An additional problem is that 'local-file-compiler' would have to 'stat' the file even if it is already in the store, undoing the (fairly limited?) performance gains of this patch series. The dependency tracking avoids this. > Intuitively, I=E2=80=99d have imagined a cache populated at run time; it = would > map, say, file name/inode/mtime to a store file name. =E2=80=98add-to-st= ore=E2=80=99 > (or some wrapper above it) would check the cache and return the store > file name directly, unless =E2=80=98valid-path?=E2=80=99 says it no longe= r exists. > Downside is that this would be a per-user cache and you=E2=80=99d still p= ay the > cost until it=E2=80=99s warm. Advantage is that you could easily tell wh= ether > it=E2=80=99s stale. >=20 > Thoughts? Intuitively, I'd have imagined doing as much as possible at compilation tim= e. The cost at compilation is only paid once (or, more correctly, at every "guix pull"), while if you delay things until runtime, you need to check th= e caches. With this patch series (+ the two patches mentioned previously), the =E2=80= =98cache=E2=80=99 is always fresh (though possibly not warm: the patch might not yet be in th= e store). Ludovic Court=C3=A8s schreef op za 04-09-2021 om 23:47 [+0200]: > Hi! >=20 > Some initial comments=E2=80=A6 >=20 > Maxime Devos <maximedevos@HIDDEN> skribis: >=20 > > +++ b/guix/gexp.scm > > @@ -531,13 +531,37 @@ appears." > > (define-gexp-compiler (local-file-compiler (file <local-file>) system = target) > > [...] > > + (if sha256 > > + (let ((path (fixed-output-path name sha256 #:recursive? rec= ursive?))) > > + ;; If the hash is known in advance and the store already = has the > > + ;; item, there is no need to intern the file. > > + (if (file-exists? path) > > + (mbegin %store-monad > > + ;; Tell the GC that PATH will be used, such that it= won't > > + ;; be deleted. > > + ((store-lift add-temp-root) path) > > + ;; The GC could have deleted the item before add-te= mp-root > > + ;; completed, so check again if PATH exists. > > + (if (file-exists? path) > > + (return path) > > + ;; If it has been removed, fall-back interning. > > + (intern))) > > + ;; If PATH does not yet exist, fall back to interning= . > > + (intern))) > > + (intern)))))) >=20 > =E2=80=98file-exists?=E2=80=99 won=E2=80=99t work when talking to a remot= e store (e.g., > GUIX_DAEMON_SOCKET=3Dssh://=E2=80=A6). >=20 > =E2=80=98add-temp-root=E2=80=99 doesn=E2=80=99t throw if the given store = item does not exist. > So it could be written like this: >=20 > (if sha256 > (mbegin %store-monad > (add-temp-root* item) > (if (valid-path?* item) > (return item) > (intern))) > (intern)) Done in the v2. > But then, we=E2=80=99d add one RPC for every =E2=80=98add-to-store=E2=80= =99 RPC corresponding to > a patch (you can set =E2=80=9CGUIX_PROFILING=3Drpc=E2=80=9D to see the nu= mbers), which is > not great. >=20 > Ludo=E2=80=99. Note that 'intern' is only called if the patch isn't yet in the store. In practice, the patch is almost always already in the store. For example, suppose I have a few packages in my profile. As the packages are in my profile, they had to have their derivation computed at some point, so the corresponding patches had to be interned. If I now run "guix pull && guix package -u", when computing the derivation of the updated profile, most required patches are already in the store, because patches don't change often. Likewise, if I run "guix environment guix" in one terminal, then in another= , then in yet another ... possibly for the first invocation, some patches nee= d to be interned, but for the other invocations, it's already in the store. Because fixed-output-path is now called more often, I've added a patch optimising (guix base32). Let's compare the numbers again! This time, I've run echo powersave |sudo tee /sys/devices/system/cpu/cpufreq/policy{0,1,2,3}/sc= aling_governor to make sure the CPU frequency doesn't change. On a hot (disk) cache: # After the patch series time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d --no-= grafts pigx Remote procedure call summary: 5949 RPCs built-in-builders ... 1 add-to-store ... 3 add-to-store/tree ... 26 add-temp-root ... 195 valid-path? ... 195 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 312.04 MiB GC times: 17 time spent in GC: 3.34 seconds (25% of user time) # averaged over three runs real 0m14,035s user 0m14,138s sys 0m0,650s # Before the patch series time GUIX_PROFILING=3D"rpc gc" ./the-unoptimised-guix/bin/guix build -d --n= o-grafts pigx /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv Remote procedure call summary: 5749 RPCs built-in-builders ... 1 add-to-store/tree ... 26 add-to-store ... 193 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 325.24 MiB GC times: 18 time spent in GC: 3.66 seconds (26% of user time) real 0m13,700s user 0m14,051s sys 0m0,658s So on a hot disk cache, there doesn't appear to be any improvement (except for =E2=80=98time spent in GC=E2=80=99 -- presumably that's due to = the optimisations to guix/base32.scm). What about a cold cache? # After the patch series sync && echo 3 | sudo tee /proc/sys/vm/drop_caches ./the-optimised-guix/bin/guix --help time GUIX_PROFILING=3D"rpc gc" ./the-optimised-guix/bin/guix build -d --no-= grafts pigx /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv Remote procedure call summary: 5949 RPCs built-in-builders ... 1 add-to-store ... 3 add-to-store/tree ... 26 add-temp-root ... 195 valid-path? ... 195 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 312.03 MiB GC times: 17 time spent in GC: 3.37 seconds (23% of user time) real 1m39,178s user 0m14,557s sys 0m0,990s # Before the patch series sync && echo 3 | sudo tee /proc/sys/vm/drop_caches ./the-unoptimised-guix/bin/guix --help time GUIX_PROFILING=3D"rpc gc" ./the-unoptimised-guix/bin/guix build -d --n= o-grafts pigx Remote procedure call summary: 5749 RPCs built-in-builders ... 1 add-to-store/tree ... 26 add-to-store ... 193 add-text-to-store ... 5529 Garbage collection statistics: heap size: 93.85 MiB allocated: 325.25 MiB GC times: 18 time spent in GC: 3.63 seconds (25% of user time) real 1m42,100s user 0m14,690s sys 0m1,127s It seems that if the disk cache is cold, the time-to-derivation decreases a little by this patch series. Much less than I had hoped for though; I'll have to look into other areas for interesting performance gains ... Greetings, Maxime. --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename="v2-0001-build-self-Implement-basic-hash-algorithm.patch" Content-Type: text/x-patch; name="v2-0001-build-self-Implement-basic-hash-algorithm.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhOGUyNGE1MjU4YWEwNTY4OWJjYWZhNzBhZjA3MWRhNTI5NmY2M2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAyMDowOTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MS85XSBidWlsZC1zZWxmOiBJbXBsZW1lbnQgYmFzaWMgJ2hhc2gtYWxnb3JpdGhtJy4KTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoZSBtb2R1bGUgKGd1aXggaGFzaCkgdXNlZCBm cm9tICdzZWFyY2gtcGF0Y2gnIGluIGEgZnV0dXJlCnBhdGNoIG5lZWRzIGl0IHRvIGJlIHByb3Bl cmx5IGRlZmluZWQgd2hlbiAoZ3VpeCBoYXNoKSBpcyBiZWluZwpjb21waWxlZC4gICdzZWFyY2gt cGF0Y2gnIGlzIHVzZWQgd2hlbiB0aGUgZGVyaXZhdGlvbiBvZiBHdWl4IGlzCmJlaW5nIGNvbXB1 dGVkLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgdGhlIOKAmHdyb25nIHR5cGUgdG8KYXBw bHk6ICM8c3ludGF4LXRyYW5zZm9ybWVyIGhhc2gtYWxnb3JpdGhtPuKAmSBlcnJvci4KCiogYnVp bGQtYXV4L2J1aWxkLXNlbGYuc2NtCiAgKGJ1aWxkLXByb2dyYW0pW2Zha2UtZ2NyeXB0LWhhc2hd OiBEZWZpbmUgaGFzaC1hbGdvcml0aG0gZm9yIHNoYTEKICBhbmQgc2hhMjU2LgotLS0KIGJ1aWxk LWF1eC9idWlsZC1zZWxmLnNjbSB8IDEzICsrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAx MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9i dWlsZC1zZWxmLnNjbSBiL2J1aWxkLWF1eC9idWlsZC1zZWxmLnNjbQppbmRleCAzYTJkMTNjYzA5 Li4yYzEzZDlkNTMwIDEwMDY0NAotLS0gYS9idWlsZC1hdXgvYnVpbGQtc2VsZi5zY20KKysrIGIv YnVpbGQtYXV4L2J1aWxkLXNlbGYuc2NtCkBAIC0yNTksOCArMjU5LDE3IEBAIGludGVyZmFjZSAo RkZJKSBvZiBHdWlsZS4iKQogICAoZGVmaW5lIGZha2UtZ2NyeXB0LWhhc2gKICAgICA7OyBGYWtl IChnY3J5cHQgaGFzaCkgbW9kdWxlOyBzZWUgYmVsb3cuCiAgICAgKHNjaGVtZS1maWxlICJoYXNo LnNjbSIKLSAgICAgICAgICAgICAgICAgI34oZGVmaW5lLW1vZHVsZSAoZ2NyeXB0IGhhc2gpCi0g ICAgICAgICAgICAgICAgICAgICAjOmV4cG9ydCAoc2hhMSBzaGEyNTYpKSkpCisgICAgICAgICAg ICAgICAgICN+KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLW1vZHVsZSAoZ2Ny eXB0IGhhc2gpCisgICAgICAgICAgICAgICAgICAgICAgICM6ZXhwb3J0IChzaGExIHNoYTI1NiBo YXNoLWFsZ29yaXRobSkpCisgICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCDigJhXcm9uZyB0 eXBlIHRvIGFwcGx5OgorICAgICAgICAgICAgICAgICAgICAgOzsgIzxzeW50YXgtdHJhbnNmb3Jt ZXIgaGFzaC1hbGdvcml0aG0+4oCZIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgIChkZWZp bmUgc2hhMSkKKyAgICAgICAgICAgICAgICAgICAgIChkZWZpbmUgc2hhMjU2KQorICAgICAgICAg ICAgICAgICAgICAgKGRlZmluZS1zeW50YXggaGFzaC1hbGdvcml0aG0KKyAgICAgICAgICAgICAg ICAgICAgICAgKHN5bnRheC1ydWxlcyAoc2hhMSBzaGEyNTYpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKChfIHNoYTEpIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKChfIHNoYTI1Nikg OCkpKSkpKQogCiAgIChkZWZpbmUgZmFrZS1naXQKICAgICAoc2NoZW1lLWZpbGUgImdpdC5zY20i ICN+KGRlZmluZS1tb2R1bGUgKGdpdCkpKSkKLS0gCjIuMzMuMAoK --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename="v2-0002-guix-hash-Extract-file-hashing-procedures.patch" Content-Type: text/x-patch; name="v2-0002-guix-hash-Extract-file-hashing-procedures.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjMzhjYWUxMWRmMDhhNTdiNWEzZjQ4MzYwMWI2NDgyYzM3OWEwNzQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYXJhaCBNb3JnZW5zZW4gPGlza2FyaWFuQG1nc24uZGV2PgpE YXRlOiBTdW4sIDE1IEF1ZyAyMDIxIDE2OjI1OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MiAy LzldIGd1aXggaGFzaDogRXh0cmFjdCBmaWxlIGhhc2hpbmcgcHJvY2VkdXJlcy4KCiogZ3VpeC9z Y3JpcHRzL2hhc2guc2NtIChndWl4LWhhc2gpW3Zjcy1maWxlPywgZmlsZS1oYXNoXTogRXh0cmFj dCBsb2dpYwp0by4uLgoqIGd1aXgvaGFzaC5zY206IC4uLmhlcmUuIE5ldyBmaWxlLgoqIE1ha2Vm aWxlLmFtIChNT0RVTEVTKTogQWRkIG5ldyBmaWxlLgotLS0KIE1ha2VmaWxlLmFtICAgICAgICAg ICB8ICAxICsKIGd1aXgvaGFzaC5zY20gICAgICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGd1aXgvc2NyaXB0cy9oYXNoLnNjbSB8IDI5ICsrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAy MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBndWl4L2hhc2guc2NtCgpkaWZmIC0t Z2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCAzMjdkM2Y5OTYxLi44ZjgwODlj MDVjIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtMTA3LDYg KzEwNyw3IEBAIE1PRFVMRVMgPQkJCQkJXAogICBndWl4L25hcmluZm8uc2NtCQkJCVwKICAgZ3Vp eC9kZXJpdmF0aW9ucy5zY20JCQkJXAogICBndWl4L2dyYWZ0cy5zY20JCQkJXAorICBndWl4L2hh c2guc2NtCQkJCQlcCiAgIGd1aXgvcmVwbC5zY20JCQkJCVwKICAgZ3VpeC90cmFuc2Zvcm1hdGlv bnMuc2NtCQkJXAogICBndWl4L2luZmVyaW9yLnNjbQkJCQlcCmRpZmYgLS1naXQgYS9ndWl4L2hh c2guc2NtIGIvZ3VpeC9oYXNoLnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi44YzJhYjgxODdmCi0tLSAvZGV2L251bGwKKysrIGIvZ3VpeC9oYXNoLnNjbQpAQCAtMCww ICsxLDUxIEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50 IGZvciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTYXJhaCBNb3JnZW5zZW4gPGlza2FyaWFu QG1nc24uZGV2PgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCis7OzsK Kzs7OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKKzs7OyB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKzs7OyBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7Ozsg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7 OzsKKzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhkZWZpbmUtbW9kdWxlIChndWl4IGhh c2gpCisgICM6dXNlLW1vZHVsZSAoZ2NyeXB0IGhhc2gpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBz ZXJpYWxpemF0aW9uKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0xKQorICAjOnVzZS1tb2R1 bGUgKHNyZmkgc3JmaS0xMSkKKyAgIzpleHBvcnQgKHZjcy1maWxlPworICAgICAgICAgICAgZmls ZS1oYXNoKikpCisKKyhkZWZpbmUgKHZjcy1maWxlPyBmaWxlIHN0YXQpCisgICJSZXR1cm5zIHRy dWUgaWYgRklMRSBpcyBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gZmlsZS4iCisgIChjYXNlIChz dGF0OnR5cGUgc3RhdCkKKyAgICAoKGRpcmVjdG9yeSkKKyAgICAgKG1lbWJlciAoYmFzZW5hbWUg ZmlsZSkgJygiLmJ6ciIgIi5naXQiICIuaGciICIuc3ZuIiAiQ1ZTIikpKQorICAgICgocmVndWxh cikKKyAgICAgOzsgR2l0IHN1Yi1tb2R1bGVzIGhhdmUgYSAnLmdpdCcgZmlsZSB0aGF0IGlzIGEg cmVndWxhciB0ZXh0IGZpbGUuCisgICAgIChzdHJpbmc9PyAoYmFzZW5hbWUgZmlsZSkgIi5naXQi KSkKKyAgICAoZWxzZQorICAgICAjZikpKQorCisoZGVmaW5lKiAoZmlsZS1oYXNoKiBmaWxlICM6 a2V5CisgICAgICAgICAgICAgICAgICAgICAoYWxnb3JpdGhtIChoYXNoLWFsZ29yaXRobSBzaGEy NTYpKQorICAgICAgICAgICAgICAgICAgICAgKHJlY3Vyc2l2ZT8gI3QpCisgICAgICAgICAgICAg ICAgICAgICAoc2VsZWN0PyAobmVnYXRlIHZjcy1maWxlPykpKQorICAiQ29tcHV0ZSB0aGUgaGFz aCBvZiBGSUxFIHdpdGggQUxHT1JJVEhNLiAgSWYgUkVDVVJTSVZFPyBpcyB0cnVlLCByZWN1cnNl CitpbnRvIHN1YmRpcmVjdG9yaWVzIG9mIEZJTEUsIGNvbXB1dGluZyB0aGUgY29tYmluZWQgaGFz aCBvZiBhbGwgZmlsZXMgZm9yCit3aGljaCAoU0VMRUNUPyAgRklMRSBTVEFUKSByZXR1cm5zIHRy dWUuIgorICAoaWYgcmVjdXJzaXZlPworICAgICAgKGxldC12YWx1ZXMgKCgocG9ydCBnZXQtaGFz aCkKKyAgICAgICAgICAgICAgICAgICAgKG9wZW4taGFzaC1wb3J0IGFsZ29yaXRobSkpKQorICAg ICAgICAod3JpdGUtZmlsZSBmaWxlIHBvcnQgIzpzZWxlY3Q/IHNlbGVjdD8pCisgICAgICAgIChm b3JjZS1vdXRwdXQgcG9ydCkKKyAgICAgICAgKGdldC1oYXNoKSkKKyAgICAgIChmaWxlLWhhc2gg YWxnb3JpdGhtIGZpbGUpKSkKZGlmZiAtLWdpdCBhL2d1aXgvc2NyaXB0cy9oYXNoLnNjbSBiL2d1 aXgvc2NyaXB0cy9oYXNoLnNjbQppbmRleCBiODYyMjM3M2NjLi4zNTNjYTMwYzJjIDEwMDY0NAot LS0gYS9ndWl4L3NjcmlwdHMvaGFzaC5zY20KKysrIGIvZ3VpeC9zY3JpcHRzL2hhc2guc2NtCkBA IC0zLDYgKzMsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDEzIE5pa2l0YSBLYXJldG5pa292IDxu aWtpdGFAa2FyZXRuaWtvdi5vcmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTYgSmFuIE5pZXV3ZW5o dWl6ZW4gPGphbm5la2VAZ251Lm9yZz4KIDs7OyBDb3B5cmlnaHQgwqkgMjAxOCBUaW0gR2VzdGh1 aXplbiA8dGltLmdlc3RodWl6ZW5AeWFob28uZGU+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgU2Fy YWggTW9yZ2Vuc2VuIDxpc2thcmlhbkBtZ3NuLmRldj4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC0yMyw2ICsyNCw3IEBACiAgICM6dXNlLW1vZHVsZSAo Z2NyeXB0IGhhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBzZXJpYWxpemF0aW9uKQogICAjOnVz ZS1tb2R1bGUgKGd1aXggdWkpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBoYXNoKQogICAjOnVzZS1t b2R1bGUgKGd1aXggc2NyaXB0cykKICAgIzp1c2UtbW9kdWxlIChndWl4IGJhc2UxNikKICAgIzp1 c2UtbW9kdWxlIChndWl4IGJhc2UzMikKQEAgLTEyNSwxNiArMTI3LDYgQEAgYW5kICdiYXNlMTYn ICgnaGV4JyBhbmQgJ2hleGFkZWNpbWFsJyBjYW4gYmUgdXNlZCBhcyB3ZWxsKS5cbiIpKQogICAg IChwYXJzZS1jb21tYW5kLWxpbmUgYXJncyAlb3B0aW9ucyAobGlzdCAlZGVmYXVsdC1vcHRpb25z KQogICAgICAgICAgICAgICAgICAgICAgICAgIzpidWlsZC1vcHRpb25zPyAjZikpCiAKLSAgKGRl ZmluZSAodmNzLWZpbGU/IGZpbGUgc3RhdCkKLSAgICAoY2FzZSAoc3RhdDp0eXBlIHN0YXQpCi0g ICAgICAoKGRpcmVjdG9yeSkKLSAgICAgICAobWVtYmVyIChiYXNlbmFtZSBmaWxlKSAnKCIuYnpy IiAiLmdpdCIgIi5oZyIgIi5zdm4iICJDVlMiKSkpCi0gICAgICAoKHJlZ3VsYXIpCi0gICAgICAg OzsgR2l0IHN1Yi1tb2R1bGVzIGhhdmUgYSAnLmdpdCcgZmlsZSB0aGF0IGlzIGEgcmVndWxhciB0 ZXh0IGZpbGUuCi0gICAgICAgKHN0cmluZz0/IChiYXNlbmFtZSBmaWxlKSAiLmdpdCIpKQotICAg ICAgKGVsc2UKLSAgICAgICAjZikpKQotCiAgIChsZXQqICgob3B0cyAocGFyc2Utb3B0aW9ucykp CiAgICAgICAgICAoYXJncyAoZmlsdGVyLW1hcCAobWF0Y2gtbGFtYmRhCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCgnYXJndW1lbnQgLiB2YWx1ZSkKQEAgLTE1MCwxOCArMTQyLDExIEBA IGFuZCAnYmFzZTE2JyAoJ2hleCcgYW5kICdoZXhhZGVjaW1hbCcgY2FuIGJlIHVzZWQgYXMgd2Vs bCkuXG4iKSkKICAgICAgIDs7IENvbXB1dGUgdGhlIGhhc2ggb2YgRklMRS4KICAgICAgIDs7IENh dGNoIGFuZCBncmFjZWZ1bGx5IHJlcG9ydCBwb3NzaWJsZSAnJm5hci1lcnJvcicgY29uZGl0aW9u cy4KICAgICAgICh3aXRoLWVycm9yLWhhbmRsaW5nCi0gICAgICAgIChpZiAoYXNzb2MtcmVmIG9w dHMgJ3JlY3Vyc2l2ZT8pCi0gICAgICAgICAgICAobGV0LXZhbHVlcyAoKChwb3J0IGdldC1oYXNo KQotICAgICAgICAgICAgICAgICAgICAgICAgICAob3Blbi1oYXNoLXBvcnQgKGFzc29jLXJlZiBv cHRzICdoYXNoLWFsZ29yaXRobSkpKSkKLSAgICAgICAgICAgICAgKHdyaXRlLWZpbGUgZmlsZSBw b3J0ICM6c2VsZWN0PyBzZWxlY3Q/KQotICAgICAgICAgICAgICAoZm9yY2Utb3V0cHV0IHBvcnQp Ci0gICAgICAgICAgICAgIChnZXQtaGFzaCkpCi0gICAgICAgICAgICAobWF0Y2ggZmlsZQotICAg ICAgICAgICAgICAoIi0iIChwb3J0LWhhc2ggKGFzc29jLXJlZiBvcHRzICdoYXNoLWFsZ29yaXRo bSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWlucHV0LXBvcnQpKSkK LSAgICAgICAgICAgICAgKF8gICAoY2FsbC13aXRoLWlucHV0LWZpbGUgZmlsZQotICAgICAgICAg ICAgICAgICAgICAgKGN1dGUgcG9ydC1oYXNoIChhc3NvYy1yZWYgb3B0cyAnaGFzaC1hbGdvcml0 aG0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8PikpKSkpKSkKKyAgICAgICAgKG1hdGNo IGZpbGUKKyAgICAgICAgICAoIi0iIChwb3J0LWhhc2ggKGFzc29jLXJlZiBvcHRzICdoYXNoLWFs Z29yaXRobSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtaW5wdXQtcG9ydCkp KQorICAgICAgICAgIChfICAgKGZpbGUtaGFzaCogIzphbGdvcml0aG0gKGFzc29jLXJlZiBvcHRz ICdoYXNoLWFsZ29yaXRobSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICM6cmVjdXJzaXZl PyAoYXNzb2MtcmVmIG9wdHMgJ3JlY3Vyc2l2ZT8pKSkpKSkKIAogICAgIChtYXRjaCBhcmdzCiAg ICAgICAoKGZpbGUpCi0tIAoyLjMzLjAKCg== --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0003-gexp-Allow-computing-the-hash-of-the-local-file-i.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0003-gexp-Allow-computing-the-hash-of-the-local-file-i.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlNWRjNDY4MDA1OTcwMjNkZmMxYzlkNTNjYzZlMGRiMmYzOTk5MDIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNTozNTo1MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg My85XSBnZXhwOiBBbGxvdyBjb21wdXRpbmcgdGhlIGhhc2ggb2YgdGhlIGxvY2FsIGZpbGUgaW4K IGFkdmFuY2UuCgpUaGUgbmV3IGZpZWxkIGlzIGN1cnJlbnRseSB1bnVzZWQuICBUaGUgZm9sbG93 aW5nIHBhdGNoZXMgd2lsbApwb3B1bGF0ZSBhbmQgdXNlIHRoZSBmaWVsZCB0byByZWR1Y2UgdGhl IHRpbWUtdG8tZGVyaXZhdGlvbgp3aGVuIHRoZSBmaWxlIGlzIGFscmVhZHkgaW50ZXJuZWQgaW4g dGhlIHN0b3JlLgoKKiBndWl4L2dleHAuc2NtCiAgKDxsb2NhbC1maWxlPik6IEFkZCBzaGEyNTYg ZmllbGQuCiAgKCVsb2NhbC1maWxlKTogQWRkIHNoYTI1NiBhcmd1bWVudCBmb3IgcG9wdWxhdGlu ZyB0aGUgZmllbGQuCiAgKGxvY2FsLWZpbGUtY29tcGlsZXIpOiBBZGp1c3QgJ21hdGNoJyBleHBy ZXNzaW9uLgotLS0KIGd1aXgvZ2V4cC5zY20gfCAxMiArKysrKysrKy0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3VpeC9n ZXhwLnNjbSBiL2d1aXgvZ2V4cC5zY20KaW5kZXggZjNkMjc4YjNlNi4uYTYzMzk4NDY4OCAxMDA2 NDQKLS0tIGEvZ3VpeC9nZXhwLnNjbQorKysgYi9ndWl4L2dleHAuc2NtCkBAIC00MTksMTMgKzQx OSwxNiBAQCBIZXJlIFRBUkdFVCBpcyBib3VuZCB0byB0aGUgY3Jvc3MtY29tcGlsYXRpb24gdHJp cGxldCBvciAjZi4iCiA7OyBBIGxvY2FsIGZpbGUgbmFtZS4gIEZJTEUgaXMgdGhlIGZpbGUgbmFt ZSB0aGUgdXNlciBlbnRlcmVkLCB3aGljaCBjYW4gYmUgYQogOzsgcmVsYXRpdmUgZmlsZSBuYW1l LCBhbmQgQUJTT0xVVEUgaXMgYSBwcm9taXNlIHRoYXQgY29tcHV0ZXMgaXRzIGNhbm9uaWNhbAog OzsgYWJzb2x1dGUgZmlsZSBuYW1lLiAgV2Uga2VlcCBpdCBpbiBhIHByb21pc2UgdG8gY29tcHV0 ZSBpdCBsYXppbHkgYW5kIGF2b2lkCi07OyByZXBlYXRlZCAnc3RhdCcgY2FsbHMuCis7OyByZXBl YXRlZCAnc3RhdCcgY2FsbHMuICBBbGxvdyBjb21wdXRpbmcgdGhlIGhhc2ggb2YgdGhlIGZpbGUg aW4gYWR2YW5jZSwKKzs7IHRvIGF2b2lkIGhhdmluZyB0byBzZW5kIHRoZSBmaWxlIHRvIHRoZSBk YWVtb24gd2hlbiBpdCBpcyBhbHJlYWR5IGludGVybmVkCis7OyBpbiB0aGUgc3RvcmUuCiAoZGVm aW5lLXJlY29yZC10eXBlIDxsb2NhbC1maWxlPgotICAoJSVsb2NhbC1maWxlIGZpbGUgYWJzb2x1 dGUgbmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pCisgICglJWxvY2FsLWZpbGUgZmlsZSBhYnNvbHV0 ZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8pCiAgIGxvY2FsLWZpbGU/CiAgIChmaWxl ICAgICAgIGxvY2FsLWZpbGUtZmlsZSkgICAgICAgICAgICAgICAgICAgIDtzdHJpbmcKICAgKGFi c29sdXRlICAgJWxvY2FsLWZpbGUtYWJzb2x1dGUtZmlsZS1uYW1lKSAgICAgO3Byb21pc2Ugc3Ry aW5nCiAgIChuYW1lICAgICAgIGxvY2FsLWZpbGUtbmFtZSkgICAgICAgICAgICAgICAgICAgIDtz dHJpbmcKKyAgKHNoYTI1NiAgICAgbG9jYWwtZmlsZS1zaGEyNTYpICAgICAgICAgICAgICAgICAg O3NoYTI1NiBieXRldmVjdG9yIHwgI2YKICAgKHJlY3Vyc2l2ZT8gbG9jYWwtZmlsZS1yZWN1cnNp dmU/KSAgICAgICAgICAgICAgO0Jvb2xlYW4KICAgKHNlbGVjdD8gICAgbG9jYWwtZmlsZS1zZWxl Y3Q/KSkgICAgICAgICAgICAgICAgO3N0cmluZyBzdGF0IC0+IEJvb2xlYW4KIApAQCAtNDM0LDYg KzQzNyw3IEBAIEhlcmUgVEFSR0VUIGlzIGJvdW5kIHRvIHRoZSBjcm9zcy1jb21waWxhdGlvbiB0 cmlwbGV0IG9yICNmLiIKIChkZWZpbmUqICglbG9jYWwtZmlsZSBmaWxlIHByb21pc2UgIzpvcHRp b25hbCAobmFtZSAoYmFzZW5hbWUgZmlsZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIzprZXkK ICAgICAgICAgICAgICAgICAgICAgICAobGl0ZXJhbD8gI3QpIGxvY2F0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgc2hhMjU2CiAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlPyAoc2Vs ZWN0PyB0cnVlKSkKICAgOzsgVGhpcyBpbnRlcm1lZGlhdGUgcHJvY2VkdXJlIGlzIHBhcnQgb2Yg b3VyIEFCSSwgYnV0IHRoZSB1bmRlcmx5aW5nCiAgIDs7ICUlTE9DQUwtRklMRSBpcyBub3QuCkBA IC00NDEsNyArNDQ1LDcgQEAgSGVyZSBUQVJHRVQgaXMgYm91bmQgdG8gdGhlIGNyb3NzLWNvbXBp bGF0aW9uIHRyaXBsZXQgb3IgI2YuIgogICAgICh3YXJuaW5nIChhbmQ9PiBsb2NhdGlvbiBzb3Vy Y2UtcHJvcGVydGllcy0+bG9jYXRpb24pCiAgICAgICAgICAgICAgKEdfICJyZXNvbHZpbmcgJ35h JyByZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeX4lIikKICAgICAgICAgICAgICBmaWxlKSkK LSAgKCUlbG9jYWwtZmlsZSBmaWxlIHByb21pc2UgbmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pKQor ICAoJSVsb2NhbC1maWxlIGZpbGUgcHJvbWlzZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVj dD8pKQogCiAoZGVmaW5lIChhYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSBkaXJlY3RvcnkpCiAgICJS ZXR1cm4gdGhlIGNhbm9uaWNhbCBhYnNvbHV0ZSBmaWxlIG5hbWUgZm9yIEZJTEUsIHdoaWNoIGxp dmVzIGluIHRoZQpAQCAtNTE3LDcgKzUyMSw3IEBAIGFwcGVhcnMuIgogKGRlZmluZS1nZXhwLWNv bXBpbGVyIChsb2NhbC1maWxlLWNvbXBpbGVyIChmaWxlIDxsb2NhbC1maWxlPikgc3lzdGVtIHRh cmdldCkKICAgOzsgIkNvbXBpbGUiIEZJTEUgYnkgYWRkaW5nIGl0IHRvIHRoZSBzdG9yZS4KICAg KG1hdGNoIGZpbGUKLSAgICAoKCQgPGxvY2FsLWZpbGU+IGZpbGUgKD0gZm9yY2UgYWJzb2x1dGUp IG5hbWUgcmVjdXJzaXZlPyBzZWxlY3Q/KQorICAgICgoJCA8bG9jYWwtZmlsZT4gZmlsZSAoPSBm b3JjZSBhYnNvbHV0ZSkgbmFtZSBzaGEyNTYgcmVjdXJzaXZlPyBzZWxlY3Q/KQogICAgICA7OyBD YW5vbmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3MgYSBzeW1saW5rLCBpdCBpcyByZXNvbHZl ZC4gIEZhaWxpbmcKICAgICAgOzsgdG8gZG8gdGhhdCwgd2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3 ZSBjb3VsZCBlbmQgdXAgY3JlYXRpbmcgYSBkYW5nbGluZwogICAgICA7OyBzeW1saW5rIGluIHRo ZSBzdG9yZSwgYW5kIHdoZW4gUkVDVVJTSVZFPyBpcyAjZiAnYWRkLXRvLXN0b3JlJyB3b3VsZAot LSAKMi4zMy4wCgo= --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename="v2-0004-gexp-Allow-overriding-the-absolute-file-name.patch" Content-Type: text/x-patch; name="v2-0004-gexp-Allow-overriding-the-absolute-file-name.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4YTY0YWM3ODc2NzAxM2U4MmYyNmNmZGRhZTk1MWE4ZWYyZTJjYWY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNjoyNToyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NC85XSBnZXhwOiBBbGxvdyBvdmVycmlkaW5nIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUuCgpUaGlz IHdpbGwgYmUgdXNlZCBieSB0aGUgbmV4dCBwYXRjaCB0byBpbXBsZW1lbnQgc2VhcmNoLXBhdGNo IGluCnRlcm1zIG9mIGxvY2FsLWZpbGUuCgoqIGd1aXgvZ2V4cC5zY20KICAocHJlY2Fub25pY2Fs aXplZC1maWxlLW5hbWUpOiBOZXcgbWFjcm8uCiAgKGxvY2FsLWZpbGUpOiBVc2UgdGhlIGFic29s dXRlIGZpbGUgbmFtZSBmcm9tIHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lCiAgd2hlbiBhdmFp bGFibGUuCi0tLQogZ3VpeC9nZXhwLnNjbSB8IDEyICsrKysrKysrKysrLQogMSBmaWxlIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9ndWl4L2dl eHAuc2NtIGIvZ3VpeC9nZXhwLnNjbQppbmRleCBhNjMzOTg0Njg4Li5jNjllNGFhMjk5IDEwMDY0 NAotLS0gYS9ndWl4L2dleHAuc2NtCisrKyBiL2d1aXgvZ2V4cC5zY20KQEAgLTUxLDYgKzUxLDcg QEAKICAgICAgICAgICAgIGdleHAtaW5wdXQtb3V0cHV0CiAgICAgICAgICAgICBnZXhwLWlucHV0 LW5hdGl2ZT8KIAorICAgICAgICAgICAgcHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUKICAgICAg ICAgICAgIGFzc3VtZS12YWxpZC1maWxlLW5hbWUKICAgICAgICAgICAgIGxvY2FsLWZpbGUKICAg ICAgICAgICAgIGxvY2FsLWZpbGU/CkBAIC00NjMsNiArNDY0LDEyIEBAIHRoZSBnaXZlbiBmaWxl IG5hbWUgaXMgdmFsaWQsIGV2ZW4gaWYgaXQncyBub3QgYSBzdHJpbmcgbGl0ZXJhbCwgYW5kIHRo dXMgbm90CiB3YXJuIGFib3V0IGl0LiIKICAgZmlsZSkKIAorKGRlZmluZS1zeW50YXgtcnVsZSAo cHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUgZmlsZSBhYnNvbHV0ZSkKKyAgIlRoaXMgaXMgYSBz eW50YWN0aWMga2V5d29yZCB0byB0ZWxsICdsb2NhbC1maWxlJyB0aGF0IGl0IGNhbiBhc3N1bWUg dGhhdAordGhlIGdpdmVuIGZpbGUgbmFtZSBGSUxFIGhhcyBBQlNPTFVURSBhcyBhYnNvbHV0ZSBm aWxlIG5hbWUgYW5kICdsb2NhbC1maWxlJworZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIHRoZSBh YnNvbHV0ZSBmaWxlIG5hbWUgYnkgaXRzZWxmLiIKKyAgYWJzb2x1dGUpCisKIChkZWZpbmUtc3lu dGF4IGxvY2FsLWZpbGUKICAgKGxhbWJkYSAocykKICAgICAiUmV0dXJuIGFuIG9iamVjdCByZXBy ZXNlbnRpbmcgbG9jYWwgZmlsZSBGSUxFIHRvIGFkZCB0byB0aGUgc3RvcmU7IHRoaXMKQEAgLTQ4 MSw3ICs0ODgsNyBAQCB3aGVyZSBGSUxFIGlzIHRoZSBlbnRyeSdzIGFic29sdXRlIGZpbGUgbmFt ZSBhbmQgU1RBVCBpcyB0aGUgcmVzdWx0IG9mCiBUaGlzIGlzIHRoZSBkZWNsYXJhdGl2ZSBjb3Vu dGVycGFydCBvZiB0aGUgJ2ludGVybmVkLWZpbGUnIG1vbmFkaWMgcHJvY2VkdXJlLgogSXQgaXMg aW1wbGVtZW50ZWQgYXMgYSBtYWNybyB0byBjYXB0dXJlIHRoZSBjdXJyZW50IHNvdXJjZSBkaXJl Y3Rvcnkgd2hlcmUgaXQKIGFwcGVhcnMuIgotICAgIChzeW50YXgtY2FzZSBzIChhc3N1bWUtdmFs aWQtZmlsZS1uYW1lKQorICAgIChzeW50YXgtY2FzZSBzIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1l IHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lKQogICAgICAgKChfIGZpbGUgcmVzdCAuLi4pCiAg ICAgICAgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0gIydmaWxlKSkKICAgICAgICA7OyBGSUxFIGlz IGEgbGl0ZXJhbCwgc28gcmVzb2x2ZSBpdCByZWxhdGl2ZSB0byB0aGUgc291cmNlIGRpcmVjdG9y eS4KQEAgLTQ5NSw2ICs1MDIsOSBAQCBhcHBlYXJzLiIKICAgICAgICAjJyglbG9jYWwtZmlsZSBm aWxlCiAgICAgICAgICAgICAgICAgICAgICAgKGRlbGF5IChhYnNvbHV0ZS1maWxlLW5hbWUgZmls ZSAoZ2V0Y3dkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgcmVzdCAuLi4pKQorICAgICAgKChf IChwcmVjYW5vbmljYWxpemVkLWZpbGUtbmFtZSBmaWxlIGFic29sdXRlKSByZXN0IC4uLikKKyAg ICAgICA7OyBVc2UgdGhlIGdpdmVuIGZpbGUgbmFtZSBBQlNPTFVURSBhcyBhYnNvbHV0ZSBmaWxl IG5hbWUuCisgICAgICAgIycoJWxvY2FsLWZpbGUgZmlsZSAoZGVsYXkgYWJzb2x1dGUpIHJlc3Qg Li4uKSkKICAgICAgICgoXyBmaWxlIHJlc3QgLi4uKQogICAgICAgIDs7IFJlc29sdmUgRklMRSBy ZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgICAgKHdpdGgtc3ludGF4ICgo bG9jYXRpb24gKGRhdHVtLT5zeW50YXggcyAoc3ludGF4LXNvdXJjZSBzKSkpKQotLSAKMi4zMy4w Cgo= --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0005-packages-Compute-the-hash-of-patches-in-advance-w.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0005-packages-Compute-the-hash-of-patches-in-advance-w.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3MzdkN2ZiOGUxOGM0ZTZlNGRiMWQ4MjQ1NTIxMWVlNWJkZmFlMTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNzoyNTo1OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NS85XSBwYWNrYWdlczogQ29tcHV0ZSB0aGUgaGFzaCBvZiBwYXRjaGVzIGluIGFkdmFuY2Ugd2hl bgogcG9zc2libGUuCgoqIGdudS9wYWNrYWdlcy5zY20KICAoc2VhcmNoLXBhdGNoKTogUmVuYW1l IHRvIC4uLgogICglc2VhcmNoLXBhdGNoKTogLi4uIHRoaXMuCiAgKHRyeS1zZWFyY2gtcGF0Y2gp OiBOZXcgcHJvY2VkdXJlLCBleHRyYWN0ZWQgZnJvbSAuLi4KICAoJXNlYXJjaC1wYXRjaCk6IC4u LiB0aGlzIHByb2NlZHVyZS4KICAoJWxvY2FsLXBhdGNoLWZpbGUpOiBOZXcgcHJvY2VkdXJlLgog ICh0cnVlKTogTmV3IHByb2NlZHVyZS4KICAoc2VhcmNoLXBhdGNoKTogTmV3IG1hY3JvLCBiZWhh dmluZyBsaWtlICVzZWFyY2gtcGF0Y2gsIGJ1dCBjb21wdXRpbmcgdGhlCiAgaGFzaCBhdCBleHBh bnNpb24gdGltZSB3aGVuIHBvc3NpYmxlLgoqIGdudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KICAo JWd1aXgtcGF0Y2hlcyk6IFVzZSBzZWFyY2gtcGF0Y2hlcyBpbnN0ZWFkIG9mIGxvY2FsLWZpbGUg KwogIGFzc3VtZS12YWxpZC1maWxlLW5hbWUgKyBzZWFyY2gtcGF0Y2guCiogZ251L3BhY2thZ2Vz L2dudXppbGxhLnNjbQogIChpY2VjYXQtc291cmNlKVtnbnV6aWxsYS1maXhlcy1wYXRjaF06IFVz ZSBzZWFyY2gtcGF0Y2ggaW5zdGVhZCBvZgogIGxvY2FsLWZpbGUgKyBhc3N1bGUtdmFsaWQtZmls ZS1uYW1lICsgc2VhcmNoLXBhdGNoLgogIChpY2VjYXQtc291cmNlKVttYWtlaWNlY2F0LXBhdGNo XTogTGlrZXdpc2UuCiogZ251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQogIChnY2MtYXJtLW5vbmUt ZWFiaS00LjkpW3NvdXJjZV17cGF0Y2hlc306IEV4cGVjdCBwYXRjaGVzIHRvIGJlCiAgbG9jYWwt ZmlsZSBvYmplY3RzIGluc3RlYWQgb2Ygc3RyaW5ncy4KICBvZiBzdHJpbmdzLgoqIGd1aXgvbGlu dC5zY20gKGNoZWNrLXBhdGNoLWZpbGUtbmFtZXMpOiBBbGxvdyBsb2NhbC1maWxlIG9iamVjdHMu Ci0tLQogZ251L3BhY2thZ2VzLnNjbSAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLQogZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbSB8ICA0ICstLS0K IGdudS9wYWNrYWdlcy9lbWJlZGRlZC5zY20gfCAgMyArKy0KIGdudS9wYWNrYWdlcy9nbnV6aWxs YS5zY20gfCAgOCArKy0tLS0tLQogZ3VpeC9saW50LnNjbSAgICAgICAgICAgICB8IDI4ICsrKysr KysrKysrKysrKystLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyks IDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy5zY20gYi9nbnUvcGFj a2FnZXMuc2NtCmluZGV4IGNjZmM4M2RkMTEuLmY1NTUyZTVhOWIgMTAwNjQ0Ci0tLSBhL2dudS9w YWNrYWdlcy5zY20KKysrIGIvZ251L3BhY2thZ2VzLnNjbQpAQCAtNCw2ICs0LDcgQEAKIDs7OyBD b3B5cmlnaHQgwqkgMjAxNCBFcmljIEJhdmllciA8YmF2aWVyQG1lbWJlci5mc2Yub3JnPgogOzs7 IENvcHlyaWdodCDCqSAyMDE2LCAyMDE3IEFsZXggS29zdCA8YWxlem9zdEBnbWFpbC5jb20+CiA7 OzsgQ29weXJpZ2h0IMKpIDIwMTYgTWF0aGlldSBMaXJ6aW4gPG10aGxAZ251Lm9yZz4KKzs7OyBD b3B5cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+CiA7 OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjEsMTEgKzIy LDEzIEBACiA7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KIAogKGRlZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcykKKyAg Izp1c2UtbW9kdWxlIChndWl4IGdleHApCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykK ICAgIzp1c2UtbW9kdWxlIChndWl4IHVpKQogICAjOnVzZS1tb2R1bGUgKGd1aXggdXRpbHMpCiAg ICM6dXNlLW1vZHVsZSAoZ3VpeCBkaWFnbm9zdGljcykKICAgIzp1c2UtbW9kdWxlIChndWl4IGRp c2NvdmVyeSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGhhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ3Vp eCBtZW1vaXphdGlvbikKICAgIzp1c2UtbW9kdWxlICgoZ3VpeCBidWlsZCB1dGlscykKICAgICAg ICAgICAgICAgICAjOnNlbGVjdCAoKHBhY2thZ2UtbmFtZS0+bmFtZSt2ZXJzaW9uCkBAIC05MCwx MiArOTMsNDcgQEAKICAgIlNlYXJjaCB0aGUgYXV4aWxpYXJ5IEZJTEUtTkFNRS4gIFJldHVybiAj ZiBpZiBub3QgZm91bmQuIgogICAoc2VhcmNoLXBhdGggKCVhdXhpbGlhcnktZmlsZXMtcGF0aCkg ZmlsZS1uYW1lKSkKIAotKGRlZmluZSAoc2VhcmNoLXBhdGNoIGZpbGUtbmFtZSkKKyhkZWZpbmUg KHRyeS1zZWFyY2gtcGF0Y2ggZmlsZS1uYW1lKQorICAiU2VhcmNoIHRoZSBwYXRjaCBGSUxFLU5B TUUuICBSZXR1cm4gI2YgaWYgbm90IGZvdW5kLiIKKyAgKHNlYXJjaC1wYXRoICglcGF0Y2gtcGF0 aCkgZmlsZS1uYW1lKSkKKworKGRlZmluZSAoJXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpCiAgICJT ZWFyY2ggdGhlIHBhdGNoIEZJTEUtTkFNRS4gIFJhaXNlIGFuIGVycm9yIGlmIG5vdCBmb3VuZC4i Ci0gIChvciAoc2VhcmNoLXBhdGggKCVwYXRjaC1wYXRoKSBmaWxlLW5hbWUpCisgIChvciAodHJ5 LXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpCiAgICAgICAocmFpc2UgKGZvcm1hdHRlZC1tZXNzYWdl IChHXyAifmE6IHBhdGNoIG5vdCBmb3VuZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZpbGUtbmFtZSkpKSkKIAorKGRlZmluZSAoJWxvY2FsLXBhdGNoLWZpbGUgZmlsZS1uYW1l IGhhc2gpCisgICJTZWFyY2ggdGhlIHBhdGNoIEZJTEUtTkFNRSwgd2hpY2ggaXMga25vd24gdG8g aGF2ZSBIQVNILiIKKyAgKGxvY2FsLWZpbGUgKHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lIGZp bGUtbmFtZSAoJXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpKQorICAgICAgICAgICAgICAjOnNoYTI1 NiBoYXNoICM6cmVjdXJzaXZlPyAjdCkpCisKKyhkZWZpbmUgdHJ1ZSAoY29uc3QgI3QpKQorCiso ZGVmaW5lLXN5bnRheCBzZWFyY2gtcGF0Y2gKKyAgKGxhbWJkYSAocykKKyAgICAiU2VhcmNoIHRo ZSBwYXRjaCBGSUxFLU5BTUUgYW5kIGNvbXB1dGUgaXRzIGhhc2ggYXQgZXhwYW5zaW9uIHRpbWUK K2lmIHBvc3NpYmxlLiAgUmV0dXJuICNmIGlmIG5vdCBmb3VuZC4iCisgICAgKHN5bnRheC1jYXNl IHMgKCkKKyAgICAgICgoXyBmaWxlLW5hbWUpCisgICAgICAgKHN0cmluZz8gKHN5bnRheC0+ZGF0 dW0gIydmaWxlLW5hbWUpKQorICAgICAgIDs7IEZJTEUtTkFNRSBpcyBhIGNvbnN0YW50IHN0cmlu Zywgc28gdGhlIGhhc2ggY2FuIGJlIGNvbXB1dGVkCisgICAgICAgOzsgaW4gYWR2YW5jZS4KKyAg ICAgICAobGV0ICgocGF0Y2ggKHRyeS1zZWFyY2gtcGF0Y2ggKHN5bnRheC0+ZGF0dW0gIydmaWxl LW5hbWUpKSkpCisgICAgICAgICAoaWYgcGF0Y2gKKyAgICAgICAgICAgICAjYCglbG9jYWwtcGF0 Y2gtZmlsZSBmaWxlLW5hbWUgIywoZmlsZS1oYXNoKiBwYXRjaCAjOnNlbGVjdD8gdHJ1ZSkpCisg ICAgICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAgICAod2FybmluZyAoc291cmNlLXByb3Bl cnRpZXMtPmxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bnRheC1zb3VyY2Ug IydmaWxlLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgKEdfICJ+YTogcGF0Y2ggbm90 IGZvdW5kIGF0IGV4cGFuc2lvbiB0aW1lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChzeW50 YXgtPmRhdHVtICMnaWxlLW5hbWUpKQorICAgICAgICAgICAgICAgIycoJXNlYXJjaC1wYXRjaCBm aWxlLW5hbWUpKSkpKQorICAgICAgOzsgRklMRS1OQU1FIGlzIHZhcmlhYmxlLCBzbyB0aGUgaGFz aCBjYW5ub3QgYmUgcHJlLWNvbXB1dGVkLgorICAgICAgKChfIGZpbGUtbmFtZSkgIycoJXNlYXJj aC1wYXRjaCBmaWxlLW5hbWUpKQorICAgICAgOzsgc2VhcmNoLXBhdGNoIGlzIGJlaW5nIHVzZWQg dXNlZCBpbiBhIGNvbnN0cnVjdCBsaWtlCisgICAgICA7OyAobWFwIHNlYXJjaC1wYXRjaCAuLi4p LgorICAgICAgKGlkIChpZGVudGlmaWVyPyAjJ2lkKSAjJyVzZWFyY2gtcGF0Y2gpKSkpCisKIChk ZWZpbmUtc3ludGF4LXJ1bGUgKHNlYXJjaC1wYXRjaGVzIGZpbGUtbmFtZSAuLi4pCiAgICJSZXR1 cm4gdGhlIGxpc3Qgb2YgYWJzb2x1dGUgZmlsZSBuYW1lcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gK IEZJTEUtTkFNRSBmb3VuZCBpbiAlUEFUQ0gtUEFUSC4iCmRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvY2hyb21pdW0uc2NtIGIvZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbQppbmRleCAyNmFlMWUy NTUwLi5jZjQxOWNmNDFiIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvY2hyb21pdW0uc2NtCisr KyBiL2dudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KQEAgLTM1MSw5ICszNTEsNyBAQAogICAgICAg IjB3YmNianpoNWFrNG5jaWFocXc0eXZ4YzR4OGlrNHgwaXo5aDRrZnkwbTAxMXN4enkxNzQiKSkp KQogCiAoZGVmaW5lICVndWl4LXBhdGNoZXMKLSAgKGxpc3QgKGxvY2FsLWZpbGUKLSAgICAgICAg IChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgKHNlYXJjaC1wYXRjaCAidW5nb29n bGVkLWNocm9taXVtLWV4dGVuc2lvbi1zZWFyY2gtcGF0aC5wYXRjaCIpKSkpKQorICAoc2VhcmNo LXBhdGNoZXMgInVuZ29vZ2xlZC1jaHJvbWl1bS1leHRlbnNpb24tc2VhcmNoLXBhdGgucGF0Y2gi KSkKIAogOzsgVGhpcyBpcyBhIHNvdXJjZSAnc25pcHBldCcgdGhhdCBkb2VzIHRoZSBmb2xsb3dp bmc6CiA7OyAqKSBBcHBsaWVzIHZhcmlvdXMgcGF0Y2hlcyBmb3IgdW5idW5kbGluZyBwdXJwb3Nl cyBhbmQgbGlic3RkYysrIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMv ZW1iZWRkZWQuc2NtIGIvZ251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQppbmRleCBmMzg4YzExYzNk Li44MjZmNTY1NWMzIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZW1iZWRkZWQuc2NtCisrKyBi L2dudS9wYWNrYWdlcy9lbWJlZGRlZC5zY20KQEAgLTMwLDYgKzMwLDcgQEAKICAgIzp1c2UtbW9k dWxlIChndWl4IHBhY2thZ2VzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZG93bmxvYWQpCiAgICM6 dXNlLW1vZHVsZSAoZ3VpeCBzdm4tZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhw KQogICAjOnVzZS1tb2R1bGUgKGd1aXggZ2l0LWRvd25sb2FkKQogICAjOnVzZS1tb2R1bGUgKChn dWl4IGxpY2Vuc2VzKSAjOnByZWZpeCBsaWNlbnNlOikKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1 aWxkLXN5c3RlbSBjbWFrZSkKQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgICAgIDs7IFJlbW92ZSB0 aGUgb25lIHBhdGNoIHRoYXQgZG9lc24ndCBhcHBseSB0byB0aGlzIDQuOSBzbmFwc2hvdCAodGhl CiAgICAgICAgICA7OyBwYXRjaCBpcyBmb3IgNC45LjQgYW5kIGxhdGVyIGJ1dCB0aGlzIHN2biBz bmFwc2hvdCBpcyBvbGRlcikuCiAgICAgICAgICAocGF0Y2hlcyAocmVtb3ZlIChsYW1iZGEgKHBh dGNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9PyAoYmFzZW5hbWUgcGF0 Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZz0/IChsb2NhbC1maWxlLW5h bWUgcGF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnY2MtYXJt LWJ1Zy03MTM5OS5wYXRjaCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAob3JpZ2luLXBh dGNoZXMgKHBhY2thZ2Utc291cmNlIHhnY2MpKSkpKSkKICAgICAgIChuYXRpdmUtaW5wdXRzCmRp ZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvZ251emlsbGEuc2NtIGIvZ251L3BhY2thZ2VzL2dudXpp bGxhLnNjbQppbmRleCA1NzZiYzI1ODZmLi5iZTY3NGRjZThmIDEwMDY0NAotLS0gYS9nbnUvcGFj a2FnZXMvZ251emlsbGEuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9nbnV6aWxsYS5zY20KQEAgLTcz NiwxNCArNzM2LDEwIEBAIGZyb20gZm9yY2luZyBHRVhQLVBST01JU0UuIgogICAgICAgICAgICAg IChiYXNlMzIKICAgICAgICAgICAgICAgIjAwd3MzNTQweDV3aHBpY2M1Zng0azk0OWZmNzNjcXZh ano2anAxM2FobjQ5d3FkYWRzNDciKSkpKQogCi0gICAgICAgICA7OyAnc2VhcmNoLXBhdGNoJyBy ZXR1cm5zIGVpdGhlciBhIHZhbGlkIGZpbGUgbmFtZSBvciAjZiwgc28gd3JhcCBpdAotICAgICAg ICAgOzsgaW4gJ2Fzc3VtZS12YWxpZC1maWxlLW5hbWUnIHRvIGF2b2lkICdsb2NhbC1maWxlJyB3 YXJuaW5ncy4KICAgICAgICAgIChnbnV6aWxsYS1maXhlcy1wYXRjaAotICAgICAgICAgIChsb2Nh bC1maWxlIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgIChz ZWFyY2gtcGF0Y2ggImljZWNhdC11c2Utb2xkZXItcmV2ZWFsLWhpZGRlbi1odG1sLnBhdGNoIikp KSkKKyAgICAgICAgICAoc2VhcmNoLXBhdGNoICJpY2VjYXQtdXNlLW9sZGVyLXJldmVhbC1oaWRk ZW4taHRtbC5wYXRjaCIpKQogICAgICAgICAgKG1ha2VpY2VjYXQtcGF0Y2gKLSAgICAgICAgICAo bG9jYWwtZmlsZSAoYXNzdW1lLXZhbGlkLWZpbGUtbmFtZQotICAgICAgICAgICAgICAgICAgICAg ICAoc2VhcmNoLXBhdGNoICJpY2VjYXQtbWFrZWljZWNhdC5wYXRjaCIpKSkpKQorICAgICAgICAg IChzZWFyY2gtcGF0Y2ggImljZWNhdC1tYWtlaWNlY2F0LnBhdGNoIikpKQogCiAgICAgKG9yaWdp bgogICAgICAgKG1ldGhvZCBjb21wdXRlZC1vcmlnaW4tbWV0aG9kKQpkaWZmIC0tZ2l0IGEvZ3Vp eC9saW50LnNjbSBiL2d1aXgvbGludC5zY20KaW5kZXggM2E3ZjNiZTMyNy4uYjBhMmZiYzMyNyAx MDA2NDQKLS0tIGEvZ3VpeC9saW50LnNjbQorKysgYi9ndWl4L2xpbnQuc2NtCkBAIC00Niw2ICs0 Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdleHAtPmFwcHJveGltYXRl LXNleHApKQogICAjOnVzZS1tb2R1bGUgKGd1aXggbGljZW5zZXMpCiAgICM6dXNlLW1vZHVsZSAo Z3VpeCByZWNvcmRzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggZ2V4cCkKICAgIzp1c2UtbW9kdWxl IChndWl4IGdyYWZ0cykKICAgIzp1c2UtbW9kdWxlIChndWl4IHVwc3RyZWFtKQogICAjOnVzZS1t b2R1bGUgKGd1aXggdXRpbHMpCkBAIC05MjgsNiArOTI5LDggQEAgcGF0Y2ggY291bGQgbm90IGJl IGZvdW5kLiIKICAgICAgICAgICAgICAgICAgICAoc3RhcnRzLXdpdGgtcGFja2FnZS1uYW1lPyAo YmFzZW5hbWUgcGF0Y2gpKSkKICAgICAgICAgICAgICAgICAgICgoPyBvcmlnaW4/IHBhdGNoKQog ICAgICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChvcmlnaW4tYWN0 dWFsLWZpbGUtbmFtZSBwYXRjaCkpKQorICAgICAgICAgICAgICAgICAgKCg/IGxvY2FsLWZpbGU/ IHBhdGNoKQorICAgICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChs b2NhbC1maWxlLW5hbWUgcGF0Y2gpKSkKICAgICAgICAgICAgICAgICAgIChfICAjZikpICAgICA7 bXVzdCBiZSBzb21lIG90aGVyIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAgICAgICBwYXRj aGVzKQogICAgICAgICAgJygpCkBAIC05NDEsMTkgKzk0NCwyMiBAQCBwYXRjaCBjb3VsZCBub3Qg YmUgZm91bmQuIgogICAgICAobGV0ICgocHJlZml4IChzdHJpbmctbGVuZ3RoICglZGlzdHJvLWRp cmVjdG9yeSkpKQogICAgICAgICAgICAobWFyZ2luIChzdHJpbmctbGVuZ3RoICJndWl4LTIuMC4w cmMzLTEwMDAwLTEyMzQ1Njc4OTAvIikpCiAgICAgICAgICAgIChtYXggICAgOTkpKQorICAgICAg IChkZWZpbmUgKHRlc3QtcGF0Y2gtbmFtZSBmaWxlLW5hbWUpCisgICAgICAgICAoaWYgKD4gKCsg bWFyZ2luIChpZiAoc3RyaW5nLXByZWZpeD8gKCVkaXN0cm8tZGlyZWN0b3J5KSBmaWxlLW5hbWUp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoc3RyaW5nLWxlbmd0aCBmaWxlLW5h bWUpIHByZWZpeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbGVuZ3Ro IGZpbGUtbmFtZSkpKQorICAgICAgICAgICAgICAgIG1heCkKKyAgICAgICAgICAgICAobWFrZS13 YXJuaW5nCisgICAgICAgICAgICAgIHBhY2thZ2UKKyAgICAgICAgICAgICAgKEdfICJ+YTogZmls ZSBuYW1lIGlzIHRvbyBsb25nIikKKyAgICAgICAgICAgICAgKGxpc3QgKGJhc2VuYW1lIGZpbGUt bmFtZSkpCisgICAgICAgICAgICAgICM6ZmllbGQgJ3BhdGNoLWZpbGUtbmFtZXMpCisgICAgICAg ICAgICAgI2YpKQogICAgICAgIChmaWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKICAgICAgICAgICAg ICAgICAgICAgICgoPyBzdHJpbmc/IHBhdGNoKQotICAgICAgICAgICAgICAgICAgICAgIChpZiAo PiAoKyBtYXJnaW4gKGlmIChzdHJpbmctcHJlZml4PyAoJWRpc3Ryby1kaXJlY3RvcnkpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh dGNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChzdHJp bmctbGVuZ3RoIHBhdGNoKSBwcmVmaXgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHN0cmluZy1sZW5ndGggcGF0Y2gpKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS13YXJuaW5nCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAoR18gIn5hOiBmaWxlIG5hbWUgaXMgdG9vIGxvbmciKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgKGJhc2VuYW1lIHBhdGNoKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICM6ZmllbGQgJ3BhdGNoLWZpbGUtbmFtZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICNmKSkKKyAgICAgICAgICAgICAgICAgICAgICAodGVzdC1wYXRjaC1uYW1lIHBhdGNoKSkKKyAg ICAgICAgICAgICAgICAgICAgICgoPyBsb2NhbC1maWxlPyBwYXRjaCkKKyAgICAgICAgICAgICAg ICAgICAgICAodGVzdC1wYXRjaC1uYW1lIChsb2NhbC1maWxlLWFic29sdXRlLWZpbGUtbmFtZSBw YXRjaCkpKQogICAgICAgICAgICAgICAgICAgICAgKF8gI2YpKQogICAgICAgICAgICAgICAgICAg IHBhdGNoZXMpKSkpKQogCi0tIAoyLjMzLjAKCg== --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0006-compile-all-compile-Keep-track-of-dependencies-of.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0006-compile-all-compile-Keep-track-of-dependencies-of.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0MGRlYmM4OTEwNzk5ZGY2MGJjYTM0M2NhY2EwNWY4Yzc5ZjQ2NDIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNDowMjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg Ni85XSBjb21waWxlLWFsbCxjb21waWxlOiBLZWVwIHRyYWNrIG9mIGRlcGVuZGVuY2llcyBvZgog Y29tcGlsZWQgbW9kdWxlcy4KClRoaXMgcGF0Y2ggZGVmaW5lcyBhICdub3RpY2UtZGVwZW5kZW5j eScgcHJvY2VkdXJlLgpNYWNyb3MgY2FuIHVzZSB0aGlzIHByb2NlZHVyZSB0byBpbmZvcm0gYnVp bGQtYXV4L2NvbXBpbGUtYWxsLnNjbQp0aGF0IGEgbW9kdWxlIG5lZWRzIHRvIGJlIHJlY29tcGls ZWQgd2hlbiBzb21lIGZpbGUgaXMgdXBkYXRlZC4KCiogZ3VpeC9idWlsZC9jb21waWxlLnNjbQog IChjdXJyZW50LWRlcGVuZGVuY3ktaW5mbywgY3VycmVudC1vdXRwdXQtZmlsZSk6IE5ldyBwYXJh bWV0ZXJzLgogIChub3RpY2UtZGVwZW5kZW5jeSk6IE5ldyBwcm9jZWR1cmUuCiAgKGNvbXBpbGUt ZmlsZXMpW2J1aWxkXTogU2V0ICdvdXRwdXQtZmlsZScuICBEZWxldGUgdGhlIG9sZCBjb21waWxl ZCBmaWxlCiAgaWYgbmVjZXNzYXJ5LiAgUmVtb3ZlIG9sZCBkZXBlbmRlbmN5IGluZm9ybWF0aW9u LgoqIGJ1aWxkLWF1eC9jb21waWxlLWFsbC5zY206IFBvcHVsYXRlIGN1cnJlbnQtZGVwZW5kZW5j eS1pbmZvIGZyb20gYSBmaWxlLgogIFBvcHVsYXRlIHRoZSBmaWxlIGRlcGVuZGVuY3ktaW5mby5z Y20gZnJvbSB0aGUgaGFzaCB0YWJsZS4KICAoYnVpbGRkaXIpOiBOZXcgdmFyaWFibGUuCiAgKGZp bGUtbmVlZHMtY29tcGlsYXRpb24/KTogQ2hlY2sgaWYgdGhlIC5nbyBmaWxlIGlzIG9sZGVyIHRo YW4gdGhlCiAgZGVwZW5kZW5jaWVzLgoqIC5naXRpZ25vcmU6IElnbm9yZSBkZXBlbmRlbmN5LWlu Zm8uc2NtLgotLS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgICAgfCAgMSArCiBidWlsZC1hdXgv Y29tcGlsZS1hbGwuc2NtIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGd1 aXgvYnVpbGQvY29tcGlsZS5zY20gICAgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggODhmZTI0 NTg2ZC4uZjI0ZWE1ZmMzYiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3Jl CkBAIC0xNTQsMyArMTU0LDQgQEAgdG1wCiAvZ251L3BhY2thZ2VzL2Jvb3RzdHJhcAogL2dudS9w YWNrYWdlcy9hdXgtZmlsZXMvZ3VpbGUtZ3VpbGUtbGF1bmNoZXIubwogL2d1aWxlCisvZGVwZW5k ZW5jeS1pbmZvLnNjbQpkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbSBiL2J1 aWxkLWF1eC9jb21waWxlLWFsbC5zY20KaW5kZXggOWZmYmNlNDNhZC4uMDIyOTQwNzNlZCAxMDA2 NDQKLS0tIGEvYnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbQorKysgYi9idWlsZC1hdXgvY29tcGls ZS1hbGwuc2NtCkBAIC0xLDYgKzEsNyBAQAogOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBh Y2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCiA7OzsgQ29weXJpZ2h0IMKpIDIwMTYgVGF5bGFuIFVs cmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlpcmxpQGdtYWlsLmNvbT4KIDs7OyBDb3B5 cmlnaHQgwqkgMjAxNiwgMjAxNywgMjAxOSwgMjAyMCwgMjAyMSBMdWRvdmljIENvdXJ0w6hzIDxs dWRvQGdudS5vcmc+Cis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgTWF4aW1lIERldm9zIDxtYXhpbWVk ZXZvc0B0ZWxlbmV0LmJlPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXgu CiA7OzsKQEAgLTIwLDEyICsyMSwxNSBAQAogKHVzZS1tb2R1bGVzIChpY2UtOSBmb3JtYXQpCiAg ICAgICAgICAgICAgKGljZS05IG1hdGNoKQogICAgICAgICAgICAgIChpY2UtOSB0aHJlYWRzKQor ICAgICAgICAgICAgIChpY2UtOSBoYXNoLXRhYmxlKQogICAgICAgICAgICAgIChzcmZpIHNyZmkt MSkKKyAgICAgICAgICAgICAoc3JmaSBzcmZpLTI2KQogICAgICAgICAgICAgIChndWl4IGJ1aWxk IGNvbXBpbGUpCiAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRpbHMpKQogCiAoZGVmaW5lIGhv c3QgKGdldGVudiAiaG9zdCIpKQogKGRlZmluZSBzcmNkaXIgKGdldGVudiAic3JjZGlyIikpCiso ZGVmaW5lIGJ1aWxkZGlyIChnZXRjd2QpKQogCiAoZGVmaW5lIChyZWxhdGl2ZS1maWxlIGZpbGUp CiAgIChpZiAoc3RyaW5nLXByZWZpeD8gKHN0cmluZy1hcHBlbmQgc3JjZGlyICIvIikgZmlsZSkK QEAgLTQxLDEwICs0NSwzMyBAQAogICAgICAgICAgKHdpdGhvdXQtZXh0ZW5zaW9uIChzdHJpbmct ZHJvcC1yaWdodCByZWxhdGl2ZSA0KSkpCiAgICAgKHN0cmluZy1hcHBlbmQgd2l0aG91dC1leHRl bnNpb24gIi5nbyIpKSkKIAorOzsgUmVhZCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZyb20gcHJl dmlvdXMgIm1ha2UiIHJ1bnMuCisoY3VycmVudC1kZXBlbmRlbmN5LWluZm8gKG1ha2UtaGFzaC10 YWJsZSkpCisoaWYgKGZpbGUtZXhpc3RzPyAiZGVwZW5kZW5jeS1pbmZvLnNjbSIpCisgICAgKGN1 cnJlbnQtZGVwZW5kZW5jeS1pbmZvCisgICAgIChhbGlzdC0+aGFzaC10YWJsZQorICAgICAgKGNh bGwtd2l0aC1pbnB1dC1maWxlICJkZXBlbmRlbmN5LWluZm8uc2NtIiByZWFkICM6ZW5jb2Rpbmcg IlVURi04IikpKQorICAgIChjdXJyZW50LWRlcGVuZGVuY3ktaW5mbyAobWFrZS1oYXNoLXRhYmxl KSkpCisKKyhkZWZpbmUgKGR1bXAtZGVwZW5kZW5jeS1pbmZvKQorICAiRHVtcCB0aGUgY3VycmVu dCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvciB0aGUgbmV4dCBcIm1ha2VcIiBydW4uIgorICAo Y2FsbC13aXRoLW91dHB1dC1maWxlICJkZXBlbmRlbmN5LWluZm8uc2NtLm5ldyIKKyAgICAobGFt YmRhIChwb3J0KQorICAgICAgKGRpc3BsYXkgIjs7IFRoaXMgaXMgYXV0by1nZW5lcmF0ZWQgYnkg YnVpbGQtYXV4L2NvbXBpbGUtYWxsLnNjbSwKKzs7IGRvIG5vdCBtb2RpZnkgbWFudWFsbHkhCisi IHBvcnQpCisgICAgICAod3JpdGUgKGhhc2gtbWFwLT5saXN0IGNvbnMgKGN1cnJlbnQtZGVwZW5k ZW5jeS1pbmZvKSkgcG9ydCkpCisgICAgIzplbmNvZGluZyAiVVRGLTgiKQorICAocmVuYW1lLWZp bGUgImRlcGVuZGVuY3ktaW5mby5zY20ubmV3IiAiZGVwZW5kZW5jeS1pbmZvLnNjbSIpKQorCiAo ZGVmaW5lIChmaWxlLW5lZWRzLWNvbXBpbGF0aW9uPyBmaWxlKQotICAobGV0ICgoZ28gKHNjbS0+ Z28gZmlsZSkpKQorICAobGV0KiAoKGdvIChzY20tPmdvIGZpbGUpKQorICAgICAgICAgKGV4dHJh LWRlcGVuZGVuY2llcworICAgICAgICAgIChoYXNoLXJlZiAoY3VycmVudC1kZXBlbmRlbmN5LWlu Zm8pIChpbi12aWNpbml0eSBidWlsZGRpciBnbykKKyAgICAgICAgICAgICAgICAgICAgJygpKSkp CiAgICAgKG9yIChub3QgKGZpbGUtZXhpc3RzPyBnbykpCi0gICAgICAgIChmaWxlLW10aW1lPD8g Z28gZmlsZSkpKSkKKyAgICAgICAgKGZpbGUtbXRpbWU8PyBnbyBmaWxlKQorICAgICAgICAoYW55 IChjdXQgZmlsZS1tdGltZTw/IGdvIDw+KSBleHRyYS1kZXBlbmRlbmNpZXMpKSkpCiAKIChkZWZp bmUqIChwYXJhbGxlbC1qb2ItY291bnQgIzpvcHRpb25hbCAoZmxhZ3MgKGdldGVudiAiTUFLRUZM QUdTIikpKQogICAiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgam9icyBhcyBkZXRlcm1p bmVkIGJ5IEZMQUdTLCB0aGUgZmxhZ3MgcGFzc2VkCkBAIC0xMDksNyArMTM2LDcgQEAgdG8gJ21h a2UnLiIKICAgICAgICAobGV0KiAoKHRvLWJ1aWxkICAoZmlsdGVyIGZpbGUtbmVlZHMtY29tcGls YXRpb24/IGZpbGVzKSkKICAgICAgICAgICAgICAgKHByb2Nlc3NlZCAoKyBwcm9jZXNzZWQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAobGVuZ3RoIGZpbGVzKSAobGVuZ3RoIHRvLWJ1 aWxkKSkpKSkKLSAgICAgICAgIChjb21waWxlLWZpbGVzIHNyY2RpciAoZ2V0Y3dkKSB0by1idWls ZAorICAgICAgICAgKGNvbXBpbGUtZmlsZXMgc3JjZGlyIGJ1aWxkZGlyIHRvLWJ1aWxkCiAgICAg ICAgICAgICAgICAgICAgICAgICAjOndvcmtlcnMgKHBhcmFsbGVsLWpvYi1jb3VudCopCiAgICAg ICAgICAgICAgICAgICAgICAgICAjOmhvc3QgaG9zdAogICAgICAgICAgICAgICAgICAgICAgICAg IzpyZXBvcnQtbG9hZCAobGFtYmRhIChmaWxlIHRvdGFsIGNvbXBsZXRlZCkKQEAgLTEyNyw4ICsx NTQsMTAgQEAgdG8gJ21ha2UnLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDIgcHJvY2Vzc2VkKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgq IDIgZ3JhbmQtdG90YWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNjbS0+Z28gZmlsZSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcmNlLW91dHB1dCkpKSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JjZS1vdXRwdXQpKSkp KQorICAgICAgIChkdW1wLWRlcGVuZGVuY3ktaW5mbykpCiAgICAgIChsYW1iZGEgXworICAgICAg IChkdW1wLWRlcGVuZGVuY3ktaW5mbykKICAgICAgICAocHJpbWl0aXZlLWV4aXQgMSkpCiAgICAg IChsYW1iZGEgYXJncwogICAgICAgIDs7IFRyeSB0byByZXBvcnQgdGhlIGVycm9yIGluIGFuIGlu dGVsbGlnaWJsZSB3YXkuCmRpZmYgLS1naXQgYS9ndWl4L2J1aWxkL2NvbXBpbGUuc2NtIGIvZ3Vp eC9idWlsZC9jb21waWxlLnNjbQppbmRleCBiODZlYzNiNzQzLi5jMjU5YjI3YWJmIDEwMDY0NAot LS0gYS9ndWl4L2J1aWxkL2NvbXBpbGUuc2NtCisrKyBiL2d1aXgvYnVpbGQvY29tcGlsZS5zY20K QEAgLTEsNiArMSw3IEBACiA7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5h Z2VtZW50IGZvciBHTlUKIDs7OyBDb3B5cmlnaHQgwqkgMjAxMywgMjAxNCwgMjAxNiwgMjAxNywg MjAxOCwgMjAxOSwgMjAyMCBMdWRvdmljIENvdXJ0w6hzIDxsdWRvQGdudS5vcmc+CiA7OzsgQ29w eXJpZ2h0IMKpIDIwMTUgVGF5bGFuIFVscmljaCBCYXnEsXJsxLEvS2FtbWVyIDx0YXlsYW5iYXlp cmxpQGdtYWlsLmNvbT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGlt ZWRldm9zQHRlbGVuZXQuYmU+CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3Vp eC4KIDs7OwpAQCAtMjksMTQgKzMwLDI3IEBACiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZCB1 dGlscykKICAgIzp1c2UtbW9kdWxlIChsYW5ndWFnZSB0cmVlLWlsIG9wdGltaXplKQogICAjOnVz ZS1tb2R1bGUgKGxhbmd1YWdlIGNwcyBvcHRpbWl6ZSkKLSAgIzpleHBvcnQgKGNvbXBpbGUtZmls ZXMpKQorICAjOmV4cG9ydCAoY29tcGlsZS1maWxlcyBub3RpY2UtZGVwZW5kZW5jeSBjdXJyZW50 LWRlcGVuZGVuY3ktaW5mbykpCiAKIDs7OyBDb21tZW50YXJ5OgogOzs7Ci07OzsgU3VwcG9ydCBj b2RlIHRvIGNvbXBpbGUgR3VpbGUgY29kZSBhcyBlZmZpY2llbnRseSBhcyBwb3NzaWJsZSAod2l0 aCAyLjIpLgorOzs7IFN1cHBvcnQgY29kZSB0byBjb21waWxlIEd1aWxlIGNvZGUgYXMgZWZmaWNp ZW50bHkgYXMgcG9zc2libGUgKHdpdGggMi4yKQorOzs7IGFuZCBrZWVwIHRyYWNrIG9mIHRoZSBk ZXBlbmRlbmNpZXMgb2YgY29tcGlsZWQgZmlsZXMuCiA7OzsKIDs7OyBDb2RlOgogCisoZGVmaW5l IGN1cnJlbnQtZGVwZW5kZW5jeS1pbmZvIChtYWtlLXBhcmFtZXRlciAjZikpCisoZGVmaW5lIGN1 cnJlbnQtb3V0cHV0LWZpbGUgKG1ha2UtcGFyYW1ldGVyICNmKSkKKworKGRlZmluZSAobm90aWNl LWRlcGVuZGVuY3kgZGVwZW5kZW5jeSkKKyAgIkFkZCB0aGUgZmlsZSBERVBFTkRFTkNZIHRvIHRo ZSBsaXN0IG9mIGRlcGVuZGVuY2llcyBvZiB0aGUgY29tcGlsZWQgZmlsZQordGhhdCBpcyBiZWlu ZyBjb21wdXRlZCwgaWYgYW55LiIKKyAgKGRlZmluZSBkZXBlbmRlbmN5LXRhYmxlIChjdXJyZW50 LWRlcGVuZGVuY3ktaW5mbykpCisgIChkZWZpbmUgb3V0cHV0IChjdXJyZW50LW91dHB1dC1maWxl KSkKKyAgKHdoZW4gKGFuZCBkZXBlbmRlbmN5LXRhYmxlIG91dHB1dCkKKyAgICAoaGFzaC1zZXQh IGRlcGVuZGVuY3ktdGFibGUgb3V0cHV0CisgICAgICAgICAgICAgICAoY29ucyBkZXBlbmRlbmN5 IChoYXNoLXJlZiBkZXBlbmRlbmN5LXRhYmxlIG91dHB1dCAnKCkpKSkpKQorCiAoZGVmaW5lIG9w dGltaXphdGlvbnMtZm9yLWxldmVsCiAgIChvciAoYW5kPT4gKGZhbHNlLWlmLWV4Y2VwdGlvbgog ICAgICAgICAgICAgICAocmVzb2x2ZS1pbnRlcmZhY2UgJyhzeXN0ZW0gYmFzZSBvcHRpbWl6ZSkp KQpAQCAtMjA3LDEyICsyMjEsMjcgQEAgZmlsZXMgYXJlIGZvciBIT1NULCBhIEdOVSB0cmlwbGV0 IHN1Y2ggYXMgXCJ4ODZfNjQtbGludXgtZ251XCIuIgogICAgIDs7IEV4aXQgYXMgc29vbiBhcyBz b21ldGhpbmcgZ29lcyB3cm9uZy4KICAgICAoZXhpdC1vbi1leGNlcHRpb24KICAgICAgZmlsZQot ICAgICAobGV0ICgocmVsYXRpdmUgKHJlbGF0aXZlLWZpbGUgc291cmNlLWRpcmVjdG9yeSBmaWxl KSkpCi0gICAgICAgKGNvbXBpbGUtZmlsZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAjOm91 dHB1dC1maWxlIChzdHJpbmctYXBwZW5kIGJ1aWxkLWRpcmVjdG9yeSAiLyIKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjbS0+Z28gcmVsYXRpdmUp KQotICAgICAgICAgICAgICAgICAgICAgIzpvcHRzIChhcHBlbmQgd2FybmluZy1vcHRpb25zCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW1pemF0aW9uLW9wdGlvbnMg cmVsYXRpdmUpKSkpKSkKKyAgICAgKGxldCogKChyZWxhdGl2ZSAocmVsYXRpdmUtZmlsZSBzb3Vy Y2UtZGlyZWN0b3J5IGZpbGUpKQorICAgICAgICAgICAgKG91dHB1dC1maWxlIChzdHJpbmctYXBw ZW5kIGJ1aWxkLWRpcmVjdG9yeSAiLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2NtLT5nbyByZWxhdGl2ZSkpKSkKKyAgICAgICAocGFyYW1ldGVyaXplICgoY3Vy cmVudC1vdXRwdXQtZmlsZSBvdXRwdXQtZmlsZSkpCisgICAgICAgICAod2hlbiAoY3VycmVudC1k ZXBlbmRlbmN5LWluZm8pCisgICAgICAgICAgIDs7IElmIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24g aXMgYmVpbmcgdHJhY2tlZCwgcmVtb3ZlCisgICAgICAgICAgIDs7IHRoZSBvbGQgY29tcGlsZWQg ZmlsZSBmaXJzdC4gIE90aGVyd2lzZSwgaWYgcmVjb21waWxpbmcKKyAgICAgICAgICAgOzsgdGhl IGZpbGUgZHVlIHRvIGFuIHVwZGF0ZWQgZGVwZW5kZW5jeSBjYXVzZXMgYW4gZXhjZXB0aW9uLAor ICAgICAgICAgICA7OyB0aGUgbmV3IGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gd29uJ3QgaW5jbHVk ZSB0aGUgY29tcGlsZWQKKyAgICAgICAgICAgOzsgZmlsZSBhbmQgdGhlcmVmb3JlIHRoZSBvbGQg Y29tcGlsZWQgZmlsZSB3b3VsZCBiZSBjb25zaWRlcmVkCisgICAgICAgICAgIDs7IHVwLXRvLWRh dGUgb24gdGhlIGZvbGxvd2luZyAibWFrZSIgcnVuLgorICAgICAgICAgICAod2hlbiAoZmlsZS1l eGlzdHM/IG91dHB1dC1maWxlKQorICAgICAgICAgICAgIChkZWxldGUtZmlsZSBvdXRwdXQtZmls ZSkpCisgICAgICAgICAgIDs7IFJlbW92ZSB0aGUgb2xkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24s IG90aGVyd2lzZQorICAgICAgICAgICA7OyB0aGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbiB0YWJs ZSB3aWxsIGtlZXAgZ3Jvd2luZworICAgICAgICAgICA7OyBhZnRlciBlYWNoICJtYWtlIiBydW4u CisgICAgICAgICAgIChoYXNoLXJlbW92ZSEgKGN1cnJlbnQtZGVwZW5kZW5jeS1pbmZvKSBvdXRw dXQtZmlsZSkpCisgICAgICAgICAoY29tcGlsZS1maWxlIGZpbGUKKyAgICAgICAgICAgICAgICAg ICAgICAgIzpvdXRwdXQtZmlsZSBvdXRwdXQtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAj Om9wdHMgKGFwcGVuZCB3YXJuaW5nLW9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG9wdGltaXphdGlvbi1vcHRpb25zIHJlbGF0aXZlKSkpKSkpKQogCiAgICh3 aXRoLWF1Z21lbnRlZC1zZWFyY2gtcGF0aCAlbG9hZC1wYXRoIHNvdXJjZS1kaXJlY3RvcnkKICAg ICAod2l0aC1hdWdtZW50ZWQtc2VhcmNoLXBhdGggJWxvYWQtY29tcGlsZWQtcGF0aCBidWlsZC1k aXJlY3RvcnkKLS0gCjIuMzMuMAoK --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0007-packages-Add-patches-to-the-dependency-list-of-pa.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0007-packages-Add-patches-to-the-dependency-list-of-pa.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAyYmMyOWQ0NDNkYzVkNjA5Njk2MmRhM2Q1YTEwMjg0NzM0NjJjNDMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNzoxNTowOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg Ny85XSBwYWNrYWdlczogQWRkIHBhdGNoZXMgdG8gdGhlIGRlcGVuZGVuY3kgbGlzdCBvZgogcGFj a2FnZSBtb2R1bGVzLgoKKiBnbnUvcGFja2FnZXMuc2NtIChzZWFyY2gtcGF0Y2gpOiBDYWxsICdu b3RpY2UtZGVwZW5kZW5jeScgb24KICB0aGUgcGF0Y2ggZmlsZS4KLS0tCiBnbnUvcGFja2FnZXMu c2NtIHwgNyArKysrKystCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzLnNjbSBiL2dudS9wYWNrYWdlcy5zY20K aW5kZXggZjU1NTJlNWE5Yi4uMzk5MjlhZTAyMiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzLnNj bQorKysgYi9nbnUvcGFja2FnZXMuc2NtCkBAIC0zNCw2ICszNCw4IEBACiAgICAgICAgICAgICAg ICAgIzpzZWxlY3QgKChwYWNrYWdlLW5hbWUtPm5hbWUrdmVyc2lvbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgLiBoeXBoZW4tc2VwYXJhdGVkLW5hbWUtPm5hbWUrdmVyc2lvbikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgbWtkaXItcCkpCisgIDs7IG9ubHkgcmVxdWlyZWQgYXQgZXhw YW5zaW9uIHRpbWUKKyAgIzphdXRvbG9hZCAgIChndWl4IGJ1aWxkIGNvbXBpbGUpIChub3RpY2Ut ZGVwZW5kZW5jeSkKICAgIzp1c2UtbW9kdWxlIChndWl4IHByb2ZpbGVzKQogICAjOnVzZS1tb2R1 bGUgKGd1aXggZGVzY3JpYmUpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBkZXByZWNhdGlvbikKQEAg LTEyMSw3ICsxMjMsMTAgQEAgaWYgcG9zc2libGUuICBSZXR1cm4gI2YgaWYgbm90IGZvdW5kLiIK ICAgICAgICA7OyBpbiBhZHZhbmNlLgogICAgICAgIChsZXQgKChwYXRjaCAodHJ5LXNlYXJjaC1w YXRjaCAoc3ludGF4LT5kYXR1bSAjJ2ZpbGUtbmFtZSkpKSkKICAgICAgICAgIChpZiBwYXRjaAot ICAgICAgICAgICAgICNgKCVsb2NhbC1wYXRjaC1maWxlIGZpbGUtbmFtZSAjLChmaWxlLWhhc2gq IHBhdGNoICM6c2VsZWN0PyB0cnVlKSkKKyAgICAgICAgICAgICAoYmVnaW4KKyAgICAgICAgICAg ICAgIChub3RpY2UtZGVwZW5kZW5jeSBwYXRjaCkKKyAgICAgICAgICAgICAgICNgKCVsb2NhbC1w YXRjaC1maWxlIGZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IywoZmlsZS1oYXNoKiBwYXRjaCAjOnNlbGVjdD8gdHJ1ZSkpKQogICAgICAgICAgICAgIChiZWdp bgogICAgICAgICAgICAgICAgKHdhcm5pbmcgKHNvdXJjZS1wcm9wZXJ0aWVzLT5sb2NhdGlvbgog ICAgICAgICAgICAgICAgICAgICAgICAgIChzeW50YXgtc291cmNlICMnZmlsZS1uYW1lKSkKLS0g CjIuMzMuMAoK --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0008-gexp-Do-not-intern-if-the-file-is-already-in-the-.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0008-gexp-Do-not-intern-if-the-file-is-already-in-the-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBiNjkwN2Y3NjA0MGZhNTI0MTEwYTUwMzg0OGVkOWI5ZDliMTlkZmFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxODoxMDozMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg OC85XSBnZXhwOiBEbyBub3QgaW50ZXJuIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgaW4gdGhlCiBz dG9yZS4KCiogZ3VpeC9nZXhwLnNjbSAobG9jYWwtZmlsZS1jb21waWxlcik6IFdoZW4gdGhlIGZp bGUgaXMgYWxyZWFkeSBpbiB0aGUKICBzdG9yZSwgcmUtdXNlIHRoZSBmaXhlZCBvdXRwdXQgcGF0 aCBpbnN0ZWFkIG9mIGludGVybmluZyB0aGUgZmlsZQogIGFnYWluLgoqIGd1aXgvZ2V4cC5zY20g KGFkZC10ZW1wLXJvb3QqLCB2YWxpZC1wYXRoPyopOiBOZXcgcHJvY2VkdXJlcy4KLS0tCiBndWl4 L2dleHAuc2NtIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2d1aXgvZ2V4cC5zY20gYi9ndWl4L2dleHAuc2NtCmluZGV4IGM2OWU0YWEyOTkuLjZh NmQxMzAxMTAgMTAwNjQ0Ci0tLSBhL2d1aXgvZ2V4cC5zY20KKysrIGIvZ3VpeC9nZXhwLnNjbQpA QCAtNTI4LDE2ICs1MjgsNDMgQEAgYXBwZWFycy4iCiAnc3lzdGVtLWVycm9yJyBleGNlcHRpb24g aXMgcmFpc2VkIGlmIEZJTEUgY291bGQgbm90IGJlIGZvdW5kLiIKICAgKGZvcmNlICglbG9jYWwt ZmlsZS1hYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSkpKQogCisoZGVmaW5lIGFkZC10ZW1wLXJvb3Qq IChzdG9yZS1saWZ0IGFkZC10ZW1wLXJvb3QpKQorKGRlZmluZSB2YWxpZC1wYXRoPyogKHN0b3Jl LWxpZnQgdmFsaWQtcGF0aD8pKQorCiAoZGVmaW5lLWdleHAtY29tcGlsZXIgKGxvY2FsLWZpbGUt Y29tcGlsZXIgKGZpbGUgPGxvY2FsLWZpbGU+KSBzeXN0ZW0gdGFyZ2V0KQogICA7OyAiQ29tcGls ZSIgRklMRSBieSBhZGRpbmcgaXQgdG8gdGhlIHN0b3JlLgogICAobWF0Y2ggZmlsZQotICAgICgo JCA8bG9jYWwtZmlsZT4gZmlsZSAoPSBmb3JjZSBhYnNvbHV0ZSkgbmFtZSBzaGEyNTYgcmVjdXJz aXZlPyBzZWxlY3Q/KQotICAgICA7OyBDYW5vbmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3Mg YSBzeW1saW5rLCBpdCBpcyByZXNvbHZlZC4gIEZhaWxpbmcKLSAgICAgOzsgdG8gZG8gdGhhdCwg d2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3ZSBjb3VsZCBlbmQgdXAgY3JlYXRpbmcgYSBkYW5nbGlu ZwotICAgICA7OyBzeW1saW5rIGluIHRoZSBzdG9yZSwgYW5kIHdoZW4gUkVDVVJTSVZFPyBpcyAj ZiAnYWRkLXRvLXN0b3JlJyB3b3VsZAotICAgICA7OyBqdXN0IHRocm93IGFuIGVycm9yLCBib3Ro IG9mIHdoaWNoIGFyZSBpbmNvbnZlbmllbnQuCi0gICAgIChpbnRlcm5lZC1maWxlIGFic29sdXRl IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgIzpyZWN1cnNpdmU/IHJlY3Vyc2l2ZT8gIzpzZWxl Y3Q/IHNlbGVjdD8pKSkpCisgICAgOzsgRGVsYXkgY29tcHV0aW5nIHRoZSBhYnNvbHV0ZSBmaWxl IG5hbWUgdW50aWwgJ2ludGVybicsIGFzIHRoaXMKKyAgICA7OyBtaWdodCBiZSBhIHJlbGF0aXZl bHkgZXhwZW5zaXZlIGNvbXB1dGF0aW9uIChlLmcuIGlmIHNlYXJjaC1wYXRjaAorICAgIDs7IGlz IHVzZWQpLCBlc3BlY2lhbGx5IG9uIGEgc3Bpbm5pbmcgZGlzay4KKyAgICAoKCQgPGxvY2FsLWZp bGU+IGZpbGUgYWJzb2x1dGUtcHJvbWlzZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8p CisgICAgIChsZXQgKCkKKyAgICAgICAoZGVmaW5lIChpbnRlcm4pCisgICAgICAgICA7OyBDYW5v bmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3MgYSBzeW1saW5rLCBpdCBpcyByZXNvbHZlZC4K KyAgICAgICAgIDs7IEZhaWxpbmcgdG8gZG8gdGhhdCwgd2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3 ZSBjb3VsZCBlbmQgdXAgY3JlYXRpbmcKKyAgICAgICAgIDs7IGEgZGFuZ2xpbmcgc3ltbGluayBp biB0aGUgc3RvcmUsIGFuZCB3aGVuIFJFQ1VSU0lWRT8gaXMgI2YKKyAgICAgICAgIDs7ICdhZGQt dG8tc3RvcmUnIHdvdWxkIGp1c3QgdGhyb3cgYW4gZXJyb3IsIGJvdGggb2Ygd2hpY2ggYXJlCisg ICAgICAgICA7OyBpbmNvbnZlbmllbnQuCisgICAgICAgICAoaW50ZXJuZWQtZmlsZSAoZm9yY2Ug YWJzb2x1dGUtcHJvbWlzZSkgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgIzpyZWN1cnNp dmU/IHJlY3Vyc2l2ZT8gIzpzZWxlY3Q/IHNlbGVjdD8pKQorICAgICAgIDs7IElmIHRoZSBoYXNo IGlzIGtub3duIGluIGFkdmFuY2UgYW5kIHRoZSBzdG9yZSBhbHJlYWR5IGhhcyB0aGUKKyAgICAg ICA7OyBpdGVtLCB0aGVyZSBpcyBubyBuZWVkIHRvIGludGVybiB0aGUgZmlsZS4KKyAgICAgICAo aWYgc2hhMjU2CisgICAgICAgICAgIChsZXQgKChwYXRoIChmaXhlZC1vdXRwdXQtcGF0aCBuYW1l IHNoYTI1NiAjOnJlY3Vyc2l2ZT8gcmVjdXJzaXZlPykpKQorICAgICAgICAgICAgIChtYmVnaW4g JXN0b3JlLW1vbmFkCisgICAgICAgICAgICAgICA7OyBUZWxsIHRoZSBHQyB0aGF0IFBBVEggd2ls bCBiZSB1c2VkLCBzdWNoIHRoYXQgaXQgd29uJ3QKKyAgICAgICAgICAgICAgIDs7IGJlIGRlbGV0 ZWQuCisgICAgICAgICAgICAgICAoYWRkLXRlbXAtcm9vdCogcGF0aCkKKyAgICAgICAgICAgICAg IDs7ICdhZGQtdGVtcC1yb290KicgZG9lc24ndCB0aG93IGFuIGVycm9yIGlmIHRoZSBzdG9yZSBp dGVtCisgICAgICAgICAgICAgICA7OyBkb2VzIG5vdCBleGlzdCwgc28gd2UgbmVlZCB0byBjaGVj ayBpZiBQQVRIIGFjdHVhbGx5IGV4aXN0cy4KKyAgICAgICAgICAgICAgIChtbGV0ICVzdG9yZS1t b25hZAorICAgICAgICAgICAgICAgICAoKHZhbGlkPyAodmFsaWQtcGF0aD8qIHBhdGgpKSkKKyAg ICAgICAgICAgICAgICAgKGlmIHZhbGlkPworICAgICAgICAgICAgICAgICAgICAgKHJldHVybiBw YXRoKQorICAgICAgICAgICAgICAgICAgICAgOzsgSWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCwgZmFs bC1iYWNrIGludGVybmluZy4KKyAgICAgICAgICAgICAgICAgICAgIChpbnRlcm4pKSkpKQorICAg ICAgICAgICA7OyBJZiBQQVRIIGRvZXMgbm90IHlldCBleGlzdCwgZmFsbCBiYWNrIHRvIGludGVy bmluZy4KKyAgICAgICAgICAgKGludGVybikpKSkpKQogCiAoZGVmaW5lLXJlY29yZC10eXBlIDxw bGFpbi1maWxlPgogICAoJXBsYWluLWZpbGUgbmFtZSBjb250ZW50IHJlZmVyZW5jZXMpCi0tIAoy LjMzLjAKCg== --=-FFYmpQl4eyfmi+ZCpAS1 Content-Disposition: attachment; filename*0=v2-0009-base32-Reduce-GC-pressure-in-make-bytevector-base.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0009-base32-Reduce-GC-pressure-in-make-bytevector-base.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjY2JhYTFhNGI0NDdjNjdmOTk3YTYzNDk0YTgyYzhlMmI5MDVkY2NkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgNSBTZXAgMjAyMSAxNjoyODozMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg OS85XSBiYXNlMzI6IFJlZHVjZSBHQyBwcmVzc3VyZSBpbgogbWFrZS1ieXRldmVjdG9yLT5iYXNl MzItc3RyaW5nLgoKVGhlIGZvbGxvd2luZyBjb2RlIGhhcyBiZWVuIHVzZWQgdG8gY29tcGFyZSBw ZXJmb3JtYW5jZToKCjs7IGZpcnN0IDIwIGJ5dGVzIG9mIHNoYTI1NiBvZiAjdnU4KCN4ZGUgI3hh ZCAjeGJlICN4ZWYpCihkZWZpbmUgYnYgI3Z1OCg5NSAxMjAgMTk1IDUwIDExNiAyMjggNjMgMTY5 IDIyMiA4NiA4OSAzOCA5MiAyOSAxNDUgMTI2IDM3IDE5MiA1NSAzNCkpCixwcm9maWxlCihsZXQg bG9vcCAoKG4gMCkpCiAgKHdoZW4gKDwgbiAjZTFlNikKICAgICAoKEAgKGd1aXggYmFzZTMyKSBi eXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZykgYnYpCiAgICAgKGxvb3AgKCsgbiAxKSkpKQoK QmVmb3JlIHRoaXMgY2hhbmdlLCB0aGUgb3V0cHV0IHdhczoKClsuLi5dClNhbXBsZSBjb3VudDog MTE0MApUb3RhbCB0aW1lOiAyNy40NjU1NjAwMTggc2Vjb25kcyAoMTAuNjU5MzMxNDMzIHNlY29u ZHMgaW4gR0MpCgpBZnRlciB0aGlzIGNoYW5nZSwgdGhlIG91dHB1dCB3YXM6CgpbLi4uXQpTYW1w bGUgY291bnQ6IDk1NwpUb3RhbCB0aW1lOiAyMC40Nzg4NDcxNDMgc2Vjb25kcyAoNi4xMzk3MjEx ODkgc2Vjb25kcyBpbiBHQykKCiogZ3VpeC9iYXNlMzIuc2NtCiAgKG1ha2UtYnl0ZXZlY3Rvci0+ YmFzZTMyLXN0cmluZyk6IEVsaW1pbmF0ZSAncmV2ZXJzZScsIHVzZSBtdXRhdGlvbiBpbnN0ZWFk LgotLS0KIGd1aXgvYmFzZTMyLnNjbSB8IDE4ICsrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3Vp eC9iYXNlMzIuc2NtIGIvZ3VpeC9iYXNlMzIuc2NtCmluZGV4IDQ5ZjE5MWJhMjYuLmU3NmJmMzVl Y2MgMTAwNjQ0Ci0tLSBhL2d1aXgvYmFzZTMyLnNjbQorKysgYi9ndWl4L2Jhc2UzMi5zY20KQEAg LTE0MSwxMiArMTQxLDE4IEBAIHRoZSBwcmV2aW91cyBhcHBsaWNhdGlvbiBvciBJTklULiIKIChk ZWZpbmUgKG1ha2UtYnl0ZXZlY3Rvci0+YmFzZTMyLXN0cmluZyBxdWludGV0LWZvbGQgYmFzZTMy LWNoYXJzKQogICAobGFtYmRhIChidikKICAgICAiUmV0dXJuIGEgYmFzZTMyIGVuY29kaW5nIG9m IEJWIHVzaW5nIEJBU0UzMi1DSEFSUyBhcyB0aGUgYWxwaGFiZXQuIgotICAgIChsZXQgKChjaGFy cyAocXVpbnRldC1mb2xkIChsYW1iZGEgKHEgcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25zICh2ZWN0b3ItcmVmIGJhc2UzMi1jaGFycyBxKQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJygpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnYpKSkKLSAgICAgIChsaXN0 LT5zdHJpbmcgKHJldmVyc2UgY2hhcnMpKSkpKQorICAgIDs7IE11dGF0aW9uIGNhbiBiZSBhdm9p ZGVkIHdpdGggJ3JldmVyc2UnLiAgSG93ZXZlciwgdGhhdCB3b3VsZAorICAgIDs7IG1ha2UgdGhp cyBwcm9jZWR1cmUgYWJvdXQgMzAlIHNsb3dlciBkdWUgdG8gdGhlIGV4dHJhIEdDIHByZXNzdXJl LgorICAgIChsZXQqICgoc3RhcnQgKGNvbnMgI2YgI2YpKQorICAgICAgICAgICAoZW5kIChxdWlu dGV0LWZvbGQgKGxhbWJkYSAocSByKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVmaW5lIHBhaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAodmVj dG9yLXJlZiBiYXNlMzItY2hhcnMgcSkgI2YpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0LWNkciEgciBwYWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ2KSkpCisgICAgICAoc2V0LWNkciEgZW5kICcoKSkKKyAgICAgIChs aXN0LT5zdHJpbmcgKGNkciBzdGFydCkpKSkpCiAKIChkZWZpbmUgJW5peC1iYXNlMzItY2hhcnMK ICAgOzsgU2VlIGBsaWJ1dGlsL2hhc2guY2MnLgotLSAKMi4zMy4wCgo= --=-FFYmpQl4eyfmi+ZCpAS1-- --=-eExp0UHbbratciKFMMXn Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTUfBhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7oPeAP9GUqwvLHvIKa8XYpazBkEbmcu7 QauxwC8cu3p0G1bjkwEAwCfKrddUJnIutjYFyTcMy+QPvcPsbaDsMEzMFODlnQY= =v6yN -----END PGP SIGNATURE----- --=-eExp0UHbbratciKFMMXn--
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 4 Sep 2021 22:04:34 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 04 18:04:34 2021 Received: from localhost ([127.0.0.1]:48822 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mMdm5-0005Gk-RV for submit <at> debbugs.gnu.org; Sat, 04 Sep 2021 18:04:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:50420) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1mMdm5-0005GZ-22 for 50384 <at> debbugs.gnu.org; Sat, 04 Sep 2021 18:04:33 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46516) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mMdly-0001yV-SI; Sat, 04 Sep 2021 18:04:26 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=48868 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mMdly-0002GU-H8; Sat, 04 Sep 2021 18:04:26 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Maxime Devos <maximedevos@HIDDEN> Subject: Re: bug#50384: [PATCH] Optimise search-patch (reducing I/O) References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> Date: Sun, 05 Sep 2021 00:04:25 +0200 In-Reply-To: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> (Maxime Devos's message of "Sat, 04 Sep 2021 23:17:10 +0200") Message-ID: <87tuj0xaja.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Maxime Devos <maximedevos@HIDDEN> skribis: > +(define-syntax search-patch > + (lambda (s) > + "Search the patch FILE-NAME and compute its hash at expansion time > +if possible. Return #f if not found." > + (syntax-case s () > + ((_ file-name) > + (string? (syntax->datum #'file-name)) > + ;; FILE-NAME is a constant string, so the hash can be computed > + ;; in advance. > + (let ((patch (try-search-patch (syntax->datum #'file-name)))) > + (if patch > + #`(%local-patch-file file-name #,(file-hash* patch #:select= ? true)) > + (begin > + (warning (source-properties->location > + (syntax-source #'file-name)) > + (G_ "~a: patch not found at expansion time") > + (syntax->datum #'ile-name)) > + #'(%search-patch file-name))))) > + ;; FILE-NAME is variable, so the hash cannot be pre-computed. > + ((_ file-name) #'(%search-patch file-name)) > + ;; search-patch is being used used in a construct like > + ;; (map search-patch ...). > + (id (identifier? #'id) #'%search-patch)))) It=E2=80=99s clever=E2=80=A6 but also a bit evil, in that it changes the se= mantics of package files in a surprising way. Modifying foo.patch without recompiling foo.scm would lead you to still use the old foo.patch, which can be rather off-putting and error-prone IMO. To address this, =E2=80=98local-file=E2=80=99 could store the inode/mtime += computed store file name (rather than the SHA256). =E2=80=98local-file-compiler=E2= =80=99 would check whether the actual file has matching inode/mtime before returning the computed store file name. Problem is that inode/mtime are guaranteed to differ once you=E2=80=99ve run =E2=80=9Cmake install=E2=80=9D= . :-/ Intuitively, I=E2=80=99d have imagined a cache populated at run time; it wo= uld map, say, file name/inode/mtime to a store file name. =E2=80=98add-to-stor= e=E2=80=99 (or some wrapper above it) would check the cache and return the store file name directly, unless =E2=80=98valid-path?=E2=80=99 says it no longer = exists. Downside is that this would be a per-user cache and you=E2=80=99d still pay= the cost until it=E2=80=99s warm. Advantage is that you could easily tell whet= her it=E2=80=99s stale. Thoughts? Ludo=E2=80=99.
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at 50384) by debbugs.gnu.org; 4 Sep 2021 21:47:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 04 17:47:50 2021 Received: from localhost ([127.0.0.1]:48817 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mMdVu-0004s0-9W for submit <at> debbugs.gnu.org; Sat, 04 Sep 2021 17:47:50 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48652) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1mMdVs-0004rn-05 for 50384 <at> debbugs.gnu.org; Sat, 04 Sep 2021 17:47:48 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46162) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mMdVl-00083Z-NY; Sat, 04 Sep 2021 17:47:41 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=48866 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <ludo@HIDDEN>) id 1mMdVl-0001xp-Eo; Sat, 04 Sep 2021 17:47:41 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN> To: Maxime Devos <maximedevos@HIDDEN> Subject: Re: bug#50384: [PATCH] Optimise search-patch (reducing I/O) References: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> Date: Sat, 04 Sep 2021 23:47:39 +0200 In-Reply-To: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> (Maxime Devos's message of "Sat, 04 Sep 2021 23:17:10 +0200") Message-ID: <877dfwypvo.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 50384 Cc: 50384 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) Hi! Some initial comments=E2=80=A6 Maxime Devos <maximedevos@HIDDEN> skribis: > +++ b/guix/gexp.scm > @@ -531,13 +531,37 @@ appears." > (define-gexp-compiler (local-file-compiler (file <local-file>) system ta= rget) > ;; "Compile" FILE by adding it to the store. > (match file > - (($ <local-file> file (=3D force absolute) name sha256 recursive? se= lect?) > - ;; Canonicalize FILE so that if it's a symlink, it is resolved. Fa= iling > - ;; to do that, when RECURSIVE? is #t, we could end up creating a da= ngling > - ;; symlink in the store, and when RECURSIVE? is #f 'add-to-store' w= ould > - ;; just throw an error, both of which are inconvenient. > - (interned-file absolute name > - #:recursive? recursive? #:select? select?)))) > + ;; Delay computing the absolute file name until 'intern', as this > + ;; might be a relatively expensive computation (e.g. if search-patch > + ;; is used), especially on a spinning disk. > + (($ <local-file> file absolute-promise name sha256 recursive? select= ?) > + (let () > + (define (intern) > + ;; Canonicalize FILE so that if it's a symlink, it is resolved. > + ;; Failing to do that, when RECURSIVE? is #t, we could end up c= reating > + ;; a dangling symlink in the store, and when RECURSIVE? is #f > + ;; 'add-to-store' would just throw an error, both of which are > + ;; inconvenient. > + (interned-file (force absolute-promise) name > + #:recursive? recursive? #:select? select?)) > + (if sha256 > + (let ((path (fixed-output-path name sha256 #:recursive? recur= sive?))) > + ;; If the hash is known in advance and the store already ha= s the > + ;; item, there is no need to intern the file. > + (if (file-exists? path) > + (mbegin %store-monad > + ;; Tell the GC that PATH will be used, such that it w= on't > + ;; be deleted. > + ((store-lift add-temp-root) path) > + ;; The GC could have deleted the item before add-temp= -root > + ;; completed, so check again if PATH exists. > + (if (file-exists? path) > + (return path) > + ;; If it has been removed, fall-back interning. > + (intern))) > + ;; If PATH does not yet exist, fall back to interning. > + (intern))) > + (intern)))))) =E2=80=98file-exists?=E2=80=99 won=E2=80=99t work when talking to a remote = store (e.g., GUIX_DAEMON_SOCKET=3Dssh://=E2=80=A6). =E2=80=98add-temp-root=E2=80=99 doesn=E2=80=99t throw if the given store it= em does not exist. So it could be written like this: (if sha256 (mbegin %store-monad (add-temp-root* item) (if (valid-path?* item) (return item) (intern))) (intern)) But then, we=E2=80=99d add one RPC for every =E2=80=98add-to-store=E2=80=99= RPC corresponding to a patch (you can set =E2=80=9CGUIX_PROFILING=3Drpc=E2=80=9D to see the numb= ers), which is not great. Ludo=E2=80=99.
guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.Received: (at submit) by debbugs.gnu.org; 4 Sep 2021 21:17:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 04 17:17:41 2021 Received: from localhost ([127.0.0.1]:48799 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1mMd2d-0004A7-33 for submit <at> debbugs.gnu.org; Sat, 04 Sep 2021 17:17:41 -0400 Received: from lists.gnu.org ([209.51.188.17]:58188) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <maximedevos@HIDDEN>) id 1mMd2a-00049z-E6 for submit <at> debbugs.gnu.org; Sat, 04 Sep 2021 17:17:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <maximedevos@HIDDEN>) id 1mMd2Z-00083q-Pf for guix-patches@HIDDEN; Sat, 04 Sep 2021 17:17:31 -0400 Received: from michel.telenet-ops.be ([2a02:1800:110:4::f00:18]:54422) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <maximedevos@HIDDEN>) id 1mMd2V-00054j-Ch for guix-patches@HIDDEN; Sat, 04 Sep 2021 17:17:31 -0400 Received: from butterfly.local ([188.189.242.219]) by michel.telenet-ops.be with bizsmtp id pxHK250094kjswU06xHLsQ; Sat, 04 Sep 2021 23:17:21 +0200 Message-ID: <8900fa8c8eef7f72fc97adc2408be26c88de7803.camel@HIDDEN> Subject: [PATCH] Optimise search-patch (reducing I/O) From: Maxime Devos <maximedevos@HIDDEN> To: guix-patches@HIDDEN Date: Sat, 04 Sep 2021 23:17:10 +0200 Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-ZXdwdSIZm75bAbTlaqKD" User-Agent: Evolution 3.34.2 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1630790241; bh=4FgmsEgZZw7uozIaHnfeIECoft4mn5joQfLTPGH+bqI=; h=Subject:From:To:Date; b=sS2gVWDMRuSWHb3TjAuaSmIbDSyMe9hX05oXgF0WwGuk7QdIoY1MXJ9MxtH5Lqa2R tJihf7VcDR3kSk6YG2Ejsst8MN0jHkJQWEVb66ClYBtmAdqHE//OPKbmXSgpTYs3Vq hw0TnCA/cGIOnXK+5btKXGmTVNeNlSq/XTBuPR7DWGTnFzNqaJ3Rk243eu1Jti7YGu 0o3aMhVdC9Zcz8DCdKQEDSjCliDs7mCTLqWsfqe0TqUByM/Va87jPkoHye95E4O7Ed nYl5VMMw+bg4ENdy4mNaUsx2iY/WbPc6fK4wR6hUnfIBhwiz+PslUR4ttvGeDPQpK/ FflKy32xl3xRw== Received-SPF: pass client-ip=2a02:1800:110:4::f00:18; envelope-from=maximedevos@HIDDEN; helo=michel.telenet-ops.be X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.0 (/) --=-ZXdwdSIZm75bAbTlaqKD Content-Type: multipart/mixed; boundary="=-Ed3xbcWsGUAuseKcAI15" --=-Ed3xbcWsGUAuseKcAI15 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi guix! The attached patch series optimises the G-exp compiler for local-file, by avoiding interning the file if it's already in the store, but only if the hash is known in advance. To take advantage of this, 'search-patch' has been modified to compute the hash at expansion time. The cost of this optimisation is a little additional complexity, and computing derivations theoretically becomes a little more expensive when the patch isn't already in the store (1 call to 'stat' per non-yet-interned patch). If you want to test this patch series for performance, do _not_ run ./pre-inst-env guix, instead use "guix pull --url=3D$PWD --branch=3D...", because the guix from the checkout performs more 'lstat' calls than an =E2=80=98user=E2=80=99 guix from "guix pull". I'll show the patch series decreases the number of syscalls below, using the 'strace' command. Use 'strace -c' to gather some statistics: # Run it twice for a hot cache. Ignore the output of the first run. $ strace -c ./the-optimised-guix/bin/guix build -d pigx --no-grafts $ strace -c ./the-optimised-guix/bin/guix build -d pigx --no-grafts # $ strace -c guix build -d pigx --no-grafts $ strace -c guix build -d pigx --no-grafts I've selected some syscalls from the output that seemed relevant and formatted the call count in a table optimised unoptimised result of optimisation: stat 3865 3712 + 4.1% lstat 119 321 -62.9% fstat 59 59 unchanged read 17303 17688 - 2.2% write 6741 6767 - 1.9% openat 885 1076 -17.8% readlink 14 16 -12.5% ------- total 28886 32539 -11.2% Almost all syscalls are now called less (-11.2% in total), which is good. The exception is 'stat'. Because 'search-path' is now being called less often (only when the patch isn't in the store), the number of 'stat' calls decreases. However, 'local-file-compiler' now calls 'stat' more (one or two times per patch). I think it's worth it though, because: (1) the second 'stat' is on the same file as the first 'stat', so presumably the kernel has cached the result, so no need to wait for I/O to complete the second time (there's a context switch though). So ignoring the context switch cost, there are only =E2=80=98effectively=E2=80=99 +2.1% extra calls to 's= tat'. (2) the total decrease of -11.2% syscalls Now, what about the actual "time to derivation"? First, let's time "guix build -d pigx --no-grafts" to get some raw numbers on guix before the optimisation: time guix build -d pigx --no-grafts # repeated four times, first output is discarded # to eliminate hot/cold cache differences /gnu/store/03vmq94ckxfx6c4rc9zh745yy63n5i5m-pigx-0.0.3.drv real 0m13,470s user 0m13,526s sys 0m0,573s /gnu/store/03vmq94ckxfx6c4rc9zh745yy63n5i5m-pigx-0.0.3.drv real 0m13,582s user 0m13,639s sys 0m0,568s /gnu/store/03vmq94ckxfx6c4rc9zh745yy63n5i5m-pigx-0.0.3.drv real 0m13,834s user 0m13,901s sys 0m0,556s Average numbers: real 0m13,629s user 0m13,689s sys 0m0,566s After the optimisation: time ./the-optimised-guix/bin/guix build -d pigx --no-grafts /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv real 0m14,150s user 0m13,979s sys 0m0,685s /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv real 0m13,781s user 0m13,697s sys 0m0,580s /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv real 0m14,247s user 0m14,160s sys 0m0,548s The numbers are higher somehow after the optimisations? Even the 'sys' time is higher, even though there are less syscalls? I re-ran the time commands, and got a decrease in 'real' time this time. /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv real 0m13,304s user 0m13,146s sys 0m0,609s /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv real 0m12,132s user 0m11,940s sys 0m0,589s /gnu/store/fq6x8d2vcm6sbjkimg7g8kcgb4c5xv1b-pigx-0.0.3.drv real 0m13,716s user 0m13,723s sys 0m0,529s The output of "time ..." seems inconclusive (can possibly be attributed to things like CPU frequency changing?), but the decrease in syscall counts seems quite nice to me. Feel free to run your own tests! Greetings, Maxime. --=-Ed3xbcWsGUAuseKcAI15 Content-Disposition: inline; filename="0001-build-self-Implement-basic-hash-algorithm.patch" Content-Type: text/x-patch; name="0001-build-self-Implement-basic-hash-algorithm.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhOGUyNGE1MjU4YWEwNTY4OWJjYWZhNzBhZjA3MWRhNTI5NmY2M2E0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAyMDowOTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS82 XSBidWlsZC1zZWxmOiBJbXBsZW1lbnQgYmFzaWMgJ2hhc2gtYWxnb3JpdGhtJy4KTUlNRS1WZXJz aW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoZSBtb2R1bGUgKGd1aXggaGFzaCkgdXNlZCBmcm9t ICdzZWFyY2gtcGF0Y2gnIGluIGEgZnV0dXJlCnBhdGNoIG5lZWRzIGl0IHRvIGJlIHByb3Blcmx5 IGRlZmluZWQgd2hlbiAoZ3VpeCBoYXNoKSBpcyBiZWluZwpjb21waWxlZC4gICdzZWFyY2gtcGF0 Y2gnIGlzIHVzZWQgd2hlbiB0aGUgZGVyaXZhdGlvbiBvZiBHdWl4IGlzCmJlaW5nIGNvbXB1dGVk LCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgdGhlIOKAmHdyb25nIHR5cGUgdG8KYXBwbHk6 ICM8c3ludGF4LXRyYW5zZm9ybWVyIGhhc2gtYWxnb3JpdGhtPuKAmSBlcnJvci4KCiogYnVpbGQt YXV4L2J1aWxkLXNlbGYuc2NtCiAgKGJ1aWxkLXByb2dyYW0pW2Zha2UtZ2NyeXB0LWhhc2hdOiBE ZWZpbmUgaGFzaC1hbGdvcml0aG0gZm9yIHNoYTEKICBhbmQgc2hhMjU2LgotLS0KIGJ1aWxkLWF1 eC9idWlsZC1zZWxmLnNjbSB8IDEzICsrKysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMSBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2J1aWxkLWF1eC9idWls ZC1zZWxmLnNjbSBiL2J1aWxkLWF1eC9idWlsZC1zZWxmLnNjbQppbmRleCAzYTJkMTNjYzA5Li4y YzEzZDlkNTMwIDEwMDY0NAotLS0gYS9idWlsZC1hdXgvYnVpbGQtc2VsZi5zY20KKysrIGIvYnVp bGQtYXV4L2J1aWxkLXNlbGYuc2NtCkBAIC0yNTksOCArMjU5LDE3IEBAIGludGVyZmFjZSAoRkZJ KSBvZiBHdWlsZS4iKQogICAoZGVmaW5lIGZha2UtZ2NyeXB0LWhhc2gKICAgICA7OyBGYWtlIChn Y3J5cHQgaGFzaCkgbW9kdWxlOyBzZWUgYmVsb3cuCiAgICAgKHNjaGVtZS1maWxlICJoYXNoLnNj bSIKLSAgICAgICAgICAgICAgICAgI34oZGVmaW5lLW1vZHVsZSAoZ2NyeXB0IGhhc2gpCi0gICAg ICAgICAgICAgICAgICAgICAjOmV4cG9ydCAoc2hhMSBzaGEyNTYpKSkpCisgICAgICAgICAgICAg ICAgICN+KGJlZ2luCisgICAgICAgICAgICAgICAgICAgICAoZGVmaW5lLW1vZHVsZSAoZ2NyeXB0 IGhhc2gpCisgICAgICAgICAgICAgICAgICAgICAgICM6ZXhwb3J0IChzaGExIHNoYTI1NiBoYXNo LWFsZ29yaXRobSkpCisgICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCDigJhXcm9uZyB0eXBl IHRvIGFwcGx5OgorICAgICAgICAgICAgICAgICAgICAgOzsgIzxzeW50YXgtdHJhbnNmb3JtZXIg aGFzaC1hbGdvcml0aG0+4oCZIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgIChkZWZpbmUg c2hhMSkKKyAgICAgICAgICAgICAgICAgICAgIChkZWZpbmUgc2hhMjU2KQorICAgICAgICAgICAg ICAgICAgICAgKGRlZmluZS1zeW50YXggaGFzaC1hbGdvcml0aG0KKyAgICAgICAgICAgICAgICAg ICAgICAgKHN5bnRheC1ydWxlcyAoc2hhMSBzaGEyNTYpCisgICAgICAgICAgICAgICAgICAgICAg ICAgKChfIHNoYTEpIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKChfIHNoYTI1NikgOCkp KSkpKQogCiAgIChkZWZpbmUgZmFrZS1naXQKICAgICAoc2NoZW1lLWZpbGUgImdpdC5zY20iICN+ KGRlZmluZS1tb2R1bGUgKGdpdCkpKSkKCmJhc2UtY29tbWl0OiBiNGQxMzJmOThlMDNmYWU1NTlk YjgzMmU4ODg5N2YxZTE2NmM0ZDQ3CnByZXJlcXVpc2l0ZS1wYXRjaC1pZDogOTFhMjZiYTE5Mzcy MTEyYTExYTBlZWEyYjA2NmQyZjYzNjQxZGViMQpwcmVyZXF1aXNpdGUtcGF0Y2gtaWQ6IGE1MzVj MWFlMmExZmJmNzVkN2FjOWEzMTE4ZWQyM2JkNGZhMDNlY2MKcHJlcmVxdWlzaXRlLXBhdGNoLWlk OiAyOWViYTBjZWRlMWMxZTcxNTNhN2M3YjlhNThiMzNiNjdmNjkzYTEzCnByZXJlcXVpc2l0ZS1w YXRjaC1pZDogOGRkMjIzNGZhMGY4NjcwODFjNmNmNjE0YzdhMjJiMDAwMjI3MDJiNApwcmVyZXF1 aXNpdGUtcGF0Y2gtaWQ6IDJmZTBlNWM2N2EzN2VmM2YwZTIyODEzYzk4MDhlYWVlYzgzYmI1NTIK cHJlcmVxdWlzaXRlLXBhdGNoLWlkOiA5MTUxNDU2OGYxZWY0ODcwYWQ3ZWQ3YjNmNjg1ZjA0NzAz ZjljMDkwCi0tIAoyLjMzLjAKCg== --=-Ed3xbcWsGUAuseKcAI15 Content-Disposition: inline; filename="0002-guix-hash-Extract-file-hashing-procedures.patch" Content-Type: text/x-patch; name="0002-guix-hash-Extract-file-hashing-procedures.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5MTlhMDM3NTc4MWZmMGZhYjllNzRkYmFmYzliMWY4OTg5ODA4YTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYXJhaCBNb3JnZW5zZW4gPGlza2FyaWFuQG1nc24uZGV2PgpE YXRlOiBTdW4sIDE1IEF1ZyAyMDIxIDE2OjI1OjI0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyLzZd IGd1aXggaGFzaDogRXh0cmFjdCBmaWxlIGhhc2hpbmcgcHJvY2VkdXJlcy4KCiogZ3VpeC9zY3Jp cHRzL2hhc2guc2NtIChndWl4LWhhc2gpW3Zjcy1maWxlPywgZmlsZS1oYXNoXTogRXh0cmFjdCBs b2dpYwp0by4uLgoqIGd1aXgvaGFzaC5zY206IC4uLmhlcmUuIE5ldyBmaWxlLgotLS0KIGd1aXgv aGFzaC5zY20gICAgICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGd1aXgvc2NyaXB0cy9oYXNoLnNjbSB8IDI5ICsrKysrKy0tLS0tLS0tLS0tLS0t LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBndWl4L2hhc2guc2NtCgpkaWZmIC0tZ2l0IGEvZ3VpeC9oYXNo LnNjbSBiL2d1aXgvaGFzaC5zY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uOGMyYWI4MTg3ZgotLS0gL2Rldi9udWxsCisrKyBiL2d1aXgvaGFzaC5zY20KQEAgLTAsMCAr MSw1MSBAQAorOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBm b3IgR05VCis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgU2FyYWggTW9yZ2Vuc2VuIDxpc2thcmlhbkBt Z3NuLmRldj4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7 OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7 Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ3VpeCBoYXNo KQorICAjOnVzZS1tb2R1bGUgKGdjcnlwdCBoYXNoKQorICAjOnVzZS1tb2R1bGUgKGd1aXggc2Vy aWFsaXphdGlvbikKKyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMSkKKyAgIzp1c2UtbW9kdWxl IChzcmZpIHNyZmktMTEpCisgICM6ZXhwb3J0ICh2Y3MtZmlsZT8KKyAgICAgICAgICAgIGZpbGUt aGFzaCopKQorCisoZGVmaW5lICh2Y3MtZmlsZT8gZmlsZSBzdGF0KQorICAiUmV0dXJucyB0cnVl IGlmIEZJTEUgaXMgYSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGZpbGUuIgorICAoY2FzZSAoc3Rh dDp0eXBlIHN0YXQpCisgICAgKChkaXJlY3RvcnkpCisgICAgIChtZW1iZXIgKGJhc2VuYW1lIGZp bGUpICcoIi5ienIiICIuZ2l0IiAiLmhnIiAiLnN2biIgIkNWUyIpKSkKKyAgICAoKHJlZ3VsYXIp CisgICAgIDs7IEdpdCBzdWItbW9kdWxlcyBoYXZlIGEgJy5naXQnIGZpbGUgdGhhdCBpcyBhIHJl Z3VsYXIgdGV4dCBmaWxlLgorICAgICAoc3RyaW5nPT8gKGJhc2VuYW1lIGZpbGUpICIuZ2l0Iikp CisgICAgKGVsc2UKKyAgICAgI2YpKSkKKworKGRlZmluZSogKGZpbGUtaGFzaCogZmlsZSAjOmtl eQorICAgICAgICAgICAgICAgICAgICAgKGFsZ29yaXRobSAoaGFzaC1hbGdvcml0aG0gc2hhMjU2 KSkKKyAgICAgICAgICAgICAgICAgICAgIChyZWN1cnNpdmU/ICN0KQorICAgICAgICAgICAgICAg ICAgICAgKHNlbGVjdD8gKG5lZ2F0ZSB2Y3MtZmlsZT8pKSkKKyAgIkNvbXB1dGUgdGhlIGhhc2gg b2YgRklMRSB3aXRoIEFMR09SSVRITS4gIElmIFJFQ1VSU0lWRT8gaXMgdHJ1ZSwgcmVjdXJzZQor aW50byBzdWJkaXJlY3RvcmllcyBvZiBGSUxFLCBjb21wdXRpbmcgdGhlIGNvbWJpbmVkIGhhc2gg b2YgYWxsIGZpbGVzIGZvcgord2hpY2ggKFNFTEVDVD8gIEZJTEUgU1RBVCkgcmV0dXJucyB0cnVl LiIKKyAgKGlmIHJlY3Vyc2l2ZT8KKyAgICAgIChsZXQtdmFsdWVzICgoKHBvcnQgZ2V0LWhhc2gp CisgICAgICAgICAgICAgICAgICAgIChvcGVuLWhhc2gtcG9ydCBhbGdvcml0aG0pKSkKKyAgICAg ICAgKHdyaXRlLWZpbGUgZmlsZSBwb3J0ICM6c2VsZWN0PyBzZWxlY3Q/KQorICAgICAgICAoZm9y Y2Utb3V0cHV0IHBvcnQpCisgICAgICAgIChnZXQtaGFzaCkpCisgICAgICAoZmlsZS1oYXNoIGFs Z29yaXRobSBmaWxlKSkpCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvaGFzaC5zY20gYi9ndWl4 L3NjcmlwdHMvaGFzaC5zY20KaW5kZXggYjg2MjIzNzNjYy4uMzUzY2EzMGMyYyAxMDA2NDQKLS0t IGEvZ3VpeC9zY3JpcHRzL2hhc2guc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9oYXNoLnNjbQpAQCAt Myw2ICszLDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAxMyBOaWtpdGEgS2FyZXRuaWtvdiA8bmlr aXRhQGthcmV0bmlrb3Yub3JnPgogOzs7IENvcHlyaWdodCDCqSAyMDE2IEphbiBOaWV1d2VuaHVp emVuIDxqYW5uZWtlQGdudS5vcmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTggVGltIEdlc3RodWl6 ZW4gPHRpbS5nZXN0aHVpemVuQHlhaG9vLmRlPgorOzs7IENvcHlyaWdodCDCqSAyMDIxIFNhcmFo IE1vcmdlbnNlbiA8aXNrYXJpYW5AbWdzbi5kZXY+CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjMsNiArMjQsNyBAQAogICAjOnVzZS1tb2R1bGUgKGdj cnlwdCBoYXNoKQogICAjOnVzZS1tb2R1bGUgKGd1aXggc2VyaWFsaXphdGlvbikKICAgIzp1c2Ut bW9kdWxlIChndWl4IHVpKQorICAjOnVzZS1tb2R1bGUgKGd1aXggaGFzaCkKICAgIzp1c2UtbW9k dWxlIChndWl4IHNjcmlwdHMpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBiYXNlMTYpCiAgICM6dXNl LW1vZHVsZSAoZ3VpeCBiYXNlMzIpCkBAIC0xMjUsMTYgKzEyNyw2IEBAIGFuZCAnYmFzZTE2JyAo J2hleCcgYW5kICdoZXhhZGVjaW1hbCcgY2FuIGJlIHVzZWQgYXMgd2VsbCkuXG4iKSkKICAgICAo cGFyc2UtY29tbWFuZC1saW5lIGFyZ3MgJW9wdGlvbnMgKGxpc3QgJWRlZmF1bHQtb3B0aW9ucykK ICAgICAgICAgICAgICAgICAgICAgICAgICM6YnVpbGQtb3B0aW9ucz8gI2YpKQogCi0gIChkZWZp bmUgKHZjcy1maWxlPyBmaWxlIHN0YXQpCi0gICAgKGNhc2UgKHN0YXQ6dHlwZSBzdGF0KQotICAg ICAgKChkaXJlY3RvcnkpCi0gICAgICAgKG1lbWJlciAoYmFzZW5hbWUgZmlsZSkgJygiLmJ6ciIg Ii5naXQiICIuaGciICIuc3ZuIiAiQ1ZTIikpKQotICAgICAgKChyZWd1bGFyKQotICAgICAgIDs7 IEdpdCBzdWItbW9kdWxlcyBoYXZlIGEgJy5naXQnIGZpbGUgdGhhdCBpcyBhIHJlZ3VsYXIgdGV4 dCBmaWxlLgotICAgICAgIChzdHJpbmc9PyAoYmFzZW5hbWUgZmlsZSkgIi5naXQiKSkKLSAgICAg IChlbHNlCi0gICAgICAgI2YpKSkKLQogICAobGV0KiAoKG9wdHMgKHBhcnNlLW9wdGlvbnMpKQog ICAgICAgICAgKGFyZ3MgKGZpbHRlci1tYXAgKG1hdGNoLWxhbWJkYQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoJ2FyZ3VtZW50IC4gdmFsdWUpCkBAIC0xNTAsMTggKzE0MiwxMSBAQCBh bmQgJ2Jhc2UxNicgKCdoZXgnIGFuZCAnaGV4YWRlY2ltYWwnIGNhbiBiZSB1c2VkIGFzIHdlbGwp LlxuIikpCiAgICAgICA7OyBDb21wdXRlIHRoZSBoYXNoIG9mIEZJTEUuCiAgICAgICA7OyBDYXRj aCBhbmQgZ3JhY2VmdWxseSByZXBvcnQgcG9zc2libGUgJyZuYXItZXJyb3InIGNvbmRpdGlvbnMu CiAgICAgICAod2l0aC1lcnJvci1oYW5kbGluZwotICAgICAgICAoaWYgKGFzc29jLXJlZiBvcHRz ICdyZWN1cnNpdmU/KQotICAgICAgICAgICAgKGxldC12YWx1ZXMgKCgocG9ydCBnZXQtaGFzaCkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW4taGFzaC1wb3J0IChhc3NvYy1yZWYgb3B0 cyAnaGFzaC1hbGdvcml0aG0pKSkpCi0gICAgICAgICAgICAgICh3cml0ZS1maWxlIGZpbGUgcG9y dCAjOnNlbGVjdD8gc2VsZWN0PykKLSAgICAgICAgICAgICAgKGZvcmNlLW91dHB1dCBwb3J0KQot ICAgICAgICAgICAgICAoZ2V0LWhhc2gpKQotICAgICAgICAgICAgKG1hdGNoIGZpbGUKLSAgICAg ICAgICAgICAgKCItIiAocG9ydC1oYXNoIChhc3NvYy1yZWYgb3B0cyAnaGFzaC1hbGdvcml0aG0p Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1pbnB1dC1wb3J0KSkpCi0g ICAgICAgICAgICAgIChfICAgKGNhbGwtd2l0aC1pbnB1dC1maWxlIGZpbGUKLSAgICAgICAgICAg ICAgICAgICAgIChjdXRlIHBvcnQtaGFzaCAoYXNzb2MtcmVmIG9wdHMgJ2hhc2gtYWxnb3JpdGht KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgPD4pKSkpKSkpCisgICAgICAgIChtYXRjaCBm aWxlCisgICAgICAgICAgKCItIiAocG9ydC1oYXNoIChhc3NvYy1yZWYgb3B0cyAnaGFzaC1hbGdv cml0aG0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWlucHV0LXBvcnQpKSkK KyAgICAgICAgICAoXyAgIChmaWxlLWhhc2gqICM6YWxnb3JpdGhtIChhc3NvYy1yZWYgb3B0cyAn aGFzaC1hbGdvcml0aG0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjOnJlY3Vyc2l2ZT8g KGFzc29jLXJlZiBvcHRzICdyZWN1cnNpdmU/KSkpKSkpCiAKICAgICAobWF0Y2ggYXJncwogICAg ICAgKChmaWxlKQotLSAKMi4zMy4wCgo= --=-Ed3xbcWsGUAuseKcAI15 Content-Disposition: inline; filename*0=0003-gexp-Allow-computing-the-hash-of-the-local-file-in-a.pat; filename*1=ch Content-Type: text/x-patch; name="0003-gexp-Allow-computing-the-hash-of-the-local-file-in-a.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBjYzU0ZTFjNTAyMTExOWJmYWJhMDc4NDllODNlYTMxZjcwOTk5NzBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNTozNTo1MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMy82 XSBnZXhwOiBBbGxvdyBjb21wdXRpbmcgdGhlIGhhc2ggb2YgdGhlIGxvY2FsIGZpbGUgaW4KIGFk dmFuY2UuCgpUaGUgbmV3IGZpZWxkIGlzIGN1cnJlbnRseSB1bnVzZWQuICBUaGUgZm9sbG93aW5n IHBhdGNoZXMgd2lsbApwb3B1bGF0ZSBhbmQgdXNlIHRoZSBmaWVsZCB0byByZWR1Y2UgdGhlIHRp bWUtdG8tZGVyaXZhdGlvbgp3aGVuIHRoZSBmaWxlIGlzIGFscmVhZHkgaW50ZXJuZWQgaW4gdGhl IHN0b3JlLgoKKiBndWl4L2dleHAuc2NtCiAgKDxsb2NhbC1maWxlPik6IEFkZCBzaGEyNTYgZmll bGQuCiAgKCVsb2NhbC1maWxlKTogQWRkIHNoYTI1NiBhcmd1bWVudCBmb3IgcG9wdWxhdGluZyB0 aGUgZmllbGQuCiAgKGxvY2FsLWZpbGUtY29tcGlsZXIpOiBBZGp1c3QgJ21hdGNoJyBleHByZXNz aW9uLgotLS0KIGd1aXgvZ2V4cC5zY20gfCAxMiArKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3VpeC9nZXhw LnNjbSBiL2d1aXgvZ2V4cC5zY20KaW5kZXggZjNkMjc4YjNlNi4uYTYzMzk4NDY4OCAxMDA2NDQK LS0tIGEvZ3VpeC9nZXhwLnNjbQorKysgYi9ndWl4L2dleHAuc2NtCkBAIC00MTksMTMgKzQxOSwx NiBAQCBIZXJlIFRBUkdFVCBpcyBib3VuZCB0byB0aGUgY3Jvc3MtY29tcGlsYXRpb24gdHJpcGxl dCBvciAjZi4iCiA7OyBBIGxvY2FsIGZpbGUgbmFtZS4gIEZJTEUgaXMgdGhlIGZpbGUgbmFtZSB0 aGUgdXNlciBlbnRlcmVkLCB3aGljaCBjYW4gYmUgYQogOzsgcmVsYXRpdmUgZmlsZSBuYW1lLCBh bmQgQUJTT0xVVEUgaXMgYSBwcm9taXNlIHRoYXQgY29tcHV0ZXMgaXRzIGNhbm9uaWNhbAogOzsg YWJzb2x1dGUgZmlsZSBuYW1lLiAgV2Uga2VlcCBpdCBpbiBhIHByb21pc2UgdG8gY29tcHV0ZSBp dCBsYXppbHkgYW5kIGF2b2lkCi07OyByZXBlYXRlZCAnc3RhdCcgY2FsbHMuCis7OyByZXBlYXRl ZCAnc3RhdCcgY2FsbHMuICBBbGxvdyBjb21wdXRpbmcgdGhlIGhhc2ggb2YgdGhlIGZpbGUgaW4g YWR2YW5jZSwKKzs7IHRvIGF2b2lkIGhhdmluZyB0byBzZW5kIHRoZSBmaWxlIHRvIHRoZSBkYWVt b24gd2hlbiBpdCBpcyBhbHJlYWR5IGludGVybmVkCis7OyBpbiB0aGUgc3RvcmUuCiAoZGVmaW5l LXJlY29yZC10eXBlIDxsb2NhbC1maWxlPgotICAoJSVsb2NhbC1maWxlIGZpbGUgYWJzb2x1dGUg bmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pCisgICglJWxvY2FsLWZpbGUgZmlsZSBhYnNvbHV0ZSBu YW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8pCiAgIGxvY2FsLWZpbGU/CiAgIChmaWxlICAg ICAgIGxvY2FsLWZpbGUtZmlsZSkgICAgICAgICAgICAgICAgICAgIDtzdHJpbmcKICAgKGFic29s dXRlICAgJWxvY2FsLWZpbGUtYWJzb2x1dGUtZmlsZS1uYW1lKSAgICAgO3Byb21pc2Ugc3RyaW5n CiAgIChuYW1lICAgICAgIGxvY2FsLWZpbGUtbmFtZSkgICAgICAgICAgICAgICAgICAgIDtzdHJp bmcKKyAgKHNoYTI1NiAgICAgbG9jYWwtZmlsZS1zaGEyNTYpICAgICAgICAgICAgICAgICAgO3No YTI1NiBieXRldmVjdG9yIHwgI2YKICAgKHJlY3Vyc2l2ZT8gbG9jYWwtZmlsZS1yZWN1cnNpdmU/ KSAgICAgICAgICAgICAgO0Jvb2xlYW4KICAgKHNlbGVjdD8gICAgbG9jYWwtZmlsZS1zZWxlY3Q/ KSkgICAgICAgICAgICAgICAgO3N0cmluZyBzdGF0IC0+IEJvb2xlYW4KIApAQCAtNDM0LDYgKzQz Nyw3IEBAIEhlcmUgVEFSR0VUIGlzIGJvdW5kIHRvIHRoZSBjcm9zcy1jb21waWxhdGlvbiB0cmlw bGV0IG9yICNmLiIKIChkZWZpbmUqICglbG9jYWwtZmlsZSBmaWxlIHByb21pc2UgIzpvcHRpb25h bCAobmFtZSAoYmFzZW5hbWUgZmlsZSkpCiAgICAgICAgICAgICAgICAgICAgICAgIzprZXkKICAg ICAgICAgICAgICAgICAgICAgICAobGl0ZXJhbD8gI3QpIGxvY2F0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgc2hhMjU2CiAgICAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlPyAoc2VsZWN0 PyB0cnVlKSkKICAgOzsgVGhpcyBpbnRlcm1lZGlhdGUgcHJvY2VkdXJlIGlzIHBhcnQgb2Ygb3Vy IEFCSSwgYnV0IHRoZSB1bmRlcmx5aW5nCiAgIDs7ICUlTE9DQUwtRklMRSBpcyBub3QuCkBAIC00 NDEsNyArNDQ1LDcgQEAgSGVyZSBUQVJHRVQgaXMgYm91bmQgdG8gdGhlIGNyb3NzLWNvbXBpbGF0 aW9uIHRyaXBsZXQgb3IgI2YuIgogICAgICh3YXJuaW5nIChhbmQ9PiBsb2NhdGlvbiBzb3VyY2Ut cHJvcGVydGllcy0+bG9jYXRpb24pCiAgICAgICAgICAgICAgKEdfICJyZXNvbHZpbmcgJ35hJyBy ZWxhdGl2ZSB0byBjdXJyZW50IGRpcmVjdG9yeX4lIikKICAgICAgICAgICAgICBmaWxlKSkKLSAg KCUlbG9jYWwtZmlsZSBmaWxlIHByb21pc2UgbmFtZSByZWN1cnNpdmU/IHNlbGVjdD8pKQorICAo JSVsb2NhbC1maWxlIGZpbGUgcHJvbWlzZSBuYW1lIHNoYTI1NiByZWN1cnNpdmU/IHNlbGVjdD8p KQogCiAoZGVmaW5lIChhYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSBkaXJlY3RvcnkpCiAgICJSZXR1 cm4gdGhlIGNhbm9uaWNhbCBhYnNvbHV0ZSBmaWxlIG5hbWUgZm9yIEZJTEUsIHdoaWNoIGxpdmVz IGluIHRoZQpAQCAtNTE3LDcgKzUyMSw3IEBAIGFwcGVhcnMuIgogKGRlZmluZS1nZXhwLWNvbXBp bGVyIChsb2NhbC1maWxlLWNvbXBpbGVyIChmaWxlIDxsb2NhbC1maWxlPikgc3lzdGVtIHRhcmdl dCkKICAgOzsgIkNvbXBpbGUiIEZJTEUgYnkgYWRkaW5nIGl0IHRvIHRoZSBzdG9yZS4KICAgKG1h dGNoIGZpbGUKLSAgICAoKCQgPGxvY2FsLWZpbGU+IGZpbGUgKD0gZm9yY2UgYWJzb2x1dGUpIG5h bWUgcmVjdXJzaXZlPyBzZWxlY3Q/KQorICAgICgoJCA8bG9jYWwtZmlsZT4gZmlsZSAoPSBmb3Jj ZSBhYnNvbHV0ZSkgbmFtZSBzaGEyNTYgcmVjdXJzaXZlPyBzZWxlY3Q/KQogICAgICA7OyBDYW5v bmljYWxpemUgRklMRSBzbyB0aGF0IGlmIGl0J3MgYSBzeW1saW5rLCBpdCBpcyByZXNvbHZlZC4g IEZhaWxpbmcKICAgICAgOzsgdG8gZG8gdGhhdCwgd2hlbiBSRUNVUlNJVkU/IGlzICN0LCB3ZSBj b3VsZCBlbmQgdXAgY3JlYXRpbmcgYSBkYW5nbGluZwogICAgICA7OyBzeW1saW5rIGluIHRoZSBz dG9yZSwgYW5kIHdoZW4gUkVDVVJTSVZFPyBpcyAjZiAnYWRkLXRvLXN0b3JlJyB3b3VsZAotLSAK Mi4zMy4wCgo= --=-Ed3xbcWsGUAuseKcAI15 Content-Disposition: inline; filename="0004-gexp-Allow-overriding-the-absolute-file-name.patch" Content-Type: text/x-patch; name="0004-gexp-Allow-overriding-the-absolute-file-name.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxOTM3ZWRkOTA2YjgxN2RkMTU2NDhmYTY4MmQ1NWQzYjNmNzc5ZTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNjoyNToyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggNC82 XSBnZXhwOiBBbGxvdyBvdmVycmlkaW5nIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUuCgpUaGlzIHdp bGwgYmUgdXNlZCBieSB0aGUgbmV4dCBwYXRjaCB0byBpbXBsZW1lbnQgc2VhcmNoLXBhdGNoIGlu CnRlcm1zIG9mIGxvY2FsLWZpbGUuCgoqIGd1aXgvZ2V4cC5zY20KICAocHJlY2Fub25pY2FsaXpl ZC1maWxlLW5hbWUpOiBOZXcgbWFjcm8uCiAgKGxvY2FsLWZpbGUpOiBVc2UgdGhlIGFic29sdXRl IGZpbGUgbmFtZSBmcm9tIHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lCiAgd2hlbiBhdmFpbGFi bGUuCi0tLQogZ3VpeC9nZXhwLnNjbSB8IDEyICsrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQs IDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9ndWl4L2dleHAu c2NtIGIvZ3VpeC9nZXhwLnNjbQppbmRleCBhNjMzOTg0Njg4Li5jNjllNGFhMjk5IDEwMDY0NAot LS0gYS9ndWl4L2dleHAuc2NtCisrKyBiL2d1aXgvZ2V4cC5zY20KQEAgLTUxLDYgKzUxLDcgQEAK ICAgICAgICAgICAgIGdleHAtaW5wdXQtb3V0cHV0CiAgICAgICAgICAgICBnZXhwLWlucHV0LW5h dGl2ZT8KIAorICAgICAgICAgICAgcHJlY2Fub25pY2FsaXplZC1maWxlLW5hbWUKICAgICAgICAg ICAgIGFzc3VtZS12YWxpZC1maWxlLW5hbWUKICAgICAgICAgICAgIGxvY2FsLWZpbGUKICAgICAg ICAgICAgIGxvY2FsLWZpbGU/CkBAIC00NjMsNiArNDY0LDEyIEBAIHRoZSBnaXZlbiBmaWxlIG5h bWUgaXMgdmFsaWQsIGV2ZW4gaWYgaXQncyBub3QgYSBzdHJpbmcgbGl0ZXJhbCwgYW5kIHRodXMg bm90CiB3YXJuIGFib3V0IGl0LiIKICAgZmlsZSkKIAorKGRlZmluZS1zeW50YXgtcnVsZSAocHJl Y2Fub25pY2FsaXplZC1maWxlLW5hbWUgZmlsZSBhYnNvbHV0ZSkKKyAgIlRoaXMgaXMgYSBzeW50 YWN0aWMga2V5d29yZCB0byB0ZWxsICdsb2NhbC1maWxlJyB0aGF0IGl0IGNhbiBhc3N1bWUgdGhh dAordGhlIGdpdmVuIGZpbGUgbmFtZSBGSUxFIGhhcyBBQlNPTFVURSBhcyBhYnNvbHV0ZSBmaWxl IG5hbWUgYW5kICdsb2NhbC1maWxlJworZG9lcyBub3QgbmVlZCB0byBjb21wdXRlIHRoZSBhYnNv bHV0ZSBmaWxlIG5hbWUgYnkgaXRzZWxmLiIKKyAgYWJzb2x1dGUpCisKIChkZWZpbmUtc3ludGF4 IGxvY2FsLWZpbGUKICAgKGxhbWJkYSAocykKICAgICAiUmV0dXJuIGFuIG9iamVjdCByZXByZXNl bnRpbmcgbG9jYWwgZmlsZSBGSUxFIHRvIGFkZCB0byB0aGUgc3RvcmU7IHRoaXMKQEAgLTQ4MSw3 ICs0ODgsNyBAQCB3aGVyZSBGSUxFIGlzIHRoZSBlbnRyeSdzIGFic29sdXRlIGZpbGUgbmFtZSBh bmQgU1RBVCBpcyB0aGUgcmVzdWx0IG9mCiBUaGlzIGlzIHRoZSBkZWNsYXJhdGl2ZSBjb3VudGVy cGFydCBvZiB0aGUgJ2ludGVybmVkLWZpbGUnIG1vbmFkaWMgcHJvY2VkdXJlLgogSXQgaXMgaW1w bGVtZW50ZWQgYXMgYSBtYWNybyB0byBjYXB0dXJlIHRoZSBjdXJyZW50IHNvdXJjZSBkaXJlY3Rv cnkgd2hlcmUgaXQKIGFwcGVhcnMuIgotICAgIChzeW50YXgtY2FzZSBzIChhc3N1bWUtdmFsaWQt ZmlsZS1uYW1lKQorICAgIChzeW50YXgtY2FzZSBzIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lIHBy ZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lKQogICAgICAgKChfIGZpbGUgcmVzdCAuLi4pCiAgICAg ICAgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0gIydmaWxlKSkKICAgICAgICA7OyBGSUxFIGlzIGEg bGl0ZXJhbCwgc28gcmVzb2x2ZSBpdCByZWxhdGl2ZSB0byB0aGUgc291cmNlIGRpcmVjdG9yeS4K QEAgLTQ5NSw2ICs1MDIsOSBAQCBhcHBlYXJzLiIKICAgICAgICAjJyglbG9jYWwtZmlsZSBmaWxl CiAgICAgICAgICAgICAgICAgICAgICAgKGRlbGF5IChhYnNvbHV0ZS1maWxlLW5hbWUgZmlsZSAo Z2V0Y3dkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgcmVzdCAuLi4pKQorICAgICAgKChfIChw cmVjYW5vbmljYWxpemVkLWZpbGUtbmFtZSBmaWxlIGFic29sdXRlKSByZXN0IC4uLikKKyAgICAg ICA7OyBVc2UgdGhlIGdpdmVuIGZpbGUgbmFtZSBBQlNPTFVURSBhcyBhYnNvbHV0ZSBmaWxlIG5h bWUuCisgICAgICAgIycoJWxvY2FsLWZpbGUgZmlsZSAoZGVsYXkgYWJzb2x1dGUpIHJlc3QgLi4u KSkKICAgICAgICgoXyBmaWxlIHJlc3QgLi4uKQogICAgICAgIDs7IFJlc29sdmUgRklMRSByZWxh dGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgICAgKHdpdGgtc3ludGF4ICgobG9j YXRpb24gKGRhdHVtLT5zeW50YXggcyAoc3ludGF4LXNvdXJjZSBzKSkpKQotLSAKMi4zMy4wCgo= --=-Ed3xbcWsGUAuseKcAI15 Content-Disposition: inline; filename*0=0005-packages-Compute-the-hash-of-patches-in-advance-when.pat; filename*1=ch Content-Type: text/x-patch; name="0005-packages-Compute-the-hash-of-patches-in-advance-when.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlM2IxNGZkZjYzZTc4YTUwNGE0ZjZlOGE2ZWQ4NWQ1ZjhiMDhhY2I3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxNzoyNTo1OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggNS82 XSBwYWNrYWdlczogQ29tcHV0ZSB0aGUgaGFzaCBvZiBwYXRjaGVzIGluIGFkdmFuY2Ugd2hlbgog cG9zc2libGUuCgoqIGdudS9wYWNrYWdlcy5zY20KICAoc2VhcmNoLXBhdGNoKTogUmVuYW1lIHRv IC4uLgogICglc2VhcmNoLXBhdGNoKTogLi4uIHRoaXMuCiAgKHRyeS1zZWFyY2gtcGF0Y2gpOiBO ZXcgcHJvY2VkdXJlLCBleHRyYWN0ZWQgZnJvbSAuLi4KICAoJXNlYXJjaC1wYXRjaCk6IC4uLiB0 aGlzIHByb2NlZHVyZS4KICAoJWxvY2FsLXBhdGNoLWZpbGUpOiBOZXcgcHJvY2VkdXJlLgogICh0 cnVlKTogTmV3IHByb2NlZHVyZS4KICAoc2VhcmNoLXBhdGNoKTogTmV3IG1hY3JvLCBiZWhhdmlu ZyBsaWtlICVzZWFyY2gtcGF0Y2gsIGJ1dCBjb21wdXRpbmcgdGhlCiAgaGFzaCBhdCBleHBhbnNp b24gdGltZSB3aGVuIHBvc3NpYmxlLgoqIGdudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KICAoJWd1 aXgtcGF0Y2hlcyk6IFVzZSBzZWFyY2gtcGF0Y2hlcyBpbnN0ZWFkIG9mIGxvY2FsLWZpbGUgKwog IGFzc3VtZS12YWxpZC1maWxlLW5hbWUgKyBzZWFyY2gtcGF0Y2guCiogZ251L3BhY2thZ2VzL2du dXppbGxhLnNjbQogIChpY2VjYXQtc291cmNlKVtnbnV6aWxsYS1maXhlcy1wYXRjaF06IFVzZSBz ZWFyY2gtcGF0Y2ggaW5zdGVhZCBvZgogIGxvY2FsLWZpbGUgKyBhc3N1bGUtdmFsaWQtZmlsZS1u YW1lICsgc2VhcmNoLXBhdGNoLgogIChpY2VjYXQtc291cmNlKVttYWtlaWNlY2F0LXBhdGNoXTog TGlrZXdpc2UuCiogZ251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQogIChnY2MtYXJtLW5vbmUtZWFi aS00LjkpW3NvdXJjZV17cGF0Y2hlc306IEV4cGVjdCBwYXRjaGVzIHRvIGJlCiAgbG9jYWwtZmls ZSBvYmplY3RzIGluc3RlYWQgb2Ygc3RyaW5ncy4KICBvZiBzdHJpbmdzLgoqIGd1aXgvbGludC5z Y20gKGNoZWNrLXBhdGNoLWZpbGUtbmFtZXMpOiBBbGxvdyBsb2NhbC1maWxlIG9iamVjdHMuCi0t LQogZ251L3BhY2thZ2VzLnNjbSAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLQogZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbSB8ICA0ICstLS0KIGdu dS9wYWNrYWdlcy9lbWJlZGRlZC5zY20gfCAgMyArKy0KIGdudS9wYWNrYWdlcy9nbnV6aWxsYS5z Y20gfCAgOCArKy0tLS0tLQogZ3VpeC9saW50LnNjbSAgICAgICAgICAgICB8IDI4ICsrKysrKysr KysrKysrKystLS0tLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDIz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy5zY20gYi9nbnUvcGFja2Fn ZXMuc2NtCmluZGV4IGNjZmM4M2RkMTEuLmY1NTUyZTVhOWIgMTAwNjQ0Ci0tLSBhL2dudS9wYWNr YWdlcy5zY20KKysrIGIvZ251L3BhY2thZ2VzLnNjbQpAQCAtNCw2ICs0LDcgQEAKIDs7OyBDb3B5 cmlnaHQgwqkgMjAxNCBFcmljIEJhdmllciA8YmF2aWVyQG1lbWJlci5mc2Yub3JnPgogOzs7IENv cHlyaWdodCDCqSAyMDE2LCAyMDE3IEFsZXggS29zdCA8YWxlem9zdEBnbWFpbC5jb20+CiA7Ozsg Q29weXJpZ2h0IMKpIDIwMTYgTWF0aGlldSBMaXJ6aW4gPG10aGxAZ251Lm9yZz4KKzs7OyBDb3B5 cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+CiA7OzsK IDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMjEsMTEgKzIyLDEz IEBACiA7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KIAogKGRlZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcykKKyAgIzp1 c2UtbW9kdWxlIChndWl4IGdleHApCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBwYWNrYWdlcykKICAg Izp1c2UtbW9kdWxlIChndWl4IHVpKQogICAjOnVzZS1tb2R1bGUgKGd1aXggdXRpbHMpCiAgICM6 dXNlLW1vZHVsZSAoZ3VpeCBkaWFnbm9zdGljcykKICAgIzp1c2UtbW9kdWxlIChndWl4IGRpc2Nv dmVyeSkKKyAgIzp1c2UtbW9kdWxlIChndWl4IGhhc2gpCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBt ZW1vaXphdGlvbikKICAgIzp1c2UtbW9kdWxlICgoZ3VpeCBidWlsZCB1dGlscykKICAgICAgICAg ICAgICAgICAjOnNlbGVjdCAoKHBhY2thZ2UtbmFtZS0+bmFtZSt2ZXJzaW9uCkBAIC05MCwxMiAr OTMsNDcgQEAKICAgIlNlYXJjaCB0aGUgYXV4aWxpYXJ5IEZJTEUtTkFNRS4gIFJldHVybiAjZiBp ZiBub3QgZm91bmQuIgogICAoc2VhcmNoLXBhdGggKCVhdXhpbGlhcnktZmlsZXMtcGF0aCkgZmls ZS1uYW1lKSkKIAotKGRlZmluZSAoc2VhcmNoLXBhdGNoIGZpbGUtbmFtZSkKKyhkZWZpbmUgKHRy eS1zZWFyY2gtcGF0Y2ggZmlsZS1uYW1lKQorICAiU2VhcmNoIHRoZSBwYXRjaCBGSUxFLU5BTUUu ICBSZXR1cm4gI2YgaWYgbm90IGZvdW5kLiIKKyAgKHNlYXJjaC1wYXRoICglcGF0Y2gtcGF0aCkg ZmlsZS1uYW1lKSkKKworKGRlZmluZSAoJXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpCiAgICJTZWFy Y2ggdGhlIHBhdGNoIEZJTEUtTkFNRS4gIFJhaXNlIGFuIGVycm9yIGlmIG5vdCBmb3VuZC4iCi0g IChvciAoc2VhcmNoLXBhdGggKCVwYXRjaC1wYXRoKSBmaWxlLW5hbWUpCisgIChvciAodHJ5LXNl YXJjaC1wYXRjaCBmaWxlLW5hbWUpCiAgICAgICAocmFpc2UgKGZvcm1hdHRlZC1tZXNzYWdlIChH XyAifmE6IHBhdGNoIG5vdCBmb3VuZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZpbGUtbmFtZSkpKSkKIAorKGRlZmluZSAoJWxvY2FsLXBhdGNoLWZpbGUgZmlsZS1uYW1lIGhh c2gpCisgICJTZWFyY2ggdGhlIHBhdGNoIEZJTEUtTkFNRSwgd2hpY2ggaXMga25vd24gdG8gaGF2 ZSBIQVNILiIKKyAgKGxvY2FsLWZpbGUgKHByZWNhbm9uaWNhbGl6ZWQtZmlsZS1uYW1lIGZpbGUt bmFtZSAoJXNlYXJjaC1wYXRjaCBmaWxlLW5hbWUpKQorICAgICAgICAgICAgICAjOnNoYTI1NiBo YXNoICM6cmVjdXJzaXZlPyAjdCkpCisKKyhkZWZpbmUgdHJ1ZSAoY29uc3QgI3QpKQorCisoZGVm aW5lLXN5bnRheCBzZWFyY2gtcGF0Y2gKKyAgKGxhbWJkYSAocykKKyAgICAiU2VhcmNoIHRoZSBw YXRjaCBGSUxFLU5BTUUgYW5kIGNvbXB1dGUgaXRzIGhhc2ggYXQgZXhwYW5zaW9uIHRpbWUKK2lm IHBvc3NpYmxlLiAgUmV0dXJuICNmIGlmIG5vdCBmb3VuZC4iCisgICAgKHN5bnRheC1jYXNlIHMg KCkKKyAgICAgICgoXyBmaWxlLW5hbWUpCisgICAgICAgKHN0cmluZz8gKHN5bnRheC0+ZGF0dW0g IydmaWxlLW5hbWUpKQorICAgICAgIDs7IEZJTEUtTkFNRSBpcyBhIGNvbnN0YW50IHN0cmluZywg c28gdGhlIGhhc2ggY2FuIGJlIGNvbXB1dGVkCisgICAgICAgOzsgaW4gYWR2YW5jZS4KKyAgICAg ICAobGV0ICgocGF0Y2ggKHRyeS1zZWFyY2gtcGF0Y2ggKHN5bnRheC0+ZGF0dW0gIydmaWxlLW5h bWUpKSkpCisgICAgICAgICAoaWYgcGF0Y2gKKyAgICAgICAgICAgICAjYCglbG9jYWwtcGF0Y2gt ZmlsZSBmaWxlLW5hbWUgIywoZmlsZS1oYXNoKiBwYXRjaCAjOnNlbGVjdD8gdHJ1ZSkpCisgICAg ICAgICAgICAgKGJlZ2luCisgICAgICAgICAgICAgICAod2FybmluZyAoc291cmNlLXByb3BlcnRp ZXMtPmxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN5bnRheC1zb3VyY2UgIydm aWxlLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgKEdfICJ+YTogcGF0Y2ggbm90IGZv dW5kIGF0IGV4cGFuc2lvbiB0aW1lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIChzeW50YXgt PmRhdHVtICMnaWxlLW5hbWUpKQorICAgICAgICAgICAgICAgIycoJXNlYXJjaC1wYXRjaCBmaWxl LW5hbWUpKSkpKQorICAgICAgOzsgRklMRS1OQU1FIGlzIHZhcmlhYmxlLCBzbyB0aGUgaGFzaCBj YW5ub3QgYmUgcHJlLWNvbXB1dGVkLgorICAgICAgKChfIGZpbGUtbmFtZSkgIycoJXNlYXJjaC1w YXRjaCBmaWxlLW5hbWUpKQorICAgICAgOzsgc2VhcmNoLXBhdGNoIGlzIGJlaW5nIHVzZWQgdXNl ZCBpbiBhIGNvbnN0cnVjdCBsaWtlCisgICAgICA7OyAobWFwIHNlYXJjaC1wYXRjaCAuLi4pLgor ICAgICAgKGlkIChpZGVudGlmaWVyPyAjJ2lkKSAjJyVzZWFyY2gtcGF0Y2gpKSkpCisKIChkZWZp bmUtc3ludGF4LXJ1bGUgKHNlYXJjaC1wYXRjaGVzIGZpbGUtbmFtZSAuLi4pCiAgICJSZXR1cm4g dGhlIGxpc3Qgb2YgYWJzb2x1dGUgZmlsZSBuYW1lcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gKIEZJ TEUtTkFNRSBmb3VuZCBpbiAlUEFUQ0gtUEFUSC4iCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMv Y2hyb21pdW0uc2NtIGIvZ251L3BhY2thZ2VzL2Nocm9taXVtLnNjbQppbmRleCAyNmFlMWUyNTUw Li5jZjQxOWNmNDFiIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvY2hyb21pdW0uc2NtCisrKyBi L2dudS9wYWNrYWdlcy9jaHJvbWl1bS5zY20KQEAgLTM1MSw5ICszNTEsNyBAQAogICAgICAgIjB3 YmNianpoNWFrNG5jaWFocXc0eXZ4YzR4OGlrNHgwaXo5aDRrZnkwbTAxMXN4enkxNzQiKSkpKQog CiAoZGVmaW5lICVndWl4LXBhdGNoZXMKLSAgKGxpc3QgKGxvY2FsLWZpbGUKLSAgICAgICAgIChh c3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgKHNlYXJjaC1wYXRjaCAidW5nb29nbGVk LWNocm9taXVtLWV4dGVuc2lvbi1zZWFyY2gtcGF0aC5wYXRjaCIpKSkpKQorICAoc2VhcmNoLXBh dGNoZXMgInVuZ29vZ2xlZC1jaHJvbWl1bS1leHRlbnNpb24tc2VhcmNoLXBhdGgucGF0Y2giKSkK IAogOzsgVGhpcyBpcyBhIHNvdXJjZSAnc25pcHBldCcgdGhhdCBkb2VzIHRoZSBmb2xsb3dpbmc6 CiA7OyAqKSBBcHBsaWVzIHZhcmlvdXMgcGF0Y2hlcyBmb3IgdW5idW5kbGluZyBwdXJwb3NlcyBh bmQgbGlic3RkYysrIGNvbXBhdGliaWxpdHkuCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvZW1i ZWRkZWQuc2NtIGIvZ251L3BhY2thZ2VzL2VtYmVkZGVkLnNjbQppbmRleCBmMzg4YzExYzNkLi44 MjZmNTY1NWMzIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZW1iZWRkZWQuc2NtCisrKyBiL2du dS9wYWNrYWdlcy9lbWJlZGRlZC5zY20KQEAgLTMwLDYgKzMwLDcgQEAKICAgIzp1c2UtbW9kdWxl IChndWl4IHBhY2thZ2VzKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZG93bmxvYWQpCiAgICM6dXNl LW1vZHVsZSAoZ3VpeCBzdm4tZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQog ICAjOnVzZS1tb2R1bGUgKGd1aXggZ2l0LWRvd25sb2FkKQogICAjOnVzZS1tb2R1bGUgKChndWl4 IGxpY2Vuc2VzKSAjOnByZWZpeCBsaWNlbnNlOikKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxk LXN5c3RlbSBjbWFrZSkKQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgICAgIDs7IFJlbW92ZSB0aGUg b25lIHBhdGNoIHRoYXQgZG9lc24ndCBhcHBseSB0byB0aGlzIDQuOSBzbmFwc2hvdCAodGhlCiAg ICAgICAgICA7OyBwYXRjaCBpcyBmb3IgNC45LjQgYW5kIGxhdGVyIGJ1dCB0aGlzIHN2biBzbmFw c2hvdCBpcyBvbGRlcikuCiAgICAgICAgICAocGF0Y2hlcyAocmVtb3ZlIChsYW1iZGEgKHBhdGNo KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9PyAoYmFzZW5hbWUgcGF0Y2gp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZz0/IChsb2NhbC1maWxlLW5hbWUg cGF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnY2MtYXJtLWJ1 Zy03MTM5OS5wYXRjaCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAob3JpZ2luLXBhdGNo ZXMgKHBhY2thZ2Utc291cmNlIHhnY2MpKSkpKSkKICAgICAgIChuYXRpdmUtaW5wdXRzCmRpZmYg LS1naXQgYS9nbnUvcGFja2FnZXMvZ251emlsbGEuc2NtIGIvZ251L3BhY2thZ2VzL2dudXppbGxh LnNjbQppbmRleCA1NzZiYzI1ODZmLi5iZTY3NGRjZThmIDEwMDY0NAotLS0gYS9nbnUvcGFja2Fn ZXMvZ251emlsbGEuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9nbnV6aWxsYS5zY20KQEAgLTczNiwx NCArNzM2LDEwIEBAIGZyb20gZm9yY2luZyBHRVhQLVBST01JU0UuIgogICAgICAgICAgICAgIChi YXNlMzIKICAgICAgICAgICAgICAgIjAwd3MzNTQweDV3aHBpY2M1Zng0azk0OWZmNzNjcXZhano2 anAxM2FobjQ5d3FkYWRzNDciKSkpKQogCi0gICAgICAgICA7OyAnc2VhcmNoLXBhdGNoJyByZXR1 cm5zIGVpdGhlciBhIHZhbGlkIGZpbGUgbmFtZSBvciAjZiwgc28gd3JhcCBpdAotICAgICAgICAg OzsgaW4gJ2Fzc3VtZS12YWxpZC1maWxlLW5hbWUnIHRvIGF2b2lkICdsb2NhbC1maWxlJyB3YXJu aW5ncy4KICAgICAgICAgIChnbnV6aWxsYS1maXhlcy1wYXRjaAotICAgICAgICAgIChsb2NhbC1m aWxlIChhc3N1bWUtdmFsaWQtZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgIChzZWFy Y2gtcGF0Y2ggImljZWNhdC11c2Utb2xkZXItcmV2ZWFsLWhpZGRlbi1odG1sLnBhdGNoIikpKSkK KyAgICAgICAgICAoc2VhcmNoLXBhdGNoICJpY2VjYXQtdXNlLW9sZGVyLXJldmVhbC1oaWRkZW4t aHRtbC5wYXRjaCIpKQogICAgICAgICAgKG1ha2VpY2VjYXQtcGF0Y2gKLSAgICAgICAgICAobG9j YWwtZmlsZSAoYXNzdW1lLXZhbGlkLWZpbGUtbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAo c2VhcmNoLXBhdGNoICJpY2VjYXQtbWFrZWljZWNhdC5wYXRjaCIpKSkpKQorICAgICAgICAgIChz ZWFyY2gtcGF0Y2ggImljZWNhdC1tYWtlaWNlY2F0LnBhdGNoIikpKQogCiAgICAgKG9yaWdpbgog ICAgICAgKG1ldGhvZCBjb21wdXRlZC1vcmlnaW4tbWV0aG9kKQpkaWZmIC0tZ2l0IGEvZ3VpeC9s aW50LnNjbSBiL2d1aXgvbGludC5zY20KaW5kZXggM2E3ZjNiZTMyNy4uYjBhMmZiYzMyNyAxMDA2 NDQKLS0tIGEvZ3VpeC9saW50LnNjbQorKysgYi9ndWl4L2xpbnQuc2NtCkBAIC00Niw2ICs0Niw3 IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdleHAtPmFwcHJveGltYXRlLXNl eHApKQogICAjOnVzZS1tb2R1bGUgKGd1aXggbGljZW5zZXMpCiAgICM6dXNlLW1vZHVsZSAoZ3Vp eCByZWNvcmRzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggZ2V4cCkKICAgIzp1c2UtbW9kdWxlIChn dWl4IGdyYWZ0cykKICAgIzp1c2UtbW9kdWxlIChndWl4IHVwc3RyZWFtKQogICAjOnVzZS1tb2R1 bGUgKGd1aXggdXRpbHMpCkBAIC05MjgsNiArOTI5LDggQEAgcGF0Y2ggY291bGQgbm90IGJlIGZv dW5kLiIKICAgICAgICAgICAgICAgICAgICAoc3RhcnRzLXdpdGgtcGFja2FnZS1uYW1lPyAoYmFz ZW5hbWUgcGF0Y2gpKSkKICAgICAgICAgICAgICAgICAgICgoPyBvcmlnaW4/IHBhdGNoKQogICAg ICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChvcmlnaW4tYWN0dWFs LWZpbGUtbmFtZSBwYXRjaCkpKQorICAgICAgICAgICAgICAgICAgKCg/IGxvY2FsLWZpbGU/IHBh dGNoKQorICAgICAgICAgICAgICAgICAgIChzdGFydHMtd2l0aC1wYWNrYWdlLW5hbWU/IChsb2Nh bC1maWxlLW5hbWUgcGF0Y2gpKSkKICAgICAgICAgICAgICAgICAgIChfICAjZikpICAgICA7bXVz dCBiZSBzb21lIG90aGVyIGZpbGUtbGlrZSBvYmplY3QKICAgICAgICAgICAgICAgICBwYXRjaGVz KQogICAgICAgICAgJygpCkBAIC05NDEsMTkgKzk0NCwyMiBAQCBwYXRjaCBjb3VsZCBub3QgYmUg Zm91bmQuIgogICAgICAobGV0ICgocHJlZml4IChzdHJpbmctbGVuZ3RoICglZGlzdHJvLWRpcmVj dG9yeSkpKQogICAgICAgICAgICAobWFyZ2luIChzdHJpbmctbGVuZ3RoICJndWl4LTIuMC4wcmMz LTEwMDAwLTEyMzQ1Njc4OTAvIikpCiAgICAgICAgICAgIChtYXggICAgOTkpKQorICAgICAgIChk ZWZpbmUgKHRlc3QtcGF0Y2gtbmFtZSBmaWxlLW5hbWUpCisgICAgICAgICAoaWYgKD4gKCsgbWFy Z2luIChpZiAoc3RyaW5nLXByZWZpeD8gKCVkaXN0cm8tZGlyZWN0b3J5KSBmaWxlLW5hbWUpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLSAoc3RyaW5nLWxlbmd0aCBmaWxlLW5hbWUp IHByZWZpeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbGVuZ3RoIGZp bGUtbmFtZSkpKQorICAgICAgICAgICAgICAgIG1heCkKKyAgICAgICAgICAgICAobWFrZS13YXJu aW5nCisgICAgICAgICAgICAgIHBhY2thZ2UKKyAgICAgICAgICAgICAgKEdfICJ+YTogZmlsZSBu YW1lIGlzIHRvbyBsb25nIikKKyAgICAgICAgICAgICAgKGxpc3QgKGJhc2VuYW1lIGZpbGUtbmFt ZSkpCisgICAgICAgICAgICAgICM6ZmllbGQgJ3BhdGNoLWZpbGUtbmFtZXMpCisgICAgICAgICAg ICAgI2YpKQogICAgICAgIChmaWx0ZXItbWFwIChtYXRjaC1sYW1iZGEKICAgICAgICAgICAgICAg ICAgICAgICgoPyBzdHJpbmc/IHBhdGNoKQotICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAo KyBtYXJnaW4gKGlmIChzdHJpbmctcHJlZml4PyAoJWRpc3Ryby1kaXJlY3RvcnkpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNo KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChzdHJpbmct bGVuZ3RoIHBhdGNoKSBwcmVmaXgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHN0cmluZy1sZW5ndGggcGF0Y2gpKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS13YXJuaW5nCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAoR18gIn5hOiBmaWxlIG5hbWUgaXMgdG9vIGxvbmciKQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3QgKGJhc2VuYW1lIHBhdGNoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICM6ZmllbGQgJ3BhdGNoLWZpbGUtbmFtZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICNm KSkKKyAgICAgICAgICAgICAgICAgICAgICAodGVzdC1wYXRjaC1uYW1lIHBhdGNoKSkKKyAgICAg ICAgICAgICAgICAgICAgICgoPyBsb2NhbC1maWxlPyBwYXRjaCkKKyAgICAgICAgICAgICAgICAg ICAgICAodGVzdC1wYXRjaC1uYW1lIChsb2NhbC1maWxlLWFic29sdXRlLWZpbGUtbmFtZSBwYXRj aCkpKQogICAgICAgICAgICAgICAgICAgICAgKF8gI2YpKQogICAgICAgICAgICAgICAgICAgIHBh dGNoZXMpKSkpKQogCi0tIAoyLjMzLjAKCg== --=-Ed3xbcWsGUAuseKcAI15 Content-Disposition: inline; filename*0=0006-gexp-Do-not-intern-if-the-file-is-already-in-the-sto.pat; filename*1=ch Content-Type: text/x-patch; name="0006-gexp-Do-not-intern-if-the-file-is-already-in-the-sto.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwZmM1NGJkZDljY2M5NzI5ZmZmNTRmNTkzNWE1NTJlNWU2MDhhMWQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFNhdCwgNCBTZXAgMjAyMSAxODoxMDozMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggNi82 XSBnZXhwOiBEbyBub3QgaW50ZXJuIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgaW4gdGhlIHN0b3Jl LgoKKiBndWl4L2dleHAuc2NtIChsb2NhbC1maWxlLWNvbXBpbGVyKTogV2hlbiB0aGUgZmlsZSBp cyBhbHJlYWR5IGluIHRoZQogIHN0b3JlLCByZS11c2UgdGhlIGZpeGVkIG91dHB1dCBwYXRoIGlu c3RlYWQgb2YgaW50ZXJuaW5nIHRoZSBmaWxlCiAgYWdhaW4uCi0tLQogZ3VpeC9nZXhwLnNjbSB8 IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMzEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ndWl4L2dl eHAuc2NtIGIvZ3VpeC9nZXhwLnNjbQppbmRleCBjNjllNGFhMjk5Li5kYTFlOTE4ODAxIDEwMDY0 NAotLS0gYS9ndWl4L2dleHAuc2NtCisrKyBiL2d1aXgvZ2V4cC5zY20KQEAgLTUzMSwxMyArNTMx LDM3IEBAIGFwcGVhcnMuIgogKGRlZmluZS1nZXhwLWNvbXBpbGVyIChsb2NhbC1maWxlLWNvbXBp bGVyIChmaWxlIDxsb2NhbC1maWxlPikgc3lzdGVtIHRhcmdldCkKICAgOzsgIkNvbXBpbGUiIEZJ TEUgYnkgYWRkaW5nIGl0IHRvIHRoZSBzdG9yZS4KICAgKG1hdGNoIGZpbGUKLSAgICAoKCQgPGxv Y2FsLWZpbGU+IGZpbGUgKD0gZm9yY2UgYWJzb2x1dGUpIG5hbWUgc2hhMjU2IHJlY3Vyc2l2ZT8g c2VsZWN0PykKLSAgICAgOzsgQ2Fub25pY2FsaXplIEZJTEUgc28gdGhhdCBpZiBpdCdzIGEgc3lt bGluaywgaXQgaXMgcmVzb2x2ZWQuICBGYWlsaW5nCi0gICAgIDs7IHRvIGRvIHRoYXQsIHdoZW4g UkVDVVJTSVZFPyBpcyAjdCwgd2UgY291bGQgZW5kIHVwIGNyZWF0aW5nIGEgZGFuZ2xpbmcKLSAg ICAgOzsgc3ltbGluayBpbiB0aGUgc3RvcmUsIGFuZCB3aGVuIFJFQ1VSU0lWRT8gaXMgI2YgJ2Fk ZC10by1zdG9yZScgd291bGQKLSAgICAgOzsganVzdCB0aHJvdyBhbiBlcnJvciwgYm90aCBvZiB3 aGljaCBhcmUgaW5jb252ZW5pZW50LgotICAgICAoaW50ZXJuZWQtZmlsZSBhYnNvbHV0ZSBuYW1l Ci0gICAgICAgICAgICAgICAgICAgICM6cmVjdXJzaXZlPyByZWN1cnNpdmU/ICM6c2VsZWN0PyBz ZWxlY3Q/KSkpKQorICAgIDs7IERlbGF5IGNvbXB1dGluZyB0aGUgYWJzb2x1dGUgZmlsZSBuYW1l IHVudGlsICdpbnRlcm4nLCBhcyB0aGlzCisgICAgOzsgbWlnaHQgYmUgYSByZWxhdGl2ZWx5IGV4 cGVuc2l2ZSBjb21wdXRhdGlvbiAoZS5nLiBpZiBzZWFyY2gtcGF0Y2gKKyAgICA7OyBpcyB1c2Vk KSwgZXNwZWNpYWxseSBvbiBhIHNwaW5uaW5nIGRpc2suCisgICAgKCgkIDxsb2NhbC1maWxlPiBm aWxlIGFic29sdXRlLXByb21pc2UgbmFtZSBzaGEyNTYgcmVjdXJzaXZlPyBzZWxlY3Q/KQorICAg ICAobGV0ICgpCisgICAgICAgKGRlZmluZSAoaW50ZXJuKQorICAgICAgICAgOzsgQ2Fub25pY2Fs aXplIEZJTEUgc28gdGhhdCBpZiBpdCdzIGEgc3ltbGluaywgaXQgaXMgcmVzb2x2ZWQuCisgICAg ICAgICA7OyBGYWlsaW5nIHRvIGRvIHRoYXQsIHdoZW4gUkVDVVJTSVZFPyBpcyAjdCwgd2UgY291 bGQgZW5kIHVwIGNyZWF0aW5nCisgICAgICAgICA7OyBhIGRhbmdsaW5nIHN5bWxpbmsgaW4gdGhl IHN0b3JlLCBhbmQgd2hlbiBSRUNVUlNJVkU/IGlzICNmCisgICAgICAgICA7OyAnYWRkLXRvLXN0 b3JlJyB3b3VsZCBqdXN0IHRocm93IGFuIGVycm9yLCBib3RoIG9mIHdoaWNoIGFyZQorICAgICAg ICAgOzsgaW5jb252ZW5pZW50LgorICAgICAgICAgKGludGVybmVkLWZpbGUgKGZvcmNlIGFic29s dXRlLXByb21pc2UpIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICM6cmVjdXJzaXZlPyBy ZWN1cnNpdmU/ICM6c2VsZWN0PyBzZWxlY3Q/KSkKKyAgICAgICAoaWYgc2hhMjU2CisgICAgICAg ICAgIChsZXQgKChwYXRoIChmaXhlZC1vdXRwdXQtcGF0aCBuYW1lIHNoYTI1NiAjOnJlY3Vyc2l2 ZT8gcmVjdXJzaXZlPykpKQorICAgICAgICAgICAgIDs7IElmIHRoZSBoYXNoIGlzIGtub3duIGlu IGFkdmFuY2UgYW5kIHRoZSBzdG9yZSBhbHJlYWR5IGhhcyB0aGUKKyAgICAgICAgICAgICA7OyBp dGVtLCB0aGVyZSBpcyBubyBuZWVkIHRvIGludGVybiB0aGUgZmlsZS4KKyAgICAgICAgICAgICAo aWYgKGZpbGUtZXhpc3RzPyBwYXRoKQorICAgICAgICAgICAgICAgICAobWJlZ2luICVzdG9yZS1t b25hZAorICAgICAgICAgICAgICAgICAgIDs7IFRlbGwgdGhlIEdDIHRoYXQgUEFUSCB3aWxsIGJl IHVzZWQsIHN1Y2ggdGhhdCBpdCB3b24ndAorICAgICAgICAgICAgICAgICAgIDs7IGJlIGRlbGV0 ZWQuCisgICAgICAgICAgICAgICAgICAgKChzdG9yZS1saWZ0IGFkZC10ZW1wLXJvb3QpIHBhdGgp CisgICAgICAgICAgICAgICAgICAgOzsgVGhlIEdDIGNvdWxkIGhhdmUgZGVsZXRlZCB0aGUgaXRl bSBiZWZvcmUgYWRkLXRlbXAtcm9vdAorICAgICAgICAgICAgICAgICAgIDs7IGNvbXBsZXRlZCwg c28gY2hlY2sgYWdhaW4gaWYgUEFUSCBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgKGlmIChm aWxlLWV4aXN0cz8gcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgKHJldHVybiBwYXRoKQor ICAgICAgICAgICAgICAgICAgICAgICA7OyBJZiBpdCBoYXMgYmVlbiByZW1vdmVkLCBmYWxsLWJh Y2sgaW50ZXJuaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuKSkpCisgICAgICAg ICAgICAgICAgIDs7IElmIFBBVEggZG9lcyBub3QgeWV0IGV4aXN0LCBmYWxsIGJhY2sgdG8gaW50 ZXJuaW5nLgorICAgICAgICAgICAgICAgICAoaW50ZXJuKSkpCisgICAgICAgICAgIChpbnRlcm4p KSkpKSkKIAogKGRlZmluZS1yZWNvcmQtdHlwZSA8cGxhaW4tZmlsZT4KICAgKCVwbGFpbi1maWxl IG5hbWUgY29udGVudCByZWZlcmVuY2VzKQotLSAKMi4zMy4wCgo= --=-Ed3xbcWsGUAuseKcAI15-- --=-ZXdwdSIZm75bAbTlaqKD Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYTPiVhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7mUPAP9Tp6RrxYBG01bX5pGGZjhkUVxB VlrLlALonb/bUSqfwgEA2ICKcwCwWq6gd7PZCTO2sGhtcgFlksT1MzyoNH+KHw0= =D7ID -----END PGP SIGNATURE----- --=-ZXdwdSIZm75bAbTlaqKD--
Maxime Devos <maximedevos@HIDDEN>
:guix-patches@HIDDEN
.
Full text available.guix-patches@HIDDEN
:bug#50384
; Package guix-patches
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.