Hi all,

I was wondering what is the meaning of symbols prefixed with "#$", for
example "#$version" in Guix package definitions.

I was trying to write a package definition for a python package whose
version number was intended to be inferred from git metadata during build
time via versioneer. However, since Guix does not retain git metadata
during build, the setup.py statement declaring the version number as to be
inferred from git metadata had to be changed to refer to a simple version
number string. I wrote,

#+begin_src
(arguments
  '(#:phases (modify-phases %standard-phases
    (add-after 'unpack 'amend-version
      (lambda _
        (substitute* "setup.py"
          (("versioneer.get_version\\(\\)")
          (string-append "\"" #$version "\"")))))
#+end_src

With reference to a patch describing the same issue with a different python
package with the same inferred git metadata version number issue:
https://issues.guix.gnu.org/63628#0-lineno26.

However, I get an error I do not understand:

#+begin_src
starting phase `amend-version'
error: in phase 'amend-version': uncaught exception:
unbound-variable #f "Unbound variable: ~S" (ungexp) #f
#+end_src

I thought I could begin to debug this by understanding what "#$" means in
"#$version".

Thanks in advance!

Best regards,
Ning

Reply via email to