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: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> Cc: tracker <at> debbugs.gnu.org Subject: bug#74078: closed ([PATCH] gnu: Add dart) Date: Tue, 05 Nov 2024 05:22:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Tue, 05 Nov 2024 14:20:21 +0900 with message-id <87v7x2tfxm.fsf <at> gmail.com> and subject line Re: [bug#74078] [PATCH] gnu: Add dart has caused the debbugs.gnu.org bug report #74078, regarding [PATCH] gnu: Add dart to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 74078: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74078 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Jørgen Kvalsvik <j <at> lambda.is> To: guix-patches <at> gnu.org Cc: Jørgen Kvalsvik <j <at> lambda.is> Subject: [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
[Message part 3 (message/rfc822, inline)]
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: Jørgen Kvalsvik <j <at> lambda.is> Cc: 74078-done <at> debbugs.gnu.org Subject: Re: [bug#74078] [PATCH] gnu: Add dart Date: Tue, 05 Nov 2024 14:20:21 +0900Hi Jørgen, Jørgen Kvalsvik <j <at> lambda.is> writes: > * 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. What kind of prebuilt artifacts are we talking about? [...] > +(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")))))) Given the "sources" are architecture-specific... > + (build-system copy-build-system) ... and that we aren't building them, I suppose we are talking about binary executables. [...] While we do have some other packages that do not bootstrap entirely such as Vala, the situation is not comparable with simply fetching its binaries and copying them to the store. I don't think this can be added to GNU Guix as it is, as our policies are strict about being able to build from source (see the pain we go through to build recent rust for example -- a long bootstrap chain rooted in mrustc). I'd suggest creating a merge request against a different channel that do not have such high standards/requirements such as NonGuix [0]. I'm now closing this ticket. Thank you for producing it, and apologies for the outcome, but I think it's important to stick to this important property of Guix called 'referential transparency', which wouldn't be quite the same if the references were opaque binaries :-). [0] https://gitlab.com/nonguix/nonguix/ -- Thanks, Maxim
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.