First example of g-golf (hello world) not working

Zelphir Kaltstahl <[email protected]>
Newsgroups gmane.lisp.guile.user
Message-ID <[email protected]>
Hello Guile Users!

Yesterday I decided to give g-golf a try. Unfortunately I did not get very far 
at all. I tried running the hello world example, and it already crashed:

~~~~main.scm~~~~
;;;;
;;;; Copyright (C) 2022 - 2023
;;;; Free Software Foundation, Inc.

;;;; This file is part of GNU G-Golf

;;;; GNU G-Golf is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU Lesser General Public License as
;;;; published by the Free Software Foundation; either version 3 of the
;;;; License, or (at your option) any later version.

;;;; GNU G-Golf 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
;;;; Lesser General Public License for more details.

;;;; You should have received a copy of the GNU Lesser General Public
;;;; License along with GNU G-Golf.  If not, see
;;;;<https://www.gnu.org/licenses/lgpl.html>.
;;;;

;;; Commentary:

;;; Code:

(eval-when (expand load eval)
   (use-modules (oop goops))

   (default-duplicate-binding-handler
     '(merge-generics replace warn-override-core warn last))

   (use-modules (g-golf))

   (g-irepository-require "Gtk" #:version "4.0")
   (for-each (lambda (name)
               (gi-import-by-name "Gtk" name))
       '("Application"
         "ApplicationWindow"
         "Box"
         "Label"
         "Button")))


(define (activate app)
   (let ((window (make <gtk-application-window>
                   #:title "Hello"
                   #:default-width 320
                   #:default-height 240
                   #:application app))
         (box    (make <gtk-box>
                   #:margin-top 6
                   #:margin-start 6
                   #:margin-bottom 6
                   #:margin-end 6
                   #:orientation 'vertical))
         (label  (make <gtk-label>
                   #:label "Hello, World!"
                   #:hexpand #t
                   #:vexpand #t))
         (button (make <gtk-button>
                   #:label "Close")))

     (connect button
          'clicked
          (lambda (b)
                (close window)))

     (set-child window box)
     (append box label)
     (append box button)
     (present window)))


(define (main args)
   (let ((app (make <gtk-application>
                #:application-id "org.gtk.example")))
     (connect app 'activate activate)
     (let ((status (g-application-run app args)))
       (exit status))))
~~~~

Running this results in the following error:

~~~~
guix shell: checking the environment variables visible from shell '/bin/bash'...
guix shell: All is good!  The shell gets correct environment variables.
;;; note: source file /home/hans/dev/guile/gui/g-golf/example-01/main.scm
;;;       newer than compiled /home/hans/.cache/guile/ccache/3.0-LE-8-4.6/home/hans/dev/guile/gui/g-golf/example-01/main.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /home/hans/dev/guile/gui/g-golf/example-01/main.scm
**
GLib-GObject:ERROR:../glib-2.82.1/gobject/gbinding.c:874:g_binding_class_init: assertion failed: (gobject_notify_signal_id != 0)
Bail out!GLib-GObject:ERROR:../glib-2.82.1/gobject/gbinding.c:874:g_binding_class_init: assertion failed: (gobject_notify_signal_id != 0)
make: *** [Makefile:18: run] Error 134
~~~~

I am running it in a guix shell, which has the package "guile" and the package 
"guile-g-golf" installed.

~~~~channels.scm~~~~
(list (channel
         (name 'guix)
         (url"https://git.savannah.gnu.org/git/guix.git")
         (branch "master")
         (commit
           "f0c0769189d11debf7b237a02695c44c9773d52a")
         (introduction
           (make-channel-introduction
             "9edb3f66fd807b096b48283debdcddccfea34bad"
             (openpgp-fingerprint
               "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))
~~~~

~~~~manifest.scm~~~~
(specifications->manifest
  '("guile"
    "guile-g-golf"
    "make"
    "bash"))
~~~~

Using time machine:

~~~~
guix time-machine --channels=guix-env/channels.scm -- shell --check --manifest=guix-env/manifest.scm -- bash -c guile -L . main.scm
~~~~

What is going wrong?

Is the example code meant to be run in a different way?

Does anyone know how to deal with this error and make it work?

Best regards,
Zelphir

-- 
repositories:https://notabug.org/ZelphirKaltstahl,https://codeberg.org/ZelphirKaltstahl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.