diff mbox series

[bug#52259,3/3] gnu: trytond: Ensure all modules are found.

Message ID 0d461f73e5c687d1c53df55540d3248b38349414.1638538371.git.h.goebel@crazy-compilers.com
State Accepted
Headers show
Series [bug#52259,1/3] gnu: python-stdnum: Update to 1.17. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Hartmut Goebel Dec. 3, 2021, 1:41 p.m. UTC
If the python package matching tryton is not installed alongside to trytond,
PYTHONPATH ist not set (or pointing to a wring version) and trytond (and the
trytond tools) would not find the trytond modules.

This change introduces a new native-search-path GUIX_TRYTOND_MODULES_PATH.
Trytond gets patched to honor this environment variable.

Thanks to Maxim Cournoyer, who's code for guix-pythonpath-search-path
was the template for guix-trytonpath-search-path.

* gnu/packages/patches/trytond-add-guix_trytond_path.patch: New file.
* gnu/local.mk: (dist_patch_DATA): Add it.
* gnu/packages/tryton.scm (trytond): Use it.
  [native-search-paths]: New element.
  (guix-trytonpath-search-path): New function.
---
 gnu/local.mk                                  |  1 +
 .../trytond-add-guix_trytond_path.patch       | 26 +++++++++++++++++++
 gnu/packages/tryton.scm                       | 19 +++++++++++++-
 3 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/trytond-add-guix_trytond_path.patch

Comments

Simon Tournier Dec. 14, 2021, 8:15 a.m. UTC | #1
Hi,

On Fri, 03 Dec 2021 at 14:41, Hartmut Goebel <h.goebel@crazy-compilers.com> wrote:
> If the python package matching tryton is not installed alongside to trytond,
> PYTHONPATH ist not set (or pointing to a wring version) and trytond (and the
              ^
              typo

> trytond tools) would not find the trytond modules.
>
> This change introduces a new native-search-path GUIX_TRYTOND_MODULES_PATH.
> Trytond gets patched to honor this environment variable.
>
> Thanks to Maxim Cournoyer, who's code for guix-pythonpath-search-path
> was the template for guix-trytonpath-search-path.

The wording appears to me weird, but I am not native.


> * gnu/packages/patches/trytond-add-guix_trytond_path.patch: New file.

Without being picky, why underscore?     ^       ^  Otherwise,

gnu/packages/patches/trytond-add_extend_python_path.patch

Well, it does not matter.


Cheers,
simon
Hartmut Goebel Dec. 18, 2021, 2:21 p.m. UTC | #2
Hi,

thanks for the review. I fixed and pushed as 
d4ecdc3328d998c787cbdad6d02e1a74d2fc7ac4


>> Thanks to Maxim Cournoyer, who's code for guix-pythonpath-search-path
>> was the template for guix-trytonpath-search-path.
> The wording appears to me weird, but I am not native.

"whose" is the correct spelling - anyhow I'm not native, too.


>> * gnu/packages/patches/trytond-add-guix_trytond_path.patch: New file.
> Without being picky, why underscore?     ^       ^  Otherwise,

Underscores since this is the name of the functions added. Other patch 
files do the same, "agg-am_c_prototype.patch" - thus I kept the name.
Simon Tournier Dec. 18, 2021, 3:17 p.m. UTC | #3
Hi Hartmut,

On Sat, 18 Dec 2021 at 15:21, Hartmut Goebel
<h.goebel@crazy-compilers.com> wrote:

> thanks for the review. I fixed and pushed as
> d4ecdc3328d998c787cbdad6d02e1a74d2fc7ac4

Thanks!

> >> * gnu/packages/patches/trytond-add-guix_trytond_path.patch: New file.
> > Without being picky, why underscore?     ^       ^  Otherwise,
>
> Underscores since this is the name of the functions added. Other patch
> files do the same, "agg-am_c_prototype.patch" - thus I kept the name.

In this consistency case, as I suggested, it should be:

    gnu/packages/patches/trytond-add_extend_python_path.patch

Anyway. :-)

Cheers,
simon
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a8b9bcac21..cac9079325 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1817,6 +1817,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/transcode-ffmpeg.patch	\
   %D%/packages/patches/transmission-honor-localedir.patch	\
   %D%/packages/patches/trytond-add-egg-modules-to-path.patch	\
+  %D%/packages/patches/trytond-add-guix_trytond_path.patch	\
   %D%/packages/patches/ttf2eot-cstddef.patch			\
   %D%/packages/patches/tup-unbundle-dependencies.patch		\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
diff --git a/gnu/packages/patches/trytond-add-guix_trytond_path.patch b/gnu/packages/patches/trytond-add-guix_trytond_path.patch
new file mode 100644
index 0000000000..7dc136ec46
--- /dev/null
+++ b/gnu/packages/patches/trytond-add-guix_trytond_path.patch
@@ -0,0 +1,26 @@ 
+Make trytond add all paths listed in GUIX_TRYTOND_MODULES_PATH to sys.path.
+
+*** a/trytond/modules/__init__.py	1970-01-01 01:00:01.000000000 +0100
+--- b/trytond/modules/__init__.py	2021-12-02 22:17:28.014612267 +0100
+***************
+*** 31,36 ****
+--- 31,48 ----
+  
+  EGG_MODULES = {}
+  
++ def __extend_python_path__():
++     tryton_python_path = os.environ.get("GUIX_TRYTOND_MODULES_PATH")
++     if tryton_python_path:
++         paths = [path[:-16]  # remove "/trytond/modules"
++                  for path in tryton_python_path.split(os.pathsep)]
++         sys.path.extend(paths)
++         # ensure new paths are in the pkg_resources WorkingSet
++         import pkg_resources
++         list(map(pkg_resources.working_set.add_entry, paths))
++ 
++ __extend_python_path__()
++ 
+  
+  def update_egg_modules():
+      global EGG_MODULES
+l
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index 212d6593ad..f8cd2b4c9d 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -3,6 +3,7 @@ 
 ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
 ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,6 +40,19 @@ 
   #:use-module (guix utils)
   #:use-module (guix build-system python))
 
+(define (guix-trytonpath-search-path version)
+  "Generate a GUIX_TRYTOND_MODULES_PATH search path specification, using
+VERSION.
+
+Do not use PYTHHONPATH not avoid interfering with any different Python package
+installed in the same environments.  Collecting only paths actually containing
+/tryton/modules reduces the number of paths."
+  (search-path-specification (variable "GUIX_TRYTOND_MODULES_PATH")
+                             (files (list (string-append
+                                           "lib/python"
+                                           (version-major+minor version)
+                                           "/site-packages/trytond/modules")))))
+
 (define-public trytond
   (package
     (name "trytond")
@@ -49,7 +63,8 @@ 
        (uri (pypi-uri "trytond" version))
        (sha256
         (base32 "1jp5cadqpwkcnml8r1hj6aak5kc8an2d5ai62p96x77nn0dp3ny4"))
-       (patches (search-patches "trytond-add-egg-modules-to-path.patch"))))
+       (patches (search-patches "trytond-add-egg-modules-to-path.patch"
+                                "trytond-add-guix_trytond_path.patch"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)
@@ -66,6 +81,8 @@ 
     (native-inputs
      `(("python-mock" ,python-mock)
        ("python-pillow" ,python-pillow)))
+    (native-search-paths
+     (list (guix-trytonpath-search-path (package-version python))))
     (arguments
      `(#:phases
        (modify-phases %standard-phases