Re: Which kernel series to use in the installer and for installed systems?

2021-06-02 Thread Efraim Flashner
On Thu, May 27, 2021 at 04:02:46PM -0400, Mark H Weaver wrote:
> Hi,
> 
> Vagrant Cascadian  writes:
> > Would it be too complicated to include both the latest LTS kernel and
> > the most recently packaged kernel in the installer, and default to using
> > the same kernel for the installation?
> 
> Sounds good to me.  More specifically, I would suggest offering the user
> a choice between using the latest stable kernel, or using the latest
> kernel from the most recent LTS series at the time of installation.
> 
> If the user chooses the latter option, the installer would produce an OS
> configuration containing "(kernel linux-libre-X.YY)", where X.YY is
> latest LTS series at installation time.
> 
> The idea is that if they choose the LTS kernel option today,
> 'linux-libre-5.10' would be put into their OS config, so they would stay
> on the 5.10 kernel series until they explicitly update to a later
> series.  This is a good choice for production systems where stability is
> more important than running the latest code, and even for ordinary users
> who wish to have control over when major kernel updates are done.
> 
> I would recommend avoiding the 'linux-libre-lts' variable, because it
> fails to provide the primary benefit that LTS kernels are meant to
> provide: the ability to postpone potentially disruptive major kernel
> upgrades until a time of the user's choosing, when the user is prepared
> for possible breakage.  Users who put 'linux-libre-lts' in their OS
> configurations should expect that a major kernel upgrade will happen
> several years before it is needed, and could happen unexpectedly any
> time they upgrade their system.  Unless they carefully inspect the
> 'guix' command output _every_ time they upgrade their system, users of
> the 'linux-libre-lts' variable are unlikely to notice a major kernel
> upgrade until it has already been done.
> 
> Thoughts?
> 
>  Thanks,
>Mark
> 

IIRC the Debian installer offers linux, linux-major.minor and
linux-major.minor.point in the installer. I don't really understand why
and how a newer kernel would make things stop working, but I could see
offering linux-libre, linux-libre-lts and linux-libre-5.10 (using the
1.3.0 release as the example).

-- 
Efraim Flashner  אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted


signature.asc
Description: PGP signature


Questions reqarding packaging and conventions

2021-06-02 Thread Ignacio Coterillo
Hello,

I'm trying to debug and fix issues with Kerberos based authentication on both 
Icecat and
qutebrowser and got a few questions:

Via strace I found that icecat tries load `libgssapi.so` which doesn't exist.

Trivially creating the file as a symbolic link to the `libgssapi_krb5.so` 
provided
by the `mit-krb5` package and exposing via LD_LIBRARY_PATH solves the issue and
fixes Kerberos based authentication.

- Question 1: Should this be fixed in the mit-krb5 package or in the icecat 
package?

- Question 2: What would be the best way of creating this link in a package?

  I've played with creating a modified `mit-krb5` (i.e. `my-mit-krb5`) with the
  following additional build phase:

  (modify-phases %standard-phases
  (add-after 'install 'create-link
  (lambda _
  (let* ((libpath (getenv "out"))
  (origin (format #f "~a/lib/libgssapi_krb5.so" libpath))
  (target (format #f "~a/lib/libgssapi.so" libpath)))
  (symlink origin target))
  #t))

  This works, but creates the link with full path target instead of relative 
like the rest of links
  created naturally by the original build process:

  ❯ ls -l 
/gnu/store/irhvqdpc4zvyj9in514lv859mjkyi7p3-my-mit-krb5-1.18/lib/libgssapi*
  lrwxrwxrwx 3 root root 21 Jan  1  1970 
/gnu/store/irhvqdpc4zvyj9in514lv859mjkyi7p3-my-mit-krb5-1.18/lib/libgssapi_krb5.so
 -> libgssapi_krb5.so.2.2
  lrwxrwxrwx 3 root root 21 Jan  1  1970 
/gnu/store/irhvqdpc4zvyj9in514lv859mjkyi7p3-my-mit-krb5-1.18/lib/libgssapi_krb5.so.2
 -> libgssapi_krb5.so.2.2
  -r--r--r-- 2 root root 380520 Jan  1  1970 
/gnu/store/irhvqdpc4zvyj9in514lv859mjkyi7p3-my-mit-krb5-1.18/lib/libgssapi_krb5.so.2.2
  lrwxrwxrwx 7 root root 82 Jan  1  1970 
/gnu/store/irhvqdpc4zvyj9in514lv859mjkyi7p3-my-mit-krb5-1.18/lib/libgssapi.so 
-> 
/gnu/store/irhvqdpc4zvyj9in514lv859mjkyi7p3-my-mit-krb5-1.18/lib/libgssapi_krb5.so

  Should I try to `chdir` to the path before creating the link, or is there a 
cleaner
  way of doing something like this?

qutebrowser Kerberos support comes from `qtwebengine`. The only change needed 
would
be to add `mit-krb5` as input and add the "--webengine-kerberos=yes" qmake 
option in its
`configure` build phase.

My question here is about whether there is any policy requiring formal 
justification to
increase the number of dependencies of a certain package or this would be 
considered a valid
request/patch.


Best regards,

Ignacio


Re: Expat 2.4.0 (and 2.4.1) with security fixes released

2021-06-02 Thread Sebastian Pipping
Hi everyone,


more than half of you have updated to 2.4.1 already [1], very nice.
Please let me know if you need any help with updating or backporting or
something like that.

Thanks and best



Sebastian


[1] https://repology.org/project/expat/information


On 24.05.21 01:01, Sebastian Pipping wrote:
> Hello everyone!
> 
> 
> Expat 2.4.0 (and 2.4.1) most importantly brings protection against
> Billion Laughs Attacks (CVE-2013-0340).  There is a blog post [1] and
> the change log with more details.
> 
> If you have patches for Expat that are still required with version
> 2.4.1, please send them my way.  Thank you!
> 
> Best
> 
> 
> 
> Sebastian
> 
> 
> [1]
> https://blog.hartwork.org/posts/cve-2013-0340-billion-laughs-fixed-in-expat-2-4-0/
> [2] https://github.com/libexpat/libexpat/blob/R_2_4_1/expat/Changes
> 




Re: Adding Substitute Mirrors page to installer

2021-06-02 Thread raid5atemyhomework
Hi Mathieu,

I added the test as you recommended, **however** it looks to me that within the 
test, reading the configuration file leads to an non-`operating-system?` 
object, which seems strange.

I was forced to modify the main code as below:

+ (substitute-urls (and (operating-system? os)
+   (and=> (find
+(lambda (service)
+  (eq? guix-service-type
+   (service-kind service)))
+(operating-system-services os))
+  (compose 
guix-configuration-substitute-urls
+   service-value


In previous version there was no`(and (operating-system? os) ...)` guard, as we 
expect that the generated file, when `load`ed, will result in an 
`operating-system`, so I wonder why the testing environment is somehow 
different.  Printing via `syslog "~A~%"` shows the `os` object as being some 
`#`, not an `operating-system` object.

Unfortunately I am not very familiar with any particular wrinkles regarding 
Guile and its loading system, so I am unsure what is going wrong here...

In any case I checked it manually by creating an installer image and then 
installing into 2 different VMs, one with ci.guix.gnu.org and the other with 
mirror.sjtu.edu.cn.

Thanks
raid5atemyhomework


>From 41b174da1e38b71563405f1be48331fbe0e5700d Mon Sep 17 00:00:00 2001
From: raid5atemyhomework 
Date: Tue, 16 Mar 2021 23:45:37 +0800
Subject: [PATCH] gnu: Add substitute mirrors page to installer.

* gnu/installer/services.scm (system-service) [snippet-type]: New field.
(%system-services): Add substitute mirrors.
(service-list-service?): New procedure.
(modify-services-service?): New procedure.
(system-services->configuration): Add support for services with
`'modify-services` snippets.
* gnu/installer/newt/services.scm (run-substitute-mirror-page): New
procedure.
(run-services-page): Call `run-substitute-mirror-page`.
* gnu/services/base.scm (guix-shepherd-service)[start]: Accept second
argument, a space-separated list of substitute URLs.
* gnu/installer/final.scm (%user-modules): New variable.
(read-operating-system): New procedure.
(install-system): Read the installation configuration file and extract
substitute URLs to pass to `guix-daemon` start action.
* gnu/installer/tests.scm: Add new page in testing.
---
 gnu/installer/final.scm | 37 +++-
 gnu/installer/newt/services.scm | 26 +-
 gnu/installer/services.scm  | 62 -
 gnu/installer/tests.scm | 12 +--
 gnu/services/base.scm   | 15 ++--
 5 files changed, 136 insertions(+), 16 deletions(-)

diff --git a/gnu/installer/final.scm b/gnu/installer/final.scm
index fc0b7803fa..2324c960f2 100644
--- a/gnu/installer/final.scm
+++ b/gnu/installer/final.scm
@@ -22,9 +22,13 @@
   #:use-module (gnu installer steps)
   #:use-module (gnu installer utils)
   #:use-module (gnu installer user)
+  #:use-module (gnu services)
+  #:use-module (gnu services base)
   #:use-module (gnu services herd)
+  #:use-module (gnu system)
   #:use-module (guix build syscalls)
   #:use-module (guix build utils)
+  #:use-module (guix ui)
   #:use-module (gnu build accounts)
   #:use-module (gnu build install)
   #:use-module (gnu build linux-container)
@@ -38,6 +42,20 @@
   #:use-module (ice-9 rdelim)
   #:export (install-system))

+;; XXX duplicated from guix/scripts/system.scm, but that pulls in
+;; (guix store database), which requires guile-sqlite which is not
+;; available in the installation environment.
+(define %user-module
+  ;; Module in which the machine description file is loaded.
+  (make-user-module '((gnu system)
+  (gnu services)
+  (gnu system shadow
+
+(define (read-operating-system file)
+  "Read the operating-system declaration from FILE and return it."
+  (load* file %user-module))
+;; XXX
+
 (define %seed
   (seed->random-state
(logxor (getpid) (car (gettimeofday)
@@ -174,6 +192,16 @@ or #f.  Return #t on success and #f on failure."
   options
   (list (%installer-configuration-file)
 (%installer-target-dir
+ ;; Extract the substitute URLs of the user configuration.
+ (os  (read-operating-system 
(%installer-configuration-file)))
+ (substitute-urls (and (operating-system? os)
+   (and=> (find
+(lambda (service)
+  (eq? guix-service-type
+   (service-kind service)))
+(operating-system-services os))
+  (compose 
guix-configura

Re: Ungrafting CI jobs

2021-06-02 Thread Mathieu Othacehe


Hello Leo,

I monitored a previous evaluation of the ungrafting Cuirass
specification that was more successful, with more than 17000 builds
performed in less than 24 hours, a new record! The recent evaluation is
sadly less victorious.

> The latest iteration failed en masse due to network timeouts between
> build farm nodes.

Yes, I described this issue here: https://issues.guix.gnu.org/48468 and
hopefully fixed it with https://issues.guix.gnu.org/48556.

I need to perform a reconfigure / deploy but I'm waiting to have a few
days ahead of me to fix potential issues.

> It lets us see that the Audacity build is not attempted due to the
> failure of wxwidgets. And in turn, the failure of webkitgtk and libsoup.
> However, there is no information (logs, duration) available about those
> failed builds.

When a build is cancelled ("Cancel pending builds" button), all
its dependents are automatically updated to "Failed dependency". It
looks like this is the case for https://ci.guix.gnu.org/build/515005/details.

> What can we do to clear all these "spurious" build failures and re-try
> building the branch? I already tried using the "restart all builds"
> button, but there were still a lot of spurious failures.

I think the easiest way to recover from this situation is to remove the
ungrafting specification and recreate it. It ensures that no build will
fail because of previously failing/cancelled build dependencies.

Note that when a build B is restarted in Cuirass ("Restart" button), any
other build B' depending from B, will automatically be restarted if B
becomes successful and all the other dependencies of B' are already
successful.

I used this mechanism to restart a few builds failing on the master
branch because of substitutes timeout. I hope that when the keep-alive
patchset will solve this situation.

Thanks,

Mathieu