janneke pushed a commit to branch wip-mingw in repository guile. commit 92dbca845c296e97a4c681f530c6192fb5c337ef Author: Jan (janneke) Nieuwenhuizen <jann...@gnu.org> AuthorDate: Mon Mar 15 14:58:48 2021 +0100
guix: Add guile-patched, guile-mingw. Try GUIX_PACKAGE_PATH=guix guix build --target=x86_64-w64-mingw32 guile-mingw * guix/guile-patched.scm, guix/mingw.scm: New files. --- guix/guile-patched.scm | 72 +++++++++++++++++++++++++++ guix/mingw.scm | 130 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 202 insertions(+) diff --git a/guix/guile-patched.scm b/guix/guile-patched.scm new file mode 100644 index 0000000..1a5f53a --- /dev/null +++ b/guix/guile-patched.scm @@ -0,0 +1,72 @@ +;;; Dezyne --- Dezyne command line tools +;;; +;;; Copyright © 2020,2021 Jan (janneke) Nieuwenhuizen <jann...@gnu.org> +;;; +;;; This file is part of Dezyne. +;;; +;;; Dezyne is free software: you can redistribute it and/or modify it +;;; under the terms of the GNU Affero General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Dezyne 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 +;;; Affero General Public License for more details. +;;; +;;; You should have received a copy of the GNU Affero General Public +;;; License along with Dezyne. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guile-patched) + #:use-module (gnu packages) + #:use-module (gnu packages autotools) + #:use-module (gnu packages flex) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gperf) + #:use-module (gnu packages guile) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages texinfo) + #:use-module (guix build utils) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix utils)) + +(define-public guile-3.0-patched + (let ((commit "dd1c9af43fbef0311ce1973acc042cb9230b2cd4") + (revision "16")) + (package + (inherit guile-3.0-latest) + (name "guile-patched") + (version (string-append "3.0.5" "-" revision "." (string-take commit 7))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("flex" ,flex) + ("texinfo" ,texinfo) + ("gettext" ,gettext-minimal) + ("gperf" ,gperf) + ,@(package-native-inputs guile-3.0-latest))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/janneke/guile.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1l5gwl6j8v0ihnm01dfprndgaic7avkby0jnmdm8145c8ishxlbm")))) + (arguments + (substitute-keyword-arguments (package-arguments guile-3.0-latest) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'unpack 'disable-some-tests + (lambda _ + (delete-file "test-suite/tests/asyncs.test") + (delete-file "test-suite/tests/ftw.test") + (delete-file "test-suite/tests/suspendable-ports.test") + (substitute* "test-suite/standalone/Makefile.am" + (("check_SCRIPTS \\+= test-out-of-memory" all) + (string-append "# " all)) + (("TESTS \\+= test-out-of-memory" all) + (string-append "# " all)))))))))))) diff --git a/guix/mingw.scm b/guix/mingw.scm new file mode 100644 index 0000000..2ce6c15 --- /dev/null +++ b/guix/mingw.scm @@ -0,0 +1,130 @@ +;;; Dezyne --- Dezyne command line tools +;;; +;;; Copyright © 2019,2020,2021 Jan (janneke) Nieuwenhuizen <jann...@gnu.org> +;;; +;;; This file is part of Dezyne. +;;; +;;; Dezyne is free software: you can redistribute it and/or modify it +;;; under the terms of the GNU Affero General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Dezyne 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 +;;; Affero General Public License for more details. +;;; +;;; You should have received a copy of the GNU Affero General Public +;;; License along with Dezyne. If not, see <http://www.gnu.org/licenses/>. + +(define-module (mingw) + #:use-module (srfi srfi-1) + #:use-module (guix build-system gnu) + #:use-module (guix gexp) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages bdw-gc) + #:use-module (gnu packages gcc) + #:use-module (gnu packages hurd) + #:use-module (gnu packages mingw) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages pkg-config) + #:use-module (guile-patched)) + +(define-public libgc-mingw + (package + (name "libgc-mingw") + (version "7.6.12") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/ivmai/bdwgc/releases" + "/download/v" version "/gc-" version ".tar.gz")) + (sha256 + (base32 + "10jhhi79d5brwlsyhwgpnrmc8nhlf7aan2lk9xhgihk5jc6srbvc")))) + (build-system gnu-build-system) + (arguments + `(#:strip-binaries? #f + #:configure-flags + (list + ;; Install gc_cpp.h et al. + "--enable-cplusplus" + ;; In GNU/Hurd systems during the 'Check' phase, + ;; there is a deadlock caused by the 'gctest' test. + ;; To disable the error set "--disable-gcj-support" + ;; to configure script. See bug report and discussion: + ;; <https://lists.opendylan.org/pipermail/bdwgc/2017-April/006275.html> + ;; <https://lists.gnu.org/archive/html/bug-hurd/2017-01/msg00008.html> + ,@(if (hurd-triplet? (or (%current-system) + (%current-target-system))) + '("--disable-gcj-support") + '())) + #:phases (modify-phases %standard-phases + (add-after 'unpack 'adjust-pc-file + (lambda* (#:key inputs #:allow-other-keys) + (let ((libatomic-ops (assoc-ref inputs "libatomic-ops"))) + ;; GC 7.6.10 and later includes -latomic_ops in the + ;; pkg-config file. To avoid propagation, insert an + ;; absolute reference so dependent programs can find it. + (substitute* "bdw-gc.pc.in" + (("@ATOMIC_OPS_LIBS@" match) + (string-append "-L" libatomic-ops "/lib " + match))) + #t)))))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("libatomic-ops" ,libatomic-ops))) + (outputs '("out" "debug")) + (synopsis "The Boehm-Demers-Weiser conservative garbage collector +for C and C++") + (description + "The Boehm-Demers-Weiser conservative garbage collector can be used +as a garbage collecting replacement for C malloc or C++ new. It allows +you to allocate memory basically as you normally would, without +explicitly deallocating memory that is no longer useful. The collector +automatically recycles memory when it determines that it can no longer +be otherwise accessed. + +The collector is also used by a number of programming language +implementations that either use C as intermediate code, want to +facilitate easier interoperation with C libraries, or just prefer the +simple collector interface. + +Alternatively, the garbage collector may be used as a leak detector for +C or C++ programs, though that is not its primary goal.") + (home-page "http://www.hboehm.info/gc/") + + (license (license:x11-style (string-append home-page "license.txt"))))) + +(define-public guile-3.0-mingw + (package + (inherit guile-3.0-patched) + (name "guile-mingw") + (native-inputs + `(("self" ,guile-3.0-patched) + ,@(alist-delete "self" (package-native-inputs guile-3.0-patched)))) + (propagated-inputs + `(("bdw-gc" ,libgc-mingw) + ,@(alist-delete "bwd-gc" (package-propagated-inputs guile-3.0-patched)))) + (arguments + `(#:tests? #f + #:strip-binaries? #f + ,@(if (%current-target-system) + (substitute-keyword-arguments (package-arguments guile-3.0-patched) + ((#:configure-flags flags '()) + `(cons* "--disable-jit" + "--enable-mini-gmp" + ,flags)) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'unpack 'bootstrap + (lambda _ + (invoke "sh" "autogen.sh"))) + (add-after 'unpack 'patch-version-gen + (lambda _ + (substitute* "build-aux/git-version-gen" + (("#!/bin/sh") (string-append "#! " (which "sh"))))))))) + (package-arguments guile-3.0-patched))))))