contrib: Enable building in Guix containers #15277

pull dongcarl wants to merge 4 commits into bitcoin:master from dongcarl:2019-01-guix changing 5 files +634 −1
  1. dongcarl commented at 5:10 pm on January 28, 2019: member

    This post is kept updated as this project progresses. Use this latest update link to see what’s new.

    Please read the README.md.


    Guix Introduction

    This PR enables building bitcoin in Guix containers. Guix is a transactional package manager much like Nix, but unlike Nix, it has more of a focus on bootstrappability and reproducibility which are attractive for security-sensitive projects like bitcoin.

    Guix Build Walkthrough

    Please read the README.md.

    Old instructions no. 4

    Old instructions no. 3

    Old instructions no. 2

    We can then invoke

    0guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts --no-substitutes
    

    To have Guix:

    1. Build an environment containing the packages we defined in our contrib/guix/manifest.scm manifest from the Guix bootstrap binaries (see bootstrappability for more details).
    2. Start a container with that environment that has no network access, and no access to the host’s filesystem except to the pwd that it was started in.
    3. Drop you into a shell in that container.

    Note: if you don’t want to wait hours for Guix to build the entire world from scratch, you can eliminate the --no-substitutes option to have Guix download from available binary sources. Note that this convenience doesn’t necessarily compromise your security, as you can check that a package was built correctly after the fact using guix build --check <packagename>

    Therefore, we can perform a build of bitcoin much like in Gitian by invoking the following:

    0make -C depends -j"$(nproc)" download && \
    1    cat contrib/guix/build.sh | guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts --no-substitutes
    

    We don’t include make -C depends -j"$(nproc)" download inside contrib/guix/build.sh because contrib/guix/build.sh is run inside the container, which has no network access (which is a good thing).

    Rationale

    I believe that this represents a substantial improvement for the “supply chain security” of bitcoin because:

    1. We no longer have to rely on Ubuntu for our build environment for our releases (oh the horror), because Guix builds everything about the container, we can perform this on almost any Linux distro/system.
    2. It is now much easier to determine what trusted binaries are in our supply chain, and even make a nice visualization! (see bootstrappability).
    3. There is active effort among Guix folks to minimize the number of trusted binaries even further. OriansJ’s stage0, and janneke’s Mes all aim to achieve reduced binary boostrap for Guix. In fact, I believe if OriansJ gets his way, we will end up some day with only a single trusted binary: hex0 (a ~500 byte self-hosting hex assembler).

    Steps to Completion

    • Successfully build bitcoin inside the Guix environment
    • Make check-symbols pass
    • Do the above but without nasty hacks
    • Solve some of the more innocuous hacks
    • Make it cross-compile (HELP WANTED HERE)
      • Linux
        • x86_64-linux-gnu
        • i686-linux-gnu
        • aarch64-linux-gnu
        • arm-linux-gnueabihf
        • riscv64-linux-gnu
      • OS X
        • x86_64-apple-darwin14
      • Windows
        • x86_64-w64-mingw32
    • Maybe make importer for depends syntax
    • Document build process for future releases
    • Extra: Pin the revision of Guix that we build with with Guix inferiors

    Help Wanted

    Old content no. 3

    Old content no. 2

    Here’s what ldd src/bitcoind looks like when built in a Guix container:

    0	linux-vdso.so.1 (0x00007ffcc2d90000)
    1	libdl.so.2 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libdl.so.2 (0x00007fb7eda09000)
    2	librt.so.1 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/librt.so.1 (0x00007fb7ed9ff000)
    3	libstdc++.so.6 => /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6 (0x00007fb7ed87c000)
    4	libpthread.so.0 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libpthread.so.0 (0x00007fb7ed85b000)
    5	libm.so.6 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libm.so.6 (0x00007fb7ed6da000)
    6	libgcc_s.so.1 => /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libgcc_s.so.1 (0x00007fb7ed6bf000)
    7	libc.so.6 => /gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libc.so.6 (0x00007fb7ed506000)
    8	/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fb7ee3a0000)
    

    And here’s what it looks in one of our releases:

    0	linux-vdso.so.1 (0x00007ffff52cd000)
    1	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f87726b4000)
    2	librt.so.1 => /usr/lib/librt.so.1 (0x00007f87726aa000)
    3	libm.so.6 => /usr/lib/libm.so.6 (0x00007f8772525000)
    4	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f877250b000)
    5	libc.so.6 => /usr/lib/libc.so.6 (0x00007f8772347000)
    6	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f8773392000)
    

    I suspect it is because my script does not apply the gitian-input patches described in the release process but there is no description as to how these patches are applied. It might also be something else entirely.

    Edit: It is something else. It appears that the gitian inputs are only used by gitian-win-signer.yml

    How to Help

    1. Install Guix on your distro either from source or perform a binary installation
    2. Try out my branch and the command described above!
  2. ryanofsky commented at 6:10 pm on January 28, 2019: member

    To help explain this PR: I didn’t immediately realize this change is mainly using GUIX as a container environment, not using GUIX as a package manger.

    The depends command first downloads binaries because networking is not available in the container:

    0make -C depends -j"$(nproc)" download
    

    Then a normal build is basically done, but inside a container with GUIX autotools, gcc, perl, etc packages:

    0guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts --no-substitutes < contrib/guix/build.sh
    
  3. in src/Makefile.am:591 in d003431caf outdated
    587@@ -588,13 +588,13 @@ clean-local:
    588 check-symbols: $(bin_PROGRAMS)
    589 if GLIBC_BACK_COMPAT
    590 	@echo "Checking glibc back compat..."
    591-	$(AM_V_at) READELF=$(READELF) CPPFILT=$(CPPFILT) $(top_srcdir)/contrib/devtools/symbol-check.py < $(bin_PROGRAMS)
    592+	$(AM_V_at) READELF=$(READELF) CPPFILT=$(CPPFILT) python3 $(top_srcdir)/contrib/devtools/symbol-check.py < $(bin_PROGRAMS)
    


    MarcoFalke commented at 6:23 pm on January 28, 2019:
    nit: Don’t we use $(PYTHON) for those?

    dongcarl commented at 6:36 pm on January 28, 2019:
    Good catch!
  4. dongcarl force-pushed on Jan 28, 2019
  5. DrahtBot commented at 6:42 pm on January 28, 2019: member

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Conflicts

    No conflicts as of last run.

  6. fanquake added the label Build system on Jan 28, 2019
  7. practicalswift commented at 9:32 am on January 29, 2019: contributor
    Concept ACK @dongcarl The scope of PR would include making builds reproducible, right? If so, what type of reproducibility would be required? What are the reproducibility requirements of Guix?
  8. fanquake commented at 12:34 pm on January 29, 2019: member
    Concept ACK
  9. dongcarl commented at 5:13 pm on January 29, 2019: member

    @practicalswift Yes it would, we would want bit-for-bit reproducibility so that we can sign hashes just like in gitian. My plan is to use Guix simply as a container environment builder right now, which has worked quite well.

    I’ve already upstreamed patches that would make the bitcoin-core Guix package deterministic. I think the next step after having everything working in a container environment is to make custom Guix packages for our depends (we can’t just use the Guix package they have because of differing configure/build flags between Guix packages and our depends tree).

  10. laanwj commented at 3:09 pm on January 30, 2019: member

    This PR enables building bitcoin in Guix containers. Guix is a transactional package manager much like Nix, but unlike Nix, it has more of a focus on bootstrappability and reproducibility which are attractive for security-sensitive projects like bitcoin.

    Nice. I’ve been playing around with NixOS a bit lately, didn’t know about guix. Concept ACK. Thanks for working on this! @theuni what do you think?

  11. in contrib/guix/build.sh:7 in 1e7a391d49 outdated
    0@@ -0,0 +1,37 @@
    1+set -ex
    2+
    3+# Make /usr/bin if it doesn't exist
    4+[ -e /usr/bin ] || mkdir -p /usr/bin
    5+
    6+# Symlink file to a conventional path
    7+[ -e /usr/bin ] || ln -s "$(command -v file)" /usr/bin/file
    


    dongcarl commented at 3:21 pm on January 30, 2019:
    0[ -e /usr/bin/file ] || ln -s "$(command -v file)" /usr/bin/file
    
  12. in contrib/guix/build.sh:4 in 1e7a391d49 outdated
    0@@ -0,0 +1,37 @@
    1+set -ex
    


    practicalswift commented at 9:16 am on January 31, 2019:
    Should specify which shell is to be used with shebang line?

    wtogami commented at 7:41 pm on February 7, 2019:
    Not necessarily. You can limit your shell syntax to the least common denominator of posix syntax supported by the most minimal shells (busybox, dash, etc.) Specify a specific other shell if you want convenience of syntax features of that particular shell?

    dongcarl commented at 7:46 pm on February 7, 2019:
    @practicalswift Didn’t see this… But yes @wtogami is right, I try to conform to the common denominator of POSIX sh for portability’s sake.
  13. laanwj commented at 6:30 pm on January 31, 2019: member

    Travis fail:

    0Missing expected shebang "#!/usr/bin/env bash" or "#!/bin/sh" in contrib/guix/build.sh
    
  14. dongcarl force-pushed on Jan 31, 2019
  15. MarcoFalke added the label Needs gitian build on Feb 1, 2019
  16. MarcoFalke removed the label Needs gitian build on Feb 1, 2019
  17. dongcarl force-pushed on Feb 4, 2019
  18. in contrib/guix/manifest.scm:10 in af6149ebfa outdated
     5+ shells
     6+ python
     7+ pkg-config
     8+ linux
     9+ certs
    10+ curl)
    


    wtogami commented at 7:50 pm on February 7, 2019:
    curl shouldn’t be necessary in the container if depends is pre-populated. May require editing the depends system?
  19. in contrib/guix/build.sh:21 in af6149ebfa outdated
    16+./autogen.sh
    17+
    18+CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests"
    19+HOST_CFLAGS="-O2 -g"
    20+HOST_CXXFLAGS="-O2 -g"
    21+HOST_LDFLAGS=-static-libstdc++
    


    wtogami commented at 11:06 pm on February 7, 2019:
    0	libstdc++.so.6 => /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6 (0x00007fb7ed87c000)
    

    Your ldd output indicates that it isn’t static linking libstdc++.

  20. wtogami commented at 11:15 pm on February 7, 2019: contributor

    Your ldd output …

    0/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fb7ee3a0000)
    

    Sounds to be caused by Guix’s intentional hardcoding with -rpath.

    https://www.gnu.org/software/guix/manual/en/html_node/Application-Setup.html

    The wrapper’s purpose is to inspect the -L and -l switches passed to the linker, add corresponding -rpath arguments, and invoke the actual linker with this new set of arguments. By default, the linker wrapper refuses to link to libraries outside the store to ensure “purity”. This can be annoying when using the toolchain to link with local libraries. To allow references to libraries outside the store you need to define the environment variable GUIX_LD_WRAPPER_ALLOW_IMPURITIES.

  21. dongcarl commented at 8:23 pm on February 12, 2019: member

    Just an update. I’ve worked through most of the problems, right now at the end of the build, when make -C src --jobs=1 check-symbols is executed, we get the following:

    0==> out <==
    1make: Entering directory '/home/dongcarl/src/bitcoin/v0.17.1-guix/src'
    2Checking glibc back compat...
    3qt/bitcoin-qt: NEEDED library libexpat.so.1 is not allowed
    4
    5==> err <==
    6make: *** [Makefile:11768: check-symbols] Error 1
    

    What’s curious about this is that in our releases, libexpat shows up when I do ldd bitcoin-qt:

    0        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f7e48c95000)
    

    which is almost identical to how it shows up when I do ldd src/qt/bitcoin-qt on my builds:

    0        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007fe212e8a000)
    

    Maybe I’m understanding how linkers work incorrectly, but will continue digging.

  22. wtogami commented at 10:54 pm on February 14, 2019: contributor
    0==> out <==
    1make: Entering directory '/home/dongcarl/src/bitcoin/v0.17.1-guix/src'
    2Checking glibc back compat...
    3qt/bitcoin-qt: NEEDED library libexpat.so.1 is not allowed
    4
    5==> err <==
    6make: *** [Makefile:11768: check-symbols] Error 1
    

    What’s curious about this is that in our releases, libexpat shows up when I do ldd bitcoin-qt:

    0        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f7e48c95000)
    

    which is almost identical to how it shows up when I do ldd src/qt/bitcoin-qt on my builds:

    0        libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007fe212e8a000)
    

    Maybe I’m understanding how linkers work incorrectly, but will continue digging.

    0           $ objdump -p /path/to/program | grep NEEDED
    1
    2       Note, however, that this alternative shows only the direct dependencies of the executable, while ldd shows the entire dependency tree of the executable.
    
  23. dongcarl commented at 0:51 am on February 15, 2019: member

    @wtogami Good find! Here it is for my Guix container build of bitcoin-qt:

     0  NEEDED               libpthread.so.0
     1  NEEDED               libdl.so.2
     2  NEEDED               libm.so.6
     3  NEEDED               libfontconfig.so.1
     4  NEEDED               libexpat.so.1
     5  NEEDED               libfreetype.so.6
     6  NEEDED               libX11-xcb.so.1
     7  NEEDED               libX11.so.6
     8  NEEDED               libxcb.so.1
     9  NEEDED               librt.so.1
    10  NEEDED               libgcc_s.so.1
    11  NEEDED               libc.so.6
    12  NEEDED               ld-linux-x86-64.so.2
    

    Here it is for the release version of bitcoin-qt:

     0  NEEDED               libpthread.so.0
     1  NEEDED               libdl.so.2
     2  NEEDED               libm.so.6
     3  NEEDED               libfontconfig.so.1
     4  NEEDED               libfreetype.so.6
     5  NEEDED               libX11-xcb.so.1
     6  NEEDED               libX11.so.6
     7  NEEDED               libxcb.so.1
     8  NEEDED               librt.so.1
     9  NEEDED               libgcc_s.so.1
    10  NEEDED               libc.so.6
    11  NEEDED               ld-linux-x86-64.so.2
    

    It would seem that libexpat.so.1 is a direct dependency of the Guix build version but not the release version.

  24. in contrib/guix/build.sh:3 in af6149ebfa outdated
    0@@ -0,0 +1,39 @@
    1+#!/bin/sh
    2+
    


    fanquake commented at 2:36 am on February 15, 2019:
    Can you add export LC_ALL=C to make Travis happy.

    MarcoFalke commented at 3:40 pm on March 18, 2019:
    @dongcarl ^ ?
  25. in depends/funcs.mk:81 in af6149ebfa outdated
    76@@ -77,7 +77,7 @@ $(1)_download_path_fixed=$(subst :,\:,$$($(1)_download_path))
    77 
    78 #default commands
    79 $(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)),$$($(1)_download_file),$($(1)_file_name),$($(1)_sha256_hash))
    80-$(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash)  $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash &&  $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && tar --strip-components=1 -xf $$($(1)_source)
    81+$(1)_extract_cmds ?= mkdir -p $$($(1)_extract_dir) && echo "$$($(1)_sha256_hash)  $$($(1)_source)" > $$($(1)_extract_dir)/.$$($(1)_file_name).hash &&  $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$$($(1)_file_name).hash && tar --no-same-owner --strip-components=1 -xf $$($(1)_source)
    


    fanquake commented at 2:45 am on February 15, 2019:
    Looks like the additions of --no-same-owner to tar commands inside depends is extensive.

    dongcarl commented at 9:47 pm on February 18, 2019:
    @fanquake Yup, should I make it a separate PR?

    fanquake commented at 2:26 am on March 13, 2019:
    Resolving as this has been split in to #15581.
  26. laanwj added this to the milestone 0.19.0 on Feb 21, 2019
  27. laanwj commented at 9:03 am on February 21, 2019: member
    Adding, optimistically, the 0.19 milestone.
  28. dongcarl commented at 7:01 pm on February 21, 2019: member

    Another observation I made today: the guix build output had

    0  NEEDED               libdl.so.2
    

    for bitcoind, bitcoin-cli, bitcoin-tx, and test_bitcoin, while the release versions didn’t. However, bitcoin-qt had that NEED in both the guix build and the release build.

  29. in contrib/guix/manifest.scm:84 in 30bb204a4d outdated
    79+   "autoconf"
    80+   "coreutils"
    81+   "which"
    82+   "tcsh"
    83+   "libtool"
    84+   "python2"
    


    MarcoFalke commented at 9:12 pm on February 27, 2019:
    Hmm, why would we need this?
  30. MarcoFalke commented at 8:09 pm on February 28, 2019: member

    How much RAM is needed to build this? It seems that when compiling tar (or something) and running its unit tests, it OOMs

    Currently I run gitian builds on a 1CPU 4GB bionic and the below failed on a machine with 8GB

     0$ guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts --no-substitutes
     1....
     2
     3
     4
     5146: bad next volume                                 ok
     6147: file start at the beginning of a posix volume   ok
     7
     8Owner and Groups
     9
    10148: --owner and --group                             ok
    11149: --owner-map and --group-map                     ok
    12
    13Sparse files
    14
    15150: sparse files                                    ok
    16151: extracting sparse file over a pipe              ok
    17152: storing sparse files > 8G                       ok
    18153: storing long sparse file names                  ok
    19Killed
    

    When I run guix environment --container --pure --no-grafts --no-substitutes tar it does not get killed.

    Full logs from above:

    stdout is empty stderr is:

       0guile: warning: failed to install locale
       1hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and
       2defining `GUIX_LOCPATH', along these lines:
       3
       4     guix package -i glibc-utf8-locales
       5     export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
       6
       7See the "Application Setup" section in the manual, for more info.
       8
       9
      10The following derivations will be built:
      11   /gnu/store/vhv41qv6jp628638kpi4sz4j3zn4qc6k-profile.drv
      12   /gnu/store/p6ip1v8qaxjqvpyb2fh5xcs4zvxp79b0-info-dir.drv
      13   /gnu/store/ry9v3ggm7w4f8yg8vdgag70mzzvhr7sb-xz-5.2.4.tar.gz.drv
      14   /gnu/store/xfvxiv4vz34kffr48y9r5q7v0ng9sl2w-certdata2pem-2013.drv
      15   /gnu/store/aiyyn6psglsh74irdpb4xjckwx2ab0f7-xtrans-1.3.5.tar.bz2.drv
      16   /gnu/store/p22bal0ia4zwjnip1ygspasw0ihqbllb-xtrans-1.3.5.drv
      17   /gnu/store/ir6k33mr9qilg55sb9p0ip8md2fsip31-xcb-proto-1.13.tar.bz2.drv
      18   /gnu/store/f98gcg2vl9jga7a97r2rqlz3mzbqhzpl-python-minimal-3.7.0.drv
      19   /gnu/store/jm5j862fm8ir4nwgabs1l5f79ngzki5r-libxslt-1.1.32.drv
      20   /gnu/store/xgzvalqpjzrhrwx91j2n2q3sy1n2frwi-xcb-proto-1.13.drv
      21   /gnu/store/z2rs4kjpk93sbx3wjayrkpy8r4s9vg45-python-minimal-wrapper-3.7.0.drv
      22   /gnu/store/8as0ncngkj4agfjgww14m7kmk0ixl77j-fontconfig-2.13.1.drv
      23   /gnu/store/ai77aiv2zadhx9q8c3q6bfikvhdds9hp-libxft-2.3.2.drv
      24   /gnu/store/kn049rjvb6in7mprrkinzhgk1rxvg3fn-libxrender-0.9.10.drv
      25   /gnu/store/m7wznzi150l1xmzd4q3spakjfd45bgvf-xorgproto-2018.4.tar.bz2.drv
      26   /gnu/store/vm171sqh8872sa5d3w09bbf4dgzbciqs-util-macros-1.19.2.tar.bz2.drv
      27   /gnu/store/3ch9p55s0k01n1adqywlyyyhij318h3b-libxext-1.3.3.drv
      28   /gnu/store/3fhgy83diq5gb1cd26pysy4v2a1xcrj6-util-macros-1.19.2.drv
      29   /gnu/store/7s8mbaw3qrwldilcjm2ixw3ziacsjbb0-xorgproto-2018.4.drv
      30   /gnu/store/ikvkgar6yscbrg0n1nhiri305xk9qq48-tk-8.6.8.drv
      31   /gnu/store/pybyi9shr94xk27xxhrh5bxf57i8kapc-libxcb-1.13.drv
      32   /gnu/store/vh5iib4gysm7gbamqd7fi03ngvlfc9kn-libx11-1.6.6.drv
      33   /gnu/store/vvm5b4m9z5h49pphmwi2b38rz8jqnykp-libxau-1.0.8.drv
      34   /gnu/store/xsk9mn6kjbpvl4ayxh0hwm65p0fcvlwx-libxdmcp-1.1.2.drv
      35   /gnu/store/v1zzsnhnjrjsxbkk191n003187pl2x7m-util-linux-2.32.1.tar.xz.drv
      36   /gnu/store/5s2zhcmxz4b544mh71m0np880njwms70-net-base-5.3.drv
      37   /gnu/store/l10arjy2qx9wdvb2ww5czc03yiiiq16j-util-linux-2.32.1.tar.xz.drv
      38   /gnu/store/b78vb0m6gqadlhq6x9128md2kmrwhz7f-ca-certificate-bundle.drv
      39   /gnu/store/szrgb5jydahaxi9hfwlg38p04xzjqfxz-shishi-1.0.2.drv
      40   /gnu/store/1liq09a42rg51i2jsyav248jn4kb92bh-tzdata2018d.tar.gz.drv
      41   /gnu/store/xn642asrl27q5zdcpfb8jm6x3r8k64bx-tzcode2018d.tar.gz.drv
      42   /gnu/store/ha6aplh18j0mwm962f9m3gy7l5bb5xv5-libxml2-2.9.8.drv
      43   /gnu/store/j96ymnrypiwj0wg8vq3z26ncaa65rp95-tzdata-2018d.drv
      44   /gnu/store/0r4vmf2gv1h1627lixj8qxgnc25d00dx-python-wrapper-3.7.0.drv
      45   /gnu/store/0zklfyrrdw65c2q2972imdji0dy5yar8-libtiff-4.0.9.drv
      46   /gnu/store/dam9vx59xa6vvyzv60d9iv7vkm4nrcrn-tcl-8.6.8.drv
      47   /gnu/store/5l79hasx8c91rmcn3lk9s2a468idzfz8-ghostscript-9.24.drv
      48   /gnu/store/d077q0lpmlc0j78mgkrv89jyadbl7288-groff-1.22.3.drv
      49   /gnu/store/h0wghrjf1x7aqr3f5f59wvm15zav9plv-nghttp2-1.32.0.drv
      50   /gnu/store/mcykd75g6p353zrhx0wprnxyn3g7r8qd-gss-1.0.3.drv
      51   /gnu/store/s9jq43dj4wysb90kl9qk3r0sdwacqczl-openldap-2.4.46.drv
      52   /gnu/store/mw8ykj23iikxpm3p1z3j5vbf7i1zm0cr-which-2.21.tar.gz.drv
      53   /gnu/store/1zbzjr3acwjkz5f9bxf5way8qffy5va0-fonts-dir.drv
      54   /gnu/store/caa8w4lrzx8i8h2sy7c9y4npykblpw6r-pcre-8.42.drv
      55   /gnu/store/24g01xjcl4kg15nbf8z9sfsyldf9qvgf-gcc-8.2.0.drv
      56   /gnu/store/1jxh89f4fm9x8iniy1hw7xark15794cf-gcc-toolchain-8.2.0.drv
      57   /gnu/store/1sf91y8n6l9264s2h50fg7fd2nip1v2y-tcsh-6.20.00.drv
      58   /gnu/store/1w2ssg0lr638ix7gjv09v91hnl8fpmr4-grep-3.1.drv
      59   /gnu/store/5ainc4iplmapdby5k25g6kg6dixij6pn-which-2.21.drv
      60   /gnu/store/7k6a4cw5ij8hzfb67xb35fya2dc7b17m-curl-7.62.0.drv
      61   /gnu/store/b9vd4y9ayjhfkpf5r9394h6qjz1v6422-util-linux-2.32.1.drv
      62   /gnu/store/h9m9pzcycbqik310fkfs947j8fcjiach-python-3.7.0.drv
      63   /gnu/store/jkv17qls0wc8wa1827r339j2c7srx0ps-nss-certs-3.39.drv
      64   /gnu/store/ls2gzc9dls3mfii18xx79cangf25v1gn-python2-2.7.15.drv
      65   /gnu/store/n916hx1hb2b19fypa34q6874kfs3h63z-xz-5.2.4.drv
      66   /gnu/store/njbrqkirhklq4c7vdj5fk6x1x1pgpi8m-tar-1.30.drv
      67   /gnu/store/x4pkx320q9mjawy5hhafbv841jlip0q1-manual-database.drv
      68guile: warning: failed to install locale
      69hint: Consider installing the `glibc-utf8-locales' or `glibc-locales' package and
      70defining `GUIX_LOCPATH', along these lines:
      71
      72     guix package -i glibc-utf8-locales
      73     export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
      74
      75See the "Application Setup" section in the manual, for more info.
      76
      77
      78building /gnu/store/njbrqkirhklq4c7vdj5fk6x1x1pgpi8m-tar-1.30.drv...
      79starting phase `set-SOURCE-DATE-EPOCH'
      80phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds
      81starting phase `set-paths'
      82environment variable `PATH' set to `/gnu/store/bl3pxxj6frg0dww8pj5dvh2d1akwvj47-tar-1.30/bin:/gnu/store/h0c398zan9ibhk4w0c944vp5pwgzkfpd-gzip-1.9/bin:/gnu/store/j74aabxwayjl9yfyrm6ni482gykxq48b-bzip2-1.0.6/bin:/gnu/store/9425b5dwpfc04bb4p58hsjypxghliyr3-xz-5.2.4/bin:/gnu/store/ypiyk8ngn79cz655jrl0hng37xv54yjr-file-5.33/bin:/gnu/store/4bzzz0lzjc9b7bfsnqbq2j22d4fvf433-diffutils-3.6/bin:/gnu/store/a4rxl40jr7gmq8bp3dryq4yq67cwkwiw-patch-2.7.6/bin:/gnu/store/fd621k6fmdnr1yiw0lbvw5spqaa169j3-findutils-4.6.0/bin:/gnu/store/l67sib1ld0fgyf0f4vrzyxnmn4yvimvb-gawk-4.2.1/bin:/gnu/store/lmfddplnplxd03bcqv3w9pynbnr1fp8k-sed-4.5/bin:/gnu/store/02k245xy33cvcnr8vm3lagm9zmb1s2wa-grep-3.1/bin:/gnu/store/5s2nib1lrd2101bbrivcl17kjx1mspw6-coreutils-8.30/bin:/gnu/store/7j3941iannrngdvgbclyxid12vds5w9i-make-4.2.1/bin:/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin:/gnu/store/9ysmg2739n1ms84lx6hifncgc5l2hiy9-ld-wrapper-0/bin:/gnu/store/02iklp4swqs0ipxhg5x9b2shmj6b30h1-binutils-2.31.1/bin:/gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/bin:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/bin:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/sbin'
      83environment variable `BASH_LOADABLES_PATH' unset
      84environment variable `C_INCLUDE_PATH' set to `/gnu/store/j74aabxwayjl9yfyrm6ni482gykxq48b-bzip2-1.0.6/include:/gnu/store/9425b5dwpfc04bb4p58hsjypxghliyr3-xz-5.2.4/include:/gnu/store/ypiyk8ngn79cz655jrl0hng37xv54yjr-file-5.33/include:/gnu/store/l67sib1ld0fgyf0f4vrzyxnmn4yvimvb-gawk-4.2.1/include:/gnu/store/7j3941iannrngdvgbclyxid12vds5w9i-make-4.2.1/include:/gnu/store/02iklp4swqs0ipxhg5x9b2shmj6b30h1-binutils-2.31.1/include:/gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/include:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/include:/gnu/store/xha1mk4qji8fmg62nygfzdx0l94ikdhm-linux-libre-headers-4.14.67/include'
      85environment variable `CPLUS_INCLUDE_PATH' set to `/gnu/store/j74aabxwayjl9yfyrm6ni482gykxq48b-bzip2-1.0.6/include:/gnu/store/9425b5dwpfc04bb4p58hsjypxghliyr3-xz-5.2.4/include:/gnu/store/ypiyk8ngn79cz655jrl0hng37xv54yjr-file-5.33/include:/gnu/store/l67sib1ld0fgyf0f4vrzyxnmn4yvimvb-gawk-4.2.1/include:/gnu/store/7j3941iannrngdvgbclyxid12vds5w9i-make-4.2.1/include:/gnu/store/02iklp4swqs0ipxhg5x9b2shmj6b30h1-binutils-2.31.1/include:/gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/include:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/include:/gnu/store/xha1mk4qji8fmg62nygfzdx0l94ikdhm-linux-libre-headers-4.14.67/include'
      86environment variable `LIBRARY_PATH' set to `/gnu/store/j74aabxwayjl9yfyrm6ni482gykxq48b-bzip2-1.0.6/lib:/gnu/store/9425b5dwpfc04bb4p58hsjypxghliyr3-xz-5.2.4/lib:/gnu/store/ypiyk8ngn79cz655jrl0hng37xv54yjr-file-5.33/lib:/gnu/store/l67sib1ld0fgyf0f4vrzyxnmn4yvimvb-gawk-4.2.1/lib:/gnu/store/02iklp4swqs0ipxhg5x9b2shmj6b30h1-binutils-2.31.1/lib:/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib:/gnu/store/a3p8zc23w5asxck5h4mswz4s8yl9s6pa-glibc-2.28-static/lib:/gnu/store/mn3ymm3f2r4xjqf8m9fgmadh6b8p6fvr-glibc-utf8-locales-2.28/lib'
      87environment variable `GUIX_LOCPATH' set to `/gnu/store/mn3ymm3f2r4xjqf8m9fgmadh6b8p6fvr-glibc-utf8-locales-2.28/lib/locale'
      88phase `set-paths' succeeded after 0.0 seconds
      89starting phase `install-locale'
      90using 'en_US.utf8' locale for category "LC_ALL"
      91phase `install-locale' succeeded after 0.0 seconds
      92starting phase `unpack'
      93tar-1.30/
      94tar-1.30/ABOUT-NLS
      95tar-1.30/AUTHORS
      96tar-1.30/COPYING
      97tar-1.30/ChangeLog
      98tar-1.30/ChangeLog.1
      99tar-1.30/INSTALL
     100tar-1.30/Make.rules
     101tar-1.30/Makefile.am
     102tar-1.30/Makefile.in
     103tar-1.30/NEWS
     104tar-1.30/README
     105tar-1.30/THANKS
     106tar-1.30/TODO
     107tar-1.30/acinclude.m4
     108tar-1.30/aclocal.m4
     109tar-1.30/build-aux/
     110tar-1.30/build-aux/ar-lib
     111tar-1.30/build-aux/compile
     112tar-1.30/build-aux/config.guess
     113tar-1.30/build-aux/config.rpath
     114tar-1.30/build-aux/config.sub
     115tar-1.30/build-aux/depcomp
     116tar-1.30/build-aux/gitlog-to-changelog
     117tar-1.30/build-aux/install-sh
     118tar-1.30/build-aux/mdate-sh
     119tar-1.30/build-aux/missing
     120tar-1.30/build-aux/texinfo.tex
     121tar-1.30/build-aux/ylwrap
     122tar-1.30/config.h.in
     123tar-1.30/configure
     124tar-1.30/configure.ac
     125tar-1.30/doc/
     126tar-1.30/doc/Makefile.am
     127tar-1.30/doc/Makefile.in
     128tar-1.30/doc/dumpdir.texi
     129tar-1.30/doc/fdl.texi
     130tar-1.30/doc/freemanuals.texi
     131tar-1.30/doc/gendocs_template
     132tar-1.30/doc/genfile.texi
     133tar-1.30/doc/header.texi
     134tar-1.30/doc/intern.texi
     135tar-1.30/doc/mastermenu.el
     136tar-1.30/doc/parse-datetime.texi
     137tar-1.30/doc/recipes.texi
     138tar-1.30/doc/rendition.texi
     139tar-1.30/doc/rmt.8
     140tar-1.30/doc/snapshot.texi
     141tar-1.30/doc/sparse.texi
     142tar-1.30/doc/stamp-vti
     143tar-1.30/doc/tar-snapshot-edit.texi
     144tar-1.30/doc/tar.1
     145tar-1.30/doc/tar.info
     146tar-1.30/doc/tar.info-1
     147tar-1.30/doc/tar.info-2
     148tar-1.30/doc/tar.texi
     149tar-1.30/doc/texify.sed
     150tar-1.30/doc/untabify.el
     151tar-1.30/doc/value.texi
     152tar-1.30/doc/version.texi
     153tar-1.30/gnu/
     154tar-1.30/gnu/Makefile.am
     155tar-1.30/gnu/Makefile.in
     156tar-1.30/gnu/_Noreturn.h
     157tar-1.30/gnu/acl-errno-valid.c
     158tar-1.30/gnu/acl-internal.c
     159tar-1.30/gnu/acl-internal.h
     160tar-1.30/gnu/acl.h
     161tar-1.30/gnu/acl_entries.c
     162tar-1.30/gnu/alignof.h
     163tar-1.30/gnu/alloca.c
     164tar-1.30/gnu/alloca.in.h
     165tar-1.30/gnu/allocator.c
     166tar-1.30/gnu/allocator.h
     167tar-1.30/gnu/anytostr.c
     168tar-1.30/gnu/areadlink-with-size.c
     169tar-1.30/gnu/areadlink.c
     170tar-1.30/gnu/areadlink.h
     171tar-1.30/gnu/areadlinkat-with-size.c
     172tar-1.30/gnu/areadlinkat.c
     173tar-1.30/gnu/arg-nonnull.h
     174tar-1.30/gnu/argmatch.c
     175tar-1.30/gnu/argmatch.h
     176tar-1.30/gnu/argp-ba.c
     177tar-1.30/gnu/argp-eexst.c
     178tar-1.30/gnu/argp-fmtstream.c
     179tar-1.30/gnu/argp-fmtstream.h
     180tar-1.30/gnu/argp-fs-xinl.c
     181tar-1.30/gnu/argp-help.c
     182tar-1.30/gnu/argp-namefrob.h
     183tar-1.30/gnu/argp-parse.c
     184tar-1.30/gnu/argp-pin.c
     185tar-1.30/gnu/argp-pv.c
     186tar-1.30/gnu/argp-pvh.c
     187tar-1.30/gnu/argp-version-etc.c
     188tar-1.30/gnu/argp-version-etc.h
     189tar-1.30/gnu/argp-xinl.c
     190tar-1.30/gnu/argp.h
     191tar-1.30/gnu/asnprintf.c
     192tar-1.30/gnu/asprintf.c
     193tar-1.30/gnu/assure.h
     194tar-1.30/gnu/at-func.c
     195tar-1.30/gnu/at-func2.c
     196tar-1.30/gnu/backup-find.c
     197tar-1.30/gnu/backup-internal.h
     198tar-1.30/gnu/backupfile.c
     199tar-1.30/gnu/backupfile.h
     200tar-1.30/gnu/basename-lgpl.c
     201tar-1.30/gnu/basename.c
     202tar-1.30/gnu/bitrotate.c
     203tar-1.30/gnu/bitrotate.h
     204tar-1.30/gnu/btowc.c
     205tar-1.30/gnu/c++defs.h
     206tar-1.30/gnu/c-ctype.c
     207tar-1.30/gnu/c-ctype.h
     208tar-1.30/gnu/c-strcase.h
     209tar-1.30/gnu/c-strcasecmp.c
     210tar-1.30/gnu/c-strcaseeq.h
     211tar-1.30/gnu/c-strncasecmp.c
     212tar-1.30/gnu/canonicalize-lgpl.c
     213tar-1.30/gnu/careadlinkat.c
     214tar-1.30/gnu/careadlinkat.h
     215tar-1.30/gnu/chdir-long.c
     216tar-1.30/gnu/chdir-long.h
     217tar-1.30/gnu/chmodat.c
     218tar-1.30/gnu/chown.c
     219tar-1.30/gnu/chownat.c
     220tar-1.30/gnu/cloexec.c
     221tar-1.30/gnu/cloexec.h
     222tar-1.30/gnu/close-stream.c
     223tar-1.30/gnu/close-stream.h
     224tar-1.30/gnu/close.c
     225tar-1.30/gnu/closedir.c
     226tar-1.30/gnu/closeout.c
     227tar-1.30/gnu/closeout.h
     228tar-1.30/gnu/config.charset
     229tar-1.30/gnu/dirent--.h
     230tar-1.30/gnu/dirent-private.h
     231tar-1.30/gnu/dirent-safer.h
     232tar-1.30/gnu/dirent.in.h
     233tar-1.30/gnu/dirfd.c
     234tar-1.30/gnu/dirname-lgpl.c
     235tar-1.30/gnu/dirname.c
     236tar-1.30/gnu/dirname.h
     237tar-1.30/gnu/dosname.h
     238tar-1.30/gnu/dup-safer-flag.c
     239tar-1.30/gnu/dup-safer.c
     240tar-1.30/gnu/dup.c
     241tar-1.30/gnu/dup2.c
     242tar-1.30/gnu/errno.in.h
     243tar-1.30/gnu/error.c
     244tar-1.30/gnu/error.h
     245tar-1.30/gnu/euidaccess.c
     246tar-1.30/gnu/exclude.c
     247tar-1.30/gnu/exclude.h
     248tar-1.30/gnu/exitfail.c
     249tar-1.30/gnu/exitfail.h
     250tar-1.30/gnu/faccessat.c
     251tar-1.30/gnu/fchdir.c
     252tar-1.30/gnu/fchmodat.c
     253tar-1.30/gnu/fchown-stub.c
     254tar-1.30/gnu/fchownat.c
     255tar-1.30/gnu/fcntl.c
     256tar-1.30/gnu/fcntl.in.h
     257tar-1.30/gnu/fd-hook.c
     258tar-1.30/gnu/fd-hook.h
     259tar-1.30/gnu/fd-safer-flag.c
     260tar-1.30/gnu/fd-safer.c
     261tar-1.30/gnu/fdopendir.c
     262tar-1.30/gnu/fdutimensat.c
     263tar-1.30/gnu/file-has-acl.c
     264tar-1.30/gnu/fileblocks.c
     265tar-1.30/gnu/filename.h
     266tar-1.30/gnu/filenamecat-lgpl.c
     267tar-1.30/gnu/filenamecat.h
     268tar-1.30/gnu/flexmember.h
     269tar-1.30/gnu/float+.h
     270tar-1.30/gnu/float.c
     271tar-1.30/gnu/float.in.h
     272tar-1.30/gnu/fnmatch.c
     273tar-1.30/gnu/fnmatch.in.h
     274tar-1.30/gnu/fnmatch_loop.c
     275tar-1.30/gnu/fpending.c
     276tar-1.30/gnu/fpending.h
     277tar-1.30/gnu/fprintftime.c
     278tar-1.30/gnu/fprintftime.h
     279tar-1.30/gnu/fseek.c
     280tar-1.30/gnu/fseeko.c
     281tar-1.30/gnu/fstat.c
     282tar-1.30/gnu/fstatat.c
     283tar-1.30/gnu/full-write.c
     284tar-1.30/gnu/full-write.h
     285tar-1.30/gnu/futimens.c
     286tar-1.30/gnu/get-permissions.c
     287tar-1.30/gnu/getcwd-lgpl.c
     288tar-1.30/gnu/getcwd.c
     289tar-1.30/gnu/getdelim.c
     290tar-1.30/gnu/getdtablesize.c
     291tar-1.30/gnu/getfilecon.c
     292tar-1.30/gnu/getgroups.c
     293tar-1.30/gnu/getline.c
     294tar-1.30/gnu/getopt-cdefs.in.h
     295tar-1.30/gnu/getopt-core.h
     296tar-1.30/gnu/getopt-ext.h
     297tar-1.30/gnu/getopt-pfx-core.h
     298tar-1.30/gnu/getopt-pfx-ext.h
     299tar-1.30/gnu/getopt.c
     300tar-1.30/gnu/getopt.in.h
     301tar-1.30/gnu/getopt1.c
     302tar-1.30/gnu/getopt_int.h
     303tar-1.30/gnu/getpagesize.c
     304tar-1.30/gnu/getprogname.c
     305tar-1.30/gnu/getprogname.h
     306tar-1.30/gnu/gettext.h
     307tar-1.30/gnu/gettime.c
     308tar-1.30/gnu/gettimeofday.c
     309tar-1.30/gnu/group-member.c
     310tar-1.30/gnu/hard-locale.c
     311tar-1.30/gnu/hard-locale.h
     312tar-1.30/gnu/hash.c
     313tar-1.30/gnu/hash.h
     314tar-1.30/gnu/human.c
     315tar-1.30/gnu/human.h
     316tar-1.30/gnu/imaxtostr.c
     317tar-1.30/gnu/intprops.h
     318tar-1.30/gnu/inttostr.c
     319tar-1.30/gnu/inttostr.h
     320tar-1.30/gnu/inttypes.in.h
     321tar-1.30/gnu/iswblank.c
     322tar-1.30/gnu/itold.c
     323tar-1.30/gnu/langinfo.in.h
     324tar-1.30/gnu/lchown.c
     325tar-1.30/gnu/limits.in.h
     326tar-1.30/gnu/link.c
     327tar-1.30/gnu/linkat.c
     328tar-1.30/gnu/localcharset.c
     329tar-1.30/gnu/localcharset.h
     330tar-1.30/gnu/locale.in.h
     331tar-1.30/gnu/localeconv.c
     332tar-1.30/gnu/localtime-buffer.c
     333tar-1.30/gnu/localtime-buffer.h
     334tar-1.30/gnu/lseek.c
     335tar-1.30/gnu/lstat.c
     336tar-1.30/gnu/malloc.c
     337tar-1.30/gnu/malloca.c
     338tar-1.30/gnu/malloca.h
     339tar-1.30/gnu/malloca.valgrind
     340tar-1.30/gnu/mbchar.c
     341tar-1.30/gnu/mbchar.h
     342tar-1.30/gnu/mbrtowc.c
     343tar-1.30/gnu/mbscasecmp.c
     344tar-1.30/gnu/mbsinit.c
     345tar-1.30/gnu/mbsrtowcs-impl.h
     346tar-1.30/gnu/mbsrtowcs-state.c
     347tar-1.30/gnu/mbsrtowcs.c
     348tar-1.30/gnu/mbtowc-impl.h
     349tar-1.30/gnu/mbtowc.c
     350tar-1.30/gnu/mbuiter.c
     351tar-1.30/gnu/mbuiter.h
     352tar-1.30/gnu/memchr.c
     353tar-1.30/gnu/memchr.valgrind
     354tar-1.30/gnu/mempcpy.c
     355tar-1.30/gnu/memrchr.c
     356tar-1.30/gnu/minmax.h
     357tar-1.30/gnu/mkdir.c
     358tar-1.30/gnu/mkdirat.c
     359tar-1.30/gnu/mkdtemp.c
     360tar-1.30/gnu/mkfifo.c
     361tar-1.30/gnu/mkfifoat.c
     362tar-1.30/gnu/mknod.c
     363tar-1.30/gnu/mknodat.c
     364tar-1.30/gnu/mktime-internal.h
     365tar-1.30/gnu/mktime.c
     366tar-1.30/gnu/modechange.c
     367tar-1.30/gnu/modechange.h
     368tar-1.30/gnu/msvc-inval.c
     369tar-1.30/gnu/msvc-inval.h
     370tar-1.30/gnu/msvc-nothrow.c
     371tar-1.30/gnu/msvc-nothrow.h
     372tar-1.30/gnu/nl_langinfo.c
     373tar-1.30/gnu/nstrftime.c
     374tar-1.30/gnu/obstack.c
     375tar-1.30/gnu/obstack.h
     376tar-1.30/gnu/offtostr.c
     377tar-1.30/gnu/open.c
     378tar-1.30/gnu/openat-die.c
     379tar-1.30/gnu/openat-priv.h
     380tar-1.30/gnu/openat-proc.c
     381tar-1.30/gnu/openat.c
     382tar-1.30/gnu/openat.h
     383tar-1.30/gnu/opendir-safer.c
     384tar-1.30/gnu/opendir.c
     385tar-1.30/gnu/parse-datetime.c
     386tar-1.30/gnu/parse-datetime.h
     387tar-1.30/gnu/parse-datetime.y
     388tar-1.30/gnu/pathmax.h
     389tar-1.30/gnu/pipe-safer.c
     390tar-1.30/gnu/printf-args.c
     391tar-1.30/gnu/printf-args.h
     392tar-1.30/gnu/printf-parse.c
     393tar-1.30/gnu/printf-parse.h
     394tar-1.30/gnu/priv-set.c
     395tar-1.30/gnu/priv-set.h
     396tar-1.30/gnu/progname.c
     397tar-1.30/gnu/progname.h
     398tar-1.30/gnu/quote.h
     399tar-1.30/gnu/quotearg.c
     400tar-1.30/gnu/quotearg.h
     401tar-1.30/gnu/raise.c
     402tar-1.30/gnu/rawmemchr.c
     403tar-1.30/gnu/rawmemchr.valgrind
     404tar-1.30/gnu/read.c
     405tar-1.30/gnu/readdir.c
     406tar-1.30/gnu/readlink.c
     407tar-1.30/gnu/readlinkat.c
     408tar-1.30/gnu/realloc.c
     409tar-1.30/gnu/ref-add.sin
     410tar-1.30/gnu/ref-del.sin
     411tar-1.30/gnu/regcomp.c
     412tar-1.30/gnu/regex.c
     413tar-1.30/gnu/regex.h
     414tar-1.30/gnu/regex_internal.c
     415tar-1.30/gnu/regex_internal.h
     416tar-1.30/gnu/regexec.c
     417tar-1.30/gnu/rename.c
     418tar-1.30/gnu/renameat.c
     419tar-1.30/gnu/renameat2.c
     420tar-1.30/gnu/renameat2.h
     421tar-1.30/gnu/rewinddir.c
     422tar-1.30/gnu/rmdir.c
     423tar-1.30/gnu/root-uid.h
     424tar-1.30/gnu/rpmatch.c
     425tar-1.30/gnu/safe-read.c
     426tar-1.30/gnu/safe-read.h
     427tar-1.30/gnu/safe-write.c
     428tar-1.30/gnu/safe-write.h
     429tar-1.30/gnu/same-inode.h
     430tar-1.30/gnu/save-cwd.c
     431tar-1.30/gnu/save-cwd.h
     432tar-1.30/gnu/savedir.c
     433tar-1.30/gnu/savedir.h
     434tar-1.30/gnu/se-context.c
     435tar-1.30/gnu/se-context.in.h
     436tar-1.30/gnu/se-selinux.c
     437tar-1.30/gnu/se-selinux.in.h
     438tar-1.30/gnu/selinux-at.c
     439tar-1.30/gnu/selinux-at.h
     440tar-1.30/gnu/set-permissions.c
     441tar-1.30/gnu/setenv.c
     442tar-1.30/gnu/signal.in.h
     443tar-1.30/gnu/size_max.h
     444tar-1.30/gnu/sleep.c
     445tar-1.30/gnu/snprintf.c
     446tar-1.30/gnu/stat-macros.h
     447tar-1.30/gnu/stat-time.c
     448tar-1.30/gnu/stat-time.h
     449tar-1.30/gnu/stat-w32.c
     450tar-1.30/gnu/stat-w32.h
     451tar-1.30/gnu/stat.c
     452tar-1.30/gnu/statat.c
     453tar-1.30/gnu/stdalign.in.h
     454tar-1.30/gnu/stdarg.in.h
     455tar-1.30/gnu/stdbool.in.h
     456tar-1.30/gnu/stddef.in.h
     457tar-1.30/gnu/stdint.in.h
     458tar-1.30/gnu/stdio-impl.h
     459tar-1.30/gnu/stdio.in.h
     460tar-1.30/gnu/stdlib.in.h
     461tar-1.30/gnu/stpcpy.c
     462tar-1.30/gnu/strcasecmp.c
     463tar-1.30/gnu/strchrnul.c
     464tar-1.30/gnu/strchrnul.valgrind
     465tar-1.30/gnu/strdup.c
     466tar-1.30/gnu/streq.h
     467tar-1.30/gnu/strerror-override.c
     468tar-1.30/gnu/strerror-override.h
     469tar-1.30/gnu/strerror.c
     470tar-1.30/gnu/strftime.h
     471tar-1.30/gnu/string.in.h
     472tar-1.30/gnu/strings.in.h
     473tar-1.30/gnu/stripslash.c
     474tar-1.30/gnu/strncasecmp.c
     475tar-1.30/gnu/strndup.c
     476tar-1.30/gnu/strnlen.c
     477tar-1.30/gnu/strnlen1.c
     478tar-1.30/gnu/strnlen1.h
     479tar-1.30/gnu/strtoimax.c
     480tar-1.30/gnu/strtol.c
     481tar-1.30/gnu/strtoll.c
     482tar-1.30/gnu/strtoul.c
     483tar-1.30/gnu/strtoull.c
     484tar-1.30/gnu/strtoumax.c
     485tar-1.30/gnu/symlink.c
     486tar-1.30/gnu/symlinkat.c
     487tar-1.30/gnu/sys_stat.in.h
     488tar-1.30/gnu/sys_time.in.h
     489tar-1.30/gnu/sys_types.in.h
     490tar-1.30/gnu/sysexits.in.h
     491tar-1.30/gnu/tempname.c
     492tar-1.30/gnu/tempname.h
     493tar-1.30/gnu/time-internal.h
     494tar-1.30/gnu/time.in.h
     495tar-1.30/gnu/time_r.c
     496tar-1.30/gnu/time_rz.c
     497tar-1.30/gnu/timegm.c
     498tar-1.30/gnu/timespec-sub.c
     499tar-1.30/gnu/timespec.c
     500tar-1.30/gnu/timespec.h
     501tar-1.30/gnu/tzset.c
     502tar-1.30/gnu/uinttostr.c
     503tar-1.30/gnu/umaxtostr.c
     504tar-1.30/gnu/unistd--.h
     505tar-1.30/gnu/unistd-safer.h
     506tar-1.30/gnu/unistd.c
     507tar-1.30/gnu/unistd.in.h
     508tar-1.30/gnu/unitypes.in.h
     509tar-1.30/gnu/uniwidth/
     510tar-1.30/gnu/uniwidth/cjk.h
     511tar-1.30/gnu/uniwidth/width.c
     512tar-1.30/gnu/uniwidth.in.h
     513tar-1.30/gnu/unlink.c
     514tar-1.30/gnu/unlinkat.c
     515tar-1.30/gnu/unlinkdir.c
     516tar-1.30/gnu/unlinkdir.h
     517tar-1.30/gnu/unlocked-io.h
     518tar-1.30/gnu/unsetenv.c
     519tar-1.30/gnu/unused-parameter.h
     520tar-1.30/gnu/utime.c
     521tar-1.30/gnu/utime.in.h
     522tar-1.30/gnu/utimens.c
     523tar-1.30/gnu/utimens.h
     524tar-1.30/gnu/utimensat.c
     525tar-1.30/gnu/vasnprintf.c
     526tar-1.30/gnu/vasnprintf.h
     527tar-1.30/gnu/vasprintf.c
     528tar-1.30/gnu/verify.h
     529tar-1.30/gnu/version-etc-fsf.c
     530tar-1.30/gnu/version-etc.c
     531tar-1.30/gnu/version-etc.h
     532tar-1.30/gnu/vsnprintf.c
     533tar-1.30/gnu/warn-on-use.h
     534tar-1.30/gnu/wchar.in.h
     535tar-1.30/gnu/wcrtomb.c
     536tar-1.30/gnu/wctype-h.c
     537tar-1.30/gnu/wctype.in.h
     538tar-1.30/gnu/wcwidth.c
     539tar-1.30/gnu/write.c
     540tar-1.30/gnu/xalloc-die.c
     541tar-1.30/gnu/xalloc-oversized.h
     542tar-1.30/gnu/xalloc.h
     543tar-1.30/gnu/xasprintf.c
     544tar-1.30/gnu/xgetcwd.c
     545tar-1.30/gnu/xgetcwd.h
     546tar-1.30/gnu/xmalloc.c
     547tar-1.30/gnu/xsize.c
     548tar-1.30/gnu/xsize.h
     549tar-1.30/gnu/xstrndup.c
     550tar-1.30/gnu/xstrndup.h
     551tar-1.30/gnu/xstrtol-error.c
     552tar-1.30/gnu/xstrtol.c
     553tar-1.30/gnu/xstrtol.h
     554tar-1.30/gnu/xstrtoul.c
     555tar-1.30/gnu/xstrtoumax.c
     556tar-1.30/gnu/xvasprintf.c
     557tar-1.30/gnu/xvasprintf.h
     558tar-1.30/lib/
     559tar-1.30/lib/Makefile.am
     560tar-1.30/lib/Makefile.in
     561tar-1.30/lib/attr-xattr.in.h
     562tar-1.30/lib/paxerror.c
     563tar-1.30/lib/paxexit-status.c
     564tar-1.30/lib/paxlib.h
     565tar-1.30/lib/paxnames.c
     566tar-1.30/lib/rmt.h
     567tar-1.30/lib/rtapelib.c
     568tar-1.30/lib/stdopen.c
     569tar-1.30/lib/stdopen.h
     570tar-1.30/lib/system-ioctl.h
     571tar-1.30/lib/system.h
     572tar-1.30/lib/wordsplit.c
     573tar-1.30/lib/wordsplit.h
     574tar-1.30/lib/xattr-at.c
     575tar-1.30/lib/xattr-at.h
     576tar-1.30/m4/
     577tar-1.30/m4/00gnulib.m4
     578tar-1.30/m4/absolute-header.m4
     579tar-1.30/m4/acl.m4
     580tar-1.30/m4/alloca.m4
     581tar-1.30/m4/argp.m4
     582tar-1.30/m4/asm-underscore.m4
     583tar-1.30/m4/backupfile.m4
     584tar-1.30/m4/bison.m4
     585tar-1.30/m4/btowc.m4
     586tar-1.30/m4/builtin-expect.m4
     587tar-1.30/m4/canonicalize.m4
     588tar-1.30/m4/chdir-long.m4
     589tar-1.30/m4/chown.m4
     590tar-1.30/m4/clock_time.m4
     591tar-1.30/m4/close-stream.m4
     592tar-1.30/m4/close.m4
     593tar-1.30/m4/closedir.m4
     594tar-1.30/m4/closeout.m4
     595tar-1.30/m4/codeset.m4
     596tar-1.30/m4/configmake.m4
     597tar-1.30/m4/d-ino.m4
     598tar-1.30/m4/dirent-safer.m4
     599tar-1.30/m4/dirent_h.m4
     600tar-1.30/m4/dirfd.m4
     601tar-1.30/m4/dirname.m4
     602tar-1.30/m4/double-slash-root.m4
     603tar-1.30/m4/dup.m4
     604tar-1.30/m4/dup2.m4
     605tar-1.30/m4/eealloc.m4
     606tar-1.30/m4/environ.m4
     607tar-1.30/m4/errno_h.m4
     608tar-1.30/m4/error.m4
     609tar-1.30/m4/euidaccess.m4
     610tar-1.30/m4/exponentd.m4
     611tar-1.30/m4/extensions.m4
     612tar-1.30/m4/extern-inline.m4
     613tar-1.30/m4/faccessat.m4
     614tar-1.30/m4/fchdir.m4
     615tar-1.30/m4/fchmodat.m4
     616tar-1.30/m4/fchownat.m4
     617tar-1.30/m4/fcntl-o.m4
     618tar-1.30/m4/fcntl.m4
     619tar-1.30/m4/fcntl_h.m4
     620tar-1.30/m4/fdopendir.m4
     621tar-1.30/m4/fileblocks.m4
     622tar-1.30/m4/filenamecat.m4
     623tar-1.30/m4/flexmember.m4
     624tar-1.30/m4/float_h.m4
     625tar-1.30/m4/fnmatch.m4
     626tar-1.30/m4/fpending.m4
     627tar-1.30/m4/fseek.m4
     628tar-1.30/m4/fseeko.m4
     629tar-1.30/m4/fstat.m4
     630tar-1.30/m4/fstatat.m4
     631tar-1.30/m4/futimens.m4
     632tar-1.30/m4/getcwd-abort-bug.m4
     633tar-1.30/m4/getcwd-path-max.m4
     634tar-1.30/m4/getcwd.m4
     635tar-1.30/m4/getdelim.m4
     636tar-1.30/m4/getdtablesize.m4
     637tar-1.30/m4/getgroups.m4
     638tar-1.30/m4/getline.m4
     639tar-1.30/m4/getopt.m4
     640tar-1.30/m4/getpagesize.m4
     641tar-1.30/m4/getprogname.m4
     642tar-1.30/m4/gettext.m4
     643tar-1.30/m4/gettime.m4
     644tar-1.30/m4/gettimeofday.m4
     645tar-1.30/m4/glibc21.m4
     646tar-1.30/m4/gnulib-common.m4
     647tar-1.30/m4/gnulib-comp.m4
     648tar-1.30/m4/group-member.m4
     649tar-1.30/m4/hard-locale.m4
     650tar-1.30/m4/host-cpu-c-abi.m4
     651tar-1.30/m4/human.m4
     652tar-1.30/m4/iconv.m4
     653tar-1.30/m4/include_next.m4
     654tar-1.30/m4/intlmacosx.m4
     655tar-1.30/m4/intmax_t.m4
     656tar-1.30/m4/inttostr.m4
     657tar-1.30/m4/inttypes-pri.m4
     658tar-1.30/m4/inttypes.m4
     659tar-1.30/m4/inttypes_h.m4
     660tar-1.30/m4/iswblank.m4
     661tar-1.30/m4/langinfo_h.m4
     662tar-1.30/m4/largefile.m4
     663tar-1.30/m4/lchown.m4
     664tar-1.30/m4/lib-ld.m4
     665tar-1.30/m4/lib-link.m4
     666tar-1.30/m4/lib-prefix.m4
     667tar-1.30/m4/libunistring-base.m4
     668tar-1.30/m4/limits-h.m4
     669tar-1.30/m4/link-follow.m4
     670tar-1.30/m4/link.m4
     671tar-1.30/m4/linkat.m4
     672tar-1.30/m4/localcharset.m4
     673tar-1.30/m4/locale-fr.m4
     674tar-1.30/m4/locale-ja.m4
     675tar-1.30/m4/locale-zh.m4
     676tar-1.30/m4/locale_h.m4
     677tar-1.30/m4/localeconv.m4
     678tar-1.30/m4/localtime-buffer.m4
     679tar-1.30/m4/longlong.m4
     680tar-1.30/m4/lseek.m4
     681tar-1.30/m4/lstat.m4
     682tar-1.30/m4/malloc.m4
     683tar-1.30/m4/malloca.m4
     684tar-1.30/m4/manywarnings.m4
     685tar-1.30/m4/mbchar.m4
     686tar-1.30/m4/mbiter.m4
     687tar-1.30/m4/mbrtowc.m4
     688tar-1.30/m4/mbsinit.m4
     689tar-1.30/m4/mbsrtowcs.m4
     690tar-1.30/m4/mbstate_t.m4
     691tar-1.30/m4/mbtowc.m4
     692tar-1.30/m4/memchr.m4
     693tar-1.30/m4/mempcpy.m4
     694tar-1.30/m4/memrchr.m4
     695tar-1.30/m4/minmax.m4
     696tar-1.30/m4/mkdir.m4
     697tar-1.30/m4/mkdirat.m4
     698tar-1.30/m4/mkdtemp.m4
     699tar-1.30/m4/mkfifo.m4
     700tar-1.30/m4/mkfifoat.m4
     701tar-1.30/m4/mknod.m4
     702tar-1.30/m4/mktime.m4
     703tar-1.30/m4/mmap-anon.m4
     704tar-1.30/m4/mode_t.m4
     705tar-1.30/m4/modechange.m4
     706tar-1.30/m4/msvc-inval.m4
     707tar-1.30/m4/msvc-nothrow.m4
     708tar-1.30/m4/multiarch.m4
     709tar-1.30/m4/nl_langinfo.m4
     710tar-1.30/m4/nls.m4
     711tar-1.30/m4/nocrash.m4
     712tar-1.30/m4/nstrftime.m4
     713tar-1.30/m4/obstack.m4
     714tar-1.30/m4/off_t.m4
     715tar-1.30/m4/open-cloexec.m4
     716tar-1.30/m4/open.m4
     717tar-1.30/m4/openat.m4
     718tar-1.30/m4/opendir.m4
     719tar-1.30/m4/parse-datetime.m4
     720tar-1.30/m4/pathmax.m4
     721tar-1.30/m4/paxutils.m4
     722tar-1.30/m4/po.m4
     723tar-1.30/m4/printf.m4
     724tar-1.30/m4/priv-set.m4
     725tar-1.30/m4/progtest.m4
     726tar-1.30/m4/quote.m4
     727tar-1.30/m4/quotearg.m4
     728tar-1.30/m4/raise.m4
     729tar-1.30/m4/rawmemchr.m4
     730tar-1.30/m4/read.m4
     731tar-1.30/m4/readdir.m4
     732tar-1.30/m4/readlink.m4
     733tar-1.30/m4/readlinkat.m4
     734tar-1.30/m4/realloc.m4
     735tar-1.30/m4/regex.m4
     736tar-1.30/m4/rename.m4
     737tar-1.30/m4/renameat.m4
     738tar-1.30/m4/rewinddir.m4
     739tar-1.30/m4/rmdir.m4
     740tar-1.30/m4/rmt.m4
     741tar-1.30/m4/rpmatch.m4
     742tar-1.30/m4/rtapelib.m4
     743tar-1.30/m4/safe-read.m4
     744tar-1.30/m4/safe-write.m4
     745tar-1.30/m4/save-cwd.m4
     746tar-1.30/m4/savedir.m4
     747tar-1.30/m4/selinux-context-h.m4
     748tar-1.30/m4/selinux-selinux-h.m4
     749tar-1.30/m4/setenv.m4
     750tar-1.30/m4/signal_h.m4
     751tar-1.30/m4/size_max.m4
     752tar-1.30/m4/sleep.m4
     753tar-1.30/m4/snprintf.m4
     754tar-1.30/m4/ssize_t.m4
     755tar-1.30/m4/stat-time.m4
     756tar-1.30/m4/stat.m4
     757tar-1.30/m4/stdalign.m4
     758tar-1.30/m4/stdarg.m4
     759tar-1.30/m4/stdbool.m4
     760tar-1.30/m4/stddef_h.m4
     761tar-1.30/m4/stdint.m4
     762tar-1.30/m4/stdint_h.m4
     763tar-1.30/m4/stdio_h.m4
     764tar-1.30/m4/stdlib_h.m4
     765tar-1.30/m4/stpcpy.m4
     766tar-1.30/m4/strcase.m4
     767tar-1.30/m4/strchrnul.m4
     768tar-1.30/m4/strdup.m4
     769tar-1.30/m4/strerror.m4
     770tar-1.30/m4/string_h.m4
     771tar-1.30/m4/strings_h.m4
     772tar-1.30/m4/strndup.m4
     773tar-1.30/m4/strnlen.m4
     774tar-1.30/m4/strtoimax.m4
     775tar-1.30/m4/strtol.m4
     776tar-1.30/m4/strtoll.m4
     777tar-1.30/m4/strtoul.m4
     778tar-1.30/m4/strtoull.m4
     779tar-1.30/m4/strtoumax.m4
     780tar-1.30/m4/symlink.m4
     781tar-1.30/m4/symlinkat.m4
     782tar-1.30/m4/sys_socket_h.m4
     783tar-1.30/m4/sys_stat_h.m4
     784tar-1.30/m4/sys_time_h.m4
     785tar-1.30/m4/sys_types_h.m4
     786tar-1.30/m4/sysexits.m4
     787tar-1.30/m4/system.m4
     788tar-1.30/m4/tempname.m4
     789tar-1.30/m4/time_h.m4
     790tar-1.30/m4/time_r.m4
     791tar-1.30/m4/time_rz.m4
     792tar-1.30/m4/timegm.m4
     793tar-1.30/m4/timespec.m4
     794tar-1.30/m4/tm_gmtoff.m4
     795tar-1.30/m4/tzset.m4
     796tar-1.30/m4/ulonglong.m4
     797tar-1.30/m4/unistd-safer.m4
     798tar-1.30/m4/unistd_h.m4
     799tar-1.30/m4/unlink.m4
     800tar-1.30/m4/unlinkat.m4
     801tar-1.30/m4/unlinkdir.m4
     802tar-1.30/m4/unlocked-io.m4
     803tar-1.30/m4/utime.m4
     804tar-1.30/m4/utime_h.m4
     805tar-1.30/m4/utimens.m4
     806tar-1.30/m4/utimensat.m4
     807tar-1.30/m4/utimes.m4
     808tar-1.30/m4/vasnprintf.m4
     809tar-1.30/m4/vasprintf.m4
     810tar-1.30/m4/version-etc.m4
     811tar-1.30/m4/vsnprintf.m4
     812tar-1.30/m4/warn-on-use.m4
     813tar-1.30/m4/warnings.m4
     814tar-1.30/m4/wchar_h.m4
     815tar-1.30/m4/wchar_t.m4
     816tar-1.30/m4/wcrtomb.m4
     817tar-1.30/m4/wctype_h.m4
     818tar-1.30/m4/wcwidth.m4
     819tar-1.30/m4/wint_t.m4
     820tar-1.30/m4/write.m4
     821tar-1.30/m4/xalloc.m4
     822tar-1.30/m4/xgetcwd.m4
     823tar-1.30/m4/xsize.m4
     824tar-1.30/m4/xstrndup.m4
     825tar-1.30/m4/xstrtol.m4
     826tar-1.30/m4/xvasprintf.m4
     827tar-1.30/po/
     828tar-1.30/po/LINGUAS
     829tar-1.30/po/Makefile.in.in
     830tar-1.30/po/Makevars
     831tar-1.30/po/POTFILES.in
     832tar-1.30/po/Rules-quot
     833tar-1.30/po/bg.gmo
     834tar-1.30/po/bg.po
     835tar-1.30/po/boldquot.sed
     836tar-1.30/po/ca.gmo
     837tar-1.30/po/ca.po
     838tar-1.30/po/cs.gmo
     839tar-1.30/po/cs.po
     840tar-1.30/po/da.gmo
     841tar-1.30/po/da.po
     842tar-1.30/po/de.gmo
     843tar-1.30/po/de.po
     844tar-1.30/po/el.gmo
     845tar-1.30/po/el.po
     846tar-1.30/po/en@boldquot.header
     847tar-1.30/po/en@quot.header
     848tar-1.30/po/eo.gmo
     849tar-1.30/po/eo.po
     850tar-1.30/po/es.gmo
     851tar-1.30/po/es.po
     852tar-1.30/po/et.gmo
     853tar-1.30/po/et.po
     854tar-1.30/po/eu.gmo
     855tar-1.30/po/eu.po
     856tar-1.30/po/fi.gmo
     857tar-1.30/po/fi.po
     858tar-1.30/po/fr.gmo
     859tar-1.30/po/fr.po
     860tar-1.30/po/ga.gmo
     861tar-1.30/po/ga.po
     862tar-1.30/po/gl.gmo
     863tar-1.30/po/gl.po
     864tar-1.30/po/hr.gmo
     865tar-1.30/po/hr.po
     866tar-1.30/po/hu.gmo
     867tar-1.30/po/hu.po
     868tar-1.30/po/id.gmo
     869tar-1.30/po/id.po
     870tar-1.30/po/insert-header.sin
     871tar-1.30/po/it.gmo
     872tar-1.30/po/it.po
     873tar-1.30/po/ja.gmo
     874tar-1.30/po/ja.po
     875tar-1.30/po/ko.gmo
     876tar-1.30/po/ko.po
     877tar-1.30/po/ky.gmo
     878tar-1.30/po/ky.po
     879tar-1.30/po/ms.gmo
     880tar-1.30/po/ms.po
     881tar-1.30/po/nb.gmo
     882tar-1.30/po/nb.po
     883tar-1.30/po/nl.gmo
     884tar-1.30/po/nl.po
     885tar-1.30/po/pl.gmo
     886tar-1.30/po/pl.po
     887tar-1.30/po/pt.gmo
     888tar-1.30/po/pt.po
     889tar-1.30/po/pt_BR.gmo
     890tar-1.30/po/pt_BR.po
     891tar-1.30/po/quot.sed
     892tar-1.30/po/remove-potcdate.sin
     893tar-1.30/po/ro.gmo
     894tar-1.30/po/ro.po
     895tar-1.30/po/ru.gmo
     896tar-1.30/po/ru.po
     897tar-1.30/po/sk.gmo
     898tar-1.30/po/sk.po
     899tar-1.30/po/sl.gmo
     900tar-1.30/po/sl.po
     901tar-1.30/po/sr.gmo
     902tar-1.30/po/sr.po
     903tar-1.30/po/stamp-po
     904tar-1.30/po/sv.gmo
     905tar-1.30/po/sv.po
     906tar-1.30/po/tar.pot
     907tar-1.30/po/tr.gmo
     908tar-1.30/po/tr.po
     909tar-1.30/po/uk.gmo
     910tar-1.30/po/uk.po
     911tar-1.30/po/vi.gmo
     912tar-1.30/po/vi.po
     913tar-1.30/po/zh_CN.gmo
     914tar-1.30/po/zh_CN.po
     915tar-1.30/po/zh_TW.gmo
     916tar-1.30/po/zh_TW.po
     917tar-1.30/rmt/
     918tar-1.30/rmt/Makefile.am
     919tar-1.30/rmt/Makefile.in
     920tar-1.30/rmt/rmt.c
     921tar-1.30/scripts/
     922tar-1.30/scripts/Makefile.am
     923tar-1.30/scripts/Makefile.in
     924tar-1.30/scripts/backup-specs
     925tar-1.30/scripts/backup.in
     926tar-1.30/scripts/backup.sh.in
     927tar-1.30/scripts/dump-remind.in
     928tar-1.30/scripts/restore.in
     929tar-1.30/src/
     930tar-1.30/src/Makefile.am
     931tar-1.30/src/Makefile.in
     932tar-1.30/src/arith.h
     933tar-1.30/src/buffer.c
     934tar-1.30/src/checkpoint.c
     935tar-1.30/src/common.h
     936tar-1.30/src/compare.c
     937tar-1.30/src/create.c
     938tar-1.30/src/delete.c
     939tar-1.30/src/exclist.c
     940tar-1.30/src/exit.c
     941tar-1.30/src/extract.c
     942tar-1.30/src/incremen.c
     943tar-1.30/src/list.c
     944tar-1.30/src/map.c
     945tar-1.30/src/misc.c
     946tar-1.30/src/names.c
     947tar-1.30/src/sparse.c
     948tar-1.30/src/suffix.c
     949tar-1.30/src/system.c
     950tar-1.30/src/tar.c
     951tar-1.30/src/tar.h
     952tar-1.30/src/transform.c
     953tar-1.30/src/unlink.c
     954tar-1.30/src/update.c
     955tar-1.30/src/utf8.c
     956tar-1.30/src/warning.c
     957tar-1.30/src/xattrs.c
     958tar-1.30/src/xattrs.h
     959tar-1.30/src/xheader.c
     960tar-1.30/tests/
     961tar-1.30/tests/Makefile.am
     962tar-1.30/tests/Makefile.in
     963tar-1.30/tests/T-cd.at
     964tar-1.30/tests/T-dir00.at
     965tar-1.30/tests/T-dir01.at
     966tar-1.30/tests/T-empty.at
     967tar-1.30/tests/T-mult.at
     968tar-1.30/tests/T-nest.at
     969tar-1.30/tests/T-nonl.at
     970tar-1.30/tests/T-null.at
     971tar-1.30/tests/T-null2.at
     972tar-1.30/tests/T-rec.at
     973tar-1.30/tests/T-recurse.at
     974tar-1.30/tests/T-zfile.at
     975tar-1.30/tests/acls01.at
     976tar-1.30/tests/acls02.at
     977tar-1.30/tests/acls03.at
     978tar-1.30/tests/add-file.at
     979tar-1.30/tests/append.at
     980tar-1.30/tests/append01.at
     981tar-1.30/tests/append02.at
     982tar-1.30/tests/append03.at
     983tar-1.30/tests/append04.at
     984tar-1.30/tests/append05.at
     985tar-1.30/tests/argcv.c
     986tar-1.30/tests/argcv.h
     987tar-1.30/tests/atlocal.in
     988tar-1.30/tests/backup01.at
     989tar-1.30/tests/capabs_raw01.at
     990tar-1.30/tests/checkseekhole.c
     991tar-1.30/tests/chtype.at
     992tar-1.30/tests/ckmtime.c
     993tar-1.30/tests/comperr.at
     994tar-1.30/tests/comprec.at
     995tar-1.30/tests/delete01.at
     996tar-1.30/tests/delete02.at
     997tar-1.30/tests/delete03.at
     998tar-1.30/tests/delete04.at
     999tar-1.30/tests/delete05.at
    1000tar-1.30/tests/difflink.at
    1001tar-1.30/tests/dirrem01.at
    1002tar-1.30/tests/dirrem02.at
    1003tar-1.30/tests/exclude.at
    1004tar-1.30/tests/exclude01.at
    1005tar-1.30/tests/exclude02.at
    1006tar-1.30/tests/exclude03.at
    1007tar-1.30/tests/exclude04.at
    1008tar-1.30/tests/exclude05.at
    1009tar-1.30/tests/exclude06.at
    1010tar-1.30/tests/exclude07.at
    1011tar-1.30/tests/exclude08.at
    1012tar-1.30/tests/exclude09.at
    1013tar-1.30/tests/exclude10.at
    1014tar-1.30/tests/exclude11.at
    1015tar-1.30/tests/exclude12.at
    1016tar-1.30/tests/exclude13.at
    1017tar-1.30/tests/exclude14.at
    1018tar-1.30/tests/exclude15.at
    1019tar-1.30/tests/exclude16.at
    1020tar-1.30/tests/extrac01.at
    1021tar-1.30/tests/extrac02.at
    1022tar-1.30/tests/extrac03.at
    1023tar-1.30/tests/extrac04.at
    1024tar-1.30/tests/extrac05.at
    1025tar-1.30/tests/extrac06.at
    1026tar-1.30/tests/extrac07.at
    1027tar-1.30/tests/extrac08.at
    1028tar-1.30/tests/extrac09.at
    1029tar-1.30/tests/extrac10.at
    1030tar-1.30/tests/extrac11.at
    1031tar-1.30/tests/extrac12.at
    1032tar-1.30/tests/extrac13.at
    1033tar-1.30/tests/extrac14.at
    1034tar-1.30/tests/extrac15.at
    1035tar-1.30/tests/extrac16.at
    1036tar-1.30/tests/extrac17.at
    1037tar-1.30/tests/extrac18.at
    1038tar-1.30/tests/extrac19.at
    1039tar-1.30/tests/extrac20.at
    1040tar-1.30/tests/extrac21.at
    1041tar-1.30/tests/filerem01.at
    1042tar-1.30/tests/filerem02.at
    1043tar-1.30/tests/genfile.c
    1044tar-1.30/tests/grow.at
    1045tar-1.30/tests/gzip.at
    1046tar-1.30/tests/ignfail.at
    1047tar-1.30/tests/incr01.at
    1048tar-1.30/tests/incr02.at
    1049tar-1.30/tests/incr03.at
    1050tar-1.30/tests/incr04.at
    1051tar-1.30/tests/incr05.at
    1052tar-1.30/tests/incr06.at
    1053tar-1.30/tests/incr07.at
    1054tar-1.30/tests/incr08.at
    1055tar-1.30/tests/incr09.at
    1056tar-1.30/tests/incr10.at
    1057tar-1.30/tests/incr11.at
    1058tar-1.30/tests/incremental.at
    1059tar-1.30/tests/indexfile.at
    1060tar-1.30/tests/label01.at
    1061tar-1.30/tests/label02.at
    1062tar-1.30/tests/label03.at
    1063tar-1.30/tests/label04.at
    1064tar-1.30/tests/label05.at
    1065tar-1.30/tests/link01.at
    1066tar-1.30/tests/link02.at
    1067tar-1.30/tests/link03.at
    1068tar-1.30/tests/link04.at
    1069tar-1.30/tests/listed01.at
    1070tar-1.30/tests/listed02.at
    1071tar-1.30/tests/listed03.at
    1072tar-1.30/tests/listed04.at
    1073tar-1.30/tests/listed05.at
    1074tar-1.30/tests/long01.at
    1075tar-1.30/tests/longv7.at
    1076tar-1.30/tests/lustar01.at
    1077tar-1.30/tests/lustar02.at
    1078tar-1.30/tests/lustar03.at
    1079tar-1.30/tests/map.at
    1080tar-1.30/tests/multiv01.at
    1081tar-1.30/tests/multiv02.at
    1082tar-1.30/tests/multiv03.at
    1083tar-1.30/tests/multiv04.at
    1084tar-1.30/tests/multiv05.at
    1085tar-1.30/tests/multiv06.at
    1086tar-1.30/tests/multiv07.at
    1087tar-1.30/tests/multiv08.at
    1088tar-1.30/tests/multiv09.at
    1089tar-1.30/tests/multiv10.at
    1090tar-1.30/tests/numeric.at
    1091tar-1.30/tests/old.at
    1092tar-1.30/tests/onetop01.at
    1093tar-1.30/tests/onetop02.at
    1094tar-1.30/tests/onetop03.at
    1095tar-1.30/tests/onetop04.at
    1096tar-1.30/tests/onetop05.at
    1097tar-1.30/tests/opcomp01.at
    1098tar-1.30/tests/opcomp02.at
    1099tar-1.30/tests/opcomp03.at
    1100tar-1.30/tests/opcomp04.at
    1101tar-1.30/tests/opcomp05.at
    1102tar-1.30/tests/opcomp06.at
    1103tar-1.30/tests/options.at
    1104tar-1.30/tests/options02.at
    1105tar-1.30/tests/options03.at
    1106tar-1.30/tests/owner.at
    1107tar-1.30/tests/package.m4
    1108tar-1.30/tests/pipe.at
    1109tar-1.30/tests/positional01.at
    1110tar-1.30/tests/positional02.at
    1111tar-1.30/tests/positional03.at
    1112tar-1.30/tests/recurs02.at
    1113tar-1.30/tests/recurse.at
    1114tar-1.30/tests/remfiles01.at
    1115tar-1.30/tests/remfiles02.at
    1116tar-1.30/tests/remfiles03.at
    1117tar-1.30/tests/remfiles04a.at
    1118tar-1.30/tests/remfiles04b.at
    1119tar-1.30/tests/remfiles04c.at
    1120tar-1.30/tests/remfiles05a.at
    1121tar-1.30/tests/remfiles05b.at
    1122tar-1.30/tests/remfiles05c.at
    1123tar-1.30/tests/remfiles06a.at
    1124tar-1.30/tests/remfiles06b.at
    1125tar-1.30/tests/remfiles06c.at
    1126tar-1.30/tests/remfiles07a.at
    1127tar-1.30/tests/remfiles07b.at
    1128tar-1.30/tests/remfiles07c.at
    1129tar-1.30/tests/remfiles08a.at
    1130tar-1.30/tests/remfiles08b.at
    1131tar-1.30/tests/remfiles08c.at
    1132tar-1.30/tests/remfiles09a.at
    1133tar-1.30/tests/remfiles09b.at
    1134tar-1.30/tests/remfiles09c.at
    1135tar-1.30/tests/remfiles10.at
    1136tar-1.30/tests/rename01.at
    1137tar-1.30/tests/rename02.at
    1138tar-1.30/tests/rename03.at
    1139tar-1.30/tests/rename04.at
    1140tar-1.30/tests/rename05.at
    1141tar-1.30/tests/same-order01.at
    1142tar-1.30/tests/same-order02.at
    1143tar-1.30/tests/selacl01.at
    1144tar-1.30/tests/selnx01.at
    1145tar-1.30/tests/shortfile.at
    1146tar-1.30/tests/shortrec.at
    1147tar-1.30/tests/shortupd.at
    1148tar-1.30/tests/sigpipe.at
    1149tar-1.30/tests/sparse01.at
    1150tar-1.30/tests/sparse02.at
    1151tar-1.30/tests/sparse03.at
    1152tar-1.30/tests/sparse04.at
    1153tar-1.30/tests/sparse05.at
    1154tar-1.30/tests/sparse06.at
    1155tar-1.30/tests/sparse07.at
    1156tar-1.30/tests/sparsemv.at
    1157tar-1.30/tests/sparsemvp.at
    1158tar-1.30/tests/spmvp00.at
    1159tar-1.30/tests/spmvp01.at
    1160tar-1.30/tests/spmvp10.at
    1161tar-1.30/tests/star/
    1162tar-1.30/tests/star/README
    1163tar-1.30/tests/star/gtarfail.at
    1164tar-1.30/tests/star/gtarfail2.at
    1165tar-1.30/tests/star/multi-fail.at
    1166tar-1.30/tests/star/pax-big-10g.at
    1167tar-1.30/tests/star/quicktest.sh
    1168tar-1.30/tests/star/ustar-big-2g.at
    1169tar-1.30/tests/star/ustar-big-8g.at
    1170tar-1.30/tests/testsuite
    1171tar-1.30/tests/testsuite.at
    1172tar-1.30/tests/time01.at
    1173tar-1.30/tests/time02.at
    1174tar-1.30/tests/truncate.at
    1175tar-1.30/tests/update.at
    1176tar-1.30/tests/update01.at
    1177tar-1.30/tests/update02.at
    1178tar-1.30/tests/update03.at
    1179tar-1.30/tests/verbose.at
    1180tar-1.30/tests/verify.at
    1181tar-1.30/tests/version.at
    1182tar-1.30/tests/volsize.at
    1183tar-1.30/tests/volume.at
    1184tar-1.30/tests/xattr01.at
    1185tar-1.30/tests/xattr02.at
    1186tar-1.30/tests/xattr03.at
    1187tar-1.30/tests/xattr04.at
    1188tar-1.30/tests/xattr05.at
    1189tar-1.30/tests/xattr06.at
    1190tar-1.30/tests/xattr07.at
    1191tar-1.30/tests/xform-h.at
    1192tar-1.30/tests/xform01.at
    1193tar-1.30/tests/xform02.at
    1194tar-1.30/tests/xform03.at
    1195phase `unpack' succeeded after 0.2 seconds
    1196starting phase `bootstrap'
    1197GNU build system bootstrapping not needed
    1198phase `bootstrap' succeeded after 0.0 seconds
    1199starting phase `patch-usr-bin-file'
    1200phase `patch-usr-bin-file' succeeded after 0.1 seconds
    1201starting phase `patch-source-shebangs'
    1202patch-shebang: ./build-aux/ar-lib: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1203patch-shebang: ./build-aux/compile: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1204patch-shebang: ./build-aux/config.guess: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1205patch-shebang: ./build-aux/config.rpath: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1206patch-shebang: ./build-aux/config.sub: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1207patch-shebang: ./build-aux/depcomp: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1208patch-shebang: ./build-aux/install-sh: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1209patch-shebang: ./build-aux/mdate-sh: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1210patch-shebang: ./build-aux/missing: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1211patch-shebang: ./build-aux/ylwrap: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1212patch-shebang: ./configure: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1213patch-shebang: ./gnu/config.charset: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1214patch-shebang: ./scripts/backup.in: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1215patch-shebang: ./scripts/backup.sh.in: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1216patch-shebang: ./scripts/dump-remind.in: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1217patch-shebang: ./scripts/restore.in: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1218patch-shebang: ./tests/star/quicktest.sh: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1219patch-shebang: ./tests/testsuite: changing `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    1220phase `patch-source-shebangs' succeeded after 0.1 seconds
    1221starting phase `configure'
    1222source directory: "/tmp/guix-build-tar-1.30.drv-0/tar-1.30" (relative from build: ".")
    1223build directory: "/tmp/guix-build-tar-1.30.drv-0/tar-1.30"
    1224configure flags: ("CONFIG_SHELL=/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/bash" "SHELL=/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/bash" "--prefix=/gnu/store/ipx79bfj2mrc8npj7s3qi3zri11jfhaw-tar-1.30" "--enable-fast-install" "--build=x86_64-unknown-linux-gnu")
    1225configure: WARNING: unrecognized options: --enable-fast-install
    1226checking for a BSD-compatible install... /gnu/store/5s2nib1lrd2101bbrivcl17kjx1mspw6-coreutils-8.30/bin/install -c
    1227checking whether build environment is sane... yes
    1228checking for a thread-safe mkdir -p... /gnu/store/5s2nib1lrd2101bbrivcl17kjx1mspw6-coreutils-8.30/bin/mkdir -p
    1229checking for gawk... gawk
    1230checking whether make sets $(MAKE)... no
    1231checking whether make supports nested variables... yes
    1232checking whether UID '998' is supported by ustar format... yes
    1233checking whether GID '998' is supported by ustar format... yes
    1234checking how to create a ustar tar archive... gnutar
    1235checking whether make supports nested variables... (cached) yes
    1236checking for style of include used by make... GNU
    1237checking for gcc... gcc
    1238checking whether the C compiler works... yes
    1239checking for C compiler default output file name... a.out
    1240checking for suffix of executables... 
    1241checking whether we are cross compiling... no
    1242checking for suffix of object files... o
    1243checking whether we are using the GNU C compiler... yes
    1244checking whether gcc accepts -g... yes
    1245checking for gcc option to accept ISO C89... none needed
    1246checking whether gcc understands -c and -o together... yes
    1247checking dependency style of gcc... gcc3
    1248checking for gcc option to accept ISO C99... none needed
    1249checking for gcc option to accept ISO Standard C... (cached) none needed
    1250checking for ranlib... ranlib
    1251checking for bison... no
    1252checking for byacc... no
    1253checking how to run the C preprocessor... gcc -E
    1254checking for grep that handles long lines and -e... /gnu/store/02k245xy33cvcnr8vm3lagm9zmb1s2wa-grep-3.1/bin/grep
    1255checking for egrep... /gnu/store/02k245xy33cvcnr8vm3lagm9zmb1s2wa-grep-3.1/bin/grep -E
    1256checking for ANSI C header files... yes
    1257checking for sys/types.h... yes
    1258checking for sys/stat.h... yes
    1259checking for stdlib.h... yes
    1260checking for string.h... yes
    1261checking for memory.h... yes
    1262checking for strings.h... yes
    1263checking for inttypes.h... yes
    1264checking for stdint.h... yes
    1265checking for unistd.h... yes
    1266checking minix/config.h usability... no
    1267checking minix/config.h presence... no
    1268checking for minix/config.h... no
    1269checking whether it is safe to define __EXTENSIONS__... yes
    1270checking whether _XOPEN_SOURCE should be defined... no
    1271checking for Minix Amsterdam compiler... no
    1272checking for ar... ar
    1273checking for _LARGEFILE_SOURCE value needed for large files... no
    1274checking for special C compiler options needed for large files... no
    1275checking for _FILE_OFFSET_BITS value needed for large files... no
    1276checking for special C compiler options needed for large files... (cached) no
    1277checking for _FILE_OFFSET_BITS value needed for large files... (cached) no
    1278checking for inline... inline
    1279checking for fcntl.h... yes
    1280checking for linux/fd.h... yes
    1281checking for memory.h... (cached) yes
    1282checking for net/errno.h... no
    1283checking for sgtty.h... yes
    1284checking for string.h... (cached) yes
    1285checking for sys/param.h... yes
    1286checking for sys/device.h... no
    1287checking for sys/gentape.h... no
    1288checking for sys/inet.h... no
    1289checking for sys/io/trioctl.h... no
    1290checking for sys/mtio.h... yes
    1291checking for sys/time.h... yes
    1292checking for sys/tprintf.h... no
    1293checking for sys/tape.h... no
    1294checking for unistd.h... (cached) yes
    1295checking for locale.h... yes
    1296checking for sys/types.h... (cached) yes
    1297checking for features.h... yes
    1298checking for linewrap.h... no
    1299checking for sys/socket.h... yes
    1300checking for dirent.h... yes
    1301checking for wctype.h... yes
    1302checking for stdio_ext.h... yes
    1303checking for sys/stat.h... (cached) yes
    1304checking for getopt.h... yes
    1305checking for sys/cdefs.h... yes
    1306checking for limits.h... yes
    1307checking for wchar.h... yes
    1308checking for stdint.h... (cached) yes
    1309checking for inttypes.h... (cached) yes
    1310checking for crtdefs.h... no
    1311checking for langinfo.h... yes
    1312checking for xlocale.h... no
    1313checking for sys/mman.h... yes
    1314checking for priv.h... no
    1315checking for malloc.h... yes
    1316checking for selinux/selinux.h... no
    1317checking for strings.h... (cached) yes
    1318checking for sysexits.h... yes
    1319checking for utime.h... yes
    1320checking for netdb.h... yes
    1321checking for sys/wait.h... yes
    1322checking for pwd.h... yes
    1323checking for grp.h... yes
    1324checking for sys/buf.h... no
    1325checking sys/mkdev.h usability... no
    1326checking sys/mkdev.h presence... no
    1327checking for sys/mkdev.h... no
    1328checking sys/sysmacros.h usability... yes
    1329checking sys/sysmacros.h presence... yes
    1330checking for sys/sysmacros.h... yes
    1331checking for st_fstype string in struct stat... no
    1332checking sys/acl.h usability... no
    1333checking sys/acl.h presence... no
    1334checking for sys/acl.h... no
    1335checking for mode_t... yes
    1336checking for pid_t... yes
    1337checking for off_t... yes
    1338checking for uid_t in sys/types.h... yes
    1339checking for major_t... no
    1340checking for minor_t... no
    1341checking for dev_t... yes
    1342checking for ino_t... yes
    1343checking for ssize_t... yes
    1344checking for fchmod... yes
    1345checking for flockfile... yes
    1346checking for funlockfile... yes
    1347checking for pathconf... yes
    1348checking for btowc... yes
    1349checking for canonicalize_file_name... yes
    1350checking for getcwd... yes
    1351checking for readlink... yes
    1352checking for realpath... yes
    1353checking for readlinkat... yes
    1354checking for chown... yes
    1355checking for fchown... yes
    1356checking for _set_invalid_parameter_handler... no
    1357checking for fchdir... yes
    1358checking for fdopendir... yes
    1359checking for faccessat... yes
    1360checking for fchmodat... yes
    1361checking for lchmod... no
    1362checking for fcntl... yes
    1363checking for symlink... yes
    1364checking for mempcpy... yes
    1365checking for isblank... yes
    1366checking for iswctype... yes
    1367checking for mbsrtowcs... yes
    1368checking for wmemchr... yes
    1369checking for wmemcpy... yes
    1370checking for wmempcpy... yes
    1371checking for fstatat... yes
    1372checking for futimens... yes
    1373checking for getdelim... yes
    1374checking for getdtablesize... yes
    1375checking for getprogname... no
    1376checking for getexecname... no
    1377checking for gettimeofday... yes
    1378checking for nanotime... no
    1379checking for iswcntrl... yes
    1380checking for iswblank... yes
    1381checking for link... yes
    1382checking for openat... yes
    1383checking for linkat... yes
    1384checking for lstat... yes
    1385checking for mbsinit... yes
    1386checking for mbrtowc... yes
    1387checking for mprotect... yes
    1388checking for mkdirat... yes
    1389checking for mkfifo... yes
    1390checking for mkfifoat... yes
    1391checking for mknodat... yes
    1392checking for mknod... yes
    1393checking for tzset... yes
    1394checking for nl_langinfo... yes
    1395checking for renameat... yes
    1396checking for setenv... yes
    1397checking for sleep... yes
    1398checking for snprintf... yes
    1399checking for strdup... yes
    1400checking for strndup... yes
    1401checking for strtoimax... yes
    1402checking for strtoumax... yes
    1403checking for symlinkat... yes
    1404checking for localtime_r... yes
    1405checking for timegm... yes
    1406checking for pipe... yes
    1407checking for unlinkat... yes
    1408checking for utime... yes
    1409checking for futimes... yes
    1410checking for futimesat... yes
    1411checking for utimensat... yes
    1412checking for lutimes... yes
    1413checking for vasnprintf... no
    1414checking for wcrtomb... yes
    1415checking for wcwidth... yes
    1416checking for setlocale... yes
    1417checking for fsync... yes
    1418checking for size_t... yes
    1419checking for working alloca.h... yes
    1420checking for alloca... yes
    1421checking for C/C++ restrict keyword... __restrict
    1422checking whether clearerr_unlocked is declared... yes
    1423checking whether feof_unlocked is declared... yes
    1424checking whether ferror_unlocked is declared... yes
    1425checking whether fflush_unlocked is declared... yes
    1426checking whether fgets_unlocked is declared... yes
    1427checking whether fputc_unlocked is declared... yes
    1428checking whether fputs_unlocked is declared... yes
    1429checking whether fread_unlocked is declared... yes
    1430checking whether fwrite_unlocked is declared... yes
    1431checking whether getc_unlocked is declared... yes
    1432checking whether getchar_unlocked is declared... yes
    1433checking whether putc_unlocked is declared... yes
    1434checking whether putchar_unlocked is declared... yes
    1435checking whether strerror_r is declared... yes
    1436checking for strerror_r... yes
    1437checking whether strerror_r returns char *... yes
    1438checking build system type... x86_64-unknown-linux-gnu
    1439checking host system type... x86_64-unknown-linux-gnu
    1440checking for d_ino member in directory struct... yes
    1441checking for long file names... yes
    1442checking whether <wchar.h> uses 'inline' correctly... yes
    1443checking for nl_langinfo and CODESET... yes
    1444checking for a traditional french locale... none
    1445checking whether // is distinct from /... no
    1446checking whether realpath works... yes
    1447checking for unistd.h... (cached) yes
    1448checking for working chown... yes
    1449checking whether chown dereferences symlinks... yes
    1450checking whether chown honors trailing slash... yes
    1451checking whether chown always updates ctime... yes
    1452checking whether the preprocessor supports include_next... yes
    1453checking whether system header files limit the line length... no
    1454checking if environ is properly declared... yes
    1455checking for complete errno.h... yes
    1456checking type of array argument to getgroups... gid_t
    1457checking whether lstat correctly handles trailing slash... yes
    1458checking whether fchdir is declared... yes
    1459checking for working fcntl.h... yes
    1460checking for mbstate_t... yes
    1461checking whether stdin defaults to large file offsets... yes
    1462checking whether fseeko is declared... yes
    1463checking for fseeko... yes
    1464checking whether stat file-mode macros are broken... no
    1465checking for nlink_t... yes
    1466checking whether fchmodat is declared without a macro... yes
    1467checking whether fstat is declared without a macro... yes
    1468checking whether fstatat is declared without a macro... yes
    1469checking whether futimens is declared without a macro... yes
    1470checking whether lchmod is declared without a macro... yes
    1471checking whether lstat is declared without a macro... yes
    1472checking whether mkdirat is declared without a macro... yes
    1473checking whether mkfifo is declared without a macro... yes
    1474checking whether mkfifoat is declared without a macro... yes
    1475checking whether mknod is declared without a macro... yes
    1476checking whether mknodat is declared without a macro... yes
    1477checking whether stat is declared without a macro... yes
    1478checking whether utimensat is declared without a macro... yes
    1479checking whether getcwd (NULL, 0) allocates memory for result... yes
    1480checking for getcwd with POSIX signature... yes
    1481checking whether getcwd is declared... yes
    1482checking whether getdelim is declared... yes
    1483checking whether getdtablesize is declared... yes
    1484checking whether getline is declared... yes
    1485checking for getopt.h... (cached) yes
    1486checking for getopt_long_only... yes
    1487checking whether getopt is POSIX compatible... yes
    1488checking for working GNU getopt function... yes
    1489checking for working GNU getopt_long function... yes
    1490checking for struct timeval... yes
    1491checking for wide-enough struct timeval.tv_sec member... yes
    1492checking whether gettimeofday is declared without a macro... yes
    1493checking host CPU and C ABI... x86_64
    1494checking whether limits.h has ULLONG_WIDTH etc.... yes
    1495checking for wint_t... yes
    1496checking whether wint_t is too small... no
    1497checking for unsigned long long int... yes
    1498checking for long long int... yes
    1499checking whether stdint.h conforms to C99... yes
    1500checking whether stdint.h predates C++11... no
    1501checking whether stdint.h has UINTMAX_WIDTH etc.... yes
    1502checking whether imaxabs is declared without a macro... yes
    1503checking whether imaxdiv is declared without a macro... yes
    1504checking whether strtoimax is declared without a macro... yes
    1505checking whether strtoumax is declared without a macro... yes
    1506checking for inttypes.h... (cached) yes
    1507checking whether the inttypes.h PRIxNN macros are broken... no
    1508checking whether iswcntrl works... yes
    1509checking for towlower... yes
    1510checking for wctype_t... yes
    1511checking for wctrans_t... yes
    1512checking whether wctype is declared without a macro... yes
    1513checking whether iswctype is declared without a macro... yes
    1514checking whether wctrans is declared without a macro... yes
    1515checking whether towctrans is declared without a macro... yes
    1516checking for O_CLOEXEC... yes
    1517checking whether we are using the GNU C Library >= 2.1 or uClibc... yes
    1518checking for wchar_t... yes
    1519checking for max_align_t... yes
    1520checking whether NULL can be used in arbitrary expressions... yes
    1521checking whether malloc, realloc, calloc are POSIX compliant... yes
    1522checking for stdlib.h... (cached) yes
    1523checking for GNU libc compatible malloc... yes
    1524checking for a traditional japanese locale... none
    1525checking for a transitional chinese locale... none
    1526checking for a french Unicode locale... fr_FR.UTF-8
    1527checking for mmap... yes
    1528checking for MAP_ANONYMOUS... yes
    1529checking whether memchr works... yes
    1530checking whether memrchr is declared... yes
    1531checking whether <limits.h> defines MIN and MAX... no
    1532checking whether <sys/param.h> defines MIN and MAX... yes
    1533checking whether time_t is signed... yes
    1534checking whether alarm is declared... yes
    1535checking for working mktime... yes
    1536checking whether struct tm is in sys/time.h or time.h... time.h
    1537checking for struct tm.tm_zone... yes
    1538checking for struct tm.tm_gmtoff... yes
    1539checking for promoted mode_t type... mode_t
    1540checking for stdbool.h that conforms to C99... yes
    1541checking for _Bool... yes
    1542checking for compound literals... yes
    1543checking for library containing setfilecon... no
    1544checking whether setenv is declared... yes
    1545checking search.h usability... yes
    1546checking search.h presence... yes
    1547checking for search.h... yes
    1548checking for tsearch... yes
    1549checking for sigset_t... yes
    1550checking whether snprintf returns a byte count as in C99... yes
    1551checking whether snprintf is declared... yes
    1552checking whether strdup is declared... yes
    1553checking whether strerror(0) succeeds... yes
    1554checking whether ffsl is declared without a macro... yes
    1555checking whether ffsll is declared without a macro... yes
    1556checking whether memmem is declared without a macro... yes
    1557checking whether mempcpy is declared without a macro... yes
    1558checking whether memrchr is declared without a macro... yes
    1559checking whether rawmemchr is declared without a macro... yes
    1560checking whether stpcpy is declared without a macro... yes
    1561checking whether stpncpy is declared without a macro... yes
    1562checking whether strchrnul is declared without a macro... yes
    1563checking whether strdup is declared without a macro... yes
    1564checking whether strncat is declared without a macro... yes
    1565checking whether strndup is declared without a macro... yes
    1566checking whether strnlen is declared without a macro... yes
    1567checking whether strpbrk is declared without a macro... yes
    1568checking whether strsep is declared without a macro... yes
    1569checking whether strcasestr is declared without a macro... yes
    1570checking whether strtok_r is declared without a macro... yes
    1571checking whether strerror_r is declared without a macro... yes
    1572checking whether strsignal is declared without a macro... yes
    1573checking whether strverscmp is declared without a macro... yes
    1574checking whether ffs is declared without a macro... yes
    1575checking whether strcasecmp is declared without a macro... yes
    1576checking whether strncasecmp is declared without a macro... yes
    1577checking whether strndup is declared... (cached) yes
    1578checking whether strnlen is declared... (cached) yes
    1579checking whether strtoimax is declared... (cached) yes
    1580checking whether strtoumax is declared... (cached) yes
    1581checking for struct timespec in <time.h>... yes
    1582checking whether unsetenv is declared... yes
    1583checking whether the utimes function works... yes
    1584checking for inttypes.h... yes
    1585checking for stdint.h... yes
    1586checking for intmax_t... yes
    1587checking where to find the exponent in a 'double'... word 1 bit 20
    1588checking for snprintf... (cached) yes
    1589checking for strnlen... yes
    1590checking for wcslen... yes
    1591checking for wcsnlen... yes
    1592checking for mbrtowc... (cached) yes
    1593checking for wcrtomb... (cached) yes
    1594checking whether _snprintf is declared... no
    1595checking whether vsnprintf is declared... yes
    1596checking for sys/acl.h... (cached) no
    1597configure: WARNING: libacl development library was not found or not usable.
    1598configure: WARNING: GNU tar will be built without ACL support.
    1599checking for alloca as a compiler built-in... yes
    1600checking whether program_invocation_name is declared... yes
    1601checking whether program_invocation_short_name is declared... yes
    1602checking whether program_invocation_name is defined... yes
    1603checking whether program_invocation_short_name is defined... yes
    1604checking whether btowc(0) is correct... yes
    1605checking whether btowc(EOF) is correct... guessing yes
    1606checking for __builtin_expect... yes
    1607checking whether this system has an arbitrary file name length limit... yes
    1608checking for library containing clock_gettime... none required
    1609checking for clock_gettime... yes
    1610checking for clock_settime... yes
    1611checking for closedir... yes
    1612checking for d_ino member in directory struct... (cached) yes
    1613checking whether alphasort is declared without a macro... yes
    1614checking whether closedir is declared without a macro... yes
    1615checking whether dirfd is declared without a macro... yes
    1616checking whether fdopendir is declared without a macro... yes
    1617checking whether opendir is declared without a macro... yes
    1618checking whether readdir is declared without a macro... yes
    1619checking whether rewinddir is declared without a macro... yes
    1620checking whether scandir is declared without a macro... yes
    1621checking for dirfd... yes
    1622checking whether dirfd is declared... (cached) yes
    1623checking whether dirfd is a macro... no
    1624checking whether // is distinct from /... (cached) no
    1625checking whether dup works... yes
    1626checking whether dup2 works... yes
    1627checking for error_at_line... yes
    1628checking for euidaccess... yes
    1629checking for fchownat... yes
    1630checking whether fchownat works with AT_SYMLINK_NOFOLLOW... yes
    1631checking whether fchownat works with an empty file name... yes
    1632checking whether fcntl handles F_DUPFD correctly... yes
    1633checking whether fcntl understands F_DUPFD_CLOEXEC... needs runtime check
    1634checking whether fcntl is declared without a macro... yes
    1635checking whether openat is declared without a macro... yes
    1636checking whether fdopendir is declared... (cached) yes
    1637checking whether fdopendir works... yes
    1638checking for getxattr with XATTR_NAME_POSIX_ACL macros... yes
    1639checking for struct stat.st_blocks... yes
    1640checking for flexible array member... yes
    1641checking whether conversion from 'int' to 'long double' works... yes
    1642checking for working GNU fnmatch... yes
    1643checking for __fpending... yes
    1644checking whether __fpending is declared... yes
    1645checking for fseeko... (cached) yes
    1646checking whether fstatat (..., 0) works... yes
    1647checking whether futimens works... yes
    1648checking whether getcwd handles long file names properly... yes
    1649checking for getpagesize... yes
    1650checking whether getcwd aborts when 4k < cwd_length < 16k... no
    1651checking for working getdelim function... yes
    1652checking whether getdtablesize works... yes
    1653checking for getgroups... yes
    1654checking for working getgroups... yes
    1655checking whether getgroups handles negative values... yes
    1656checking for getline... yes
    1657checking for working getline function... yes
    1658checking for getpagesize... (cached) yes
    1659checking whether getpagesize is declared... yes
    1660checking whether program_invocation_name is declared... (cached) yes
    1661checking whether program_invocation_short_name is declared... (cached) yes
    1662checking whether __argv is declared... no
    1663checking whether gettimeofday clobbers localtime buffer... no
    1664checking for gettimeofday with POSIX signature... almost
    1665checking for group_member... yes
    1666checking whether INT32_MAX < INTMAX_MAX... yes
    1667checking whether INT64_MAX == LONG_MAX... yes
    1668checking whether UINT32_MAX < UINTMAX_MAX... yes
    1669checking whether UINT64_MAX == ULONG_MAX... yes
    1670checking whether iswblank is declared... yes
    1671checking whether langinfo.h defines CODESET... yes
    1672checking whether langinfo.h defines T_FMT_AMPM... yes
    1673checking whether langinfo.h defines ERA... yes
    1674checking whether langinfo.h defines YESEXPR... yes
    1675checking whether nl_langinfo is declared without a macro... yes
    1676checking for lchown... yes
    1677checking whether link obeys POSIX... yes
    1678checking for __xpg4... no
    1679checking whether link(2) dereferences a symlink... no
    1680checking whether linkat() can link symlinks... yes
    1681checking whether linkat handles trailing slash correctly... yes
    1682checking whether locale.h conforms to POSIX:2001... yes
    1683checking whether struct lconv is properly defined... yes
    1684checking whether setlocale is declared without a macro... yes
    1685checking whether duplocale is declared without a macro... yes
    1686checking whether lseek detects pipes... yes
    1687checking for stdlib.h... (cached) yes
    1688checking for GNU libc compatible malloc... (cached) yes
    1689checking whether mbrtowc handles incomplete characters... guessing yes
    1690checking whether mbrtowc works as well as mbtowc... guessing yes
    1691checking whether mbrtowc handles a NULL pwc argument... yes
    1692checking whether mbrtowc handles a NULL string argument... yes
    1693checking whether mbrtowc has a correct return value... yes
    1694checking whether mbrtowc returns 0 when parsing a NUL character... guessing yes
    1695checking whether mbrtowc works on empty input... yes
    1696checking whether the C locale is free of encoding errors... no
    1697checking whether mbrtowc handles incomplete characters... (cached) guessing yes
    1698checking whether mbrtowc works as well as mbtowc... (cached) guessing yes
    1699checking whether mbrtowc handles incomplete characters... (cached) guessing yes
    1700checking whether mbrtowc works as well as mbtowc... (cached) guessing yes
    1701checking whether mbsrtowcs works... yes
    1702checking for mempcpy... (cached) yes
    1703checking for memrchr... yes
    1704checking whether mkdir handles trailing slash... yes
    1705checking whether mkdir handles trailing dot... yes
    1706checking for mkdtemp... yes
    1707checking whether mkfifo rejects trailing slashes... yes
    1708checking whether mknod can create fifo without root privileges... yes
    1709checking for __mktime_internal... no
    1710checking whether YESEXPR works... yes
    1711checking for obstacks that work with any size object... no
    1712checking whether open recognizes a trailing slash... yes
    1713checking for opendir... yes
    1714checking for struct tm.tm_zone... (cached) yes
    1715checking for getppriv... no
    1716checking whether program_invocation_name is declared... (cached) yes
    1717checking whether program_invocation_short_name is declared... (cached) yes
    1718checking for raise... yes
    1719checking for rawmemchr... yes
    1720checking for readdir... yes
    1721checking whether readlink signature is correct... yes
    1722checking whether readlink handles trailing slash correctly... yes
    1723checking whether readlinkat signature is correct... yes
    1724checking for working re_compile_pattern... yes
    1725checking whether rename honors trailing slash on destination... yes
    1726checking whether rename honors trailing slash on source... yes
    1727checking whether rename manages hard links correctly... yes
    1728checking whether rename manages existing destinations correctly... yes
    1729checking linux/fs.h usability... yes
    1730checking linux/fs.h presence... yes
    1731checking for linux/fs.h... yes
    1732checking for linux/fs.h... (cached) yes
    1733checking for rewinddir... yes
    1734checking whether rmdir works... yes
    1735checking for rpmatch... yes
    1736checking selinux/flask.h usability... no
    1737checking selinux/flask.h presence... no
    1738checking for selinux/flask.h... no
    1739checking whether setenv validates arguments... yes
    1740checking for volatile sig_atomic_t... yes
    1741checking for sighandler_t... yes
    1742checking whether pthread_sigmask is declared without a macro... yes
    1743checking whether sigaction is declared without a macro... yes
    1744checking whether sigaddset is declared without a macro... yes
    1745checking whether sigdelset is declared without a macro... yes
    1746checking whether sigemptyset is declared without a macro... yes
    1747checking whether sigfillset is declared without a macro... yes
    1748checking whether sigismember is declared without a macro... yes
    1749checking whether sigpending is declared without a macro... yes
    1750checking whether sigprocmask is declared without a macro... yes
    1751checking for stdint.h... (cached) yes
    1752checking for SIZE_MAX... yes
    1753checking whether sleep is declared... yes
    1754checking for working sleep... yes
    1755checking for snprintf... (cached) yes
    1756checking whether snprintf respects a size of 1... yes
    1757checking whether printf supports POSIX/XSI format strings with positions... yes
    1758checking for ssize_t... (cached) yes
    1759checking whether stat handles trailing slashes on files... yes
    1760checking for struct stat.st_atim.tv_nsec... yes
    1761checking whether struct stat.st_atim is of type struct timespec... yes
    1762checking for struct stat.st_birthtimespec.tv_nsec... no
    1763checking for struct stat.st_birthtimensec... no
    1764checking for struct stat.st_birthtim.tv_nsec... no
    1765checking for working stdalign.h... yes
    1766checking for va_copy... yes
    1767checking for max_align_t... (cached) yes
    1768checking whether NULL can be used in arbitrary expressions... (cached) yes
    1769checking which flavor of printf attribute matches inttypes macros... system
    1770checking whether dprintf is declared without a macro... yes
    1771checking whether fpurge is declared without a macro... no
    1772checking whether fseeko is declared without a macro... yes
    1773checking whether ftello is declared without a macro... yes
    1774checking whether getdelim is declared without a macro... yes
    1775checking whether getline is declared without a macro... yes
    1776checking whether gets is declared without a macro... no
    1777checking whether pclose is declared without a macro... yes
    1778checking whether popen is declared without a macro... yes
    1779checking whether renameat is declared without a macro... yes
    1780checking whether snprintf is declared without a macro... yes
    1781checking whether tmpfile is declared without a macro... yes
    1782checking whether vdprintf is declared without a macro... yes
    1783checking whether vsnprintf is declared without a macro... yes
    1784checking whether _Exit is declared without a macro... yes
    1785checking whether atoll is declared without a macro... yes
    1786checking whether canonicalize_file_name is declared without a macro... yes
    1787checking whether getloadavg is declared without a macro... yes
    1788checking whether getsubopt is declared without a macro... yes
    1789checking whether grantpt is declared without a macro... yes
    1790checking whether initstate is declared without a macro... yes
    1791checking whether initstate_r is declared without a macro... yes
    1792checking whether mkdtemp is declared without a macro... yes
    1793checking whether mkostemp is declared without a macro... yes
    1794checking whether mkostemps is declared without a macro... yes
    1795checking whether mkstemp is declared without a macro... yes
    1796checking whether mkstemps is declared without a macro... yes
    1797checking whether posix_openpt is declared without a macro... yes
    1798checking whether ptsname is declared without a macro... yes
    1799checking whether ptsname_r is declared without a macro... yes
    1800checking whether qsort_r is declared without a macro... yes
    1801checking whether random is declared without a macro... yes
    1802checking whether random_r is declared without a macro... yes
    1803checking whether reallocarray is declared without a macro... yes
    1804checking whether realpath is declared without a macro... yes
    1805checking whether rpmatch is declared without a macro... yes
    1806checking whether secure_getenv is declared without a macro... yes
    1807checking whether setenv is declared without a macro... yes
    1808checking whether setstate is declared without a macro... yes
    1809checking whether setstate_r is declared without a macro... yes
    1810checking whether srandom is declared without a macro... yes
    1811checking whether srandom_r is declared without a macro... yes
    1812checking whether strtod is declared without a macro... yes
    1813checking whether strtoll is declared without a macro... yes
    1814checking whether strtoull is declared without a macro... yes
    1815checking whether unlockpt is declared without a macro... yes
    1816checking whether unsetenv is declared without a macro... yes
    1817checking for stpcpy... yes
    1818checking for strcasecmp... yes
    1819checking for strncasecmp... yes
    1820checking whether strncasecmp is declared... (cached) yes
    1821checking for strchrnul... yes
    1822checking whether strchrnul works... yes
    1823checking for working strerror function... yes
    1824checking for working strndup... yes
    1825checking for working strnlen... yes
    1826checking whether strtoimax works... yes
    1827checking for strtol... yes
    1828checking for strtoll... yes
    1829checking for strtoul... yes
    1830checking for strtoull... yes
    1831checking whether symlink handles trailing slash correctly... yes
    1832checking whether symlinkat handles trailing slash correctly... yes
    1833checking for nlink_t... (cached) yes
    1834checking whether fchmodat is declared without a macro... (cached) yes
    1835checking whether fstat is declared without a macro... (cached) yes
    1836checking whether fstatat is declared without a macro... (cached) yes
    1837checking whether futimens is declared without a macro... (cached) yes
    1838checking whether lchmod is declared without a macro... (cached) yes
    1839checking whether lstat is declared without a macro... (cached) yes
    1840checking whether mkdirat is declared without a macro... (cached) yes
    1841checking whether mkfifo is declared without a macro... (cached) yes
    1842checking whether mkfifoat is declared without a macro... (cached) yes
    1843checking whether mknod is declared without a macro... (cached) yes
    1844checking whether mknodat is declared without a macro... (cached) yes
    1845checking whether stat is declared without a macro... (cached) yes
    1846checking whether utimensat is declared without a macro... (cached) yes
    1847checking whether localtime_r is declared... yes
    1848checking whether localtime_r is compatible with its POSIX signature... yes
    1849checking for timezone_t... no
    1850checking whether tzset clobbers localtime buffer... no
    1851checking whether chdir is declared without a macro... yes
    1852checking whether chown is declared without a macro... yes
    1853checking whether dup is declared without a macro... yes
    1854checking whether dup2 is declared without a macro... yes
    1855checking whether dup3 is declared without a macro... yes
    1856checking whether environ is declared without a macro... yes
    1857checking whether euidaccess is declared without a macro... yes
    1858checking whether faccessat is declared without a macro... yes
    1859checking whether fchdir is declared without a macro... yes
    1860checking whether fchownat is declared without a macro... yes
    1861checking whether fdatasync is declared without a macro... yes
    1862checking whether fsync is declared without a macro... yes
    1863checking whether ftruncate is declared without a macro... yes
    1864checking whether getcwd is declared without a macro... yes
    1865checking whether getdomainname is declared without a macro... yes
    1866checking whether getdtablesize is declared without a macro... yes
    1867checking whether getgroups is declared without a macro... yes
    1868checking whether gethostname is declared without a macro... yes
    1869checking whether getlogin is declared without a macro... yes
    1870checking whether getlogin_r is declared without a macro... yes
    1871checking whether getpagesize is declared without a macro... yes
    1872checking whether getusershell is declared without a macro... yes
    1873checking whether setusershell is declared without a macro... yes
    1874checking whether endusershell is declared without a macro... yes
    1875checking whether group_member is declared without a macro... yes
    1876checking whether isatty is declared without a macro... yes
    1877checking whether lchown is declared without a macro... yes
    1878checking whether link is declared without a macro... yes
    1879checking whether linkat is declared without a macro... yes
    1880checking whether lseek is declared without a macro... yes
    1881checking whether pipe is declared without a macro... yes
    1882checking whether pipe2 is declared without a macro... yes
    1883checking whether pread is declared without a macro... yes
    1884checking whether pwrite is declared without a macro... yes
    1885checking whether readlink is declared without a macro... yes
    1886checking whether readlinkat is declared without a macro... yes
    1887checking whether rmdir is declared without a macro... yes
    1888checking whether sethostname is declared without a macro... yes
    1889checking whether sleep is declared without a macro... yes
    1890checking whether symlink is declared without a macro... yes
    1891checking whether symlinkat is declared without a macro... yes
    1892checking whether truncate is declared without a macro... yes
    1893checking whether ttyname_r is declared without a macro... yes
    1894checking whether unlink is declared without a macro... yes
    1895checking whether unlinkat is declared without a macro... yes
    1896checking whether usleep is declared without a macro... yes
    1897checking whether unlink honors trailing slashes... yes
    1898checking whether unlink of a parent directory fails as it should... guessing yes
    1899checking for unsetenv... yes
    1900checking for unsetenv() return type... int
    1901checking whether unsetenv obeys POSIX... yes
    1902checking whether utime is declared without a macro... yes
    1903checking whether utimensat works... yes
    1904checking for ptrdiff_t... yes
    1905checking for vasprintf... yes
    1906checking for vsnprintf... yes
    1907checking whether snprintf respects a size of 1... (cached) yes
    1908checking whether printf supports POSIX/XSI format strings with positions... (cached) yes
    1909checking whether btowc is declared without a macro... yes
    1910checking whether wctob is declared without a macro... yes
    1911checking whether mbsinit is declared without a macro... yes
    1912checking whether mbrtowc is declared without a macro... yes
    1913checking whether mbrlen is declared without a macro... yes
    1914checking whether mbsrtowcs is declared without a macro... yes
    1915checking whether mbsnrtowcs is declared without a macro... yes
    1916checking whether wcrtomb is declared without a macro... yes
    1917checking whether wcsrtombs is declared without a macro... yes
    1918checking whether wcsnrtombs is declared without a macro... yes
    1919checking whether wcwidth is declared without a macro... yes
    1920checking whether wmemchr is declared without a macro... yes
    1921checking whether wmemcmp is declared without a macro... yes
    1922checking whether wmemcpy is declared without a macro... yes
    1923checking whether wmemmove is declared without a macro... yes
    1924checking whether wmemset is declared without a macro... yes
    1925checking whether wcslen is declared without a macro... yes
    1926checking whether wcsnlen is declared without a macro... yes
    1927checking whether wcscpy is declared without a macro... yes
    1928checking whether wcpcpy is declared without a macro... yes
    1929checking whether wcsncpy is declared without a macro... yes
    1930checking whether wcpncpy is declared without a macro... yes
    1931checking whether wcscat is declared without a macro... yes
    1932checking whether wcsncat is declared without a macro... yes
    1933checking whether wcscmp is declared without a macro... yes
    1934checking whether wcsncmp is declared without a macro... yes
    1935checking whether wcscasecmp is declared without a macro... yes
    1936checking whether wcsncasecmp is declared without a macro... yes
    1937checking whether wcscoll is declared without a macro... yes
    1938checking whether wcsxfrm is declared without a macro... yes
    1939checking whether wcsdup is declared without a macro... yes
    1940checking whether wcschr is declared without a macro... yes
    1941checking whether wcsrchr is declared without a macro... yes
    1942checking whether wcscspn is declared without a macro... yes
    1943checking whether wcsspn is declared without a macro... yes
    1944checking whether wcspbrk is declared without a macro... yes
    1945checking whether wcsstr is declared without a macro... yes
    1946checking whether wcstok is declared without a macro... yes
    1947checking whether wcswidth is declared without a macro... yes
    1948checking whether wcsftime is declared without a macro... yes
    1949checking whether mbrtowc handles incomplete characters... (cached) guessing yes
    1950checking whether mbrtowc works as well as mbtowc... (cached) guessing yes
    1951checking whether wcrtomb return value is correct... yes
    1952checking whether iswcntrl works... (cached) yes
    1953checking for towlower... (cached) yes
    1954checking for wctype_t... (cached) yes
    1955checking for wctrans_t... (cached) yes
    1956checking whether wctype is declared without a macro... (cached) yes
    1957checking whether iswctype is declared without a macro... (cached) yes
    1958checking whether wctrans is declared without a macro... (cached) yes
    1959checking whether towctrans is declared without a macro... (cached) yes
    1960checking whether wcwidth is declared... (cached) yes
    1961checking whether wcwidth works reasonably in UTF-8 locales... yes
    1962checking for stdint.h... (cached) yes
    1963checking whether time.h and sys/time.h may both be included... yes
    1964checking for struct stat.st_blksize... yes
    1965checking for library containing setsockopt... none required
    1966checking for library containing setsockopt... (cached) none required
    1967checking for sys/mtio.h... (cached) yes
    1968checking which ioctl field to test for reversed bytes... mt_type
    1969checking whether to build rmt... yes
    1970checking for remote tape header files... yes
    1971checking for sys/buf.h... (cached) no
    1972checking for struct stat.st_blksize... (cached) yes
    1973checking for library containing gethostbyname... none required
    1974checking sys/xattr.h usability... yes
    1975checking sys/xattr.h presence... yes
    1976checking for sys/xattr.h... yes
    1977checking for library containing getxattr... none required
    1978checking for library containing fgetxattr... none required
    1979checking for library containing lgetxattr... none required
    1980checking for library containing setxattr... none required
    1981checking for library containing fsetxattr... none required
    1982checking for library containing lsetxattr... none required
    1983checking for library containing listxattr... none required
    1984checking for library containing flistxattr... none required
    1985checking for library containing llistxattr... none required
    1986checking whether getgrgid is declared... yes
    1987checking whether getpwuid is declared... yes
    1988checking whether time is declared... yes
    1989checking for waitpid... yes
    1990checking for remote shell... no
    1991checking for netdb.h... (cached) yes
    1992checking for default archive format... GNU
    1993checking for default archive... -
    1994checking for default blocking... 20
    1995checking for default quoting style... escape
    1996checking for ld used by gcc... /gnu/store/9ysmg2739n1ms84lx6hifncgc5l2hiy9-ld-wrapper-0/bin/ld
    1997checking if the linker (/gnu/store/9ysmg2739n1ms84lx6hifncgc5l2hiy9-ld-wrapper-0/bin/ld) is GNU ld... yes
    1998checking for shared library run path origin... done
    1999checking for the common suffixes of directories in the library search path... lib,lib
    2000checking for iconv... yes
    2001checking for working iconv... yes
    2002checking for iconv declaration... 
    2003         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
    2004checking iconv.h usability... yes
    2005checking iconv.h presence... yes
    2006checking for iconv.h... yes
    2007checking for iconv_t... yes
    2008checking for a sed that does not truncate output... /gnu/store/lmfddplnplxd03bcqv3w9pynbnr1fp8k-sed-4.5/bin/sed
    2009checking whether NLS is requested... yes
    2010checking for msgfmt... no
    2011checking for gmsgfmt... :
    2012checking for xgettext... no
    2013checking for msgmerge... no
    2014checking for CFPreferencesCopyAppValue... no
    2015checking for CFLocaleCopyCurrent... no
    2016checking for GNU gettext in libc... yes
    2017checking whether to use NLS... yes
    2018checking where the gettext function comes from... libc
    2019checking that generated files are newer than configure... done
    2020configure: creating ./config.status
    2021config.status: creating tests/Makefile
    2022config.status: creating tests/atlocal
    2023config.status: creating Makefile
    2024config.status: creating doc/Makefile
    2025config.status: creating gnu/Makefile
    2026config.status: creating lib/Makefile
    2027config.status: creating po/Makefile.in
    2028config.status: creating scripts/Makefile
    2029config.status: creating rmt/Makefile
    2030config.status: creating src/Makefile
    2031config.status: creating config.h
    2032config.status: executing depfiles commands
    2033config.status: executing po-directories commands
    2034config.status: creating po/POTFILES
    2035config.status: creating po/Makefile
    2036config.status: executing tests/atconfig commands
    2037configure: WARNING: unrecognized options: --enable-fast-install
    2038phase `configure' succeeded after 33.8 seconds
    2039starting phase `patch-generated-file-shebangs'
    2040patch-makefile-SHELL: ./po/Makefile: changing `SHELL' from `/bin/sh' to `/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh'
    2041phase `patch-generated-file-shebangs' succeeded after 0.1 seconds
    2042starting phase `set-shell-file-name'
    2043phase `set-shell-file-name' succeeded after 0.0 seconds
    2044starting phase `build'
    2045make  all-recursive
    2046make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30'
    2047Making all in doc
    2048make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/doc'
    2049make[2]: Nothing to be done for 'all'.
    2050make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/doc'
    2051Making all in gnu
    2052make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2053  GEN      alloca.h
    2054  GEN      dirent.h
    2055  GEN      fcntl.h
    2056  GEN      configmake.h
    2057  GEN      getopt.h
    2058  GEN      getopt-cdefs.h
    2059  GEN      inttypes.h
    2060  GEN      langinfo.h
    2061  GEN      limits.h
    2062  GEN      locale.h
    2063  GEN      signal.h
    2064  GEN      stdio.h
    2065  GEN      stdlib.h
    2066  GEN      selinux/selinux.h
    2067  GEN      selinux/context.h
    2068  GEN      string.h
    2069  GEN      strings.h
    2070  GEN      sys/stat.h
    2071  GEN      time.h
    2072  GEN      sys/time.h
    2073  GEN      sys/types.h
    2074  GEN      unistd.h
    2075  GEN      uniwidth.h
    2076  GEN      unitypes.h
    2077  GEN      wchar.h
    2078  GEN      wctype.h
    2079make  all-recursive
    2080make[3]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2081make[4]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2082  CC       acl-errno-valid.o
    2083  CC       acl-internal.o
    2084  CC       get-permissions.o
    2085  CC       set-permissions.o
    2086  CC       allocator.o
    2087  CC       areadlink.o
    2088  CC       areadlink-with-size.o
    2089  CC       areadlinkat.o
    2090  CC       areadlinkat-with-size.o
    2091  CC       argmatch.o
    2092  CC       argp-ba.o
    2093  CC       argp-eexst.o
    2094  CC       argp-fmtstream.o
    2095  CC       argp-fs-xinl.o
    2096  CC       argp-help.o
    2097  CC       argp-parse.o
    2098  CC       argp-pin.o
    2099  CC       argp-pv.o
    2100  CC       argp-pvh.o
    2101  CC       argp-xinl.o
    2102  CC       argp-version-etc.o
    2103  CC       backupfile.o
    2104  CC       backup-find.o
    2105  CC       bitrotate.o
    2106  CC       c-ctype.o
    2107  CC       c-strcasecmp.o
    2108  CC       c-strncasecmp.o
    2109  CC       careadlinkat.o
    2110  CC       cloexec.o
    2111  CC       close-stream.o
    2112  CC       closeout.o
    2113  CC       opendir-safer.o
    2114  CC       dirname.o
    2115  CC       basename.o
    2116  CC       dirname-lgpl.o
    2117  CC       basename-lgpl.o
    2118  CC       stripslash.o
    2119  CC       exclude.o
    2120  CC       exitfail.o
    2121  CC       chmodat.o
    2122  CC       chownat.o
    2123  CC       fd-hook.o
    2124  CC       fd-safer-flag.o
    2125  CC       file-has-acl.o
    2126  CC       dup-safer-flag.o
    2127  CC       fdutimensat.o
    2128  CC       filenamecat-lgpl.o
    2129  CC       fprintftime.o
    2130  CC       full-write.o
    2131  CC       gettime.o
    2132  CC       getprogname.o
    2133  CC       hard-locale.o
    2134  CC       hash.o
    2135  CC       human.o
    2136  CC       imaxtostr.o
    2137  CC       inttostr.o
    2138  CC       offtostr.o
    2139  CC       uinttostr.o
    2140  CC       umaxtostr.o
    2141  CC       localcharset.o
    2142  CC       malloca.o
    2143  CC       mbchar.o
    2144  CC       mbscasecmp.o
    2145  CC       mbuiter.o
    2146  CC       modechange.o
    2147  CC       nstrftime.o
    2148  CC       openat-die.o
    2149  CC       parse-datetime.o
    2150  CC       priv-set.o
    2151  CC       progname.o
    2152  CC       quotearg.o
    2153  CC       renameat2.o
    2154  CC       safe-read.o
    2155  CC       safe-write.o
    2156  CC       save-cwd.o
    2157  CC       savedir.o
    2158  CC       se-context.o
    2159  CC       se-selinux.o
    2160  CC       stat-time.o
    2161  CC       statat.o
    2162  CC       strnlen1.o
    2163  CC       tempname.o
    2164  CC       timespec.o
    2165  CC       timespec-sub.o
    2166  CC       unistd.o
    2167  CC       dup-safer.o
    2168  CC       fd-safer.o
    2169  CC       pipe-safer.o
    2170  CC       unlinkdir.o
    2171  CC       utimens.o
    2172  CC       version-etc.o
    2173  CC       version-etc-fsf.o
    2174  CC       xmalloc.o
    2175  CC       wctype-h.o
    2176  CC       xalloc-die.o
    2177  CC       xgetcwd.o
    2178  CC       xsize.o
    2179  CC       xstrndup.o
    2180  CC       xstrtol.o
    2181  CC       xstrtoul.o
    2182  CC       xstrtol-error.o
    2183  CC       xstrtoumax.o
    2184  CC       xvasprintf.o
    2185  CC       xasprintf.o
    2186  CC       asnprintf.o
    2187  CC       chdir-long.o
    2188  CC       fcntl.o
    2189  CC       getopt.o
    2190  CC       getopt1.o
    2191  CC       localtime-buffer.o
    2192  CC       mbrtowc.o
    2193  CC       mktime.o
    2194  CC       obstack.o
    2195  CC       openat-proc.o
    2196  CC       printf-args.o
    2197  CC       printf-parse.o
    2198  CC       selinux-at.o
    2199  CC       time_rz.o
    2200  CC       vasnprintf.o
    2201  GEN      charset.alias
    2202  GEN      ref-add.sed
    2203  GEN      ref-del.sed
    2204  CC       uniwidth/width.o
    2205  AR       libgnu.a
    2206make[4]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2207make[3]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2208make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2209Making all in lib
    2210make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2211  GEN      rmt-command.h
    2212make  all-am
    2213make[3]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2214  CC       paxerror.o
    2215  CC       paxexit-status.o
    2216  CC       paxnames.o
    2217  CC       wordsplit.o
    2218  CC       rtapelib.o
    2219  CC       stdopen.o
    2220  CC       xattr-at.o
    2221  AR       libtar.a
    2222make[3]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2223make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2224Making all in rmt
    2225make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/rmt'
    2226  CC       rmt.o
    2227  CCLD     rmt
    2228make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/rmt'
    2229Making all in src
    2230make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/src'
    2231  CC       buffer.o
    2232  CC       delete.o
    2233  CC       checkpoint.o
    2234  CC       compare.o
    2235  CC       create.o
    2236  CC       exit.o
    2237  CC       exclist.o
    2238  CC       extract.o
    2239  CC       xheader.o
    2240  CC       incremen.o
    2241  CC       list.o
    2242  CC       map.o
    2243  CC       misc.o
    2244  CC       names.o
    2245  CC       sparse.o
    2246  CC       suffix.o
    2247  CC       system.o
    2248  CC       tar.o
    2249  CC       transform.o
    2250  CC       unlink.o
    2251  CC       update.o
    2252  CC       utf8.o
    2253  CC       warning.o
    2254  CC       xattrs.o
    2255  CCLD     tar
    2256make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/src'
    2257Making all in scripts
    2258make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/scripts'
    2259make[2]: Nothing to be done for 'all'.
    2260make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/scripts'
    2261Making all in po
    2262make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/po'
    2263make[2]: Nothing to be done for 'all'.
    2264make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/po'
    2265Making all in tests
    2266make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/tests'
    2267make[2]: Nothing to be done for 'all'.
    2268make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/tests'
    2269make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30'
    2270make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30'
    2271make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30'
    2272phase `build' succeeded after 5.8 seconds
    2273starting phase `check'
    2274Making check in doc
    2275make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/doc'
    2276make[1]: Nothing to be done for 'check'.
    2277make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/doc'
    2278Making check in gnu
    2279make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2280make  check-recursive
    2281make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2282make[3]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2283make[3]: Nothing to be done for 'check-am'.
    2284make[3]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2285make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2286make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/gnu'
    2287Making check in lib
    2288make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2289make  check-am
    2290make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2291make[2]: Nothing to be done for 'check-am'.
    2292make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2293make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/lib'
    2294Making check in rmt
    2295make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/rmt'
    2296make[1]: Nothing to be done for 'check'.
    2297make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/rmt'
    2298Making check in src
    2299make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/src'
    2300make[1]: Nothing to be done for 'check'.
    2301make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/src'
    2302Making check in scripts
    2303make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/scripts'
    2304make[1]: Nothing to be done for 'check'.
    2305make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/scripts'
    2306Making check in po
    2307make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/po'
    2308make[1]: Nothing to be done for 'check'.
    2309make[1]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/po'
    2310Making check in tests
    2311make[1]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/tests'
    2312make  genfile checkseekhole ckmtime
    2313make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/tests'
    2314  CC       genfile.o
    2315  CC       argcv.o
    2316  CC       checkseekhole.o
    2317  CC       ckmtime.o
    2318  CCLD     checkseekhole
    2319  CCLD     ckmtime
    2320  CCLD     genfile
    2321make[2]: Leaving directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/tests'
    2322make  check-local
    2323make[2]: Entering directory '/tmp/guix-build-tar-1.30.drv-0/tar-1.30/tests'
    2324/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/bash ./testsuite -k '!link mismatch,!directory removed before reading,!explicitly named directory removed before reading'
    2325## ------------------------ ##
    2326## GNU tar 1.30 test suite. ##
    2327## ------------------------ ##
    2328  1: tar version                                     ok
    2329  2: decompressing from stdin                        ok
    2330  3: mixing options                                  ok
    2331  4: interspersed options                            ok
    2332  5: TAR_OPTIONS with string arguments               ok
    2333
    2334Option compatibility
    2335
    2336  6: occurrence compatibility                        ok
    2337  7: occurrence compatibility                        ok
    2338  8: --verify compatibility                          ok
    2339  9: compress option compatibility                   ok
    2340 10: --pax-option compatibility                      ok
    2341 11: --pax-option compatibility                      skipped (opcomp06.at:24)
    2342
    2343Positional options
    2344
    2345 12: Exclude                                         ok
    2346 13: Directory                                       ok
    2347 14: Several options                                 ok
    2348 15: The --add-file option                           ok
    2349
    2350The -T option
    2351
    2352 16: multiple file lists                             ok
    2353 17: nested file lists                               ok
    2354 18: recursive file lists                            ok
    2355 19: files-from & recurse: toggle                    ok
    2356 20: toggle --recursion (not) from -T                ok
    2357 21: -C in file lists                                ok
    2358 22: empty entries                                   ok
    2359 23: 0-separated file without -0                     ok
    2360 24: --null enables verbatim reading                 ok
    2361 25: empty file                                      ok
    2362 26: entries with missing newlines                   ok
    2363 27: recursive extraction from --files-from          ok
    2364 28: trailing slash in --files-from                  ok
    2365
    2366Various options
    2367
    2368 29: tar --index-file=FILE --file=-                  ok
    2369 30: tar cvf -                                       ok
    2370 31: gzip                                            ok
    2371 32: recurse                                         ok
    2372 33: recurse: toggle                                 ok
    2373 34: short records                                   ok
    2374 35: --numeric-owner basic tests                     ok
    2375
    2376The --same-order option
    2377
    2378 36: working -C with --same-order                    ok
    2379 37: multiple -C options                             ok
    2380
    2381Append
    2382
    2383 38: append                                          ok
    2384 39: appending files with long names                 ok
    2385 40: append vs. create                               ok
    2386 41: append with name transformation                 ok
    2387 42: append with verify                              ok
    2388 43: append after changed blocking                   ok
    2389
    2390Transforms
    2391
    2392 44: transforming hard links on create               ok
    2393 45: transformations and GNU volume labels           ok
    2394 46: transforming escaped delimiters on create       ok
    2395 47: transforming hard link targets                  ok
    2396
    2397Exclude
    2398
    2399 48: exclude                                         ok
    2400 49: exclude wildcards                               ok
    2401 50: exclude: anchoring                              ok
    2402 51: exclude: wildcards match slash                  ok
    2403 52: exclude: case insensitive                       ok
    2404 53: exclude: lots of excludes                       ok
    2405 54: exclude: long files in pax archives             ok
    2406 55: exclude: --exclude-backups option               ok
    2407 56: --exclude-tag option                            ok
    2408 57: --exclude-tag option and --listed-incremental   ok
    2409 58: --exclude-tag option in incremental pass        ok
    2410 59: --exclude-tag-under option                      ok
    2411 60: --exclude-tag-under and --listed-incremental    ok
    2412 61: --exclude-tag-under option in incremental pass  ok
    2413 62: --exclude-tag-all option                        ok
    2414 63: --exclude-tag-all and --listed-incremental      ok
    2415 64: --exclude-tag-all option in incremental pass    ok
    2416
    2417Deletions
    2418
    2419 65: deleting a member after a big one               ok
    2420 66: deleting a member from stdin archive            ok
    2421 67: deleting members with long names                ok
    2422 68: deleting a large last member                    ok
    2423 69: deleting non-existing member                    ok
    2424
    2425Extracting
    2426
    2427 70: extract over an existing directory              ok
    2428 71: extracting symlinks over an existing file       ok
    2429 72: extraction loops                                ok
    2430 73: extract + fnmatch                               ok
    2431 74: extracting selected members from pax            ok
    2432 75: mode of extracted directories                   ok
    2433 76: extracting symlinks to a read-only dir          ok
    2434 77: restoring mode on existing directory            ok
    2435 78: extracting even when . and .. are unreadable    ok
    2436 79: -C and delayed setting of metadata              ok
    2437 80: scarce file descriptors                         ok
    2438 81: extract dot permissions                         ok
    2439 82: extract over symlinks                           ok
    2440 83: extract -C symlink                              ok
    2441 84: extract parent mkdir failure                    ok
    2442 85: extract empty directory with -C                 ok
    2443 86: name matching/transformation ordering           ok
    2444 87: keep-old-files                                  ok
    2445 88: skip-old-files                                  ok
    2446 89: keep-directory-symlink                          ok
    2447 90: delay-directory-restore                         ok
    2448 91: extracting existing dir with --backup           ok
    2449
    2450Volume label operations
    2451
    2452 93: single-volume label                             ok
    2453 94: multi-volume label                              ok
    2454 95: test-label option                               ok
    2455 96: label with non-create option                    ok
    2456 97: label with non-create option                    ok
    2457
    2458Incremental archives
    2459
    2460 98: incremental                                     ok
    2461 99: restore broken symlinks from incremental        ok
    2462100: restoring timestamps from incremental           ok
    2463101: --listed for individual files                   ok
    2464102: working --listed                                ok
    2465103: incremental dump when the parent directory is unreadable ok
    2466104: --listed-incremental and --one-file-system      ok
    2467105: --listed-incremental and remounted directories  skipped (listed05.at:36)
    2468106: renamed files in incrementals                   ok
    2469107: proper icontents initialization                 ok
    2470108: incremental dumps with -C                       ok
    2471109: incremental dumps of nested directories         ok
    2472110: incremental restores with -C                    ok
    2473111: filename normalization                          ok
    2474112: incremental with alternating -C                 ok
    2475113: concatenated incremental archives (deletes)     ok
    2476114: concatenated incremental archives (renames)     ok
    2477
    2478Files removed while archiving
    2479
    2480115: file removed as we read it (ca. 22 seconds)     ok
    2481116: toplevel file removed (ca. 24 seconds)          ok
    2482
    2483Renames
    2484
    2485119: renamed dirs in incrementals                    ok
    2486120: move between hierarchies                        ok
    2487121: cyclic renames                                  ok
    2488122: renamed directory containing subdirectories     ok
    2489123: renamed subdirectories                          ok
    2490124: changed file types in incrementals              ok
    2491
    2492Ignore failing reads
    2493
    2494125: ignfail                                         ok
    2495
    2496Link handling
    2497
    2498126: link count gt 2                                 ok
    2499127: preserve hard links with --remove-files         ok
    2500128: working -l with --remove-files                  ok
    2501129: link count is 1 but multiple occurrences        ok
    2502
    2503Specific archive formats
    2504
    2505130: long names in V7 archives                       ok
    2506131: long file names divisible by block size         ok
    2507132: ustar: unsplittable file name                   ok
    2508133: ustar: unsplittable path name                   ok
    2509134: ustar: splitting long names                     ok
    2510135: old archives                                    ok
    2511136: time: tricky time stamps                        ok
    2512137: time: clamping mtime                            ok
    2513
    2514Multivolume archives
    2515
    2516138: multivolume dumps from pipes                    ok
    2517139: skipping a straddling member                    ok
    2518140: MV archive & long filenames                     ok
    2519141: split directory members in a MV archive         ok
    2520142: Restoring after an out of sync volume           ok
    2521143: Multivolumes with L=record_size                 ok
    2522144: volumes split at an extended header             skipped (multiv07.at:31)
    2523145: multivolume header creation                     ok
    2524146: bad next volume                                 ok
    2525147: file start at the beginning of a posix volume   ok
    2526
    2527Owner and Groups
    2528
    2529148: --owner and --group                             ok
    2530149: --owner-map and --group-map                     ok
    2531
    2532Sparse files
    2533
    2534150: sparse files                                    ok
    2535151: extracting sparse file over a pipe              ok
    2536152: storing sparse files > 8G                       ok
    2537153: storing long sparse file names                  ok
    
  31. wtogami commented at 9:22 am on March 1, 2019: contributor

    https://www.gnu.org/software/guix/manual/en/guix.html#The-GCC-toolchain “Guix offers individual compiler packages such as gcc but if you are in need of a complete toolchain for compiling and linking source code what you really want is the gcc-toolchain package. This package provides a complete GCC toolchain for C/C++ development, including GCC itself, the GNU C Library (headers and binaries, plus debugging symbols in the debug output), Binutils, and a linker wrapper. The wrapper’s purpose is to inspect the -L and -l switches passed to the linker, add corresponding -rpath arguments, and invoke the actual linker with this new set of arguments. By default, the linker wrapper refuses to link to libraries outside the store to ensure “purity”. This can be annoying when using the toolchain to link with local libraries. To allow references to libraries outside the store you need to define the environment variable GUIX_LD_WRAPPER_ALLOW_IMPURITIES.

    It’s very bad practice to ship binaries with -rpath. Carl got rid of it with patchelf --remove-rpath but it still has a problem with the interpreter. Carl noted,“So everything works except the interpreter, because the interpreter path is different for different architectures. So I don’t wanna just do patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 or sth like that.”

    I’m not really sure how this works where you normally don’t need to explicitly specify where to find the interpreter.

  32. theuni commented at 7:22 pm on March 1, 2019: member

    (@wtogami asked me to weigh in on his comment above, I haven’t read the history here)

    If the guix environment uses some wonky path to the runtime loader, an alternative one can be set when linking using -Wl,--dynamic-linker=Foo, where Foo is the more generic path for that arch. That of course means that the binaries won’t run in guix by default anymore. Fun trick, though, I believe you can use the loader as a launcher for a binary if its loader path is busted.

    For example, this should work in a non-guix environment. It used to, anyway: /lib64/ld-linux-x86-64.so.2 ./my_guix_binary

    There shouldn’t be any need to modify a binary after the fact. Imo doing so is brittle and indicative that something is wrong/missing. If the toolchain can’t do what’s needed, let’s make sure that any temporary hacks are paired with upstream bug reports and/or patches.

  33. wtogami commented at 11:33 pm on March 3, 2019: contributor

    For example, this should work in a non-guix environment. It used to, anyway: /lib64/ld-linux-x86-64.so.2 ./my_guix_binary There shouldn’t be any need to modify a binary after the fact. Imo doing so is brittle and indicative that something is wrong/missing. If the toolchain can’t do what’s needed, let’s make sure that any temporary hacks are paired with upstream bug reports and/or patches

    I think we are using guix not in way it was intended so they may not accept an upstream ticket to accommodate our use case?

    I think this one hack to explicitly specify the standard loader path may be acceptable for our build process. Could also symlink that one library within guix’s filesystem.

  34. dongcarl force-pushed on Mar 11, 2019
  35. dongcarl commented at 6:13 pm on March 11, 2019: member

    Before you execute any scripts, please get on the same version of Guix as me:

    0guix pull --commit=12327d74475d4079065a0f8f5d2491e4679fb53e
    

    The push @ https://github.com/bitcoin/bitcoin/pull/15277/commits/21bc51a27bc41a1a849e719dba5e317f2aa699ac includes some fixes and a convenience script for Guix builds located at contrib/guix/guix-build.sh. It is recommended that you read over the script before executing it. It is fairly simple and commented.

    The script is meant to be run from the root of the git repository and assumes that you have a working guix and patchelf in your path.

    Tip: I usually invoke the script like this:

    0./contrib/guix/guix-build.sh > out 2> err
    

    This way I can filter through the output much more easily for debugging.

    Unlike Gitian, we don’t move the results of the build process into a nice little tarball yet, but you can inspect src/bitcoind, src/qt/bitcoin-qt, etc. to take a look at the result.

    I believe that we have solved most of the linker issues mentioned above, but only through patchelf hacks. In an offline conversation with @theuni, he noted that perhaps we can use spec files to override the GNU toolchain options in a less fragile way and have the toolchain produce the right thing.

  36. fanquake commented at 3:03 pm on March 16, 2019: member

    @dongcarl Looks good. I started playing around with this, and made up a Docker file that sets up a build environment. The Dockerfile, as well as some notes on usage are available here.

    It’s basically:

    • Building the image sets up Alpine with Guix.
    • Run the image (which starts the guix deamon), mounting your bitcoin directory for use inside the (alpine) container. I’m using master with this PR on top (21bc51a).
    • Call docker exec and pass your script as an argument, which kicks off a build.

    Setting up the Guix environment and downloading everything works fine, depends currently bombs out when building fontconfig with:

     0docker exec -it alpine-guix /bin/bash -c "contrib/guix/guix-build.sh"
     1+ make -C depends -j48 download
     2make: Entering directory '/bitcoin/depends'
     3make[1]: Entering directory '/bitcoin/depends'
     4make[1]: Leaving directory '/bitcoin/depends'
     5make[1]: Entering directory '/bitcoin/depends'
     6make[1]: Leaving directory '/bitcoin/depends'
     7make[1]: Entering directory '/bitcoin/depends'
     8make[1]: Leaving directory '/bitcoin/depends'
     9make: Leaving directory '/bitcoin/depends'
    10++ guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts -- printenv LIBRARY_PATH
    11+ sudo rm -f '/gnu/store/fg0wma7z9028489ic5sbq3f9a9l4y9c1-profile/lib/*.la'
    12+ guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts -- sh contrib/guix/build.sh
    13+ '[' -e /usr/bin ']'
    14+ mkdir -p /usr/bin
    15+ '[' -e /usr/bin/file ']'
    16++ command -v file
    17+ ln -s /gnu/store/fg0wma7z9028489ic5sbq3f9a9l4y9c1-profile/bin/file /usr/bin/file
    18++ nproc
    19+ make -C depends --jobs=6
    20make: Entering directory '/bitcoin/depends'
    21Configuring fontconfig...
    22tar: ./lib/libexpat.so: Cannot utime: No such file or directory
    23tar: ./lib/libexpat.so.1: Cannot utime: No such file or directory
    24tar: Exiting with failure status due to previous errors
    25tar: ./lib/libfreetype.so: Cannot utime: No such file or directory
    26tar: ./lib/libfreetype.so.6: Cannot utime: No such file or directory
    27tar: Exiting with failure status due to previous errors
    28make: *** [funcs.mk:243: /bitcoin/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.12.1-1d13fef55ce/./.stamp_configured] Error 2
    29make: Leaving directory '/bitcoin/depends'
    
  37. fanquake commented at 3:44 am on March 17, 2019: member

    Looks like it’s related to the fact that inside depends/x86_64-pc-linux-gnu/lib libexpat.so & libfreetype.so are symlinks?

     0cd depends/x86_64-pc-linux-gnu/lib
     1ls -l
     2total 980
     3-rwxr-xr-x    1 root     root           982 Mar 16 14:29 libexpat.la
     4lrwxrwxrwx    1 root     root            17 Mar 17 03:37 libexpat.so -> libexpat.so.1.6.8
     5lrwxrwxrwx    1 root     root            17 Mar 17 03:37 libexpat.so.1 -> libexpat.so.1.6.8
     6-rwxr-xr-x    1 root     root        258736 Mar 16 14:29 libexpat.so.1.6.8
     7-rwxr-xr-x    1 root     root          1003 Mar 16 14:28 libfreetype.la
     8lrwxrwxrwx    1 root     root            21 Mar 17 03:37 libfreetype.so -> libfreetype.so.6.13.0
     9lrwxrwxrwx    1 root     root            21 Mar 17 03:37 libfreetype.so.6 -> libfreetype.so.6.13.0
    10-rwxr-xr-x    1 root     root        729560 Mar 16 14:28 libfreetype.so.6.13.0
    11drwxr-xr-x    4 root     root           128 Mar 16 14:28 pkgconfig
    12
    13file libexpat.so
    14libexpat.so: symbolic link to libexpat.so.1.6.8
    15file libexpat.so.1.6.8
    16libexpat.so.1.6.8: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, not stripped
    
  38. in contrib/guix/guix-build.sh:1 in 0275b4f4a1 outdated
    0@@ -0,0 +1,20 @@
    1+#!/bin/bash -ex
    


    MarcoFalke commented at 3:49 pm on March 18, 2019:
    0Missing expected shebang "#!/usr/bin/env bash" or "#!/bin/sh" in contrib/guix/guix-build.sh
    
  39. dongcarl force-pushed on Mar 18, 2019
  40. dongcarl commented at 4:14 pm on March 18, 2019: member

    @fanquake re: #15277 (comment)

    I’ve tried to recreate your situation but I think I’ve encountered a different problem than yours. I think they might be related.

     0+ guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts -- sh contrib/guix/build.sh
     1+ '[' -e /usr/bin ']'
     2+ mkdir -p /usr/bin
     3+ '[' -e /usr/bin/file ']'
     4++ command -v file
     5+ ln -s /gnu/store/fg0wma7z9028489ic5sbq3f9a9l4y9c1-profile/bin/file /usr/bin/file
     6++ nproc
     7+ make -C depends --jobs=48
     8make: Entering directory '/bitcoin/depends'
     9mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    10mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    11mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    12mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    13mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    14mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    15mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    16mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    17mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    18mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    19mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    20mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    21mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    22mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    23mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    24mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    25mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    26mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    27mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    28mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    29mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    30mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    31mkdir: cannot create directory '/bitcoin/depends/built': Permission denied
    32Extracting native_protobuf...
    33/bitcoin/depends/sources/protobuf-2.6.1.tar.bz2: OK
    34Preprocessing native_protobuf...
    35Configuring native_protobuf...
    36mkdir: cannot create directory '/bitcoin/depends/x86_64-pc-linux-gnu': Permission denied
    37/gnu/store/q19l04vd2za80mk1845pz7r8cz29qk43-bash-minimal-4.4.23/bin/sh: line 0: cd: /bitcoin/depends/x86_64-pc-linux-gnu: No such file or directory
    38make: *** [funcs.mk:243: /bitcoin/depends/work/build/x86_64-pc-linux-gnu/native_protobuf/2.6.1-cdfecf3ad0b/./.stamp_configured] Error 1
    39make: Leaving directory '/bitcoin/depends'
    

    I can verify this by first going into the docker container with

    0docker exec -it alpine-guix sh
    

    Then going into the guix containter with

    0guix environment --manifest=contrib/guix/manifest.scm --container --pure --no-grafts
    

    Then trying to create a directory under depends with

    0mkdir depends/hi
    

    And I get the error output

    0mkdir: cannot create directory 'depends/hi': Permission denied
    

    This is because even though the Guix container thinks it’s root, it doesn’t have the almighty power of root. And the depends directory is not owned by root but by something else:

     0root@b7b7c36bfc82 /bitcoin [env]# ls -lh depends/
     1total 144K
     2-rw-r--r-- 1 65534 65534 6.8K Mar 18 15:02 Makefile
     3-rw-r--r-- 1 65534 65534 3.5K Mar 18 15:02 README.md
     4drwxr-xr-x 2 65534 65534 4.0K Mar 18 15:02 builders
     5-rwxr-xr-x 1 65534 65534  44K Mar 18 15:02 config.guess
     6-rw-r--r-- 1 65534 65534 2.3K Mar 18 15:02 config.site.in
     7-rwxr-xr-x 1 65534 65534  35K Mar 18 15:02 config.sub
     8-rw-r--r-- 1 65534 65534 2.5K Mar 18 15:02 description.md
     9-rw-r--r-- 1 65534 65534  12K Mar 18 15:02 funcs.mk
    10drwxr-xr-x 2 65534 65534 4.0K Mar 18 15:02 hosts
    11drwxr-xr-x 2 65534 65534 4.0K Mar 18 15:02 packages
    12-rw-r--r-- 1 65534 65534 4.8K Mar 18 15:02 packages.md
    13drwxr-xr-x 5 65534 65534 4.0K Mar 18 15:02 patches
    14drwxr-xr-x 3 root      0 4.0K Mar 18 15:07 sources
    15drwxr-xr-x 4 root      0 4.0K Mar 18 15:13 work
    

    I think this might also be the cause of your issues. I haven’t looked into solutions but perhaps a good chown would fix it. Otherwise we can just copy the directory when creating the image instead of mounting it.

    In the end, I hope that we’ll have a mix of people using this inside a docker container and those who will run on their distro of choice. It would make for more diversity.

  41. fanquake commented at 2:24 am on March 19, 2019: member

    @dongcarl Thanks, I’ve changed how I’m building the Docker image (COPYing the bitcoin source in during the image build, rather than mounting a volume at runtime) and now the depends build and Core compilation all complete. A better approach in future might just be to put git into the Alpine container, and clone a specific tag.

    The entire build output (45k lines) is available here. Note that towards the end I had to re-reun docker exec, because I forgot to install patchelf into the alpine container when building the image..

    The updated running instructions are basically:

    • Merge this PR into your bitcoin repository.
    • Re build the Docker image (it now has to be done from inside /bitcoin).
    • docker run -it --name alpine-guix --privileged --workdir /bitcoin alpine-guix.
    • docker exec -it alpine-guix /bin/bash -c "contrib/guix/guix-build.sh".

    Everything is available here. @MarcoFalke Thanks for your comments re --privileged. Now that the build is working I can start looking at which permissions are actually required, rather than a blanket approach. Edit: I’ve started looking at that here: https://github.com/fanquake/core-review/issues/5.

  42. dongcarl commented at 2:58 pm on March 20, 2019: member

    @fanquake I’m glad to see that you’ve got it working!

    Let’s continue the conversation about capabilities here: https://github.com/fanquake/core-review/issues/5

  43. dongcarl force-pushed on Apr 9, 2019
  44. dongcarl force-pushed on Apr 15, 2019
  45. dongcarl commented at 4:12 pm on April 15, 2019: member

    Quite a big update this week.

    1. I was able to get rid of a hack that required sudo on the machine running Guix and which also violated Guix’s functional model. Now, the only semi-hacks present are the patchelf commands.
    2. I was able to get rid of the annoying (but innocuous) warning messages from setting locale to C.UTF-8 which is not a thing in Guix containers.

    Next steps:

    1. Cross-compilation: I’ve experimented with it a bit, and the cross compiler packages need a little bit of patching, but I’ve gotten great info from conversations with @theuni.
    2. Modify our gcc package to output binaries that don’t need the patchelf commands: I’ve written a gcc-bitcoin Guix package that seems to take care of the default rpaths that Guix tries to inject, but rpaths pointing to the depends directory is still there, which is strange. Doing the same for our patching of the interpreter path is even more involved, and I believe patching interpreter path using patchelf is less risky than the rpath.

    It is now much safer to experiment with this branch, though it is still experimental.

  46. fanquake commented at 4:55 am on April 16, 2019: member

    @dongcarl Nice work. I’ve just completed a build with the new changes. Full output is here. Note I had to guix pull beforehand to get the gcc@8.3.0 packages.

    I was able to get rid of the annoying (but innocuous) warning messages from setting locale to C.UTF-8 which is not a thing in Guix containers.

    👍

  47. dongcarl commented at 10:19 am on April 16, 2019: member

    @fanquake Ah! You’re absolutely right. People can be at the same version of Guix I’m at by executing:

    0guix pull --commit=12327d74475d4079065a0f8f5d2491e4679fb53e
    

    Will add to instructions!

  48. dongcarl force-pushed on May 20, 2019
  49. dongcarl commented at 3:26 am on May 20, 2019: member

    Will need more time to describe this new push better, but here’s how one can experiment with it:

    With Guix installed, pull my fork which has a few patches yet to be upstreamed (isn’t it nice that this is so simple?):

    0guix pull --url=https://github.com/dongcarl/guix.git  \
    1          --commit=2a520532d355f07ba3988fd40b2687b0d6c025b8 \
    2          --max-jobs=$(nproc)
    

    While on this branch @ 6b832d9797179206b083d296e52ff402fc4d040a, we can perform a deterministic build of i686, x86_64, aarch64, and armhf by simply invoking:

    0./contrib/guix/guix-build.sh
    

    The resulting tarballs will reside in output/, let’s compare our results!

    0$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    121b947acc435441db30622477134e375686d18b88de2c1f30e0dc2bdff865947  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    2c51285da04af92b310771a650aed64df708cb7834b63ff8874331f8ccf779253  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    34386a3b03bcf30898dd2f338061ed46fb58a0c5e4a3ac86d3381fb4b5ca7b0ae  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
    4398593ce9135a2b643f594cb961fd1d6f49375850cc57c47d8102b8ecf7c5e29  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    5572d78d9f2d27974c82b97c44b8adf60988c4350dfb58244364a54aa660971c6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    687d533b6cca16631303dea753b5974989db22ed3c672eb0b4fae6c55f7815283  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    761919303a7b89e3165ea915120c628c7e8896f1f43c9d05d0b2dd306336b2e86  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    84e475578e01f0c4b09720f4088eba8a0c8468343a361cfc9095377771a709141  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    93d63f5f0d8bca4b84dad46419ead588b6d035656b1d64e80cdfdf1a46d1fd9f8  output/src/bitcoin-0.18.99.tar.gz
    
  50. DrahtBot added the label Needs rebase on May 20, 2019
  51. dongcarl commented at 3:17 pm on May 20, 2019: member
    Used -Wl,--dynamic-linker=Foo trick by @theuni to eliminate all instances ofpatchelf!
  52. dongcarl commented at 3:20 pm on May 20, 2019: member
    Also despite what @DrahtBot says I’m not going to rebase until we fix our GLIBC compat issues…
  53. fanquake commented at 5:06 am on May 21, 2019: member

    @dongcarl I’ve tried building your latest updates, but am running into the following:

     0downloading from https://ci.guix.gnu.org/nar/gzip/6w65nzbc3ah30y5kr4zx9rcgknpjr1f5-nss-certs-3.43...
     1 nss-certs-3.43  150KiB                                                                                                         50KiB/s 00:01 [###               ]  21.4%Backtrace:
     2
     3gzip: stdout: Broken pipe
     4           3 (apply-smob/1 #<catch-closure 1572300>)
     5In ice-9/boot-9.scm:
     6    705:2  2 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
     7In ice-9/eval.scm:
     8    619:8  1 (_ #(#(#<directory (guile-user) 1627140>)))
     9In guix/ui.scm:
    10  1747:12  0 (run-guix-command _ . _)
    11
    12guix/ui.scm:1747:12: In procedure run-guix-command:
    13Throw to key `encoding-error' with args `("scm_to_stringn" "cannot convert wide string to output locale" 84 #f #f)'.
    14 nss-certs-3.43  150KiB                                                                                                        120KiB/s 00:01 [##################] 100.0%substitution of /gnu/store/6w65nzbc3ah30y5kr4zx9rcgknpjr1f5-nss-certs-3.43 failed
    15killing process 4880
    16guix environment: error: some substitutes for the outputs of derivation `/gnu/store/dv7if5fn1ysi89hg969125z54y8hv8p8-nss-certs-3.43.drv' failed (usually happens due to networking issues); try `--fallback' to build derivation from source 
    

    I’ve seen this issue before, in the time between guix 1.0.0 and 1.0.1, will debug.

  54. dongcarl commented at 10:51 am on May 21, 2019: member
    @fanquake Looks like a network error downloading from the substitutes server (which serves binaries)… Try the --fallback or --no-substitutes options.
  55. fanquake commented at 11:29 am on May 21, 2019: member

    @dongcarl No worries. I ended up dropping nss-certs from the manifest to get a build running.

    The results & inputs are below:

     0+ gzip
     1+ mkdir -p /dongcarl/output/src
     2+ mv -n /dongcarl/output/src/bitcoin-0.18.99.tar.gz /dongcarl/output/src
     3bash-4.4# find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     4299712eedebb43175ca73e2968a8ea8bda053e403b5ec7274eb3167ea15c53d1  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     5cd5d7f6c5329e0a233b4129d5e16758841cac2015be8cb59b72e98940e6272f1  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     6eeff2f18d67429b669494e6e920185db0ea3539f7824333b95308d075f3df2d1  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     7f98c907b73fa8ac453d952a1911256abd89be3d2768f3377a1cea59297b196d4  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     8deaf5ecf8a90a0ff752fc8e658edabf7b063195b83d2a905d452e8dbdb33768e  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     9f207c5617e67d936cf5913f8090fd0975ce591eea27b54ee4f9f1240b1b90e8c  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    10d94cbc18be3c728076e1ce42a6cd35e282ef3ecbdcba6674585c19e80350952d  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    117634f5d856288f3a7ef8b5a004884502fd6de7ea6cc705346912671d4e33c391  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    123b87b80d2437a52581702ac08d575705de47e4f39582bdda73829c96d1c754e2  output/src/bitcoin-0.18.99.tar.gz
    
    0bash-4.4# guix --version
    1guix (GNU Guix) 2a520532d355f07ba3988fd40b2687b0d6c025b8
    2Copyright (C) 2019 the Guix authors
    3License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    4This is free software: you are free to change and redistribute it.
    5There is NO WARRANTY, to the extent permitted by law.
    
     0bash-4.4# git status
     1HEAD detached at 6b832d979
     2Changes not staged for commit:
     3  (use "git add <file>..." to update what will be committed)
     4  (use "git checkout -- <file>..." to discard changes in working directory)
     5
     6	modified:   contrib/guix/manifest.scm
     7
     8Untracked files:
     9  (use "git add <file>..." to include in what will be committed)
    10
    11	distsrc-aarch64-linux-gnu/
    12	distsrc-arm-linux-gnueabihf/
    13	distsrc-i686-linux-gnu/
    14	distsrc-x86_64-linux-gnu/
    15
    16no changes added to commit (use "git add" and/or "git commit -a")
    
     0diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
     1index 43739bad5..fbca883f9 100644
     2--- a/contrib/guix/manifest.scm
     3+++ b/contrib/guix/manifest.scm
     4@@ -56,6 +56,6 @@
     5    "python@3"
     6    "pkg-config"
     7    "util-linux"
     8-   "nss-certs"
     9+   ;;"nss-certs"
    10    "curl"
    11    "patchelf"))
    
  56. dongcarl commented at 11:49 am on May 21, 2019: member
    @fanquake Huh… Mind uploading your output/ so I can diffoscope?
  57. fanquake commented at 2:46 pm on May 26, 2019: member
    0guix --version
    1guix (GNU Guix) 2a520532d355f07ba3988fd40b2687b0d6c025b8
    
    0git log
    1commit 36c85a9d842133b1a7ea33e02f9239673da49caa (HEAD -> 2019-01-guix, origin/2019-01-guix)
    
    0find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    1aa0d78ada1e6fb8de25960549332a84c74d991bf41f3a058b751c2f54670d728  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    2698262af678b9ac2a9ea78fb97ab41b1a1e7413f1e6ef759c169f7a3dc4387e8  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    32d7f0a4f4ee020287c8d07a515e89ae0b3d34421aa373e402ea4aa52369cadbe  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
    4908a1f3156983fe378724634a3a7098c7ad5eae48bbef8f799a39739a0053baa  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    555afde7d02bd5bbeebc0337d7cd31d24ce24f0b930d0cc38a01336c01ebee782  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    668fd087f6f8c6033dceb8f8735519760567a3b960708b316c7ffec096f9784d9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    7be3de8a91a07bb6ec7426c51b7d4d7d17c28b64451c509876c9335773c9dd262  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    86071d9bb321e47f114582cdd791bf2408793136b39b143409c2dfe4ce1bc511f  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    93b87b80d2437a52581702ac08d575705de47e4f39582bdda73829c96d1c754e2  output/src/bitcoin-0.18.99.tar.gz
    
  58. dongcarl commented at 2:41 pm on May 28, 2019: member
    Work has been picked back up on a Guix package for debian. There’s some overlap between Guix and debian developers. See here for more details: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850644
  59. dongcarl commented at 7:14 pm on May 29, 2019: member

    Quick update:

    1. Upstreamed initial riscv64 support to Guix, will be adding support here soon.
    2. Tested the arm-linux-gnueabihf binaries that this build process produces on actual hardware (BeagleBone Black). Works well, even bitcoin-qt over X forwarding worked. aarch64 hardware is in the mail (Pine64).
  60. dongcarl commented at 11:50 am on May 30, 2019: member

    RISCV64 support has landed! Updated instructions are below.


    With Guix installed, pull my fork which has a few patches yet to be upstreamed:

    0guix pull --url=https://github.com/dongcarl/guix.git  \
    1          --commit=5242e0a5e046e2aaa4da7b0d3756caa78ed6ca1f \
    2          --max-jobs=$(nproc)
    

    While on this branch @ 985e42d, we can perform a deterministic build of i686, x86_64, aarch64, armhf, and riscv64 by simply invoking:

    0./contrib/guix/guix-build.sh
    
  61. fanquake commented at 9:42 pm on May 30, 2019: member
    0guix --version
    1guix (GNU Guix) 5242e0a5e046e2aaa4da7b0d3756caa78ed6ca1f
    
    0git log
    1commit 985e42d5fa351fb638f871341cb60d845e2f1b9b (HEAD -> 2019-01-guix, origin/2019-01-guix)
    
     0find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     1d580457f04a049de6aa853027748b6dedc6b6029718a387f741c32559a790796  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     241a328ef6b9968b19f0ad4919130a1512c799a1370144c7bd42a59ccb1bd95bc  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     3e282c8285801dd7f571454095e7ab415284caaba388c773b21876f3c25b1551f  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     4d32d59bf38bbd1db0eeea83e799553fe0f325acbd98c8a7b2d6765f5c8233358  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5be1b6abf328100ed09ce46a11d61722f5a2402e956cc2a5b93baa0ed4c0978e0  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     661b3d06e6ae7d2bdebd714034d2e0b330b97c291a4511b7ba794a84339b46696  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     7b0517b563165eeb57d1ef54cdefce50398efdbd8a39bb6571d87588e6077f2c3  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     8950cb554a09e5f5e8479f3f0c129be2d3dd5f1b150645fc27ebe6d973ab08c2c  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     9c8962baf81b731d132bf73315eef251d046d0792dd33460d31e3701fd610e06b  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    1043502673170d982698fbdf4d77242135a6a3b9bc4de1e70d7a192a83c0e57227  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    113b87b80d2437a52581702ac08d575705de47e4f39582bdda73829c96d1c754e2  output/src/bitcoin-0.18.99.tar.gz
    
  62. dongcarl force-pushed on May 31, 2019
  63. dongcarl commented at 6:24 pm on May 31, 2019: member
    Rebased.
  64. DrahtBot removed the label Needs rebase on May 31, 2019
  65. in depends/packages.md:156 in e1c026c948 outdated
    149@@ -146,3 +150,34 @@ $($(package)_config_opts) will be appended.
    150 Most autotools projects can be properly staged using:
    151 
    152     $(MAKE) DESTDIR=$($(package)_staging_dir) install
    153+
    154+## Build outputs:
    155+
    156+In general, the output of a depends package should not contain any libtool
    


    laanwj commented at 9:51 am on June 9, 2019:
    Do we want this to be “in general” or a hard rule? Are there exceptions thinkable?

    dongcarl commented at 4:55 pm on June 10, 2019:
    Hmmm, I should rebase as this is already merged. But I can’t think of any exceptions off the top of my head right now. I thought of the phrasing “in general” as in: don’t include libtool archives unless it is absolutely necessary. Perhaps next time I touch the file I’ll rephrase it that way.
  66. in contrib/guix/build.sh:50 in e1c026c948 outdated
    45+mkdir -p "${OUTDIR}"
    46+
    47+# Environment variables for determism
    48+export QT_RCC_TEST=1
    49+export QT_RCC_SOURCE_DATE_OVERRIDE=1
    50+export TAR_OPTIONS="--owner=0 --group=0 --numeric-owner --mtime='@${REFERENCE_UNIX_TIMESTAMP}' --sort=name"
    


    laanwj commented at 2:49 pm on June 9, 2019:
    In #16141, TAR_OPTIONS has been removed from the gitian descriptor. Do we want to do the same here?

    dongcarl commented at 5:07 pm on June 10, 2019:
    It seems that change breaks a few things… I’ve made a few cleanups to how we archive in this script that can be cleanly backported to Gitian, so I’ll go take a look and fix things up.
  67. in contrib/guix/build.sh:74 in e1c026c948 outdated
    69+
    70+# Declare binaries to wrap
    71+FAKETIME_HOST_PROGS="gcc g++"
    72+FAKETIME_PROGS="date ar ranlib nm"
    73+
    74+create_faketime_wrapper() {
    


    laanwj commented at 2:50 pm on June 9, 2019:
    as guix is basically a system for deterministic builds, I’m surprised our own faketime hack is still needed !

    fanquake commented at 7:44 pm on June 9, 2019:
    I think @theuni mentioned that some of these hacks may be able to be dropped.

    dongcarl commented at 5:10 pm on June 10, 2019:
    Ah… So Guix’s normal package build system would set SOURCE_DATE_EPOCH and expect packages to follow that and submit patches upstream if they don’t (because faketime hacking is a little ugly in the end). However, we are only using Guix’s environment functionality, which doesn’t assume you want to do this. Perhaps it’d be worth setting SOURCE_DATE_EPOCH at the start of the script and see what fails to build deterministically. Mostly likely most packages would honor it.

    laanwj commented at 2:58 pm on June 11, 2019:
    OK, agree that this is something that could be done in a future PR, I was just curious
  68. laanwj commented at 2:53 pm on June 9, 2019: member

    Another observation I made today: the guix build output had

    0  NEEDED               libdl.so.2
    

    for bitcoind, bitcoin-cli, bitcoin-tx, and test_bitcoin, while the release versions didn’t. However, bitcoin-qt had that NEED in both the guix build and the release build.

    This is strange. libdl shouldn’t be needed for any of our executables. It is used to load dynamic libraries at runtime which is definitely not what we want bitcoin to do, or even be able to. I wonder what is using it, and what symbols from it are used.

  69. dongcarl commented at 4:47 pm on June 10, 2019: member

    Another observation I made today: the guix build output had

    0  NEEDED               libdl.so.2
    

    for bitcoind, bitcoin-cli, bitcoin-tx, and test_bitcoin, while the release versions didn’t. However, bitcoin-qt had that NEED in both the guix build and the release build.

    This is strange. libdl shouldn’t be needed for any of our executables. It is used to load dynamic libraries at runtime which is definitely not what we want bitcoin to do, or even be able to. I wonder what is using it, and what symbols from it are used. @laanwj It seems that my intermediary changes have fixed this. Here’s a gist with ldd output for x86_64 and readelf --dynamic output for all linux architectures: https://gist.github.com/dongcarl/505711aeb677185680f9868ca7c9a100.

  70. in contrib/guix/guix-build.sh:19 in e1c026c948 outdated
    14+    # specified by 'contrib/guix/manifest.scm'
    15+    guix environment --manifest=contrib/guix/manifest.scm \
    16+                     --load-path=contrib/guix/packages \
    17+                     --container \
    18+                     --pure \
    19+                     --no-grafts \
    


    laanwj commented at 5:36 am on June 12, 2019:
    --max-jobs=$(nproc) \ ?
  71. laanwj commented at 11:38 am on June 12, 2019: member

    @laanwj It seems that my intermediary changes have fixed thi

    Right—looks like only bitcoin-qt has a dependency on libdl now, and the dependency indeed comes through the QLibrary loading mechanism:

    0$ objdump -d bitcoin-qt |grep dlopen
    100000000001468d0 <dlopen@plt>:
    2  1468d0:       ff 25 92 89 11 02       jmpq   *0x2118992(%rip)        # 225f268 <dlopen@GLIBC_2.2.5>
    3
    4  d69e3a:       e8 91 ca 3d ff          callq  1468d0 <dlopen@plt>
    5$ addr2line -Cife bitcoin-qt.dbg 0xd69e3a
    6QLibraryPrivate::load_sys()
    

    I checked and this is no different than the gitian-build executables. Maybe there’s a way to disable QLibrary’s dynamic loading to remove the dependency, but there’s no need to do so here.

  72. laanwj commented at 8:04 am on June 13, 2019: member

    Mildly tested ACK

    • installed and built guix environment on a debian stretch VM using GNU’s guix-install.sh
    • built a full set of executables using contrib/guix/guix-build.sh. I had some minor issues but was able to resolve them with help in #bitcoin-builds
    • (manually) checked build sanity using readelf and nm for a few platforms, as well as that of the debug symbols
    • tested:
      • riscv64 test_bitcoin: all 351 unit tests passed (Fedora Rawhide on SiFive Unleashed board)
      • riscv64 bitcoind: currently running a node, seems to be stable
      • amd64 test_bitcoin: all 351 unit tests passed (Debian Stretch)
      • amd64 bitcoind: currentty running a node, seems to be stable, interface to clightningd works
      • amd64 bitcoin-qt: lightly tested interactively
      • arm32 test_bitcoin: all 351 unit tests passed (Debian Stretch)
      • aarch64 test_bitcoin: all 351 unit tests passed (Ubuntu 18.04)
      • x86_32: test_bitcoin: all 351 unit tests passed (Ubuntu 18.04, tested on a 64-bit install with 32-bit libraries installed)

    I have not tried anything with regard to determinism. At some point we should likely try building the same commit on different environments and comparing the output.

  73. fanquake commented at 2:56 am on June 15, 2019: member
    0guix --version
    1guix (GNU Guix) 5242e0a5e046e2aaa4da7b0d3756caa78ed6ca1f
    
    0git log
    1commit 87362339977761cbd3b449b22e443ff7f38b0b17 (HEAD -> 2019-01-guix, origin/2019-01-guix)
    
     0find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     196a735f146aed74dd01327408123b38043809d411e3e7c63e796dfb4939ca891  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     290057c6a0b57cb6ec7a5f37ca4f0d32234e5506182db69dc6240166073a121cd  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     322f8264e88c69b6f9014fb39d5e12c35e1eb57b94e452e7748736f81436bbafa  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     4740128a7b35788de9ea531fd5a982465e8662e17519fd06ca61d7e961f244664  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     577c43756470cba7aa21291f515eb18cd064b70bb3e50e48b406865987e86f3ab  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     64a5c1d4278841873d15623c60120b4259e31c9bf7ee0173762ae7b785ae77c40  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     76b9e742e06a9f7141d3d8eefedb57bd01bc82d0b17796c9f825c88bb8cd1cae8  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     81632118c33f28694d734805c57aebcc55df1ca07ee740c8649f71aa62c9fd89a  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     94fa04cb6bc25af887f21e3320b918e3a3e60181d8f45ae2d5575c9cb4fc44897  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10e7f8c1e85d1e5400bba3cc51aa4b42cc2c6868bbf0195c8f35629878386a5214  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    119a2e293a45ad3e83e11eb4c82902508a9010922f9464fb17859f962ef0e6bd02  output/src/bitcoin-0.18.99.tar.gz
    
  74. fanquake commented at 3:59 pm on June 22, 2019: member
    0guix --version
    1guix (GNU Guix) aedb0cf16e82caea01f82f795e473756067a1165
    
    0git log
    1commit 0be753b04070cc06965dff13118beabe46a1097a (HEAD -> 2019-01-guix, origin/2019-01-guix)
    
     0find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     1f70ac4e25b66dc30cadaaf9989c62051bc23ab9198b2564ad70d3b768dd6d613  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     26c69021b500137af3d24af7d4eb0d0ab26c089937390a8547db6b5ac7c5379cb  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     3a0622a449302de4e531db85d9a4d35a5005b6f7c929d45992f52efacc7e38957  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     458c870a464d61302317eb32a53e793c45b7249ce3f86146ed2ccc9483074a985  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     55f7e597f046ac72d106bc5259707c1ec0fe1611c6c06423884a2afa79bc02377  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     6c07a1014d95428c97314731a5e0b7925a8d7b7868ec021a429176b85581b6fbe  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     778cefd96baa16c9c8552f88a6e84f61ed8eb794ac524d96ab5c2670b986c11fa  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     8aa37b770330a0b81b36c686489f7606a7145f354e43a23862409fe08ce9e149e  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     9e733f2c28581427742fbad99d7e0b80c0584ec25aa7f8b88a2f437b68bf6e207  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10465716ef10f2d28bd17767732501c70923c60c14efec95b940658fc6e8ecbbad  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    119a2e293a45ad3e83e11eb4c82902508a9010922f9464fb17859f962ef0e6bd02  output/src/bitcoin-0.18.99.tar.gz
    
  75. dongcarl commented at 9:20 pm on June 22, 2019: member

    For both

    0$ uname -rvmo
    14.9.0-9-amd64 [#1](/bitcoin-bitcoin/1/) SMP Debian 4.9.168-1+deb9u3 (2019-06-16) x86_64 GNU/Linux
    

    and

    0$ uname -rvmo
    15.1.9-arch1-1-ARCH [#1](/bitcoin-bitcoin/1/) SMP PREEMPT Tue Jun 11 16:18:09 UTC 2019 x86_64 GNU/Linux
    

    I’m getting:

     0$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     1ed24d2574d9b27cf9434cb272f8f06170e96b10fad4d4fa46b4ef5de0a18f57a  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2cfb6889f0588492d112cc0bc2a41ef1ccdfbeea71d8405b935af708f5a643b6b  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     32e60551ef3e4cac1d2f671984da2d2c230a3e7183983e08de052cac76c983032  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     46212a7c3456bd4fda1c590202018b1ce232928509a4f139c0a0c42c0fb7c2637  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5a98a6f0d7bf6bf2392fd421669c3924836f538ffe508f9a0b9bd4f7d25489dfb  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     61273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     77fb997e1744249c98812be8eea863c8d5b764e740d77f57b64ab06ef47317d48  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     88198a30d7c67bebd1a34a94d3fb2e613c2347674a2e31c8b71e7c1c95aa0e0b2  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     98adb618f108ccb2e1c1beb24b4b14aeafa8c151a60b4329d73812bbad728313f  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10ca982c12daa54b2f125a2b24539f572567f86ababb4262aada17cbe85c40a15c  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    1185904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
    

    with

    0$ guix describe
    1Generation 2    Jun 20 2019 03:59:40    (current)
    2  guix aedb0cf
    3    repository URL: https://github.com/dongcarl/guix.git
    4    branch: 2019-05-bitcoin-staging
    5    commit: aedb0cf16e82caea01f82f795e473756067a1165
    

    and

    0$ git rev-parse HEAD
    10be753b04070cc06965dff13118beabe46a1097a
    
  76. practicalswift commented at 9:37 pm on June 22, 2019: contributor

    @dongcarl Thanks for your excellent work here!

    What is the status of the upstreaming of the guix changes in your dongcarl/guix? What changes are required and have they been submitted? :-)

  77. dongcarl commented at 9:48 pm on June 22, 2019: member

    @practicalswift

    Thanks for your excellent work here!

    :blush:

    What is the status of the upstreaming of the guix changes in your dongcarl/guix? What changes are required and have they been submitted? :-)

    There are only 2 commits that aren’t upstream yet: https://github.com/dongcarl/guix/commit/878e7a4dc8483b6f1796e847e26e82ced41c7cf7 and https://github.com/dongcarl/guix/commit/aedb0cf16e82caea01f82f795e473756067a1165.

    https://github.com/dongcarl/guix/commit/878e7a4dc8483b6f1796e847e26e82ced41c7cf7 is already submitted here: https://lists.gnu.org/archive/html/guix-patches/2019-05/msg00283.html

    And https://github.com/dongcarl/guix/commit/aedb0cf16e82caea01f82f795e473756067a1165 hasn’t been submitted yet, but I plan on doing it this week (it’s a little more extensive)

  78. practicalswift commented at 7:02 am on June 23, 2019: contributor

    FWIW: I’m getting the same checksum for the i686-linux binaries as @dongcarl, but guix-build.sh fails before the other platforms have been built.

     0$ guix pull --url=https://github.com/dongcarl/guix.git --commit=aedb0cf16e82caea01f82f795e473756067a1165 --max-jobs=$(nproc)
     1$ guix --version | grep ^guix
     2guix (GNU Guix) aedb0cf16e82caea01f82f795e473756067a1165
     3$ git clone https://github.com/bitcoin/bitcoin bitcoin-guix
     4$ cd bitcoin-guix
     5$ git fetch origin pull/15277/head:2019-01-guix
     6$ git checkout 2019-01-guix
     7$ git rev-parse HEAD
     80be753b04070cc06965dff13118beabe46a1097a
     9$ contrib/guix/guix-build.sh
    10
    11rm -f ../../lib/libQt5Widgets.a
    12ar cqs ../../lib/libQt5Widgets.a .obj/qaction.o .obj/qactiongroup.o .obj/qapplication.o .obj/qwidgetbackingstore.o .obj/qboxlayout.o .obj/qgridlayout.o .obj/qlayout.o .obj/qlayoutengine.o .obj/qlayoutitem.o .obj/qshortcut.o .obj/qsizepolicy.o .obj/qstackedlayout.o .obj/qtooltip.o .obj/qwidget.o .obj/qwidgetaction.o .obj/qgesture.o .obj/qstan
    13dardgestures.o .obj/qgesturerecognizer.o .obj/qgesturemanager.o .obj/qdesktopwidget.o .obj/qwidgetsvariant.o .obj/qwidgetwindow.o .obj/qwindowcontainer.o .obj/qformlayout.o .obj/qwhatsthis.o .obj/qdrawutil.o .obj/qstyle.o .obj/qstyleanimation.o .obj/qstylefactory.o .obj/qstyleoption.o .obj/qstyleplugin.o .obj/qstylehelper.o .obj/qcommonstyle
    14.o .obj/qproxystyle.o .obj/qstylepainter.o .obj/qstylesheetstyle.o .obj/qstylesheetstyle_default.o .obj/qpixmapstyle.o .obj/qwindowsstyle.o .obj/qfusionstyle.o .obj/qframe.o .obj/qtoolbar.o .obj/qtoolbarlayout.o .obj/qtoolbarseparator.o .obj/qabstractscrollarea.o .obj/qfocusframe.o .obj/qwidgetanimator.o .obj/qtoolbararealayout.o .obj/qabstr
    15actbutton.o .obj/qabstractslider.o .obj/qbuttongroup.o .obj/qcalendarwidget.o .obj/qcheckbox.o .obj/qcombobox.o .obj/qcommandlinkbutton.o .obj/qdatetimeedit.o .obj/qdockwidget.o .obj/qdockarealayout.o .obj/qeffects.o .obj/qfontcombobox.o .obj/qgroupbox.o .obj/qkeysequenceedit.o .obj/qlabel.o .obj/qlineedit_p.o .obj/qlineedit.o .obj/qwidgetli
    16necontrol.o .obj/qmainwindow.o .obj/qmainwindowlayout.o .obj/qmdiarea.o .obj/qmdisubwindow.o .obj/qmenu.o .obj/qmenubar.o .obj/qprogressbar.o .obj/qpushbutton.o .obj/qradiobutton.o .obj/qwidgetresizehandler.o .obj/qdialogbuttonbox.o .obj/qrubberband.o .obj/qscrollarea.o .obj/qscrollbar.o .obj/qsizegrip.o .obj/qslider.o .obj/qabstractspinbox.
    17o .obj/qspinbox.o .obj/qsplashscreen.o .obj/qsplitter.o .obj/qstackedwidget.o .obj/qstatusbar.o .obj/qtabbar.o .obj/qplaintextedit.o .obj/qtextedit.o .obj/qtabwidget.o .obj/qtoolbox.o .obj/qtoolbutton.o .obj/qtoolbarextension.o .obj/qwidgettextcontrol.o .obj/qcolordialog.o .obj/qdialog.o .obj/qerrormessage.o .obj/qfiledialog.o .obj/qsidebar.
    18o .obj/qfilesystemmodel.o .obj/qfileinfogatherer.o .obj/qfontdialog.o .obj/qinputdialog.o .obj/qmessagebox.o .obj/qprogressdialog.o .obj/qaccessiblewidget.o .obj/qaccessiblewidgetfactory.o .obj/complexwidgets.o .obj/qaccessiblemenu.o .obj/qaccessiblewidgets.o .obj/rangecontrols.o .obj/simplewidgets.o .obj/itemviews.o .obj/qabstractitemview.o
    19 .obj/qheaderview.o .obj/qbsptree.o .obj/qabstractitemdelegate.o .obj/qitemdelegate.o .obj/qitemeditorfactory.o .obj/qstyleditemdelegate.o .obj/qcolumnview.o .obj/qcolumnviewgrip.o .obj/qdatawidgetmapper.o .obj/qdirmodel.o .obj/qlistview.o .obj/qlistwidget.o .obj/qtableview.o .obj/qtablewidget.o .obj/qtreeview.o .obj/qtreewidget.o .obj/qtree
    20widgetitemiterator.o .obj/qfileiconprovider.o .obj/qgraphicsgridlayout.o .obj/qgraphicsitem.o .obj/qgraphicsitemanimation.o .obj/qgraphicslayout.o .obj/qgraphicslayout_p.o .obj/qgraphicslayoutitem.o .obj/qgraphicslinearlayout.o .obj/qgraphicsproxywidget.o .obj/qgraphicsscene.o .obj/qgraphicsscene_bsp.o .obj/qgraphicsscenebsptreeindex.o .obj/
    21qgraphicssceneevent.o .obj/qgraphicssceneindex.o .obj/qgraphicsscenelinearindex.o .obj/qgraphicstransform.o .obj/qgraphicsview.o .obj/qgraphicswidget.o .obj/qgraphicswidget_p.o .obj/qgraphicslayoutstyleinfo.o .obj/qgraphicsgridlayoutengine.o .obj/qsimplex_p.o .obj/qgraphicsanchorlayout_p.o .obj/qgraphicsanchorlayout.o .obj/qsystemtrayicon.o
    22.obj/qcolormap.o .obj/qcompleter.o .obj/qscroller.o .obj/qscrollerproperties.o .obj/qflickgesture.o .obj/qundostack.o .obj/qundogroup.o .obj/qundoview.o .obj/qsystemtrayicon_x11.o .obj/qgraphicseffect.o .obj/qpixmapfilter.o .obj/qrc_qstyle.o .obj/qrc_qmessagebox.o .obj/moc_qpixmapstyle_p.o
    23make[2]: Leaving directory '/bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.9.7-69ee22e4522/qtbase/src/widgets'
    24make[1]: Leaving directory '/bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.9.7-69ee22e4522/qtbase/src'
    25make: *** [funcs.mk:253: /bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.9.7-69ee22e4522/qtbase/.stamp_built] Error 2
    26make: Leaving directory '/bitcoin/depends'
    27$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    28a98a6f0d7bf6bf2392fd421669c3924836f538ffe508f9a0b9bd4f7d25489dfb  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    291273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    3085904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
    
  79. fanquake commented at 8:09 am on June 23, 2019: member

    @dongcarl You can disregard my previous post, I must have miss-built or tainted my build environment somehow..

    I’ve setup a new environment from scratch, using a slightly newer version of my alpine-guix dockerfile, rebuilt everything, and all my hashes match with yours 🚀 .

    As you mentioned, after a little cleaning up, upstreaming patches and appeasing the linter, I’d like to see this merged pretty soon. It’s self-contained in contrib/, a lot of the changes here are actually already in master and followups, fixes, as well as cross compilation for macOS and Windows can follow later.

    0bash-5.0# uname -rvmo
    14.9.125-linuxkit [#1](/bitcoin-bitcoin/1/) SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 Linux
    
     0bash-5.0# find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     1ed24d2574d9b27cf9434cb272f8f06170e96b10fad4d4fa46b4ef5de0a18f57a  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2cfb6889f0588492d112cc0bc2a41ef1ccdfbeea71d8405b935af708f5a643b6b  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     32e60551ef3e4cac1d2f671984da2d2c230a3e7183983e08de052cac76c983032  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     46212a7c3456bd4fda1c590202018b1ce232928509a4f139c0a0c42c0fb7c2637  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5a98a6f0d7bf6bf2392fd421669c3924836f538ffe508f9a0b9bd4f7d25489dfb  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     61273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     77fb997e1744249c98812be8eea863c8d5b764e740d77f57b64ab06ef47317d48  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     88198a30d7c67bebd1a34a94d3fb2e613c2347674a2e31c8b71e7c1c95aa0e0b2  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     98adb618f108ccb2e1c1beb24b4b14aeafa8c151a60b4329d73812bbad728313f  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10ca982c12daa54b2f125a2b24539f572567f86ababb4262aada17cbe85c40a15c  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    1185904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
    
    0bash-5.0# guix describe
    1Generation 1	Jun 23 2019 02:53:32	(current)
    2  guix aedb0cf
    3    repository URL: https://github.com/dongcarl/guix.git
    4    commit: aedb0cf16e82caea01f82f795e473756067a1165
    
    0bash-5.0# git rev-parse HEAD
    10be753b04070cc06965dff13118beabe46a1097a
    

    @practicalswift Is it possible you’ve run out of disk space while building? Could you try running a build like this ./contrib/guix/guix-build.sh > out 2> err, as well as posting any more logs / info ?

  80. practicalswift commented at 5:41 pm on June 23, 2019: contributor

    I did another run and obtained the following results:

    Please note that I’m getting the same hashes as @dongcarl and @fanquake for the non-debug files.

    But not for the debug files.

     0$ guix pull --url=https://github.com/dongcarl/guix.git --commit=aedb0cf16e82caea01f82f795e473756067a1165 --max-jobs=$(nproc)
     1$ guix --version | grep ^guix
     2guix (GNU Guix) aedb0cf16e82caea01f82f795e473756067a1165
     3$ git clone https://github.com/bitcoin/bitcoin bitcoin-guix
     4$ cd bitcoin-guix
     5$ git fetch origin pull/15277/head:2019-01-guix
     6$ git checkout 2019-01-guix
     7$ git rev-parse HEAD
     80be753b04070cc06965dff13118beabe46a1097a
     9$ rm -rf output/
    10$ contrib/guix/guix-build.sh 2>&1 | tee guix-build.output
    1112+ tar --create --no-recursion --mode=u+rw,go+r-w,a+X --null --files-from=-
    13+ sort --zero-terminated
    14+ gzip
    15+ mkdir -p /bitcoin/output/src
    16+ mv -n /bitcoin/output/src/bitcoin-0.18.99.tar.gz /bitcoin/output/src
    17$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    18fdd0c80022363fc21cdeeebb0b8cbaf3ca9f1d7162a1bcca0c272274fb306f06  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    19cfb6889f0588492d112cc0bc2a41ef1ccdfbeea71d8405b935af708f5a643b6b  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    205d947ce818a629fff5b9ecfe9aac866384b6062730d9b5a8f9a0333539c29bd5  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
    216212a7c3456bd4fda1c590202018b1ce232928509a4f139c0a0c42c0fb7c2637  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    2217cb465713bf50272eaa483a3c40ce2f33e61752f835032ae8513edbb1a92fc8  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    231273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    247fb997e1744249c98812be8eea863c8d5b764e740d77f57b64ab06ef47317d48  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    258198a30d7c67bebd1a34a94d3fb2e613c2347674a2e31c8b71e7c1c95aa0e0b2  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    260a0831a8204551684deb9bc1083dbb2d21a4552020e3ee939f40653151975c5f  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    27ca982c12daa54b2f125a2b24539f572567f86ababb4262aada17cbe85c40a15c  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    2885904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
    

    I’ll try again to see if I get consistent results. @fanquake I’m not sure about the root cause for the previously reported failure: unfortunately I don’t have any logs saved. Running out of disk space can be ruled out though: more than a terabyte free. I’ll try to reproduce.

  81. practicalswift commented at 6:07 pm on June 23, 2019: contributor
    @dongcarl Could you fix the shellcheck issues that Travis complains about? Since these shell scripts will be very important for the project I suggest addressing all shellcheck warnings emitted by the latest version of shellcheck: not only the checks enforced in Travis.
  82. practicalswift commented at 8:53 pm on June 23, 2019: contributor

    Did another guix-build.sh and received hashes matching @dongcarl and @fanquake also for the debug builds:

     0$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     1ed24d2574d9b27cf9434cb272f8f06170e96b10fad4d4fa46b4ef5de0a18f57a  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2cfb6889f0588492d112cc0bc2a41ef1ccdfbeea71d8405b935af708f5a643b6b  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     32e60551ef3e4cac1d2f671984da2d2c230a3e7183983e08de052cac76c983032  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     46212a7c3456bd4fda1c590202018b1ce232928509a4f139c0a0c42c0fb7c2637  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5a98a6f0d7bf6bf2392fd421669c3924836f538ffe508f9a0b9bd4f7d25489dfb  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     61273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     77fb997e1744249c98812be8eea863c8d5b764e740d77f57b64ab06ef47317d48  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     88198a30d7c67bebd1a34a94d3fb2e613c2347674a2e31c8b71e7c1c95aa0e0b2  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     98adb618f108ccb2e1c1beb24b4b14aeafa8c151a60b4329d73812bbad728313f  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10ca982c12daa54b2f125a2b24539f572567f86ababb4262aada17cbe85c40a15c  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    1185904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
    

    Will run multiple rounds to investigate this further.

  83. fanquake commented at 9:31 pm on June 23, 2019: member
    @TheCharlatan mentioned in the #bitcoin-builds channel that they are also seeing hashes that match mine and Carl’s. @practicalswift Thanks for following up. Where are you seeing the build output from Marco that you keep comparing against?
  84. practicalswift commented at 9:36 pm on June 23, 2019: contributor
    @practicalswift Sorry, I meant your hashes. Now corrected.
  85. practicalswift commented at 4:23 am on June 25, 2019: contributor

    FWIW:

    After running thirteen additional Guix builds using the following:

    0$ guix pull --url=https://github.com/dongcarl/guix.git --commit=aedb0cf16e82caea01f82f795e473756067a1165 --max-jobs=$(nproc)
    1$ guix --version | grep ^guix
    2guix (GNU Guix) aedb0cf16e82caea01f82f795e473756067a1165
    3$ git clone https://github.com/bitcoin/bitcoin bitcoin-guix
    4$ cd bitcoin-guix
    5$ git fetch origin pull/15277/head:2019-01-guix
    6$ git checkout 2019-01-guix
    7$ git rev-parse HEAD
    80be753b04070cc06965dff13118beabe46a1097a
    9$ contrib/guix/guix-build.sh > /dev/null 2> /dev/null
    

    I can report these generated SHA-256 hashes:

     0     13 1273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     1     13 2e60551ef3e4cac1d2f671984da2d2c230a3e7183983e08de052cac76c983032  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     2     13 6212a7c3456bd4fda1c590202018b1ce232928509a4f139c0a0c42c0fb7c2637  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     3     13 7fb997e1744249c98812be8eea863c8d5b764e740d77f57b64ab06ef47317d48  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     4     13 8198a30d7c67bebd1a34a94d3fb2e613c2347674a2e31c8b71e7c1c95aa0e0b2  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     5     13 85904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
     6     13 8adb618f108ccb2e1c1beb24b4b14aeafa8c151a60b4329d73812bbad728313f  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
     7     13 a98a6f0d7bf6bf2392fd421669c3924836f538ffe508f9a0b9bd4f7d25489dfb  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     8     13 ca982c12daa54b2f125a2b24539f572567f86ababb4262aada17cbe85c40a15c  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
     9     13 cfb6889f0588492d112cc0bc2a41ef1ccdfbeea71d8405b935af708f5a643b6b  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    10     13 ed24d2574d9b27cf9434cb272f8f06170e96b10fad4d4fa46b4ef5de0a18f57a  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    

    I’m now getting consistent results across runs (as expected) and those results are matching the hashes reported by others (as expected).

    Great work @dongcarl!

  86. in depends/packages/xtrans.mk:9 in 0be753b040 outdated
     5@@ -6,7 +6,7 @@ $(package)_sha256_hash=054d4ee3efd52508c753e9f7bc655ef185a29bd2850dd9e2fc2ccc335
     6 $(package)_dependencies=
     7 
     8 define $(package)_set_vars
     9-$(package)_config_opts_linux=--with-pic --disable-static
    10+$(package)_config_opts_linux=--with-pic --disable-shared
    


    MarcoFalke commented at 9:01 pm on June 25, 2019:
    Would be nice to do a rebase, so that changes already merged stop showing up here, no?

    fanquake commented at 4:02 am on June 26, 2019:

    That’s the plan, Carl has just been afk for the past few days afaik. See discussion in #bitcoin-builds.

    00:49 < dongcarl> I’m gunna clean up, upstream, document, then we can do last round of hashes!

  87. jamesob commented at 2:27 pm on June 26, 2019: member
    Will test this when rebased.
  88. fanquake added the label Waiting for author on Jun 26, 2019
  89. dongcarl commented at 4:09 pm on June 26, 2019: member
    Making a few improvements today, will push along with rebase.
  90. practicalswift commented at 10:58 pm on June 27, 2019: contributor

    The results are stable between runs (as expected) – now at 31 identical builds:

     0     31 1273da1f073b8beb0169e5c12557c85944784a39e35b3252c754ea3679f41ee4  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     1     31 2e60551ef3e4cac1d2f671984da2d2c230a3e7183983e08de052cac76c983032  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     2     31 6212a7c3456bd4fda1c590202018b1ce232928509a4f139c0a0c42c0fb7c2637  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     3     31 7fb997e1744249c98812be8eea863c8d5b764e740d77f57b64ab06ef47317d48  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     4     31 8198a30d7c67bebd1a34a94d3fb2e613c2347674a2e31c8b71e7c1c95aa0e0b2  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     5     31 85904ad700577afba1ba3e21dbc4af093c4ebc05b057d3afff939c9bc997f022  output/src/bitcoin-0.18.99.tar.gz
     6     31 8adb618f108ccb2e1c1beb24b4b14aeafa8c151a60b4329d73812bbad728313f  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
     7     31 a98a6f0d7bf6bf2392fd421669c3924836f538ffe508f9a0b9bd4f7d25489dfb  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     8     31 ca982c12daa54b2f125a2b24539f572567f86ababb4262aada17cbe85c40a15c  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
     9     31 cfb6889f0588492d112cc0bc2a41ef1ccdfbeea71d8405b935af708f5a643b6b  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    10     31 ed24d2574d9b27cf9434cb272f8f06170e96b10fad4d4fa46b4ef5de0a18f57a  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    
  91. dongcarl force-pushed on Jun 30, 2019
  92. hebasto commented at 3:50 pm on June 30, 2019: member

    Approach ACK e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71

    Trying to test:

     0$ guix --version | grep guix
     1guix (GNU Guix) bf473f0ca0b218e9a93b00234a8f25ba015b8bd3
     2$ git rev-parse HEAD
     3f7c57d2795ddeccaf16acf069f0bc2db43fa5ba1
     4$ ./contrib/guix/guix-build.sh > /dev/null 
     5++ nproc
     6+ make -C depends -j4 download
     7+ for host in ${HOSTS=i686-linux-gnu x86_64-linux-gnu arm-linux-gnueabihf aarch64-linux-gnu riscv64-linux-gnu}
     8++ git log --format=%at -1
     9+ guix environment --manifest=contrib/guix/manifest.scm --load-path=contrib/guix/packages --container --pure --no-cwd --share=.=/bitcoin -- env HOST=i686-linux-gnu REFERENCE_UNIX_TIMESTAMP=1561871104 bash -c 'cd /bitcoin && bash contrib/guix/build.sh'
    10guix environment: error: no-cwd: unrecognized option
    

    The --no-cwd option was introduced in the latest forced push (commit 980811ebf80c45b690f388a43ddeaed716344eb0).

  93. in contrib/guix/guix-build.sh:28 in e8dd4da0b2 outdated
    14+    # specified by 'contrib/guix/manifest.scm'
    15+    guix environment --manifest=contrib/guix/manifest.scm \
    16+                     --load-path=contrib/guix/packages \
    17+                     --container \
    18+                     --pure \
    19+                     --no-cwd \
    


    hebasto commented at 4:02 pm on June 30, 2019:

    dongcarl commented at 4:53 am on July 1, 2019:

    Hey @hebasto! I think you need a:

    0guix pull --url=https://github.com/dongcarl/guix.git \
    1          --branch=2019-05-bitcoin-staging
    
  94. dongcarl commented at 10:54 pm on June 30, 2019: member

    Hey all! Lots of updates…

    Overview

    1. Rebased (and continually fixing Gitian failures along the way).
    2. Reproducibility across distros and kernels (tested on Alpine, Fedora, Arch, Debian, and Ubuntu).
    3. Fixed a corner case for those who were building with bitcoin cloned in a directory strictly under /bitcoin (this corner case doesn’t trigger for those who cloned bitcoin exactly in /bitcoin, so those using fanquake’s Docker images are fine).
    4. Work has begun (on a separate branch) on using Guix inferiors and channels to pin the effective Guix version so that we have reproducibility not only across distros, kernels, and filesystems, but also across time. A nice side-effect of this work is that we won’t need the manual guix pull at the beginning of the process anymore.

    Details

    1. Specifically #16059 and #16184.

    2. For those who are interested, our problems were mostly caused by $PWD being different. Using -ffile-prefix-map=OLD=NEW as suggested doesn’t work. Thankfully, guix environment knows how to map filesystems using bind mounting: https://github.com/bitcoin/bitcoin/pull/15277/commits/45f122244284e0e7dca0425050b589fe2023be9a.

    3. This was caused by the fix in 1. Specifically, if you were building from a $PWD of /bitcoin/foobar, the way that guix environment bind mounts host paths to container paths (see table below) causes filesystem loops. Admittedly this affects a minority of users, but I was able to fix an old patchset that added a --no-cwd option to guix environment and apply it to my Guix tree: https://github.com/dongcarl/guix/compare/ea953d0ee3cddc0e65139e9755403d30560c37b7...2019-05-bitcoin-staging. This is also upstreamed here.

    Host path Container path Description
    /bitcoin/foobar ($PWD) /bitcoin/foobar guix environment maps host $PWD to container $PWD by default
    /bitcoin/foobar ($PWD) /bitcoin Mapped due to --share=.=/bitcoin from https://github.com/bitcoin/bitcoin/pull/15277/commits/45f122244284e0e7dca0425050b589fe2023be9a
    1. Effectively, this means that when you run the Guix build, Guix will travel back in time to a commit of the Guix repo that we specify and build everything with that specific version of Guix being the effective one. All of this is done without affecting the default version of Guix for the user. Right now this depends on a git repo as a Guix channel, which can be moved under the bitcoin-core org easily. I’m working on a separate patchset which allows specifying non-git channels so it can live under the bitcoin repository.

    Hashes

    0$ guix describe
    1Generation 18   Jun 30 2019 21:34:42    (current)
    2  guix 24e7071
    3    repository URL: https://github.com/dongcarl/guix.git
    4    branch: 2019-05-bitcoin-staging
    5    commit: 24e707111f34ddf3342517932830264177df40b4
    
    0$ git rev-parse HEAD
    1e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71
    
     0$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     122353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     33af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     49a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5e7097cf5dcf8ee7bb90977d0062956a41f963ca22727becc64ec07d215e4bdc6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     60dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     7d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     874d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     911b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    119aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    
  95. fanquake removed the label Waiting for author on Jun 30, 2019
  96. fanquake commented at 6:32 am on July 1, 2019: member

    Nice work. Looks like everything is matching.

    so that we have reproducibility not only across distros, kernels, and filesystems, but also across time.

    🕔🚀🕤

    so those using fanquake’s Docker images are fine).

    The images and other Guix stuff is here: https://github.com/fanquake/core-review/tree/master/guix.

    0bash-5.0# guix describe
    1Generation 1	Jul 01 2019 01:02:16	(current)
    2  guix 24e7071
    3    repository URL: https://github.com/dongcarl/guix.git
    4    commit: 24e707111f34ddf3342517932830264177df40b4
    
    0bash-5.0# git rev-parse HEAD
    1e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71
    
     0find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     122353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     33af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     49a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5e7097cf5dcf8ee7bb90977d0062956a41f963ca22727becc64ec07d215e4bdc6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     60dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     7d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     874d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     911b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    119aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    
  97. practicalswift commented at 9:25 am on July 1, 2019: contributor

    Excellent! Thanks for yet another great update @dongcarl: very happy to see the work you’re doing 💖

    As expected I’m getting matching results also when using the updated version:

     0[Mon Jul  1 06:18:50 UTC 2019] $ guix --version | grep ^guix
     1guix (GNU Guix) 24e707111f34ddf3342517932830264177df40b4
     2[Mon Jul  1 06:19:36 UTC 2019] $ git rev-parse HEAD
     3e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71
     4[Mon Jul  1 06:19:37 UTC 2019] $ contrib/guix/guix-build.sh > guix-build.out 2> guix-build.err
     5[Mon Jul  1 09:18:29 UTC 2019] $ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     622353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     7d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     83af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     99a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    10e7097cf5dcf8ee7bb90977d0062956a41f963ca22727becc64ec07d215e4bdc6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    110dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    12d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    1374d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    1411b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    15afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    169aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    

    I have a machine running Guix builds for Bitcoin Core around-the-clock: I’ll report any deviations or oddities :-)

  98. dongcarl commented at 3:29 pm on July 1, 2019: member
    @practicalswift Huh… That’s got me thinking… Maybe we can use the venerable reprotest to find cases of variability…
  99. hebasto commented at 8:39 am on July 2, 2019: member

    My results are:

     0$ guix --version | grep guix
     1guix (GNU Guix) 24e707111f34ddf3342517932830264177df40b4
     2$ git rev-parse HEAD
     3e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71
     4$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     522353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     6d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     73af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     89a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     9897f59abc9ae6caa4c6a6908b25ec93dd6f361e3c09b92b150b76f890a0cba80  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    100dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    11d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    1274d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    1311b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    14afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    15381927c9eb4e70a1a1258ef079a424b467337c9a9a6dd7dcbfada5cd80fdde08  output/src/bitcoin-0.18.99.tar.gz
    

    The hashs of src/bitcoin-0.18.99.tar.gz and bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz differ from #15277 (comment), #15277 (comment), #15277 (comment). What could be the reason?

    EDIT: Meanwhile, trying to make another build with clean cloned bitcoin repo.

  100. practicalswift commented at 9:03 am on July 2, 2019: contributor

    @hebasto Very interesting and thanks for reporting!

    Do you have the generated files (bitcoin-0.18.99.tar.gz, output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz and bitcoin-0.18.99-i686-linux-gnu.tar.gz ) around? If so please make a backup copy of them :-)

    It would be very interested to see the diffoscope output between the files listed above with the “unexpected” hashes and the corresponding files with the expected hashes.

    Would you be able to do such a diffoscope? :-)

    Likely you’ll get the expected hashes if you perform a fresh new build.

  101. hebasto commented at 12:28 pm on July 2, 2019: member

    Another try:

     0$ git rev-parse HEAD
     1e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71
     2$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     322353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     4d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     53af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     69a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     7e7097cf5dcf8ee7bb90977d0062956a41f963ca22727becc64ec07d215e4bdc6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     80dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     9d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    1074d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    1111b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    12afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    139aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    

    Everything is matching.

    The output of diffoscope for src/bitcoin-0.18.99.tar.gz:

     0├── bitcoin-0.18.99.tar
     1 ├── file list
     2  @@ -1359,14 +1359,16 @@
     3   drwxr-xr-x   0        0        0        0 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/
     4   -rw-r--r--   0        0        0       12 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/.gitignore
     5   -rw-r--r--   0        0        0     7446 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/README.md
     6   -rwxr-xr-x   0        0        0     7188 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/combine_logs.py
     7   -rw-r--r--   0        0        0      890 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/combined_log_template.html
     8   -rwxr-xr-x   0        0        0      826 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/create_cache.py
     9   drwxr-xr-x   0        0        0        0 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/data/
    10  +drwxr-xr-x   0        0        0        0 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/data/__pycache__/
    11  +-rw-r--r--   0        0        0     6474 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/data/__pycache__/invalid_txs.cpython-36.pyc
    12   -rw-r--r--   0        0        0     5878 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/data/invalid_txs.py
    13   -rw-r--r--   0        0        0    57899 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/data/rpc_getblockstats.json
    14   -rw-r--r--   0        0        0    46360 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/data/rpc_psbt.json
    15   -rwxr-xr-x   0        0        0     8848 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/example_test.py
    16   -rwxr-xr-x   0        0        0     7628 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/feature_assumevalid.py
    17   -rwxr-xr-x   0        0        0    18290 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/feature_bip68_sequence.py
    18   -rwxr-xr-x   0        0        0    64048 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/feature_block.py
    19  @@ -1447,14 +1449,34 @@
    20   -rwxr-xr-x   0        0        0     1911 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/rpc_signmessage.py
    21   -rwxr-xr-x   0        0        0     9570 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/rpc_signrawtransaction.py
    22   -rwxr-xr-x   0        0        0     6532 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/rpc_txoutproof.py
    23   -rwxr-xr-x   0        0        0      803 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/rpc_uptime.py
    24   -rwxr-xr-x   0        0        0     7885 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/rpc_users.py
    25   drwxr-xr-x   0        0        0        0 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/
    26   -rw-r--r--   0        0        0        0 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__init__.py
    27  +drwxr-xr-x   0        0        0        0 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/
    28  +-rw-r--r--   0        0        0      154 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/__init__.cpython-36.pyc
    29  +-rw-r--r--   0        0        0     3126 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/address.cpython-36.pyc
    30  +-rw-r--r--   0        0        0     6455 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/authproxy.cpython-36.pyc
    31  +-rw-r--r--   0        0        0     1292 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/bignum.cpython-36.pyc
    32  +-rw-r--r--   0        0        0     7081 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/blocktools.cpython-36.pyc
    33  +-rw-r--r--   0        0        0     3362 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/coverage.cpython-36.pyc
    34  +-rw-r--r--   0        0        0     2349 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/descriptors.cpython-36.pyc
    35  +-rw-r--r--   0        0        0    11871 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/key.cpython-36.pyc
    36  +-rw-r--r--   0        0        0    51239 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/messages.cpython-36.pyc
    37  +-rw-r--r--   0        0        0    23499 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/mininode.cpython-36.pyc
    38  +-rw-r--r--   0        0        0     4499 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/netutil.cpython-36.pyc
    39  +-rw-r--r--   0        0        0    15956 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/script.cpython-36.pyc
    40  +-rw-r--r--   0        0        0     4067 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/segwit_addr.cpython-36.pyc
    41  +-rw-r--r--   0        0        0     1760 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/siphash.cpython-36.pyc
    42  +-rw-r--r--   0        0        0     4903 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/socks5.cpython-36.pyc
    43  +-rw-r--r--   0        0        0    19248 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/test_framework.cpython-36.pyc
    44  +-rw-r--r--   0        0        0    19620 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/test_node.cpython-36.pyc
    45  +-rw-r--r--   0        0        0    20244 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/util.cpython-36.pyc
    46  +-rw-r--r--   0        0        0     3095 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/__pycache__/wallet_util.cpython-36.pyc
    47   -rw-r--r--   0        0        0     2887 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/address.py
    48   -rw-r--r--   0        0        0     8667 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/authproxy.py
    49   -rw-r--r--   0        0        0     1230 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/bignum.py
    50   -rw-r--r--   0        0        0     8201 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/blocktools.py
    51   -rw-r--r--   0        0        0     3383 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/coverage.py
    52   -rw-r--r--   0        0        0     2051 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/descriptors.py
    53   -rw-r--r--   0        0        0    13480 2019-06-30 05:04:38.000000 bitcoin-0.18.99/test/functional/test_framework/key.py
    

    It seem the reason of hash differences was out of disk space error during my first attempt to build.

  102. dongcarl commented at 12:36 pm on July 2, 2019: member
    @hebasto Huh, it seems from your diffoscope that we’re picking up __pycache__ directories… I’ve seen this before with other builds people have submitted over #bitcoin-builds IRC. Will investigate!
  103. practicalswift commented at 1:27 pm on July 2, 2019: contributor
    @hebasto Very good finding with the __pycache__ directories! Thanks a lot for sharing. Does diffoscope on the i686-tar.gz:s reveal the source of non-determinism also for those?
  104. hebasto commented at 1:42 pm on July 2, 2019: member

    @practicalswift

    Does diffoscope on the i686-tar.gz:s reveal the source of non-determinism also for those?

    It eats all resources (RAM and free space on SSD) of my home machine ((

  105. hebasto commented at 2:54 pm on July 2, 2019: member

    For my failed build following nothingmuch on #bitcoin-builds IRC:

    0$ tar -tf bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz | grep .dbg.dbg
    1bitcoin-0.18.99/bin/bitcoin-cli.dbg.dbg
    2bitcoin-0.18.99/bin/bitcoin-qt.dbg.dbg
    3bitcoin-0.18.99/bin/bitcoin-tx.dbg.dbg
    4bitcoin-0.18.99/bin/bitcoin-wallet.dbg.dbg
    5bitcoin-0.18.99/bin/bitcoind.dbg.dbg
    6bitcoin-0.18.99/bin/test_bitcoin.dbg.dbg
    7bitcoin-0.18.99/lib/libbitcoinconsensus.so.0.0.0.dbg.dbg
    
  106. nothingmuch commented at 3:09 pm on July 2, 2019: contributor

    I’ve seen both .dbg.dbg binaries and .pyc files in the source tarball files before, I’m pretty confident (but not 100% certain) that in my case it was due to forgetting to git clean before retrying after a failed build, which sounds consistent @hebasto’s disk space error.

    FWIW, the .dbg.dbg files are created from .dbg files when those already exist, in the following commands: https://github.com/bitcoin/bitcoin/blob/e8dd4da0b287e0fe252c99bb4a7cb26c2e947b71/contrib/guix/build.sh#L216-L219

  107. practicalswift commented at 3:45 pm on July 2, 2019: contributor
    Is there a reason to why we just don’t start with clean build output directories when commencing a new Guix build? (think rm + mkdir instead of mkdir -p at the start of build: removing all leftovers from previous Guix builds)
  108. nothingmuch commented at 4:33 pm on July 2, 2019: contributor
    That sounds appropriate to me. Since the source tree is built from the tarball (as opposed to the working directory itself) it might also make sense to pass --expose (which is read only) to guix environment instead of --share, and only use --share for the depends workdir and the outputs.
  109. fanquake commented at 1:26 am on July 5, 2019: member
    Carl mentioned that he has some WIP Guix documention available here: https://gist.github.com/dongcarl/a9f86bb11d7b55e07b592db807430a64.
  110. practicalswift commented at 3:15 pm on July 5, 2019: contributor

    FWIW, now at 28 identical builds – results seem stable (as expected):

     0     28 0dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     1     28 11b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
     2     28 22353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     3     28 3af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     4     28 74d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     5     28 9a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     6     28 9aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
     7     28 afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
     8     28 d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     9     28 d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    10     28 e7097cf5dcf8ee7bb90977d0062956a41f963ca22727becc64ec07d215e4bdc6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    

    I’ll now try to see if I obtain identical results if I interrupt my Guix builds randomly and then resume them (and let them build until completion).

    Most cases of non-determinism seen so far seems to be related to interrupted builds that where then resumed.

  111. practicalswift commented at 6:48 am on July 6, 2019: contributor

    When interrupting the Guix build and then resuming I get unexpected and previously unseen hashes for some of the builds:

     0      5 0dff397103b52471c4c483207b88102ddea79fdcb75c7ff01c2d10a1bff71aa9  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     1      4 11b9db3e77f71a4d99c5f33a6a2e985ca817d16712a692c612ba5006f0ddf1a7  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
     2      4 22353b4a9532425c249632936896fb43972bb098e427857dae1df3b5206ddcac  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     3      4 3af24d40cd9ae92c2b431e7fbce652f7713b929ca471427c07c5ceeaf9282af6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     4      4 74d8faedbc251f8bc12588d066866493b833b3d04e6933114283b61bc349bb7d  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     5      1 7a3b628daceb8742443eeb108e150f8fddde033a68a857cc84c13effd7e2622d  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     6      4 9a7878e1e70394b00224cf2b611cfdf0296976a916513dc08ec596d1127db389  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     7      4 9aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
     8      4 afd950b9e1d70aa0c8e765c3189328ad1f47ab66ae0ed9733914f853cabed068  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
     9      1 afded9eed624080b365e49f4108445b614da7d927ec3905ae7f7907dc4ae324b  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    10      4 d762ed4228d7ccecb1b361c0f9f9f2458d93f0f1fdc8ef402cf9c5d5f8f28055  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    11      4 d9e89a27b1cb8debeb5c83ec153e8de9bf956e2ce8b7e70fe78906db478095fc  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    12      3 e7097cf5dcf8ee7bb90977d0062956a41f963ca22727becc64ec07d215e4bdc6  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    

    These differ from the hashes previously seen:

    0      1 7a3b628daceb8742443eeb108e150f8fddde033a68a857cc84c13effd7e2622d  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    1      1 afded9eed624080b365e49f4108445b614da7d927ec3905ae7f7907dc4ae324b  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    

    It seems like we have an issue with non-determinism for at least bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz if the Guix build is interrupted and then resumed.

    Perhaps #15277 (comment) would solve it?

  112. dongcarl commented at 4:02 pm on July 6, 2019: member
    @practicalswift That makes sense. I’m the middle of improving my script right now, and will include that as part of the changes!
  113. practicalswift commented at 9:19 am on July 8, 2019: contributor

    @dongcarl

    Another suggestion: what about making the writing to the final output files atomic so that the files ${OUTDIR}/${DISTNAME}-${HOST}.tar.gz are only written to if we are certain that everything went well?

    That is instead of the current:

    0        find "${DISTNAME}" -not -name "*.dbg" -print0 \
    1            | sort --zero-terminated \
    2            | tar --create --no-recursion --mode='u+rw,go+r-w,a+X' --null --files-from=- \
    3            | gzip > "${OUTDIR}/${DISTNAME}-${HOST}.tar.gz"
    

    Do something along the lines of:

    0        TEMPORARY_OUTPUT_FILE=$(tempfile -d .)
    1        find "${DISTNAME}" -not -name "*.dbg" -print0 \
    2            | sort --zero-terminated \
    3            | tar --create --no-recursion --mode='u+rw,go+r-w,a+X' --null --files-from=- \
    4            | gzip > "${TEMPORARY_OUTPUT_FILE}"
    5        mv "${TEMPORARY_OUTPUT_FILE}" ""${OUTDIR}/${DISTNAME}-${HOST}.tar.gz"
    

    I think that would guard against a subset of unexpected hashes we’ve seen so far (for example: the no space left on device case).

    (Note that the -d . parameter to tempfile is important: we want src and dest to be on the same mounted filesystem to get mv to be able to use the rename syscall which is atomic (given some likely to be fulfilled assumptions).)

  114. dongcarl commented at 3:00 pm on July 8, 2019: member

    @practicalswift I’ll try testing, but for the no space left on device case, wouldn’t pipefail make sure that the exit code is non-zero?

    My current solution is just to fail early and fail hard: Non-empty $OUTDIR? Exit!

  115. laanwj commented at 3:37 pm on July 8, 2019: member

    @practicalswift I’ll try testing, but for the no space left on device case, wouldn’t pipefail make sure that the exit code is non-zero?

    In the case of gitian this condition was accidentally ignored because the exit code didn’t ‘bubble up’ to the top level script (leading to #15549). If something similar could happen here, it makes sense to take precautions, given how tiring it is to dive into non-matching hash problems :sweat:

  116. dongcarl commented at 3:53 pm on July 9, 2019: member
    Working on a few improvements to readability and usability… Next push will be either the ultimate one or the penultimate one. :crossed_fingers:
  117. dongcarl commented at 3:53 am on July 12, 2019: member

    There are many more improvements that can be made, but I believe as a subdirectory of contrib, this PR is ready.

    Highlights of this recent push:

    • Added a README
    • Fully commented all shell scripts
    • Shell scripts pass shellcheck
    • Simplified and eliminated 3 files
    • package-based Guix manifest instead of specification based
    • More robust shell scripts that traps Ctrl-C’s to give the user a warning and will remove partial outputs if long, output-producing commands are interrupted

    Note to testers:

    Please pull my Guix branch again, as it has been updated:

    0guix pull --url=https://github.com/dongcarl/guix.git \
    1          --branch=2019-05-bitcoin-staging \
    2          --max-jobs=4
    

    My substitute server has been loaded with the new packages, so those who use my substitute server will be able to try out the new changes faster.

    Also, please read the README.md for new features and tips and tricks. Let me know if anything is unclear.

  118. dongcarl renamed this:
    [Help Wanted] contrib: Enable building in Guix containers
    contrib: Enable building in Guix containers
    on Jul 12, 2019
  119. dongcarl force-pushed on Jul 12, 2019
  120. contrib: Add deterministic Guix builds. 3e80ec3ea9
  121. dongcarl force-pushed on Jul 12, 2019
  122. fanquake commented at 7:33 am on July 12, 2019: member

    Nice. New build (Docker) hashes below. Will review the docs, but post nits & any fix-ups there, this should be pretty much be merge ready.

    0bash-5.0# env PATH="/root/.config/guix/current/bin${PATH:+:}$PATH" guix describe
    1Generation 2	Jul 12 2019 05:09:23	(current)
    2  guix 82c77e5
    3    repository URL: https://github.com/dongcarl/guix.git
    4    branch: 2019-05-bitcoin-staging
    5    commit: 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    
    0bash-5.0# git rev-parse HEAD
    13e80ec3ea9691c7c89173de922a113e643fe976b
    
     0bash-5.0# find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     1a298dea164a8c578831405c46777a53a771efada572383c4e67d447d54cac8f1  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2c1ed9807e1e600a1fe0cc630b76f75f81fb1ddca77e06c7df17e43b61589aaeb  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     3032baac7203fda78ac01a579966dcbf847c302e192e875d51c511e15bb556f79  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     4f7793f4ce52b4016b9c4dc9a4877cefcc770031365a59ae80597c666a52731da  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5a107a6ff800d48b4959735489e85479d68d17591e654271291691f9d40afef9e  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     6d1e9619d08cbe9b853a50a5b589ce761fc333df7368254e0672339cd28e69932  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     7b8a44a228429da8b5a1b05bb7a9b96e3e18a60537f12f93add918aa307796f58  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     8165c9ab9b09463fe15cdc76abd3bf23be813f705108c2088efd56e2f314f93b5  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     9b74f44ad6c94fa6a4c5a94a68646ad83d68d770623a64c0b2bc43da514471634  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10a80b2af288a764bd9129ebd8161df2265d9317b8c68d1b301d10ead2011c3b8f  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    119aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    
  123. in contrib/guix/guix-build.sh:22 in 3e80ec3ea9 outdated
    17+for host in ${HOSTS=i686-linux-gnu x86_64-linux-gnu arm-linux-gnueabihf aarch64-linux-gnu riscv64-linux-gnu}; do
    18+
    19+    # Display proper warning when the user interrupts the build
    20+    trap 'echo "** INT received while building ${host}, you may want to clean up the relevant output and distsrc-* directories before rebuilding"' INT
    21+
    22+    # Run the build script 'contrib/guix/build.sh' in the build container
    


    MarcoFalke commented at 11:34 am on July 12, 2019:
    0    # Run the build script 'contrib/guix/libexec/build.sh' in the build container
    

    dongcarl commented at 3:47 pm on July 12, 2019:
    Fixed in cd3e947f50db7cfe05c05b368c25742193729a62
  124. in contrib/guix/README.md:18 in 3e80ec3ea9 outdated
    13+
    14+Conservatively, a x86_64 machine with:
    15+
    16+- 2 or more logical cores
    17+- 4GB of free disk space on the partition that /gnu/store will reside in
    18+- 24GB of free disk space on the partition that the bitcoin repository resides in
    


    MarcoFalke commented at 11:35 am on July 12, 2019:
    0- 24GB of free disk space on the partition that the Bitcoin Core git repository resides in
    

    dongcarl commented at 3:47 pm on July 12, 2019:
    Fixed in cd3e947f50db7cfe05c05b368c25742193729a62
  125. in contrib/guix/manifest.scm:1 in 3e80ec3ea9 outdated
    0@@ -0,0 +1,155 @@
    1+(define-module (bitcoin)
    


    MarcoFalke commented at 11:53 am on July 12, 2019:

    Could this be called bitcoin-core for clarity?

    0(define-module (bitcoin-core)
    

    dongcarl commented at 3:48 pm on July 12, 2019:
    Fixed in cd3e947f50db7cfe05c05b368c25742193729a62
  126. in contrib/guix/manifest.scm:17 in 3e80ec3ea9 outdated
    12+  #:use-module (gnu packages gawk)
    13+  #:use-module (gnu packages gcc)
    14+  #:use-module (gnu packages linux)
    15+  #:use-module (gnu packages perl)
    16+  #:use-module (gnu packages pkg-config)
    17+  #:use-module (gnu packages python)
    


    MarcoFalke commented at 11:58 am on July 12, 2019:

    This seems to default to the “current python 3.x” version (https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/python.scm?id=v1.0.1-828-gf434664cc0#n365)

    We had issues in the past where dictionary keys were sorted differently in different versions of python, so I’d prefer if the versions were somehow pinned. (Same goes for the other packages in this scm)


    dongcarl commented at 3:49 pm on July 12, 2019:

    Fixed in cd3e947f50db7cfe05c05b368c25742193729a62

    Also, because we now do guix pull with a commit hash instead of a branch, that python version will never change.

  127. in contrib/guix/manifest.scm:121 in 3e80ec3ea9 outdated
    116+                   base-gcc))
    117+
    118+(packages->manifest
    119+ (list ;; The Basics
    120+       bash
    121+       tcsh
    


    MarcoFalke commented at 12:02 pm on July 12, 2019:
    nit: Is this used somewhere?

    dongcarl commented at 3:48 pm on July 12, 2019:
    Fixed in cd3e947f50db7cfe05c05b368c25742193729a62
  128. in contrib/guix/manifest.scm:155 in 3e80ec3ea9 outdated
    150+       (make-gcc-toolchain gcc-9 glibc-2.27)
    151+       (make-bitcoin-cross-toolchain "riscv64-linux-gnu" gcc-8)
    152+       (make-bitcoin-cross-toolchain "x86_64-linux-gnu")
    153+       (make-bitcoin-cross-toolchain "i686-linux-gnu")
    154+       (make-bitcoin-cross-toolchain "aarch64-linux-gnu")
    155+       (make-bitcoin-cross-toolchain "arm-linux-gnueabihf" gcc-6)))
    


    MarcoFalke commented at 12:04 pm on July 12, 2019:
    Would be nice to explain why three different versions of gcc are used. Why is it not possible to use just one? Maybe the most popular version of gcc, which might be the one in the latest Ubuntu LTS release (we also use that version for gitian builds)

    dongcarl commented at 3:48 pm on July 12, 2019:
    Clarified in cd3e947f50db7cfe05c05b368c25742193729a62
  129. in depends/packages/qt.mk:164 in 3e80ec3ea9 outdated
    159@@ -160,7 +160,8 @@ define $(package)_preprocess_cmds
    160   echo "QMAKE_LINK_OBJECT_SCRIPT = object_script" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
    161   sed -i.old "s|QMAKE_CFLAGS            = |!host_build: QMAKE_CFLAGS            = $($(package)_cflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
    162   sed -i.old "s|QMAKE_LFLAGS            = |!host_build: QMAKE_LFLAGS            = $($(package)_ldflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
    163-  sed -i.old "s|QMAKE_CXXFLAGS          = |!host_build: QMAKE_CXXFLAGS            = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf
    164+  sed -i.old "s|QMAKE_CXXFLAGS          = |!host_build: QMAKE_CXXFLAGS            = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
    165+  sed -i.old "s/LIBRARY_PATH/(CROSS_)?\0/g" qtbase/mkspecs/features/toolchain.prf
    


    MarcoFalke commented at 12:06 pm on July 12, 2019:
    Is this depends change supposed to be in the “guix” commit?

    dongcarl commented at 3:50 pm on July 12, 2019:
    The CROSS_LIBRARY_PATH environment variable is Guix-specific, I’m patching it in a way that doesn’t break for non-Guix (notice the ?).
  130. MarcoFalke approved
  131. MarcoFalke commented at 12:06 pm on July 12, 2019: member

    ACK, code looks clean and readable. Didn’t run, but I have some questions:

    • If depends has already been built outside of guix, it will fail to produce deterministic builds?
    • If depends has already been built inside of guix, will it be cached/kept for the next guix build?
    • If the --no-substitutes flag is supplied, will it compile the compiler on the first run and cache it? If yes, it seems like this is only a one-time cost and it could make sense to mention that in the Readme to encourage people building everything from scratch.
  132. contrib: guix: Clarify SOURCE_DATE_EPOCH. 8dff3e48a9
  133. contrib: guix: Various improvements.
    - Clearer and more accurate prose
    - Pin `guix pull' to commit rather than branch
    - Just use `use-module' instead of `define-module'
    - Use `bash-minimal' instead of `bash'
    - Remove unneeded `tcsh' from manifest
    - Explicitly use `python-3.7'
    - Add comments about how {native,cross}-toolchains are produced and
      why
    cd3e947f50
  134. contrib: guix: Additional clarifications re: substitutes 751549b52a
  135. dongcarl force-pushed on Jul 12, 2019
  136. dongcarl commented at 4:32 pm on July 12, 2019: member

    @MarcoFalke

    ACK, code looks clean and readable.

    Thanks for taking a look Marco! I’m glad it was readable!

    If depends has already been built outside of guix, it will fail to produce deterministic builds?

    This isn’t supported at the moment, but can be added to the list of possible improvements!

    If depends has already been built inside of guix, will it be cached/kept for the next guix build?

    Yes! This works as long as depends caches work :-)

    If the --no-substitutes flag is supplied, will it compile the compiler on the first run and cache it? If yes, it seems like this is only a one-time cost and it could make sense to mention that in the Readme to encourage people building everything from scratch.

    Yes, in fact Guix’s functional package system ensures that unless the effective final package definition changes, the cache will always be valid! (e.g. if someone changed (+ 2 2) to (* 2 2) in a package definition the cache will still be valid)

    The reason why I originally wanted to “highlight” substitutes is because a common complaint among first-time Guix users is that the builds are taking too longTM.

    Just pushed de8b53e97ba6fc7d6dea0fda2a9c55bc1b06283f that adds additional clarifications to the README.

  137. MarcoFalke commented at 5:07 pm on July 12, 2019: member
    Thanks for the replies. ACK 751549b52a9a4cd27389d807ae67f02bbb39cd7f
  138. laanwj commented at 5:24 pm on July 12, 2019: member
    ACK 751549b52a9a4cd27389d807ae67f02bbb39cd7f
  139. laanwj merged this on Jul 12, 2019
  140. laanwj closed this on Jul 12, 2019

  141. laanwj referenced this in commit 3453cf26db on Jul 12, 2019
  142. BrannonKing commented at 8:42 pm on July 12, 2019: none
    For compilation of LBRY (a bitcoin derivative), I’ve been using the “depends” stuff to handle the cross-compilation (linux, windows, darwin). I’ve got a Docker image that has the necessary build dependencies, which single image runs all three cross-platform builds. It has been working quite well (after a few tweaks to the depends stuff). In particular, I changed it to use the system Clang instead of downloading one as part of the build for darwin. That particular feature may help you with the guix cross-platform compilation. I’ve compiled the linux target with Clang from time to time as well; it works fine but you have to modify the boost.mk to have it use the clang toolset. (To support cross-compile to darwin you’re buying into clang anyhow.) For some ideas, you can do a diff to bitcoin on the “depends” and “packaging” folders from here: https://github.com/lbryio/lbrycrd . You can use Clang to cross-compile to Windows as well, but it requires a stand-alone package of Windows headers & libs – similar to what we do for the OSX SDK in the “depends” system. I haven’t gone down that road.
  143. dongcarl commented at 9:00 pm on July 12, 2019: member

    @BrannonKing

    For compilation of LBRY (a bitcoin derivative), I’ve been using the “depends” stuff to handle the cross-compilation (linux, windows, darwin). I’ve got a Docker image that has the necessary build dependencies, which single image runs all three cross-platform builds. It has been working quite well (after a few tweaks to the depends stuff).

    Good to know “depends” works for others as well!

    In particular, I changed it to use the system Clang instead of downloading one as part of the build for darwin. That particular feature may help you with the guix cross-platform compilation.

    Very cool! This is a real problem that I haven’t gotten around to solving, but glad you did! I will check out the diff!

    You can use Clang to cross-compile to Windows as well, but it requires a stand-alone package of Windows headers & libs – similar to what we do for the OSX SDK in the “depends” system. I haven’t gone down that road.

    Good to know! I’ll definitely look into this if mingw doesn’t end up working as well as I hope haha.

  144. hebasto commented at 9:08 pm on July 12, 2019: member
     0$ git rev-parse HEAD
     1751549b52a9a4cd27389d807ae67f02bbb39cd7f
     2$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     366dfb1fbf949128793dac184c68dee407ae56d3cc4d4f0f92b1df2146267446e  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     4e5f46d3548f5cb456496ad9d1c560443143b879bd92f946a286985eace99add1  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     596d5f690350c5eeb27fa4f7ed6165006aea5e9039e54420f1d8dace92e2155f6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     6e224ba56022f34138006ea0d1e00e83d3f44af3bb0fc886bf1f2d15d9b68cba4  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     7adda0b3b4f942c7750fead6811b2e85c35a6f0da94170bcc39e529c4bbc1da6c  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     82e5a9a40bbc802c4360bb0b68675d7e63350d2ea426a71152cb158fcee13ef75  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     9d97d447c0418e5dac4f25251e72b20466e1b8ee90284c69849a5a248929dbe0c  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    1066f5389e0038f702d2965faed6d0f88242ab66dc3f4d7ec987e3c4a1d4a9855c  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    11256c6ecfd58175dba8720597966dceb4b6322204098be59df289a1d641741e00  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    1243cd87bab9b31262898c1e6fafc9f66a3aaeb7bea566316686f0c54adc19781e  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    139aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    
  145. fanquake commented at 4:21 am on July 13, 2019: member

    Ran a final build. Seeing hashes that match @hebasto.

    0bash-5.0# env PATH="/root/.config/guix/current/bin${PATH:+:}$PATH" guix describe
    1Generation 2	Jul 12 2019 05:09:23	(current)
    2  guix 82c77e5
    3    repository URL: https://github.com/dongcarl/guix.git
    4    branch: 2019-05-bitcoin-staging
    5    commit: 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    
    0bash-5.0# git rev-parse HEAD
    1751549b52a9a4cd27389d807ae67f02bbb39cd7f
    
     0bash-5.0# find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     166dfb1fbf949128793dac184c68dee407ae56d3cc4d4f0f92b1df2146267446e  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2e5f46d3548f5cb456496ad9d1c560443143b879bd92f946a286985eace99add1  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     396d5f690350c5eeb27fa4f7ed6165006aea5e9039e54420f1d8dace92e2155f6  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     4e224ba56022f34138006ea0d1e00e83d3f44af3bb0fc886bf1f2d15d9b68cba4  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     5adda0b3b4f942c7750fead6811b2e85c35a6f0da94170bcc39e529c4bbc1da6c  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     62e5a9a40bbc802c4360bb0b68675d7e63350d2ea426a71152cb158fcee13ef75  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     7d97d447c0418e5dac4f25251e72b20466e1b8ee90284c69849a5a248929dbe0c  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     866f5389e0038f702d2965faed6d0f88242ab66dc3f4d7ec987e3c4a1d4a9855c  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     9256c6ecfd58175dba8720597966dceb4b6322204098be59df289a1d641741e00  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    1043cd87bab9b31262898c1e6fafc9f66a3aaeb7bea566316686f0c54adc19781e  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    119aaad700c36273a1ac73a4465b4dc6f49085c7b329aba108585a1e37ee03d913  output/src/bitcoin-0.18.99.tar.gz
    
  146. practicalswift commented at 10:38 am on July 22, 2019: contributor

    Strangely I’m not getting the same hashes as @fanquake and @hebasto when running:

     0$ guix pull --url=https://github.com/dongcarl/guix.git --commit=82c77e52b8b46e0a3aad2cb12307c2e30547deec --max-jobs=12
     1guile: warning: failed to install locale
     2Updating channel 'guix' from Git repository at 'https://github.com/dongcarl/guix.git'...
     3Building from this channel:
     4  guix      https://github.com/dongcarl/guix.git        82c77e5
     5Computing Guix derivation for 'x86_64-linux'...
     6nothing to be done
     7$ guix --version
     8guile: warning: failed to install locale
     9guix (GNU Guix) 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    10Copyright (C) 2019 the Guix authors
    11License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    12This is free software: you are free to change and redistribute it.
    13There is NO WARRANTY, to the extent permitted by law.
    14$ git clone -q https://github.com/bitcoin/bitcoin
    15$ cd bitcoin
    16$ git fetch origin pull/15277/head:2019-01-guix
    17From https://github.com/bitcoin/bitcoin
    18 * [new ref]             refs/pull/15277/head -> 2019-01-guix
    19$ git checkout 2019-01-guix
    20Switched to branch '2019-01-guix'
    21$ git rev-parse HEAD
    22751549b52a9a4cd27389d807ae67f02bbb39cd7f
    23$ contrib/guix/guix-build.sh
    2425$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    266e26f21c48ea0acd564c5779be8ba7325f96616eaafa573c79669fc81033867b  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    27b3b7700eaca5eb032187e9fab6e057c9afb27a0f69ac22568fbf4c3c9885ad01  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    28baa4f0461ed505e4993f832452659828a65a2da4247e40f3992e923c46798a29  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
    2940eaa54b14df6c00f7451cea9418b92f84555e3094057ee76a3aa4e505461aa0  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    303407730d8ce02074c243c461a5edd86e651527a6d2b1f77f920e0c2030939d5f  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    310ab534959d6e42ed86bc0700cd3a91838b28d7a0ab04c93a984096fba0e8595c  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    322a20b8e067d27e16e816f9c63f3f0a2ab6d31a8273bd28ec0aafe4080f9c0dd3  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    339c0476e9d076dd05951940626a3bc2ddae8318649aade3b10c7772e74175bbcb  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    34ef659978bfea35847b1c7501a5e45d26c7371349301e606a9242842593b4e5e4  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    35e3f11e3c9f5693753708ada5950c6d681200902c2372fcff7d3894855ba3d5f8  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    364fd545fcd5c321b7a93d8eac0d2b2a897d8fdd08f40ff62d4f4f9de9f9a57eb2  output/src/bitcoin-0.18.99.tar.gz
    
  147. practicalswift commented at 12:24 pm on July 22, 2019: contributor

    Sorry, I missed passing --branch=2019-05-bitcoin-staging to guix pull.

    I’ll re-try building.

  148. practicalswift commented at 11:46 pm on July 22, 2019: contributor

    FWIW, specifying --branch=2019-05-bitcoin-staging did not solve the issue.

    I’m still not getting the hashes observed by @fanquake and @hebasto:

     0$ guix pull --url=https://github.com/dongcarl/guix.git \
     1    --commit=82c77e52b8b46e0a3aad2cb12307c2e30547deec \
     2    --branch=2019-05-bitcoin-staging --max-jobs=12
     3 4$ guix describe
     5Generation 8    Jul 22 2019 12:22:36    (current)
     6  guix 82c77e5
     7    repository URL: https://github.com/dongcarl/guix.git
     8    branch: 2019-05-bitcoin-staging
     9    commit: 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    10$ guix --version
    11guix (GNU Guix) 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    12Copyright (C) 2019 the Guix authors
    13License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    14This is free software: you are free to change and redistribute it.
    15There is NO WARRANTY, to the extent permitted by law.
    16$ git clone -q https://github.com/bitcoin/bitcoin
    17$ cd bitcoin
    18$ git fetch origin pull/15277/head:2019-01-guix
    19$ git checkout 2019-01-guix
    20$ git rev-parse HEAD
    21751549b52a9a4cd27389d807ae67f02bbb39cd7f
    22$ contrib/guix/guix-build.sh
    23$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    246e26f21c48ea0acd564c5779be8ba7325f96616eaafa573c79669fc81033867b  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    25b3b7700eaca5eb032187e9fab6e057c9afb27a0f69ac22568fbf4c3c9885ad01  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    26baa4f0461ed505e4993f832452659828a65a2da4247e40f3992e923c46798a29  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
    2740eaa54b14df6c00f7451cea9418b92f84555e3094057ee76a3aa4e505461aa0  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    283407730d8ce02074c243c461a5edd86e651527a6d2b1f77f920e0c2030939d5f  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    290ab534959d6e42ed86bc0700cd3a91838b28d7a0ab04c93a984096fba0e8595c  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    302a20b8e067d27e16e816f9c63f3f0a2ab6d31a8273bd28ec0aafe4080f9c0dd3  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    319c0476e9d076dd05951940626a3bc2ddae8318649aade3b10c7772e74175bbcb  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    32ef659978bfea35847b1c7501a5e45d26c7371349301e606a9242842593b4e5e4  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    33e3f11e3c9f5693753708ada5950c6d681200902c2372fcff7d3894855ba3d5f8  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    344fd545fcd5c321b7a93d8eac0d2b2a897d8fdd08f40ff62d4f4f9de9f9a57eb2  output/src/bitcoin-0.18.99.tar.gz
    
  149. dongcarl commented at 7:24 pm on July 23, 2019: member

    @practicalswift Oh! That’s interesting… The files are a little big, but could you at least send me output/src/bitcoin-0.18.99.tar.gz and maybe one of the other tarballs?

    A local build shows that I’m matching you… So perhaps either @fanquake or @hebasto can upload their tarballs?

  150. practicalswift commented at 7:53 am on July 31, 2019: contributor

    Did we arrive at any conclusion regarding the expected hashes?

    FWIW I’m consistently getting:

     06e26f21c48ea0acd564c5779be8ba7325f96616eaafa573c79669fc81033867b  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     1b3b7700eaca5eb032187e9fab6e057c9afb27a0f69ac22568fbf4c3c9885ad01  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     2baa4f0461ed505e4993f832452659828a65a2da4247e40f3992e923c46798a29  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     340eaa54b14df6c00f7451cea9418b92f84555e3094057ee76a3aa4e505461aa0  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     43407730d8ce02074c243c461a5edd86e651527a6d2b1f77f920e0c2030939d5f  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     50ab534959d6e42ed86bc0700cd3a91838b28d7a0ab04c93a984096fba0e8595c  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     62a20b8e067d27e16e816f9c63f3f0a2ab6d31a8273bd28ec0aafe4080f9c0dd3  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     79c0476e9d076dd05951940626a3bc2ddae8318649aade3b10c7772e74175bbcb  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     8ef659978bfea35847b1c7501a5e45d26c7371349301e606a9242842593b4e5e4  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
     9e3f11e3c9f5693753708ada5950c6d681200902c2372fcff7d3894855ba3d5f8  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    104fd545fcd5c321b7a93d8eac0d2b2a897d8fdd08f40ff62d4f4f9de9f9a57eb2  output/src/bitcoin-0.18.99.tar.gz
    

    See commands in previous comment.

  151. hebasto commented at 1:30 pm on August 3, 2019: member

    @dongcarl @practicalswift

    A local build shows that I’m matching you… So perhaps either @fanquake or @hebasto can upload their tarballs?

    bitcoin-0.18.99.tar.gz

    Which way to upload up to 300 MB files is convenient?

  152. hebasto commented at 3:02 pm on August 3, 2019: member

    Strange things happened. Just made another build:

     0$ guix --version
     1guix (GNU Guix) 82c77e52b8b46e0a3aad2cb12307c2e30547deec
     2Copyright (C) 2019 the Guix authors
     3License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
     4This is free software: you are free to change and redistribute it.
     5There is NO WARRANTY, to the extent permitted by law.
     6$ guix describe
     7Generation 3	Jul 12 2019 19:20:36	(current)
     8  guix 82c77e5
     9    repository URL: https://github.com/dongcarl/guix.git
    10    branch: 2019-05-bitcoin-staging
    11    commit: 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    12$ git rev-parse HEAD
    13751549b52a9a4cd27389d807ae67f02bbb39cd7f
    14$ find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
    156e26f21c48ea0acd564c5779be8ba7325f96616eaafa573c79669fc81033867b  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
    16b3b7700eaca5eb032187e9fab6e057c9afb27a0f69ac22568fbf4c3c9885ad01  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
    17baa4f0461ed505e4993f832452659828a65a2da4247e40f3992e923c46798a29  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
    1840eaa54b14df6c00f7451cea9418b92f84555e3094057ee76a3aa4e505461aa0  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
    193407730d8ce02074c243c461a5edd86e651527a6d2b1f77f920e0c2030939d5f  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
    200ab534959d6e42ed86bc0700cd3a91838b28d7a0ab04c93a984096fba0e8595c  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
    212a20b8e067d27e16e816f9c63f3f0a2ab6d31a8273bd28ec0aafe4080f9c0dd3  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
    229c0476e9d076dd05951940626a3bc2ddae8318649aade3b10c7772e74175bbcb  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
    23ef659978bfea35847b1c7501a5e45d26c7371349301e606a9242842593b4e5e4  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    24e3f11e3c9f5693753708ada5950c6d681200902c2372fcff7d3894855ba3d5f8  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    254fd545fcd5c321b7a93d8eac0d2b2a897d8fdd08f40ff62d4f4f9de9f9a57eb2  output/src/bitcoin-0.18.99.tar.gz
    
  153. practicalswift commented at 6:37 pm on August 3, 2019: contributor
    @hebasto Thanks! Let me know if you see any non-matching hashes. @fanquake What hashes are you getting?
  154. fanquake commented at 6:19 am on August 4, 2019: member

    Have just done another build from scratch. Seeing hashes that seem to match everyone else.

    0env PATH="/root/.config/guix/current/bin${PATH:+:}$PATH" guix describe
    1Generation 1	Aug 04 2019 01:17:09	(current)
    2  guix 82c77e5
    3    repository URL: https://github.com/dongcarl/guix.git
    4    branch: 2019-05-bitcoin-staging
    5    commit: 82c77e52b8b46e0a3aad2cb12307c2e30547deec
    
    0git rev-parse HEAD
    1751549b52a9a4cd27389d807ae67f02bbb39cd7f
    
     0find output/ -type f -print0 | sort -z | xargs -r0 sha256sum
     16e26f21c48ea0acd564c5779be8ba7325f96616eaafa573c79669fc81033867b  output/bitcoin-0.18.99-aarch64-linux-gnu-debug.tar.gz
     2b3b7700eaca5eb032187e9fab6e057c9afb27a0f69ac22568fbf4c3c9885ad01  output/bitcoin-0.18.99-aarch64-linux-gnu.tar.gz
     3baa4f0461ed505e4993f832452659828a65a2da4247e40f3992e923c46798a29  output/bitcoin-0.18.99-arm-linux-gnueabihf-debug.tar.gz
     440eaa54b14df6c00f7451cea9418b92f84555e3094057ee76a3aa4e505461aa0  output/bitcoin-0.18.99-arm-linux-gnueabihf.tar.gz
     53407730d8ce02074c243c461a5edd86e651527a6d2b1f77f920e0c2030939d5f  output/bitcoin-0.18.99-i686-linux-gnu-debug.tar.gz
     60ab534959d6e42ed86bc0700cd3a91838b28d7a0ab04c93a984096fba0e8595c  output/bitcoin-0.18.99-i686-linux-gnu.tar.gz
     72a20b8e067d27e16e816f9c63f3f0a2ab6d31a8273bd28ec0aafe4080f9c0dd3  output/bitcoin-0.18.99-riscv64-linux-gnu-debug.tar.gz
     89c0476e9d076dd05951940626a3bc2ddae8318649aade3b10c7772e74175bbcb  output/bitcoin-0.18.99-riscv64-linux-gnu.tar.gz
     9ef659978bfea35847b1c7501a5e45d26c7371349301e606a9242842593b4e5e4  output/bitcoin-0.18.99-x86_64-linux-gnu-debug.tar.gz
    10e3f11e3c9f5693753708ada5950c6d681200902c2372fcff7d3894855ba3d5f8  output/bitcoin-0.18.99-x86_64-linux-gnu.tar.gz
    114fd545fcd5c321b7a93d8eac0d2b2a897d8fdd08f40ff62d4f4f9de9f9a57eb2  output/src/bitcoin-0.18.99.tar.gz
    
  155. practicalswift commented at 1:32 pm on August 4, 2019: contributor

    @fanquake Thanks!

    Good to hear that we’re all getting the same hashes. I wonder what the root cause of the previously seen discrepancy was.

  156. hebasto commented at 1:40 pm on August 4, 2019: member

    @practicalswift

    I wonder what the root cause of the previously seen discrepancy was.

    It seems that despite git rev-parse HEAD returned 751549b52a9a4cd27389d807ae67f02bbb39cd7f the actual build was on top of another commit. See my previous tarball #15277 (comment).

  157. dongcarl commented at 5:13 pm on August 5, 2019: member
    Very odd, I’m thinking it might just be a discrepancy arising from the Dockerfile COPY? Not too big a deal though, if we see this crop up again we’ll be able to better document what happened exactly and how to avoid.
  158. practicalswift commented at 8:04 am on August 6, 2019: contributor
    @dongcarl FWIW I’ve always built outside of Docker. @hebasto and @fanquake, did you build inside Docker when you got the unexpected hashes?
  159. hebasto commented at 3:58 pm on August 6, 2019: member
    @dongcarl @practicalswift I do not use Docker.
  160. monstrobishi referenced this in commit 9c21ea00a5 on Sep 6, 2020
  161. Munkybooty referenced this in commit 94c9f22f29 on Nov 4, 2021
  162. Munkybooty referenced this in commit 67c7576970 on Nov 6, 2021
  163. Munkybooty referenced this in commit 366fa11ff1 on Nov 12, 2021
  164. Munkybooty referenced this in commit c38b1bb1b5 on Nov 16, 2021
  165. Munkybooty referenced this in commit 24e0a9bbbe on Nov 18, 2021
  166. MarcoFalke locked this on Dec 16, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-11-17 15:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me