all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Hartmut Goebel <h.goebel@crazy-compilers.com>
To: 52259@debbugs.gnu.org
Subject: [bug#52259] [PATCH 2/3] gnu: trytond: Fix import of trytond modules.
Date: Fri,  3 Dec 2021 14:41:03 +0100	[thread overview]
Message-ID: <3fa3f27e0f88ca1bef4639eb106e8f486b5dfcd5.1638538371.git.h.goebel@crazy-compilers.com> (raw)
In-Reply-To: <5fae975202b1a50b25270568def974822ca0ba98.1638538371.git.h.goebel@crazy-compilers.com>

For adding modules, trytond uses entry-points, anyhow relying on the
modules being named "trytond.modules.xxx" and being placed in the same
filesystem path as "trytond.modules".

The package "trytond.modules" is not a namespace module, anyhow trytond
modules must be sub-modules of "trytond.modules". This works well if all
packages are installed into the same filesystem path "…/trytond/modules":
The Python importer will find all sub_modules at this place.

Anyhow, in Guix, modules don't share the same filesystem path and the
Python importer will not find them.

Solution is to add all trytond module's locations to
"trytond.modules._path__". This will make "trytond.module" behave much
like a namespace module and the importer pick up the module.

* gnu/packages/patches/trytond-add-egg-modules-to-path.patch: New file.
* gnu/packages/tryton.scm (trytond): Use it.
* gnu/local.mk (dist_patch_DATA): Add it
---
 gnu/local.mk                                  |  1 +
 .../trytond-add-egg-modules-to-path.patch     | 22 +++++++++++++++++++
 gnu/packages/tryton.scm                       |  3 ++-
 3 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/trytond-add-egg-modules-to-path.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 604c6cf151..a8b9bcac21 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1816,6 +1816,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/tor-sandbox-i686.patch			\
   %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/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-egg-modules-to-path.patch b/gnu/packages/patches/trytond-add-egg-modules-to-path.patch
new file mode 100644
index 0000000000..1baccfee1c
--- /dev/null
+++ b/gnu/packages/patches/trytond-add-egg-modules-to-path.patch
@@ -0,0 +1,22 @@
+Work around trytond.module not being a real namespace module.
+
+Solution is to add all trytond module's locations to
+trytond.modules._path__. This will make trytond.module behave much
+like a namespace module.
+Adding to __path__ is done in update_egg_modules() to ensure __path__
+is updated whenever the list of egg modules is updated.
+
+*** a/trytond/modules/__init__.py	1970-01-01 01:00:01.000000000 +0100
+--- b/trytond/modules/__init__.py	2021-12-02 18:12:15.385101986 +0100
+***************
+*** 38,43 ****
+--- 38,46 ----
+          import pkg_resources
+          for ep in pkg_resources.iter_entry_points('trytond.modules'):
+              EGG_MODULES[ep.name] = ep
++             path = os.path.join(ep.dist.location, 'trytond', 'modules')
++             if not path in __path__ and os.path.isdir(path):
++                 __path__.append(path)
+      except ImportError:
+          pass
+  
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index 0ac0a5a5cd..212d6593ad 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -48,7 +48,8 @@
        (method url-fetch)
        (uri (pypi-uri "trytond" version))
        (sha256
-        (base32 "1jp5cadqpwkcnml8r1hj6aak5kc8an2d5ai62p96x77nn0dp3ny4"))))
+        (base32 "1jp5cadqpwkcnml8r1hj6aak5kc8an2d5ai62p96x77nn0dp3ny4"))
+       (patches (search-patches "trytond-add-egg-modules-to-path.patch"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-dateutil" ,python-dateutil)
-- 
2.30.2





  reply	other threads:[~2021-12-03 13:44 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-03 13:39 [bug#52259] [PATCH 1/3] gnu: python-stdnum: Update to 1.17 Hartmut Goebel
2021-12-03 13:41 ` Hartmut Goebel [this message]
2021-12-03 13:41 ` [bug#52259] [PATCH 3/3] gnu: trytond: Ensure all modules are found Hartmut Goebel
2021-12-14  8:15   ` zimoun
2021-12-18 14:21     ` Hartmut Goebel
2021-12-18 15:17       ` zimoun
     [not found] ` <handler.52259.B.16385387683881.ack@debbugs.gnu.org>
2021-12-18 14:21   ` bug#52259: Acknowledgement ([PATCH 1/3] gnu: python-stdnum: Update to 1.17.) Hartmut Goebel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3fa3f27e0f88ca1bef4639eb106e8f486b5dfcd5.1638538371.git.h.goebel@crazy-compilers.com \
    --to=h.goebel@crazy-compilers.com \
    --cc=52259@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.