path: root/bootstrap
blob: a47269d87f1d6fd27bbaf634ac7439b38b32cca3 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/sh
# Create the build system.

set -e -x

# Generate stubs for translations.
langs=`find po/doc -type f -name 'guix-manual*.po' \
        | sed -e 's,guix-manual\.,,' \
        | xargs -n 1 -I{} basename {} .po`
for lang in ${langs}; do
    if [ ! -e "doc/guix.${lang}.texi" ]; then
	echo "@setfilename guix.${lang}.info" > "doc/guix.${lang}.texi"
	echo "@include version-${lang}.texi" >> "doc/guix.${lang}.texi"
	# Ensure .po file is newer.
	touch "po/doc/guix-manual.${lang}.po"
    fi
done
langs=`find po/doc -type f -name 'guix-cookbook*.po' \
        | sed -e 's,guix-cookbook\.,,' \
        | xargs -n 1 -I{} basename {} .po`
for lang in ${langs}; do
    if [ ! -e "doc/guix-cookbook.${lang}.texi" ]; then
	echo "@setfilename guix-cookbook.${lang}.info" > "doc/guix-cookbook.${lang}.texi"
	# Ensure .po file is newer.
	touch "po/doc/guix-cookbook.${lang}.po"
    fi
done

exec autoreconf -vfi
") (home-page "https://savannah.nongnu.org/projects/nyacc") (license (list gpl3+ lgpl3+)))) (define-public nyacc-0.99 (package (inherit nyacc-0.86) (version "0.99.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/nyacc/nyacc-" version ".tar.gz")) (sha256 (base32 "0hl5qxx19i4x1r0839sxm19ziqq65g4hy97yik81cc2yb9yvgyv3")) (modules '((guix build utils))) (snippet '(begin (substitute* (find-files "." "^Makefile\\.in$") (("^SITE_SCM_DIR =.*") "SITE_SCM_DIR = \ @prefix@/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n") (("^SITE_SCM_GO_DIR =.*") "SITE_SCM_GO_DIR = \ @prefix@/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n") (("^INFODIR =.*") "INFODIR = @prefix@/share/info\n") (("^DOCDIR =.*") "DOCDIR = @prefix@/share/doc/$(PACKAGE_TARNAME)\n")) #t)))) (native-inputs (list pkg-config)) (inputs (list guile-2.2)))) (define-public nyacc (package (inherit nyacc-0.99) (version "1.08.1") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/nyacc/nyacc-" version ".tar.gz")) (sha256 (base32 "1vrz3pnlr3njwk6ksz85slcwawi8ngiqbw94wd9x3mgv85vsfmys")) (modules '((guix build utils))) (snippet '(substitute* "configure" (("GUILE_GLOBAL_SITE=\\$prefix.*") "GUILE_GLOBAL_SITE=\ $prefix/share/guile/site/$GUILE_EFFECTIVE_VERSION\n"))))) (inputs (list guile-3.0)) (propagated-inputs (list guile-bytestructures)) (description "@acronym{NYACC, Not Yet Another Compiler Compiler} is set of Guile modules for generating parsers and lexical analyzers. It provides sample parsers, pretty-printers using SXML trees as an intermediate representation, a decent C parser and an `FFI Helper' tool to help create Guile Scheme bindings for C-based libraries. It also provides (partially implemented) compilers based on these parsers to allow execution with Guile as extension languages."))) (define-public nyacc-1.00.2 (package (inherit nyacc) (version "1.00.2") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/nyacc/nyacc-" version ".tar.gz")) (modules '((guix build utils))) (snippet '(begin (substitute* (find-files "." "^Makefile\\.in$") (("^SITE_SCM_DIR =.*") "SITE_SCM_DIR = \ @prefix@/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n") (("^SITE_SCM_GO_DIR =.*") "SITE_SCM_GO_DIR = \ @prefix@/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n") (("^INFODIR =.*") "INFODIR = @prefix@/share/info\n") (("^DOCDIR =.*") "DOCDIR = @prefix@/share/doc/$(PACKAGE_TARNAME)\n")) #t)) (sha256 (base32 "065ksalfllbdrzl12dz9d9dcxrv97wqxblslngsc6kajvnvlyvpk")))) ;; XXX: Remove GUILE-BYTESTRUCTURES, an optional dependency needed to ;; build the FFI helper, because it fails to build. (propagated-inputs '()) (inputs (list guile-3.0)))) (define-public mes (package (name "mes") (version "0.27") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mes/" "mes-" version ".tar.gz")) (sha256 (base32 "1a5ag8i303yhf76sg05rpcans9vadvnpxcpa4sl09z4cv5bfcgh3")))) (supported-systems '("armhf-linux" "i686-linux" "x86_64-linux" "riscv64-linux")) (propagated-inputs (list mescc-tools nyacc-1.00.2)) (native-inputs (append (list guile-3.0) (let ((target-system (or (%current-target-system) (%current-system)))) (cond ((string-prefix? "x86_64-linux" target-system) ;; Use cross-compiler rather than #:system "i686-linux" to get ;; MesCC 64 bit .go files installed ready for use with Guile. (list (cross-binutils "i686-unknown-linux-gnu") (cross-gcc "i686-unknown-linux-gnu"))) ((string-prefix? "aarch64-linux" target-system) ;; Use cross-compiler rather than #:system "armhf-linux" to get ;; MesCC 64 bit .go files installed ready for use with Guile. (let ((triplet "arm-linux-gnueabihf")) (list (cross-binutils triplet) (cross-gcc triplet)))) (else '()))) (list graphviz help2man m2-planet perl ;build-aux/gitlog-to-changelog texinfo))) (build-system gnu-build-system) (arguments `(#:strip-binaries? #f)) ; binutil's strip b0rkes MesCC/M1/hex2 binaries (native-search-paths (list (search-path-specification (variable "C_INCLUDE_PATH") (files '("include"))) (search-path-specification (variable "LIBRARY_PATH") (files '("lib"))) (search-path-specification (variable "MES_PREFIX") (separator #f) (files '(""))))) (synopsis "Scheme interpreter and C compiler for full source bootstrapping") (description "GNU Mes--Maxwell Equations of Software--brings the Reduced Binary Seed bootstrap to Guix and aims to help create full source bootstrapping for GNU/Linux distributions. It consists of a mutual self-hosting Scheme interpreter in C and a Nyacc-based C compiler in Scheme and is compatible with Guile.") (home-page "https://www.gnu.org/software/mes/") (license gpl3+))) (define-public mescc-tools (package (name "mescc-tools") (version "1.5.2") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/" name "/" name "-" version ".tar.gz")) (sha256 (base32 "1jak61gxab8bj8ddpgwfn9lqs917szq1phadmg8y5cjsndn1hv4k")))) (build-system gnu-build-system) (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")) (arguments (list #:make-flags #~(list (string-append "PREFIX=" #$output)) #:test-target "test" #:phases #~(modify-phases %standard-phases (delete 'configure)))) (native-inputs (list which)) (synopsis "Tools for the full source bootstrapping process") (description "Mescc-tools is a collection of tools for use in a full source bootstrapping process. It consists of the M1 macro assembler, the hex2 linker, the blood-elf symbol table generator, the kaem shell, exec_enable and get_machine.") (home-page "https://savannah.nongnu.org/projects/mescc-tools") (license gpl3+))) (define-public m2-planet (package (name "m2-planet") (version "1.11.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/oriansj/M2-Planet/releases/download/" "Release_" version "/" name "-" version ".tar.gz")) (sha256 (base32 "1c510p55amxjyvjlx9jpa30gixlgmf6mmfnaqcs46412krymwg38")))) (native-inputs (list mescc-tools)) (build-system gnu-build-system) (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux" "aarch64-linux" "riscv64-linux")) (arguments `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) ,(string-append "CC=" (cc-for-target))) #:tests? #f #:phases (modify-phases %standard-phases (delete 'bootstrap) (delete 'configure)))) (synopsis "The PLAtform NEutral Transpiler") (description "M2-Planet, the PLAtform NEutral Transpiler, when combined with mescc-tools, compiles a subset of the C language into working binaries with introspective steps in between. It is self-hosting and for bootstrapping it also has an implementation in the M1 macro assembly language. M2-Planet is built as Phase-5 of the full source bootstrapping process and is capable of building GNU Mes.") (home-page "https://github.com/oriansj/m2-planet") (license gpl3+)))