gnu: gourmet: Update to 0.17.4-0-8af29c8 and enable tests.

* gnu/packages/patches/gourmet-sqlalchemy-compat.patch: Add file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/nutrition.scm (gourmet): Update to 0.17.4-0-8af29c8.
[source]: Apply patch.
[python]: Delete argument.
[tests?]: Likewise.
[phases]{prepare-x}: New phase.
{check}: New phase override.
{install-dekstop-file-and-icons}: New phase.
[native-inputs]: Delete python2-distutils-extra, intltool and python2-pygtk.
Add python-dogtail, python-pytest, python-selenium and xorg-server-for-tests.
[inputs]: Delete python2-pygtk, python2-sqlalchemy, python2-lxml,
python2-pillow and python2-elib.intl.
Add gtk+, python-argcomplete, python-beautifulsoup4, python-gst,
python-keyring, python-lxml, python-pillow, python-pycairo, python-pyenchant,
python-pygobject, python-requests, python-scrape-schema-recipe,
python-sqlalchemy.
This commit is contained in:
Maxim Cournoyer 2022-04-29 17:36:15 -04:00
parent 421d09a1d3
commit cfc02804fc
No known key found for this signature in database
GPG Key ID: 1260E46482E63562
3 changed files with 98 additions and 41 deletions

View File

@ -1214,6 +1214,7 @@ dist_patch_DATA = \
%D%/packages/patches/go-github-com-urfave-cli-fix-tests.patch \
%D%/packages/patches/go-github-com-urfave-cli-v2-fix-tests.patch \
%D%/packages/patches/go-skip-gc-test.patch \
%D%/packages/patches/gourmet-sqlalchemy-compat.patch \
%D%/packages/patches/gpaste-fix-paths.patch \
%D%/packages/patches/gpm-glibc-2.26.patch \
%D%/packages/patches/gpodder-disable-updater.patch \

View File

@ -30,13 +30,17 @@
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
#:use-module (gnu packages gtk)
#:use-module (gnu packages enchant)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages image)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages time)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xml))
(define-public python-scrape-schema-recipe
@ -78,41 +82,75 @@ in the @url{https://schema.org/Recipe} format.")
(license asl2.0)))
(define-public gourmet
;; Use the latest commit to gain Python 3 support.
(let ((revision "0")
(commit "8af29c8ded24528030e5ae2ea3461f61c1e5a575"))
(package
(name "gourmet")
(version "0.17.4")
(version (git-version "0.17.4" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/thinkle/gourmet")
(commit version)))
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"09a2zk140l4babwdj8pwcgl9v7rvwff9cn7h3ppfhm3yvsgkrx07"))))
"08fbw6zp32ws6w9czwy2sqc9c9izlkglsskshj2114d0l79z4gj8"))
(patches (search-patches "gourmet-sqlalchemy-compat.patch"))))
(build-system python-build-system)
(native-inputs
`(("distutils-extra" ,python2-distutils-extra)
("intltool" ,intltool)
("python-pygtk" ,python2-pygtk))) ;for tests
;; TODO: Add python-reportlab and/or python-poppler for printing/pdf
;; export, and python-beautifulsoup for web import plugin.
(inputs
`(("pygtk" ,python2-pygtk)
("sqlalchemy" ,python2-sqlalchemy)
("python-lxml" ,python2-lxml)
("python-pillow" ,python2-pillow)
("elib.intl" ,python2-elib.intl)))
(arguments
`(#:python ,python-2 ;exception and print syntax
#:tests? #f ;tests look bitrotted
(list
#:modules `((guix build utils)
(guix build python-build-system)
(ice-9 ftw)
(srfi srfi-26))
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(invoke "python" "setup.py" "install" "--prefix"
(assoc-ref outputs "out")))))))
#~(modify-phases %standard-phases
(add-before 'check 'prepare-x
;; Both the tests and the sanity-check phase need an X server to
;; succeed.
(lambda _
(system "Xvfb &")
(setenv "DISPLAY" ":0")))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(setenv "HOME" "/tmp") ;needed by tests
(apply invoke "pytest" "-vv"
;; XXX: This is needed because some tests in deeper
;; directories or otherwise discovered by Pytest are
;; broken.
(map (cut string-append "gourmet/tests/" <>)
(scandir "gourmet/tests"
(cut string-prefix? "test_" <>)))))))
(add-after 'install 'install-dekstop-file-and-icons
(lambda _
(define share (string-append #$output "/share"))
(install-file ".flatpak/io.github.thinkle.Gourmet.desktop"
(string-append share "/applications"))
(install-file ".flatpak/io.github.thinkle.Gourmet.svg"
(string-append share "/icons/Gourmet")))))))
(native-inputs
(list python-dogtail
python-pytest
python-selenium
xorg-server-for-tests))
(inputs
(list gtk+
python-argcomplete
python-beautifulsoup4
python-gst
python-keyring
python-lxml
python-pillow
python-pycairo
python-pyenchant
python-pygobject
python-requests
python-scrape-schema-recipe
python-sqlalchemy))
(home-page "https://thinkle.github.io/gourmet/")
(synopsis "Recipe organizer")
(description
@ -120,4 +158,4 @@ in the @url{https://schema.org/Recipe} format.")
search, organize, and browse your recipes. Gourmet can also generate shopping
lists and calculate nutritional information. It imports Mealmaster,
MasterCook and KRecipe files and exports PDFs, webpages, and other formats.")
(license gpl2+)))
(license gpl2+))))

View File

@ -0,0 +1,18 @@
diff --git a/gourmet/backends/db.py b/gourmet/backends/db.py
index faa6a57a..7e6d2bc6 100644
--- a/gourmet/backends/db.py
+++ b/gourmet/backends/db.py
@@ -773,9 +773,11 @@ class RecData (Pluggable):
"""Return the number of rows in table that match criteria
"""
if criteria:
- return table.count(*make_simple_select_arg(criteria,table)).execute().fetchone()[0]
+ return sqlalchemy.select(
+ sqlalchemy.func.count(criteria)).select_from(table).scalar()
else:
- return table.count().execute().fetchone()[0]
+ return sqlalchemy.select(
+ sqlalchemy.func.count()).select_from(table).scalar()
def fetch_join (self, table1, table2, col1, col2,
column_names=None, sort_by=[], **criteria):