Package: guix-patches;
Reported by: Jørgen Kvalsvik <j <at> lambda.is>
Date: Tue, 29 Oct 2024 03:56:02 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Jørgen Kvalsvik <j <at> lambda.is> To: 74078 <at> debbugs.gnu.org Cc: Jørgen Kvalsvik <j <at> lambda.is> Subject: [bug#74078] [PATCH] gnu: Add dart Date: Mon, 28 Oct 2024 21:45:04 +0100
* 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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.