* Re: bug#22693: `guix refresh -u` updates other packages with same version [not found] <20160216092724.GA10422@jasmine> @ 2016-04-04 10:20 ` 宋文武 2016-04-04 11:53 ` Andy Wingo 0 siblings, 1 reply; 3+ messages in thread From: 宋文武 @ 2016-04-04 10:20 UTC (permalink / raw) To: guix-devel; +Cc: 22693 Leo Famulari <leo@famulari.name> writes: > I've noticed that `guix refresh -u` will update extraneous packages if > they happen to have the same version and be in the same module. > > For example, from commit d694230ab, you can reproduce the bug: > > $ ./pre-inst-env guix environment guix -- ./pre-inst-env guix refresh -u python-pytest > $ git diff > diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm > index 3dd3862..ae14404 100644 > --- a/gnu/packages/python.scm > +++ b/gnu/packages/python.scm > @@ -796,7 +796,7 @@ Python 3 support.") > (define-public python-pycrypto > (package > (name "python-pycrypto") > - (version "2.6.1") > + (version "2.8.7") > (source > (origin > (method url-fetch) > @@ -1565,7 +1565,7 @@ code introspection, and logging.") > (define-public python-pytest > (package > (name "python-pytest") > - (version "2.6.1") > + (version "2.8.7") > (source > (origin > (method url-fetch) > @@ -1574,7 +1574,7 @@ code introspection, and logging.") > version ".tar.gz")) > (sha256 > (base32 > - "0g2w4p0n42wvz8rq4k6gnzpkakgz3g8sfanxk8jrsra9675snkcr")) > + "1bwb06g64x2gky8x5hcrfpg6r351xwvafimnhm5qxq7wajz8ck7w")) > (modules '((guix build utils))) > (snippet > ;; One of the tests involves the /usr directory, so it fails. How to fix this? The procedure is ‘update-package-source’ in (guix upstream). it find the file, then use ‘substitute’ to replace the version and hash. ‘substitute’ works line-by-line, it can’t match mutiple lines. I try: - use ‘package-location’ and ‘read’ to get the package object, but it lost all format and comments. - use ‘string-match’, but I have no idea how to match the whole package sexp. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: bug#22693: `guix refresh -u` updates other packages with same version 2016-04-04 10:20 ` bug#22693: `guix refresh -u` updates other packages with same version 宋文武 @ 2016-04-04 11:53 ` Andy Wingo 2016-04-04 20:57 ` Ludovic Courtès 0 siblings, 1 reply; 3+ messages in thread From: Andy Wingo @ 2016-04-04 11:53 UTC (permalink / raw) To: 宋文武; +Cc: guix-devel, 22693 On Mon 04 Apr 2016 12:20, iyzsong@member.fsf.org (宋文武) writes: > How to fix this? > > The procedure is ‘update-package-source’ in (guix upstream). > it find the file, then use ‘substitute’ to replace the version and > hash. ‘substitute’ works line-by-line, it can’t match mutiple lines. > > I try: > - use ‘package-location’ and ‘read’ to get the package object, > but it lost all format and comments. One option: 1. open the source file for the package 2. Call (read) until port-line / port-column are beyond the package-location of the package 3. At that point you have the ending location of the package. Then limit your substitute* to work within those lines. Another option would be to extend substitute* to start on a certain line, and to limit the number of substitutions. That way if you start on package-location and limit to one substitution you are likely to update the correct version. Andy ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: bug#22693: `guix refresh -u` updates other packages with same version 2016-04-04 11:53 ` Andy Wingo @ 2016-04-04 20:57 ` Ludovic Courtès 0 siblings, 0 replies; 3+ messages in thread From: Ludovic Courtès @ 2016-04-04 20:57 UTC (permalink / raw) To: Andy Wingo; +Cc: guix-devel, 22693 Andy Wingo <wingo@igalia.com> skribis: > On Mon 04 Apr 2016 12:20, iyzsong@member.fsf.org (宋文武) writes: > >> How to fix this? >> >> The procedure is ‘update-package-source’ in (guix upstream). >> it find the file, then use ‘substitute’ to replace the version and >> hash. ‘substitute’ works line-by-line, it can’t match mutiple lines. >> >> I try: >> - use ‘package-location’ and ‘read’ to get the package object, >> but it lost all format and comments. > > One option: > > 1. open the source file for the package > 2. Call (read) until port-line / port-column are beyond the > package-location of the package > 3. At that point you have the ending location of the package. Right. ‘package-field-location’ does something along these lines. > Then limit your substitute* to work within those lines. A simpler yet less elegant trick used in ‘report-formatting-issues’ in (guix scripts lint) is to have a maximum number of lines assumed to be part of the ‘package’ form following its starting line. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-04-04 20:57 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20160216092724.GA10422@jasmine> 2016-04-04 10:20 ` bug#22693: `guix refresh -u` updates other packages with same version 宋文武 2016-04-04 11:53 ` Andy Wingo 2016-04-04 20:57 ` Ludovic Courtès
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).