gnu: xkeyboard-config: Upgrade to 2.41.

2024-05-30 Thread B. Wilson
Note that the canonical location for sources has changed from
ftp.freedesktop.org to x.org. See the below discussion on the xkeyboard-config
issue tracker:

https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/353#note_2431606

The old location still works, but it remains several versions behind upstream.

On my machine, the referrers of xkeyboard-config are:

libxkbcommon
setxkbmap
xkbcomp
xorg-server

What's the proper procedure when updating packages to check that its reverse
dependencies aren't broken by the change?

From 9ed36ee6ea9479007108e696afa389d5030c2280 Mon Sep 17 00:00:00 2001
From: "B. Wilson" 
Date: Fri, 31 May 2024 08:58:07 +0900
Subject: [PATCH] gnu: xkeyboard-config: Upgrade to 2.41.

* gnu/packages/xorg.scm (xkeyboard-config): Upgrade to 2.41.
---
 gnu/packages/xorg.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index c13a1f4215..6b7a66bf51 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -3771,15 +3771,15 @@ (define-public xkbutils
 (define-public xkeyboard-config
   (package
 (name "xkeyboard-config")
-(version "2.38")
+(version "2.41")
 (source (origin
   (method url-fetch)
   (uri (string-append
-"ftp://ftp.freedesktop.org/pub/xorg//individual/data/xkeyboard-config/";
+"https://www.x.org/releases/individual/data/xkeyboard-config/";
 "xkeyboard-config-" version ".tar.xz"))
   (sha256
(base32
-"0wn8asnbz94ksi2mysa6ikn4kqgd9rpfydl8icc6mcdsk406"
+"13vjvyg1fjvsqzqkpxzigvv94v154mcb2gba4d80spi9aywxcb7h"
 (build-system meson-build-system)
 (inputs (list libx11 xkbcomp-intermediate))
 (native-inputs (list gettext-minimal libxslt perl pkg-config python))
-- 
2.41.0



Re: Help packaging ArrayFire

2023-09-06 Thread B. Wilson
Adam Faiz  wrote:
> On 8/20/23 19:35, B. Wilson wrote:
> > Hello Guix,
> > 
> > Knee deep in CMake hell here and would appreciate a helping hand. ArrayFire
> > build is defeating me:
> > 
> > CMake Error at 
> > /gnu/store/ygab8v4ci9iklaykapq52bfsshpvi8pw-cmake-minimal-3.24.2/share/cmake-3.24/Modules/ExternalProject.cmake:3269
> >  (message):
> >   error: could not find git for fetch of af_forge-populate
> > Call Stack (most recent call first):
> >   
> > /gnu/store/ygab8v4ci9iklaykapq52bfsshpvi8pw-cmake-minimal-3.24.2/share/cmake-3.24/Modules/ExternalProject.cmake:4171
> >  (_ep_add_update_command)
> >   CMakeLists.txt:13 (ExternalProject_Add)
> > 
> > Apparently, some of the build dependencies get automatically cloned, but I'm
> > unable to make heads or tails of how to work around this. The
> > `af_forge-populate` makes it look like it's related to Forge, but "ArrayFire
> > also requires Forge but this is a submodule and will be checkout during
> > submodule initilization stage. AF_BUILD_FORGE cmake option has to be turned 
> > on
> > to build graphics support," so I'm stumped.
> > 
> > I need this soon for a project and am willing to pay someone to take this 
> > over.
> > 
> > Here are the official build instructions: 
> > https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-Linux
> > 
> > In fact, there's a 2016 thread where Dennis Mungai claims to have 
> > successfully
> > gotten ArrayFire packaged on Guix: https://issues.guix.gnu.org/23055. 
> > However,
> > that appears to have never resulted in a patch.
> > 
> > Thoughts?
> > 
> I'm willing to work on this, it's a very interesting challenge.

Beautiful! Keep me posted, and let me know if there's anything I can help with.

Cheers,
B. Wilson



Help packaging ArrayFire

2023-08-20 Thread B. Wilson
Hello Guix,

Knee deep in CMake hell here and would appreciate a helping hand. ArrayFire
build is defeating me:

CMake Error at 
/gnu/store/ygab8v4ci9iklaykapq52bfsshpvi8pw-cmake-minimal-3.24.2/share/cmake-3.24/Modules/ExternalProject.cmake:3269
 (message):
  error: could not find git for fetch of af_forge-populate
Call Stack (most recent call first):
  
/gnu/store/ygab8v4ci9iklaykapq52bfsshpvi8pw-cmake-minimal-3.24.2/share/cmake-3.24/Modules/ExternalProject.cmake:4171
 (_ep_add_update_command)
  CMakeLists.txt:13 (ExternalProject_Add)

Apparently, some of the build dependencies get automatically cloned, but I'm
unable to make heads or tails of how to work around this. The
`af_forge-populate` makes it look like it's related to Forge, but "ArrayFire
also requires Forge but this is a submodule and will be checkout during
submodule initilization stage. AF_BUILD_FORGE cmake option has to be turned on
to build graphics support," so I'm stumped.

I need this soon for a project and am willing to pay someone to take this over.

Here are the official build instructions: 
https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-Linux

In fact, there's a 2016 thread where Dennis Mungai claims to have successfully
gotten ArrayFire packaged on Guix: https://issues.guix.gnu.org/23055. However,
that appears to have never resulted in a patch.

Thoughts?

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 B. Wilson 
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (bmw packages arrayfire)
  #:use-module (gnu packages algebra)
  #:use-module (gnu packages boost)
  #:use-module (gnu packages documentation)
  #:use-module (gnu packages image)
  #:use-module (gnu packages llvm)
  #:use-module (gnu packages logging)
  #:use-module (gnu packages maths)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages pretty-print)
  #:use-module (guix build-system cmake)
  #:use-module (guix packages)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:))

(define arrayfire-glad
  (let ((commit "ef8c5508e72456b714820c98e034d9a55b970650")
(revision "1"))
(package
  (name "arrayfire-glad")
  (version (git-version "0" revision commit))
  (source
(origin
  (method git-fetch)
  (uri (git-reference
 (url "https://github.com/arrayfire/glad.git";)
 (commit commit)))
  (sha256
(base32 "0yln2mrymhb6ni6gb1vc0vrzbrkzmsxk7wyvbgqlv16bnmrmxmdv"))
  (file-name (git-file-name name version
  (build-system cmake-build-system)
  (arguments
(list #:tests? #f))
  (home-page "https://github.com/arrayfire/glad";)
  (synopsis "OpenGL(3.3) Loader Library")
  (description "OpenGL(3.3) Loader Library, a dependency of ArrayFire.")
  (license license:bsd-3

(define-public arrayfire
  (package
(name "arrayfire")
(version "3.8.3")
(source
  (origin
(method git-fetch)
(uri (git-reference
   (url "https://github.com/arrayfire/arrayfire.git";)
   (commit (string-append "v" version))
   (recursive? #t)))
(sha256
  (base32 "1fvd0jvg49inhqx0mcqrfsfnqvc3n0pgnym5gina5svgh293n68a"))
(file-name (git-file-name name version
(build-system cmake-build-system)
(native-inputs (list doxygen pkg-config))
(inputs (list boost fftw fmt freeimage lapack libomp openblas spdlog))
(home-page "https://arrayfire.com/";)
(synopsis "General purpose tensor library")
(description "ArrayFire is a general-purpose tensor library that simplifies
the process of software development for the parallel architectures found in
CPUs, GPUs, and other hardware acceleration devices.")
(license license:bsd-3)))


Re: Shepherd erroring on guix system reconfigure

2022-04-17 Thread B. Wilson
Tobias Geerinckx-Rice  wrote:
> On 17 April 2022 09:27:04 UTC, Tobias Geerinckx-Rice  wrote:
> >There's only a warning here, not an error.
> >
> >Is the swap file already swapon'd?  If it previously worked, the warning is
> >likely (pun unintended) transient.
> >
> >Kind regards,
> >
> >T G-R
> >
> >Sent on the go.  Excuse or enjoy my brevity.
>
> Phone MUA/screen/who cares snipped out the supp group output.  Does rolling
> back the system still show it?  If you're worried about the system not coming
> back up, that's what I'd do for now.

I was mostly trying to indicate the backtrace where shepherd complains about an
unknown keyword #:suplementary-groups. It looks like that's happening during or
right after /etc population.



Shepherd erroring on guix system reconfigure

2022-04-17 Thread B. Wilson
Hey Guix,

After pulling about an hour ago and attempting to reconfigure, it looks like
shepherd is falling over, even though the reconfigure command finishes:

activating system...
The following derivation will be built:
  /gnu/store/3qlfrj7liqzfqpsb156xdh102wjx1n8y-switch-to-system.scm.drv

building 
/gnu/store/3qlfrj7liqzfqpsb156xdh102wjx1n8y-switch-to-system.scm.drv...
making '/gnu/store/2rc0xbxw343wv3lpzk64mb1ygcwp8337-system' the current 
system...
setting up setuid programs in '/run/setuid-programs'...
populating /etc from /gnu/store/czmsdx39r09nmv328xfmj79m1wqiv46n-etc...
Backtrace:
   4 (primitive-load "/gnu/store/s246zbwm94plbdkqp2l9q493w9v…")
In ice-9/eval.scm:
   293:34  3 (_ #(# #))
In gnu/build/shepherd.scm:
   193:15  2 (_)
In gnu/build/linux-container.scm:
 62:6  1 (call-with-clean-exit #)
In shepherd/service.scm:
776:0  0 (exec-command _ #:user _ #:group _ #:log-file _ # _ # _ …)

shepherd/service.scm:776:0: In procedure exec-command:
Unrecognized keyword: #:supplementary-groups
The following derivation will be built:
  /gnu/store/8dd63z1xazl3yzl1clb663p04qx8b4ga-install-bootloader.scm.drv

building 
/gnu/store/8dd63z1xazl3yzl1clb663p04qx8b4ga-install-bootloader.scm.drv...
guix system: bootloader successfully installed on '(/boot/efi)'
shepherd: Evaluating user expression (and (defined? (quote transient?)) 
(map (# ?) ?)).
guix system: warning: exception caught while executing 'start' on service 
'swap-/var/swap/swapfile':
In procedure swapon: "/var/swap/swapfile": Invalid argument
guix system: warning: some services could not be upgraded
hint: To allow changes to all the system services to take effect, you will 
need to reboot.

The last I have reconfigured is about two weeks agod. Any idea what might be
going on and should I expect problems? As you can see, though, the current
generation is booting, and all looks well AFAICT:

Generation 18   Apr 17 2022 16:01:33(current)
  file name: /var/guix/profiles/system-18-link
  canonical file name: /gnu/store/2rc0xbxw343wv3lpzk64mb1ygcwp8337-system
  label: GNU with Linux 5.17.2
  bootloader: grub-efi
  root device: label: "root"
  kernel: /gnu/store/fv9xgiksnsck7hkxnmnmd075zndsmpl7-linux-5.17.2/bzImage
  channels:
guix-past:
  repository URL: https://gitlab.inria.fr/guix-hpc/guix-past
  branch: master
  commit: 972ba34ae42ba32488a396f565dfcbd6d70a7bdd
guix:
  repository URL: https://git.savannah.gnu.org/git/guix.git
  branch: master
  commit: 0c89fe9e17dc9e628c73959289464ac5f146c7cd
  configuration file: 
/gnu/store/6na7k26p3j8w6f588k8lbsr651xrf9mh-configuration.scm



Error pulling custom channel that includes another third-party channel

2022-04-13 Thread B. Wilson
Hey Guix,

In my channels.scm, in addition to the primary guix channel I have my-channel
and other-channel. This has worked just fine, until I added a commit in
my-channel which use-modules something from other-channel.

Now guix pull fails when attempting to build my-channel:

(exception misc-error (value #f) (value "no code for module ~S") (value 
((other channel module))) (value #f))

What am I missing?

Just to be clear, locally building with `guix build -L path/to/my-channel foo`
succeeds just fine. Is there somewhere inside my-channel where I need to
explicitly declare the dependency on other-channel?

Any help appreciated. Cheers,

BW



Re: Do we want versioned symbols in ncurses?

2022-04-13 Thread B. Wilson
Thanks for the quick turnaround.

> Debian has identifier some potential problems, quoted from
> :

Ah, yes. The version script also sets a bunch of symbols to local scope. Good
catch.

Off the top of my head, the only sanity-check I can come up with is a brute
force one: iterate through all referrers of ncurses, and check all their ELFs
for missing symbols.

> FWIW, there will only ever by one ‘version’ of a symbol, according to
> upstream:
> 
> 
> (also: )
> 
> so I don't quite see the point.

Agreed. I'm not sure it's worth the effort given the above.

For in-tree packages, there is vanishing benefit, but my particular pain
point was using a particular external pre-built .so. Oh well.



Do we want versioned symbols in ncurses?

2022-04-11 Thread B. Wilson
Hey Guix,

Is there any particular reason why our current ncurses packages builds without
versioned symbols? Upstream specifies only default versions (i.e. via @@), no
forced ones, so IIUC that should make the library drop-in replaceable for
everything we have so far. Am I missing something?

Building with symbols is easy enough: just configure --with-versioned-syms=yes.

I ran into this after encountering a project that explicitly uses ncurses
symbol versions. It is simple enough to carry a custom ncurses in my personal
channel for this, but if possible I thought it would be cool to have it in the
main one.

Thoughts?