all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#40908] [PATCH core-updates 0/5] Use Guile 3.0 in the initrd
@ 2020-04-27 18:20 Marius Bakke
  2020-04-27 18:22 ` [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static' Marius Bakke
  0 siblings, 1 reply; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:20 UTC (permalink / raw)
  To: 40908

Guix,

These patches changes the initrd to use Guile 3.0.  By default it uses
%GUILE-STATIC-STRIPPED from (gnu packages make-bootstrap), which on the
core-updates branch refers to Guile 2.0.

It is suboptimal to define this new static Guile variant straight in
(gnu system linux-initrd), but adding it to (gnu packages guile) would
cause a cyclic module reference with (gnu packages make-bootstrap).

WDYT?

Marius Bakke (5):
  gnu: %guile-static: Rewrite in terms of 'make-guile-static'.
  gnu: %guile-static-stripped: Rewrite in terms of
    'make-guile-static-stripped'.
  gnu: make-bootstrap: Export MAKE-GUILE-STATIC and
    MAKE-GUILE-STATIC-STRIPPED.
  linux-initrd: Use Guile 3.0.
  gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED.

 gnu/local.mk                                  |   7 +-
 gnu/packages/make-bootstrap.scm               | 161 ++++----
 .../patches/guile-2.2-default-utf8.patch      |  82 ++++
 .../patches/guile-3.0-linux-syscalls.patch    | 353 ++++++++++++++++++
 .../patches/guile-3.0-relocatable.patch       |  79 ++++
 gnu/system/linux-initrd.scm                   |  10 +-
 6 files changed, 611 insertions(+), 81 deletions(-)
 create mode 100644 gnu/packages/patches/guile-2.2-default-utf8.patch
 create mode 100644 gnu/packages/patches/guile-3.0-linux-syscalls.patch
 create mode 100644 gnu/packages/patches/guile-3.0-relocatable.patch

-- 
2.26.2

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static'.
  2020-04-27 18:20 [bug#40908] [PATCH core-updates 0/5] Use Guile 3.0 in the initrd Marius Bakke
@ 2020-04-27 18:22 ` Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 2/5] gnu: %guile-static-stripped: Rewrite in terms of 'make-guile-static-stripped' Marius Bakke
                     ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:22 UTC (permalink / raw)
  To: 40908

The derivation remains unchanged.

* gnu/packages/make-bootstrap.scm (make-guile-static): New procedure.
(%guile-static): Adjust accordingly.
---
 gnu/packages/make-bootstrap.scm | 124 ++++++++++++++++----------------
 1 file changed, 64 insertions(+), 60 deletions(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 5716ed3886..f4d7fd6a2a 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -676,70 +676,74 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
            #t))))
     (inputs `(("mes" ,%mes-minimal)))))
 
+(define* (make-guile-static guile patches)
+  (package-with-relocatable-glibc
+   (static-package
+    (package
+      (inherit guile)
+      (source
+       (origin (inherit (package-source guile))
+               (patches (append (map search-patch patches)
+                                (origin-patches (package-source guile))))))
+      (name (string-append (package-name guile) "-static"))
+      (synopsis "Statically-linked and relocatable Guile")
+
+      ;; Remove the 'debug' output (see above for the reason.)
+      (outputs (delete "debug" (package-outputs guile)))
+
+      (inputs
+       `(("libunistring:static" ,libunistring "static")
+         ,@(package-inputs guile)))
+
+      (propagated-inputs
+       `(("bdw-gc" ,libgc/static-libs)
+         ,@(alist-delete "bdw-gc"
+                         (package-propagated-inputs guile))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments guile)
+         ((#:configure-flags flags '())
+          ;; When `configure' checks for ltdl availability, it
+          ;; doesn't try to link using libtool, and thus fails
+          ;; because of a missing -ldl.  Work around that.
+          ''("LDFLAGS=-ldl"))
+         ((#:phases phases '%standard-phases)
+          `(modify-phases ,phases
+
+             ;; Do not record the absolute file name of 'sh' in
+             ;; (ice-9 popen).  This makes 'open-pipe' unusable in
+             ;; a build chroot ('open-pipe*' is fine) but avoids
+             ;; keeping a reference to Bash.
+             (delete 'pre-configure)
+
+             (add-before 'configure 'static-guile
+               (lambda _
+                 (substitute* "libguile/Makefile.in"
+                   ;; Create a statically-linked `guile'
+                   ;; executable.
+                   (("^guile_LDFLAGS =")
+                    "guile_LDFLAGS = -all-static")
+
+                   ;; Add `-ldl' *after* libguile-2.0.la.
+                   (("^guile_LDADD =(.*)$" _ ldadd)
+                    (string-append "guile_LDADD = "
+                                   (string-trim-right ldadd)
+                                   " -ldl\n")))))))
+         ((#:tests? _ #f)
+          ;; There are uses of `dynamic-link' in
+          ;; {foreign,coverage}.test that don't fly here.
+          #f)
+         ((#:parallel-build? _ #f)
+          ;; Work around the fact that the Guile build system is
+          ;; not deterministic when parallel-build is enabled.
+          #f)))))))
+
 (define %guile-static
   ;; A statically-linked Guile that is relocatable--i.e., it can search
   ;; .scm and .go files relative to its installation directory, rather
   ;; than in hard-coded configure-time paths.
-  (let* ((patches (cons* (search-patch "guile-relocatable.patch")
-                         (search-patch "guile-default-utf8.patch")
-                         (search-patch "guile-linux-syscalls.patch")
-                         (origin-patches (package-source guile-2.0))))
-         (source  (origin (inherit (package-source guile-2.0))
-                    (patches patches)))
-         (guile (package (inherit guile-2.0)
-                  (name (string-append (package-name guile-2.0) "-static"))
-                  (source source)
-                  (synopsis "Statically-linked and relocatable Guile")
-
-                  ;; Remove the 'debug' output (see above for the reason.)
-                  (outputs (delete "debug" (package-outputs guile-2.0)))
-
-                  (inputs
-                   `(("libunistring:static" ,libunistring "static")
-                     ,@(package-inputs guile-2.2)))
-
-                  (propagated-inputs
-                   `(("bdw-gc" ,libgc/static-libs)
-                     ,@(alist-delete "bdw-gc"
-                                     (package-propagated-inputs guile-2.0))))
-                  (arguments
-                   (substitute-keyword-arguments (package-arguments guile-2.0)
-                     ((#:configure-flags flags '())
-                      ;; When `configure' checks for ltdl availability, it
-                      ;; doesn't try to link using libtool, and thus fails
-                      ;; because of a missing -ldl.  Work around that.
-                      ''("LDFLAGS=-ldl"))
-                     ((#:phases phases '%standard-phases)
-                      `(modify-phases ,phases
-
-                         ;; Do not record the absolute file name of 'sh' in
-                         ;; (ice-9 popen).  This makes 'open-pipe' unusable in
-                         ;; a build chroot ('open-pipe*' is fine) but avoids
-                         ;; keeping a reference to Bash.
-                         (delete 'pre-configure)
-
-                         (add-before 'configure 'static-guile
-                           (lambda _
-                             (substitute* "libguile/Makefile.in"
-                               ;; Create a statically-linked `guile'
-                               ;; executable.
-                               (("^guile_LDFLAGS =")
-                                "guile_LDFLAGS = -all-static")
-
-                               ;; Add `-ldl' *after* libguile-2.0.la.
-                               (("^guile_LDADD =(.*)$" _ ldadd)
-                                (string-append "guile_LDADD = "
-                                               (string-trim-right ldadd)
-                                               " -ldl\n")))))))
-                     ((#:tests? _ #f)
-                      ;; There are uses of `dynamic-link' in
-                      ;; {foreign,coverage}.test that don't fly here.
-                      #f)
-                     ((#:parallel-build? _ #f)
-                      ;; Work around the fact that the Guile build system is
-                      ;; not deterministic when parallel-build is enabled.
-                      #f))))))
-    (package-with-relocatable-glibc (static-package guile))))
+  (make-guile-static guile-2.0 '("guile-relocatable.patch"
+                                 "guile-default-utf8.patch"
+                                 "guile-linux-syscalls.patch")))
 
 (define %guile-static-stripped
   ;; A stripped static Guile binary, for use during bootstrap.
-- 
2.26.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 2/5] gnu: %guile-static-stripped: Rewrite in terms of 'make-guile-static-stripped'.
  2020-04-27 18:22 ` [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static' Marius Bakke
@ 2020-04-27 18:22   ` Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 3/5] gnu: make-bootstrap: Export MAKE-GUILE-STATIC and MAKE-GUILE-STATIC-STRIPPED Marius Bakke
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:22 UTC (permalink / raw)
  To: 40908

The derivation changes slightly, but the end result is bit-identical.

* gnu/packages/make-bootstrap.scm (make-guile-static-stripped): New procedure.
(%guile-static-stripped): Adjust accordingly.
---
 gnu/packages/make-bootstrap.scm | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index f4d7fd6a2a..d336818299 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -745,30 +745,30 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                                  "guile-default-utf8.patch"
                                  "guile-linux-syscalls.patch")))
 
-(define %guile-static-stripped
-  ;; A stripped static Guile binary, for use during bootstrap.
-  (package (inherit %guile-static)
-    (name "guile-static-stripped")
+(define* (make-guile-static-stripped static-guile)
+  (package
+    (inherit static-guile)
+    (name (string-append (package-name static-guile) "-stripped"))
     (build-system trivial-build-system)
     (arguments
      ;; The end result should depend on nothing but itself.
      `(#:allowed-references ("out")
        #:modules ((guix build utils))
        #:builder
-       (let ()
+       (let ((version ,(version-major+minor (package-version static-guile))))
          (use-modules (guix build utils))
 
          (let* ((in     (assoc-ref %build-inputs "guile"))
                 (out    (assoc-ref %outputs "out"))
                 (guile1 (string-append in "/bin/guile"))
                 (guile2 (string-append out "/bin/guile")))
-           (mkdir-p (string-append out "/share/guile/2.0"))
-           (copy-recursively (string-append in "/share/guile/2.0")
-                             (string-append out "/share/guile/2.0"))
+           (mkdir-p (string-append out "/share/guile/" version))
+           (copy-recursively (string-append in "/share/guile/" version)
+                             (string-append out "/share/guile/" version))
 
-           (mkdir-p (string-append out "/lib/guile/2.0/ccache"))
-           (copy-recursively (string-append in "/lib/guile/2.0/ccache")
-                             (string-append out "/lib/guile/2.0/ccache"))
+           (mkdir-p (string-append out "/lib/guile/" version "/ccache"))
+           (copy-recursively (string-append in "/lib/guile/" version "/ccache")
+                             (string-append out "/lib/guile/" version "/ccache"))
 
            (mkdir (string-append out "/bin"))
            (copy-file guile1 guile2)
@@ -789,10 +789,14 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                  '((invoke guile2 "--version")))
 
            #t))))
-    (inputs `(("guile" ,%guile-static)))
+    (inputs `(("guile" ,static-guile)))
     (outputs '("out"))
     (synopsis "Minimal statically-linked and relocatable Guile")))
 
+(define %guile-static-stripped
+  ;; A stripped static Guile binary, for use during bootstrap.
+  (make-guile-static-stripped %guile-static))
+
 (define (tarball-package pkg)
   "Return a package containing a tarball of PKG."
   (package (inherit pkg)
-- 
2.26.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 3/5] gnu: make-bootstrap: Export MAKE-GUILE-STATIC and MAKE-GUILE-STATIC-STRIPPED.
  2020-04-27 18:22 ` [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static' Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 2/5] gnu: %guile-static-stripped: Rewrite in terms of 'make-guile-static-stripped' Marius Bakke
@ 2020-04-27 18:22   ` Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0 Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED Marius Bakke
  3 siblings, 0 replies; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:22 UTC (permalink / raw)
  To: 40908

* gnu/packages/make-bootstrap.scm (make-guile-static,
make-guile-static-stripped): Export.
---
 gnu/packages/make-bootstrap.scm | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index d336818299..443e778824 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -45,7 +45,10 @@
   #:use-module (gnu packages multiprecision)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
-  #:export (%bootstrap-binaries-tarball
+  #:export (make-guile-static
+            make-guile-static-stripped
+
+            %bootstrap-binaries-tarball
             %linux-libre-headers-bootstrap-tarball
             %binutils-bootstrap-tarball
             %glibc-bootstrap-tarball
-- 
2.26.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0.
  2020-04-27 18:22 ` [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static' Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 2/5] gnu: %guile-static-stripped: Rewrite in terms of 'make-guile-static-stripped' Marius Bakke
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 3/5] gnu: make-bootstrap: Export MAKE-GUILE-STATIC and MAKE-GUILE-STATIC-STRIPPED Marius Bakke
@ 2020-04-27 18:22   ` Marius Bakke
  2020-04-27 18:33     ` Marius Bakke
  2020-04-30 22:50     ` Ludovic Courtès
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED Marius Bakke
  3 siblings, 2 replies; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:22 UTC (permalink / raw)
  To: 40908

* gnu/packages/patches/guile-2.2-default-utf8.patch: New file, extracted from
commit 2acfe022a740f79b593348cc6362cc4ee8f33bb4.
* gnu/packages/patches/guile-3.0-linux-syscalls.patch,
gnu/packages/patches/guile-3.0-relocatable.patch: New files.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.  Move all Guile patches
together while at it.
* gnu/system/linux-initrd.scm (guile-static-stripped): New variable.
(expression->initrd)[guile]: Change from %GUILE-STATIC-STRIPPED to custom
variant using the above patches.
---
 gnu/local.mk                                  |   7 +-
 .../patches/guile-2.2-default-utf8.patch      |  82 ++++
 .../patches/guile-3.0-linux-syscalls.patch    | 353 ++++++++++++++++++
 .../patches/guile-3.0-relocatable.patch       |  79 ++++
 gnu/system/linux-initrd.scm                   |  10 +-
 5 files changed, 526 insertions(+), 5 deletions(-)
 create mode 100644 gnu/packages/patches/guile-2.2-default-utf8.patch
 create mode 100644 gnu/packages/patches/guile-3.0-linux-syscalls.patch
 create mode 100644 gnu/packages/patches/guile-3.0-relocatable.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b3d6054b50..2a1bbcd3fb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1026,11 +1026,14 @@ dist_patch_DATA =						\
   %D%/packages/patches/guile-1.8-cpp-4.5.patch			\
   %D%/packages/patches/guile-2.2-skip-oom-test.patch            \
   %D%/packages/patches/guile-default-utf8.patch			\
+  %D%/packages/patches/guile-2.2-default-utf8.patch		\
+  %D%/packages/patches/guile-relocatable.patch			\
+  %D%/packages/patches/guile-3.0-relocatable.patch		\
+  %D%/packages/patches/guile-linux-syscalls.patch		\
+  %D%/packages/patches/guile-3.0-linux-syscalls.patch		\
   %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch	\
   %D%/packages/patches/guile-json-cross.patch			\
-  %D%/packages/patches/guile-linux-syscalls.patch		\
   %D%/packages/patches/guile-present-coding.patch		\
-  %D%/packages/patches/guile-relocatable.patch			\
   %D%/packages/patches/guile-rsvg-pkgconfig.patch		\
   %D%/packages/patches/guile-emacs-fix-configure.patch		\
   %D%/packages/patches/guile-sqlite3-fix-cross-compilation.patch \
diff --git a/gnu/packages/patches/guile-2.2-default-utf8.patch b/gnu/packages/patches/guile-2.2-default-utf8.patch
new file mode 100644
index 0000000000..f55a6430c1
--- /dev/null
+++ b/gnu/packages/patches/guile-2.2-default-utf8.patch
@@ -0,0 +1,82 @@
+This hack makes Guile default to UTF-8.  This avoids calls to
+`iconv_open'; `iconv_open' tries to open shared objects that aren't
+available during bootstrap, so using UTF-8 avoids that (and UTF-8 has
+built-in conversions in glibc, too.)
+
+diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
+index 0ac5ea6a6..f73301e2f 100644
+--- a/libguile/bytevectors.c
++++ b/libguile/bytevectors.c
+@@ -1931,7 +1931,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
+   if (scm_i_is_narrow_string (str))                                     \
+     {                                                                   \
+       err = mem_iconveh (scm_i_string_chars (str), c_strlen,            \
+-                         "ISO-8859-1", c_utf_name,                      \
++                         "UTF-8", c_utf_name,                      \
+                          iconveh_question_mark, NULL,                   \
+                          &c_utf, &c_utf_len);                           \
+       if (SCM_UNLIKELY (err))                                           \
+diff --git a/libguile/ports.c b/libguile/ports.c
+index 45e62f4e4..42012f3aa 100644
+--- a/libguile/ports.c
++++ b/libguile/ports.c
+@@ -974,7 +974,9 @@ canonicalize_encoding (const char *enc)
+   char *ret;
+   int i;
+ 
+-  if (!enc || encoding_matches (enc, sym_ISO_8859_1))
++  if (enc == NULL)
++    return sym_UTF_8;
++  if (encoding_matches (enc, sym_ISO_8859_1))
+     return sym_ISO_8859_1;
+   if (encoding_matches (enc, sym_UTF_8))
+     return sym_UTF_8;
+@@ -4198,7 +4200,7 @@ scm_init_ports (void)
+     scm_c_define ("%default-port-conversion-strategy",
+                   scm_make_fluid_with_default (sym_substitute));
+   /* Use the locale as the default port encoding.  */
+-  scm_i_set_default_port_encoding (locale_charset ());
++  scm_i_set_default_port_encoding ("UTF-8");
+ 
+   scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
+                             "scm_init_ice_9_ports",
+diff --git a/libguile/strings.c b/libguile/strings.c
+index 056b4c99f..63a6c050d 100644
+--- a/libguile/strings.c
++++ b/libguile/strings.c
+@@ -1579,7 +1579,7 @@ scm_i_default_string_failed_conversion_handler (void)
+ SCM
+ scm_from_locale_stringn (const char *str, size_t len)
+ {
+-  return scm_from_stringn (str, len, locale_charset (),
++  return scm_from_stringn (str, len, "UTF-8",
+                            scm_i_default_string_failed_conversion_handler ());
+ }
+ 
+@@ -1907,7 +1907,7 @@ char *
+ scm_to_locale_stringn (SCM str, size_t *lenp)
+ {
+   return scm_to_stringn (str, lenp,
+-                         locale_charset (),
++                         "UTF-8",
+                          scm_i_default_string_failed_conversion_handler ());
+ }
+ 
+@@ -2195,7 +2195,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+     scm_wrong_type_arg_msg (NULL, 0, str, "string");
+ 
+   if (encoding == NULL)
+-    encoding = "ISO-8859-1";
++    encoding = "UTF-8";
+ 
+   if (c_strcasecmp (encoding, "UTF-8") == 0)
+     /* This is the most common case--e.g., when calling libc bindings
+@@ -2247,7 +2247,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+   if (scm_i_is_narrow_string (str))
+     {
+       ret = mem_iconveh (scm_i_string_chars (str), ilen,
+-                         "ISO-8859-1", encoding,
++                         "UTF-8", encoding,
+                          (enum iconv_ilseq_handler) handler, NULL,
+                          &buf, &len);
+ 
diff --git a/gnu/packages/patches/guile-3.0-linux-syscalls.patch b/gnu/packages/patches/guile-3.0-linux-syscalls.patch
new file mode 100644
index 0000000000..55d6a2ab52
--- /dev/null
+++ b/gnu/packages/patches/guile-3.0-linux-syscalls.patch
@@ -0,0 +1,353 @@
+From 9d670c8045830a64fcbc6aac6ae6fd37335a7348 Mon Sep 17 00:00:00 2001
+From: Marius Bakke <marius@devup.no>
+Date: Thu, 19 Mar 2020 12:49:31 +0100
+Subject: [PATCH] port linux syscalls
+
+---
+ libguile/posix.c | 330 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 330 insertions(+)
+
+diff --git a/libguile/posix.c b/libguile/posix.c
+index a1520abc4..61d57cdb9 100644
+--- a/libguile/posix.c
++++ b/libguile/posix.c
+@@ -2375,6 +2375,336 @@ scm_init_popen (void)
+ }
+ #endif /* HAVE_START_CHILD */
+ 
++\f
++/* Linux! */
++#ifdef __linux__
++
++#include <sys/mount.h>
++#include <sys/syscall.h>
++
++#include "libguile/foreign.h"
++#include "libguile/bytevectors.h"
++#include <libguile/variable.h>
++
++SCM_DEFINE (scm_mount, "mount", 3, 2, 0,
++	    (SCM source, SCM target, SCM type, SCM flags, SCM data),
++	    "Mount file system of @var{type} specified by @var{source} "
++	    "on @var{target}.")
++#define FUNC_NAME s_scm_mount
++{
++  int err;
++  char *c_source, *c_target, *c_type, *c_data;
++  unsigned long c_flags;
++
++  c_source = scm_to_locale_string (source);
++  c_target = scm_to_locale_string (target);
++  c_type = scm_to_locale_string (type);
++  c_flags = SCM_UNBNDP (flags) ? 0 : scm_to_ulong (flags);
++
++  if (SCM_UNBNDP (data) || scm_is_false (data))
++    c_data = NULL;
++  else
++    c_data = scm_to_locale_string (data);
++
++  err = mount (c_source, c_target, c_type, c_flags, c_data);
++  if (err != 0)
++    err = errno;
++
++  free (c_source);
++  free (c_target);
++  free (c_type);
++
++  if (c_data != NULL)
++    free (c_data);
++
++  if (err != 0)
++    {
++      errno = err;
++      SCM_SYSERROR;
++    }
++
++  return SCM_UNSPECIFIED;
++}
++#undef FUNC_NAME
++
++SCM_DEFINE (scm_umount, "umount", 1, 0, 0,
++	    (SCM target),
++	    "Unmount the file system on @var{target}.")
++#define FUNC_NAME s_scm_umount
++{
++  int err;
++  char *c_target;
++
++  c_target = scm_to_locale_string (target);
++
++  err = umount (c_target);
++  if (err != 0)
++    err = errno;
++
++  free (c_target);
++
++  if (err != 0)
++    {
++      errno = err;
++      SCM_SYSERROR;
++    }
++
++  return SCM_UNSPECIFIED;
++}
++#undef FUNC_NAME
++
++/* Linux's module installation syscall.  See `kernel/module.c' in Linux;
++   the function itself is part of the GNU libc.
++
++   Load the LEN bytes at MODULE as a kernel module, with arguments from
++   ARGS, a space-separated list of options.  */
++extern long init_module (void *module, unsigned long len, const char *args);
++
++/* Load a kernel module from FD.  FLAGS must be a bitwise or of
++   MODULE_INIT_* constants.  The GNU libc doesn't provide a wrapper for
++   this one so we use 'syscall'.  */
++static int
++finit_module (int fd, const char *args, int flags)
++{
++  return syscall (SYS_finit_module, fd, args, flags);
++}
++
++
++SCM_DEFINE (scm_load_linux_module, "load-linux-module", 1, 1, 0,
++	    (SCM data, SCM options),
++	    "Load the Linux kernel module whose contents are in bytevector "
++	    "DATA (the contents of a @code{.ko} file), with the arguments "
++	    "from the OPTIONS string.")
++#define FUNC_NAME s_scm_load_linux_module
++{
++  long err;
++  void *c_data;
++  unsigned long c_len;
++  char *c_options;
++
++  SCM_VALIDATE_BYTEVECTOR (SCM_ARG1, data);
++
++  c_data = SCM_BYTEVECTOR_CONTENTS (data);
++  c_len = SCM_BYTEVECTOR_LENGTH (data);
++  c_options =
++    scm_to_locale_string (SCM_UNBNDP (options) ? scm_nullstr : options);
++
++  err = init_module (c_data, c_len, c_options);
++
++  free (c_options);
++
++  if (err != 0)
++    SCM_SYSERROR;
++
++  return SCM_UNSPECIFIED;
++}
++#undef FUNC_NAME
++
++SCM_DEFINE (scm_load_linux_module_fd, "load-linux-module/fd", 1, 2, 0,
++	    (SCM fd, SCM options, SCM flags),
++	    "Load the Linux kernel module from the file at FD, "
++	    "with the arguments from the OPTIONS string, and "
++            "optionally the given FLAGS.")
++#define FUNC_NAME s_scm_load_linux_module_fd
++{
++  long err;
++  int c_fd, c_flags;
++  char *c_options;
++
++  c_fd = scm_to_int (fd);
++  c_options =
++    scm_to_locale_string (SCM_UNBNDP (options) ? scm_nullstr : options);
++  c_flags = SCM_UNBNDP (flags) ? 0 : scm_to_int (flags);
++
++  err = finit_module (c_fd, c_options, c_flags);
++
++  free (c_options);
++
++  if (err != 0)
++    SCM_SYSERROR;
++
++  return SCM_UNSPECIFIED;
++}
++#undef FUNC_NAME
++
++
++/* Rebooting, halting, and all that.  */
++
++#include <sys/reboot.h>
++
++SCM_VARIABLE_INIT (flag_RB_AUTOBOOT, "RB_AUTOBOOT",
++		   scm_from_int (RB_AUTOBOOT));
++SCM_VARIABLE_INIT (flag_RB_HALT_SYSTEM, "RB_HALT_SYSTEM",
++		   scm_from_int (RB_HALT_SYSTEM));
++SCM_VARIABLE_INIT (flag_RB_ENABLE_CAD, "RB_ENABLE_CAD",
++		   scm_from_int (RB_ENABLE_CAD));
++SCM_VARIABLE_INIT (flag_RB_DISABLE_CAD, "RB_DISABLE_CAD",
++		   scm_from_int (RB_DISABLE_CAD));
++SCM_VARIABLE_INIT (flag_RB_POWER_OFF, "RB_POWER_OFF",
++		   scm_from_int (RB_POWER_OFF));
++SCM_VARIABLE_INIT (flag_RB_SW_SUSPEND, "RB_SW_SUSPEND",
++		   scm_from_int (RB_SW_SUSPEND));
++SCM_VARIABLE_INIT (flag_RB_KEXEC, "RB_KEXEC",
++		   scm_from_int (RB_KEXEC));
++
++SCM_DEFINE (scm_reboot, "reboot", 0, 1, 0,
++	    (SCM command),
++	    "Reboot the system.  @var{command} must be one of the @code{RB_} "
++	    "constants; if omitted, @var{RB_AUTOBOOT} is used, thus "
++	    "performing a hard reset.")
++#define FUNC_NAME s_scm_reboot
++{
++  int c_command;
++
++  if (SCM_UNBNDP (command))
++    c_command = RB_AUTOBOOT;
++  else
++    c_command = scm_to_int (command);
++
++  reboot (c_command);
++
++  return SCM_UNSPECIFIED;			  /* likely unreached */
++}
++#undef FUNC_NAME
++
++/* Linux network interfaces.  See <linux/if.h>.  */
++
++#include <linux/if.h>
++#include <linux/sockios.h>
++#include "libguile/socket.h"
++
++SCM_VARIABLE_INIT (flag_IFF_UP, "IFF_UP",
++		   scm_from_int (IFF_UP));
++SCM_VARIABLE_INIT (flag_IFF_BROADCAST, "IFF_BROADCAST",
++		   scm_from_int (IFF_BROADCAST));
++SCM_VARIABLE_INIT (flag_IFF_DEBUG, "IFF_DEBUG",
++		   scm_from_int (IFF_DEBUG));
++SCM_VARIABLE_INIT (flag_IFF_LOOPBACK, "IFF_LOOPBACK",
++		   scm_from_int (IFF_LOOPBACK));
++SCM_VARIABLE_INIT (flag_IFF_POINTOPOINT, "IFF_POINTOPOINT",
++		   scm_from_int (IFF_POINTOPOINT));
++SCM_VARIABLE_INIT (flag_IFF_NOTRAILERS, "IFF_NOTRAILERS",
++		   scm_from_int (IFF_NOTRAILERS));
++SCM_VARIABLE_INIT (flag_IFF_RUNNING, "IFF_RUNNING",
++		   scm_from_int (IFF_RUNNING));
++SCM_VARIABLE_INIT (flag_IFF_NOARP, "IFF_NOARP",
++		   scm_from_int (IFF_NOARP));
++SCM_VARIABLE_INIT (flag_IFF_PROMISC, "IFF_PROMISC",
++		   scm_from_int (IFF_PROMISC));
++SCM_VARIABLE_INIT (flag_IFF_ALLMULTI, "IFF_ALLMULTI",
++		   scm_from_int (IFF_ALLMULTI));
++
++SCM_DEFINE (scm_set_network_interface_address, "set-network-interface-address",
++	    3, 0, 0,
++	    (SCM socket, SCM name, SCM address),
++	    "Configure network interface @var{name}.")
++#define FUNC_NAME s_scm_set_network_interface_address
++{
++  char *c_name;
++  struct ifreq ifr;
++  struct sockaddr *c_address;
++  size_t sa_len;
++  int fd, err;
++
++  socket = SCM_COERCE_OUTPORT (socket);
++  SCM_VALIDATE_OPFPORT (1, socket);
++  fd = SCM_FPORT_FDES (socket);
++
++  memset (&ifr, 0, sizeof ifr);
++  c_name = scm_to_locale_string (name);
++  c_address = scm_to_sockaddr (address, &sa_len);
++
++  strncpy (ifr.ifr_name, c_name, sizeof ifr.ifr_name - 1);
++  memcpy (&ifr.ifr_addr, c_address, sa_len);
++
++  err = ioctl (fd, SIOCSIFADDR, &ifr);
++  if (err != 0)
++    err = errno;
++
++  free (c_name);
++  free (c_address);
++
++  if (err != 0)
++    {
++      errno = err;
++      SCM_SYSERROR;
++    }
++
++  return SCM_UNSPECIFIED;
++}
++#undef FUNC_NAME
++
++SCM_DEFINE (scm_set_network_interface_flags, "set-network-interface-flags",
++	    3, 0, 0,
++	    (SCM socket, SCM name, SCM flags),
++	    "Change the flags of network interface @var{name} to "
++	    "@var{flags}.")
++#define FUNC_NAME s_scm_set_network_interface_flags
++{
++  struct ifreq ifr;
++  char *c_name;
++  int fd, err;
++
++  socket = SCM_COERCE_OUTPORT (socket);
++  SCM_VALIDATE_OPFPORT (1, socket);
++  fd = SCM_FPORT_FDES (socket);
++
++  memset (&ifr, 0, sizeof ifr);
++  c_name = scm_to_locale_string (name);
++  strncpy (ifr.ifr_name, c_name, sizeof ifr.ifr_name - 1);
++  ifr.ifr_flags = scm_to_short (flags);
++
++  err = ioctl (fd, SIOCSIFFLAGS, &ifr);
++  if (err != 0)
++    err = errno;
++
++  free (c_name);
++
++  if (err != 0)
++    {
++      errno = err;
++      SCM_SYSERROR;
++    }
++
++  return SCM_UNSPECIFIED;
++}
++#undef FUNC_NAME
++
++SCM_DEFINE (scm_network_interface_flags, "network-interface-flags",
++	    2, 0, 0,
++	    (SCM socket, SCM name),
++	    "Return the flags of network interface @var{name}.")
++#define FUNC_NAME s_scm_network_interface_flags
++{
++  struct ifreq ifr;
++  char *c_name;
++  int fd, err;
++
++  socket = SCM_COERCE_OUTPORT (socket);
++  SCM_VALIDATE_OPFPORT (1, socket);
++  fd = SCM_FPORT_FDES (socket);
++
++  memset (&ifr, 0, sizeof ifr);
++  c_name = scm_to_locale_string (name);
++  strncpy (ifr.ifr_name, c_name, sizeof ifr.ifr_name - 1);
++
++  err = ioctl (fd, SIOCGIFFLAGS, &ifr);
++  if (err != 0)
++    err = errno;
++
++  free (c_name);
++
++  if (err != 0)
++    {
++      errno = err;
++      SCM_SYSERROR;
++    }
++
++  return scm_from_short (ifr.ifr_flags);
++}
++#undef FUNC_NAME
++#endif
++
+ void
+ scm_init_posix ()
+ {
+-- 
+2.25.2
+
diff --git a/gnu/packages/patches/guile-3.0-relocatable.patch b/gnu/packages/patches/guile-3.0-relocatable.patch
new file mode 100644
index 0000000000..2ffc79fa70
--- /dev/null
+++ b/gnu/packages/patches/guile-3.0-relocatable.patch
@@ -0,0 +1,79 @@
+From 5bd112b292a2b177a479099cc06e998747025587 Mon Sep 17 00:00:00 2001
+From: Marius Bakke <marius@devup.no>
+Date: Thu, 19 Mar 2020 12:49:02 +0100
+Subject: [PATCH] add guile relocatable
+
+---
+ libguile/load.c | 35 +++++++++++++++++++++++++++++------
+ 1 file changed, 29 insertions(+), 6 deletions(-)
+
+diff --git a/libguile/load.c b/libguile/load.c
+index e95c36db1..53d27b0b4 100644
+--- a/libguile/load.c
++++ b/libguile/load.c
+@@ -27,6 +27,7 @@
+ #include <stat-time.h>
+ #include <string.h>
+ #include <stdio.h>
++#include <libgen.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+@@ -334,6 +335,32 @@ scm_init_load_path ()
+   SCM cpath = SCM_EOL;
+ 
+ #ifdef SCM_LIBRARY_DIR
++  char *program, *bin_dir, *prefix, *module_dir, *ccache_dir;
++
++  /* Determine the source and compiled module directories at run-time,
++     relative to the executable's location.
++
++     Note: Use /proc/self/exe instead of argv[0] because the latter is
++     not necessarily an absolute, nor a valid file name.  */
++
++  program = scm_gc_malloc_pointerless (256, "string");
++  readlink ("/proc/self/exe", program, 256);
++
++  bin_dir = dirname (strdupa (program));
++
++  prefix = scm_gc_malloc_pointerless (strlen (bin_dir) + 4, "string");
++  strcpy (prefix, bin_dir);
++  strcat (prefix, "/..");
++  prefix = canonicalize_file_name (prefix);
++
++  module_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
++  strcpy (module_dir, prefix);
++  strcat (module_dir, "/share/guile/" SCM_EFFECTIVE_VERSION);
++
++  ccache_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
++  strcpy (ccache_dir, prefix);
++  strcat (ccache_dir, "/lib/guile/" SCM_EFFECTIVE_VERSION "/ccache");
++
+   env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_PATH"));
+   if (env && strcmp (env, "") == 0)
+     /* special-case interpret system-path=="" as meaning no system path instead
+@@ -342,10 +369,7 @@ scm_init_load_path ()
+   else if (env)
+     path = scm_parse_path (scm_from_locale_string (env), path);
+   else
+-    path = scm_list_4 (scm_from_utf8_string (SCM_LIBRARY_DIR),
+-                       scm_from_utf8_string (SCM_SITE_DIR),
+-                       scm_from_utf8_string (SCM_GLOBAL_SITE_DIR),
+-                       scm_from_utf8_string (SCM_PKGDATA_DIR));
++    path = scm_list_1 (scm_from_locale_string (module_dir));
+ 
+   env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_COMPILED_PATH"));
+   if (env && strcmp (env, "") == 0)
+@@ -355,8 +379,7 @@ scm_init_load_path ()
+     cpath = scm_parse_path (scm_from_locale_string (env), cpath);
+   else
+     {
+-      cpath = scm_list_2 (scm_from_utf8_string (SCM_CCACHE_DIR),
+-                          scm_from_utf8_string (SCM_SITE_CCACHE_DIR));
++      cpath = scm_list_1 (scm_from_locale_string (ccache_dir));
+     }
+ 
+ #endif /* SCM_LIBRARY_DIR */
+-- 
+2.25.2
+
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index dcc9b6b937..818aac63f3 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -36,7 +36,7 @@
   #:use-module ((gnu packages xorg)
                 #:select (console-setup xkeyboard-config))
   #:use-module ((gnu packages make-bootstrap)
-                #:select (%guile-static-stripped))
+                #:select (make-guile-static make-guile-static-stripped))
   #:use-module (gnu system file-systems)
   #:use-module (gnu system mapped-devices)
   #:use-module (gnu system keyboard)
@@ -59,10 +59,14 @@
 ;;;
 ;;; Code:
 
-
 (define* (expression->initrd exp
                              #:key
-                             (guile %guile-static-stripped)
+                             (guile (make-guile-static-stripped
+                                     (make-guile-static
+                                      guile-3.0
+                                      '("guile-2.2-default-utf8.patch"
+                                        "guile-3.0-linux-syscalls.patch"
+                                        "guile-3.0-relocatable.patch"))))
                              (gzip gzip)
                              (name "guile-initrd")
                              (system (%current-system)))
-- 
2.26.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED.
  2020-04-27 18:22 ` [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static' Marius Bakke
                     ` (2 preceding siblings ...)
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0 Marius Bakke
@ 2020-04-27 18:22   ` Marius Bakke
  2020-04-30 22:52     ` Ludovic Courtès
  3 siblings, 1 reply; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:22 UTC (permalink / raw)
  To: 40908

* gnu/packages/make-bootstrap.scm (%guile-static-stripped): Remove export.
---
 gnu/packages/make-bootstrap.scm | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 443e778824..981c7aa24e 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -56,9 +56,7 @@
             %guile-bootstrap-tarball
             %mescc-tools-bootstrap-tarball
             %mes-bootstrap-tarball
-            %bootstrap-tarballs
-
-            %guile-static-stripped))
+            %bootstrap-tarballs))
 
 ;;; Commentary:
 ;;;
-- 
2.26.2

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0.
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0 Marius Bakke
@ 2020-04-27 18:33     ` Marius Bakke
  2020-04-30 22:50     ` Ludovic Courtès
  1 sibling, 0 replies; 11+ messages in thread
From: Marius Bakke @ 2020-04-27 18:33 UTC (permalink / raw)
  To: 40908

[-- Attachment #1: Type: text/plain, Size: 636 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> * gnu/packages/patches/guile-2.2-default-utf8.patch: New file, extracted from
> commit 2acfe022a740f79b593348cc6362cc4ee8f33bb4.
> * gnu/packages/patches/guile-3.0-linux-syscalls.patch,
> gnu/packages/patches/guile-3.0-relocatable.patch: New files.
> * gnu/local.mk (dist_patch_DATA): Adjust accordingly.  Move all Guile patches
> together while at it.
> * gnu/system/linux-initrd.scm (guile-static-stripped): New variable.

Whoops, I inlined this variable at the last minute and forgot to adjust
the commit message.  The patch also accidentally removes a newline,
I've fixed that locally.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0.
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0 Marius Bakke
  2020-04-27 18:33     ` Marius Bakke
@ 2020-04-30 22:50     ` Ludovic Courtès
  2020-05-01 20:12       ` Marius Bakke
  1 sibling, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2020-04-30 22:50 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 40908

Hi,

Marius Bakke <mbakke@fastmail.com> skribis:

> +++ b/gnu/packages/patches/guile-3.0-linux-syscalls.patch
> @@ -0,0 +1,353 @@
> +From 9d670c8045830a64fcbc6aac6ae6fd37335a7348 Mon Sep 17 00:00:00 2001
> +From: Marius Bakke <marius@devup.no>
> +Date: Thu, 19 Mar 2020 12:49:31 +0100
> +Subject: [PATCH] port linux syscalls
> +
> +---
> + libguile/posix.c | 330 +++++++++++++++++++++++++++++++++++++++++++++++
> + 1 file changed, 330 insertions(+)

[...]

> --- /dev/null
> +++ b/gnu/packages/patches/guile-3.0-relocatable.patch
> @@ -0,0 +1,79 @@
> +From 5bd112b292a2b177a479099cc06e998747025587 Mon Sep 17 00:00:00 2001
> +From: Marius Bakke <marius@devup.no>
> +Date: Thu, 19 Mar 2020 12:49:02 +0100
> +Subject: [PATCH] add guile relocatable
> +
> +---

For these two patches, could you preserve the same or a similar heading
as the original patches?

Thanks!

Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED.
  2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED Marius Bakke
@ 2020-04-30 22:52     ` Ludovic Courtès
  2020-05-01 20:16       ` bug#40908: " Marius Bakke
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2020-04-30 22:52 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 40908

Hi,

Marius Bakke <mbakke@fastmail.com> skribis:

> * gnu/packages/make-bootstrap.scm (%guile-static-stripped): Remove export.
> ---
>  gnu/packages/make-bootstrap.scm | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
> index 443e778824..981c7aa24e 100644
> --- a/gnu/packages/make-bootstrap.scm
> +++ b/gnu/packages/make-bootstrap.scm
> @@ -56,9 +56,7 @@
>              %guile-bootstrap-tarball
>              %mescc-tools-bootstrap-tarball
>              %mes-bootstrap-tarball
> -            %bootstrap-tarballs
> -
> -            %guile-static-stripped))

Are you sure it’s unused?

Actually, what about simply adding ‘%guile-3.0-static-stripped’ right in
this file?  I think it would work, right?  And we could also keep
‘make-guile-static’ private.

Apart from this, the patch series LGTM!  Pretty exciting to have a JIT
in the initrd.  ;-)

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0.
  2020-04-30 22:50     ` Ludovic Courtès
@ 2020-05-01 20:12       ` Marius Bakke
  0 siblings, 0 replies; 11+ messages in thread
From: Marius Bakke @ 2020-05-01 20:12 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 40908

[-- Attachment #1: Type: text/plain, Size: 1068 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> +++ b/gnu/packages/patches/guile-3.0-linux-syscalls.patch
>> @@ -0,0 +1,353 @@
>> +From 9d670c8045830a64fcbc6aac6ae6fd37335a7348 Mon Sep 17 00:00:00 2001
>> +From: Marius Bakke <marius@devup.no>
>> +Date: Thu, 19 Mar 2020 12:49:31 +0100
>> +Subject: [PATCH] port linux syscalls
>> +
>> +---
>> + libguile/posix.c | 330 +++++++++++++++++++++++++++++++++++++++++++++++
>> + 1 file changed, 330 insertions(+)
>
> [...]
>
>> --- /dev/null
>> +++ b/gnu/packages/patches/guile-3.0-relocatable.patch
>> @@ -0,0 +1,79 @@
>> +From 5bd112b292a2b177a479099cc06e998747025587 Mon Sep 17 00:00:00 2001
>> +From: Marius Bakke <marius@devup.no>
>> +Date: Thu, 19 Mar 2020 12:49:02 +0100
>> +Subject: [PATCH] add guile relocatable
>> +
>> +---
>
> For these two patches, could you preserve the same or a similar heading
> as the original patches?

Derp, I'm usually the one complaining about patch headers!

I've fixed this now, thanks for noticing.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#40908: [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED.
  2020-04-30 22:52     ` Ludovic Courtès
@ 2020-05-01 20:16       ` Marius Bakke
  0 siblings, 0 replies; 11+ messages in thread
From: Marius Bakke @ 2020-05-01 20:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 40908-done

[-- Attachment #1: Type: text/plain, Size: 1343 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Marius Bakke <mbakke@fastmail.com> skribis:
>
>> * gnu/packages/make-bootstrap.scm (%guile-static-stripped): Remove export.
>> ---
>>  gnu/packages/make-bootstrap.scm | 4 +---
>>  1 file changed, 1 insertion(+), 3 deletions(-)
>>
>> diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
>> index 443e778824..981c7aa24e 100644
>> --- a/gnu/packages/make-bootstrap.scm
>> +++ b/gnu/packages/make-bootstrap.scm
>> @@ -56,9 +56,7 @@
>>              %guile-bootstrap-tarball
>>              %mescc-tools-bootstrap-tarball
>>              %mes-bootstrap-tarball
>> -            %bootstrap-tarballs
>> -
>> -            %guile-static-stripped))
>
> Are you sure it’s unused?
>
> Actually, what about simply adding ‘%guile-3.0-static-stripped’ right in
> this file?  I think it would work, right?  And we could also keep
> ‘make-guile-static’ private.

Right, that is better.  Done!

> Apart from this, the patch series LGTM!  Pretty exciting to have a JIT
> in the initrd.  ;-)

Heh, my main motivation for these patches was to remove scary warnings
about incompatible bytecode during boot, but we also boot faster as a
side effect!  :-)

Patches pushed!

I think we are pretty close to actually merging this branch now..!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-05-01 20:17 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-27 18:20 [bug#40908] [PATCH core-updates 0/5] Use Guile 3.0 in the initrd Marius Bakke
2020-04-27 18:22 ` [bug#40908] [PATCH core-updates 1/5] gnu: %guile-static: Rewrite in terms of 'make-guile-static' Marius Bakke
2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 2/5] gnu: %guile-static-stripped: Rewrite in terms of 'make-guile-static-stripped' Marius Bakke
2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 3/5] gnu: make-bootstrap: Export MAKE-GUILE-STATIC and MAKE-GUILE-STATIC-STRIPPED Marius Bakke
2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 4/5] linux-initrd: Use Guile 3.0 Marius Bakke
2020-04-27 18:33     ` Marius Bakke
2020-04-30 22:50     ` Ludovic Courtès
2020-05-01 20:12       ` Marius Bakke
2020-04-27 18:22   ` [bug#40908] [PATCH core-updates 5/5] gnu: make-bootstrap: Do not export %GUILE-STATIC-STRIPPED Marius Bakke
2020-04-30 22:52     ` Ludovic Courtès
2020-05-01 20:16       ` bug#40908: " Marius Bakke

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.