diff mbox series

package/avahi: fix python install issue

Message ID ZsCjPIEVSPj9R2Eo@waldemar-brodkorb.de
State Accepted
Headers show
Series package/avahi: fix python install issue | expand

Commit Message

Waldemar Brodkorb Aug. 17, 2024, 1:18 p.m. UTC
Since the update of Python to 3.12.4 in commit
76cd14167f5eb3ffe22e131ddbbecf9bc61f2ef1 avahi fails to install
python subcomponents. The reason is that the obsolete imp
python modul is used. Add a patch to remove the imp dependency.

Fixes:
 - http://autobuild.buildroot.net/results/2bf/2bf391b93362204917a560705bc402585334ab3c

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 .../0002-remove-imp-from-py-compile.patch     | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 package/avahi/0002-remove-imp-from-py-compile.patch

Comments

Yann E. MORIN Aug. 18, 2024, 9:23 a.m. UTC | #1
Waldemar, All,

On 2024-08-17 15:18 +0200, Waldemar Brodkorb spake thusly:
> Since the update of Python to 3.12.4 in commit
> 76cd14167f5eb3ffe22e131ddbbecf9bc61f2ef1 avahi fails to install
> python subcomponents. The reason is that the obsolete imp
> python modul is used. Add a patch to remove the imp dependency.
> 
> Fixes:
>  - http://autobuild.buildroot.net/results/2bf/2bf391b93362204917a560705bc402585334ab3c
> 
> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>

Applied to master, thanks.

But see below

> ---
>  .../0002-remove-imp-from-py-compile.patch     | 50 +++++++++++++++++++
>  1 file changed, 50 insertions(+)
>  create mode 100644 package/avahi/0002-remove-imp-from-py-compile.patch
> 
> diff --git a/package/avahi/0002-remove-imp-from-py-compile.patch b/package/avahi/0002-remove-imp-from-py-compile.patch
> new file mode 100644
> index 0000000000..37534a3f7a
> --- /dev/null
> +++ b/package/avahi/0002-remove-imp-from-py-compile.patch
> @@ -0,0 +1,50 @@
> +Remove optional imp python module dependency.
> +
> +Upstream already removed py-compile entirely in their git repository,
> +so the patch is not appropiate for upstream.

This is really weird: the git tree removed the py-comple in 2005, and it
is not present in the v0.8 tag, but then the release tarball, that we
use, does carry that file.

Could you see with upstream how they end up with py-compile in the
released archive, while it is not in git?

There is a risk that that file gets added somehow by the autotools
packagng process, so it will eventually be present in the next release
as well, and we'd have to carry that patch forever and ever...

Regards,
Yann E. MORIN.

> +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> +Upstream: not appropiate
> +
> +diff -Nur avahi-0.8.orig/py-compile avahi-0.8/py-compile
> +--- avahi-0.8.orig/py-compile	2020-02-18 07:58:21.192417644 +0100
> ++++ avahi-0.8/py-compile	2024-08-17 15:03:07.328733849 +0200
> +@@ -116,7 +116,7 @@
> + fi
> + 
> + $PYTHON -c "
> +-import sys, os, py_compile, imp
> ++import sys, os, py_compile
> + 
> + files = '''$files'''
> + 
> +@@ -129,15 +129,12 @@
> + 	    continue
> +     sys.stdout.write(file)
> +     sys.stdout.flush()
> +-    if hasattr(imp, 'get_tag'):
> +-        py_compile.compile(filepath, imp.cache_from_source(filepath), path)
> +-    else:
> +-        py_compile.compile(filepath, filepath + 'c', path)
> ++    py_compile.compile(filepath, filepath + 'c', path)
> + sys.stdout.write('\n')" || exit $?
> + 
> + # this will fail for python < 1.5, but that doesn't matter ...
> + $PYTHON -O -c "
> +-import sys, os, py_compile, imp
> ++import sys, os, py_compile
> + 
> + # pypy does not use .pyo optimization
> + if hasattr(sys, 'pypy_translation_info'):
> +@@ -153,10 +150,7 @@
> + 	    continue
> +     sys.stdout.write(file)
> +     sys.stdout.flush()
> +-    if hasattr(imp, 'get_tag'):
> +-        py_compile.compile(filepath, imp.cache_from_source(filepath, False), path)
> +-    else:
> +-        py_compile.compile(filepath, filepath + 'o', path)
> ++    py_compile.compile(filepath, filepath + 'o', path)
> + sys.stdout.write('\n')" 2>/dev/null || :
> + 
> + # Local Variables:
> -- 
> 2.30.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Waldemar Brodkorb Aug. 18, 2024, 10:11 a.m. UTC | #2
Hi Yann,
Yann E. MORIN wrote,

> Waldemar, All,
> 
> On 2024-08-17 15:18 +0200, Waldemar Brodkorb spake thusly:
> > Since the update of Python to 3.12.4 in commit
> > 76cd14167f5eb3ffe22e131ddbbecf9bc61f2ef1 avahi fails to install
> > python subcomponents. The reason is that the obsolete imp
> > python modul is used. Add a patch to remove the imp dependency.
> > 
> > Fixes:
> >  - http://autobuild.buildroot.net/results/2bf/2bf391b93362204917a560705bc402585334ab3c
> > 
> > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> 
> Applied to master, thanks.

Thanks you.
 
> But see below
> 
> > ---
> >  .../0002-remove-imp-from-py-compile.patch     | 50 +++++++++++++++++++
> >  1 file changed, 50 insertions(+)
> >  create mode 100644 package/avahi/0002-remove-imp-from-py-compile.patch
> > 
> > diff --git a/package/avahi/0002-remove-imp-from-py-compile.patch b/package/avahi/0002-remove-imp-from-py-compile.patch
> > new file mode 100644
> > index 0000000000..37534a3f7a
> > --- /dev/null
> > +++ b/package/avahi/0002-remove-imp-from-py-compile.patch
> > @@ -0,0 +1,50 @@
> > +Remove optional imp python module dependency.
> > +
> > +Upstream already removed py-compile entirely in their git repository,
> > +so the patch is not appropiate for upstream.
> 
> This is really weird: the git tree removed the py-comple in 2005, and it
> is not present in the v0.8 tag, but then the release tarball, that we
> use, does carry that file.
> 
> Could you see with upstream how they end up with py-compile in the
> released archive, while it is not in git?
> 
> There is a risk that that file gets added somehow by the autotools
> packagng process, so it will eventually be present in the next release
> as well, and we'd have to carry that patch forever and ever...

You are right, py-compile is generated.
But in avahi git you get one with following code:

python_major=`$PYTHON -V 2>&1 | sed -e 's/.* //;s/\..*$//;1q'`
if test -z "$python_major"; then
  echo "$me: could not determine $PYTHON major version, guessing 3" >&2
  python_major=3
fi

# The old way to import libraries was deprecated.
if test "$python_major" -le 2; then
  import_lib=imp
  import_test="hasattr(imp, 'get_tag')"
  import_call=imp.cache_from_source
  import_arg2=', False' # needed in one call and not the other
else
  import_lib=importlib
  import_test="hasattr(sys.implementation, 'cache_tag')"
  import_call=importlib.util.cache_from_source
  import_arg2=
fi

$PYTHON -c "
import sys, os, py_compile, $import_lib
...

So I believe newer Python version is handled there.

best regards
 Waldemar
diff mbox series

Patch

diff --git a/package/avahi/0002-remove-imp-from-py-compile.patch b/package/avahi/0002-remove-imp-from-py-compile.patch
new file mode 100644
index 0000000000..37534a3f7a
--- /dev/null
+++ b/package/avahi/0002-remove-imp-from-py-compile.patch
@@ -0,0 +1,50 @@ 
+Remove optional imp python module dependency.
+
+Upstream already removed py-compile entirely in their git repository,
+so the patch is not appropiate for upstream.
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+Upstream: not appropiate
+
+diff -Nur avahi-0.8.orig/py-compile avahi-0.8/py-compile
+--- avahi-0.8.orig/py-compile	2020-02-18 07:58:21.192417644 +0100
++++ avahi-0.8/py-compile	2024-08-17 15:03:07.328733849 +0200
+@@ -116,7 +116,7 @@
+ fi
+ 
+ $PYTHON -c "
+-import sys, os, py_compile, imp
++import sys, os, py_compile
+ 
+ files = '''$files'''
+ 
+@@ -129,15 +129,12 @@
+ 	    continue
+     sys.stdout.write(file)
+     sys.stdout.flush()
+-    if hasattr(imp, 'get_tag'):
+-        py_compile.compile(filepath, imp.cache_from_source(filepath), path)
+-    else:
+-        py_compile.compile(filepath, filepath + 'c', path)
++    py_compile.compile(filepath, filepath + 'c', path)
+ sys.stdout.write('\n')" || exit $?
+ 
+ # this will fail for python < 1.5, but that doesn't matter ...
+ $PYTHON -O -c "
+-import sys, os, py_compile, imp
++import sys, os, py_compile
+ 
+ # pypy does not use .pyo optimization
+ if hasattr(sys, 'pypy_translation_info'):
+@@ -153,10 +150,7 @@
+ 	    continue
+     sys.stdout.write(file)
+     sys.stdout.flush()
+-    if hasattr(imp, 'get_tag'):
+-        py_compile.compile(filepath, imp.cache_from_source(filepath, False), path)
+-    else:
+-        py_compile.compile(filepath, filepath + 'o', path)
++    py_compile.compile(filepath, filepath + 'o', path)
+ sys.stdout.write('\n')" 2>/dev/null || :
+ 
+ # Local Variables: