Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 'sample' file download network errors in various containerized environments #82

Closed
3 tasks done
myselfhimself opened this issue Dec 2, 2020 · 11 comments
Closed
3 tasks done

Comments

@myselfhimself
Copy link
Owner

myselfhimself commented Dec 2, 2020

when running import gmic; gmic.run("sp leno")), a curl network error is found. May be due to CImg's download call using a fine-tuned C++ libcurl set of configuration flags, which may be unsufficient or too restrictive for some environments.

Fix needed for:

@myselfhimself
Copy link
Owner Author

myselfhimself commented Dec 4, 2020

CA certificate error found, after printfs-debugging within CImg.h

(gmicpy290numpy) jd@jd-ThinkPad-T400:~/Productions/GMIC/gmic-py/wheelhouse$ pip install gmic-2.9.1a5-cp37-cp37m-manylinux2010_x86_64.whl
Processing ./gmic-2.9.1a5-cp37-cp37m-manylinux2010_x86_64.whl
Requirement already satisfied: wurlitzer in /home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages (from gmic==2.9.1a5) (2.0.1)
Installing collected packages: gmic
Successfully installed gmic-2.9.1a5
WARNING: You are using pip version 20.0.2; however, version 20.3.1 is available.
You should consider upgrading via the '/home/jd/.virtualenvs/gmicpy290numpy/bin/python3 -m pip install --upgrade pip' command.
(gmicpy290numpy) jd@jd-ThinkPad-T400:~/Productions/GMIC/gmic-py/wheelhouse$ python
Python 3.7.5 (default, Nov 20 2019, 09:21:52) 
[GCC 9.2.1 20191008] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gmic
>>> gmic.__spec__
ModuleSpec(name='gmic', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7fe1989ad0d0>, origin='/home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.cpython-37m-x86_64-linux-gnu.so')
>>> gmic.run("sp display")
JD LOADING IMAGE FROM FILE 222, try_fallback:0
JD USING CURLJD CURL INIT DONE
JD CURL CONFIG START
JD PREPARING ERROR BUFFER
JD CURL PREPERFORM
JD CURL POSTPERFORM
JD CURL PRECLOSE
JD REPORTING CURL ERROR

libcurl: (77) Problem with the SSL CA cert (path? access rights?)
JD CURL REMOVE filename_local=/tmp/0M76Cuo2.png
JD CURL POSTCATCH
JD CURL try_fallback:0
JD EXCEPTION DETAIL: cimg::load_network(): Failed to load file 'https://gmic.eu/img/sample_chick.png' with libcurl. JD ENDOF EXCEPTION DETAIL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
gmic.GmicException: *** Error in ./sp/_sample/*repeat#22766/*if#22770/*if#22772/ (file '/home/jd/.config/gmic//update291.gmic', line #22773) *** Unreachable network file 'https://gmic.eu/img/sample_chick.png'.
>>> 

it seems that libcurl is badly packaged by auditwheel repair... maybe the the ssl or nss etc.. libs are not embedded with the the .whl

strace of an HTTP attempt by libcurl for a gmic.eu sample:

(gmicpy290numpy) jd@jd-ThinkPad-T400:~/Productions/GMIC/gmic-py/wheelhouse$ strace python -c "import gmic; gmic.run('sp')"
getpeername(5, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("213.186.33.40")}, [128->16]) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(43312), sin_addr=inet_addr("10.213.11.54")}, [128->16]) = 0
stat("/etc/pki/nssdb", 0x7ffea6112850)  = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/proc/sys/crypto/fips_enabled", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.libs/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
readlink("/home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.libs/libnss3-cbdbdc98.so", 0x18d1ca0, 1023) = -1 EINVAL (Invalid argument)
openat(AT_FDCWD, "/home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.libs/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 6
fstat(6, {st_mode=S_IFREG|0644, st_size=184767, ...}) = 0
mmap(NULL, 184767, PROT_READ, MAP_PRIVATE, 6, 0) = 0x7fbc822e6000
close(6)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=167936, ...}) = 0
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/tls/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/tls", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=167936, ...}) = 0
openat(AT_FDCWD, "/lib/tls/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/tls/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/tls/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/tls", 0x7ffea6111b40)        = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64", 0x7ffea6111b40)     = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64", 0x7ffea6111b40)     = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
openat(AT_FDCWD, "/usr/lib/tls/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/tls/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/tls", 0x7ffea6111b40)    = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64", 0x7ffea6111b40) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libsoftokn3.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
munmap(0x7fbc822e6000, 184767)          = 0
close(5)                                = 0
write(1, "JD CURL POSTPERFORM\n", 20JD CURL POSTPERFORM
)   = 20
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
lseek(4, 0, SEEK_SET)                   = 0
write(1, "JD CURL PRECLOSE\n", 17JD CURL PRECLOSE
)      = 17
close(4)                                = 0
write(1, "JD REPORTING CURL ERROR\n", 24JD REPORTING CURL ERROR
) = 24
write(2, "\nlibcurl: (77) ", 15
libcurl: (77) )        = 15
write(2, "Problem with the SSL CA cert (pa"..., 52Problem with the SSL CA cert (path? access rights?)
) = 52

@myselfhimself
Copy link
Owner Author

Wheel network libraries are just not found:

(gmicpy290numpy) jd@jd-ThinkPad-T400:~/Productions/GMIC/gmic-py/wheelhouse$ ldd /home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.cpython-37m-x86_64-linux-gnu.so | grep curl
	libcurl-602541fb.so.4.3.0 => /home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.libs/libcurl-602541fb.so.4.3.0 (0x00007f245868a000)
(gmicpy290numpy) jd@jd-ThinkPad-T400:~/Productions/GMIC/gmic-py/wheelhouse$ ldd /home/jd/.virtualenvs/gmicpy290numpy/lib/python3.7/site-packages/gmic.libs/libcurl-602541fb.so.4.3.0
	linux-vdso.so.1 (0x00007ffff6271000)
	libidn-97d26f25.so.11.6.11 => not found
	libssh2-67280b84.so.1.0.1 => not found
	libssl3-16d82696.so => not found
	libsmime3-42513bb4.so => not found
	libnss3-cbdbdc98.so => not found
	libnssutil3-dd7a2f41.so => not found
	libplds4-31662348.so => not found
	libplc4-1fc2f718.so => not found
	libnspr4-0fd98508.so => not found
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe5721a5000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe57219f000)
	libgssapi_krb5-497db0c6.so.2.2 => not found
	libkrb5-fc820a1d.so.3.3 => not found
	libk5crypto-b1f99d5c.so.3.1 => not found
	libcom_err-2abe824b.so.2.1 => not found
	liblber-2-76e7e76d.4.so.2.10.7 => not found
	libldap-2-257051e8.4.so.2.10.7 => not found
	libz-d8a329de.so.1.2.7 => not found
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe571faa000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fe572488000)

@myselfhimself
Copy link
Owner Author

Wheel contents:

(gmicpy290numpy) jd@jd-ThinkPad-T400:~/Productions/GMIC/gmic-py/wheelhouse$ unzip -l gmic-2.9.1a5-cp37-cp37m-manylinux2014_x86_64.whl
Archive:  gmic-2.9.1a5-cp37-cp37m-manylinux2014_x86_64.whl
  Length      Date    Time    Name
---------  ---------- -----   ----
 17017096  2020-12-04 17:12   gmic.cpython-37m-x86_64-linux-gnu.so
    54296  2020-12-04 17:12   gmic.libs/libjbig-78348776.so.2.0
    69296  2020-12-04 17:12   gmic.libs/liblber-2-76e7e76d.4.so.2.10.7
   197808  2020-12-04 17:12   gmic.libs/libcrypt-ab787581.so.1.1.0
   224048  2020-12-04 17:12   gmic.libs/libk5crypto-b1f99d5c.so.3.1
    17496  2020-12-04 17:12   gmic.libs/libcom_err-2abe824b.so.2.1
    96272  2020-12-04 17:12   gmic.libs/libz-d8a329de.so.1.2.7
   554672  2020-12-04 17:12   gmic.libs/libldap-2-257051e8.4.so.2.10.7
   513560  2020-12-04 17:12   gmic.libs/libtiff-b6eb22fb.so.5.2.0
   193544  2020-12-04 17:12   gmic.libs/libpng15-ce838cd1.so.15.13.0
   406816  2020-12-04 17:12   gmic.libs/libpcre-9513aab5.so.1.2.0
   168192  2020-12-04 17:12   gmic.libs/libgomp-a34b3233.so.1.0.0
   155232  2020-12-04 17:12   gmic.libs/libsasl2-05adbfb2.so.3.0.0
   425384  2020-12-04 17:12   gmic.libs/libssl3-16d82696.so
  1080392  2020-12-04 17:12   gmic.libs/libkrb5-fc820a1d.so.3.3
  1406264  2020-12-04 17:12   gmic.libs/libnss3-cbdbdc98.so
    17912  2020-12-04 17:12   gmic.libs/libkeyutils-dfe70bd6.so.1.5
   266120  2020-12-04 17:12   gmic.libs/libnspr4-0fd98508.so
   243824  2020-12-04 17:12   gmic.libs/libsmime3-42513bb4.so
    25472  2020-12-04 17:12   gmic.libs/libplc4-1fc2f718.so
   394360  2020-12-04 17:12   gmic.libs/libgssapi_krb5-497db0c6.so.2.2
   588488  2020-12-04 17:12   gmic.libs/libcurl-602541fb.so.4.3.0
   215576  2020-12-04 17:12   gmic.libs/libidn-97d26f25.so.11.6.11
   217824  2020-12-04 17:12   gmic.libs/libssh2-67280b84.so.1.0.1
    80968  2020-12-04 17:12   gmic.libs/libkrb5support-04204f6a.so.0.1
  2729384  2020-12-04 17:12   gmic.libs/libcrypto-957ef781.so.1.0.2k
   621976  2020-12-04 17:12   gmic.libs/libssl-84c8c57b.so.1.0.2k
   178336  2020-12-04 17:12   gmic.libs/libselinux-0922c95c.so.1
   236160  2020-12-04 17:12   gmic.libs/libnssutil3-dd7a2f41.so
    34384  2020-12-04 17:12   gmic.libs/libfftw3_threads-1d56c0c3.so.3.3.2
   290496  2020-12-04 17:12   gmic.libs/libjpeg-43436dd5.so.62.1.0
    21304  2020-12-04 17:12   gmic.libs/libplds4-31662348.so
  1631216  2020-12-04 17:12   gmic.libs/libfftw3-17cc48a2.so.3.3.2
     5574  2020-12-04 17:12   gmic-2.9.1a5.dist-info/METADATA
        5  2020-12-04 17:12   gmic-2.9.1a5.dist-info/top_level.txt
      112  2020-12-04 17:12   gmic-2.9.1a5.dist-info/WHEEL
     3523  2020-12-04 17:12   gmic-2.9.1a5.dist-info/RECORD
    21778  2020-12-04 17:12   gmic-2.9.1a5.dist-info/COPYING
---------                     -------
 30405160                     38 files

@myselfhimself
Copy link
Owner Author

WIP commands for a proper repair:

pip install copydeps
copydeps gmic.cpython-37m-x86_64-linux-gnu.so --exclude exclude-list-gmic --dot foo.dot -d .

command for rebuilding the RECORD file of a wheel file , except for the RECORD line which must be rewritten by hand:
find -type f | sed 's/\.\///g' | xargs -IAAA sh -c "sha256sum AAA | cut -d' ' -f1; ls -s AAA" | xargs -n 3 | awk '{ print $3","$1","$2 }'

@myselfhimself
Copy link
Owner Author

Related article on cURL malfunction in a containerized/chrooted environment: https://blog.madrzejewski.com/faire-fonctionner-curl-en-https-dans-un-environnement-php-fpm-chroote/

@myselfhimself
Copy link
Owner Author

WIP commands for a proper repair:

pip install copydeps
copydeps gmic.cpython-37m-x86_64-linux-gnu.so --exclude exclude-list-gmic --dot foo.dot -d .

command for rebuilding the RECORD file of a wheel file , except for the RECORD line which must be rewritten by hand:
find -type f | sed 's/\.\///g' | xargs -IAAA sh -c "sha256sum AAA | cut -d' ' -f1; ls -s AAA" | xargs -n 3 | awk '{ print $3","$1","$2 }'

related exclude-list-gmic file, per the manylinux2014 policy:

$ cat exclude-list-gmic
libgcc_s.so.1
libstdc++.so.6
libm.so.6
libdl.so.2
librt.so.1
libc.so.6
libnsl.so.1
libutil.so.1
libpthread.so.0
libresolv.so.2
libX11.so.6
libXext.so.6
libXrender.so.1
libICE.so.6
libSM.so.6
libGL.so.1
libgobject-2.0.so.0
libgthread-2.0.so.0
libglib-2.0.so.0

@myselfhimself
Copy link
Owner Author

myselfhimself commented Dec 7, 2020

Supposed deep .so dependencies fix auditwheel patch is at: pypa/auditwheel#136 (comment)
Testing it now

@myselfhimself
Copy link
Owner Author

Tested patch, libsqlite is not included and I still get a network error:

$ ls ~/.cache/gmic/; rm ~/.cache/gmic/* -f; python -c "import gmic; print(gmic.__spec__); gmic.run('sp display')"; ls ~/.cache/gmic/
sample_dog.png
ModuleSpec(name='gmic', loader=<_frozen_importlib_external.ExtensionFileLoader object at 0x7f30ffae0110>, origin='/export/home/schrode191/.virtualenvs/numpy291/lib/python3.7/site-packages/gmic.cpython-37m-x86_64-linux-gnu.so')
Traceback (most recent call last):
  File "<string>", line 1, in <module>
gmic.GmicException: *** Error in ./sp/_sample/*repeat#22920/*if#22924/*if#22926/ (file '/export/home/schrode191/.config/gmic//update291.gmic', line #22927) *** Unreachable network file 'https://gmic.eu/img/sample_barbara.png'.

The copydeps command in above comment still seems more powerful in terms of depth lookup and copying

@myselfhimself
Copy link
Owner Author

tested on Google Colab and Jupyterlab (with an uploaded wheel),
now the curl executable is used instead of linking to libcurl which can be "repaired" (in the python wheel sense) easily
example:
image

@myselfhimself
Copy link
Owner Author

google colab example:
image
image

myselfhimself added a commit that referenced this issue Dec 9, 2020
@myselfhimself
Copy link
Owner Author

:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant