bug#29642: guix 0.14.0 cannot use HTTPS with guile 2.0

2017-12-10 Thread 藍挺瑋
This problem happens on Fedora 27, which uses Guile 2.0.14.

$ guix package -i hello
The following package will be installed:
   hello2.10/gnu/store/pa4w02b89d6sq33840dxfl5vbqbwz5iy-hello-2.10

substitute: Backtrace:
substitute: In ice-9/boot-9.scm:
substitute:  160: 9 [catch #t # ...]
substitute: In unknown file:
substitute:?: 8 [apply-smob/1 #]
substitute: In ice-9/boot-9.scm:
substitute:   66: 7 [call-with-prompt prompt0 ...]
substitute: In ice-9/eval.scm:
substitute:  432: 6 [eval # #]
substitute: In ice-9/boot-9.scm:
substitute: 2412: 5 [save-module-excursion #]
substitute: 4089: 4 [#]
substitute: 1734: 3 [%start-stack load-stack ...]
substitute: 1739: 2 [#]
substitute: In unknown file:
substitute:?: 1 [primitive-load "/usr/bin/guix"]
substitute: In guix/ui.scm:
substitute: 1452: 0 [run-guix-command substitute "--query"]
substitute:
substitute: guix/ui.scm:1452:12: In procedure run-guix-command:
substitute: guix/ui.scm:1452:12: In procedure setvbuf: Wrong type
argument in position 1 (expecting port that supports 'setvbuf'):
#
guix package: error: corrupt input while restoring archive from socket

If I revert commit 866f37f, this problem can be avoided. The commit
(download: Improve efficiency of 'write-request' over TLS.) added the
following code to guix/build/download.scm:

(cond-expand
  (guile-2.0 #f)
  (else (setvbuf record 'line)))

The info page of guile doesn't list 'guile-2.0' feature. I know there is
a feature called 'guile-2.2', but I cannot find 'guile-2.0'.





bug#29642: guix 0.14.0 cannot use HTTPS with guile 2.0

2017-12-10 Thread ng0
藍挺瑋 transcribed 1.7K bytes:
> This problem happens on Fedora 27, which uses Guile 2.0.14.

Do we still support building with guile 2.0? That's a
maintenance version of Guile, 2.2 is the new stable.

> $ guix package -i hello
> The following package will be installed:
>hello  2.10/gnu/store/pa4w02b89d6sq33840dxfl5vbqbwz5iy-hello-2.10
> 
> substitute: Backtrace:
> substitute: In ice-9/boot-9.scm:
> substitute:  160: 9 [catch #t # ...]
> substitute: In unknown file:
> substitute:?: 8 [apply-smob/1 #]
> substitute: In ice-9/boot-9.scm:
> substitute:   66: 7 [call-with-prompt prompt0 ...]
> substitute: In ice-9/eval.scm:
> substitute:  432: 6 [eval # #]
> substitute: In ice-9/boot-9.scm:
> substitute: 2412: 5 [save-module-excursion # ice-9/boot-9.scm:4084:3 ()>]
> substitute: 4089: 4 [# ()>]
> substitute: 1734: 3 [%start-stack load-stack ...]
> substitute: 1739: 2 [#]
> substitute: In unknown file:
> substitute:?: 1 [primitive-load "/usr/bin/guix"]
> substitute: In guix/ui.scm:
> substitute: 1452: 0 [run-guix-command substitute "--query"]
> substitute:
> substitute: guix/ui.scm:1452:12: In procedure run-guix-command:
> substitute: guix/ui.scm:1452:12: In procedure setvbuf: Wrong type
> argument in position 1 (expecting port that supports 'setvbuf'):
> #
> guix package: error: corrupt input while restoring archive from socket
> 
> If I revert commit 866f37f, this problem can be avoided. The commit
> (download: Improve efficiency of 'write-request' over TLS.) added the
> following code to guix/build/download.scm:
> 
> (cond-expand
>   (guile-2.0 #f)
>   (else (setvbuf record 'line)))
> 
> The info page of guile doesn't list 'guile-2.0' feature. I know there is
> a feature called 'guile-2.2', but I cannot find 'guile-2.0'.
> 
> 
> 
> 

-- 
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://c.n0.is/ng0_pubkeys/tree/keys
  WWW: https://n0.is


signature.asc
Description: PGP signature


bug#29644: gcc-objc is unusable without its 'gcc' executable

2017-12-10 Thread 宋文武
Hello, unlike fortran program files which can be compiled using the
command 'gfortran' (in addition to 'gcc'), there is no other command for
Objective-C program files, and run 'gcc -c x.m' using the 'gcc' package
will just complain "Objective-C compiler not installed on this system"
due to it lacking objc support.

I have to revert commit 82f145ef7a to get a objc enabled 'gcc' in the
'gcc-objc' package.

IIUC, the purpose of that commit is to avoid file collisions between
'gfortran' and the 'gcc' package used in the 'gnu-build-system', which
will broke the compiler in some way.  So I think we really want to only
have one gcc package in an environment...

How about enable all languages (except 'brig' which I never heard of)
for the gcc-final and the 'gcc' (in gcc.scm) packages?  In this way, I
think 'gnu-build-system' and 'gcc-toolchain' will able to compile
Fortran, Objective-C, Go, etc. out of the box.





bug#29644: gcc-objc is unusable without its 'gcc' executable

2017-12-10 Thread Ricardo Wurmus

宋文武  writes:

> Hello, unlike fortran program files which can be compiled using the
> command 'gfortran' (in addition to 'gcc'), there is no other command for
> Objective-C program files, and run 'gcc -c x.m' using the 'gcc' package
> will just complain "Objective-C compiler not installed on this system"
> due to it lacking objc support.
>
> I have to revert commit 82f145ef7a to get a objc enabled 'gcc' in the
> 'gcc-objc' package.

In May 2016 I first noticed this problem with GCC and investigated
solutions.

The fix here is to patch “lang-spec.h”, so that it does not limit the
gcc executable to the configured set of languages.  This way we will be
able to use the same gcc executable with different languages.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net







bug#29255: "Profile contains conflicting entries" could be more helpful

2017-12-10 Thread Ludovic Courtès
Hello!

l...@gnu.org (Ludovic Courtès) skribis:

> Ricardo Wurmus  skribis:
>
>> In this case it is not entirely clear that the existing python-requests
>> package in the profile is “old”.  The version looks the same and the
>> hash is opaque.
>>
>> Would it be possible to record something about the Guix version that was
>> used to install a package?  Then we could say:
>>
>>   An older variant of python-requests is installed in this profile
>>   (propagated from package “foo-bar”) and conflicts with a newer variant
>>   (propagated from package “python-twine”).
>
> When the version numbers are the same, we cannot tell whether a variant
> is “older”, we can just tell that it’s different.  Also, I find it
> useful to see the propagation stack as is currently the case.
>
> With the patch below, I get:
>
> $ ./pre-inst-env guix package -p foo -i python@2 python
> The following packages will be installed:
>python 2.7.13  
> /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
>python 3.5.3   /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
>
> guix package: error: profile contains conflicting entries for python:out
> guix package: error:   first entry: python@2.7.13 
> /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
> guix package: error:   second entry: python@3.5.3 
> /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
> hint: You cannot have two different versions or variants of `python' in the 
> same profile.
>
>
> and:
>
> $ ./pre-inst-env guix package -i guile-cairo -p foo --no-grafts
> The following package will be installed:
>guile-cairo1.4.1   
> /gnu/store/dsdbp9sqla6zz2skljlcr5zfjyzvargf-guile-cairo-1.4.1
>
> guix package: error: profile contains conflicting entries for cairo:out
> guix package: error:   first entry: cairo@1.14.10 
> /gnu/store/c4vl4hw5jccg0b23sfvs0kdnfdbxdlgm-cairo-1.14.10
> guix package: error:... propagated from guile-cairo@1.4.1
> guix package: error:   second entry: cairo@1.14.10 
> /gnu/store/nwxv9s2q8pi0m6gn6fyidpj8442dwp6f-cairo-1.14.10
> guix package: error:... propagated from cairomm@1.12.2
> hint: Try upgrading both `guile-cairo' and `cairomm', or remove one of them 
> from the profile.

I’ve pushed the patch as commit
3b80b81358b3861ca3794105c8eb4395df97846b.  Hopefully these hints help
users get on the right track, and we can always adjust them.

Thanks,
Ludo’.





bug#29255: "Profile contains conflicting entries" could be more helpful

2017-12-10 Thread Ben Sturmfels
On 11/12/17 09:47, Ludovic Courtès wrote:

>> When the version numbers are the same, we cannot tell whether a variant
>> is “older”, we can just tell that it’s different.  Also, I find it
>> useful to see the propagation stack as is currently the case.
>>
>> With the patch below, I get:
>>
>> $ ./pre-inst-env guix package -p foo -i python@2 python
>> The following packages will be installed:
>>python2.7.13  
>> /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
>>python3.5.3   /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
>>
>> guix package: error: profile contains conflicting entries for python:out
>> guix package: error:   first entry: python@2.7.13 
>> /gnu/store/vysfxizaddh1q8s5qjgbdkzxx0585dzi-python-2.7.13
>> guix package: error:   second entry: python@3.5.3 
>> /gnu/store/m4rdgmvdqcxs2zhv42idnz1s1w391i8j-python-3.5.3
>> hint: You cannot have two different versions or variants of `python' in the 
>> same profile.
>>
>>
>> and:
>>
>> $ ./pre-inst-env guix package -i guile-cairo -p foo --no-grafts
>> The following package will be installed:
>>guile-cairo   1.4.1   
>> /gnu/store/dsdbp9sqla6zz2skljlcr5zfjyzvargf-guile-cairo-1.4.1
>>
>> guix package: error: profile contains conflicting entries for cairo:out
>> guix package: error:   first entry: cairo@1.14.10 
>> /gnu/store/c4vl4hw5jccg0b23sfvs0kdnfdbxdlgm-cairo-1.14.10
>> guix package: error:... propagated from guile-cairo@1.4.1
>> guix package: error:   second entry: cairo@1.14.10 
>> /gnu/store/nwxv9s2q8pi0m6gn6fyidpj8442dwp6f-cairo-1.14.10
>> guix package: error:... propagated from cairomm@1.12.2
>> hint: Try upgrading both `guile-cairo' and `cairomm', or remove one of them 
>> from the profile.
> 
> I’ve pushed the patch as commit
> 3b80b81358b3861ca3794105c8eb4395df97846b.  Hopefully these hints help
> users get on the right track, and we can always adjust them.

That's Ludo, that's great!



signature.asc
Description: OpenPGP digital signature


bug#29654: Manual database index.db embeds timestamps

2017-12-10 Thread Ruud van Asseldonk
The manual database file index.db embeds mtimes of the files it refers
to, making it not reproducible. This is an issue for building
reproducible profiles (as produced by `guix pack` for example).

The number that are not reproducible can be seen with `accessdb
index.db`, which will output something like

$version$ -> "2.5.0"
acme-client -> "- 1 1 1512941854 498178709 B - - gz secure ACME client"

And when built again on a clean installation:

$version$ -> "2.5.0"
acme-client -> "- 1 1 1512942998 296814690 B - - gz secure ACME client"

I asked the man-db maintainer about this, who replied:

> Those are timestamps, seconds and nanoseconds respectively.  You should
> get reproducible output if you make sure the mtimes of manual pages are
> reproducible.  (man-db needs to keep track of mtimes so that it knows
> when a database is out of date.)  If the manual pages come straight from
> the source package, this should be straightforward; if they're
> generated, you'll need some strategy to ensure that they're generated
> with a reproducible mtime.

Now the strange thing is, when I check the profile directory, both the
man file symlinks, and the files they refer to, have the mtime set to
epoch. I suspected that the mtime would be reset after the manual
database had already been built, but inserting calls to utime after
`(symlink manpage dest-file)` in the `manual-database` procedure, did
not resolve the issue.

The mtime that ends up in index.db does correspond to a recent time, and
for larger databases the timestamps can differ among entries, but so far
I have only seen them differ in the nanoseconds. The seconds timestamp
looks like the timestamp at which the database was generated. So either
the mtime of the input files is not epoch when man-db runs, or man-db is
somehow setting the mtime of every entry to the current time as it adds
them.

I looked at the man-db source and I did not find anything that looked
like it was storing current times as mtimes in the database, although I
did not look very carefully. I suspect that the mtimes of the files to
scan are actually wrong. It should be possible to confirm this by
introducing a delay when creating the man files, and when making the
symlinks, and seeing if the delay shows up in the database.

Help with diagnosing this further, or ideas about what could be going on
and how to resolve it, would be appreciated. I am willing to work on a
fix, but I am not very familiar with Guix yet.

Kind regards,

Ruud van Asseldonk





bug#29655: Elixir build has an undeterministic build error

2017-12-10 Thread nee
Hello, this has already mentioned in another bug report
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28034#20

The built of Elixir sometimes fails while compiling
'lib/elixir/lib/system.ex' with the error message:

> ** (exit) :epipe

See appended build log. I found the only other mention of the error on
the guix mailing list when elixir was first added:

https://lists.gnu.org/archive/html/guix-devel/2016-07/msg01436.html
https://lists.gnu.org/archive/html/guix-devel/2016-08/msg00114.html
https://lists.gnu.org/archive/html/guix-devel/2016-07/msg01540.html

It was suspected to be related to high memory usage / getting into swap.
I ran the build on two computers with 6GB and 16GB ram and still got it
on both, so I don't think it's ram related.

* What it might be:
One single time I got a different error message for the same file which
mentioned git (see detailed error attachment).
The file lib/elixir/lib/system.ex has a macro that calls git. Also this
bug seems to appear nowhere outside of guix, so it might be related.
starting phase `build'
==> elixir (compile)
Compiled src/elixir_parser.yrl
Compiled src/elixir_sup.erl
Compiled src/elixir_def.erl
Compiled src/elixir_quote.erl
Compiled src/elixir_erl_clauses.erl
Compiled src/elixir_utils.erl
Compiled src/elixir_env.erl
Compiled src/elixir_overridable.erl
Compiled src/elixir_erl_pass.erl
Compiled src/elixir_interpolation.erl
Compiled src/elixir_aliases.erl
Compiled src/elixir_erl_compiler.erl
Compiled src/elixir_code_server.erl
Compiled src/elixir_lexical.erl
Compiled src/elixir_clauses.erl
Compiled src/elixir.erl
Compiled src/elixir_rewrite.erl
Compiled src/elixir_dispatch.erl
Compiled src/elixir_compiler.erl
Compiled src/elixir_erl_for.erl
Compiled src/elixir_bitstring.erl
Compiled src/elixir_bootstrap.erl
Compiled src/elixir_expand.erl
Compiled src/elixir_erl_try.erl
Compiled src/elixir_import.erl
Compiled src/elixir_map.erl
Compiled src/elixir_tokenizer.erl
Compiled src/elixir_erl_var.erl
Compiled src/elixir_erl.erl
Compiled src/elixir_errors.erl
Compiled src/elixir_module.erl
Compiled src/elixir_fn.erl
Compiled src/elixir_config.erl
Compiled src/elixir_locals.erl
Compiled src/elixir_parser.erl
==> bootstrap (compile)
Compiled lib/elixir/lib/kernel.ex
Compiled lib/elixir/lib/macro/env.ex
Compiled lib/elixir/lib/keyword.ex
Compiled lib/elixir/lib/module.ex
Compiled lib/elixir/lib/list.ex
Compiled lib/elixir/lib/macro.ex
Compiled lib/elixir/lib/code.ex
Compiled lib/elixir/lib/module/locals_tracker.ex
Compiled lib/elixir/lib/kernel/typespec.ex
Compiled lib/elixir/lib/kernel/utils.ex
Compiled lib/elixir/lib/behaviour.ex
warning: erlang:get_stacktrace/0 used in the wrong part of 'try' expression. (Use it in the block between 'catch' and 'end'.)
  /tmp/guix-build-elixir-1.5.2.drv-0/elixir-1.5.2/lib/elixir/lib/exception.ex:1150

Compiled lib/elixir/lib/exception.ex
Compiled lib/elixir/lib/protocol.ex
Compiled lib/elixir/lib/stream/reducers.ex
Compiled lib/elixir/lib/enum.ex
Compiled lib/elixir/lib/inspect/algebra.ex
Compiled lib/elixir/lib/inspect.ex
Compiled lib/elixir/lib/range.ex
Compiled lib/elixir/lib/regex.ex
Compiled lib/elixir/lib/string.ex
Compiled lib/elixir/lib/string/chars.ex
Compiled lib/elixir/lib/io.ex
Compiled lib/elixir/lib/path.ex
Compiled lib/elixir/lib/file.ex
Compiled lib/elixir/lib/system.ex
Compiled lib/elixir/lib/kernel/cli.ex
Compiled lib/elixir/lib/kernel/error_handler.ex
Compiled lib/elixir/lib/kernel/parallel_compiler.ex
Compiled lib/elixir/lib/kernel/lexical_tracker.ex
==> elixir (compile)
warning: behaviour Enumerable is undefined
  lib/calendar/date_range.ex:21

warning: behaviour Inspect is undefined
  lib/calendar/date_range.ex:81

warning: behaviour String.Chars is undefined
  lib/calendar/date.ex:582

warning: behaviour Inspect is undefined
  lib/calendar/date.ex:588

warning: behaviour String.Chars is undefined
  lib/calendar/time.ex:476

warning: behaviour Inspect is undefined
  lib/calendar/time.ex:482

warning: behaviour String.Chars is undefined
  lib/calendar/datetime.ex:473

warning: behaviour Inspect is undefined
  lib/calendar/datetime.ex:482

warning: behaviour String.Chars is undefined
  lib/calendar/naive_datetime.ex:677

warning: behaviour Inspect is undefined
  lib/calendar/naive_datetime.ex:684

warning: erlang:get_stacktrace/0 used in the wrong part of 'try' expression. (Use it in the block between 'catch' and 'end'.)
  lib/exception.ex:1150

warning: use Dict is deprecated, use the Map module for working with maps or the Keyword module for working with keyword lists
  lib/hash_dict.ex:11


== Compilation error in file lib/system.ex ==
** (exit) :epipe

make: *** [Makefile:81: lib/elixir/ebin/Elixir.Kernel.beam] Error 1
phase `build' failed after 67.5 seconds
builder for `/gnu/store/s9d2icsm6aniyhpscgfphb1z879b4wbc-elixir-1.5.2.drv' failed with exit code 1
@ build-failed /gnu/store/s9d2icsm6aniyhpscgfphb1z879b4wbc-elixir-1.5.2.drv - 1 builder for `/gnu/store/s9d2icsm6aniyhpscgfphb1z879b4wbc-elixir-1.5.2.drv' fa