Re: branch master updated: services: Add transmission-daemon service.

2021-02-23 Thread Simon South
Apologies for the delayed response; Gnus directed this away from my
inbox and I am just seeing it now. (I've fixed my gnus.el.)

Ludovic Courtès  writes:
> IWBN to have a system test for this service, under (gnu tests …), to
> test at least basic functionality.
> Do you think it would be possible?

Yes, definitely; that's still on my list. I've been busy with another
project but will take another look at this tomorrow and see if I can get
something put together quickly.

-- 
Simon South
si...@simonsouth.net



Re: Getting the Guix Build Coordinator agent working on the Hurd

2021-02-23 Thread Christopher Baines

Ludovic Courtès  writes:

>> The second issue is that I'm not sure capturing the build time
>> GUILE_LOAD_COMPILED_PATH doesn't seem to work, at least file says that
>> the .go files this contains are built for a 64-bit architecture. I
>> worked around this by constructing the GUILE_LOAD_COMPILED_PATH from the
>> inputs I knew should be on it. Maybe it should always have been done
>> this way, any ideas?
>
> Instead of capturing the build-time ‘GUILE_LOAD_COMPILED_PATH’, which
> doesn’t contain the target .go files, you should explicitly list the
> inputs as is done in the ‘guix’ package for example.  That’ll ensure the
> binary refers to the cross-compiled .go files.

This has now happened [1], so the guix-build-coordinator package should
now cross compile in a useable way.

1: 
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=eec127822a74c6a1a6100b07d94c8fb275d571bf

>> There's also one problem probably within the Guix Build Coordinator
>> itself, after doing a few builds, it will just stop. I've only seen this
>> behaviour on the Hurd, but I'm unsure how to debug it, any suggestions?
>> My only idea is add more logging.
>
> No idea, but I guess that could just be a crash.  Can you still log in
> afterwards?

Not through SSH at least.

Someone on IRC mentioned they'd had issues running Hurd VMs without
swap, so getting swap in childhurds might be something to try. I started
looking at this [2].

2: https://issues.guix.gnu.org/46726

> BTW, note that builds on GNU/Hurd are currently not isolated, and thus
> it’s the wild west in terms of reproducibility:
>
>   https://issues.guix.gnu.org/43857
>
> There are open questions as to what to include in the build environment:
>
>   https://guix.gnu.org/en/blog/2020/childhurds-and-substitutes/

Isolation would be nice of course, although I'm not sure how much this
will affect reproducibility, unless things are poking around in the
store directly.


signature.asc
Description: PGP signature


Re: TOCTTOU race

2021-02-23 Thread Ludovic Courtès
Hi,

Maxime Devos  skribis:

> Is all addressed now? (Aside from the TOCTTOU.)

Yes, thank you!

Ludo’.



Re: Will 2021 be the year of build systems on gexps?

2021-02-23 Thread Ludovic Courtès
Hi!

Ludovic Courtès  skribis:

> I’ve made progress identifying and mitigating what seems to be the main
> cause of this (the fact that it’s possible to ungexp a list and that
> list will be scanned in its entirety in search of file-like
> objects—convenient but expensive) but as you can see, there’s still a
> lot to do.

I cherry-picked to ‘master’ the gexp optimizations I made on
‘wip-build-systems-gexp’.  The good news is that it pays off on system
compilations, going from (commit 3c548c3e0eade12d3e86b1201dbd95863ca64ea7):

--8<---cut here---start->8---
$ GUIX_PROFILING="gc object-cache" ./pre-inst-env guix system build -d 
--no-grafts gnu/system/examples/desktop.tmpl
/gnu/store/g6kd2blajq6yja80516m85zv07d4ysb3-system.drv
Store object cache:
  fresh caches: 2
  lookups:  119282
  hits: 116225 (97.4%)
Garbage collection statistics:
  heap size:119.43 MiB
  allocated:649.07 MiB
  GC times: 26
  time spent in GC: 2.15 seconds (37% of user time)
--8<---cut here---end--->8---

to (commit 0a912b3a434c9ff9515f9036feae4d3a7075fb2f):

--8<---cut here---start->8---
$ GUIX_PROFILING="gc object-cache" ./pre-inst-env guix system build -d 
--no-grafts gnu/system/examples/desktop.tmpl
/gnu/store/f63c8rk8rwrfr5cl4s74hnx25l3z1hrp-system.drv
Store object cache:
  fresh caches: 2
  lookups:  119285
  hits: 116227 (97.4%)
  cache size:3058 entries
Garbage collection statistics:
  heap size:111.43 MiB
  allocated:608.01 MiB
  GC times: 25
  time spent in GC: 2.00 seconds (37% of user time)
--8<---cut here---end--->8---

Reduced heap allocations (-6%), reduce heap size (-7%), and reduced run
time (ditto).  Getting better!

Ludo’.



Rust packages and performance impact on Guix

2021-02-23 Thread Ludovic Courtès
Hi!

Ludovic Courtès  skribis:

> but on ‘wip-build-systems-gexp’ I get:
>
> $ GUIX_PROFILING=gc time ./pre-inst-env guix build qemu -d --no-grafts
> /gnu/store/5n44l8cmrmkr747nsqbxpm4764jdsl3l-qemu-5.1.0.drv
> Garbage collection statistics:
>   heap size:80.52 MiB
>   allocated:249.89 MiB
>   GC times: 16
>   time spent in GC: 0.75 seconds (34% of user time)
> 2.22user 0.13system 0:02.06elapsed 114%CPU (0avgtext+0avgdata 
> 243532maxresident)k
> 0inputs+0outputs (0major+34304minor)pagefaults 0swaps
>
> In short, 30% more garbage allocated and an 8% slowdown.

In the meantime, librsvg on core-updates switched to the version that
depends on Rust.  As a result, the above command, on core-updates, went
to ~2.25s on my laptop (+10–20%!).

Would be nice to investigate.  One issue is that ‘cargo-build-system’
traverses packages.  The ‘crate-closure’ call in there certainly adds a
fair bit of overhead.  Could we avoid it?

Thanks,
Ludo’.



Re: Upgrading SIP.

2021-02-23 Thread Brendan Tildesley
> On 02/22/2021 6:50 PM Ludovic Courtès  wrote:
> 
>  
> Hi,
> 
> Brendan Tildesley  skribis:
> 
> > Building python-pyqtwebengine, it is unable to find the .sip files needed 
> > since it only searches one global path:
> >
> > openat(AT_FDCWD, "QtCore/QtCoremod.sip", O_RDONLY) = -1 ENOENT (No such 
> > file or directory)
> > openat(AT_FDCWD, 
> > "/tmp/guix-build-python-pyqtwebengine-5.15.2.drv-0/PyQtWebEngine-5.15.2/sip/QtWebEngineCore/QtCore/QtCoremod.sip",
> >  O_RDONLY) = -1 ENOENT (No such file or directory)
> > openat(AT_FDCWD, 
> > "/tmp/guix-build-python-pyqtwebengine-5.15.2.drv-0/PyQtWebEngine-5.15.2/sip/QtCore/QtCoremod.sip",
> >  O_RDONLY) = -1 ENOENT (No such file or directory)
> > openat(AT_FDCWD, 
> > "/tmp/guix-build-python-pyqtwebengine-5.15.2.drv-0/PyQtWebEngine-5.15.2/build/bindings/QtCore/QtCoremod.sip",
> >  O_RDONLY) = -1 ENOENT (No such file or directory)
> > openat(AT_FDCWD, 
> > "/lib/python3.8/site-packages/PyQt5/PyQt5/bindings/QtCore/QtCoremod.sip", 
> > O_RDONLY) = -1 ENOENT (No such file or directory)
> > write(2, ".sip-build-real: Unable to find "..., 61.sip-build-real: Unable 
> > to find file "QtCore/QtCoremod.sip"
> 
> Do you know how Qt (or whatever component is involved) searches for .sip
> files?
> 
> Most of the time, there’s a “search path” typically associated with an
> environment variable that we need to set accordingly (like PYTHONPATH,
> GUILE_LOAD_PATH, etc.).
> 
> Sometimes, that mechanism doesn’t exist upstream so we end up patching
> the software to add it.  This is what was done with OBS for instance,
> and that patch is now upstream.
> 
> HTH!
> 
> Ludo’.

https://www.riverbankcomputing.com/hg/sip/file/tip/sipbuild/builder.py#l273

There is a sip_include_dirs, but the bit that looks for bindings from other 
packages does so by looking in the target directory specified with --target-dir:

# Add any bindings from previously installed packages.
sip_include_dirs.append(
os.path.join(project.target_dir,
project.get_bindings_dir()))

Besides that it looks in current build directory. 

Currently I'm looking at updating sip and going back to the configure.py script 
to see if i can get that working first.