On Mon, Oct 09, 2017 at 09:28:04AM +0200, Ludovic Courtès wrote: > Hello! > > Efraim Flashner skribis: > > > On Sat, Oct 07, 2017 at 10:50:21PM +0200, Ludovic Courtès wrote: > > [...] > > >> >> +(define (check-for-updates package) > >> >> + "Check if there is an update available for PACKAGE." > >> >> + (match (package-latest-release package (force %updaters)) > >> >> + ((? upstream-source? source) > >> >> + (when (version>? (upstream-source-version source) > >> >> + (package-version package)) > >> >> + (emit-warning package > >> >> + (format #f (G_ "can be upgraded to ~a~%") > >> >> + (upstream-source-version source))))))) > >> > > >> > I think you can (1) use ‘package-latest-release*’ which ensures that the > >> > returned version is newer, and (2) add a case for #f since > >> > ‘package-latest-release*’ can return #f. > >> > > >> > Apart from that it LGTM, thank you! > >> > > >> > Ludo’. > > > > I've been working on it with package-latest-release*, and its nice not > > having to reimplement the logic, but I can't get it to return the newest > > version of the upstream-package. I got it to return a useful message > > with: > > > > (define (check-for-updates package) > > (if (package-latest-release* package (force %updaters)) > > (emit-warning package > > (format #f (G_ "can be upgraded to ~a~%") > > (upstream-source-version (package-latest-release package (force %updaters))))) > > #t)) > > > > but I've already checked if there's an upstream release, I shouldn't > > need to check a second time. package-latest-release* returns true/false, > > > AFAICS ‘package-latest-release*’ returns #f or an : > > --8<---------------cut here---------------start------------->8--- > scheme@(guile-user)> (package-latest-release* binutils (force %updaters)) > $4 = #< package: "binutils" version: "2.29.1" urls: ("mirror://gnu/binutils/binutils-2.29.1.tar.gz" "mirror://gnu/binutils/binutils-2.29.1.tar.lz" "mirror://gnu/binutils/binutils-2.29.1.tar.bz2" "mirror://gnu/binutils/binutils-2.29.1.tar.xz") signature-urls: ("mirror://gnu/binutils/binutils-2.29.1.tar.gz.sig" "mirror://gnu/binutils/binutils-2.29.1.tar.lz.sig" "mirror://gnu/binutils/binutils-2.29.1.tar.bz2.sig" "mirror://gnu/binutils/binutils-2.29.1.tar.xz.sig")> > --8<---------------cut here---------------end--------------->8--- > > So you can write: > > (match (package-latest-release* package (force %updaters)) > ((? upstream-source? source) > …) > (#f ;cannot determine latest release > #f)) > > HTH! > > Ludo’. I looked at the final diff between my earlier patch and my final version, it pretty much added up to the lines you wrote above ;) I should get myself a rubber duck, should help my debugging and reading skills. -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted