bug#55326: libgit2 1.3.0 includes a time-dependent test

2022-05-09 Thread Carl Dong
I opened a pull request upstream that just removes the specific test for 
“HEAD@{10 years ago}". Since that functionality is well-covered by subsequent 
tests.

See here for the PR: https://github.com/libgit2/libgit2/pull/6299 
<https://github.com/libgit2/libgit2/pull/6299>

> Though maybe by that time, we have complete time namespaces …
One would hope!

Cheers,
Carl Dong

> On May 9, 2022, at 3:25 AM, Maxime Devos  wrote:
> 
> Ludovic Courtès schreef op ma 09-05-2022 om 00:11 [+0200]:
>> Fixed:
>> 
>>   e48b5484afde93294c4ed7215e88ed450842b2e5 (master)
>>   f5fe0082abe4547f3fb9f29d8351473cfb3a387b (staging)
> 
> It's still time-dependent though:
> 
>> +  (substitute* "tests/refs/revparse.c"
>> +(("10 years ago")
>> + "100 years ago"))
> 
> wouldn't it now fail after ~100 or ~1000 years?
> Though maybe by that time, we have complete time namespaces ...
> 
> Greetings,
> Maxime.



signature.asc
Description: Message signed with OpenPGP


bug#53426: mingw-w64-{x86_64, i686}-winpthreads broken after absorption of binutils-next

2022-02-01 Thread Carl Dong
I did some more exploration, and found that not only are the mingw-w64-{x86_64, 
i686}-winpthreads packages broken, but any --target=x86_64-w64-mingw32 package:

$ guix build --target=x86_64-w64-mingw32 hello

I have this patch which resolves the problem by simply disabling compressed 
debug sections, but perhaps it’d also be worthwhile to investigate the root 
cause...

--8<---cut here---start->8---
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 78cbf871ac..397e4d4c1c 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -101,7 +101,8 @@ (define* (cross-binutils target #:optional (binutils 
binutils))
  "ath9k-htc-firmware-binutils.patch")))
  ((target-mingw? target)
   (package-with-extra-patches
-   binutils
+   (package-with-extra-configure-variable
+binutils "--enable-compressed-debug-sections" "no")
(search-patches "binutils-mingw-w64-timestamp.patch"
"binutils-mingw-w64-deterministic.patch")))
  (else binutils))
--8<---cut here---end--->8---

Cheers,
Carl Dong

> On Jan 21, 2022, at 5:10 PM, Maxime Devos  wrote:
> 
> Carl Dong schreef op vr 21-01-2022 om 16:30 [-0500]:
>> I’m wondering what the best course of action is to fix the mingw-w64-
>> {x86_64,i686}-winpthreads packages (e.g. just remove the configure
>> flag for mingw-w64? Add that flag only for linux? Or something else?)
>> and would love some help.
> 
> I would assume that it works for Linux, it also works for the Hurd,
> so I would prefer something like
> 
> #$@(if (target-mingw?) '() '("--some-configuration..."))
> 
> above
> 
> #$@(if (target-linux?) '("--some-configuration...") '())
> 
> Greetings,
> Maxime.
> 



signature.asc
Description: Message signed with OpenPGP


bug#53426: mingw-w64-{x86_64, i686}-winpthreads broken after absorption of binutils-next

2022-01-21 Thread Carl Dong
Hi all,

The mingw-w64-{x86_64,i686}-winpthreads have been broken since the absorption 
of binutils-next in ce362bc1f35102e7d79ad7e0d638d20cef304f01. My very crude 
debugging (adding and removing configure flags from the binutils in 
gnu/packages/base.scm until the packages compiled) led me to the culprit: 
"--enable-compressed-debug-sections=all”.

I’m wondering what the best course of action is to fix the 
mingw-w64-{x86_64,i686}-winpthreads packages (e.g. just remove the configure 
flag for mingw-w64? Add that flag only for linux? Or something else?) and would 
love some help.

Cheers,
Carl Dong

bug#34170: bitcoin-core bundles leveldb

2022-01-06 Thread Carl Dong
> If desired, it would also be possible to do something in-between
> unbundling and using bitcoin's leveldb: define a 'leveldb/bitcoin'
> variant of the 'leveldb' package (using package/inherit or (package
> (inherit ...) ...)), add it as input to the 'bitcoin' package and tell
> and/or patch bitcoin's buid scripts to use that leveldb.
Yes I think that would be a splendid idea! With regards to patching bitcoin’s 
builds scripts, Bitcoin Knots follows Bitcoin Core closely, but has a bunch of 
patches which allow for using system libs, so that might be good to reference: 
https://github.com/bitcoin/bitcoin/compare/master...bitcoinknots:21.x-syslibs 
<https://github.com/bitcoin/bitcoin/compare/master...bitcoinknots:21.x-syslibs>

> As source code, use an appropriate commit from
> <https://github.com/bitcoin-core/leveldb-subtree> (and add a comment
> to the definition of bitcoin-core to keep leveldb/bitcoin in-sync).

FYI, according to https://github.com/bitcoin/bitcoin/pull/17398 
<https://github.com/bitcoin/bitcoin/pull/17398>, we are currently using the 
upstream LevelDB commit 0c40829872a9f00f38e11dc370ff8adb3e19f25b

Cheers,
Carl Dong


> On Jan 5, 2022, at 2:13 PM, Maxime Devos  wrote:
> 
> Hi,
> 
> Carl Dong schreef op wo 05-01-2022 om 12:40 [-0500]:
>> Simon, Maxime, Danny,
>> 
>> Thanks for CCing me on this message! The rationale for bundling
>> leveldb in Bitcoin Core goes a bit beyond convenience, it is several
>> things:
>> 
>> 1. The original reason for sub-treeing is that Bitcoin Core used to
>> maintain its own version of leveldb with its own fixes
>> here: https://github.com/bitcoin-core/leveldb-subtree, since then
>> most of these fixes have been upstreamed as
>> of: https://github.com/bitcoin/bitcoin/pull/17398
> 
> Seems reasonable to me, but the bitcoin project is upstreaming the
> changes it made and most are already upstream, so I would prefer
> to use upstream's leveldb.
> 
>> 2. We also used to support using an external leveldb, however, it
>> seems that it was fragile to rely on external projects to maintain
>> ABI compatibility, see the quoted IRC bug report
>> here: https://github.com/bitcoin/bitcoin/pull/23282. Reasonable minds
>> may disagree on this point, especially coming from Guix where
>> patching is convenient.
> 
> The quoted ABI incompatibility
> 
> bitcoind fails to start with undefined symbol:
> _ZTIN7leveldb6LoggerE in Debian Sid after leveldb upgraded from 1.22 to
> 1.23: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996486
> 
> doesn't apply in Guix, because guix uses RUNPATH and multiple library
> versions can exist in the same store (in different directories in the
> store).
> 
>> In addition to the above, Bitcoin Core experienced a hard fork in
>> 2013 due to database incompatibilities, which has predisposed
>> maintainers towards a more stringent approach with pinning
>> dependencies and their configure/build-time flags.
>> See: https://blog.bitmex.com/bitcoins-consensus-forks/#was-the-2013-
>> incident-a-hardfork
> 
> I doubt that Guix has sufficient Bitcoin Core users to cause
> a hard fork, but yes, this is an understandable reason to bundle
> things.  But any such problem seems easy to resolve (at the guix side):
> we could simply temporarily switch to an older version of leveldb.
> 
> If desired, it would also be possible to do something in-between
> unbundling and using bitcoin's leveldb: define a 'leveldb/bitcoin'
> variant of the 'leveldb' package (using package/inherit or (package
> (inherit ...) ...)), add it as input to the 'bitcoin' package and tell
> and/or patch bitcoin's buid scripts to use that leveldb.
> 
> As source code, use an appropriate commit from
> <https://github.com/bitcoin-core/leveldb-subtree> (and add a comment
> to the definition of bitcoin-core to keep leveldb/bitcoin in-sync).
> 
> A benefit of this approach (if done properly, with (origin (inherit
> ...) ...) such that patches of 'leveldb' are inherited) above the
> status quo, is that is that if for some reason 'leveldb' is patched in
> Guix, then 'leveldb/bitcoin' receives the patch as well. Another
> benefit is that the dependency 'googletest' and 'benchmark' of leveldb
> would remain unbundled.
> 
> Greetings,
> Maxime.
> 



signature.asc
Description: Message signed with OpenPGP


bug#34170: bitcoin-core bundles leveldb

2022-01-05 Thread Carl Dong
Simon, Maxime, Danny,

Thanks for CCing me on this message! The rationale for bundling leveldb in 
Bitcoin Core goes a bit beyond convenience, it is several things:

1. The original reason for sub-treeing is that Bitcoin Core used to maintain 
its own version of leveldb with its own fixes here: 
https://github.com/bitcoin-core/leveldb-subtree 
<https://github.com/bitcoin-core/leveldb-subtree>, since then most of these 
fixes have been upstreamed as of: https://github.com/bitcoin/bitcoin/pull/17398 
<https://github.com/bitcoin/bitcoin/pull/17398>
2. We also used to support using an external leveldb, however, it seems that it 
was fragile to rely on external projects to maintain ABI compatibility, see the 
quoted IRC bug report here: https://github.com/bitcoin/bitcoin/pull/23282 
<https://github.com/bitcoin/bitcoin/pull/23282>. Reasonable minds may disagree 
on this point, especially coming from Guix where patching is convenient.

In addition to the above, Bitcoin Core experienced a hard fork in 2013 due to 
database incompatibilities, which has predisposed maintainers towards a more 
stringent approach with pinning dependencies and their configure/build-time 
flags. See: 
https://blog.bitmex.com/bitcoins-consensus-forks/#was-the-2013-incident-a-hardfork
 
<https://blog.bitmex.com/bitcoins-consensus-forks/#was-the-2013-incident-a-hardfork>

Let me know if I can provide more context!

Cheers,
Carl Dong

> On Jan 5, 2022, at 4:45 AM, zimoun  wrote:
> 
> Hi Maxime,
> 
> On Wed, 05 Jan 2022 at 10:39, Maxime Devos  wrote:
> 
>>> The package bitcore-core still provides ’leveldb’:
>>> 
>>> [...]
>>> 
>>> and I am not sure to get what is the issue.  Some explanations?
>> 
>> The issue is that bitcoin-core bundles leveldb (which you have shown
>> is still the case), even though leveldb is packaged in Guix.
> 
> Thanks, I missed that ’leveldb’ is packaged in Guix.  Indeed, it should
> preferably be used.
> 
> So reopen. :-)
> 
> 
> Cheers,
> simon



bug#52694: time-machine error when leaping from version-1.2.0 to version-1.4.0

2021-12-20 Thread Carl Dong
Hi all,

A fellow Bitcoin developer has submitted a patch bumping our time-machine to a 
commit on the version-1.4.0 branch for testing. While testing that change, a 
few developers encountered a bug in the time-machine script.

I’ve been able to distill it down to a reproducible form:

$ guix time-machine --branch=version-1.2.0 -- time-machine 
--commit=6dffced09ecda024e0884e352778c221ad066fd6 -- describe

The specific error that you get:
--8<---cut here---start->8---
Updating channel 'guix' from Git repository at 
'https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix' from Git repository at 
'https://git.savannah.gnu.org/git/guix.git'...
Backtrace:
In guix/store.scm:
  2042:24 19 (run-with-store # ?)
In guix/inferior.scm:
734:8 18 (_ _)
In guix/channels.scm:
876:2 17 (_ _)
836:2 16 (_ _)
In ./guix/monads.scm:
482:9 15 (_ _)
In guix/store.scm:
   1876:8 14 (_ _)
In guix/channels.scm:
   604:36 13 (_ #)
   657:11 12 (_)
In ice-9/eval.scm:
   196:35 11 (_ #(#(#) "/gnu?" ?))
   173:47 10 (_ #(#(#(#) # ?) ?))
   213:37  9 (_ #(#(#(#) # ?) ?))
159:9  8 (_ #(#(#(#) # ?) ?))
159:9  7 (_ #(#(#(#) # ?) ?))
159:9  6 (_ #(#(#(#) # ?) ?))
In guix/modules.scm:
   157:28  5 (module-closure _ #:select? _ #:dependencies _)
In guix/memoization.scm:
100:0  4 (_ # "/gnu/store/i88h59?" ?)
In ice-9/ports.scm:
   445:17  3 (call-with-input-file _ _ #:binary _ #:encoding _ # _)
In guix/modules.scm:
 69:4  2 (_ _)
In ice-9/boot-9.scm:
  1669:16  1 (raise-exception _ #:continuable? _)
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Throw to key `match-error' with args `("match" "no matching pattern" 
(#:re-export-and-replace (delete) #:replace ((define-public* . define-public)) 
#:export (content-hash content-hash? content-hash-algorithm content-hash-value 
origin origin? this-origin origin-uri origin-method origin-hash origin-sha256 
origin-file-name origin-actual-file-name origin-patches origin-patch-flags 
origin-patch-inputs origin-patch-guile origin-snippet origin-modules base32 
base64 package package? this-package package-name package-upstream-name 
package-version package-full-name package-source package-build-system 
package-arguments package-inputs package-native-inputs 
package-propagated-inputs package-outputs package-native-search-paths 
package-search-paths package-replacement package-synopsis package-description 
package-license package-home-page package-supported-systems package-properties 
package-location package-definition-location hidden-package hidden-package? 
package-superseded deprecated-package package-field-location this-package-input 
this-package-native-input lookup-package-input lookup-package-native-input 
lookup-package-propagated-input lookup-package-direct-input prepend replace 
modify-inputs package-direct-sources package-transitive-sources 
package-direct-inputs package-transitive-inputs 
package-transitive-target-inputs package-transitive-native-inputs 
package-transitive-propagated-inputs package-transitive-native-search-paths 
package-transitive-supported-systems package-mapping package-input-rewriting 
package-input-rewriting/spec package-source-derivation package-derivation 
package-cross-derivation package-output package-grafts 
package-patched-vulnerabilities package-with-patches package-with-extra-patches 
package-with-c-toolchain package/inherit transitive-input-references 
%supported-systems %hurd-systems %cuirass-supported-systems supported-package? 
 package-error? package-error-package  
package-input-error? package-error-invalid-input 
 package-cross-build-system-error? 
package->bag bag->derivation bag-direct-inputs bag-transitive-inputs 
bag-transitive-host-inputs bag-transitive-build-inputs 
bag-transitive-target-inputs package-development-inputs package-closure 
default-guile default-guile-derivation set-guile-for-build package-file 
package->derivation package->cross-derivation origin->derivation)))'.
--8<---cut here---end--->8---

Let me know if there’s any other information I can provide or if this is a dupe!

Cheers,
Carl Dong




bug#50203: binutils-mesboot0: configure: sed: command not found

2021-08-25 Thread Carl Dong
Hi all,

After resolving bug#49985, a new build failure has stumped a community member 
of mine. When building 
/gnu/store/8kap9kj0ayhaqd4ay7n9lgpbcwankxrq-binutils-mesboot0-2.14.drv, the 
build fails and the logs are as follows: 
https://paste.sr.ht/~dongcarl/7fe559b338dfa9aa3cf3464dbdab8109487c9783#8kap9kj0ayhaqd4ay7n9lgpbcwankxrq-binutils-mesboot0-2.14.log-L5504

We’ve tried the normal suspects: --cores=1, reboots, mounting tmpfs at /tmp, 
etc.

What’s also fascinating is that, when I inspect his keep-failed directory: 
https://nextcloud.carl.homeserver.net/s/ZHmAbz3LwyPwcfL
We found that:

1. The $PATH in the environment-variables file contained 
/gnu/store/2z4y0n547x7d566281isklk9ls2d8c9q-sed-mesboot0-1.18/bin, which in 
turn contained a working sed:

--8<---cut here---start->8---
Usage: /gnu/store/2z4y0n547x7d566281isklk9ls2d8c9q-sed-mesboot0-1.18/bin/sed 
[-nV] [--quiet] [--silent] [--version] [-e script]
[-f script-file] [--expression=script] [--file=script-file] [file…]
--8<---cut here---end--->8---

2. The configure’s shebang 
(/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh) exists 
on his system and works

This problem has also been encountered in the past: 
https://logs.guix.gnu.org/guix/2021-04-03.log#210314

As always, I’m happy to spend energy investigating, but would love any pointers 
on what the most promising place to look is!

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"




bug#49985: bash-mesboot0: Inscrutable error in build phase

2021-08-25 Thread Carl Dong
Mathieu,

I think this was exactly the problem, because mounting a tmpfs at /tmp solved 
it. Thanks for your help!

Cheers,
Carl Dong

> On Aug 19, 2021, at 12:20 PM, Mathieu Othacehe  wrote:
> 
> 
> Hello Carl,
> 
>> The error line is L1299: "make: stat:Makefile: sterror: unknown error”
> 
> This reminds me of:
> https://lists.gnu.org/archive/html/bug-guix/2020-05/msg00335.html.
> 
> I never took the time to fix this issue. Bottom line is that building
> the bootstrap toolchain fails on NVME disks because some syscalls
> (stat64, lstat64 and fstat64) need to be implemented in GNU Mes.
> 
> There's a small demonstration program that you can use to demonstrate
> this theory :).
> 
> Thanks,
> 
> Mathieu






bug#49985: bash-mesboot0: Inscrutable error in build phase

2021-08-12 Thread Carl Dong
No worries! We’re all learning :-)
I ended up asking my colleague to use:

strace --env=MES_DEBUG=1

We’ll see what happens!

> On Aug 11, 2021, at 8:53 AM, Bengt Richter  wrote:
> 
> Just this disclaimer:
> I am just a lurker interested in mes, not a mes developer or team member.
> (I am trying to do some minimal stuff too, so I cloned the mes repo and pull 
> once
> in a while to see what's going on :)
> 
> Sorry for any implication that I really know anything about mes ;/
> 
> On +2021-08-11 03:21:18 +0200, Bengt Richter wrote:
>> On +2021-08-11 02:38:54 +0200, Bengt Richter wrote:
>>> On +2021-08-10 15:41:25 -0400, Carl Dong wrote:
>>>> Hi all,
>>>> 
>>>> While setting up Guix for a community member of mine, we encountered this 
>>>> somewhat inscrutable problem (I later learned this is not the first time 
>>>> Guix users have run into this problem!). When building 
>>>> /gnu/store/2nvaxgs0rdxfkrwklh622ggaxg0wap6n-bash-mesboot0-2.05b.drv, we 
>>>> encountered the following build failure: 
>>>> https://paste.sr.ht/~dongcarl/376b19b8349c329ed5329508c7fb43a7c3aec64b#2nvaxgs0rdxfkrwklh622ggaxg0wap6n-bash-mesboot0-2.05b.log-L1299
>>>> 
>>>> The error line is L1299: "make: stat:Makefile: sterror: unknown error”
>>>> --
>>> 
>>> To me, sterror looks like a typo for strerror
>>> so grepping for sterror might find the typo, if that's what it is?
>>> 
>> Looking at ./lib/mes/__mes_debug.c, it looks like you could set/export 
>> environment
>> MES_DEBUG=1 and run it again to see the error number ./lib/string/strerror.c
>> (in git repo) doesn't like.
>> 
>> Then run something like my error-printing kludge that will work on your 
>> system:
>> 
>> I called it errno-grep
>> --8<---cut here---start->8---
>> #!/usr/bin/bash
>> if [ -z "$1" ];then
>>echo "Usage: errno-grep [ grep switches for grepping the following files 
>> in order ]"
>>echo "/usr/include/asm-generic/errno-base.h"
>>echo "/usr/include/asm-generic/errno.h"
>>exit 0
>> fi
>> 
>> if [ "${1:0:1}" == "-" ]; then
>>exec grep "$@" /usr/include/asm-generic/errno-base.h 
>> /usr/include/asm-generic/errno.h
>> else
>>exec egrep -wh "$@" /usr/include/asm-generic/errno-base.h 
>> /usr/include/asm-generic/errno.h
>> fi
>> --8<---cut here---end--->8---
>> 
>> HTH.
>> 
>> 
>> 
> 
> -- 
> Regards,
> Bengt Richter






bug#49985: bash-mesboot0: Inscrutable error in build phase

2021-08-10 Thread Carl Dong
Hi all,

While setting up Guix for a community member of mine, we encountered this 
somewhat inscrutable problem (I later learned this is not the first time Guix 
users have run into this problem!). When building 
/gnu/store/2nvaxgs0rdxfkrwklh622ggaxg0wap6n-bash-mesboot0-2.05b.drv, we 
encountered the following build failure: 
https://paste.sr.ht/~dongcarl/376b19b8349c329ed5329508c7fb43a7c3aec64b#2nvaxgs0rdxfkrwklh622ggaxg0wap6n-bash-mesboot0-2.05b.log-L1299

The error line is L1299: "make: stat:Makefile: sterror: unknown error”

This failure persists even when ran with --cores=1, across reboots. I’ve even 
tried building that derivation with --check on my own machine (which 
successfully built that derivation), and every log line matched (plus or minus 
some timing log lines) up until L1299.

We’ve also tried rebuilding bash-mesboot0-2.05b.drv’s dependency 
/gnu/store/2nvaxgs0rdxfkrwklh622ggaxg0wap6n-bash-mesboot0-2.05b.drv with:

--8<---cut here---start->8---
guix gc --delete /gnu/store/prkqai3zwh3shlqpll6xyncmmqpj49dd-gash-boot-0.2.0
guix build --cores=1 
/gnu/store/2nvaxgs0rdxfkrwklh622ggaxg0wap6n-bash-mesboot0-2.05b.drv
--8<---cut here---end--->8---

Which did not make a difference.

What is interesting is that this is not the first time this problem has cropped 
up for people. I see 2 past mentions of this exact error:
- Mentioned by kagevf on Dec 16th, 2020: 
https://logs.guix.gnu.org/guix/2020-12-16.log#043712
- Mentioned by genr8_ (with help from rekado_) on Mar 22nd, 2021: 
https://logs.guix.gnu.org/guix/2021-03-22.log#182406

I’m happy to spend energy investigating, but would love any pointers on what 
the most promising place to look is!

My friend's system is an Intel i5 system, running Guix 1.3.0 on Ubuntu. His 
/tmp is on the same partition as / and is ext4.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"






bug#48389: Guile 3.0.7 test suite fails non-deterministically

2021-07-15 Thread Carl Dong
Hi all,

I’m also encountering this exact error when time-machining from 
0961807915d7955e70a081272d857b6cbf92c0c8 to 
83d9e2ee56cb0ca2a644074ad232503e25ac7116

I’m able to reproduce this (I’ve tried building the derivation 5 times now with 
different --cores, and this error happens every time)

Build logs here: https://nextcloud.carl.homeserver.net/s/yas2SwmST8Z3jRG
Keep-failed directory here: 
https://nextcloud.carl.homeserver.net/s/sSrjPZn5NqikeoJ

My system:
- AMD Ryzen Threadripper 2970WX 24-Core Processor
- Guix on Arch Linux
- tmpfs mounted on /tmp

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"






bug#47935: coreutils: tests/tail-2/inotify-dir-recreate.sh fails on overlayfs

2021-04-21 Thread Carl Dong
Upstream bug filed: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47940





bug#47935: coreutils: tests/tail-2/inotify-dir-recreate.sh fails on overlayfs

2021-04-21 Thread Carl Dong
Hi all,

I’m continuing my testing of the 1.3.0 branch, and I’ve found that coreutil's 
tests/tail-2/inotify-dir-recreate.sh fails on filesystems where tail detects 
that it cannot use inotify safely (probably arising out of this check: 
https://github.com/coreutils/coreutils/blob/34a48bf0f0552aaed21a7dba4a5488946a978317/src/tail.c#L2486-L2491).
 Example for this: overlayfs used by docker/podman/etc.

The author of tail’s inotify support explains it here: 
https://github.com/containers/podman/issues/5493#issuecomment-598851397

A quick and easy fix for v1.3.0 may be to just disable 
tests/tail-2/inotify-dir-recreate.sh :-)

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"






bug#47924: v1.3.0: Missing configure check for guile-lib >= 0.27

2021-04-20 Thread Carl Dong
Hi all,

Testing out the version-1.3.0 branch right now, and I think perhaps it’s 
missing a configure-time check for guile-lib >= 0.27 for %strict-tokenizer?

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"






bug#44559:

2021-02-19 Thread Carl Dong
Hi Guix!

Thanks to all of you for your thoughtful replies!

On Feb 19, 2021, at 10:33 AM, Ludovic Courtès  wrote:
> I agree it’s a problem, and yes, it would probably be a good idea to
> release 1.2.1 with the upgraded GnuTLS we now have in ‘master’.
I’m very heartened by your affirmation of the project’s support of 
bootstrappability and building from source. :-)

In addition, I think it would be good to make sure that the package 
transformation options are powerful enough to allow users to sidestep these 
problems in their own workflow and decrease the pressure on maintainers.

On Feb 19, 2021, at 10:33 AM, Ludovic Courtès  wrote:
> ‘--without-tests’ should work, but you need to pass the right version
> number I guess?

Oh! That may be the case. I am using `guix time-machine` however, and that does 
not yet have the `--without-tests` flag, I have opened bug#46650 so that we can 
discuss that issue there.

On Feb 19, 2021, at 1:32 PM, Maxime Devos  wrote:
> Alternatively, could the build container be adjusted to always begin at
> 1970-01-01, using ‘time namespaces’?
Unfortunately, as Ludovic mentioned earlier in this thread, time_namespaces(7) 
is only for CLOCK_MONOTONIC and. CLOCK_BOOTTIME. :-(

Carl Dong
cont...@carldong.me
"I fight for the users"

> On Feb 19, 2021, at 10:33 AM, Ludovic Courtès  wrote:
> 
> Hi Carl,
> 
> Carl Dong  skribis:
> 
>> As bitcoin core begins the planning to officially transition to Guix-based 
>> releases, I've had many community members build guix v1.2.0 from source and 
>> afterward attempt `--bootstrap --no-substitutes` builds. As you may imagine, 
>> they are getting stuck on this gnutls problem and cannot proceed further.
> 
> Yeah.  :-/
> 
>> I'm wondering:
>> 
>> 1. Is there a workaround that does not involve changing the system time? We 
>> have attempted several flags:
>>  1. --with-graft=gnutls=gnutls@3.6.14
>>  2. --without-tests=gnutls
>>  3. --with-input=gnutls=gnutls@3.6.14
>>  These attempts all failed to work around this bug, and I’m curious as 
>> to why that would be. My guess would be that when we do `--bootstrap`, Guix 
>> bootstraps itself first without taking into account these flags?
> 
> ‘--without-tests’ should work, but you need to pass the right version
> number I guess?
> 
>> 2. Since bootstrappability is one of the core tenets of Guix, might it be 
>> appropriate to cut a v1.2.1 release with this problem (and any other 
>> potential bootstrap problems) fixed? (Happy to discuss in separate thread if 
>> more appropriate)
> 
> I agree it’s a problem, and yes, it would probably be a good idea to
> release 1.2.1 with the upgraded GnuTLS we now have in ‘master’.
> 
> Longer-term, we need to find a way to address or avoid this issue.  A
> brute-force approach would be to have the build machines at ci.guix run
> with a clock ten years ahead.  That should generally be fine since the
> only place where timestamps matter are unmodified upstream tarballs.  In
> all other cases, mtime is set to 1.
> 
> Perhaps we could start by testing this hypothesis on a separate build
> farm.  Chris, Mathieu, WDYT?
> 
> Thanks,
> Ludo’.






bug#46650: Extending package transformation options

2021-02-19 Thread Carl Dong
Hi Guix!

TL;DR Shall we add a `--without-tests` option (or something similar) for `guix 
time-machine`?

Our release workflow in Bitcoin is planned to shift over to Guix for the next 
release, and as such we have a lot more testers who are running Guix as we 
speak on their machines! Exciting!

Our build workflow basically boils down to something like:

--8<---cut here---start->8---
$ guix time-machine --commit= … \
   -- environment --manifest=manifest.scm … \
  -- 
--8<---cut here---end--->8---

The fact that this is even possible (and allows reproducibility across time) 
speaks to the awesomeness of Guix! :-)

One of the main reasons for switching over to Guix is for its bootstrappbility 
and the ability to perform `--bootstrap --no-substitutes` builds. As mentioned 
in the gnutls ticket, performing these source-based builds can sometimes reveal 
problems with tests suites:
1. Spurious tests
2. “Expiring” tests (like the gnutls one)
3. Foreign distro problems (0zmcam9sdiag9s1qx3xvlf8a3jnm53x2-sed-4.8.drv fails 
to build on SELinux-based distros because of a test failure in 
testsuite/inplace-selinux)

I think that the package transformation options are the perfect “hack-around” 
solution for this, namely `--without-tests`. In fact, since those who 
experience these problems are building from source, it makes no difference that 
the store item would be change: they would need to build everything anyway!

However, in the case of our workflow above, there is no way to specify 
`--without-tests=` to `guix time-machine`, which insists on building the broken 
`gnutls` package and running its tests. I’ve tried isolating the command to 
just:

--8<---cut here---start->8---
$ guix time-machine --commit= … \
   -- --help
--8<---cut here---end--->8—

To make sure that it’s `guix time-machine` which is trying to build gnutls and 
not the time-machine’d `guix environment`.

I’m not too familiar with how package transformation options work internally, 
but I’m guessing all we need here is a `--without-tests` option (or something 
similar) for `guix time-machine`? Is there anything else that’s necessary to 
successfully skip tests for my workflow?

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"






bug#44559:

2021-02-16 Thread Carl Dong
Hi all,

As bitcoin core begins the planning to officially transition to Guix-based 
releases, I've had many community members build guix v1.2.0 from source and 
afterward attempt `--bootstrap --no-substitutes` builds. As you may imagine, 
they are getting stuck on this gnutls problem and cannot proceed further.

I'm wondering:

1. Is there a workaround that does not involve changing the system time? We 
have attempted several flags:
1. --with-graft=gnutls=gnutls@3.6.14
2. --without-tests=gnutls
3. --with-input=gnutls=gnutls@3.6.14
These attempts all failed to work around this bug, and I’m curious as 
to why that would be. My guess would be that when we do `--bootstrap`, Guix 
bootstraps itself first without taking into account these flags?

2. Since bootstrappability is one of the core tenets of Guix, might it be 
appropriate to cut a v1.2.1 release with this problem (and any other potential 
bootstrap problems) fixed? (Happy to discuss in separate thread if more 
appropriate)

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"






bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2021-02-03 Thread Carl Dong
New observation! On my Arch machine which has 

5.10.11-arch1-1

And 

# CONFIG_EXPERT is not set
CONFIG_UID16=y

(So according to my previous email it not trigger the bug)

I’m getting the following strace:

$ strace -v -e trace=file ~/sh -c "test -w /home/dongcarl/.bash_profile”
execve() = 0
[ Process PID=404360 runs in 32 bit mode. ]
open("/dev/tty", O_RDWR)= 3
stat("/home/dongcarl", 0xffdcd738)  = -1 EOVERFLOW (Value too large for 
defined data type)
getcwd("/home/dongcarl", 1024)  = 15
stat("/home/dongcarl/.bash_profile", 0xffdcd6bc) = -1 EOVERFLOW (Value too 
large for defined data type)
+++ exited with 1 +++

Not sure hot to interpret this...




bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2021-01-19 Thread Carl Dong
Regardless of how Kconfig options interact with each other, it seems that this 
bug is only triggered when the effective kernel config (/proc/config.gz) 
contains the following:

CONFIG_EXPERT=y
# CONFIG_UID16 is not set

Cheers,
Carl Dong




bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2021-01-18 Thread Carl Dong
Hi all,

I was able to bisect this down to a few kernel configuration options, so 
perhaps those with more kernel experience can help me track down what’s going 
on.

The two Kconfig options which seem to influence the behavior are:
1. CONFIG_EXPERT
2. CONFIG_UID16

CONFIG_EXPERT=y, CONFIG_UID16=y -> status code = 0
CONFIG_EXPERT=y, CONFIG_UID16=n -> status code = 1
CONFIG_EXPERT=y, CONFIG_UID16 not set -> status code = 1
CONFIG_EXPERT=n, any CONFIG_UID16 -> status code = 0

This is somewhat perplexing to me, as looking at the entry for CONFIG_UID16, I 
see that the default value is “y”, so I would expect there not to be a 
difference between CONFIG_UID16=y and CONFIG_UID16 not being set when 
CONFIG_EXPERT=y.

This configuration option investigation originated from when I bisected across 
Arch Linux’s kernel configuration and found that this recent commit fixed our 
problem: 
https://github.com/archlinux/svntogit-packages/commit/1b26b3445354ccdb92b4361e772fb9f246143d0b#diff-3e341d2d9c67be01819b25b25d5e53ea3cdf3a38d28846cda85a195eb9b7203a

Note that this above config has CONFIG_HAVE_UID16=y and CONFIG_MULTIUSER=y

Let me know how best to approach this!

Cheers,
Carl Dong








bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2020-12-16 Thread Carl Dong
More clues:

I ran the following one-liner:

for i in $(seq 0 65535); do sudo chown $i:$i 
/tmp/guix-build-binutils-mesboot0-2.14.drv-0/binutils-2.14/config.cache && 
/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh -c "test 
-w /tmp/guix-build-binutils-mesboot0-2.14.drv-0/binutils-2.14/config.cache" && 
echo "Winner: $i" && break; done

This is designed to iterate through all possible uid values, chown the 
config.cache file, and test if that uid makes the “test” builtin think that it 
is writable. If there is one, it’ll print “Winner: ” and exit

The result: Nothing was printed and the exit status was 1

Not sure where to go from here.

Cheers,
Carl Dong

> On Dec 15, 2020, at 7:46 PM, Carl Dong  wrote:
> 
> Hi all,
> 
> I think I have a new lead!
> 
> Here’s what I did:
> 1. cd /tmp/guix-build-binutils-mesboot0-2.14.drv-0/binutils-2.14
> 2. env -i bash --rcfile environment-variables
> 3. Ran the configure command from the log, just to check:
>   ./configure --disable-nls --disable-shared --disable-werror 
> --build=i386-unknown-linux --host=i386-unknown-linux 
> --target=i386-unknown-linux --with-sysroot=/ 
> --prefix=/gnu/store/jfa9b78rdniyw7qilsmw3bh02x8x68ly-binutils-mesboot0-2.14
> 
> Indeed it did still output "not updating unwritable cache ./config.cache”
> 
> However, when I tried `test -w config.cache`, there was no status code…
> 
> This led me to look at ./configure’s shebang, which is:
>   /gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh
> 
> Then I did:
>   /gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh 
> -c "test -w config.cache”
> 
> Which _did_ exit with status=1 !
> 
> So I believe that this is a problem with the “test” builtin in 
> /gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b
> 
> So I ran:
>   env -i bash --rcfile environment-variables -c 'strace -v -e trace=file 
> /gnu/store/m89p469fxwn4hj7an9givd1ry 9vk7j2l-bash-mesboot0-2.05b/bin/sh -c 
> "test -w config.cache”'
> 
> And the output:
> execve("/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh",
>  ["/gnu/store/m89p469fxwn4hj7an9giv"..., "-c", "test -w config.cache"], 
> ["PWD=/tmp/guix-build-binutils-mes"..., "SHLVL=0", "_=/usr/bin/strace"]) = 0
> [ Process PID=2049037 runs in 32 bit mode. ]
> open("/dev/tty", O_RDWR)= 3
> stat("/tmp/guix-build-binutils-mesboot0-2.14.drv-0", {st_dev=makedev(0, 
> 0x2f), st_ino=2546749, st_mode=S_IFDIR|0755, st_nlink=3, st_uid=1000, 
> st_gid=1000, st_blksize=4096, st_blocks=0, st_size=80, st_atime=1608079054 /* 
> 2020-12-15T19:37:34.095396729-0500 */, st_atime_nsec=95396729, 
> st_mtime=1607635957 /* 2020-12-10T16:32:37.842047431-0500 */, 
> st_mtime_nsec=842047431, st_ctime=1607636165 /* 
> 2020-12-10T16:36:05.793930344-0500 */, st_ctime_nsec=793930344}) = 0
> stat(".", {st_dev=makedev(0, 0x2f), st_ino=2546749, st_mode=S_IFDIR|0755, 
> st_nlink=3, st_uid=1000, st_gid=1000, st_blksize=4096, st_blocks=0, 
> st_size=80, st_atime=1608079054 /* 2020-12-15T19:37:34.095396729-0500 */, 
> st_atime_nsec=95396729, st_mtime=1607635957 /* 
> 2020-12-10T16:32:37.842047431-0500 */, st_mtime_nsec=842047431, 
> st_ctime=1607636165 /* 2020-12-10T16:36:05.793930344-0500 */, 
> st_ctime_nsec=793930344}) = 0
> stat("config.cache", 0xfff9affc)= -1 ENOENT (No such file or 
> directory)
> +++ exited with 1 +++
> 
> I had a hunch that the mode is most likely the problem. So I tried the 
> following:
> 
> chmod 664 config.cache -> status is still 1
> chmod 646 config.cache -> status is now 0!!
> 
> So somehow the “test” builtin for my bash-mesboot0 doesn’t think that it has 
> owner or group permissions to write to a file that itself created?
> 
> Let me know what you guys think could be the case!
> 
> Cheers,
> Carl Dong
> 
> 






bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2020-12-15 Thread Carl Dong
Hi all,

I think I have a new lead!

Here’s what I did:
1. cd /tmp/guix-build-binutils-mesboot0-2.14.drv-0/binutils-2.14
2. env -i bash --rcfile environment-variables
3. Ran the configure command from the log, just to check:
./configure --disable-nls --disable-shared --disable-werror 
--build=i386-unknown-linux --host=i386-unknown-linux 
--target=i386-unknown-linux --with-sysroot=/ 
--prefix=/gnu/store/jfa9b78rdniyw7qilsmw3bh02x8x68ly-binutils-mesboot0-2.14

Indeed it did still output "not updating unwritable cache ./config.cache”

However, when I tried `test -w config.cache`, there was no status code…

This led me to look at ./configure’s shebang, which is:
/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh

Then I did:
/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh 
-c "test -w config.cache”

Which _did_ exit with status=1 !

So I believe that this is a problem with the “test” builtin in 
/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b

So I ran:
env -i bash --rcfile environment-variables -c 'strace -v -e trace=file 
/gnu/store/m89p469fxwn4hj7an9givd1ry 9vk7j2l-bash-mesboot0-2.05b/bin/sh -c 
"test -w config.cache”'

And the output:
execve("/gnu/store/m89p469fxwn4hj7an9givd1ry9vk7j2l-bash-mesboot0-2.05b/bin/sh",
 ["/gnu/store/m89p469fxwn4hj7an9giv"..., "-c", "test -w config.cache"], 
["PWD=/tmp/guix-build-binutils-mes"..., "SHLVL=0", "_=/usr/bin/strace"]) = 0
[ Process PID=2049037 runs in 32 bit mode. ]
open("/dev/tty", O_RDWR)= 3
stat("/tmp/guix-build-binutils-mesboot0-2.14.drv-0", {st_dev=makedev(0, 0x2f), 
st_ino=2546749, st_mode=S_IFDIR|0755, st_nlink=3, st_uid=1000, st_gid=1000, 
st_blksize=4096, st_blocks=0, st_size=80, st_atime=1608079054 /* 
2020-12-15T19:37:34.095396729-0500 */, st_atime_nsec=95396729, 
st_mtime=1607635957 /* 2020-12-10T16:32:37.842047431-0500 */, 
st_mtime_nsec=842047431, st_ctime=1607636165 /* 
2020-12-10T16:36:05.793930344-0500 */, st_ctime_nsec=793930344}) = 0
stat(".", {st_dev=makedev(0, 0x2f), st_ino=2546749, st_mode=S_IFDIR|0755, 
st_nlink=3, st_uid=1000, st_gid=1000, st_blksize=4096, st_blocks=0, st_size=80, 
st_atime=1608079054 /* 2020-12-15T19:37:34.095396729-0500 */, 
st_atime_nsec=95396729, st_mtime=1607635957 /* 
2020-12-10T16:32:37.842047431-0500 */, st_mtime_nsec=842047431, 
st_ctime=1607636165 /* 2020-12-10T16:36:05.793930344-0500 */, 
st_ctime_nsec=793930344}) = 0
stat("config.cache", 0xfff9affc)= -1 ENOENT (No such file or directory)
+++ exited with 1 +++

I had a hunch that the mode is most likely the problem. So I tried the 
following:

chmod 664 config.cache -> status is still 1
chmod 646 config.cache -> status is now 0!!

So somehow the “test” builtin for my bash-mesboot0 doesn’t think that it has 
owner or group permissions to write to a file that itself created?

Let me know what you guys think could be the case!

Cheers,
Carl Dong




bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2020-12-15 Thread Carl Dong
Hi all,

Let me know if there’s anything at all I can do here to help debug :-)

Cheers,
Carl Dong




bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2020-12-11 Thread Carl Dong
Hi Janneke!

Oh, that’s a very good find! I have no idea why config.cache is not writable… 
This is most strange!

I checked that my mountpoints have enough free space… Not sure what else to 
check?

Looking at `guix describe`, I’m on bf8dfe3df025e4ac80cccb87497b4f072ba10e2a 

Cheers,
Carl Dong

> On Dec 11, 2020, at 1:33 AM, Jan Nieuwenhuizen  wrote:
> 
> Carl Dong writes:
> 
> Hello!
> 
>> Some more information from my debugging:
>> 
>> 1. This error is reproducible even when I specify --cores=1, which is very 
>> strange
>> 2. I have attached the full log to this email
> 
> Diffing this with the build log from
> 
> --8<---cut here---start->8---
> guix build -e '(@@ (gnu packages commencement) binutils-mesboot0)' --log-file
> wget 
> https://ci.guix.gnu.org/log/jfa9b78rdniyw7qilsmw3bh02x8x68ly-binutils-mesboot0-2.14
>  -O jfa9b78rdniyw7qilsmw3bh02x8x68ly-binutils-mesboot0-2.14.gz
> gunzip jfa9b78rdniyw7qilsmw3bh02x8x68ly-binutils-mesboot0-2.14.gz
> diff -u jfa9b78rdniyw7qilsmw3bh02x8x68ly-binutils-mesboot0-2.14  
> 2020-10-10-binutils-mesboot0.log
> [..]
> 
> @@ -5538,16 +5537,16 @@
> checking for i386-unknown-linux-windres... no
> checking for windres... windres
> checking whether to enable maintainer-specific portions of Makefiles... no
> -updating cache ./config.cache
> +not updating unwritable cache ./config.cache
> creating ./config.status
> creating Makefile
> [..]
> @@ -5558,7 +5557,7 @@
> checking whether the C compiler (tcc -D __GLIBC_MINOR__=6 -g ) works... yes
> checking whether the C compiler (tcc -D __GLIBC_MINOR__=6 -g ) is a 
> cross-compiler... no
> checking whether we are using GNU C... no
> -checking for ranlib... (cached) true
> +checking for ranlib... true
> checking for POSIXized ISC... no
> checking for ANSI C header files... yes
> checking for working const... yes
> --8<---cut here---end--->8---
> 
> config values do not get cached (why is config.cache
> unwritable?)...which seems to lead to a misdectected presence of lex:
> 
> --8<---cut here---start->8---
> -@ build-succeeded 
> /gnu/store/bz6xjpzlwf57m4bg3w5ihlq638sscx54-binutils-mesboot0-2.14.drv -
> -checking for flex... (cached) 
> /tmp/guix-build-binutils-mesboot0-2.14.drv-0/binutils-2.14/missing flex
> -checking for flex... (cached) 
> /tmp/guix-build-binutils-mesboot0-2.14.drv-0/binutils-2.14/missing flex
> -checking for yywrap in -ll... (cached) no
> -checking lex output file root... (cached) lex.yy
> [..]
> +checking for flex... no
> +checking for lex... no
> +./configure: line 4417: flex: command not found
> +checking for flex... lex
> +checking for yywrap in -ll... no
> +checking lex output file root... ./configure: line 4505: lex: command not 
> found
> +configure: error: cannot find output from lex; giving up
> +make: *** [configure-ld] Error 1
> --8<---cut here---end--->8---
> 
> What is your build environment/version of guix you're using?  It looks
> like some unreproducible bit is leaking in somewhere??
> 
> Greetings,
> Janneke
> 
> -- 
> Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
> Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com






bug#45165: binutils-mesboot0 fails at configure, cannot find lex

2020-12-10 Thread Carl Dong
derivation 
`/gnu/store/9mf1r6xzp10gcxks4dbr2iiqn2imm1bi-glibc-utf8-locales-2.31.drv': 1 
dependencies couldn't be built
Backtrace:
  11 (primitive-load 
"/gnu/store/1q0np6cpqjj6180qwxglxm2xf7dsvqlx-compute-guix-derivation")
In ice-9/eval.scm:
155:9 10 (_ _)
159:9  9 (_ #(#(#(#(#(#(#(#(#(#(#(#(#(# 
?) ?) ?) ?) ?) ?) ?) ?) ?) ?) ?) ?) ?))
In ./guix/store.scm:
  2049:24  8 (run-with-store # _ 
#:guile-for-build _ #:system _ #:target _)
   1883:8  7 (_ _)
In ./guix/gexp.scm:
   258:18  6 (_ _)
   1123:2  5 (_ _)
982:2  4 (_ _)
843:4  3 (_ _)
In ./guix/store.scm:
  1931:12  2 (_ #)
   1358:5  1 (map/accumulate-builds # _ _)
  1369:15  0 (_ # _ _)

./guix/store.scm:1369:15: Throw to key `srfi-34' with args `(#)'.
guix pull: error: You found a bug: the program 
'/gnu/store/1q0np6cpqjj6180qwxglxm2xf7dsvqlx-compute-guix-derivation'
failed to compute the derivation for Guix (version: 
"64098437081d8752d95ca9d065bf8367bd5ffb08"; system: "x86_64-linux";
host version: "bf8dfe3df025e4ac80cccb87497b4f072ba10e2a"; pull-version: 1).
Please report it by email to .

-

Cheers,
Carl Dong






bug#40459: Non-reproducible behaviour in libtool < 2.2.7b bootstrapped ltmain.sh

2020-04-05 Thread Carl Dong
Hi Guix!

While investigating a libstdc++.a reproducibility issue, I found that libtool 
prior to 74c8993c (first included in version 2.2.7b, link: 
https://git.savannah.gnu.org/cgit/libtool.git/commit/?id=74c8993c178a1386ea5e2363a01d919738402f30)
 did not sort find output. It seems that many packages (including all released 
gcc versions so far) are bootstrapped with a libtool < 2.2.7b.

There are probably many ways to approach this, and I propose that we could 
simply use a somewhat strict regex find and replace on ltmain.sh.

Would love feedback and better ideas!

Cheers,
Carl Dong





bug#32773: [PATCH] Fix clang libstdc++ header location search

2019-11-13 Thread Carl Dong
Hi David!

This patch is most welcome, I’m wondering if you think it’d be possible to add 
more details in the comments for future readers of the code. See below.

> On Nov 13, 2019, at 11:56 AM, David Truby  wrote:
> 
> +;; Make clang look for libstdc++ in the right 
> location
> +(("LibStdCXXIncludePathCandidates\\[\\] = \\{")
> + (string-append 
> "LibStdCXXIncludePathCandidates[] = { \"" gcc "/include/c++\","))
I believe the reason why clang’s “auto detection” fails here is because it 
expects the /include dir containing c++ to be under the same directory as 
LibDir, correct? Perhaps we can note that since in Guix, we put the libs in a 
separate output, we invalidate the aforementioned expectation, and this is why 
we need to manually add this path.

Another point: Perhaps we can add the path on a separate line instead of it 
being on the same line?

Otherwise, looks great!

Cheers,
Carl Dong





bug#37999: clang fails to pickup/supply startfiles to ld

2019-11-04 Thread Carl Dong
Thank you so much Mathieu for the patch!

Marius: I believe this will only cause a rebuild for clang and not llvm, which 
means that it only affects ~30 packages. Perhaps this can go in master? Would 
love to know your thoughts.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"

‐‐‐ Original Message ‐‐‐
On Thursday, October 31, 2019 10:57 PM, Marius Bakke  
wrote:

> Mathieu Othacehe m.othac...@gmail.com writes:
>
> > From f126146880e3904f39728313dfc10288b51fc23a Mon Sep 17 00:00:00 2001
> > From: Mathieu Othacehe m.othac...@gmail.com
> > Date: Thu, 31 Oct 2019 15:05:54 +0100
> > Subject: [PATCH] gnu: clang-from-llvm: Fix set-glibc-file-names phase.
> >
> > -   gnu/packages/llvm.scm (clang-from-llvm)[arguments]: Turn case on major
> > version into a cond, so that newer versions of clang have the same 
> > behaviour as
> > version 6 and 7.
> >
>
> LGTM. It will have to wait for the next 'staging' window, though.







bug#38061: [minimal reproducer included] libstdc++ mutex references cause clang builds to fail

2019-11-04 Thread Carl Dong
Hi all,

I'm having another issue with the clang toolchain right now and I've come up
with a minimal reproducer:

Given the following manifest.scm:
--8<---cut here---start->8---
(use-modules (gnu packages gcc)
 (gnu packages linux)
 (gnu packages llvm))

(packages->manifest
 (list clang
   (make-libstdc++ gcc)
   linux-libre-headers))
--8<---cut here---end--->8---

And test.cpp:
--8<---cut here---start->8---
#include 
#include 

typedef std::once_flag once_flag;

int
main()
{
std::cout << "Hello, World\n";
}
--8<---cut here---end--->8---

If you invoke:
--8<---cut here---start->8---
guix environment --manifest=manifest.scm --container --pure -- clang++ test.cpp
--8<---cut here---end--->8---

The output looks like:
--8<---cut here---start->8---
test.cpp:4:14: error: no type named 'once_flag' in namespace 'std'
typedef std::once_flag once_flag;
~^
1 error generated.
--8<---cut here---end--->8---

In my original non-minimal build, other things in  also cause compilation
errors, which seem odd to me.

Any help would be very much appreciated!

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"





bug#37876: Regression in MAKE-GCC-TOOLCHAIN after core-updates merge

2019-10-23 Thread Carl Dong
Hi all,

Looking closer at the code, the regression seems to be in MAKE-GCC-LIBC in (gnu
packages base), rather than in MAKE-GCC-TOOLCHAIN.

New minimal reproducer:

--8<---cut here---start->8---
(use-modules (gnu packages commencement)
 (gnu packages gcc)
 (gnu packages base))

(make-gcc-libc gcc glibc-2.28)
--8<---cut here---end--->8---

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"





bug#37876: Regression in MAKE-GCC-TOOLCHAIN after core-updates merge

2019-10-22 Thread Carl Dong
Hi Ludo’,

> Does it work with ‘glibc-2.28’?

Curiously... glibc-2.28 also doesn't work:
https://www.dropbox.com/s/ly7u4sf0umgz509/gcc-glibc-2.28-7.4.0.drv.log?dl=1

> We’re not building any such toolchain in CI but we probably should…

I think so too, happy to contribute a patch for the CI after we figure this out.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"





bug#37876: Regression in MAKE-GCC-TOOLCHAIN after core-updates merge

2019-10-22 Thread Carl Dong
Hi all,

I believe there's been a recent regression w/re MAKE-GCC-TOOLCHAIN. I'm unable
to guix build the following minimal reproducer:

--8<---cut here---start->8---
(use-modules (gnu packages commencement)
 (gnu packages gcc)
 (gnu packages base))

(make-gcc-toolchain gcc glibc-2.27)
--8<---cut here---end--->8---

My guix describe output:
Generation 33   Oct 22 2019 15:07:03(current)
  guix f5d6c88
repository URL: https://git.savannah.gnu.org/git/guix.git
commit: f5d6c88d0f5e1556295c1a19c46ddfcb7a23107f

The build failure logs can be found here:
https://www.dropbox.com/s/y7sg3m786ziiwvb/gcc-glibc-2.27-7.4.0.drv.log?dl=0

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"







bug#30756: GCC >= 6 '-isystem' and C_INCLUDE_PATH behavior changed, breaking #include_next

2019-10-22 Thread Carl Dong
Hi all,

I ran into a similar problem in 37870, whereby the mingw-w64 search path was
placed at the top of the search paths, making include_next very grumpy.

Mark: I'm curious as to why -idirafter was not a viable solution to the problem,
as it seems like the perfect way to add a path to the bottom of the list of
search paths. Perhaps there's something more fundamental that I'm missing?

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"







bug#37801: Possible insight into issue #30756 #include_next bug

2019-10-18 Thread Carl Dong
Hi Danny,

Thank you so much for the links and quotes, I'm definitely going to refer back
to them in the future and you probably saved me dozens of hours :-)

> I think so. I can't figure out why Guix is not just setting up CROSS_CPATH
> on its own in the first place.
> gnu/packages/cross-base.scm DOES have a search-path specification for
> CROSS_CPATH.

Perhaps Ludovic can confirm this, but I believe the reason why Guix is not
setting up CROSS_CPATH is because it doesn't _know_ it's cross-compiling. Guix
only sets up CROSS_CPATH when we invoke on the command line with
--target=x86_64-w64-mingw32 or something like that. I'm not exactly sure what a
clean solution to this is, but I'd hope we can find one in the future.

I'm thinking that the reason why my final solution involved explicitly setting
the exact ordering in my CROSS_CPLUS_INCLUDE_PATH was because mingw-w64 is
considered to be libc and that makes it special somehow. Not 100% sure though.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"





bug#36777: Guix Inferiors: Curious incorrect derivation output bug

2019-07-30 Thread Carl Dong
All,

Yes! The patch actually fixed the problem when applied on top of 
5cf4b26d52bcea382d98fb4becce89be9ee37b55! I was also able to come up with a 
minimal reproducing manifest:

```
(use-modules (guix inferior) (guix channels)
 (srfi srfi-1))   ;for 'first'

(define channels
  (list (channel
 (name 'guix)
 (url "https://git.savannah.gnu.org/git/guix.git;)
 (commit
  "6869b6635afd93872b8f0d9f2db0db4c0d765a86"

(define inferior
  ;; An inferior representing the above revision.
  (inferior-for-channels channels))

(packages->manifest
  (map (lambda (x)
 (first (lookup-inferior-packages inferior x)))
   '("gzip")))
```

It seems that the `gzip` package is what's causing this.

Not sure what the next steps are for this, but I'd very much like to understand 
where this went wrong. Perhaps we could write tests for this so it doesn't 
happen in the future for releases.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"





bug#36777: Guix Inferiors: Curious incorrect derivation output bug

2019-07-26 Thread Carl Dong
Hi all,

I did some more digging, and have included a git-bisect log, the -info-dir.drv,
and -info-dir-builder here:

https://gist.github.com/dongcarl/0a305badf20c9b5cfae738147ca416af

Please let me know if I can provide more information.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"

‐‐‐ Original Message ‐‐‐
On Friday, July 26, 2019 7:50 AM, Ludovic Courtès  wrote:

> Hello Carl,
>
> Carl Dong cont...@carldong.me skribis:
>
> > I have my manifest.scm here:
> > https://github.com/dongcarl/bitcoin/blob/2019-06-guix-channels-and-inferiors/contrib/guix/manifest.scm,
> > and it references the aforementioned Guix channel.
>
> This one appears to work for me (I interrupted it before it was done
> compiling all the toolchains, though.)
>
> > What I expect to happen is that now when I change my default profile's Guix
> > version by 'guix pull'ing, it won't affect the environment that's generated 
> > by
> > the manifest.scm. I've tested this with differing versions of Guix as my 
> > default
> > profile, and this seems to work with 
> > 7304d5623ab5cc35289cb1535cbd0d8a37691fac
> > and 7f1c69f5d32bee6b8b6b902a9ce445e04aa9d07d being my default profile. 
> > However,
> > I tried an older version b6dc08393e6a8313b88ce422fc3c1e4e9c0efc6f, and got 
> > the
> > following error:
>
> When I put b6dc08393e6a8313b88ce422fc3c1e4e9c0efc6f in .guix-channel and
> use that as my channel, it also works fine (well, I commented out the
> toolchains as well.)
>
> > guix environment: error: derivation 
> > `/gnu/store/r641vpqc9rfjhljf7rzfzwmkmpa642ls-info-dir.drv' has incorrect 
> > output `/gnu/store/q9hkdidycz3wq28xxgjq47bzx5s39k52-info-dir', should be 
> > `/gnu/store/z5hh2nl0h58b9f6hdxfwm00gjyxfcc3n-info-dir'
> >
>
> That definitely looks like a bug.
>
> Could you send the faulty info-dir.drv file?
>
> Thanks,
> Ludo’.







bug#36777: Guix Inferiors: Curious incorrect derivation output bug

2019-07-23 Thread Carl Dong
Hi all,

I've been working on improving the Guix build support on Bitcoin Core so that
it'll be ready to use for official releases.

One of the things that I wanted to do was to use a combination of channels and
inferiors to have reproducible builds across time. I have most of it set up, but
am running into some trouble. Here are the details:

I have a Guix channel set up at https://github.com/dongcarl/bitcoin-guix, where
I pin the Guix version to 6869b6635afd93872b8f0d9f2db0db4c0d765a86 in the
.guix-channel, and declare all my packages in packages.scm.

I have my manifest.scm here:
https://github.com/dongcarl/bitcoin/blob/2019-06-guix-channels-and-inferiors/contrib/guix/manifest.scm,
and it references the aforementioned Guix channel.

What I expect to happen is that now when I change my default profile's Guix
version by 'guix pull'ing, it won't affect the environment that's generated by
the manifest.scm. I've tested this with differing versions of Guix as my default
profile, and this seems to work with 7304d5623ab5cc35289cb1535cbd0d8a37691fac
and 7f1c69f5d32bee6b8b6b902a9ce445e04aa9d07d being my default profile. However,
I tried an older version b6dc08393e6a8313b88ce422fc3c1e4e9c0efc6f, and got the
following error:

```
guix environment: error: derivation 
`/gnu/store/r641vpqc9rfjhljf7rzfzwmkmpa642ls-info-dir.drv' has incorrect output 
`/gnu/store/q9hkdidycz3wq28xxgjq47bzx5s39k52-info-dir', should be 
`/gnu/store/z5hh2nl0h58b9f6hdxfwm00gjyxfcc3n-info-dir'
```

I remember my previous attempts at integrating channels and inferiors into our
workflow yielded a similar result, so I would like to know if this is a bug, and
how I might go about fixing this so that I can feel comfortable using inferiors
for our builds.

Nevertheless, thank you all for your hard work. The fact that we have inferiors
at all is marvelous!

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"





bug#36238: Problems cross-compiling on core-updates

2019-06-16 Thread Carl Dong
Unfortunately b1593c1c4fd8f4fc6df4c43cab51334426e3aa76 still doesn't work, I've
attached the log.


Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"


r7dqzwhva6pgi4g3hasvbj3yf9wgq4-bison-3.4.1.drv.bz2
Description: BZip2 compressed data


bug#36238: Problems cross-compiling on core-updates

2019-06-15 Thread Carl Dong
Hi all,

I noticed that cross-compiling isn't working on the core-updates branch. I'm on
commit cfd4e4d06e3cda0f3eed8d6b9277ce53e55404b8 and all you need to reproduce is
to invoke:

./pre-inst-env guix build --target=aarch64-linux-gnu coreutils

Attached is the build log.

Cheers,
Carl Dong
cont...@carldong.me
"I fight for the users"


riwrnisxp5skbmi8alq3m611g46lid-bison-3.4.1.drv.bz2
Description: BZip2 compressed data