From: "Jørgen Kvalsvik" <j@lambda.is>
To: 74078@debbugs.gnu.org
Cc: "Jørgen Kvalsvik" <j@lambda.is>
Subject: [bug#74078] [PATCH] gnu: Add dart
Date: Mon, 28 Oct 2024 21:45:04 +0100 [thread overview]
Message-ID: <20241028204504.4172-1-j@lambda.is> (raw)
* gnu/packages/dart.scm: New file.
* gnu/local.mk: Register it.
Change-Id: Idbdcf4e30790b3225bf86a36a0a4c4b081b557aa
---
gnu/local.mk | 1 +
gnu/packages/dart.scm | 101 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 102 insertions(+)
create mode 100644 gnu/packages/dart.scm
---
Hello,
This is a port of the nixpkgs Dart compiler package [1]. I am interested
in it specifically because it is a transitive dependency of Hugo [2],
and I figured I other people might be interested in these packages, too.
The from-source build of Dart is quite the pain (nixpkgs seems to have
given up, but I do not know the story there). I looked around and while
I did not find a strict rule saying "source only", it does stand out by
relying on prebuilt artifacts. For my current needs it is good enough,
and I hope that in the future it could get a proper source build. I saw
there was an effort a few years ago, but it appears to have stopped
completely.
[1] https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/compilers/dart/default.nix
[2] https://gohugo.io/
diff --git a/gnu/local.mk b/gnu/local.mk
index 6bd7c75090..925a561d45 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -224,6 +224,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/cvassistant.scm \
%D%/packages/cybersecurity.scm \
%D%/packages/cyrus-sasl.scm \
+ %D%/packages/dart.scm \
%D%/packages/darwin.scm \
%D%/packages/data-language.scm \
%D%/packages/databases.scm \
diff --git a/gnu/packages/dart.scm b/gnu/packages/dart.scm
new file mode 100644
index 0000000000..faf840d547
--- /dev/null
+++ b/gnu/packages/dart.scm
@@ -0,0 +1,101 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; 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 dart)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix gexp)
+ #:use-module (guix config)
+ #:use-module (guix build-system copy)
+ #:use-module ((gnu packages bootstrap) #:select (glibc-dynamic-linker))
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages elf)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1))
+
+(define-public dart-3.5
+ (package
+ (name "dart")
+ (version "3.5.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://storage.googleapis.com/dart-archive/channels/stable/release/"
+ version "/sdk/dartsdk-"
+ (match (%current-system)
+ ("x86_64-linux" "linux-x64")
+ ("i686-linux" "linux-ia32")
+ ("aarch64-linux" "linux-arm64")
+ (_ "unsupported"))
+ "-release.zip"))
+ (sha256
+ (base32 (match (%current-system)
+ ("x86_64-linux" "0rv9rp8g5blhncqwciymhxh3z2832yp54lphxgsvkmm9y8s5w34d")
+ ("i686-linux" "02kv119swcp7y4n3yb2i5a4dagjpf0zq3b3an1apahj5zn6ak41g")
+ ("aarch64-linux" "1v437zpksk0jhib6vhpcbvv715mv32zmwby8b3p9qd3k67fn87d9")
+ (_ "0000000000000000000000000000000000000000000000000000"))))))
+ (build-system copy-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (patchelf (string-append (assoc-ref inputs "patchelf")
+ "/bin/patchelf"))
+ (ld-so (string-append (assoc-ref inputs "libc")
+ #$(glibc-dynamic-linker))))
+ (mkdir-p out)
+ (copy-recursively "." out)
+ (for-each
+ (lambda (file) (invoke patchelf "--set-interpreter" ld-so file))
+ (find-files bin (lambda (file stat) (and (executable-file? file)
+ (elf-file? file))))))))
+ (add-after 'install 'check
+ (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+ (when tests?
+ (let* ((out (assoc-ref outputs "out"))
+ (coreutils (assoc-ref inputs "coreutils"))
+ (PATH (string-join
+ (list
+ (string-append out "/bin")
+ (string-append coreutils "/bin"))
+ ":"))
+ (hello #$(plain-file
+ "hello.dart"
+ "void main() => print('hello, world!');")))
+ (setenv "PATH" PATH)
+ (invoke "dart" "create" "--no-pub" "dart_test_project")
+ (unless (directory-exists? "dart_test_project")
+ (error "'dart create' did not create expected directory"))
+ (unless (file-exists? "dart_test_project/bin/dart_test_project.dart")
+ (error "'dart create' did not create expected .dart file"))
+ (invoke "dart" "compile" "exe" hello "-o" "hello.exe")
+ (invoke "./hello.exe")))))
+ (delete 'strip))))
+ (inputs (list coreutils))
+ (native-inputs (list unzip coreutils patchelf))
+ (home-page "https://dart.dev/")
+ (synopsis "Approachable, portable, and productive language")
+ (description "Dart is a class-based, single inheritance, object-oriented
+language with C-style syntax. It offers compilation to JavaScript, interfaces,
+mixins, abstract classes, reified generics, and optional typing.")
+ (supported-systems '("x86_64-linux" "i686-linux" "aarch64-linux"))
+ (license license:bsd-3)))
base-commit: 6d334173a30579f04cac37458f8c696b51e2ecba
prerequisite-patch-id: 2f364131a4d24d80490d69a595e8d70c90de488f
prerequisite-patch-id: 2897995fb414cfcaff1dacf6f285bb07635a1c3a
prerequisite-patch-id: fae24f50d8f46c977a7b997a97252ebe7ad2c7c7
prerequisite-patch-id: b34be5beb88f1d7d14849a5bfb46d5caf7327fbc
prerequisite-patch-id: 601da7b7499b3752f8e9248a837688994d21ed0e
prerequisite-patch-id: f0cb2621cb9438cc0b3d2a2ca36c3428bad89087
--
2.39.5
next reply other threads:[~2024-10-29 13:21 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-28 20:45 Jørgen Kvalsvik [this message]
2024-10-30 9:12 ` [bug#74078] [PATCH] gnu: Add dart Sharlatan Hellseher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241028204504.4172-1-j@lambda.is \
--to=j@lambda.is \
--cc=74078@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).