guix: Refactor package setup.
Next to the convenient environment setup and package build from git guix environment -l .guix.scm guix build -f .guix.scm we can now also build other included packages GUIX_PACKAGE_PATH=guix guix build mes@0.17 GUIX_PACKAGE_PATH=guix guix build nyacc@0.80.42 * guix/git/mes.scm: Move from .guix.scm, make a module. * .guix.scm: Move from guix.scm, use it. * build-aux/manifest.scm: Update location. * build-aux/pre-inst-env.in: Support it. * configure: Check for guix. * build-aux/export.make: Export GUIX. * GNUmakefile (update-hash): New target.
This commit is contained in:
parent
ceeaa6b50c
commit
53c0941937
41
.guix.scm
Normal file
41
.guix.scm
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
;;; .guix.scm -- Guix package definition
|
||||||
|
|
||||||
|
;;; Mes --- Maxwell Equations of Software
|
||||||
|
;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
;;;
|
||||||
|
;;; This file is part of Mes.
|
||||||
|
;;;
|
||||||
|
;;; Mes 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.
|
||||||
|
;;;
|
||||||
|
;;; Mes 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 Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; GNU Guix development package. To build and install, run:
|
||||||
|
;;
|
||||||
|
;; guix package -f .guix.scm
|
||||||
|
;;
|
||||||
|
;; To build it, but not install it, run:
|
||||||
|
;;
|
||||||
|
;; guix build -f .guix.scm
|
||||||
|
;;
|
||||||
|
;; To use as the basis for a development environment, run:
|
||||||
|
;;
|
||||||
|
;; guix environment -l .guix.scm
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(set! %load-path (cons "guix" %load-path))
|
||||||
|
(use-modules (git mes))
|
||||||
|
|
||||||
|
;; Return it here so `guix build/environment/package' can consume it directly.
|
||||||
|
mes.git
|
12
GNUmakefile
12
GNUmakefile
|
@ -174,6 +174,18 @@ $(TARBALL): ${top_builddest}.tarball-version | generate-ChangeLog
|
||||||
--transform=s,^,$(TARBALL_DIR)/,S -T- -czf $@
|
--transform=s,^,$(TARBALL_DIR)/,S -T- -czf $@
|
||||||
git checkout ChangeLog
|
git checkout ChangeLog
|
||||||
|
|
||||||
|
ifdef GUIX
|
||||||
|
update-hash: $(TARBALL)
|
||||||
|
$(GUIX) download file://$(PWD)/$<
|
||||||
|
sed -i -e 's,(base32 #!mes!# "[^"]*"),(base32 #!mes!# "$(shell $(GUIX) hash $<)"),' guix/git/mes.scm
|
||||||
|
|
||||||
|
else
|
||||||
|
$(warning update-hash: no guix)
|
||||||
|
endif
|
||||||
|
|
||||||
|
release: update-hash
|
||||||
|
./pre-inst-env $(GUIX) build mes@$(VERSION) --with-source=$(TARBALL)
|
||||||
|
|
||||||
define HELP_TOP
|
define HELP_TOP
|
||||||
Usage: make [OPTION]... [TARGET]...
|
Usage: make [OPTION]... [TARGET]...
|
||||||
|
|
||||||
|
|
4
HACKING
4
HACKING
|
@ -1,11 +1,11 @@
|
||||||
-*-mode:org-*-
|
-*-mode:org-*-
|
||||||
|
|
||||||
* SETUP
|
* SETUP
|
||||||
guix environment -l guix.scm #64 bit + 32bit
|
guix environment -l .guix.scm #64 bit + 32bit
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
guix environment --system=i686-linux -l guix.scm #32 bit only
|
guix environment --system=i686-linux -l .guix.scm #32 bit only
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,10 @@ ifdef GUILE_TOOLS
|
||||||
export GUILE_TOOLS
|
export GUILE_TOOLS
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef GUIX
|
||||||
|
export GUIX
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef PERL
|
ifdef PERL
|
||||||
export PERL
|
export PERL
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -16,5 +16,5 @@
|
||||||
;;; You should have received a copy of the GNU General Public License
|
;;; You should have received a copy of the GNU General Public License
|
||||||
;;; along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
(include "../guix.scm")
|
(include "../.guix.scm")
|
||||||
(packages->manifest (map cadr (package-direct-inputs mes)))
|
(packages->manifest (map cadr (package-direct-inputs mes)))
|
||||||
|
|
|
@ -26,7 +26,7 @@ MES_PREFIX=mes
|
||||||
export MES_PREFIX
|
export MES_PREFIX
|
||||||
|
|
||||||
GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
|
GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
|
||||||
GUILE_LOAD_PATH="$abs_top_srcdir/module${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
|
GUILE_LOAD_PATH="$abs_top_srcdir/module:$abs_top_srcdir/guix${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
|
||||||
if [ -n "$top_builddest" ]; then
|
if [ -n "$top_builddest" ]; then
|
||||||
GUILE_LOAD_PATH="$abs_top_buildir/module:$GUILE_LOAD_PATH"
|
GUILE_LOAD_PATH="$abs_top_buildir/module:$GUILE_LOAD_PATH"
|
||||||
fi
|
fi
|
||||||
|
|
3
configure
vendored
3
configure
vendored
|
@ -4,7 +4,7 @@ unset LANG LC_ALL
|
||||||
guile=$(command -v ${GUILE-guile})
|
guile=$(command -v ${GUILE-guile})
|
||||||
guix=$(command -v ${GUIX-guix})
|
guix=$(command -v ${GUIX-guix})
|
||||||
if [ -n "$guix" ] ; then
|
if [ -n "$guix" ] ; then
|
||||||
install="guix environment -l guix.scm"
|
install="guix environment -l .guix.scm"
|
||||||
else
|
else
|
||||||
install="sudo apt-get install guile-2.2-dev"
|
install="sudo apt-get install guile-2.2-dev"
|
||||||
fi
|
fi
|
||||||
|
@ -344,6 +344,7 @@ Some influential environment variables:
|
||||||
(cons (check-program-version program) results))
|
(cons (check-program-version program) results))
|
||||||
'()
|
'()
|
||||||
(list (make-dep "guile" '(2 0) #:commands '("guile-2.2" "guile-2.0" "guile-2" "guile"))
|
(list (make-dep "guile" '(2 0) #:commands '("guile-2.2" "guile-2.0" "guile-2" "guile"))
|
||||||
|
(make-dep "guix" '(0 13) #:optional? #t)
|
||||||
(make-dep "bash" '(2 0) #:optional? #t)
|
(make-dep "bash" '(2 0) #:optional? #t)
|
||||||
(make-dep "guile-tools" '(2 0))
|
(make-dep "guile-tools" '(2 0))
|
||||||
(make-dep "mes-seed" '(0 16 1) #:optional? #t
|
(make-dep "mes-seed" '(0 16 1) #:optional? #t
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
;;; guix.scm -- Guix package definition
|
|
||||||
|
|
||||||
;;; Mes --- Maxwell Equations of Software
|
;;; Mes --- Maxwell Equations of Software
|
||||||
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
;;;
|
||||||
|
;;; This file is part of Mes.
|
||||||
|
;;;
|
||||||
;;; Also borrowing code from:
|
;;; Also borrowing code from:
|
||||||
;;; guile-sdl2 --- FFI bindings for SDL2
|
;;; guile-sdl2 --- FFI bindings for SDL2
|
||||||
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
||||||
|
|
||||||
;;;
|
|
||||||
;;; guix.scm: This file is part of Mes.
|
|
||||||
;;;
|
;;;
|
||||||
;;; Mes is free software; you can redistribute it and/or modify it
|
;;; Mes is free software; you can redistribute it and/or modify it
|
||||||
;;; under the terms of the GNU General Public License as published by
|
;;; under the terms of the GNU General Public License as published by
|
||||||
|
@ -23,49 +20,34 @@
|
||||||
;;; You should have received a copy of the GNU General Public License
|
;;; You should have received a copy of the GNU General Public License
|
||||||
;;; along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
;;; along with Mes. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
;;; Commentary:
|
(define-module (git mes)
|
||||||
;;
|
#:use-module (srfi srfi-1)
|
||||||
;; GNU Guix development package. To build and install, run:
|
#:use-module (srfi srfi-26)
|
||||||
;;
|
#:use-module (ice-9 match)
|
||||||
;; guix package -f guix.scm
|
#:use-module (ice-9 popen)
|
||||||
;;
|
#:use-module (ice-9 rdelim)
|
||||||
;; To build it, but not install it, run:
|
#:use-module (gnu packages)
|
||||||
;;
|
#:use-module (gnu packages base)
|
||||||
;; guix build -f guix.scm
|
#:use-module (gnu packages commencement)
|
||||||
;;
|
#:use-module (gnu packages cross-base)
|
||||||
;; To use as the basis for a development environment, run:
|
#:use-module (gnu packages gcc)
|
||||||
;;
|
#:use-module (gnu packages guile)
|
||||||
;; guix environment -l guix.scm
|
#:use-module (gnu packages man)
|
||||||
;;
|
#:use-module (gnu packages mes)
|
||||||
;;; Code:
|
#:use-module (gnu packages package-management)
|
||||||
|
#:use-module (gnu packages version-control)
|
||||||
|
#:use-module (gnu packages perl)
|
||||||
|
#:use-module (gnu packages texinfo)
|
||||||
|
#:use-module ((guix build utils) #:select (with-directory-excursion))
|
||||||
|
#:use-module (guix build-system gnu)
|
||||||
|
#:use-module (guix build-system trivial)
|
||||||
|
#:use-module (guix gexp)
|
||||||
|
#:use-module (guix download)
|
||||||
|
#:use-module (guix git-download)
|
||||||
|
#:use-module (guix licenses)
|
||||||
|
#:use-module (guix packages))
|
||||||
|
|
||||||
(use-modules (srfi srfi-1)
|
(define %source-dir (getcwd))
|
||||||
(srfi srfi-26)
|
|
||||||
(ice-9 match)
|
|
||||||
(ice-9 popen)
|
|
||||||
(ice-9 rdelim)
|
|
||||||
(gnu packages)
|
|
||||||
(gnu packages base)
|
|
||||||
(gnu packages commencement)
|
|
||||||
(gnu packages cross-base)
|
|
||||||
(gnu packages gcc)
|
|
||||||
(gnu packages guile)
|
|
||||||
(gnu packages man)
|
|
||||||
(gnu packages mes)
|
|
||||||
(gnu packages package-management)
|
|
||||||
(gnu packages version-control)
|
|
||||||
(gnu packages perl)
|
|
||||||
(gnu packages texinfo)
|
|
||||||
((guix build utils) #:select (with-directory-excursion))
|
|
||||||
(guix build-system gnu)
|
|
||||||
(guix build-system trivial)
|
|
||||||
(guix gexp)
|
|
||||||
(guix download)
|
|
||||||
(guix git-download)
|
|
||||||
(guix licenses)
|
|
||||||
(guix packages))
|
|
||||||
|
|
||||||
(define %source-dir (dirname (current-filename)))
|
|
||||||
|
|
||||||
(define git-file?
|
(define git-file?
|
||||||
(let* ((pipe (with-directory-excursion %source-dir
|
(let* ((pipe (with-directory-excursion %source-dir
|
||||||
|
@ -127,21 +109,17 @@ hex2 linker.")
|
||||||
(license gpl3+)))
|
(license gpl3+)))
|
||||||
|
|
||||||
(define-public mes
|
(define-public mes
|
||||||
(let ((commit "6a48f4a81431d4357057ff928a7df880e3f3e6b4")
|
(let ((triplet "i686-unknown-linux-gnu")
|
||||||
(revision "0")
|
|
||||||
(triplet "i686-unknown-linux-gnu")
|
|
||||||
(version "0.16.1"))
|
(version "0.16.1"))
|
||||||
(package
|
(package
|
||||||
(name "mes")
|
(name "mes")
|
||||||
(version (string-append version "-" revision "." (string-take commit 7)))
|
(version version)
|
||||||
(source (origin
|
(source (origin
|
||||||
(method git-fetch)
|
(method url-fetch)
|
||||||
(uri (git-reference
|
(uri (string-append
|
||||||
(url "https://gitlab.com/janneke/mes")
|
"https://alpha.gnu.org/pub/gnu/mes/mes-" version ".tar.gz"))
|
||||||
(commit commit)))
|
|
||||||
(file-name (string-append name "-" version))
|
|
||||||
(sha256
|
(sha256
|
||||||
(base32 "011bcqafbjq63rq0b2p2qzp8w8kql75nfyx9k56gnhwj6rzw4bcb"))))
|
(base32 #!mes!# "171bwanlnvwy406i5s0a6806iffcdz086njk8wbhgrc33n6jr8ir"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
|
@ -167,13 +145,6 @@ hex2 linker.")
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
(for-each make-file-writable
|
(for-each make-file-writable
|
||||||
(find-files "." ".*\\.M1"))))
|
(find-files "." ".*\\.M1"))))
|
||||||
(add-before 'install 'generate-changelog
|
|
||||||
(lambda _
|
|
||||||
(with-output-to-file "ChangeLog"
|
|
||||||
(lambda ()
|
|
||||||
(display "Please run
|
|
||||||
build-aux/gitlog-to-changelog --srcdir=<git-checkout> > ChangeLog\n")))
|
|
||||||
#t))
|
|
||||||
(delete 'strip)))) ; binutil's strip b0rkes Mescc/M1/hex2 binaries
|
(delete 'strip)))) ; binutil's strip b0rkes Mescc/M1/hex2 binaries
|
||||||
(synopsis "Scheme interpreter and C compiler for full source bootstrapping")
|
(synopsis "Scheme interpreter and C compiler for full source bootstrapping")
|
||||||
(description
|
(description
|
||||||
|
@ -193,6 +164,3 @@ Guile-] Scheme interpreter prototype in C and a Nyacc-based C compiler in
|
||||||
(name "mes.git")
|
(name "mes.git")
|
||||||
(version (string-append version "-" revision "." (string-take commit 7)))
|
(version (string-append version "-" revision "." (string-take commit 7)))
|
||||||
(source (local-file %source-dir #:recursive? #t #:select? git-file?)))))
|
(source (local-file %source-dir #:recursive? #t #:select? git-file?)))))
|
||||||
|
|
||||||
;; Return it here so `guix build/environment/package' can consume it directly.
|
|
||||||
mes.git
|
|
|
@ -1,5 +1,3 @@
|
||||||
;;; -*-scheme-*-
|
|
||||||
|
|
||||||
;;; Mes --- Maxwell Equations of Software
|
;;; Mes --- Maxwell Equations of Software
|
||||||
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
|
|
Loading…
Reference in a new issue