Guix build fails on M4 macOS host with Ubuntu in UTM #32759

issue Sjors openend this issue on June 16, 2025
  1. Sjors commented at 9:25 am on June 16, 2025: member

    Is there an existing issue for this?

    • I have searched the existing issues

    Current behaviour

    Since #32431 my macOS (M4 using UTM) Guix builds no longer work:

    0HOSTS="x86_64-linux-gnu" contrib/guix/guix-build
    1...
    2guix shell: error: while setting up the build environment: cannot set armhf-linux personality: Invalid argument
    

    This seems to be something else than what I encountered on my native AMD Ubuntu machine: #32431 (comment)

    But perhaps a common factor is that this PR pulled in a lot of new guix packages.

    Expected behaviour

    Guix build should work, it does on c8abd972818f83d90bf50b250131f338034460ef.

    Steps to reproduce

    See below

    Relevant log output

     0$ HOSTS="x86_64-linux-gnu" contrib/guix/guix-build
     1Checking that we can connect to the guix-daemon...
     2
     3Hint: If this hangs, you may want to try turning your guix-daemon off and on
     4      again.
     5
     6make: Entering directory '/home/sjors/bitcoin/depends'
     7make[1]: Entering directory '/home/sjors/bitcoin/depends'
     8make[1]: Leaving directory '/home/sjors/bitcoin/depends'
     9make: Leaving directory '/home/sjors/bitcoin/depends'
    10INFO: Building fed41b75fbfa for platform triple x86_64-linux-gnu:
    11      ...using reference timestamp: 1749642062
    12      ...running at most 10 jobs
    13      ...from worktree directory: '/home/sjors/bitcoin'
    14          ...bind-mounted in container to: '/bitcoin'
    15      ...in build directory: '/home/sjors/bitcoin/guix-build-fed41b75fbfa/distsrc-fed41b75fbfa-x86_64-linux-gnu'
    16          ...bind-mounted in container to: '/distsrc-base/distsrc-fed41b75fbfa-x86_64-linux-gnu'
    17      ...outputting in: '/home/sjors/bitcoin/guix-build-fed41b75fbfa/output/x86_64-linux-gnu'
    18          ...bind-mounted in container to: '/outdir-base/x86_64-linux-gnu'
    19      ADDITIONAL FLAGS (if set)
    20          ADDITIONAL_GUIX_COMMON_FLAGS: --max-jobs=4 --no-substitutes
    21          ADDITIONAL_GUIX_ENVIRONMENT_FLAGS:
    22          ADDITIONAL_GUIX_TIMEMACHINE_FLAGS:
    23The following derivations will be built:
    24  /gnu/store/5kpjfn7qg25c4w1q3cczl565x0yi8mpb-python-lief-0.16.6.drv
    25  /gnu/store/04dcmhmlhgj2pgnyspb88lm5j9rwbd60-python-typing-extensions-4.9.0.drv
    26  /gnu/store/nd7dcikf5dnq113cxmb1r4w0q8ijs1qq-typing_extensions-4.9.0.tar.gz.drv
    27  /gnu/store/25adw1ck5fvbgvrx405c0l6kjag49j9z-python-importlib-metadata-5.2.0.drv
    28...
    29  /gnu/store/c985sj9mqmk3qvsd55b0g11hlv26krbk-msgpack-1.0.4.tar.gz.drv
    30  /gnu/store/x8vm49yz0k8wm3w2hgishy5q1svkcfaw-python-pymongo-4.1.1.drv
    31  /gnu/store/6dv3fazv5hnhwvgfnnykm0f2lwnajgsq-pymongo-4.1.1.tar.gz.drv
    32
    33building /gnu/store/ck789yrq1xslycd986zdh5fq8dknl3r3-rust-actix-derive-0.5.0.tar.gz.drv...
    34building /gnu/store/2xasv0pcv8gw6lafag6bkjfqkmlbj02f-rust-actix-http-1.0.1.tar.gz.drv...
    35building /gnu/store/qifi4hb8hjm6bk6nv4664fyw7cb25fgp-rust-actix-http-2.2.0.tar.gz.drv...
    36building /gnu/store/gm8l3rn479p9hf3zs1vj9pzchvcj42f8-rust-actix-macros-0.1.3.tar.gz.drv...
    37The following builds are still in progress:
    38  /gnu/store/qifi4hb8hjm6bk6nv4664fyw7cb25fgp-rust-actix-http-2.2.0.tar.gz.drv
    39  /gnu/store/ck789yrq1xslycd986zdh5fq8dknl3r3-rust-actix-derive-0.5.0.tar.gz.drv
    40
    41building /gnu/store/grpq0sq301rwsz6h4vbdx9sgvi64wai4-Python-2.7.18.tar.xz.drv...
    42The following builds are still in progress:
    43  /gnu/store/grpq0sq301rwsz6h4vbdx9sgvi64wai4-Python-2.7.18.tar.xz.drv
    44  /gnu/store/qifi4hb8hjm6bk6nv4664fyw7cb25fgp-rust-actix-http-2.2.0.tar.gz.drv
    45
    46The following builds are still in progress:
    47  /gnu/store/grpq0sq301rwsz6h4vbdx9sgvi64wai4-Python-2.7.18.tar.xz.drv
    48  /gnu/store/qifi4hb8hjm6bk6nv4664fyw7cb25fgp-rust-actix-http-2.2.0.tar.gz.drv
    49
    50building /gnu/store/sf5wwnpy8mr9l8iic2xz5bmg3bppjrj9-asynctest-0.13.0.tar.gz.drv...
    51building /gnu/store/hiqwnz4mhiad1zcqyf250b1ws0s36djc-attrs-21.2.0.tar.gz.drv...
    52The following builds are still in progress:
    53  /gnu/store/hiqwnz4mhiad1zcqyf250b1ws0s36djc-attrs-21.2.0.tar.gz.drv
    54  /gnu/store/sf5wwnpy8mr9l8iic2xz5bmg3bppjrj9-asynctest-0.13.0.tar.gz.drv
    55  /gnu/store/grpq0sq301rwsz6h4vbdx9sgvi64wai4-Python-2.7.18.tar.xz.drv
    56
    57note: keeping build directory `/tmp/guix-build-Python-2.7.18.tar.xz.drv-2'
    58note: keeping build directory `/tmp/guix-build-bash.drv-2'
    59note: keeping build directory `/tmp/guix-build-asynctest-0.13.0.tar.gz.drv-2'
    60note: keeping build directory `/tmp/guix-build-attrs-21.2.0.tar.gz.drv-2'
    61guix shell: error: while setting up the build environment: cannot set armhf-linux personality: Invalid argument
    

    How did you obtain Bitcoin Core

    Compiled from source

    What version of Bitcoin Core are you using?

    master@fed41b75fbfa6d14cce852863271b1fb0206eef0

    Operating system and version

    MacOS 15.5 with UTM, guest (virtualized) Ubuntu 24.10 (aarch64

    Machine specifications

    M4

  2. maflcko added the label Build system on Jun 16, 2025
  3. willcl-ark commented at 3:34 pm on June 17, 2025: member

    I tried to reproduce this (using docker and @fanquake’s alpine guix image) and got errors building gcc:

    g6wxpn4yq37pvw5q4jzbqxq5l9rqhr-gcc-cross-x86_64-linux-gnu-13.3.0.drv.gz

    (too big for most pastebins, read with zcat )

    It is building gcc-cross and the tail is:

     0/gnu/store/id0knspwhrd51wrg2nbx2pw3ajz36ngg-bash-minimal-5.1.16/bin/bash ../../gcc-13.3.0/gcc/../move-if-change tmp-fixinc_list fixinc_list
     1echo timestamp > s-fixinc_list
     2rm -f g++-cross
     3cp xg++ g++-cross
     4rm -f gfortran-cross
     5cp gfortran gfortran-cross
     6g++  -fno-PIE -c   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -Ilto -I../../gcc-13.3.0/gcc -I../../gcc-13.3.0/gcc/lto -I../../gcc-13.3.0/gcc/../include  -I../../gcc-13.3.0/gcc/../libcpp/include -I../../gcc-13.3.0/gcc/../libcody  -I../../gcc-13.3.0/gcc/../libdecnumber -I../../gcc-13.3.0/gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc-13.3.0/gcc/../libbacktrace   -o lto/lto-dump.o -MT lto/lto-dump.o -MMD -MP -MF lto/.deps/lto-dump.TPo ../../gcc-13.3.0/gcc/lto/lto-dump.cc
     7rm -rf libbackend.a
     8ar rcT libbackend.a gimple-match.o generic-match.o insn-attrtab.o insn-automata.o insn-dfatab.o insn-emit.o insn-extract.o insn-latencytab.o insn-modes.o insn-opinit.o insn-output.o insn-peep.o insn-preds.o insn-recog.o insn-enums.o ggc-page.o adjust-alignment.o alias.o alloc-pool.o auto-inc-dec.o auto-profile.o bb-reorder.o bitmap.o builtins.o caller-save.o calls.o ccmp.o cfg.o cfganal.o cfgbuild.o cfgcleanup.o cfgexpand.o cfghooks.o cfgloop.o cfgloopanal.o cfgloopmanip.o cfgrtl.o ctfc.o ctfout.o btfout.o symtab.o symtab-thunks.o symtab-clones.o cgraph.o cgraphbuild.o cgraphunit.o cgraphclones.o combine.o combine-stack-adj.o compare-elim.o context.o convert.o coroutine-passes.o coverage.o cppbuiltin.o cppdefault.o cprop.o cse.o cselib.o data-streamer.o data-streamer-in.o data-streamer-out.o dbgcnt.o dce.o ddg.o debug.o df-core.o df-problems.o df-scan.o dfp.o digraph.o dojump.o dominance.o domwalk.o double-int.o dse.o dumpfile.o dwarf2asm.o dwarf2cfi.o dwarf2ctf.o dwarf2out.o early-remat.o emit-rtl.o et-forest.o except.o explow.o expmed.o expr.o fibonacci_heap.o file-prefix-map.o final.o fixed-value.o fold-const.o fold-const-call.o function.o function-abi.o function-tests.o fwprop.o gcc-rich-location.o gcse.o gcse-common.o ggc-common.o ggc-tests.o gimple.o gimple-array-bounds.o gimple-builder.o gimple-expr.o gimple-if-to-switch.o gimple-iterator.o gimple-fold.o gimple-harden-conditionals.o gimple-laddress.o gimple-loop-interchange.o gimple-loop-jam.o gimple-loop-versioning.o gimple-low.o gimple-predicate-analysis.o gimple-pretty-print.o gimple-range.o gimple-range-cache.o gimple-range-edge.o gimple-range-fold.o gimple-range-gori.o gimple-range-infer.o gimple-range-op.o gimple-range-trace.o gimple-ssa-backprop.o gimple-ssa-isolate-paths.o gimple-ssa-nonnull-compare.o gimple-ssa-split-paths.o gimple-ssa-store-merging.o gimple-ssa-strength-reduction.o gimple-ssa-sprintf.o gimple-ssa-warn-access.o gimple-ssa-warn-alloca.o gimple-ssa-warn-restrict.o gimple-streamer-in.o gimple-streamer-out.o gimple-walk.o gimple-warn-recursion.o gimplify.o gimplify-me.o godump.o graph.o graphds.o graphviz.o graphite.o graphite-isl-ast-to-gimple.o graphite-dependences.o graphite-optimize-isl.o graphite-poly.o graphite-scop-detection.o graphite-sese-to-poly.o gtype-desc.o haifa-sched.o hash-map-tests.o hash-set-tests.o hw-doloop.o hwint.o ifcvt.o ree.o inchash.o incpath.o init-regs.o internal-fn.o ipa-cp.o ipa-sra.o ipa-devirt.o ipa-fnsummary.o ipa-polymorphic-call.o ipa-split.o ipa-inline.o ipa-comdats.o ipa-free-lang-data.o ipa-visibility.o ipa-inline-analysis.o ipa-inline-transform.o ipa-modref.o ipa-modref-tree.o ipa-predicate.o ipa-profile.o ipa-prop.o ipa-param-manipulation.o ipa-pure-const.o ipa-icf.o ipa-icf-gimple.o ipa-reference.o ipa-ref.o ipa-utils.o ipa.o ira.o ira-build.o ira-costs.o ira-conflicts.o ira-color.o ira-emit.o ira-lives.o jump.o langhooks.o lcm.o lists.o loop-doloop.o loop-init.o loop-invariant.o loop-iv.o loop-unroll.o lower-subreg.o lra.o lra-assigns.o lra-coalesce.o lra-constraints.o lra-eliminations.o lra-lives.o lra-remat.o lra-spills.o lto-cgraph.o lto-streamer.o lto-streamer-in.o lto-streamer-out.o lto-section-in.o lto-section-out.o lto-opts.o lto-compress.o mcf.o mode-switching.o modulo-sched.o multiple_target.o omp-offload.o omp-expand.o omp-general.o omp-low.o omp-oacc-kernels-decompose.o omp-oacc-neuter-broadcast.o omp-simd-clone.o opt-problem.o optabs.o optabs-libfuncs.o optabs-query.o optabs-tree.o optinfo.o optinfo-emit-json.o options-save.o opts-global.o ordered-hash-map-tests.o passes.o plugin.o pointer-query.o postreload-gcse.o postreload.o predict.o print-rtl.o print-rtl-function.o print-tree.o profile.o profile-count.o range.o range-op.o range-op-float.o read-md.o read-rtl.o read-rtl-function.o real.o realmpfr.o recog.o reg-stack.o regcprop.o reginfo.o regrename.o regstat.o reload.o reload1.o reorg.o resource.o rtl-error.o rtl-ssa/accesses.o rtl-ssa/blocks.o rtl-ssa/changes.o rtl-ssa/functions.o rtl-ssa/insns.o rtl-tests.o rtl.o rtlhash.o rtlanal.o rtlhooks.o rtx-vector-builder.o run-rtl-passes.o sched-deps.o sched-ebb.o sched-rgn.o sel-sched-ir.o sel-sched-dump.o sel-sched.o selftest-rtl.o selftest-run-tests.o sese.o shrink-wrap.o simplify-rtx.o sparseset.o spellcheck.o spellcheck-tree.o splay-tree-utils.o sreal.o stack-ptr-mod.o statistics.o stmt.o stor-layout.o store-motion.o streamer-hooks.o stringpool.o substring-locations.o target-globals.o targhooks.o timevar.o toplev.o tracer.o trans-mem.o tree-affine.o asan.o tsan.o ubsan.o sanopt.o sancov.o tree-call-cdce.o tree-cfg.o tree-cfgcleanup.o tree-chrec.o tree-complex.o tree-data-ref.o tree-dfa.o tree-diagnostic.o tree-diagnostic-client-data-hooks.o tree-diagnostic-path.o tree-dump.o tree-eh.o tree-emutls.o tree-if-conv.o tree-inline.o tree-into-ssa.o tree-iterator.o tree-logical-location.o tree-loop-distribution.o tree-nested.o tree-nrv.o tree-object-size.o tree-outof-ssa.o tree-parloops.o tree-phinodes.o tree-predcom.o tree-pretty-print.o tree-profile.o tree-scalar-evolution.o tree-sra.o tree-switch-conversion.o tree-ssa-address.o tree-ssa-alias.o tree-ssa-ccp.o tree-ssa-coalesce.o tree-ssa-copy.o tree-ssa-dce.o tree-ssa-dom.o tree-ssa-dse.o tree-ssa-forwprop.o tree-ssa-ifcombine.o tree-ssa-live.o tree-ssa-loop-ch.o tree-ssa-loop-im.o tree-ssa-loop-ivcanon.o tree-ssa-loop-ivopts.o tree-ssa-loop-manip.o tree-ssa-loop-niter.o tree-ssa-loop-prefetch.o tree-ssa-loop-split.o tree-ssa-loop-unswitch.o tree-ssa-loop.o tree-ssa-math-opts.o tree-ssa-operands.o gimple-range-path.o tree-ssa-phiopt.o tree-ssa-phiprop.o tree-ssa-pre.o tree-ssa-propagate.o tree-ssa-reassoc.o tree-ssa-sccvn.o tree-ssa-scopedtables.o tree-ssa-sink.o tree-ssa-strlen.o tree-ssa-structalias.o tree-ssa-tail-merge.o tree-ssa-ter.o tree-ssa-threadbackward.o tree-ssa-threadedge.o tree-ssa-threadupdate.o tree-ssa-uncprop.o tree-ssa-uninit.o tree-ssa.o tree-ssanames.o tree-stdarg.o tree-streamer.o tree-streamer-in.o tree-streamer-out.o tree-tailcall.o tree-vect-generic.o gimple-isel.o tree-vect-patterns.o tree-vect-data-refs.o tree-vect-stmts.o tree-vect-loop.o tree-vect-loop-manip.o tree-vect-slp.o tree-vect-slp-patterns.o tree-vectorizer.o tree-vector-builder.o tree-vrp.o tree.o tristate.o typed-splay-tree.o valtrack.o value-pointer-equiv.o value-query.o value-range.o value-range-pretty-print.o value-range-storage.o value-relation.o value-prof.o var-tracking.o varasm.o varpool.o vec-perm-indices.o vmsdbgout.o vr-values.o vtable-verify.o warning-control.o web.o wide-int.o wide-int-print.o i386.o analyzer/analysis-plan.o analyzer/analyzer.o analyzer/analyzer-language.o analyzer/analyzer-logging.o analyzer/analyzer-pass.o analyzer/analyzer-selftests.o analyzer/bar-chart.o analyzer/bounds-checking.o analyzer/call-details.o analyzer/call-info.o analyzer/call-string.o analyzer/call-summary.o analyzer/checker-event.o analyzer/checker-path.o analyzer/complexity.o analyzer/constraint-manager.o analyzer/diagnostic-manager.o analyzer/engine.o analyzer/feasible-graph.o analyzer/function-set.o analyzer/infinite-recursion.o analyzer/kf.o analyzer/kf-analyzer.o analyzer/kf-lang-cp.o analyzer/known-function-manager.o analyzer/pending-diagnostic.o analyzer/program-point.o analyzer/program-state.o analyzer/region.o analyzer/region-model.o analyzer/region-model-asm.o analyzer/region-model-manager.o analyzer/region-model-reachability.o analyzer/sm.o analyzer/sm-file.o analyzer/sm-fd.o analyzer/sm-malloc.o analyzer/sm-pattern-test.o analyzer/sm-sensitive.o analyzer/sm-signal.o analyzer/sm-taint.o analyzer/state-purge.o analyzer/store.o analyzer/supergraph.o analyzer/svalue.o analyzer/trimmed-graph.o analyzer/varargs.o x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o linux.o gnu-property.o host-linux.o
     9if [ -f ../stage_final ] \
    10   && cmp -s ../stage_current ../stage_final; then \
    11  cp ../prev-gcc/cc1-checksum.cc cc1-checksum.cc; \
    12else \
    13  build/genchecksum c/c-lang.o c-family/stub-objc.o attribs.o c/c-errors.o c/c-decl.o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o c/c-fold.o c/gimple-parser.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-indentation.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-ubsan.o c-family/known-headers.o c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o i386-c.o glibc-c.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a ../libiberty/libiberty.a   ../libdecnumber/libdecnumber.a ../libbacktrace/.libs/libbacktrace.a \
    14                     checksum-options > cc1-checksum.cc.tmp &&           \
    15  ../../gcc-13.3.0/gcc/../move-if-change cc1-checksum.cc.tmp cc1-checksum.cc; \
    16fi
    17if [ -f ../stage_final ] \
    18   && cmp -s ../stage_current ../stage_final; then \
    19   cp ../prev-gcc/cc1plus-checksum.cc cc1plus-checksum.cc; \
    20else \
    21  build/genchecksum cp/cp-lang.o c-family/stub-objc.o cp/call.o cp/class.o cp/constexpr.o cp/constraint.o cp/coroutines.o cp/cp-gimplify.o cp/cp-objcp-common.o cp/cp-ubsan.o cp/cvt.o cp/contracts.o cp/cxx-pretty-print.o cp/decl.o cp/decl2.o cp/dump.o cp/error.o cp/except.o cp/expr.o cp/friend.o cp/init.o cp/lambda.o cp/lex.o cp/logic.o cp/mangle.o cp/mapper-client.o cp/mapper-resolver.o cp/method.o cp/module.o cp/name-lookup.o cp/optimize.o cp/parser.o cp/pt.o cp/ptree.o cp/rtti.o cp/search.o cp/semantics.o cp/tree.o cp/typeck.o cp/typeck2.o cp/vtable-class-hierarchy.o attribs.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-indentation.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-ubsan.o c-family/known-headers.o c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o i386-c.o glibc-c.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a ../libcody/libcody.a libcommon.a ../libcpp/libcpp.a ../libiberty/libiberty.a   ../libdecnumber/libdecnumber.a ../libbacktrace/.libs/libbacktrace.a \
    22                     checksum-options > cc1plus-checksum.cc.tmp &&         \
    23  ../../gcc-13.3.0/gcc/../move-if-change cc1plus-checksum.cc.tmp cc1plus-checksum.cc; \
    24fi
    25g++ -no-pie   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o f951 \
    26        fortran/arith.o fortran/array.o fortran/bbt.o fortran/check.o fortran/class.o fortran/constructor.o fortran/cpp.o fortran/data.o fortran/decl.o fortran/dump-parse-tree.o fortran/error.o fortran/expr.o fortran/interface.o fortran/intrinsic.o fortran/io.o fortran/iresolve.o fortran/match.o fortran/matchexp.o fortran/misc.o fortran/module.o fortran/openmp.o fortran/options.o fortran/parse.o fortran/primary.o fortran/resolve.o fortran/scanner.o fortran/simplify.o fortran/st.o fortran/symbol.o fortran/target-memory.o  fortran/convert.o fortran/dependency.o fortran/f95-lang.o fortran/trans.o fortran/trans-array.o fortran/trans-common.o fortran/trans-const.o fortran/trans-decl.o fortran/trans-expr.o fortran/trans-intrinsic.o fortran/trans-io.o fortran/trans-openmp.o fortran/trans-stmt.o fortran/trans-types.o fortran/frontend-passes.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a -lz libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a  attribs.o \
    27        -lisl -lmpc -lmpfr -lgmp -rdynamic  -lz
    28g++ -no-pie   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o lto1 \
    29        lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-common.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a -lisl -lmpc -lmpfr -lgmp -rdynamic  -lz  libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a
    30g++ -no-pie   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o lto-dump \
    31        lto/lto-lang.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-dump.o lto/lto-common.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a -lisl -lmpc -lmpfr -lgmp -rdynamic  -lz  libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a
    32if [ -f ../stage_final ] \
    33   && cmp -s ../stage_current ../stage_final \
    34   && [ -f ../prev-gcc/cc1obj-checksum.cc ]; then \
    35  cp ../prev-gcc/cc1obj-checksum.cc cc1obj-checksum.cc; \
    36else \
    37  build/genchecksum objc/objc-lang.o objc/objc-act.o hash-table.o objc/objc-runtime-shared-support.o objc/objc-gnu-runtime-abi-01.o objc/objc-next-runtime-abi-01.o objc/objc-next-runtime-abi-02.o objc/objc-encoding.o objc/objc-map.o attribs.o c/c-errors.o c/c-decl.o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o c/c-fold.o c/gimple-parser.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-indentation.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-ubsan.o c-family/known-headers.o c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o i386-c.o glibc-c.o \
    38        libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a ../libiberty/libiberty.a   ../libdecnumber/libdecnumber.a ../libbacktrace/.libs/libbacktrace.a checksum-options > cc1obj-checksum.cc.tmp && \
    39  ../../gcc-13.3.0/gcc/../move-if-change cc1obj-checksum.cc.tmp cc1obj-checksum.cc; \
    40fi
    41g++  -fno-PIE -c  -DIN_GCC_FRONTEND -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc-13.3.0/gcc -I../../gcc-13.3.0/gcc/. -I../../gcc-13.3.0/gcc/../include  -I../../gcc-13.3.0/gcc/../libcpp/include -I../../gcc-13.3.0/gcc/../libcody  -I../../gcc-13.3.0/gcc/../libdecnumber -I../../gcc-13.3.0/gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc-13.3.0/gcc/../libbacktrace   -o cc1-checksum.o -MT cc1-checksum.o -MMD -MP -MF ./.deps/cc1-checksum.TPo cc1-checksum.cc
    42g++  -fno-PIE -c  -DIN_GCC_FRONTEND -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc-13.3.0/gcc -I../../gcc-13.3.0/gcc/. -I../../gcc-13.3.0/gcc/../include  -I../../gcc-13.3.0/gcc/../libcpp/include -I../../gcc-13.3.0/gcc/../libcody  -I../../gcc-13.3.0/gcc/../libdecnumber -I../../gcc-13.3.0/gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc-13.3.0/gcc/../libbacktrace   -o cc1obj-checksum.o -MT cc1obj-checksum.o -MMD -MP -MF ./.deps/cc1obj-checksum.TPo cc1obj-checksum.cc
    43g++ -no-pie   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1 c/c-lang.o c-family/stub-objc.o attribs.o c/c-errors.o c/c-decl.o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o c/c-fold.o c/gimple-parser.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-indentation.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-ubsan.o c-family/known-headers.o c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o i386-c.o glibc-c.o \
    44  cc1-checksum.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a  -lisl -lmpc -lmpfr -lgmp -rdynamic  -lz
    45g++  -fno-PIE -c  -DIN_GCC_FRONTEND -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../../gcc-13.3.0/gcc -I../../gcc-13.3.0/gcc/. -I../../gcc-13.3.0/gcc/../include  -I../../gcc-13.3.0/gcc/../libcpp/include -I../../gcc-13.3.0/gcc/../libcody  -I../../gcc-13.3.0/gcc/../libdecnumber -I../../gcc-13.3.0/gcc/../libdecnumber/bid -I../libdecnumber -I../../gcc-13.3.0/gcc/../libbacktrace   -o cc1plus-checksum.o -MT cc1plus-checksum.o -MMD -MP -MF ./.deps/cc1plus-checksum.TPo cc1plus-checksum.cc
    46g++ -no-pie   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1obj \
    47      objc/objc-lang.o objc/objc-act.o hash-table.o objc/objc-runtime-shared-support.o objc/objc-gnu-runtime-abi-01.o objc/objc-next-runtime-abi-01.o objc/objc-next-runtime-abi-02.o objc/objc-encoding.o objc/objc-map.o attribs.o c/c-errors.o c/c-decl.o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o c/c-fold.o c/gimple-parser.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-indentation.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-ubsan.o c-family/known-headers.o c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o i386-c.o glibc-c.o cc1obj-checksum.o \
    48      libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a  -lisl -lmpc -lmpfr -lgmp -rdynamic  -lz
    49g++ -no-pie   -g -O2     -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1plus \
    50      cp/cp-lang.o c-family/stub-objc.o cp/call.o cp/class.o cp/constexpr.o cp/constraint.o cp/coroutines.o cp/cp-gimplify.o cp/cp-objcp-common.o cp/cp-ubsan.o cp/cvt.o cp/contracts.o cp/cxx-pretty-print.o cp/decl.o cp/decl2.o cp/dump.o cp/error.o cp/except.o cp/expr.o cp/friend.o cp/init.o cp/lambda.o cp/lex.o cp/logic.o cp/mangle.o cp/mapper-client.o cp/mapper-resolver.o cp/method.o cp/module.o cp/name-lookup.o cp/optimize.o cp/parser.o cp/pt.o cp/ptree.o cp/rtti.o cp/search.o cp/semantics.o cp/tree.o cp/typeck.o cp/typeck2.o cp/vtable-class-hierarchy.o attribs.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-indentation.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-ubsan.o c-family/known-headers.o c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o i386-c.o glibc-c.o cc1plus-checksum.o libbackend.a main.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a ../libcody/libcody.a  \
    51        libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a  -lisl -lmpc -lmpfr -lgmp -rdynamic  -lz
    52collect2: fatal error: ld terminated with signal 9 [Killed]
    53compilation terminated.
    54make[2]: *** [../../gcc-13.3.0/gcc/cp/Make-lang.in:145: cc1plus] Error 1
    55make[2]: *** Waiting for unfinished jobs....
    56make[2]: Leaving directory '/tmp/guix-build-gcc-cross-x86_64-linux-gnu-13.3.0.drv-0/build/gcc'
    57make[1]: *** [Makefile:4627: all-gcc] Error 2
    58make[1]: Leaving directory '/tmp/guix-build-gcc-cross-x86_64-linux-gnu-13.3.0.drv-0/build'
    59make: *** [Makefile:1042: all] Error 2
    60error: in phase 'build': uncaught exception:
    61%exception #<&invoke-error program: "make" arguments: ("-j" "8" "FLAGS_FOR_TARGET=-B/gnu/store/x374h6pay478zxafyy1l263qvanznlj0-glibc-cross-x86_64-linux-gnu-2.31/lib" "CFLAGS=-g0 -O2") exit-status: 2 term-signal: #f stop-signal: #f>
    62phase `build' failed after 1170.1 seconds
    63command "make" "-j" "8" "FLAGS_FOR_TARGET=-B/gnu/store/x374h6pay478zxafyy1l263qvanznlj0-glibc-cross-x86_64-linux-gnu-2.31/lib" "CFLAGS=-g0 -O2" failed with status 2
    

    I will try again and see if I get the same error.

    edit: It seems likely this may be an OOM (or similar) in the container. So I will try again using podman with more resources.

  4. willcl-ark commented at 7:47 pm on June 17, 2025: member

    Ok I’ve tried this again twice more:

    • M3-aarch64 host
    • using podman
    • both alpine and debian containers
    • building with HOSTS=x86_64-linux-gnu

    …and both runs, whilst a little slower than previously, completed successfully. @Sjors was your container totally fresh for your run, or has it been restored from some kind of saved state?

  5. Sjors commented at 3:58 pm on June 18, 2025: member

    @willcl-ark I’m using UTM: https://mac.getutm.app (not Podman or Docker)

    Definitely not a fresh machine, it’s been making guix builds for while. I could make a fresh one if you can’t reproduce, but it’s a bit of a pain to setup a guix environment from scratch.

  6. maflcko commented at 4:23 pm on June 18, 2025: member

    What are the minimal steps to reproduce? Can you run a normal shell?

    0guix time-machine --commit=53396a22afc04536ddf75d8f82ad2eafa5082725 -- shell --container --pure bash
    
  7. Sjors commented at 7:56 am on June 19, 2025: member
    • install UTM
    • create Ubuntu 24.10 machine
    • setup guix environment (method 4 of installing guix through apt)
      • I don’t use substitutes, but it might not matter for this issue
    • checkout master @ c8abd972818f83d90bf50b250131f338034460ef and do a guix build; it should succeed
    • checkout any newer commit, it should fail
    0$ guix time-machine --commit=53396a22afc04536ddf75d8f82ad2eafa5082725 -- shell --container --pure bash
    1The following derivation will be built:
    2  /gnu/store/70dmz7dxm15949rbxiyjkk8gvgas86g4-profile.drv
    3
    4building CA certificate bundle...
    5listing Emacs sub-directories...
    6building fonts directory...
    7building directory of Info manuals...
    8building profile with 1 package...
    9sjors@ubuntu ~ [env]$
    
  8. maflcko commented at 8:23 am on June 19, 2025: member

    Sorry, I was asking for the isolated guix command that fails. This can help to see if the issue is guix related or bitcoin-core related.

    I was thinking about the shell, because the error message says: guix shell: error: while setting up the build environment: cannot set armhf-linux personality: Invalid argument.

    Maybe re-try via V=1 VERBOSE=1 MAX_JOBS=1 HOSTS=arm64-apple-darwin ./contrib/guix/guix-build to get a linear log?

  9. Sjors commented at 9:22 am on June 19, 2025: member

    That doesn’t reveal anything new unfortunately. With fed41b75fbfa6d14cce852863271b1fb0206eef0 checked out.

     0git clean -dfx
     1V=1 VERBOSE=1 MAX_JOBS=1 HOSTS="x86_64-linux-gnu" ./contrib/guix/guix-build
     2
     3...
     4
     5building /gnu/store/hiqwnz4mhiad1zcqyf250b1ws0s36djc-attrs-21.2.0.tar.gz.drv...
     6The following builds are still in progress:
     7  /gnu/store/hiqwnz4mhiad1zcqyf250b1ws0s36djc-attrs-21.2.0.tar.gz.drv
     8  /gnu/store/sf5wwnpy8mr9l8iic2xz5bmg3bppjrj9-asynctest-0.13.0.tar.gz.drv
     9  /gnu/store/grpq0sq301rwsz6h4vbdx9sgvi64wai4-Python-2.7.18.tar.xz.drv
    10
    11note: keeping build directory `/tmp/guix-build-Python-2.7.18.tar.xz.drv-5'
    12note: keeping build directory `/tmp/guix-build-bash.drv-5'
    13note: keeping build directory `/tmp/guix-build-asynctest-0.13.0.tar.gz.drv-5'
    14note: keeping build directory `/tmp/guix-build-attrs-21.2.0.tar.gz.drv-5'
    15guix shell: error: while setting up the build environment: cannot set armhf-linux personality: Invalid argument
    

    Full log: https://gist.github.com/Sjors/47d6fc2162721c8afa405815bfff4108

    Though this seems to ignore MAX_JOBS=1?

  10. fanquake commented at 9:27 am on June 19, 2025: member

    Does running the following work:

    0guix build --system=armhf-linux hello
    
  11. Sjors commented at 9:32 am on June 19, 2025: member

    @fanquake that produces the same error, so I guess that’s useful info (and it’s independent of Bitcoin Core).

    https://gist.github.com/Sjors/af35816417ead5a45956cda65b8456b8

    I’m confused by what armhf-linux is doing though since I’m only trying to build HOSTS="x86_64-linux-gnu"

    Additional info:

     0$ guix build --list-systems
     1The available systems are:
     2
     3   - aarch64-linux [current]
     4   - armhf-linux
     5   - i586-gnu
     6   - i686-linux
     7   - mips64el-linux
     8   - powerpc-linux
     9   - powerpc64le-linux
    10   - riscv64-linux
    11   - x86_64-linux
    
  12. Sjors commented at 9:45 am on June 19, 2025: member

    It happens for every --system I tried so far.

    Maybe the issue has nothing to do with the specific new packages installed in #32431, but rather an inability of my guix system to add any new packages. I’ll try to test that scenario somehow…


    It doesn’t seem that simple either, e.g. I can add something random and it builds fine:

     0diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
     1index 92fc1791f0..42c138df03 100644
     2--- a/contrib/guix/manifest.scm
     3+++ b/contrib/guix/manifest.scm
     4@@ -1,5 +1,6 @@
     5 (use-modules (gnu packages)
     6              ((gnu packages bash) #:select (bash-minimal))
     7+             (gnu packages aspell)
     8              (gnu packages bison)
     9              ((gnu packages certs) #:select (nss-certs))
    10              ((gnu packages cmake) #:select (cmake-minimal))
    11@@ -527,6 +528,7 @@ inspecting signatures in Mach-O binaries.")
    12  (append
    13   (list ;; The Basics
    14         bash-minimal
    15+        aspell
    16         which
    17         coreutils-minimal
    18         ;; File(system) inspection
    
  13. Sjors commented at 7:24 am on July 10, 2025: member

    Going to setup a fresh UTM instance, this time using Apple Virtualization (but not Rosetta, since I don’t want x86_64) instead of Qemu. Let’s see if that (a) works and (b) doesn’t break again after a few months. The other difference would be that I’m installing Ubuntu 25.04 instead of 24.10.


    Steps I used after installing the OS (mostly repeating my own bash history from the previous VM).

    For some reason it wasn’t using the full 100GB I asked for, as seen by sudo lsblk. Maybe I wasn’t paying attention during installation? Anyway, fix that first:

    0sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
    1sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
    
    0$ sudo apt install guix make
    1$ guix --version
    2guix (GNU Guix) 1.4.0
    

    Add to .bashrc:

    0export SDK_PATH=$HOME/SDKs
    1export SOURCES_PATH="$HOME/depends-SOURCES_PATH"
    2export BASE_CACHE="$HOME/depends-BASE_CACHE"
    3export ADDITIONAL_GUIX_COMMON_FLAGS='--max-jobs=4 --no-substitutes'
    4
    5export DETACHED_SIGS_REPO="$HOME/bitcoin-detached-sigs"
    6export GUIX_SIGS_REPO="$HOME/guix.sigs"
    

    (exit and login again)

    0mkdir depends-SOURCES_PATH
    1mkdir depends-BASE_CACHE
    2mkdir SDKs
    

    From the host machine:

    0scp Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers.tar.gz guix-mbp:SDKs 
    
    0cd SDKs
    1tar -xzf Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers.tar.gz
    2rm Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers.tar.gz
    3cd ..
    4
    5git clone https://github.com/bitcoin/bitcoin.git
    6git rev-parse HEAD
    

    At the time I was at master @ a40e9536588c366886de4f4b9d67b8665a509929.

    And go!

    0contrib/guix/guix-build
    

    Deal with the usual hash mismatches (see #31266):

    0guix download https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.2.tar.xz
    1guix download https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.8.tar.bz2
    2guix download https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.42.tar.bz2
    

    I can’t find net-tools-1.60 online anywhere, so just allowing a substitute to fetch it:

    0guix build /gnu/store/12iixx4vr706phhwi5xb9a0i1wa7f0jw-net-tools-1.60-0.479bb4a.zip.drv
    

    (could probably just use guix download if I know the url to use)

    And failing openssl tests (see install docs):

    0...
    
  14. Sjors commented at 6:32 am on July 11, 2025: member

    The new machine also gives me the “cannot set armhf-linux personality” error.

    It seems to happen after successfully building one package (with --max-jobs=1). Each time you do guix build it’ll build another package and throw this error.

    If I switch back to c8abd972818f83d90bf50b250131f338034460ef then guix build just works. At least after I fix the app armor issue:

    In /etc/apparmor.d/guix:

     0abi <abi/4.0>,
     1include <tunables/global>
     2
     3# Profile for the guix binary
     4profile guix /usr/bin/guix flags=(unconfined) {
     5  userns,
     6  # Site-specific additions and overrides
     7  include if exists <local/guix>
     8}
     9
    10# Profile for unprivileged user namespaces
    11profile unprivileged_userns flags=(unconfined) {
    12}
    

    And then sudo apparmor_parser -r /etc/apparmor.d/guix

    But the following fails regardless:

    0guix build --system=armhf-linux hello --no-substitutes
    1The following derivations will be built:
    2  /gnu/store/y81j374bznilwn5dqnwysjdmg02xi1gw-hello-2.12.1.drv
    3  /gnu/store/16kwj1sika6b0lky77kwpfz6cs9cgi4k-diffutils-3.8.drv
    4...
    5  /gnu/store/rl2ajq6hfph99pymwfm72cd2rb2hqzra-tar-1.34.drv
    6  /gnu/store/9rhm0cz4wc1az3c99jpjran28nwqz280-tar-1.34.tar.xz.drv
    7guix build: error: while setting up the build environment: cannot set armhf-linux personality: Invalid argument
    

    But this one does work:

    0guix build --system=aarch64-linux  hello --no-substitutes
    

    I’ll see if I can narrow down the culprit package to one of these and/or one of their dependencies:

    0((gnu packages python-science) #:select (python-scikit-build-core))
    1((gnu packages python-xyz) #:select (python-pydantic-2 python-pydantic-core))
    
  15. Sjors commented at 7:19 am on July 11, 2025: member

    Perhaps an easier thing for me to test would be if switching to guix own python-lief 0.16.6 package magically fixes things. This would require a time machine bump past: https://codeberg.org/guix/guix/pulls/353 @fanquake in #32764#pullrequestreview-2942922469 you mentioned having a time machine bump branch?

    Meanwhile I’ll try if the simple act of adding either python-scikit-build-core, python-pydantic-2 or python-pydantic-core on top of https://github.com/bitcoin/bitcoin/commit/c8abd972818f83d90bf50b250131f338034460ef breaks my guix machine. Calling guix gc uninstalls everything from the Bitcoin Core manifest, so might be a practical (albeit slow) way of trying these three things independently.

    (presumably I’d have to remove python-lief from the manifest entirely to get far enough into the guix build process to trigger the original error)

  16. Sjors commented at 1:43 pm on July 11, 2025: member

    I created a branch to debug this: https://github.com/Sjors/bitcoin/commits/2025/07/guix-aarch64-debug/

    It starts from https://github.com/bitcoin/bitcoin/commit/c8abd972818f83d90bf50b250131f338034460ef. First it drops python-tomli and lief and disables the security checks. I run HOSTS="arm64-apple-darwin" contrib/guix/guix-build and make sure it succeeds.

    Next I add python-scikit-build-core and pretend its needed for signapple. Depending on whether that succeeds, I’ll add python-pydantic-2 and python-pydantic-core to see if the failure is there. And if it fails, I’ll try to drill down to the sub-sub-sub dependency that’s the culprit. If so then it’s probably an upstream issue. But if it doesn’t fail, then the issue might be with our own LIEF package.

  17. Sjors commented at 7:55 am on July 13, 2025: member

    So far I found:

    • python-scikit-build-core builds fine
    • python-pydantic-2 fails
    • python-pydantic-core fails

    My current suspicion is that Python-2.7.18 / python2-minimal is the culprit, based on what was being built around the time it fails.

    However I’m unable to produce the failure if I just insert python-2.7 somewhere in the manifest. Part of the problem is that I don’t really understand how these manifest files work.

    But if my suspicion is current, then it might be a matter of replacing python-2.7 with python2-minimal somewhere in the dependency spider web. Or of just getting rid of python 2.

  18. dongcarl commented at 1:44 pm on July 17, 2025: contributor

    Don’t have full context but it’s curious what causes guix to want to set armhf-linux personality in the first place.

    Clearly M4 macOS hosts are aarch64-linux, and as @Sjors mentions:

    • guix build --system=armhf-linux hello “produces the same error”
    • guix build --system=aarch64-linux hello --no-substitutes does work

    Another clue from the Guix manual for --system=system (added here):

    Note: Building for an armhf-linux system is unconditionally enabled on aarch64-linux machines, although certain aarch64 chipsets do not allow for this functionality, notably the ThunderX.

    Perhaps the M4 chipset doesn’t allow for this functionality either. @Sjors what if you try to build the upstream lief 0.16.6?

  19. Sjors commented at 2:18 pm on July 17, 2025: member

    Perhaps the M4 chipset doesn’t allow for this functionality either.

    That’s quite possible, because trying to run the arm CI job also doesn’t work, see #31344.


    Not sure how to go about building the upstream lief 0.16.6:

    0$ guix install python-lief@0.16.6
    1guix install: error: python-lief: package not found for version 0.16.6
    

    Guess I need to do guix pull first?

  20. Sjors commented at 6:20 pm on July 17, 2025: member

    Yes that was needed… Afterwards:

    0$ guix --version
    1guix (GNU Guix) 945c6ff9f222efed460ce8ab31fb6911f89436c9
    2...
    3guix install python-lief@0.16.6 --no-substitutes
    4...
    5
    6building /gnu/store/1krys8fl33k7bzr9md8fgd38k41av1fk-babel-2.16.0.tar.gz.drv...
    7guix install: error: while setting up the build environment: cannot set armhf-linux personality: Invalid argument
    

    Don’t have full context but it’s curious what causes guix to want to set armhf-linux personality in the first place.

    It must be one of the dependencies of lief, because without that I can do guix builds just fine on this machine - and have been for several major releases.


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: 2025-08-01 09:13 UTC

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