aboutcode-org / aboutcode-org/extractcode

Trouble getting tests running

Aberta
#51 2 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
39
Forks
23
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Hello,

I can't seem to manage to get extractcode and [typecode](https://github.com/nexB/typecode) to run the tests.

The whole issue is that part of the README.rst:

> To install this package with its full capability (where the binaries for
> 7zip and libarchive are installed), use the `full` extra option::
>
> pip install extractcode[full]
>
> If you want to use the version of binaries (possibly) provided by your operating
> system, use the `minimal` option::
>
> pip install extractcode
>
> In this case, you will need to provide a working and compatible libarchive and
> 7zip installed and configured in one of these ways such that ExtractCode can
> find them:
>
> - **a typecode-libarchive and typecode-7z plugin**: See the standard ones at
> https://github.com/nexB/scancode-plugins/tree/main/builtins
> These can either bundle a libarchive library, a 7z executable or expose a
> system-installed libraries.
> It does so by providing plugin entry points as ``scancode_location_provider``
> for ``extractcode_libarchive`` that should point to a ``LocationProviderPlugin``
> subclass with a ``get_locations()`` method that must return a mapping with
> this key:
>
> - 'extractcode.libarchive.dll': the absolute path to a **libarchive** shared object/DLL
>
> See for example:
>
> - https://github.com/nexB/scancode-plugins/blob/4da5fe8a5ab1c87b9b4af9e54d7ad60e289747f5/builtins/extractcode_libarchive-linux/setup.py#L40
> - https://github.com/nexB/scancode-plugins/blob/4da5fe8a5ab1c87b9b4af9e54d7ad60e289747f5/builtins/extractcode_libarchive-linux/src/extractcode_libarchive/__init__.py#L17
>
> And in the same way, the ``scancode_location_provider`` for ``extractcode_7zip``
> should point to a ``LocationProviderPlugin`` subclass with a ``get_locations()``
> method that must return a mapping with this key:
>
> - 'extractcode.sevenzip.exe': the absolute path to a **7zip** executable
>
> See for example:
>
> - https://github.com/nexB/scancode-plugins/blob/4da5fe8a5ab1c87b9b4af9e54d7ad60e289747f5/builtins/extractcode_7z-linux/setup.py#L40
> - https://github.com/nexB/scancode-plugins/blob/4da5fe8a5ab1c87b9b4af9e54d7ad60e289747f5/builtins/extractcode_7z-linux/src/extractcode_7z/__init__.py#L18
>
> - use **environment variables** to point to installed binaries:
>
> - EXTRACTCODE_LIBARCHIVE_PATH: the absolute path to a libarchive DLL
> - EXTRACTCODE_7Z_PATH: the absolute path to a 7zip executable
>
>
> - **a system-installed libarchive and 7zip executable** available in the system **PATH**.

So I am on a distro with libarchive-3.7.1 and p7zip-16.02 installed. Obviously I don't want to bundle with the full option.

I set up:

```rpm
export EXTRACTCODE_7Z_PATH=%{_bindir}
export EXTRACTCODE_LIBARCHIVE_PATH_ENVVAR=%{_libdir}
%pytest
```

It seems that libarchive is detected:

```bash
=============================== warnings summary ===============================
../../../../usr/lib/python3.12/site-packages/typecode/magic2.py:195
/usr/lib/python3.12/site-packages/typecode/magic2.py:195: UserWarning: System libmagic found in typical location is used. Install instead a typecode-libmagic plugin for best support.
warnings.warn(

src/extractcode/libarchive2.py:107: 12 warnings
/builddir/build/BUILD/extractcode-31.0.0/src/extractcode/libarchive2.py:107: UserWarning: Using "libarchive" library found in a system location. Install instead a extractcode-libarchive plugin for best support.
warnings.warn(
```

(same with libmagic)

However nothing works:

```bash
==================================== ERRORS ====================================
_________________ ERROR collecting src/extractcode/archive.py __________________
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
_________________ ERROR collecting src/extractcode/archive.py __________________
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
_________________ ERROR collecting src/extractcode/extract.py __________________
src/extractcode/extract.py:23: in
import extractcode.archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
_________________ ERROR collecting src/extractcode/extract.py __________________
src/extractcode/extract.py:23: in
import extractcode.archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
_______________ ERROR collecting src/extractcode/libarchive2.py ________________
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
_______________ ERROR collecting src/extractcode/libarchive2.py ________________
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
____________________ ERROR collecting tests/test_archive.py ____________________
tests/test_archive.py:29: in
from extractcode import archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
____________________ ERROR collecting tests/test_archive.py ____________________
tests/test_archive.py:29: in
from extractcode import archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
____________________ ERROR collecting tests/test_extract.py ____________________
tests/test_extract.py:23: in
from extractcode import extract
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/extract.py:23: in
import extractcode.archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
____________________ ERROR collecting tests/test_extract.py ____________________
tests/test_extract.py:23: in
from extractcode import extract
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/extract.py:23: in
import extractcode.archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
________________ ERROR collecting tests/test_extractcode_api.py ________________
tests/test_extractcode_api.py:16: in
from extractcode import extract
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/extract.py:23: in
import extractcode.archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
________________ ERROR collecting tests/test_extractcode_api.py ________________
tests/test_extractcode_api.py:16: in
from extractcode import extract
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/extract.py:23: in
import extractcode.archive
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/archive.py:29: in
from extractcode import libarchive2
:1266: in _find_and_load
???
:1237: in _find_and_load_unlocked
???
:841: in _load_unlocked
???
/usr/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:178: in exec_module
exec(co, module.__dict__)
src/extractcode/libarchive2.py:635: in
archive_reader = libarchive.archive_read_new
/usr/lib64/python3.12/ctypes/__init__.py:392: in __getattr__
func = self.__getitem__(name)
/usr/lib64/python3.12/ctypes/__init__.py:397: in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
E AttributeError: /usr/bin/python3: undefined symbol: archive_read_new
```

archive_read_new is not found so it doesn't find libarchive I believe.

So I may not have understood the README.rst correctly. Are all the part s following "In this case, you will need to provide a working and compatible libarchive and 7zip installed and configured in one of these ways such that ExtractCode can find them:" mandatory or do I have to choose among the options?

Are the plugins mandatory?

Then If I distribute extractool, does the user have to set up EXTRACTCODE_7Z_PATH and EXTRACTCODE_7Z_PATH each time? Is there a way to avoir that without bundling?

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.