From 43b2f86d88f7a6036edb8661eda6a3fda7990fc6 Mon Sep 17 00:00:00 2001 From: Juliana Rat Date: Mon, 12 Feb 2024 22:46:53 -0500 Subject: [PATCH] Cleanup build infrastructure --- AUTHORS | 3 - ChangeLog | 1 - NEWS | 14 --- bootstrap | 5 -- build-aux/test-driver.scm | 179 -------------------------------------- guile-termenv/hconfig.scm | 35 -------- guix.scm | 65 ++++++++------ hall.scm | 88 +++++++++---------- 8 files changed, 81 insertions(+), 309 deletions(-) delete mode 100644 AUTHORS delete mode 100644 ChangeLog delete mode 100644 NEWS delete mode 100755 bootstrap delete mode 100644 build-aux/test-driver.scm delete mode 100644 guile-termenv/hconfig.scm diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 23a511f..0000000 --- a/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -Contributors to Guile-Termenv 0.1: - - <> diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 76c33bf..0000000 --- a/ChangeLog +++ /dev/null @@ -1 +0,0 @@ -For a complete log, please see the Git commit log at . diff --git a/NEWS b/NEWS deleted file mode 100644 index 54db4eb..0000000 --- a/NEWS +++ /dev/null @@ -1,14 +0,0 @@ -# -*- mode: org; coding: utf-8; -*- - -#+TITLE: Guile-Termenv NEWS – history of user-visible changes -#+STARTUP: content hidestars - -Copyright © (2024) <> - - 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 Guile-Termenv bug reports to . - -* Publication at 0.1 diff --git a/bootstrap b/bootstrap deleted file mode 100755 index 0131994..0000000 --- a/bootstrap +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -autoreconf -vif -./configure -make diff --git a/build-aux/test-driver.scm b/build-aux/test-driver.scm deleted file mode 100644 index 0c555ea..0000000 --- a/build-aux/test-driver.scm +++ /dev/null @@ -1,179 +0,0 @@ -;;;; test-driver.scm - Guile test driver for Automake testsuite harness - -(define script-version "2019-01-15.13") ;UTC - -;;; Copyright © 2015, 2016 Mathieu Lirzin -;;; Copyright © 2019 Alex Sassmannshausen -;;; -;;; 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 . - -;;;; 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) "") ;green - ((xfail) "") ;light green - ((skip) "") ;blue - ((fail xpass) "") ;red - ((error) "")) ;magenta - result - "") ;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))) diff --git a/guile-termenv/hconfig.scm b/guile-termenv/hconfig.scm deleted file mode 100644 index ea2ecb4..0000000 --- a/guile-termenv/hconfig.scm +++ /dev/null @@ -1,35 +0,0 @@ -(define-module - (guile-termenv 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 "") - -(define %license 'gpl3+) - -(define %copyright '(2024)) - -(define %gettext-domain "guile-termenv") - -(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) - diff --git a/guix.scm b/guix.scm index c4143ae..7f2f9c2 100644 --- a/guix.scm +++ b/guix.scm @@ -1,16 +1,15 @@ -(use-modules - (gnu packages) - (gnu packages autotools) - (gnu packages guile) - (gnu packages guile-xyz) - (gnu packages pkg-config) - (gnu packages texinfo) - (guix build-system gnu) - (guix download) - (guix gexp) - ((guix licenses) #:prefix license:) - (guix packages) - (srfi srfi-1)) +(use-modules (gnu packages) + (gnu packages autotools) + (gnu packages guile) + (gnu packages guile-xyz) + (gnu packages pkg-config) + (gnu packages texinfo) + (guix build-system gnu) + (guix download) + (guix gexp) + ((guix licenses) #:prefix license:) + (guix packages) + (srfi srfi-1)) (package (name "guile-termenv") @@ -18,21 +17,33 @@ (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")))))) + #: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 - (list autoconf automake pkg-config texinfo)) + (arguments + (list + #:make-flags + #~(list "GUILE_AUTO_COMPILE=0") + #:phases + #~(modify-phases %standard-phases + (add-before 'bootstrap 'hall + (lambda _ + (system* "hall" "build" "-x"))) + (replace 'bootstrap + (lambda _ + (system* "autoreconf" "-vif")))))) + (native-inputs (list autoconf + automake + guile-hall + pkg-config + texinfo)) (inputs (list guile-3.0)) - (propagated-inputs (list)) - (synopsis "") - (description "") - (home-page "") + (synopsis "Guile port of termenv") + (description + "A library to provide easy control of terminals from Guile using terminal control codes.") + (home-page "https://git.solarpunk.moe/vv/guile-termenv") (license license:gpl3+)) diff --git a/hall.scm b/hall.scm index 3d4cf0f..9a1096f 100644 --- a/hall.scm +++ b/hall.scm @@ -1,46 +1,44 @@ (hall-description - (name "guile-termenv") - (prefix "") - (version "0.1") - (author "") - (email "") - (copyright (2024)) - (synopsis "") - (description "") - (home-page "") - (license gpl3+) - (dependencies `()) - (skip ("bootstrap")) - (features - ((guix #f) - (use-guix-specs-for-dependencies #f) - (native-language-support #f) - (licensing #f))) - (files (libraries - ((directory - "termenv" - ((scheme-file "style") - (scheme-file "unix") - (scheme-file "hyperlink") - (scheme-file "screen") - (scheme-file "color") - (scheme-file "hconfig"))) - (scheme-file "termenv") - (directory - "tests" - ((scheme-file "utils"))))) - (tests ((directory - "tests" - ((scheme-file "test-screen") - (scheme-file "test-style"))))) - (programs ((directory "scripts" ()))) - (documentation - ((org-file "README") - (symlink "README" "README.org") - (text-file "HACKING") - (text-file "COPYING") - (directory "doc" ((texi-file "guile-termenv"))))) - (infrastructure - ((scheme-file "guix") - (text-file ".gitignore") - (scheme-file "hall"))))) + (name "termenv") + (prefix "guile") + (version "0.1") + (author "Vivanne Langdon") + (email "") + (copyright (2024)) + (synopsis "Guile port of termenv") + (description + "A library to provide easy control of terminals from Guile using terminal control codes.") + (home-page "https://git.solarpunk.moe/vv/guile-termenv") + (license gpl3+) + (dependencies `()) + (features + ((guix #t) + (use-guix-specs-for-dependencies #f) + (native-language-support #f) + (licensing #f))) + (files (libraries + ((directory "termenv" + ((scheme-file "style") + (scheme-file "unix") + (scheme-file "hyperlink") + (scheme-file "screen") + (scheme-file "color") + (scheme-file "hconfig"))) + (scheme-file "termenv"))) + (tests ((directory "tests" + ((scheme-file "test-screen") + (scheme-file "test-style"))))) + (documentation + ((org-file "README") + (symlink "README" "README.org") + (text-file "HACKING") + (text-file "COPYING") + (directory "doc" + ((texi-file "guile-termenv"))))) + (programs ()) + (infrastructure + ((scheme-file "guix") + (text-file ".gitignore") + (scheme-file "hall") + (directory "tests" + ((scheme-file "utils")))))))