* [bug#72494] [PATCH 1/1] gnu: Add C3 1.6.1.
2024-08-06 11:02 [bug#72494] [PATCH 0/1] Add C3 Ashvith Shetty
@ 2024-08-06 11:04 ` Ashvith Shetty
2024-08-06 15:07 ` [bug#72494] [PATCH 0/1] Add C3 Adam Faiz via Guix-patches via
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Ashvith Shetty @ 2024-08-06 11:04 UTC (permalink / raw)
To: 72494; +Cc: Ashvith Shetty
* gnu/packages/c3.scm (c3c-bootstrap): New variable.
Change-Id: Ib87f17f9178307af669bb6213403ddf1efd09386
---
gnu/packages/c3.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 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..431b1c0aa4
--- /dev/null
+++ b/gnu/packages/c3.scm
@@ -0,0 +1,59 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Ashvith Shetty <ashvithshetty10@gmail.com>
+;;;
+;;; 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 curl)
+ #:use-module (gnu packages libffi)
+ #:use-module (gnu packages llvm)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix licenses)
+ #:use-module (guix packages))
+
+(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"))
+ (snippet #~(begin
+ (use-modules (guix build utils))
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{LLVM_LIBRARY_DIRS\\}")
+ (string-append #$lld-18 "/lib/ "
+ #$llvm-18 "/lib/")))))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR=lib")
+ ;; TODO: Fix test
+ #:tests? #f))
+ (inputs (list curl libffi llvm-18 lld-18))
+ (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 lgpl3 expat))))
--
2.45.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH 0/1] Add C3
2024-08-06 11:02 [bug#72494] [PATCH 0/1] Add C3 Ashvith Shetty
2024-08-06 11:04 ` [bug#72494] [PATCH 1/1] gnu: Add C3 1.6.1 Ashvith Shetty
@ 2024-08-06 15:07 ` Adam Faiz via Guix-patches via
2024-08-06 19:32 ` [bug#72494] [PATCH v1] gnu: Add C3 1.6.1 Ashvith Shetty
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Adam Faiz via Guix-patches via @ 2024-08-06 15:07 UTC (permalink / raw)
To: 72494; +Cc: ashvithshetty10
Hello Ashvith,
I'd like to give my feedback on this patch series. I'll send an updated patch series using the suggestions below if I have the time.
> +(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"))
> + (snippet #~(begin
> + (use-modules (guix build utils))
> + (substitute* "CMakeLists.txt"
> + (("\\$\\{LLVM_LIBRARY_DIRS\\}")
> + (string-append #$lld-18 "/lib/ "
> + #$llvm-18 "/lib/")))))))
> + (build-system cmake-build-system)
> + (arguments
> + '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR=lib")
> + ;; TODO: Fix test
> + #:tests? #f))
According to its README, the unit tests are run using the built c3c with its compile-test subcommand: `c3c compile-test test/unit`. The `check` build phase needs to be replaced to run this command.
A patch sent upstream to add a proper `check` target would be good, and the test/ subdirectory would probably also need to be specified as part of the out-of-tree build.
> + (inputs (list curl libffi llvm-18 lld-18))
The curl dependency should be removed, since c3c's optional dependency downloading functionality isn't needed in Guix.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v1] gnu: Add C3 1.6.1.
2024-08-06 11:02 [bug#72494] [PATCH 0/1] Add C3 Ashvith Shetty
2024-08-06 11:04 ` [bug#72494] [PATCH 1/1] gnu: Add C3 1.6.1 Ashvith Shetty
2024-08-06 15:07 ` [bug#72494] [PATCH 0/1] Add C3 Adam Faiz via Guix-patches via
@ 2024-08-06 19:32 ` Ashvith Shetty
2024-08-06 19:37 ` [bug#72494] [PATCH v2] " Ashvith Shetty
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Ashvith Shetty @ 2024-08-06 19:32 UTC (permalink / raw)
To: 72494; +Cc: Ashvith Shetty
* gnu/packages/c3.scm (c3c-bootstrap): New variable.
Change-Id: Ib87f17f9178307af669bb6213403ddf1efd09386
---
gnu/packages/c3.scm | 58 +++++++++++++++++++
outgoing/0000-cover-letter.patch | 22 ++++++++
outgoing/0001-gnu-Add-C3-1.6.1.patch | 84 ++++++++++++++++++++++++++++
3 files changed, 164 insertions(+)
create mode 100644 gnu/packages/c3.scm
create mode 100644 outgoing/0000-cover-letter.patch
create mode 100644 outgoing/0001-gnu-Add-C3-1.6.1.patch
diff --git a/gnu/packages/c3.scm b/gnu/packages/c3.scm
new file mode 100644
index 0000000000..bd8bf89b17
--- /dev/null
+++ b/gnu/packages/c3.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Ashvith Shetty <ashvithshetty10@gmail.com>
+;;;
+;;; 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 libffi)
+ #:use-module (gnu packages llvm)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix licenses)
+ #:use-module (guix packages))
+
+(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"))
+ (snippet #~(begin
+ (use-modules (guix build utils))
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{LLVM_LIBRARY_DIRS\\}")
+ (string-append #$lld-18 "/lib/ "
+ #$llvm-18 "/lib/")))))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR=lib")
+ ;; TODO: Fix test
+ #:tests? #f))
+ (inputs (list libffi llvm-18 lld-18))
+ (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 lgpl3 expat))))
diff --git a/outgoing/0000-cover-letter.patch b/outgoing/0000-cover-letter.patch
new file mode 100644
index 0000000000..6fe6a1dbc7
--- /dev/null
+++ b/outgoing/0000-cover-letter.patch
@@ -0,0 +1,22 @@
+From 35f4ae97ed57fff79575fa8acd83d8c1077acd4c Mon Sep 17 00:00:00 2001
+Message-ID: <cover.1722933384.git.ashvithshetty10@gmail.com>
+From: Ashvith Shetty <ashvithshetty10@gmail.com>
+Date: Tue, 6 Aug 2024 14:06:24 +0530
+Subject: [PATCH 0/1] Add C3
+
+This patch series adds C3, which 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.
+
+Tests have been disabled, as I was not able to figure out on how to make it work, but I would appreciate it, if anyone is willing to improve this patch series.
+
+Ashvith Shetty (1):
+ gnu: Add C3 1.6.1.
+
+ gnu/packages/c3.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 59 insertions(+)
+ create mode 100644 gnu/packages/c3.scm
+
+
+base-commit: b20956651a53a8f23828fdeb6945e1a31e6997a8
+--
+2.45.2
+
diff --git a/outgoing/0001-gnu-Add-C3-1.6.1.patch b/outgoing/0001-gnu-Add-C3-1.6.1.patch
new file mode 100644
index 0000000000..93fcedbb28
--- /dev/null
+++ b/outgoing/0001-gnu-Add-C3-1.6.1.patch
@@ -0,0 +1,84 @@
+From 35f4ae97ed57fff79575fa8acd83d8c1077acd4c Mon Sep 17 00:00:00 2001
+Message-ID: <35f4ae97ed57fff79575fa8acd83d8c1077acd4c.1722933384.git.ashvithshetty10@gmail.com>
+In-Reply-To: <cover.1722933384.git.ashvithshetty10@gmail.com>
+References: <cover.1722933384.git.ashvithshetty10@gmail.com>
+From: Ashvith Shetty <ashvithshetty10@gmail.com>
+Date: Tue, 6 Aug 2024 12:19:24 +0530
+Subject: [PATCH 1/1] gnu: Add C3 1.6.1.
+
+* gnu/packages/c3.scm (c3c-bootstrap): New variable.
+
+Change-Id: Ib87f17f9178307af669bb6213403ddf1efd09386
+---
+ gnu/packages/c3.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 59 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..431b1c0aa4
+--- /dev/null
++++ b/gnu/packages/c3.scm
+@@ -0,0 +1,59 @@
++;;; GNU Guix --- Functional package management for GNU
++;;; Copyright © 2024 Ashvith Shetty <ashvithshetty10@gmail.com>
++;;;
++;;; 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 curl)
++ #:use-module (gnu packages libffi)
++ #:use-module (gnu packages llvm)
++ #:use-module (guix build-system cmake)
++ #:use-module (guix gexp)
++ #:use-module (guix git-download)
++ #:use-module (guix licenses)
++ #:use-module (guix packages))
++
++(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"))
++ (snippet #~(begin
++ (use-modules (guix build utils))
++ (substitute* "CMakeLists.txt"
++ (("\\$\\{LLVM_LIBRARY_DIRS\\}")
++ (string-append #$lld-18 "/lib/ "
++ #$llvm-18 "/lib/")))))))
++ (build-system cmake-build-system)
++ (arguments
++ '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR=lib")
++ ;; TODO: Fix test
++ #:tests? #f))
++ (inputs (list curl libffi llvm-18 lld-18))
++ (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 lgpl3 expat))))
+--
+2.45.2
+
--
2.45.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v2] gnu: Add C3 1.6.1.
2024-08-06 11:02 [bug#72494] [PATCH 0/1] Add C3 Ashvith Shetty
` (2 preceding siblings ...)
2024-08-06 19:32 ` [bug#72494] [PATCH v1] gnu: Add C3 1.6.1 Ashvith Shetty
@ 2024-08-06 19:37 ` Ashvith Shetty
2024-08-07 6:36 ` [bug#72494] [PATCH v3] gnu: Add c3c-bootstrap Adam Faiz via Guix-patches via
2024-08-11 14:57 ` [bug#72494] [PATCH v4] " Adam Faiz via Guix-patches via
5 siblings, 0 replies; 10+ messages in thread
From: Ashvith Shetty @ 2024-08-06 19:37 UTC (permalink / raw)
To: 72494; +Cc: Ashvith Shetty
* gnu/packages/c3.scm (c3c-bootstrap): New variable.
Change-Id: I4523c9c4e2fa613f1aecc5ad1214722618fa3ab8
---
gnu/packages/c3.scm | 58 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 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..bd8bf89b17
--- /dev/null
+++ b/gnu/packages/c3.scm
@@ -0,0 +1,58 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2024 Ashvith Shetty <ashvithshetty10@gmail.com>
+;;;
+;;; 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 libffi)
+ #:use-module (gnu packages llvm)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module (guix licenses)
+ #:use-module (guix packages))
+
+(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"))
+ (snippet #~(begin
+ (use-modules (guix build utils))
+ (substitute* "CMakeLists.txt"
+ (("\\$\\{LLVM_LIBRARY_DIRS\\}")
+ (string-append #$lld-18 "/lib/ "
+ #$llvm-18 "/lib/")))))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR=lib")
+ ;; TODO: Fix test
+ #:tests? #f))
+ (inputs (list libffi llvm-18 lld-18))
+ (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 lgpl3 expat))))
--
2.45.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v3] gnu: Add c3c-bootstrap.
2024-08-06 11:02 [bug#72494] [PATCH 0/1] Add C3 Ashvith Shetty
` (3 preceding siblings ...)
2024-08-06 19:37 ` [bug#72494] [PATCH v2] " Ashvith Shetty
@ 2024-08-07 6:36 ` Adam Faiz via Guix-patches via
2024-08-10 17:59 ` Ashvith Shetty
2024-08-11 14:57 ` [bug#72494] [PATCH v4] " Adam Faiz via Guix-patches via
5 siblings, 1 reply; 10+ messages in thread
From: Adam Faiz via Guix-patches via @ 2024-08-07 6:36 UTC (permalink / raw)
To: 72494; +Cc: ashvithshetty10
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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v3] gnu: Add c3c-bootstrap.
2024-08-07 6:36 ` [bug#72494] [PATCH v3] gnu: Add c3c-bootstrap Adam Faiz via Guix-patches via
@ 2024-08-10 17:59 ` Ashvith Shetty
2024-08-11 14:47 ` Adam Faiz via Guix-patches via
0 siblings, 1 reply; 10+ messages in thread
From: Ashvith Shetty @ 2024-08-10 17:59 UTC (permalink / raw)
To: 72494; +Cc: adam.faiz
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
^ permalink raw reply [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v3] gnu: Add c3c-bootstrap.
2024-08-10 17:59 ` Ashvith Shetty
@ 2024-08-11 14:47 ` Adam Faiz via Guix-patches via
0 siblings, 0 replies; 10+ messages in thread
From: Adam Faiz via Guix-patches via @ 2024-08-11 14:47 UTC (permalink / raw)
To: Ashvith Shetty, 72494
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.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v4] gnu: Add c3c-bootstrap.
2024-08-06 11:02 [bug#72494] [PATCH 0/1] Add C3 Ashvith Shetty
` (4 preceding siblings ...)
2024-08-07 6:36 ` [bug#72494] [PATCH v3] gnu: Add c3c-bootstrap Adam Faiz via Guix-patches via
@ 2024-08-11 14:57 ` Adam Faiz via Guix-patches via
2024-08-12 18:38 ` Ashvith Shetty
5 siblings, 1 reply; 10+ messages in thread
From: Adam Faiz via Guix-patches via @ 2024-08-11 14:57 UTC (permalink / raw)
To: 72494; +Cc: Ashvith Shetty
From 8b6035ad6587d44a9d65575b0f307820e42a402e Mon Sep 17 00:00:00 2001
Message-ID: <8b6035ad6587d44a9d65575b0f307820e42a402e.1723388041.git.adam.faiz@disroot.org>
From: AwesomeAdam54321 <adam.faiz@disroot.org>
Date: Wed, 7 Aug 2024 12:18:23 +0800
Subject: [PATCH v4] 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 | 94 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 94 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..d179a30356
--- /dev/null
+++ b/gnu/packages/c3.scm
@@ -0,0 +1,94 @@
+;;; 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 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)\n")
+ (("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/")))
+ (substitute* '("src/compiler/target.c"
+ "src/compiler/linker.c")
+ (("\"cc\"") (string-append "\"" #$(cc-for-target) "\"")))
+ (substitute* "resources/testproject/project.json"
+ (("\"cc\" : \"cc\",") ""))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (with-directory-excursion "../source/resources/testproject"
+ (invoke "../../../build/c3c" "build"))
+ (invoke "python3" "../source/test/src/tester.py"
+ "./c3c" "../source/test/test_suite")
+ (invoke "./c3c" "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
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#72494] [PATCH v4] gnu: Add c3c-bootstrap.
2024-08-11 14:57 ` [bug#72494] [PATCH v4] " Adam Faiz via Guix-patches via
@ 2024-08-12 18:38 ` Ashvith Shetty
0 siblings, 0 replies; 10+ messages in thread
From: Ashvith Shetty @ 2024-08-12 18:38 UTC (permalink / raw)
To: Adam Faiz; +Cc: 72494
[-- Attachment #1: Type: text/plain, Size: 519 bytes --]
Hi Adam,
I've actually got my own patch ready with similar substitution and complete
set of tests, which I've not submitted yet. The reason for this is that
I've talked to the maintainer of the project, and according to them, this
substitution is a bad idea. Another reason is that it does not work in a
pure, ephemeral environment, unless `gcc` and `ld` is provided as either a
propagated input, or a side-by package. And there's also the issue with
using an alternative compiler and linker, which isn't working well.
[-- Attachment #2: Type: text/html, Size: 644 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread