Re: powerpc64[le]-linux port progress

2020-02-23 Thread Jan Nieuwenhuizen
dftxbs3e writes:

Hi!

> On 2/22/20 1:34 PM, Jan Nieuwenhuizen wrote:
>> Have you tried building static gawk standalone and check it for that
>> bash?  You could do something like
>>
>>grep -ao '/gnu/store/e*-bash' $(./pre-inst-env guix build -e '(@@ (gnu 
>> packages make-bootstrap) %static-binaries)')
>>
>> On my x86_64-linux system, I get
>>
>>/gnu/store/-bash
> Yes! I used the strings utility. I get two references to bash-static in
> the store with 'e'.

Ah, "good".

> Speaking of which, do you know if it's possible
> to be spawned into an environment where %static-binaries's gawk package
> (and only that one) sources are extracted, patched and configured? So
> that I can investigate the inclusion of bash-static comfortably.

You can either do something like

./pre-inst-env guix build -e '(@@ (gnu packages bootstrap) 
%static-binaries)' --keep-failed --no-offload

and edit the #:builder to return #f, or copy %static-binaries into a
%static-gawk where you strip out other stuff.

>> For the new Scheme-only bootstrap, I solved a similar problem for
>> %bootstrap-mes by replacing the /gnu/store/eee* store-references with
>> actual bootstrap file names; see `%bootstrap-mes-rewired' in
>> core-updates 
>> http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm?h=core-updates#n251
>>
> I hear, however that smells like a hack to me, I'd like to avoid
> resorting to such unless absolutely necessary.

I'm not entirely sure which is better; but we chose this in order not
having to touch the bootstrap binary for mes.  Also, I don't know "where
you are"; when trying to get "it to work", cutting corners initially
works for me :-)

> How come it's not
> possible to find where that bash-static reference is being inserted?

Computers are hard?  It's probably easy to find when you see it...

Greetings,
janneke

-- 
Jan Nieuwenhuizen  | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



Migrating packages to Guile 3.0

2020-02-23 Thread Ludovic Courtès
Hello Guix!

I’ve pushed a ‘wip-guile3.0-packages’ branch, which renames “guile-next”
to “guile”, renames “guile3.0-” packages to just “guile-”, and changes a
few more occurrences of ‘guile-2.2’ to ‘guile-3.0’ in package inputs.
It should start building here:

  https://ci.guix.gnu.org/jobset/wip-guile3.0-packages

We’re talking about the subset of packages known to support Guile 3.0,
which includes all the dependencies (and dependents, hopefully) of Guix,
plus a bunch of other packages.

Initially I thought about applying the patch to ‘master’.  However, it’s
not that simple: we’d also need to have all the modules for Shepherd
compiled for Guile 3.0, same for mcron, and same everywhere we use
‘with-extensions’ (for ‘guix pack’, (gnu system vm), etc.).

Thus, I’m inclined to do the big switch in ‘core-updates’, where we
could directly change ‘default-guile’, and thus everything would switch
to Guile 3.0 at once.  (In the meantime, the branch above allows us to
test the packaging bits.)

Thoughts?

Thing is, it’d be great to have Guile 3.0.1, which could happen anytime
now but just needs synchronization.

Ludo’.



Thoughts on making Guix even better

2020-02-23 Thread Leo Prikler
Hello Raghav!
> Lets assume we have 5 packages in profile. Package 1, 3 and 5 has
> non-critical 
> updates. Package 4 has non-critical update but it breaks. Package 2
> has 
> critical update (CVE). We can either upgrade all packages except
> package 4 (or) 
> we can upgrade only package 2.
> 
> Lets assume we have 5 services/packages in system. Package/Service 1,
> 3 and 5 
> has non-critical updates. Package/Service 4 has non-critical update
> but it 
> breaks. Package/Service 2 has critical update (CVE). Now, when we
> reconfigure 
> the system, all packages/services will upgrade, package/service 4
> will break 
> the system. We can of course do '--roll-back' and take the system to
> previous 
> working state. But that will leave the system with critical
> vulnerability. 
> Therefore, we cannot reconfigure package/service 2 or any other parts
> of the 
> system, until the package/service 4 is fixed. This window/gap puts
> guix system 
> at great risk and instability.
This is not as much a guix package vs. guix system issue as it is an
issue of explicit manifests against implicit ones.  If you use guix
package with manifests and without inferiors, you will have the same
problem.  Likewise, you can use inferiors in your config.scm to
mitigate some of those issues.  At least it works for the kernel, but
it should in theory also work for packages.

The problem with inferiors as a solution to this problem is, that it
doesn't address the issues of services.  You'd have to use the current
service structure with an inferior-package, which is not always what
you want, specifically when the introduction of a new field to that
service causes an issue.  In addition to that, finding all package
references and patching them to not include some breaking package (say
e.g. the newest mesa version, which depending on your graphics card may
or may not cause issues) can be very tedious depending on what is
referenced where.  Perhaps a lookup-inferior-services procedure might
help here.  

Overall, there are also some "not so fun" things when dealing with
inferior packages.  For one (car (lookup-inferior-packages ...)) is
quite a mouthful, especially when you know you'll always want the first
result or there is only one to begin with.  I'd welcome a procedure to
turn an inferior into a procedure that always returns the first match. 
IIRC inferior packages are also not always accepted as packages, but
I'd welcome being proven wrong about that.

You can also modularize guix system by wrapping each and every service
in a module which you either re-export from guix proper or -- in case
of some failure -- implement on your own.  That's a lot of work
however.

TL;DR: You can "modularize" transactions with 'guix system' in the same
way you modularize 'guix package -m' (the "-m" means "not modular" ;P).
 
Regards,
Leo

PS: What you're envisioning is probably a front-end, that obscures the
very existence of a config.scm by managing one that is just as verbose
as guix-generated manifests are.  However, this is not really a
solution as it fails to address the need for a (human-readable) initial
configuration.  The interface would also be a pain to deal with as each
service comes with its own configuration record allowing arbitrary lisp
expressions that one would have to write on the command line.




Re: Qt build problems after bump to 5.12.7

2020-02-23 Thread John Soo
Submitted qtbase-patched in bug #39758.



GNU Guix ported to powerp64-linux-gnu

2020-02-23 Thread dftxbs3e
Hello!

Finally it succeeded. Thanks to everyone who has answered my countless
questions on the mailing list and IRC!

GNU Hello - /gnu/store/98wc63drnc5iwkcclls91iz181mmiv7c-hello-2.10
(natively built with: ./pre-inst-env guix build hello)

I used Gentoo (https://wiki.gentoo.org/wiki/Handbook:PPC64) as a base
PowerPC 64-bit big endian system. (precisely IBM POWER9)

source:

https://gitlab.com/lle-bout/guix - commit
f47e761a10675b05b07107035d5024618267a3ad (current master at time of writing)

bootstrap binaries:

https://gitlab.com/lle-bout/guix-bootstrap - commit
b017c0459bc65a53203eb056998be8abd7778e4a (current master at time of
writing) - currently it's unclear from which revision the bootstrap
binaries come from, a rebuild of all the binaries from the latest ported
guix's revision is pending.

How to build bootstrap binaries:

On a system where GNU Guix already works:

./pre-inst-env guix build --target=powerpc64-linux-gnu bootstrap-tarballs

Next steps are getting things to work on powerpc64le-linux-gnu (shouldnt
be too hard now) then rebase everything onto core-updates!

Leo




signature.asc
Description: OpenPGP digital signature


Re: Thoughts on making Guix even better

2020-02-23 Thread Jonathan Frederickson
On Feb 22, 2020, at 9:49 PM, Raghav Gururajan  
wrote:
> 
> The guix system transactions are NON-MODULAR. That is, you cannot selectively 
> reconfigure certain parts of the system. For example, you either reconfigure 
> the system as a whole (or) you do not reconfigure the system at all.

This is something that also made it a bit difficult to get started writing 
services: you can’t work on a service in isolation and enable it on your 
current system by itself, which would be nice. I ended up building an 
operating-system container with just that service running, which works, but 
increases the time taken for each code-test cycle.