forked from vv/bugafriend
Hall changes and stuff, say is broken
This commit is contained in:
parent
097244e6a0
commit
fcb4c49a3c
|
@ -0,0 +1,3 @@
|
|||
Contributors to Bugafriend 0.1:
|
||||
|
||||
Vivi Langdon <puttabutta@gmail.com>
|
|
@ -0,0 +1 @@
|
|||
For a complete log, please see the Git commit log at </PATH/TO/LOG>.
|
15
HACKING
15
HACKING
|
@ -9,13 +9,20 @@ By far the easiest way to hack on bugafriend is to develop using Guix:
|
|||
#+BEGIN_SRC bash
|
||||
# Obtain the source code
|
||||
cd /path/to/source-code
|
||||
guix environment -l guix.scm
|
||||
guix shell -Df guix.scm
|
||||
# In the new shell, run:
|
||||
hall dist --execute && autoreconf -vif && ./configure && make check
|
||||
hall build --execute && autoreconf -vif && ./configure && make check
|
||||
#+END_SRC
|
||||
|
||||
You may also want to set your directory as an authorized directory for
|
||||
`guix shell' so it works without arguments. To do that, simply run
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
echo $(pwd) >> $HOME/.config/guix/shell-authorized-directories
|
||||
#+END_SRC
|
||||
|
||||
You can now hack this project's files to your heart's content, whilst
|
||||
testing them from your `guix environment' shell.
|
||||
testing them from your `guix shell' shell.
|
||||
|
||||
To try out any scripts in the project you can now use
|
||||
|
||||
|
@ -43,5 +50,5 @@ dependencies manually:
|
|||
Once those dependencies are installed you can run:
|
||||
|
||||
#+BEGIN_SRC bash
|
||||
hall dist -x && autoreconf -vif && ./configure && make check
|
||||
hall build -x && autoreconf -vif && ./configure && make check
|
||||
#+END_SRC
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
bin_SCRIPTS = scripts/listen \
|
||||
scripts/say \
|
||||
scripts/listen
|
||||
|
||||
nodist_noinst_SCRIPTS = pre-inst-env
|
||||
|
||||
GOBJECTS = $(SOURCES:%.scm=%.go)
|
||||
|
||||
moddir=$(prefix)/share/guile/site/$(GUILE_EFFECTIVE_VERSION)
|
||||
godir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache
|
||||
ccachedir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache
|
||||
|
||||
nobase_dist_mod_DATA = $(SOURCES) $(NOCOMP_SOURCES)
|
||||
nobase_go_DATA = $(GOBJECTS)
|
||||
|
||||
# Make sure source files are installed first, so that the mtime of
|
||||
# installed compiled files is greater than that of installed source
|
||||
# files. See
|
||||
# <http://lists.gnu.org/archive/html/guile-devel/2010-07/msg00125.html>
|
||||
# for details.
|
||||
guile_install_go_files = install-nobase_goDATA
|
||||
$(guile_install_go_files): install-nobase_dist_modDATA
|
||||
|
||||
GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat
|
||||
SUFFIXES = .scm .go
|
||||
.scm.go:
|
||||
$(AM_V_GEN)$(top_builddir)/pre-inst-env $(GUILE_TOOLS) compile $(GUILE_TARGET) $(GUILE_WARNINGS) -o "$@" "$<"
|
||||
|
||||
SOURCES = bugafriend.scm \
|
||||
bugafriend/utils/registry.go \
|
||||
bugafriend/utils/registry.scm \
|
||||
bugafriend/hconfig.scm \
|
||||
bugafriend/hconfig.go \
|
||||
bugafriend/listener.go \
|
||||
bugafriend/listener.scm \
|
||||
bugafriend/ui.go \
|
||||
bugafriend/ui.scm
|
||||
|
||||
TESTS =
|
||||
|
||||
TEST_EXTENSIONS = .scm
|
||||
SCM_LOG_DRIVER = \
|
||||
$(top_builddir)/pre-inst-env \
|
||||
$(GUILE) --no-auto-compile -e main \
|
||||
$(top_srcdir)/build-aux/test-driver.scm
|
||||
|
||||
# Tell 'build-aux/test-driver.scm' to display only source file names,
|
||||
# not indivdual test names.
|
||||
AM_SCM_LOG_DRIVER_FLAGS = --brief=yes
|
||||
|
||||
AM_SCM_LOG_FLAGS = --no-auto-compile -L "$(top_srcdir)"
|
||||
|
||||
AM_TESTS_ENVIRONMENT = abs_top_srcdir="$(abs_top_srcdir)"
|
||||
|
||||
info_TEXINFOS = doc/version.texi \
|
||||
doc/bugafriend.texi
|
||||
|
||||
EXTRA_DIST = README.org \
|
||||
README \
|
||||
HACKING \
|
||||
COPYING \
|
||||
doc/.dirstamp \
|
||||
doc/stamp-vti \
|
||||
doc/bugafriend.info \
|
||||
NEWS \
|
||||
AUTHORS \
|
||||
ChangeLog \
|
||||
guix.scm \
|
||||
.gitignore \
|
||||
hall.scm \
|
||||
build-aux/texinfo.tex \
|
||||
build-aux/test-driver.scm \
|
||||
build-aux/missing \
|
||||
build-aux/install-sh \
|
||||
build-aux/mdate-sh \
|
||||
configure.ac \
|
||||
Makefile.am \
|
||||
pre-inst-env.in \
|
||||
build-aux/test-driver.scm \
|
||||
$(TESTS)
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
AM_DISTCHECK_DVI_TARGET = info # Disable DVI as part of distcheck
|
||||
|
||||
clean-go:
|
||||
-$(RM) $(GOBJECTS)
|
||||
.PHONY: clean-go
|
||||
|
||||
CLEANFILES = \
|
||||
$(BUILT_SOURCES) \
|
||||
$(GOBJECTS) \
|
||||
$(TESTS:tests/%.scm=%.log)
|
|
@ -0,0 +1,14 @@
|
|||
# -*- mode: org; coding: utf-8; -*-
|
||||
|
||||
#+TITLE: Bugafriend NEWS – history of user-visible changes
|
||||
#+STARTUP: content hidestars
|
||||
|
||||
Copyright © (2024) Vivi Langdon <puttabutta@gmail.com>
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
Please send Bugafriend bug reports to puttabutta@gmail.com.
|
||||
|
||||
* Publication at 0.1
|
|
@ -0,0 +1,35 @@
|
|||
(define-module
|
||||
(bugafriend hconfig)
|
||||
#:use-module
|
||||
(srfi srfi-26)
|
||||
#:export
|
||||
(%version
|
||||
%author
|
||||
%license
|
||||
%copyright
|
||||
%gettext-domain
|
||||
G_
|
||||
N_
|
||||
init-nls
|
||||
init-locale))
|
||||
|
||||
(define %version "0.1")
|
||||
|
||||
(define %author "Vivi Langdon")
|
||||
|
||||
(define %license 'gpl3+)
|
||||
|
||||
(define %copyright '(2024))
|
||||
|
||||
(define %gettext-domain "bugafriend")
|
||||
|
||||
(define G_ identity)
|
||||
|
||||
(define N_ identity)
|
||||
|
||||
(define (init-nls) "Dummy as no NLS is used" #t)
|
||||
|
||||
(define (init-locale)
|
||||
"Dummy as no NLS is used"
|
||||
#t)
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
(define-module (bugafriend listener)
|
||||
#:use-module (bugafriend utils registry)
|
||||
#:use-module (goblins)
|
||||
#:use-module (goblins ocapn ids)
|
||||
#:export (listen))
|
||||
|
||||
;; Code for the listener
|
||||
(define (^listener bcom)
|
||||
(lambda (text) (format #t "~a\n" text)))
|
||||
|
||||
(define (listen setup-sref)
|
||||
(on (prelay-sref->mycapn-registry setup-sref)
|
||||
(lambda (registry)
|
||||
(define listener (spawn ^listener))
|
||||
(define listener-id ($ registry 'register listener))
|
||||
(format #t "Listener registered at ~s\n" (ocapn-id->string listener-id)))))
|
|
@ -0,0 +1,75 @@
|
|||
(define-module (bugafriend ui)
|
||||
#:use-module (goblins)
|
||||
#:use-module (goblins vat)
|
||||
#:use-module (bugafriend utils registry)
|
||||
#:use-module (goblins ocapn ids)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:use-module (ice-9 suspendable-ports)
|
||||
#:use-module (fibers)
|
||||
#:use-module (fibers channels)
|
||||
#:use-module (fibers conditions)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (say))
|
||||
|
||||
;; https://www.gnu.org/software/guile/manual/guile.html#Non_002dBlocking-I_002fO
|
||||
(let* ((input (current-input-port))
|
||||
(flags (fcntl input F_GETFL)))
|
||||
(fcntl input F_SETFL (logior O_NONBLOCK flags)))
|
||||
(install-suspendable-ports!)
|
||||
|
||||
(define echo-vat
|
||||
(spawn-vat #:name "echo-vat"))
|
||||
;; Code for the speaker
|
||||
(define (%prompt) (format #t "say > "))
|
||||
|
||||
(define registry #f)
|
||||
|
||||
(define listener #f)
|
||||
(define listener-set? (make-condition))
|
||||
|
||||
(define (%eval-command cmd)
|
||||
(match cmd
|
||||
(("quit") #f) ;; Returns false so we quit the loop
|
||||
(("join" listener-id)
|
||||
(define listener-sref (string->ocapn-id listener-id))
|
||||
(on (<- registry 'enliven listener-sref)
|
||||
(lambda (l)
|
||||
(set! listener l)
|
||||
(signal-condition! listener-set?))))
|
||||
(else
|
||||
(format #t "Don't know how to handle ~a.\n" cmd)
|
||||
#t)))
|
||||
|
||||
(define (%eval-loop)
|
||||
((%prompt)
|
||||
(let* ((line (read-line (current-input-port)))
|
||||
(first-char (string-ref line 0)))
|
||||
(when (eq? first-char #\/) (%eval-command (substring line 1))))))
|
||||
|
||||
(define (%loop)
|
||||
(%prompt)
|
||||
(let* ((line (read-line (current-input-port)))
|
||||
(first-char (string-ref line 0)))
|
||||
(cond
|
||||
((eq? first-char #\/) (%eval-command (substring line 1)))
|
||||
(else
|
||||
(with-vat echo-vat
|
||||
(<- listener line)
|
||||
#t)))))
|
||||
|
||||
(define (say setup-sref)
|
||||
(define registry-set? (make-condition))
|
||||
(format #t "Hello?")
|
||||
(syscaller-free-fiber
|
||||
(lambda ()
|
||||
(format #t "Is it me you're looking for")
|
||||
(with-vat echo-vat
|
||||
(on (prelay-sref->mycapn-registry setup-sref)
|
||||
(lambda (r)
|
||||
(set! registry r)
|
||||
(signal-condition! registry-set?))))
|
||||
(while (%eval-loop))
|
||||
(wait registry-set?)
|
||||
(wait listener-set?)
|
||||
(while (%loop))
|
||||
(format #t "Bye!\n"))))
|
|
@ -0,0 +1,24 @@
|
|||
(define-module (bugafriend utils registry)
|
||||
#:use-module (goblins)
|
||||
#:use-module (goblins actor-lib methods)
|
||||
#:use-module (goblins ocapn captp)
|
||||
#:use-module (goblins ocapn netlayer prelay)
|
||||
#:use-module (goblins ocapn netlayer prelay-utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (prelay-sref->mycapn-registry))
|
||||
|
||||
;; Proposal for a registry object that bundles up a netlayer and mycapn into a single two-method capability
|
||||
;; See https://community.spritely.institute/t/feedback-on-ocapn-netlayers-interface/407
|
||||
(define (^mycapn-registry bcom netlayer netlayer-type)
|
||||
(define mycapn (spawn-mycapn netlayer))
|
||||
(methods
|
||||
[(register obj)
|
||||
($ mycapn 'register obj netlayer-type)]
|
||||
[(enliven id)
|
||||
($ mycapn 'enliven id)]))
|
||||
|
||||
(define (prelay-sref->mycapn-registry setup-sref)
|
||||
(on (fetch-and-spawn-prelay-netlayer setup-sref)
|
||||
(lambda (netlayer)
|
||||
(spawn ^mycapn-registry netlayer 'prelay))
|
||||
#:promise? #t))
|
|
@ -0,0 +1,179 @@
|
|||
;;;; test-driver.scm - Guile test driver for Automake testsuite harness
|
||||
|
||||
(define script-version "2019-01-15.13") ;UTC
|
||||
|
||||
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2019 Alex Sassmannshausen <alex@pompo.co>
|
||||
;;;
|
||||
;;; This program 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.
|
||||
;;;
|
||||
;;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;;; Commentary:
|
||||
;;;
|
||||
;;; This script provides a Guile test driver using the SRFI-64 Scheme API for
|
||||
;;; test suites. SRFI-64 is distributed with Guile since version 2.0.9.
|
||||
;;;
|
||||
;;; This script is a lightly modified version of the orignal written by
|
||||
;;; Matthieu Lirzin. The changes make it suitable for use as part of the
|
||||
;;; guile-hall infrastructure.
|
||||
;;;
|
||||
;;;; Code:
|
||||
|
||||
(use-modules (ice-9 getopt-long)
|
||||
(ice-9 pretty-print)
|
||||
(srfi srfi-26)
|
||||
(srfi srfi-64))
|
||||
|
||||
(define (show-help)
|
||||
(display "Usage:
|
||||
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
|
||||
[--expect-failure={yes|no}] [--color-tests={yes|no}]
|
||||
[--enable-hard-errors={yes|no}] [--brief={yes|no}}] [--]
|
||||
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
|
||||
The '--test-name', '--log-file' and '--trs-file' options are mandatory.
|
||||
"))
|
||||
|
||||
(define %options
|
||||
'((test-name (value #t))
|
||||
(log-file (value #t))
|
||||
(trs-file (value #t))
|
||||
(color-tests (value #t))
|
||||
(expect-failure (value #t)) ;XXX: not implemented yet
|
||||
(enable-hard-errors (value #t)) ;not implemented in SRFI-64
|
||||
(brief (value #t))
|
||||
(help (single-char #\h) (value #f))
|
||||
(version (single-char #\V) (value #f))))
|
||||
|
||||
(define (option->boolean options key)
|
||||
"Return #t if the value associated with KEY in OPTIONS is 'yes'."
|
||||
(and=> (option-ref options key #f) (cut string=? <> "yes")))
|
||||
|
||||
(define* (test-display field value #:optional (port (current-output-port))
|
||||
#:key pretty?)
|
||||
"Display 'FIELD: VALUE\n' on PORT."
|
||||
(if pretty?
|
||||
(begin
|
||||
(format port "~A:~%" field)
|
||||
(pretty-print value port #:per-line-prefix "+ "))
|
||||
(format port "~A: ~S~%" field value)))
|
||||
|
||||
(define* (result->string symbol #:key colorize?)
|
||||
"Return SYMBOL as an upper case string. Use colors when COLORIZE is #t."
|
||||
(let ((result (string-upcase (symbol->string symbol))))
|
||||
(if colorize?
|
||||
(string-append (case symbol
|
||||
((pass) "[0;32m") ;green
|
||||
((xfail) "[1;32m") ;light green
|
||||
((skip) "[1;34m") ;blue
|
||||
((fail xpass) "[0;31m") ;red
|
||||
((error) "[0;35m")) ;magenta
|
||||
result
|
||||
"[m") ;no color
|
||||
result)))
|
||||
|
||||
(define* (test-runner-gnu test-name #:key color? brief? out-port trs-port)
|
||||
"Return an custom SRFI-64 test runner. TEST-NAME is a string specifying the
|
||||
file name of the current the test. COLOR? specifies whether to use colors,
|
||||
and BRIEF?, well, you know. OUT-PORT and TRS-PORT must be output ports. The
|
||||
current output port is supposed to be redirected to a '.log' file."
|
||||
|
||||
(define (test-on-test-begin-gnu runner)
|
||||
;; Procedure called at the start of an individual test case, before the
|
||||
;; test expression (and expected value) are evaluated.
|
||||
(let ((result (cute assq-ref (test-result-alist runner) <>)))
|
||||
(format #t "test-name: ~A~%" (result 'test-name))
|
||||
(format #t "location: ~A~%"
|
||||
(string-append (result 'source-file) ":"
|
||||
(number->string (result 'source-line))))
|
||||
(test-display "source" (result 'source-form) #:pretty? #t)))
|
||||
|
||||
(define (test-on-test-end-gnu runner)
|
||||
;; Procedure called at the end of an individual test case, when the result
|
||||
;; of the test is available.
|
||||
(let* ((results (test-result-alist runner))
|
||||
(result? (cut assq <> results))
|
||||
(result (cut assq-ref results <>)))
|
||||
(unless brief?
|
||||
;; Display the result of each test case on the console.
|
||||
(format out-port "~A: ~A - ~A~%"
|
||||
(result->string (test-result-kind runner) #:colorize? color?)
|
||||
test-name (test-runner-test-name runner)))
|
||||
(when (result? 'expected-value)
|
||||
(test-display "expected-value" (result 'expected-value)))
|
||||
(when (result? 'expected-error)
|
||||
(test-display "expected-error" (result 'expected-error) #:pretty? #t))
|
||||
(when (result? 'actual-value)
|
||||
(test-display "actual-value" (result 'actual-value)))
|
||||
(when (result? 'actual-error)
|
||||
(test-display "actual-error" (result 'actual-error) #:pretty? #t))
|
||||
(format #t "result: ~a~%" (result->string (result 'result-kind)))
|
||||
(newline)
|
||||
(format trs-port ":test-result: ~A ~A~%"
|
||||
(result->string (test-result-kind runner))
|
||||
(test-runner-test-name runner))))
|
||||
|
||||
(define (test-on-group-end-gnu runner)
|
||||
;; Procedure called by a 'test-end', including at the end of a test-group.
|
||||
(let ((fail (or (positive? (test-runner-fail-count runner))
|
||||
(positive? (test-runner-xpass-count runner))))
|
||||
(skip (or (positive? (test-runner-skip-count runner))
|
||||
(positive? (test-runner-xfail-count runner)))))
|
||||
;; XXX: The global results need some refinements for XPASS.
|
||||
(format trs-port ":global-test-result: ~A~%"
|
||||
(if fail "FAIL" (if skip "SKIP" "PASS")))
|
||||
(format trs-port ":recheck: ~A~%"
|
||||
(if fail "yes" "no"))
|
||||
(format trs-port ":copy-in-global-log: ~A~%"
|
||||
(if (or fail skip) "yes" "no"))
|
||||
(when brief?
|
||||
;; Display the global test group result on the console.
|
||||
(format out-port "~A: ~A~%"
|
||||
(result->string (if fail 'fail (if skip 'skip 'pass))
|
||||
#:colorize? color?)
|
||||
test-name))
|
||||
#f))
|
||||
|
||||
(let ((runner (test-runner-null)))
|
||||
(test-runner-on-test-begin! runner test-on-test-begin-gnu)
|
||||
(test-runner-on-test-end! runner test-on-test-end-gnu)
|
||||
(test-runner-on-group-end! runner test-on-group-end-gnu)
|
||||
(test-runner-on-bad-end-name! runner test-on-bad-end-name-simple)
|
||||
runner))
|
||||
|
||||
;;;
|
||||
;;; Entry point.
|
||||
;;;
|
||||
|
||||
(define (main . args)
|
||||
(let* ((opts (getopt-long (command-line) %options))
|
||||
(option (cut option-ref opts <> <>)))
|
||||
(cond
|
||||
((option 'help #f) (show-help))
|
||||
((option 'version #f) (format #t "test-driver.scm ~A" script-version))
|
||||
(else
|
||||
(let ((log (open-file (option 'log-file "") "w0"))
|
||||
(trs (open-file (option 'trs-file "") "wl"))
|
||||
(out (duplicate-port (current-output-port) "wl")))
|
||||
(redirect-port log (current-output-port))
|
||||
(redirect-port log (current-warning-port))
|
||||
(redirect-port log (current-error-port))
|
||||
(test-with-runner
|
||||
(test-runner-gnu (option 'test-name #f)
|
||||
#:color? (option->boolean opts 'color-tests)
|
||||
#:brief? (option->boolean opts 'brief)
|
||||
#:out-port out #:trs-port trs)
|
||||
(load-from-path (option 'test-name #f)))
|
||||
(close-port log)
|
||||
(close-port trs)
|
||||
(close-port out))))
|
||||
(exit 0)))
|
|
@ -0,0 +1,41 @@
|
|||
dnl -*- Autoconf -*-
|
||||
|
||||
AC_INIT(bugafriend, 0.1)
|
||||
AC_SUBST(HVERSION, "\"0.1\"")
|
||||
AC_SUBST(AUTHOR, "\"Vivi Langdon\"")
|
||||
AC_SUBST(COPYRIGHT, "'(2024)")
|
||||
AC_SUBST(LICENSE, gpl3+)
|
||||
AC_CONFIG_SRCDIR(bugafriend.scm)
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects color-tests parallel-tests -Woverride -Wno-portability])
|
||||
AM_SILENT_RULES([yes])
|
||||
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env])
|
||||
AC_CONFIG_FILES([scripts/say],[chmod +x scripts/say])
|
||||
AC_CONFIG_FILES([scripts/listen],[chmod +x scripts/listen])
|
||||
dnl Search for 'guile' and 'guild'. This macro defines
|
||||
dnl 'GUILE_EFFECTIVE_VERSION'.
|
||||
GUILE_PKG([3.0 2.2 2.0])
|
||||
GUILE_PROGS
|
||||
GUILE_SITE_DIR
|
||||
if test "x$GUILD" = "x"; then
|
||||
AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
|
||||
fi
|
||||
|
||||
if test "$cross_compiling" != no; then
|
||||
GUILE_TARGET="--target=$host_alias"
|
||||
AC_SUBST([GUILE_TARGET])
|
||||
fi
|
||||
|
||||
dnl Hall auto-generated guile-module dependencies
|
||||
GUILE_MODULE_REQUIRED([goblins])
|
||||
GUILE_MODULE_REQUIRED([ncurses curses])
|
||||
|
||||
dnl Installation directories for .scm and .go files.
|
||||
guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION"
|
||||
guileobjectdir="${libdir}/guile/$GUILE_EFFECTIVE_VERSION/site-ccache"
|
||||
AC_SUBST([guilemoduledir])
|
||||
AC_SUBST([guileobjectdir])
|
||||
|
||||
AC_OUTPUT
|
34
guix.scm
34
guix.scm
|
@ -1,29 +1,37 @@
|
|||
(use-modules
|
||||
(guix packages)
|
||||
((guix licenses) #:prefix license:)
|
||||
(guix download)
|
||||
(guix build-system gnu)
|
||||
(gnu packages)
|
||||
(gnu packages autotools)
|
||||
(gnu packages guile)
|
||||
(gnu packages guile-xyz)
|
||||
(gnu packages pkg-config)
|
||||
(gnu packages texinfo))
|
||||
(gnu packages texinfo)
|
||||
(guix build-system gnu)
|
||||
(guix download)
|
||||
(guix gexp)
|
||||
((guix licenses) #:prefix license:)
|
||||
(guix packages)
|
||||
(srfi srfi-1))
|
||||
|
||||
(package
|
||||
(name "bugafriend")
|
||||
(version "0.1")
|
||||
(source "./bugafriend-0.1.tar.gz")
|
||||
(source
|
||||
(local-file
|
||||
(dirname (current-filename))
|
||||
#:recursive?
|
||||
#t
|
||||
#:select?
|
||||
(lambda (file stat)
|
||||
(not (any (lambda (my-string)
|
||||
(string-contains file my-string))
|
||||
(list ".git" ".dir-locals.el" "guix.scm"))))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments `())
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("pkg-config" ,pkg-config)
|
||||
("texinfo" ,texinfo)))
|
||||
(inputs `(("guile" ,guile-3.0)
|
||||
("guile-goblins" ,guile-goblins)))
|
||||
(propagated-inputs `())
|
||||
(list autoconf automake pkg-config texinfo))
|
||||
(inputs (list guile-3.0))
|
||||
(propagated-inputs
|
||||
(list guile-goblins guile-ncurses))
|
||||
(synopsis "")
|
||||
(description "")
|
||||
(home-page "")
|
||||
|
|
53
hall.scm
53
hall.scm
|
@ -3,25 +3,68 @@
|
|||
(prefix "")
|
||||
(version "0.1")
|
||||
(author "Vivi Langdon")
|
||||
(email "puttabutta@gmail.com")
|
||||
(copyright (2024))
|
||||
(synopsis "")
|
||||
(description "")
|
||||
(home-page "")
|
||||
(license gpl3+)
|
||||
(dependencies `(guile-goblins))
|
||||
(dependencies
|
||||
`(("guile-goblins" (goblins) ,guile-goblins)
|
||||
("guile-ncurses" (ncurses curses) ,guile-ncurses)))
|
||||
(skip ())
|
||||
(features
|
||||
((guix #f)
|
||||
(use-guix-specs-for-dependencies #f)
|
||||
(native-language-support #f)
|
||||
(licensing #t)))
|
||||
(files (libraries
|
||||
((scheme-file "bugafriend")
|
||||
(directory "bugafriend" ())))
|
||||
(directory
|
||||
"bugafriend"
|
||||
((directory
|
||||
"utils"
|
||||
((compiled-scheme-file "registry")
|
||||
(scheme-file "registry")))
|
||||
(scheme-file "hconfig")
|
||||
(compiled-scheme-file "hconfig")
|
||||
(compiled-scheme-file "listener")
|
||||
(scheme-file "listener")
|
||||
(compiled-scheme-file "ui")
|
||||
(scheme-file "ui")))))
|
||||
(tests ((directory "tests" ())))
|
||||
(programs ((directory "scripts" ())))
|
||||
(programs
|
||||
((directory
|
||||
"scripts"
|
||||
((text-file "listen")
|
||||
(in-file "say")
|
||||
(in-file "listen")))))
|
||||
(documentation
|
||||
((org-file "README")
|
||||
(symlink "README" "README.org")
|
||||
(text-file "HACKING")
|
||||
(text-file "COPYING")
|
||||
(directory "doc" ((texi-file "bugafriend")))))
|
||||
(directory
|
||||
"doc"
|
||||
((texi-file "version")
|
||||
(text-file ".dirstamp")
|
||||
(text-file "stamp-vti")
|
||||
(info-file "bugafriend")
|
||||
(texi-file "bugafriend")))
|
||||
(text-file "NEWS")
|
||||
(text-file "AUTHORS")
|
||||
(text-file "ChangeLog")))
|
||||
(infrastructure
|
||||
((scheme-file "guix")
|
||||
(text-file ".gitignore")
|
||||
(scheme-file "hall")))))
|
||||
(scheme-file "hall")
|
||||
(directory
|
||||
"build-aux"
|
||||
((tex-file "texinfo")
|
||||
(scheme-file "test-driver")
|
||||
(text-file "missing")
|
||||
(text-file "install-sh")
|
||||
(text-file "mdate-sh")))
|
||||
(autoconf-file "configure")
|
||||
(automake-file "Makefile")
|
||||
(in-file "pre-inst-env")))))
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
|
||||
abs_top_srcdir="`cd "@abs_top_srcdir@" > /dev/null; pwd`"
|
||||
abs_top_builddir="`cd "@abs_top_builddir@" > /dev/null; pwd`"
|
||||
|
||||
GUILE_LOAD_COMPILED_PATH="$abs_top_builddir${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
|
||||
GUILE_LOAD_PATH="$abs_top_builddir:$abs_top_srcdir${GUILE_LOAD_PATH:+:}:$GUILE_LOAD_PATH"
|
||||
export GUILE_LOAD_COMPILED_PATH GUILE_LOAD_PATH
|
||||
|
||||
PATH="$abs_top_builddir/scripts:$PATH"
|
||||
export PATH
|
||||
|
||||
exec "$@"
|
|
@ -0,0 +1,17 @@
|
|||
#!/home/vv/.guix-profile/bin/guile --no-auto-compile
|
||||
-*- scheme -*-
|
||||
!#
|
||||
|
||||
(use-modules
|
||||
(goblins)
|
||||
(goblins ocapn ids)
|
||||
(fibers conditions)
|
||||
(bugafriend listener))
|
||||
|
||||
;; So far nothing triggers this for listener
|
||||
(define can-quit? (make-condition))
|
||||
|
||||
(with-vat (spawn-vat #:name "Listener UI")
|
||||
(listen (string->ocapn-id (list-ref (command-line) 1))))
|
||||
|
||||
(wait can-quit?)
|
|
@ -0,0 +1,17 @@
|
|||
#!@GUILE@ --no-auto-compile
|
||||
-*- scheme -*-
|
||||
!#
|
||||
|
||||
(use-modules
|
||||
(goblins)
|
||||
(goblins ocapn ids)
|
||||
(fibers conditions)
|
||||
(bugafriend listener))
|
||||
|
||||
;; So far nothing triggers this for listener
|
||||
(define can-quit? (make-condition))
|
||||
|
||||
(with-vat (spawn-vat #:name "Listener UI")
|
||||
(listen (string->ocapn-id (list-ref (command-line) 1))))
|
||||
|
||||
(wait can-quit?)
|
|
@ -0,0 +1,11 @@
|
|||
#!/home/vv/.guix-profile/bin/guile --no-auto-compile
|
||||
-*- scheme -*-
|
||||
!#
|
||||
|
||||
(use-modules
|
||||
(goblins)
|
||||
(goblins ocapn ids)
|
||||
(bugafriend ui))
|
||||
|
||||
(with-vat (spawn-vat #:name "Speaker UI")
|
||||
(say (string->ocapn-id (list-ref (command-line) 1))))
|
|
@ -0,0 +1,11 @@
|
|||
#!@GUILE@ --no-auto-compile
|
||||
-*- scheme -*-
|
||||
!#
|
||||
|
||||
(use-modules
|
||||
(goblins)
|
||||
(goblins ocapn ids)
|
||||
(bugafriend ui))
|
||||
|
||||
(with-vat (spawn-vat #:name "Speaker UI")
|
||||
(say (string->ocapn-id (list-ref (command-line) 1))))
|
Loading…
Reference in New Issue