Re: opendir* missing

2017-06-18 Thread Ricardo Wurmus

I cannot reproduce this on my GuixSD machine; I see the error only on my
workstation with Guix on top of Fedora.

-- 
Ricardo

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




Re: ld-wrapper and funny bytes in LIBRARY_PATH

2017-06-18 Thread Danny Milosavljevic
Hi Ludo,

On Sun, 18 Jun 2017 00:21:28 +0200
l...@gnu.org (Ludovic Courtès) wrote:

> Danny Milosavljevic  skribis:
> 
> > so I'm trying to enable Rust tests and one of their tests does the 
> > following (paraphrased) in order to exercise the non-UTF8 linker case 
> > (which they want to succeed):
> >
> > --
> > bad_dir := zzz$$'\xff'
> >
> > all:
> > mkdir $(bad_dir)
> > cp ... $(bad_dir)/liblibrary.a
> > LIBRARY_PATH=$(bad_dir) rustc exec.rs
> > --
> >
> > This fails for us.  
> 
> So they expect ‘ld’ to properly deal with UTF-8 file names, right?

I think they want ld to properly deal with random file names.  0xFF is not even 
valid UTF-8.

See also:
- https://github.com/rust-lang/rust/issues/29122 (initial bug report)
- https://github.com/rust-lang/rust/pull/29134 (pull request)
- 
https://github.com/wthrowe/rust/commit/19664fdf8d1b8fc5fd3b359c2440625b2b4d8cec 
(test)

> This is another instance of the file name decoding problem with Guile.
> As you know, Guile 2.0/2.2 decodes file names according to the current
> locale, and ‘ld-wrapper’ runs Guile.

Sigh...

Well, I've posted a patch to guix-patches that disables the Rust test in 
question.  Can't do much else than that.

The other 15444 Rust tests work now :)



Re: Performance on NFS

2017-06-18 Thread Ricardo Wurmus

Ludovic Courtès  writes:

[…]

> So the problem is probably not NFS in this case but rather RPC
> performance.
>
> However, I can’t help with this until you drop ‘guixr’ and use
> GUIX_DAEMON_SOCKET=guix:// instead.  Hint hint.  ;-)

FWIW: I’m using GUIX_DAEMON_SOCKET=guix:// since a few days.  It allows
for a simpler “guixr”, which now only prints extra info and refuses to
run on the login node.  It’s really nice!

I haven’t noticed any difference in performance, but I certainly could
test patches.

Performance differs a lot for different packages.  “guix build bwa” (~ 7
seconds) is a lot faster than “guix build python2-numpy” (> 40 seconds),
for example.

--
Ricardo

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




Re: [PATCH] Prototype register-path

2017-06-18 Thread Caleb Ristvedt
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

I figured out why I was getting those two test failures after looking
more closely at tests/store.log: when I installed GuixSD, I did so
directly from another hard drive on the same system (having read in the
past about issues with multi-booting, I figured I'd just decide which to
boot to by selecting hard drives). I had previously cloned guix on the
Ubuntu hard drive, and figured I'd just mount it and copy it over. It
turns out that re-running make didn't alter the tests quite as much as I
thought it would, and the old path was stuck in some of them (on GuixSD
there is no code-downloads folder, it's just straight in
Programming/). After a git clean, though, the tests all pass.

> Though something went from with your email client.  :-)

Aye, turns out M-x epa-mail-sign doesn't work well with attachments. I
posted another message that should be signed correctly, as well as this
one.

> What are your thoughts on the next steps?

Well, I took a look at libstore/build.cc, and that is a lot of code. I
hope I can get away with only reading as much as is necessary to clarify
details. To that end, I'd like to make sure that my high-level
understanding of the build process is accurate.

- - A derivation is a node in a (acyclic?) graph of "what depends on what" or,
  alternately put, what is input to what.

- - Derivations can depend on other derivations or plain files (can those files 
be
  directories?), where "plain files" cannot depend on anything else.

- - "Building" a derivation involves first ensuring that all of its inputs are
  "built" (in the case of inputs that are derivations, this means ensuring its
  output exists as a store item, and if not, producing it by this same
  process. In the case of plain file inputs, this means just ensuring that they
  exist as a store item), and then preparing a build environment. The "builder"
  script is then executed in a chroot rooted under the build tree. After it has
  completed, the output (where is it put during the build process?) from
  building the derivation is placed in the store (and registered).

- - "preparing a build environment" involves first creating a directory in which
  the build will be run, then populating it with certain expected files and
  directories (as detailed in 2.4.1 of the manual). Also, the store items
  produced from building the inputs need to somehow be made available (is there
  a gnu/store/ under the build tree? I feel like I don't quite understand where
  everything goes in the build tree). Also, set any environment variables
  associated with the derivation.

Assuming I've got the gist of it sort of right, that leaves one more question:
how are hashes for the paths computed? It's not sha256 like the database hashes,
it seems to be 160 bits in size. How are all the inputs hashed together? Are all
the inputs put in one big directory and that is hashed in nar form, or what? And
what about store items that don't have any inputs (for example, something placed
in there with add-text-to-store)? I suppose in that case they are their own
input, perhaps?

Some of those answers might be in the manual, but I didn't manage to
find them.
-BEGIN PGP SIGNATURE-

iQEzBAEBCAAdFiEEdNapMPRLm4SepVYGwWaqSV9/GJwFAllGRk0ACgkQwWaqSV9/
GJw9TQf/W8ewHEFzwTssGhMGW/pGsSvUMnzdQNmx31Y1HLMpUbhBazbIUa57pz5g
ZfDbUIRnKBYlCPi5X+8Om8fzMjWpUixYeyv/Clk3sRvbcQhod0cejbRIC0PAiTN0
mVlu4tUWJlEXekcG7OqhdZ8AZXJ53qOkNMEHR3h91PCJOZj2fOVwzlC5kp7gUfcM
C9a/rgCb6ZG6dXQNH3Q0qI38+akDg3tbD0BDk97yhHCBSVitwbJd9vTiEl3QhAPP
WFlZjmZGFpfruZiuRDyO8pOFC4tfdsEy/wv4spjq63ZgBNqLQsI9Y0JfXJWM/fEH
d+KsI54ix/yDhZnbZofLaogAH3Fo8w==
=Ukhf
-END PGP SIGNATURE-



Re: Upgrading packages with substitutes only (bug #26608)

2017-06-18 Thread Ricardo Wurmus

Ludovic Courtès  writes:

> BTW, should --only-substitutes filter out packages without a substitute,
> or should it simply stop and report the list of missing substitutes
> (after which the user could use --do-not-upgrade)?

In my opinion “--only-substitutes” should stop and report a list.
If it continued without complaining there could be problems:

* partial upgrades could leave the profile in an unusable state

* an attacker could use this to trick a user into thinking that they
  have all available updates

On the other hand, it would make “--only-substitutes” less usable,
because to actually perform work one would have to deal with the failure
case.

I suppose it could download the substitutes but not build a new profile
and report an error at that point.

--
Ricardo

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




‘core-updates’ building!

2017-06-18 Thread Ludovic Courtès
Hello Guix!

I went ahead and started an evaluation of the full package set for
‘core-updates’:

  https://hydra.gnu.org/jobset/gnu/core-updates

I think we should focus on fixing remaining build issues now.

Thanks,
Ludo’.



Re: ld-wrapper and funny bytes in LIBRARY_PATH

2017-06-18 Thread Ludovic Courtès
Hi Danny,

Danny Milosavljevic  skribis:

> On Sun, 18 Jun 2017 00:21:28 +0200
> l...@gnu.org (Ludovic Courtès) wrote:
>
>> Danny Milosavljevic  skribis:
>> 
>> > so I'm trying to enable Rust tests and one of their tests does the 
>> > following (paraphrased) in order to exercise the non-UTF8 linker case 
>> > (which they want to succeed):
>> >
>> > --
>> > bad_dir := zzz$$'\xff'
>> >
>> > all:
>> > mkdir $(bad_dir)
>> >cp ... $(bad_dir)/liblibrary.a
>> >LIBRARY_PATH=$(bad_dir) rustc exec.rs
>> > --
>> >
>> > This fails for us.  
>> 
>> So they expect ‘ld’ to properly deal with UTF-8 file names, right?
>
> I think they want ld to properly deal with random file names.  0xFF is not 
> even valid UTF-8.
>
> See also:
> - https://github.com/rust-lang/rust/issues/29122 (initial bug report)
> - https://github.com/rust-lang/rust/pull/29134 (pull request)
> - 
> https://github.com/wthrowe/rust/commit/19664fdf8d1b8fc5fd3b359c2440625b2b4d8cec
>  (test)

OK.

>> This is another instance of the file name decoding problem with Guile.
>> As you know, Guile 2.0/2.2 decodes file names according to the current
>> locale, and ‘ld-wrapper’ runs Guile.
>
> Sigh...

Yeah.  :-/

> Well, I've posted a patch to guix-patches that disables the Rust test in 
> question.  Can't do much else than that.
>
> The other 15444 Rust tests work now :)

Awesome, thank you!

Ludo’.

PS: Your email address has been bouncing lately.



Differences between container used by "guix build" and "guix environment -C -N"

2017-06-18 Thread Danny Milosavljevic
Hi,

I'm trying to track down the test_process_mask problem in Guix when trying to 
test rustc.

For that I did:

(apply attached patch)
$ guix build --keep-failed rustc # will fail
$ cd /tmp/guix-build-rustc-1.16.0.drv-0
$ guix environment -C -N rustc
$ bash
$ source environment-variables
$ cd rustc-1.16.0-src
$ ./x86_64-unknown-linux-gnu/stage2/test/stdtest-x86_64-unknown-linux-gnu 2>&1 
|grep test_process_mask

will not fail.

Why does it fail in "guix build", then?


Q
Description: Binary data


Re: ‘core-updates’ building!

2017-06-18 Thread Leo Famulari
On Sun, Jun 18, 2017 at 11:49:06AM +0200, Ludovic Courtès wrote:
> Hello Guix!
> 
> I went ahead and started an evaluation of the full package set for
> ‘core-updates’:
> 
>   https://hydra.gnu.org/jobset/gnu/core-updates
> 
> I think we should focus on fixing remaining build issues now.

Okay! I won't be able to help as much as usual in the next week.
Hopefully afterwards, I'll have more time.

Good luck!


signature.asc
Description: PGP signature


Re: Upgrading packages with substitutes only (bug #26608)

2017-06-18 Thread Leo Famulari
On Sun, Jun 18, 2017 at 11:38:45AM +0200, Ricardo Wurmus wrote:
> 
> Ludovic Courtès  writes:
> 
> > BTW, should --only-substitutes filter out packages without a substitute,
> > or should it simply stop and report the list of missing substitutes
> > (after which the user could use --do-not-upgrade)?

I like making it return a list on stdout so it can be composed as
suggested.

> In my opinion “--only-substitutes” should stop and report a list.
> If it continued without complaining there could be problems:
> 
> * partial upgrades could leave the profile in an unusable state
> 
> * an attacker could use this to trick a user into thinking that they
>   have all available updates
> 
> On the other hand, it would make “--only-substitutes” less usable,
> because to actually perform work one would have to deal with the failure
> case.
> 
> I suppose it could download the substitutes but not build a new profile
> and report an error at that point.

Perhaps there could be an additional flag --partial-upgrade to make it
build a new profile.

I understand why people want --only-substitutes but I'm a bit wary of it
for the reasons you gave, and I think we should solve their complaint by
improving our build infrastructure.


signature.asc
Description: PGP signature


fails make on core-updates

2017-06-18 Thread rennes

Hello,

On core-updates branch, after running:
git pull
./bootstrap
./configure --localstatedir=/var
make

error appears:

  CXX  nix/libstore/libstore_a-sqlite.o
  AR   libstore.a
ar: `u' modifier ignored since `D' is the default (see `U')
  CXX  nix/nix-daemon/guix_daemon-nix-daemon.o
  CXX  nix/nix-daemon/guix_daemon-guix-daemon.o
  CXXLDguix-daemon
nix/nix-daemon/guix_daemon-nix-daemon.o: In function  
`nix::FormatOrString::FormatOrString(boost::basic_format const&)':
/home/jin/gits/guix/./nix/libutil/types.hh:36: undefined reference to  
`boost::basic_format::str[abi:cxx11]() const'

nix/nix-daemon/guix_daemon-nix-daemon.o: In function `daemonLoop()':
/home/jin/gits/guix/nix/nix-daemon/nix-daemon.cc:950: undefined  
reference to  
`boost::basic_format::basic_format(std::__cxx11::basic_stringstd::char_traits, std::allocator > const&)'
nix/nix-daemon/guix_daemon-nix-daemon.o: In function  
`nix::FormatOrString::FormatOrString(boost::basic_format const&)':
/home/jin/gits/guix/./nix/libutil/types.hh:36: undefined reference to  
`boost::basic_format::str[abi:cxx11]() const'
/home/jin/gits/guix/./nix/libutil/types.hh:36: undefined reference to  
`boost::basic_format::str[abi:cxx11]() const'
/home/jin/gits/guix/./nix/libutil/types.hh:36: undefined reference to  
`boost::basic_format::str[abi:cxx11]() const'
/home/jin/gits/guix/./nix/libutil/types.hh:36: undefined reference to  
`boost::basic_format::str[abi:cxx11]() const'
/home/jin/gits/guix/./nix/libutil/types.hh:36: undefined reference to  
`boost::basic_format::str[abi:cxx11]() const'
nix/nix-daemon/guix_daemon-nix-daemon.o:/home/jin/gits/guix/./nix/libutil/types.hh:36:  
more undefined references to `boost::basic_format::str[abi:cxx11]()  
const' follow

collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:3162: guix-daemon] Error 1
make[2]: Leaving directory '/home/jin/gits/guix'
make[1]: *** [Makefile:4308: all-recursive] Error 1
make[1]: Leaving directory '/home/jin/gits/guix'
make: *** [Makefile:2898: all] Error 2


Re: Small package re-organization proposal

2017-06-18 Thread Kei Kebreau
Leo Famulari  writes:

> On Fri, Jun 16, 2017 at 10:29:09AM +0200, Ricardo Wurmus wrote:
>> 
>> Kei Kebreau  writes:
>> 
>> > I think it may be a good idea to consolidate spelling and grammar
>> > packages into language.scm (or a new spelling.scm file if the former is
>> > not appropriate). This would include packages such as aspell and its
>> > dictionaries, hunspell, enchant, and any others that I might be missing.
>> >
>> > Any thoughts on this?
>> 
>> I have no preference here.  I think we should avoid moving around
>> modules between releases, because it needlessly breaks third-party
>> repositories (used with GUIX_PACKAGE_PATH).
>
> Also, I think we should do this kind of reorganization between
> core-updates cycles. Otherwise the merges tend to be trickier.

Okay. Since this is mostly a cosmetic fix (at least that's what it seems
to me), I'm fine with letting it go. It's good to know when these sorts
of things are most appropriate within our development cycle.


signature.asc
Description: PGP signature


Re: Upgrading packages with substitutes only (bug #26608)

2017-06-18 Thread Timothy Sample
Leo Famulari  writes:

> On Sun, Jun 18, 2017 at 11:38:45AM +0200, Ricardo Wurmus wrote:
>> 
>> Ludovic Courtès  writes:
>> 
>> > BTW, should --only-substitutes filter out packages without a substitute,
>> > or should it simply stop and report the list of missing substitutes
>> > (after which the user could use --do-not-upgrade)?
>
> I like making it return a list on stdout so it can be composed as
> suggested.

While the user experience would suffer a bit, it’s no real hardship to
type

$ guix package \
--do-not-upgrade $(guix package --only-substitutes -u) \
-u

This is definitely possible.

>> In my opinion “--only-substitutes” should stop and report a list.
>> If it continued without complaining there could be problems:
>> 
>> * partial upgrades could leave the profile in an unusable state

Maybe I don’t understand Guix that well yet, but I don’t think this is
possible. At least I don’t understand how it would happen. Under the
hood, the “--only-substitutes” flag would basically just be an
intelligent “--do-not-upgrade” flag. Can I ruin my profile by misusing
“--do-not-upgrade”?

>> * an attacker could use this to trick a user into thinking that they
>>   have all available updates

I can always run

$ guix package -n -u

to learn what packages are out of date. (Except if I get frustrated by
the fact that Guix is building a package to check if is different from
an installed package and mash C-c C-c. :)) Also, my original
implementation
added a “the following packages will be excluded” line, that let the
user know which packages are being omitted from the upgrade. This will
be harder to do with Ludo’s suggestion, though.

>> On the other hand, it would make “--only-substitutes” less usable,
>> because to actually perform work one would have to deal with the failure
>> case.
>> 
>> I suppose it could download the substitutes but not build a new profile
>> and report an error at that point.
>
> Perhaps there could be an additional flag --partial-upgrade to make it
> build a new profile.
>
> I understand why people want --only-substitutes but I'm a bit wary of it
> for the reasons you gave, and I think we should solve their complaint by
> improving our build infrastructure.

I agree wholeheartedly with improving the build infrastructure! I’m just
less certain about how I could help with that…. In the short term, this
is my way of working around the infrastructure issues.


-- Tim



Re: New git signing key for Eric Bavier?

2017-06-18 Thread Eric Bavier
On Sun, 18 Jun 2017 01:30:07 -0400
Mark H Weaver  wrote:

> Hi Eric,
> 
> bav...@member.fsf.org (Eric Bavier) writes:
> > bavier pushed a commit to branch master
> > in repository guix.
> >
> > commit d56c55fffbe962cf7c44030ae4eac53ffa1e1f85
> > Author: Eric Bavier 
> > Date:   Thu Jun 15 00:37:17 2017 -0500
> >
> > gnu: tomb: Upgrade to 2.4.  
> 
> This commit, and another recent commit (e0c9530) of yours, were signed
> using a key that's different from the one you've previously used to sign
> commits, and different from the key you have registered on Savannah.
> 
> Can you please confirm that A0C5E3522EF8EF5C64CDB7F0FD73CAC719D32566 is
> your new key,

That is indeed my new key.

> sign it with your old key if possible, and upload this new
> key to Savannah?

I've just put the new key on Savannah.  It should be signed with my old
key.

Thanks for saying something.  I'm still learning things about gpg.

`~Eric


pgpYYURcrJOCT.pgp
Description: OpenPGP digital signature


Re: New git signing key for Jan Nieuwenhuizen?

2017-06-18 Thread Christopher Allan Webber
Jan Nieuwenhuizen writes:

> Mark H Weaver writes:
>
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA256
>
>>> commit ebfb71d45615698040818a68b7dc34996ff4c046
>>> gpg: Signature made Fri 16 Jun 2017 07:22:49 AM EDT
>>> gpg:using RSA key DB34CB51D25C9408156FCDD6A12F87978D701B99
>>> gpg: Can't check signature: No public key
>>> Author: Jan Nieuwenhuizen 
>>> Date:   Thu Jun 15 19:22:00 2017 +0200
>>>
>>> tests: Allow setting of qemu memory-size for system tests.
>>>
>>> * gnu/system/vm.scm (common-qemu-options): Remove hardcoded "-m 256".
>>> (system-qemu-image/shared-store-script): New keyword argument: 
>>> #:memory-size.
>>
>> This commit was signed using a different key than the one you've been
>> using for your other commits, and different from the one you have
>> registered on Savannah.
>>
>> Is DB34CB51D25C9408156FCDD6A12F87978D701B99 your key?
>
> Yes, that's my new key.  Oops.  I have updated my key on savannah.
> janneke
> -BEGIN PGP SIGNATURE-
>
> iQIzBAEBCAAdFiEE2zTLUdJclAgVb83WoS+Hl41wG5kFAllGFv4ACgkQoS+Hl41w
> G5mcHg/+Pd3AvBLSmoPUrXrhFcFrhQyVdq/d6f2R0JiSkrPy402P003Bp6pzEdD8
> OxQzT/ahk7XYRrD0KywCzn6Vd3b7xd+pnBzAJ3TV7lzyXKg97qm6CAAMEdaLNd/3
> 18dKOUmGI5oTRAvTc7Ubdwc4E1qmI4ckBT3QW2LBDOzPaMY6wiLgIA8vETN2bq+S
> vIMN9XDQRbtdwwA+k2fXQUB8b5N+bWdc1/YH5DmuqhKUiaHVCHHBc2K5L8YEydPr
> 0o+MrbwpmlxXjmKQTYFX8L5Wc1DARWECbPIa70TB53uWIxSQdfQQha/Oqd1fMYU0
> H9jPBF0PJHjJMyrTwmvMrZFC9Xi4u3UnKdCOPOCz2DXTttOGsGRsP16so34e9UzR
> DyLD7kR9K/m5djxSYLcIr8mMAfPJ0g/mk1Jyj5Yv9MZVCmFggcfeamirgcvnClxe
> Nhkfyf7SPeq/qpKIVpIOabthtuuoYiH2imnlLCL+TS6qGZYtBkhxlKUjRYMFWm+F
> bTwo3c+FdwOeyWdKn4a6QwIzfaJ70o1EeIYS4MUCyB1TKzcsJWE/t5R0SOqz1SX5
> ofLsn8amwE0dnoCKQhX92sse+sq4ITj3oD5YpehBl4pvzeIs+7LpLHJSVDSFRfwT
> N1Xy/PscHohFgcbfD8dZn/xtxRTN8dz1ysrhwLRBl8zc/tRKYPA=
> =xmQy
> -END PGP SIGNATURE-

Though I didn't confirm in-person, Janneke and I have had other
interactions using this key to make me reasonably confident it's their
key.



signature.asc
Description: PGP signature


Re: Upgrading packages with substitutes only (bug #26608)

2017-06-18 Thread Ricardo Wurmus

Timothy Sample  writes:

>>> In my opinion “--only-substitutes” should stop and report a list.
>>> If it continued without complaining there could be problems:
>>>
>>> * partial upgrades could leave the profile in an unusable state
>
> Maybe I don’t understand Guix that well yet, but I don’t think this is
> possible. At least I don’t understand how it would happen. Under the
> hood, the “--only-substitutes” flag would basically just be an
> intelligent “--do-not-upgrade” flag. Can I ruin my profile by misusing
> “--do-not-upgrade”?

There are many cases where partial profile upgrades are okay, especially
if software is independent.  Problems usually arise when you have things
like Python modules in your profile.  Upgrading some Python modules but
not others might lead to problems at runtime.

Arguably, one should be using manifests anyway when consistency is
required.

>>> * an attacker could use this to trick a user into thinking that they
>>>   have all available updates
>
> I can always run
>
> $ guix package -n -u
>
> to learn what packages are out of date. (Except if I get frustrated by
> the fact that Guix is building a package to check if is different from
> an installed package and mash C-c C-c. :))
^^^

Oh, another “M-x shell” user :)

--
Ricardo

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




Re: [OFF-TOPIC] Anyone providing gratis mailing list hosting for any small group?

2017-06-18 Thread Jorge Morais Neto
Hello.  I am the person Adonay is aiding.

On 14 June 2017 at 09:50, Adonay Felipe Nogueira  wrote:
> NOTE: I'm Cc'ing the person I'm aiding, but I don't know if the person is
> subscribed to the list, so I think you should send a wide reply
I have just subscribed to guix-devel.

> However, I'm not the one directly interested in the service, instead,
> I'm aiding the person on contacting you because I don't know if he
> speaks/writes in English yet
I speak English; in fact, I am better at English than at Spanish.

> As part of my attempt to aid the person, I ask if there is someone
> here hosting a mailing list service, preferably gratis, for a small
> group of people and temporary use?
It can also be paid, as long as it is inexpensive.

> If I read correctly, the mailing list is for a religious class/course.
One list would be for school classes; another would be for a Catholic
prayer group (which currently chats online via a WhatsApp group).  And
today I realized I need a third list, for discussing management of the
family's farm; currently we use a Telegram group for that.

-- 
- I am Brazilian.  I hope my English is correct and I welcome feedback
- Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z
- Free (as in free speech) software for Android: https://f-droid.org/



Re: zipbomb handling should not be done in url-fetch/zipbomb

2017-06-18 Thread Eric Bavier


On June 17, 2017 3:13:33 PM CDT, l...@gnu.org wrote:
>Arun Isaac  skribis:
>
>> * Proposal
>>
>> zip bomb (zip archives without a top level directory) handling should
>> not be done in `url-fetch/zipbomb'. It should be implemented as a
>> boolean argument to the `unpack' phase.
>
>I guess the Boolean argument would determine whether to do (chdir
>(first-subdirectory ".")), right?
>
>Unfortunately that’s not enough for the cases where an origin has
>patches or a snippet, because that code also assumes there’s only one
>subdirectory (see ‘patch-and-repack’ in (guix packages)).
>
>Perhaps the right fix would be to fix ‘patch-and-repack’ somehow.

I think this would be preferable. Since it means that users of 'guix build -S' 
would still get "unbombed" sources.

`~Eric

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.



Re: [PATCH] Prototype register-path

2017-06-18 Thread Chris Marusich
Hi Caleb,

I'm sure Ludo may have more to say, but I think I can help you with a
few of your questions.

Caleb Ristvedt  writes:

>> Though something went from with your email client.  :-)
>
> Aye, turns out M-x epa-mail-sign doesn't work well with attachments. I
> posted another message that should be signed correctly, as well as this
> one.

Looks like your latest email was signed correctly.  I see that it was
signed using your Savannah key, which has the following fingerprint:

74D6 A930 F44B 9B84 9EA5  5606 C166 AA49 5F7F 189C

> - A derivation is a node in a (acyclic?) graph of "what depends on what" or,
>   alternately put, what is input to what.

I don't think there's a simple answer for the question of "what is a
derivation"?  I'll explain what I know, and hopefully it'll help you.

No, derivations cannot depend on one another [1].  I believe it is
correct to think of a derivation as a node in an acyclic graph of
inter-dependent software components; that is one way to think about
derivations.  Perhaps Ludo can say more about that.

The word "derivation" is a bit overloaded.  Fundamentally (and vaguely),
it means "a component build action, which *derives* the component from
its inputs" [2].

More specifically, there are various interpretations of the word
"derivation", depending on the context.  For example, there are structs
in the Nix C++ source code that represent derivations [3].  In the Nix
expression language, derivations are represented as attribute sets [4].
There are also "store derivations", which are files in the store that
precisely encode the build actions that will be executed when the
derivation is built [5].

Some of this carries over to Guix.  The general meaning of the word
"derivation" appears to be the same as in Nix: a derivation basically
takes inputs and produces an output.  Guix also uses "store derivations"
because we use (a modified version of) the Nix daemon.  Note that the
Guix manual sometimes uses the word "derivation" to refer to "store
derivations", which can be confusing.

As you probably know, Guix eschews the Nix expression language in favor
of Guile for composing components.  Therefore, Guix has defined
abstractions in Guile to represent derivations [6].  Guix has also
defined additional abstractions to represent things like packages [7],
which are higher level abstractions than derivations.  There are a lot
of abstractions like this in Guix, and they interact with each other in
various ways.  To get an idea of what I mean, you can look at the
'(guix) Invoking guix graph' section in the Guix manual.  Derivations
are a general concept taken from Nix, but as far as I know, things like
bags and packages are Guix-specific concepts.

> - "Building" a derivation involves first ensuring that all of its inputs are
>   "built" (in the case of inputs that are derivations, this means ensuring its
>   output exists as a store item, and if not, producing it by this same
>   process. In the case of plain file inputs, this means just ensuring that 
> they
>   exist as a store item), and then preparing a build environment. The 
> "builder"
>   script is then executed in a chroot rooted under the build tree. After it 
> has
>   completed, the output (where is it put during the build process?) from
>   building the derivation is placed in the store (and registered).

Note that sometimes the word "build" is used to refer to the act of
creating a derivation, but not executing its build actions [8].

The process you've described sounds basically right to me; Ludo probably
knows more.  The Nix thesis might be out of date by now, but it
describes (described?) these kinds of things in pretty good detail [9].
It also describes the invariants that must be upheld by the entire
process.

> - "preparing a build environment" involves first creating a directory
>in which
>   the build will be run, then populating it with certain expected files and
>   directories (as detailed in 2.4.1 of the manual). Also, the store items
>   produced from building the inputs need to somehow be made available (is 
> there
>   a gnu/store/ under the build tree? I feel like I don't quite understand 
> where
>   everything goes in the build tree). Also, set any environment variables
>   associated with the derivation.

I believe that inputs and outputs are, from the a derivation's builder's
perspective, just paths in the store which can be accessed via
environment variables that Nix sets up during the build.  I think this
is the same in Guix as in Nix.  However, in Guix, I believe there are
additional ways to refer to inputs when defining a builder, e.g. by
using G-Expressions, which hide details like this from the user so that
the user can reason about builds in terms of higher-level abstractions.

As for how the store items produced from building the inputs are "made
available," my understanding is that the builder just needs to write
files to the special "output" path, which (I think) is in the store.
That spec

Re: Upgrading packages with substitutes only (bug #26608)

2017-06-18 Thread Carlo Zancanaro

On Sun, Jun 18 2017, Timothy Sample wrote:
> While the user experience would suffer a bit, it’s no real hardship to
> type
>
> $ guix package \
> --do-not-upgrade $(guix package --only-substitutes -u) \
> -u
>
> This is definitely possible.

Just checking: is the proposal that --only-substitutes /always/ prints a
list of packages without substitutes? My understanding was that it would
only print the list if there were packages without substitutes (thus
making the above potentially incorrect/wasteful if everything has a
substitute, because you shouldn't unconditionally re-run `guix
package`). I don't know if we should conflate "upgrade my profile" with
"print a list of packages without substitutes". Those aren't the same
requests.

I'm more in favour of it continuing and building the new profile, but
printing a list of packages which didn't have substitutes. If the user
wants to roll-back the upgrade then they can easily do so, but they
asked for it to be upgraded and we can still do that.

Carlo


signature.asc
Description: PGP signature


Re: ‘core-updates’ building!

2017-06-18 Thread Mark H Weaver
l...@gnu.org (Ludovic Courtès) writes:

> I went ahead and started an evaluation of the full package set for
> ‘core-updates’:
>
>   https://hydra.gnu.org/jobset/gnu/core-updates
>
> I think we should focus on fixing remaining build issues now.

Almost(?) all of the builds on armhf failed because of an early
guile-2.2.2 build timing out after 1 hour of silence.

I set the 'max-silent-time' property to 6 hours in the package bound to
'guile-2.2' in (gnu packages guile), but maybe the same property needs
to be set elsewhere, e.g. in 'guile-2.2/fixed' and maybe some other
places?

   Mark



Re: ‘core-updates’ building!

2017-06-18 Thread Mark H Weaver
Mark H Weaver  writes:

> l...@gnu.org (Ludovic Courtès) writes:
>
>> I went ahead and started an evaluation of the full package set for
>> ‘core-updates’:
>>
>>   https://hydra.gnu.org/jobset/gnu/core-updates
>>
>> I think we should focus on fixing remaining build issues now.
>
> Almost(?) all of the builds on armhf failed because of an early
> guile-2.2.2 build timing out after 1 hour of silence.
>
> I set the 'max-silent-time' property to 6 hours in the package bound to
> 'guile-2.2' in (gnu packages guile), but maybe the same property needs
> to be set elsewhere, e.g. in 'guile-2.2/fixed' and maybe some other
> places?

For now, in order to get the ball rolling, I started a manual build
(i.e. from the command line) of the timed-out derivation on Hydra,
with the --max-silent-time and --timeout options.  After that's
completed, we can restart the dependency-failed jobs.

  Mark