unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Prafulla Giri <pratheblackdiamond@gmail.com>
To: 42948@debbugs.gnu.org
Subject: bug#42948: (wrap-program) bug
Date: Thu, 20 Aug 2020 17:44:01 +0545	[thread overview]
Message-ID: <CAFw+=j1g34Xk9FKw6FMuXNjvDEYnRKoi1ikD4je3n3_GXmBnPw@mail.gmail.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1787 bytes --]

Esteemed maintainers,

It seems that (wrap-program ...) over-writes the previous wrapping of a
package done by the build system.

This does not happen for many (wrap-programs) called in the modify-phases
section of the package definition itself.

Attached is a package definition for ruby-ronn-ng, that demonstrates this
issue. The custom (wrap-program)-s
called from the package definition seem to over-write the definitions of
GEM_ENV as made by the 'wrap %standard-phase
of the ruby-build system.
The wrappings made by 'wrap %standard-phase can be seen during the custom
'DEBUG phase. The subsequent 'wrap-program1
and 'wrap-program2 add more environment variables to the wrapping, but on
checking the contents of `which ronn`, once
it is installed (using `less $(which ronn)`), it can be verified that the
GEM_ENV package definitions have been overwritten.

This may just be a ruby-build-system issue. Or perhaps it might be
something that permeates over a few more build systems.
That still remains to be tested.

Attached are a few different versions of the package definitions for
ruby-ronn-ng for the ease of those who would like to
verify this.
1. ruby-ronn-ng-standalone.scm : To be tested using `guix time-machine --
build --verbosity=2 --file=ruby-ronn-ng-standalone.scm`[1]
2. ruby-ronn-ng.scm : To be appended to the end of the
gnu/packages/ruby.scm file in local guix checkout, and be tested using the
local version
3. ruby-ronn-ng.patch : To be applied to local guix checkout

[1] - This package definition needs ruby-mustache, which has only recently
been added to guix. Hence, the time-machine.

NOTE: `ronn` does not work even with `propagated-inputs`. See this patch as
to why:
https://aur.archlinux.org/cgit/aur.git/tree/0001-allow-mustache-1.0.patch?h=ruby-ronn-ng

[-- Attachment #1.2: Type: text/html, Size: 2038 bytes --]

[-- Attachment #2: ruby-ronn-ng.patch --]
[-- Type: text/x-patch, Size: 2737 bytes --]

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 010028082a..5797b7cb9d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -11659,3 +11659,56 @@ which snapshots to consider and what files to include.")
 defined in @file{.travis.yml} on your local machine, using @code{rvm},
 @code{rbenv}, or @code{chruby} to test different versions of Ruby.")
     (license license:expat)))
+
+(define-public ruby-ronn-ng
+  (package
+    (name "ruby-ronn-ng")
+    (version "0.9.1")
+    (home-page "asdf")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "ronn-ng" version))
+       (sha256
+        (base32
+         "1slxfg57cabmh98fw507z4ka6lwq1pvbrqwppflxw6700pi8ykfh"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Debug phase, just to show that before any of this wrapping, the standard ruby 'wrap phase has
+         ;; already done it's job, AND it gets over-written, for some strange reason. The (wrappings)
+         ;; defined in the package itself don't seem to over-write each other. Hmm.
+         (add-after
+             'wrap 'DEBUG
+           (lambda _
+             (pk "Hey there, I'm closer than I appear!")
+             (invoke "cat" (string-append (assoc-ref %outputs "out") "/bin/.ronn-real"))
+             #t))
+         (add-after
+             'wrap 'wrap-program2
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
+               (begin (display %build-inputs)(newline))
+               (wrap-program prog
+                 `("PATH" ":" suffix ,(map (lambda (exp_inpt)
+                                             (string-append (assoc-ref %build-inputs exp_inpt) "/bin"))
+                                           '("ruby-kramdown" "ruby-mustache" "ruby-nokogiri")))))
+             #t))
+         (add-after
+             'wrap 'wrap-program1
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
+               (wrap-program prog
+                 `("FOO" ":" = ("BAR"))))#t))
+         ;; another add-after may go here
+         )))
+    (inputs ;; note to self: these were propagated-inputs before
+     `(("ruby-kramdown" ,ruby-kramdown)
+       ("ruby-mustache" ,ruby-mustache)
+       ("ruby-nokogiri" ,ruby-nokogiri)))
+    (synopsis
+     "Ronn-NG builds manuals in HTML and Unix man page format from Markdown.")
+    (description
+     "Ronn-NG builds manuals in HTML and Unix man page format from Markdown.")
+    (license license:expat))) ;; license and home-page are mock values here

[-- Attachment #3: ruby-ronn-ng.scm --]
[-- Type: text/x-scheme, Size: 2278 bytes --]


(define-public ruby-ronn-ng
  (package
    (name "ruby-ronn-ng")
    (version "0.9.1")
    (home-page "asdf")
    (source
     (origin
       (method url-fetch)
       (uri (rubygems-uri "ronn-ng" version))
       (sha256
        (base32
         "1slxfg57cabmh98fw507z4ka6lwq1pvbrqwppflxw6700pi8ykfh"))))
    (build-system ruby-build-system)
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         ;; Debug phase, just to show that before any of this wrapping, the standard ruby 'wrap phase has
         ;; already done it's job, AND it gets over-written, for some strange reason. The (wrappings)
         ;; defined in the package itself don't seem to over-write each other. Hmm.
         (add-after
             'wrap 'DEBUG
           (lambda _
             (pk "Hey there, I'm closer than I appear!")
             (invoke "cat" (string-append (assoc-ref %outputs "out") "/bin/.ronn-real"))
             #t))
         (add-after
             'wrap 'wrap-program2
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
               (begin (display %build-inputs)(newline))
               (wrap-program prog
                 `("PATH" ":" suffix ,(map (lambda (exp_inpt)
                                             (string-append (assoc-ref %build-inputs exp_inpt) "/bin"))
                                           '("ruby-kramdown" "ruby-mustache" "ruby-nokogiri")))))
             #t))
         (add-after
             'wrap 'wrap-program1
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
               (wrap-program prog
                 `("FOO" ":" = ("BAR"))))#t))
         ;; another add-after may go here
         )))
    (inputs ;; note to self: these were propagated-inputs before
     `(("ruby-kramdown" ,ruby-kramdown)
       ("ruby-mustache" ,ruby-mustache)
       ("ruby-nokogiri" ,ruby-nokogiri)))
    (synopsis
     "Ronn-NG builds manuals in HTML and Unix man page format from Markdown.")
    (description
     "Ronn-NG builds manuals in HTML and Unix man page format from Markdown.")
    (license license:expat))) ;; license and home-page are mock values here

[-- Attachment #4: ruby-ronn-ng-standalone.scm --]
[-- Type: text/x-scheme, Size: 2223 bytes --]

(use-modules (guix packages)
	     (guix download)
	     (guix build-system ruby)
	     ((guix licenses) #:prefix license:)
	     (gnu packages ruby))

(define ruby-ronn-ng
  (package
   (name "ruby-ronn-ng")
   (version "0.9.1")
   (home-page "asdf")
   (source
    (origin
     (method url-fetch)
     (uri (rubygems-uri "ronn-ng" version))
     (sha256
      (base32
       "1slxfg57cabmh98fw507z4ka6lwq1pvbrqwppflxw6700pi8ykfh"))))
   (build-system ruby-build-system)
   (arguments
    `(#:phases
      (modify-phases %standard-phases
		     ;; Debug phase, just to show that before any of this wrapping, the standard ruby 'wrap phase has
		     ;; already done it's job, AND it gets over-written, for some strange reason. The (wrappings)
		     ;; defined in the package itself don't seem to over-write each other. Hmm.
		     (add-after
		      'wrap 'DEBUG
		      (lambda _
			(pk "Hey there, I'm closer than I appear!")
			(invoke "cat" (string-append (assoc-ref %outputs "out") "/bin/.ronn-real"))
			#t))
		     (add-after
		      'wrap 'wrap-program2
		      (lambda* (#:key outputs #:allow-other-keys)
			       (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
				 (begin (display %build-inputs)(newline))
				 (wrap-program prog
					       `("PATH" ":" suffix ,(map (lambda (exp_inpt)
									   (string-append (assoc-ref %build-inputs exp_inpt) "/bin"))
									 '("ruby-kramdown" "ruby-mustache" "ruby-nokogiri")))))
			       #t))
		     (add-after
		      'wrap 'wrap-program1
		      (lambda* (#:key outputs #:allow-other-keys)
			       (let ((prog (string-append (assoc-ref %outputs "out") "/bin/ronn")))
				 (wrap-program prog
					       `("FOO" ":" = ("BAR"))))#t))
		     ;; another add-after may go here
		     )))
   (inputs ;; note to self: these were propagated-inputs before
    `(("ruby-kramdown" ,ruby-kramdown)
      ("ruby-mustache" ,ruby-mustache)
      ("ruby-nokogiri" ,ruby-nokogiri)))
   (synopsis
    "Ronn-NG builds manuals in HTML and Unix man page format from Markdown.")
   (description
    "Ronn-NG builds manuals in HTML and Unix man page format from Markdown.")
   (license license:expat))) ;; license and home-page are mock values here

ruby-ronn-ng

             reply	other threads:[~2020-08-20 12:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-20 11:59 Prafulla Giri [this message]
2020-08-20 12:31 ` bug#42948: (wrap-program) bug Julien Lepiller
2020-08-20 15:15   ` Prafulla Giri
2020-08-20 16:57 ` Julien Lepiller

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='CAFw+=j1g34Xk9FKw6FMuXNjvDEYnRKoi1ikD4je3n3_GXmBnPw@mail.gmail.com' \
    --to=pratheblackdiamond@gmail.com \
    --cc=42948@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).