Message ID | 25ba6326-a778-7f9e-1930-2d8d6c35375b@disroot.org |
---|---|
State | New |
Headers | show |
Series | [bug#72494,v3] gnu: Add c3c-bootstrap. | expand |
Hi Adam, I've tried building from your patch, and it seems to me that the compiler isn't working, and requires that the flag `-cc` be passed, pointing to `gcc` or `clang`. Since `cc` is a symlink to `gcc`, wouldn't it be better to substitute `cc` to `gcc`? Or is it possible to create a symlink `cc` unique to, and isolated inside the package expression? On Wed, Aug 7, 2024 at 6:37 AM Adam Faiz <adam.faiz@disroot.org> wrote: > > From 3f9768c8fe5cc965170a74e5c018887793cb3ac0 Mon Sep 17 00:00:00 2001 > Message-ID: <3f9768c8fe5cc965170a74e5c018887793cb3ac0.1723012269.git.adam.faiz@disroot.org> > From: AwesomeAdam54321 <adam.faiz@disroot.org> > Date: Wed, 7 Aug 2024 12:18:23 +0800 > Subject: [PATCH v3] gnu: Add c3c-bootstrap. > > This patch was co-authored with Ashvith Shetty. > > * gnu/packages/c3.scm: New file. > * gnu/packages/c3.scm (c3c-bootstrap): New variable. > --- > gnu/packages/c3.scm | 92 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 92 insertions(+) > create mode 100644 gnu/packages/c3.scm > > diff --git a/gnu/packages/c3.scm b/gnu/packages/c3.scm > new file mode 100644 > index 0000000000..2c5924807f > --- /dev/null > +++ b/gnu/packages/c3.scm > @@ -0,0 +1,92 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright © 2024 Ashvith Shetty <ashvithshetty10@gmail.com> > +;;; Copyright © 2024 Adam Faiz <adam.faiz@disroot.org> > +;;; > +;;; This file is part of GNU Guix. > +;;; > +;;; GNU Guix 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. > +;;; > +;;; GNU Guix 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 GNU Guix. If not, see <http://www.gnu.org/licenses/>. > + > +(define-module (gnu packages c3) > + #:use-module (gnu packages compression) > + #:use-module (gnu packages curl) > + #:use-module (gnu packages libffi) > + #:use-module (gnu packages llvm) > + #:use-module (gnu packages python) > + #:use-module (guix build-system cmake) > + #:use-module (guix gexp) > + #:use-module (guix git-download) > + #:use-module ((guix licenses) #:prefix license:) > + #:use-module (guix packages) > + #:use-module (guix utils)) > + > +(define-public c3c-bootstrap > + (package > + (name "c3c") > + (version "0.6.1") > + (source > + (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/c3lang/c3c") > + (commit (string-append "v" version)))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 "0xjl3yghyqmqv9118nhcix3xywlpdirqc0dlmdaghdkja0wr19rw")) > + (modules '((guix build utils))) > + (snippet > + #~(begin > + ;; Unbundle miniz. > + (delete-file-recursively "dependencies") > + ;; Swap out miniz for zlib. > + (substitute* "CMakeLists.txt" > + (("add_library\\(miniz.*\\)\n$") > + "find_package(ZLIB REQUIRED)") > + (("target_include_directories\\(miniz PUBLIC") "") > + (("...*/dependencies/miniz/..") "") > + (("miniz") "z")) > + (substitute* "src/utils/unzipper.c" > + (("miniz\\.h") "zlib.h")))))) > + (build-system cmake-build-system) > + (arguments > + (list > + #:configure-flags > + #~(list "-DCMAKE_INSTALL_LIBDIR=lib") > + #:phases > + #~(modify-phases %standard-phases > + (add-before 'configure 'fix-build > + (lambda _ > + (substitute* "CMakeLists.txt" > + (("\\$\\{LLVM_LIBRARY_DIRS\\}") > + (string-append #$lld-18 "/lib/ " > + #$llvm-18 "/lib/"))))) > + (replace 'check > + (lambda* (#:key tests? #:allow-other-keys) > + (when tests? > + (with-directory-excursion "../source/resources/testproject" > + (invoke "../../../build/c3c" > + "--cc" #$(cc-for-target) "build")) > + (invoke "python3" "../source/test/src/tester.py" > + "./c3c" "../source/test/test_suite") > + (invoke "./c3c" "--cc" #$(cc-for-target) > + "compile-test" "../source/test/unit"))))))) > + (native-inputs (list python)) > + (inputs (list libffi lld-18 llvm-18 zlib)) > + (synopsis "Compiler for the C3 language") > + (description > + "C3 is a programming language that builds on the syntax and semantics > +of the C language, with the goal of evolving it while still retaining > +familiarity for C programmers.") > + (home-page "https://c3-lang.org/") > + (supported-systems '("x86_64-linux" "aarch64-linux" "riscv64-linux")) > + (license (list license:lgpl3 license:expat)))) > > base-commit: b20956651a53a8f23828fdeb6945e1a31e6997a8 > -- > 2.41.0
On 8/11/24 01:59, Ashvith Shetty wrote: > Hi Adam, > > I've tried building from your patch, and it seems to me that the > compiler isn't working, and requires that the flag `-cc` be passed, > pointing to `gcc` or `clang`. Since `cc` is a symlink to `gcc`, > wouldn't it be better to substitute `cc` to `gcc`? Or is it possible > to create a symlink `cc` unique to, and isolated inside the package > expression? Yes, it's better to just substitute `cc` with #$(cc-for-target). I've updated the patch to do this.
diff --git a/gnu/packages/c3.scm b/gnu/packages/c3.scm new file mode 100644 index 0000000000..2c5924807f --- /dev/null +++ b/gnu/packages/c3.scm @@ -0,0 +1,92 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2024 Ashvith Shetty <ashvithshetty10@gmail.com> +;;; Copyright © 2024 Adam Faiz <adam.faiz@disroot.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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. +;;; +;;; GNU Guix 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 GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages c3) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages libffi) + #:use-module (gnu packages llvm) + #:use-module (gnu packages python) + #:use-module (guix build-system cmake) + #:use-module (guix gexp) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils)) + +(define-public c3c-bootstrap + (package + (name "c3c") + (version "0.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/c3lang/c3c") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xjl3yghyqmqv9118nhcix3xywlpdirqc0dlmdaghdkja0wr19rw")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Unbundle miniz. + (delete-file-recursively "dependencies") + ;; Swap out miniz for zlib. + (substitute* "CMakeLists.txt" + (("add_library\\(miniz.*\\)\n$") + "find_package(ZLIB REQUIRED)") + (("target_include_directories\\(miniz PUBLIC") "") + (("...*/dependencies/miniz/..") "") + (("miniz") "z")) + (substitute* "src/utils/unzipper.c" + (("miniz\\.h") "zlib.h")))))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(list "-DCMAKE_INSTALL_LIBDIR=lib") + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'fix-build + (lambda _ + (substitute* "CMakeLists.txt" + (("\\$\\{LLVM_LIBRARY_DIRS\\}") + (string-append #$lld-18 "/lib/ " + #$llvm-18 "/lib/"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "../source/resources/testproject" + (invoke "../../../build/c3c" + "--cc" #$(cc-for-target) "build")) + (invoke "python3" "../source/test/src/tester.py" + "./c3c" "../source/test/test_suite") + (invoke "./c3c" "--cc" #$(cc-for-target) + "compile-test" "../source/test/unit"))))))) + (native-inputs (list python)) + (inputs (list libffi lld-18 llvm-18 zlib)) + (synopsis "Compiler for the C3 language") + (description + "C3 is a programming language that builds on the syntax and semantics +of the C language, with the goal of evolving it while still retaining +familiarity for C programmers.") + (home-page "https://c3-lang.org/") + (supported-systems '("x86_64-linux" "aarch64-linux" "riscv64-linux")) + (license (list license:lgpl3 license:expat))))
From 3f9768c8fe5cc965170a74e5c018887793cb3ac0 Mon Sep 17 00:00:00 2001 Message-ID: <3f9768c8fe5cc965170a74e5c018887793cb3ac0.1723012269.git.adam.faiz@disroot.org> From: AwesomeAdam54321 <adam.faiz@disroot.org> Date: Wed, 7 Aug 2024 12:18:23 +0800 Subject: [PATCH v3] gnu: Add c3c-bootstrap. This patch was co-authored with Ashvith Shetty. * gnu/packages/c3.scm: New file. * gnu/packages/c3.scm (c3c-bootstrap): New variable. --- gnu/packages/c3.scm | 92 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 gnu/packages/c3.scm base-commit: b20956651a53a8f23828fdeb6945e1a31e6997a8