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 $@
|
||||
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
|
||||
Usage: make [OPTION]... [TARGET]...
|
||||
|
||||
|
|
4
HACKING
4
HACKING
|
@ -1,11 +1,11 @@
|
|||
-*-mode:org-*-
|
||||
|
||||
* SETUP
|
||||
guix environment -l guix.scm #64 bit + 32bit
|
||||
guix environment -l .guix.scm #64 bit + 32bit
|
||||
|
||||
or
|
||||
|
||||
guix environment --system=i686-linux -l guix.scm #32 bit only
|
||||
guix environment --system=i686-linux -l .guix.scm #32 bit only
|
||||
|
||||
or
|
||||
|
||||
|
|
|
@ -66,6 +66,10 @@ ifdef GUILE_TOOLS
|
|||
export GUILE_TOOLS
|
||||
endif
|
||||
|
||||
ifdef GUIX
|
||||
export GUIX
|
||||
endif
|
||||
|
||||
ifdef PERL
|
||||
export PERL
|
||||
endif
|
||||
|
|
|
@ -16,5 +16,5 @@
|
|||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; 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)))
|
||||
|
|
|
@ -26,7 +26,7 @@ MES_PREFIX=mes
|
|||
export MES_PREFIX
|
||||
|
||||
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
|
||||
GUILE_LOAD_PATH="$abs_top_buildir/module:$GUILE_LOAD_PATH"
|
||||
fi
|
||||
|
|
3
configure
vendored
3
configure
vendored
|
@ -4,7 +4,7 @@ unset LANG LC_ALL
|
|||
guile=$(command -v ${GUILE-guile})
|
||||
guix=$(command -v ${GUIX-guix})
|
||||
if [ -n "$guix" ] ; then
|
||||
install="guix environment -l guix.scm"
|
||||
install="guix environment -l .guix.scm"
|
||||
else
|
||||
install="sudo apt-get install guile-2.2-dev"
|
||||
fi
|
||||
|
@ -344,6 +344,7 @@ Some influential environment variables:
|
|||
(cons (check-program-version program) results))
|
||||
'()
|
||||
(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 "guile-tools" '(2 0))
|
||||
(make-dep "mes-seed" '(0 16 1) #:optional? #t
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
;;; guix.scm -- Guix package definition
|
||||
|
||||
;;; Mes --- Maxwell Equations of Software
|
||||
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
|
||||
;;;
|
||||
;;; This file is part of Mes.
|
||||
;;;
|
||||
;;; Also borrowing code from:
|
||||
;;; guile-sdl2 --- FFI bindings for SDL2
|
||||
;;; 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
|
||||
;;; 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
|
||||
;;; 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:
|
||||
(define-module (git mes)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 popen)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages commencement)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages man)
|
||||
#:use-module (gnu packages mes)
|
||||
#: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)
|
||||
(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 %source-dir (getcwd))
|
||||
|
||||
(define git-file?
|
||||
(let* ((pipe (with-directory-excursion %source-dir
|
||||
|
@ -127,21 +109,17 @@ hex2 linker.")
|
|||
(license gpl3+)))
|
||||
|
||||
(define-public mes
|
||||
(let ((commit "6a48f4a81431d4357057ff928a7df880e3f3e6b4")
|
||||
(revision "0")
|
||||
(triplet "i686-unknown-linux-gnu")
|
||||
(let ((triplet "i686-unknown-linux-gnu")
|
||||
(version "0.16.1"))
|
||||
(package
|
||||
(name "mes")
|
||||
(version (string-append version "-" revision "." (string-take commit 7)))
|
||||
(version version)
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/janneke/mes")
|
||||
(commit commit)))
|
||||
(file-name (string-append name "-" version))
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://alpha.gnu.org/pub/gnu/mes/mes-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "011bcqafbjq63rq0b2p2qzp8w8kql75nfyx9k56gnhwj6rzw4bcb"))))
|
||||
(base32 #!mes!# "171bwanlnvwy406i5s0a6806iffcdz086njk8wbhgrc33n6jr8ir"))))
|
||||
(build-system gnu-build-system)
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(propagated-inputs
|
||||
|
@ -167,13 +145,6 @@ hex2 linker.")
|
|||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(for-each make-file-writable
|
||||
(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
|
||||
(synopsis "Scheme interpreter and C compiler for full source bootstrapping")
|
||||
(description
|
||||
|
@ -193,6 +164,3 @@ Guile-] Scheme interpreter prototype in C and a Nyacc-based C compiler in
|
|||
(name "mes.git")
|
||||
(version (string-append version "-" revision "." (string-take commit 7)))
|
||||
(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
|
||||
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
|
|
Loading…
Reference in a new issue