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

Docker image for ARM/Raspberry Pi #67

Closed
damianmoore opened this issue Mar 7, 2019 · 40 comments
Closed

Docker image for ARM/Raspberry Pi #67

damianmoore opened this issue Mar 7, 2019 · 40 comments
Assignees
Labels
Milestone

Comments

@damianmoore
Copy link
Collaborator

No description provided.

@jensbrak
Copy link

I just tried (rather naively I must admit) to install photonix on an RP4 of mine and failed (well, installationion went smooth I believe but running it fails).

Thought photonix seemed like an awesome choice to use for my RP4 based image collection, especially since I'm going to use some ML on that image collection to experiment. :)

DId not find any good contact info nor fixes for the issue I ran into so I'll just post this comment to say I believe Photonix seem very promising.

@damianmoore
Copy link
Collaborator Author

Thanks for having a try @jensbrak. I hope to have a play with getting it running on a Raspberry Pi in the next few months but I just have to crack on with features right now.

If you have an error log, please do share it here. I wouldn't expect it to do much at the moment tbh as each Docker image has to be compiled for each CPU architecture, I believe.

Hopefully this project can suit your needs in the not-to-distant future. If you want to be notified when v1.0 is available please sign up to the mailing list on https://photonix.org .

@jensbrak
Copy link

jensbrak commented Mar 20, 2020 via email

@jensbrak
Copy link

The log in question:

/photonix $ sudo docker-compose up
Starting photonix-postgres ... done
Starting photonix-redis    ... done
Starting photonix          ... done
Attaching to photonix-postgres, photonix-redis, photonix
photonix-postgres | 2020-03-20 10:16:02.592 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
photonix-postgres | 2020-03-20 10:16:02.592 UTC [1] LOG:  listening on IPv6 address "::", port 5432
photonix    | standard_init_linux.go:211: exec user process caused "exec format error"
photonix-postgres | 2020-03-20 10:16:02.603 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
photonix-postgres | 2020-03-20 10:16:02.662 UTC [18] LOG:  database system was shut down at 2020-03-20 10:15:48 UTC
photonix-redis | standard_init_linux.go:211: exec user process caused "exec format error"
photonix-postgres | 2020-03-20 10:16:02.676 UTC [1] LOG:  database system is ready to accept connections
photonix-redis exited with code 1
photonix exited with code 1

@jensbrak
Copy link

jensbrak commented Mar 20, 2020

And this is how far I got building it. Stopper seems to be Tensorflow not supporting Arm architecture (or if it does, the references are wrong). FSEvents also seem to lack adequate platform support but did only warn about it.

photonix $ docker-compose -f docker-compose.dev.yml build
postgres uses an image, skipping
redis uses an image, skipping
Building photonix
Step 1/22 : FROM python:3.8.1-slim-buster
3.8.1-slim-buster: Pulling from library/python
0c7074b2d47c: Pull complete
c3ba726c7d97: Pull complete
8e3edfe6dcfe: Pull complete
4e95bfa43aa2: Pull complete
b5a00a6573b6: Pull complete
Digest: sha256:73f3903470a6e55202a6bb989c23b047487eb1728feba655410076da24106838
Status: Downloaded newer image for python:3.8.1-slim-buster
 ---> a7933288abc9
Step 2/22 : RUN apt-get update &&     apt-get install -y         curl         dcraw         build-essential         gnupg         libimage-exiftool-perl         libjpeg-dev         libpq-dev         libtiff5-dev         netcat         nginx-light         supervisor         &&         apt-get clean &&             rm -rf /var/lib/apt/lists/*                    /tmp/*                    /var/tmp/*
 ---> Running in ad49bc119461
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main armhf Packages [181 kB]
Get:5 http://deb.debian.org/debian buster/main armhf Packages [7699 kB]
Get:6 http://deb.debian.org/debian buster-updates/main armhf Packages [7356 B]
Fetched 8123 kB in 4s (1950 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  binutils binutils-arm-linux-gnueabihf binutils-common bzip2 cpp cpp-8
  dirmngr dpkg-dev fakeroot file g++ g++-8 gcc gcc-8 gnupg-l10n gnupg-utils
  gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm krb5-locales
  libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libarchive-zip-perl libasan5 libassuan0 libatomic1 libbinutils libc-dev-bin
  libc6-dev libcc1-0 libcurl4 libdatrie1 libdpkg-perl libfakeroot
  libfile-fcntllock-perl libgcc-8-dev libgdbm-compat4 libglib2.0-0
  libglib2.0-data libgomp1 libgssapi-krb5-2 libicu63 libisl19 libjbig-dev
  libjbig0 libjpeg62-turbo libjpeg62-turbo-dev libk5crypto3 libkeyutils1
  libkrb5-3 libkrb5support0 libksba8 liblcms2-2 libldap-2.4-2 libldap-common
  liblocale-gettext-perl liblzma-dev libmagic-mgc libmagic1
  libmime-charset-perl libmpc3 libmpfr6 libnghttp2-14 libnginx-mod-http-echo
  libnpth0 libperl5.28 libposix-strptime-perl libpq5 libpsl5 libpython-stdlib
  libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib librtmp1
  libsasl2-2 libsasl2-modules libsasl2-modules-db libsombok3 libssh2-1
  libstdc++-8-dev libthai-data libthai0 libtiff-dev libtiff5 libtiffxx5
  libubsan1 libunicode-linebreak-perl libwebp6 libxml2 linux-libc-dev lsb-base
  make manpages manpages-dev mime-support netcat-traditional nginx-common
  patch perl perl-modules-5.28 pinentry-curses pkg-config publicsuffix python
  python-meld3 python-minimal python-pkg-resources python2 python2-minimal
  python2.7 python2.7-minimal shared-mime-info xdg-user-dirs xz-utils
  zlib1g-dev
Suggested packages:
  binutils-doc bzip2-doc cpp-doc gcc-8-locales gphoto2 netpbm
  dbus-user-session libpam-systemd pinentry-gnome3 tor debian-keyring
  gcc-8-doc libstdc++6-8-dbg gcc-multilib autoconf automake libtool flex bison
  gdb gcc-doc libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan5-dbg
  liblsan0-dbg libtsan0-dbg libubsan1-dbg libmpx2-dbg libquadmath0-dbg
  parcimonie xloadimage scdaemon glibc-doc sensible-utils git bzr krb5-doc
  krb5-user liblcms2-utils liblzma-doc libencode-hanextra-perl
  libpod2-base-perl postgresql-doc-11 libsasl2-modules-gssapi-mit
  | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp
  libsasl2-modules-sql libstdc++-8-doc make-doc man-browser fcgiwrap nginx-doc
  ssl-cert ed diffutils-doc perl-doc libterm-readline-gnu-perl
  | libterm-readline-perl-perl libb-debug-perl liblocale-codes-perl
  pinentry-doc python-doc python-tk python-setuptools python2-doc
  python2.7-doc binfmt-support supervisor-doc
The following NEW packages will be installed:
  binutils binutils-arm-linux-gnueabihf binutils-common build-essential bzip2
  cpp cpp-8 curl dcraw dirmngr dpkg-dev fakeroot file g++ g++-8 gcc gcc-8
  gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server
  gpgconf gpgsm krb5-locales libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libarchive-zip-perl libasan5 libassuan0 libatomic1
  libbinutils libc-dev-bin libc6-dev libcc1-0 libcurl4 libdatrie1 libdpkg-perl
  libfakeroot libfile-fcntllock-perl libgcc-8-dev libgdbm-compat4 libglib2.0-0
  libglib2.0-data libgomp1 libgssapi-krb5-2 libicu63 libimage-exiftool-perl
  libisl19 libjbig-dev libjbig0 libjpeg-dev libjpeg62-turbo
  libjpeg62-turbo-dev libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0
  libksba8 liblcms2-2 libldap-2.4-2 libldap-common liblocale-gettext-perl
  liblzma-dev libmagic-mgc libmagic1 libmime-charset-perl libmpc3 libmpfr6
  libnghttp2-14 libnginx-mod-http-echo libnpth0 libperl5.28
  libposix-strptime-perl libpq-dev libpq5 libpsl5 libpython-stdlib
  libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib librtmp1
  libsasl2-2 libsasl2-modules libsasl2-modules-db libsombok3 libssh2-1
  libstdc++-8-dev libthai-data libthai0 libtiff-dev libtiff5 libtiff5-dev
  libtiffxx5 libubsan1 libunicode-linebreak-perl libwebp6 libxml2
  linux-libc-dev lsb-base make manpages manpages-dev mime-support netcat
  netcat-traditional nginx-common nginx-light patch perl perl-modules-5.28
  pinentry-curses pkg-config publicsuffix python python-meld3 python-minimal
  python-pkg-resources python2 python2-minimal python2.7 python2.7-minimal
  shared-mime-info supervisor xdg-user-dirs xz-utils zlib1g-dev
0 upgraded, 130 newly installed, 0 to remove and 9 not upgraded.
Need to get 80.4 MB of archives.
After this operation, 283 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main armhf perl-modules-5.28 all 5.28.1-6 [2873 kB]
Get:2 http://security.debian.org/debian-security buster/updates/main armhf libcurl4 armhf 7.64.0-4+deb10u1 [297 kB]
Get:3 http://security.debian.org/debian-security buster/updates/main armhf curl armhf 7.64.0-4+deb10u1 [257 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main armhf libpq5 armhf 11.7-0+deb10u1 [152 kB]
Get:5 http://security.debian.org/debian-security buster/updates/main armhf libpq-dev armhf 11.7-0+deb10u1 [150 kB]
Get:6 http://deb.debian.org/debian buster/main armhf libgdbm-compat4 armhf 1.18.1-4 [43.7 kB]
Get:7 http://deb.debian.org/debian buster/main armhf libperl5.28 armhf 5.28.1-6 [3220 kB]
Get:8 http://deb.debian.org/debian buster/main armhf perl armhf 5.28.1-6 [204 kB]
Get:9 http://deb.debian.org/debian buster/main armhf libpython2.7-minimal armhf 2.7.16-2+deb10u1 [395 kB]
Get:10 http://deb.debian.org/debian buster/main armhf python2.7-minimal armhf 2.7.16-2+deb10u1 [1171 kB]
Get:11 http://deb.debian.org/debian buster/main armhf python2-minimal armhf 2.7.16-1 [41.4 kB]
Get:12 http://deb.debian.org/debian buster/main armhf python-minimal armhf 2.7.16-1 [21.0 kB]
Get:13 http://deb.debian.org/debian buster/main armhf mime-support all 3.62 [37.2 kB]
Get:14 http://deb.debian.org/debian buster/main armhf libpython2.7-stdlib armhf 2.7.16-2+deb10u1 [1837 kB]
Get:15 http://deb.debian.org/debian buster/main armhf python2.7 armhf 2.7.16-2+deb10u1 [305 kB]
Get:16 http://deb.debian.org/debian buster/main armhf libpython2-stdlib armhf 2.7.16-1 [20.8 kB]
Get:17 http://deb.debian.org/debian buster/main armhf libpython-stdlib armhf 2.7.16-1 [20.8 kB]
Get:18 http://deb.debian.org/debian buster/main armhf python2 armhf 2.7.16-1 [41.6 kB]
Get:19 http://deb.debian.org/debian buster/main armhf python armhf 2.7.16-1 [22.8 kB]
Get:20 http://deb.debian.org/debian buster/main armhf liblocale-gettext-perl armhf 1.07-3+b4 [18.4 kB]
Get:21 http://deb.debian.org/debian buster/main armhf bzip2 armhf 1.0.6-9.2~deb10u1 [46.7 kB]
Get:22 http://deb.debian.org/debian buster/main armhf libmagic-mgc armhf 1:5.35-4+deb10u1 [242 kB]
Get:23 http://deb.debian.org/debian buster/main armhf libmagic1 armhf 1:5.35-4+deb10u1 [110 kB]
Get:24 http://deb.debian.org/debian buster/main armhf file armhf 1:5.35-4+deb10u1 [65.5 kB]
Get:25 http://deb.debian.org/debian buster/main armhf krb5-locales all 1.17-3 [95.4 kB]
Get:26 http://deb.debian.org/debian buster/main armhf manpages all 4.16-2 [1295 kB]
Get:27 http://deb.debian.org/debian buster/main armhf netcat-traditional armhf 1.10-41.1 [65.6 kB]
Get:28 http://deb.debian.org/debian buster/main armhf xz-utils armhf 5.2.4-1 [181 kB]
Get:29 http://deb.debian.org/debian buster/main armhf binutils-common armhf 2.31.1-16 [2073 kB]
Get:30 http://deb.debian.org/debian buster/main armhf libbinutils armhf 2.31.1-16 [302 kB]
Get:31 http://deb.debian.org/debian buster/main armhf binutils-arm-linux-gnueabihf armhf 2.31.1-16 [2101 kB]
Get:32 http://deb.debian.org/debian buster/main armhf binutils armhf 2.31.1-16 [56.7 kB]
Get:33 http://deb.debian.org/debian buster/main armhf libc-dev-bin armhf 2.28-10 [267 kB]
Get:34 http://deb.debian.org/debian buster/main armhf linux-libc-dev armhf 4.19.98-1 [1297 kB]
Get:35 http://deb.debian.org/debian buster/main armhf libc6-dev armhf 2.28-10 [2149 kB]
Get:36 http://deb.debian.org/debian buster/main armhf libisl19 armhf 0.20-2 [455 kB]
Get:37 http://deb.debian.org/debian buster/main armhf libmpfr6 armhf 4.0.2-1 [731 kB]
Get:38 http://deb.debian.org/debian buster/main armhf libmpc3 armhf 1.1.0-1 [33.8 kB]
Get:39 http://deb.debian.org/debian buster/main armhf cpp-8 armhf 8.3.0-6 [6790 kB]
Get:40 http://deb.debian.org/debian buster/main armhf cpp armhf 4:8.3.0-1 [19.4 kB]
Get:41 http://deb.debian.org/debian buster/main armhf libcc1-0 armhf 8.3.0-6 [38.9 kB]
Get:42 http://deb.debian.org/debian buster/main armhf libgomp1 armhf 8.3.0-6 [64.8 kB]
Get:43 http://deb.debian.org/debian buster/main armhf libatomic1 armhf 8.3.0-6 [6740 B]
Get:44 http://deb.debian.org/debian buster/main armhf libasan5 armhf 8.3.0-6 [336 kB]
Get:45 http://deb.debian.org/debian buster/main armhf libubsan1 armhf 8.3.0-6 [103 kB]
Get:46 http://deb.debian.org/debian buster/main armhf libgcc-8-dev armhf 8.3.0-6 [612 kB]
Get:47 http://deb.debian.org/debian buster/main armhf gcc-8 armhf 8.3.0-6 [7229 kB]
Get:48 http://deb.debian.org/debian buster/main armhf gcc armhf 4:8.3.0-1 [5204 B]
Get:49 http://deb.debian.org/debian buster/main armhf libstdc++-8-dev armhf 8.3.0-6 [1584 kB]
Get:50 http://deb.debian.org/debian buster/main armhf g++-8 armhf 8.3.0-6 [7463 kB]
Get:51 http://deb.debian.org/debian buster/main armhf g++ armhf 4:8.3.0-1 [1624 B]
Get:52 http://deb.debian.org/debian buster/main armhf make armhf 4.2.1-1.2 [327 kB]
Get:53 http://deb.debian.org/debian buster/main armhf libdpkg-perl all 1.19.7 [1414 kB]
Get:54 http://deb.debian.org/debian buster/main armhf patch armhf 2.7.6-3+deb10u1 [123 kB]
Get:55 http://deb.debian.org/debian buster/main armhf dpkg-dev all 1.19.7 [1773 kB]
Get:56 http://deb.debian.org/debian buster/main armhf build-essential armhf 12.6 [7568 B]
Get:57 http://deb.debian.org/debian buster/main armhf libkeyutils1 armhf 1.6-6 [13.9 kB]
Get:58 http://deb.debian.org/debian buster/main armhf libkrb5support0 armhf 1.17-3 [62.3 kB]
Get:59 http://deb.debian.org/debian buster/main armhf libk5crypto3 armhf 1.17-3 [119 kB]
Get:60 http://deb.debian.org/debian buster/main armhf libkrb5-3 armhf 1.17-3 [323 kB]
Get:61 http://deb.debian.org/debian buster/main armhf libgssapi-krb5-2 armhf 1.17-3 [137 kB]
Get:62 http://deb.debian.org/debian buster/main armhf libsasl2-modules-db armhf 2.1.27+dfsg-1+deb10u1 [67.4 kB]
Get:63 http://deb.debian.org/debian buster/main armhf libsasl2-2 armhf 2.1.27+dfsg-1+deb10u1 [98.9 kB]
Get:64 http://deb.debian.org/debian buster/main armhf libldap-common all 2.4.47+dfsg-3+deb10u1 [89.6 kB]
Get:65 http://deb.debian.org/debian buster/main armhf libldap-2.4-2 armhf 2.4.47+dfsg-3+deb10u1 [202 kB]
Get:66 http://deb.debian.org/debian buster/main armhf libnghttp2-14 armhf 1.36.0-2+deb10u1 [74.4 kB]
Get:67 http://deb.debian.org/debian buster/main armhf libpsl5 armhf 0.20.2-2 [52.4 kB]
Get:68 http://deb.debian.org/debian buster/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-2 [54.9 kB]
Get:69 http://deb.debian.org/debian buster/main armhf libssh2-1 armhf 1.8.0-2.1 [129 kB]
Get:70 http://deb.debian.org/debian buster/main armhf libjpeg62-turbo armhf 1:1.5.2-2+b1 [112 kB]
Get:71 http://deb.debian.org/debian buster/main armhf liblcms2-2 armhf 2.9-3 [119 kB]
Get:72 http://deb.debian.org/debian buster/main armhf dcraw armhf 9.28-2 [192 kB]
Get:73 http://deb.debian.org/debian buster/main armhf libassuan0 armhf 2.5.2-1 [42.8 kB]
Get:74 http://deb.debian.org/debian buster/main armhf gpgconf armhf 2.2.12-1+deb10u1 [492 kB]
Get:75 http://deb.debian.org/debian buster/main armhf lsb-base all 10.2019051400 [28.4 kB]
Get:76 http://deb.debian.org/debian buster/main armhf libksba8 armhf 1.3.5-2 [85.9 kB]
Get:77 http://deb.debian.org/debian buster/main armhf libnpth0 armhf 1.6-1 [17.4 kB]
Get:78 http://deb.debian.org/debian buster/main armhf dirmngr armhf 2.2.12-1+deb10u1 [669 kB]
Get:79 http://deb.debian.org/debian buster/main armhf libfakeroot armhf 1.23-1 [41.8 kB]
Get:80 http://deb.debian.org/debian buster/main armhf fakeroot armhf 1.23-1 [83.8 kB]
Get:81 http://deb.debian.org/debian buster/main armhf gnupg-l10n all 2.2.12-1+deb10u1 [1010 kB]
Get:82 http://deb.debian.org/debian buster/main armhf gnupg-utils armhf 2.2.12-1+deb10u1 [788 kB]
Get:83 http://deb.debian.org/debian buster/main armhf gpg armhf 2.2.12-1+deb10u1 [804 kB]
Get:84 http://deb.debian.org/debian buster/main armhf pinentry-curses armhf 1.1.0-2 [59.8 kB]
Get:85 http://deb.debian.org/debian buster/main armhf gpg-agent armhf 2.2.12-1+deb10u1 [578 kB]
Get:86 http://deb.debian.org/debian buster/main armhf gpg-wks-client armhf 2.2.12-1+deb10u1 [469 kB]
Get:87 http://deb.debian.org/debian buster/main armhf gpg-wks-server armhf 2.2.12-1+deb10u1 [464 kB]
Get:88 http://deb.debian.org/debian buster/main armhf gpgsm armhf 2.2.12-1+deb10u1 [573 kB]
Get:89 http://deb.debian.org/debian buster/main armhf gnupg all 2.2.12-1+deb10u1 [715 kB]
Get:90 http://deb.debian.org/debian buster/main armhf libalgorithm-diff-perl all 1.19.03-2 [47.9 kB]
Get:91 http://deb.debian.org/debian buster/main armhf libalgorithm-diff-xs-perl armhf 0.04-5+b1 [11.3 kB]
Get:92 http://deb.debian.org/debian buster/main armhf libalgorithm-merge-perl all 0.08-3 [12.7 kB]
Get:93 http://deb.debian.org/debian buster/main armhf libarchive-zip-perl all 1.64-1 [96.8 kB]
Get:94 http://deb.debian.org/debian buster/main armhf libdatrie1 armhf 0.2.12-2 [35.8 kB]
Get:95 http://deb.debian.org/debian buster/main armhf libfile-fcntllock-perl armhf 0.22-3+b5 [35.0 kB]
Get:96 http://deb.debian.org/debian buster/main armhf libglib2.0-0 armhf 2.58.3-2+deb10u2 [1101 kB]
Get:97 http://deb.debian.org/debian buster/main armhf libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]
Get:98 http://deb.debian.org/debian buster/main armhf libicu63 armhf 63.1-6 [8000 kB]
Get:99 http://deb.debian.org/debian buster/main armhf libimage-exiftool-perl all 11.16-1 [3354 kB]
Get:100 http://deb.debian.org/debian buster/main armhf libjbig0 armhf 2.1-3.1+b2 [28.4 kB]
Get:101 http://deb.debian.org/debian buster/main armhf libjbig-dev armhf 2.1-3.1+b2 [28.5 kB]
Get:102 http://deb.debian.org/debian buster/main armhf libjpeg62-turbo-dev armhf 1:1.5.2-2+b1 [182 kB]
Get:103 http://deb.debian.org/debian buster/main armhf libjpeg-dev all 1:1.5.2-2 [57.5 kB]
Get:104 http://deb.debian.org/debian buster/main armhf liblzma-dev armhf 5.2.4-1 [204 kB]
Get:105 http://deb.debian.org/debian buster/main armhf libmime-charset-perl all 1.012.2-1 [35.4 kB]
Get:106 http://deb.debian.org/debian buster/main armhf nginx-common all 1.14.2-2+deb10u1 [120 kB]
Get:107 http://deb.debian.org/debian buster/main armhf libnginx-mod-http-echo armhf 1.14.2-2+deb10u1 [102 kB]
Get:108 http://deb.debian.org/debian buster/main armhf libposix-strptime-perl armhf 0.13-1+b5 [8824 B]
Get:109 http://deb.debian.org/debian buster/main armhf libsasl2-modules armhf 2.1.27+dfsg-1+deb10u1 [96.8 kB]
Get:110 http://deb.debian.org/debian buster/main armhf libthai-data all 0.1.28-2 [170 kB]
Get:111 http://deb.debian.org/debian buster/main armhf libthai0 armhf 0.1.28-2 [50.7 kB]
Get:112 http://deb.debian.org/debian buster/main armhf libsombok3 armhf 2.4.0-2 [26.8 kB]
Get:113 http://deb.debian.org/debian buster/main armhf libwebp6 armhf 0.6.1-2 [229 kB]
Get:114 http://deb.debian.org/debian buster/main armhf libtiff5 armhf 4.1.0+git191117-2~deb10u1 [252 kB]
Get:115 http://deb.debian.org/debian buster/main armhf libtiffxx5 armhf 4.1.0+git191117-2~deb10u1 [117 kB]
Get:116 http://deb.debian.org/debian buster/main armhf zlib1g-dev armhf 1:1.2.11.dfsg-1 [207 kB]
Get:117 http://deb.debian.org/debian buster/main armhf libtiff-dev armhf 4.1.0+git191117-2~deb10u1 [376 kB]
Get:118 http://deb.debian.org/debian buster/main armhf libtiff5-dev armhf 4.1.0+git191117-2~deb10u1 [114 kB]
Get:119 http://deb.debian.org/debian buster/main armhf libunicode-linebreak-perl armhf 0.0.20190101-1 [99.3 kB]
Get:120 http://deb.debian.org/debian buster/main armhf libxml2 armhf 2.9.4+dfsg1-7+b3 [595 kB]
Get:121 http://deb.debian.org/debian buster/main armhf manpages-dev all 4.16-2 [2232 kB]
Get:122 http://deb.debian.org/debian buster/main armhf netcat all 1.10-41.1 [9034 B]
Get:123 http://deb.debian.org/debian buster/main armhf nginx-light armhf 1.14.2-2+deb10u1 [433 kB]
Get:124 http://deb.debian.org/debian buster/main armhf pkg-config armhf 0.29-6 [60.7 kB]
Get:125 http://deb.debian.org/debian buster/main armhf publicsuffix all 20190415.1030-1 [116 kB]
Get:126 http://deb.debian.org/debian buster/main armhf python-meld3 all 1.0.2-2 [37.3 kB]
Get:127 http://deb.debian.org/debian buster/main armhf python-pkg-resources all 40.8.0-1 [182 kB]
Get:128 http://deb.debian.org/debian buster/main armhf shared-mime-info armhf 1.10-1 [763 kB]
Get:129 http://deb.debian.org/debian buster/main armhf supervisor all 3.3.5-1 [284 kB]
Get:130 http://deb.debian.org/debian buster/main armhf xdg-user-dirs armhf 0.17-2 [52.4 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 80.4 MB in 7s (10.8 MB/s)
Selecting previously unselected package perl-modules-5.28.
(Reading database ... 6822 files and directories currently installed.)
Preparing to unpack .../00-perl-modules-5.28_5.28.1-6_all.deb ...
Unpacking perl-modules-5.28 (5.28.1-6) ...
Selecting previously unselected package libgdbm-compat4:armhf.
Preparing to unpack .../01-libgdbm-compat4_1.18.1-4_armhf.deb ...
Unpacking libgdbm-compat4:armhf (1.18.1-4) ...
Selecting previously unselected package libperl5.28:armhf.
Preparing to unpack .../02-libperl5.28_5.28.1-6_armhf.deb ...
Unpacking libperl5.28:armhf (5.28.1-6) ...
Selecting previously unselected package perl.
Preparing to unpack .../03-perl_5.28.1-6_armhf.deb ...
Unpacking perl (5.28.1-6) ...
Selecting previously unselected package libpython2.7-minimal:armhf.
Preparing to unpack .../04-libpython2.7-minimal_2.7.16-2+deb10u1_armhf.deb ...
Unpacking libpython2.7-minimal:armhf (2.7.16-2+deb10u1) ...
Selecting previously unselected package python2.7-minimal.
Preparing to unpack .../05-python2.7-minimal_2.7.16-2+deb10u1_armhf.deb ...
Unpacking python2.7-minimal (2.7.16-2+deb10u1) ...
Selecting previously unselected package python2-minimal.
Preparing to unpack .../06-python2-minimal_2.7.16-1_armhf.deb ...
Unpacking python2-minimal (2.7.16-1) ...
Selecting previously unselected package python-minimal.
Preparing to unpack .../07-python-minimal_2.7.16-1_armhf.deb ...
Unpacking python-minimal (2.7.16-1) ...
Selecting previously unselected package mime-support.
Preparing to unpack .../08-mime-support_3.62_all.deb ...
Unpacking mime-support (3.62) ...
Selecting previously unselected package libpython2.7-stdlib:armhf.
Preparing to unpack .../09-libpython2.7-stdlib_2.7.16-2+deb10u1_armhf.deb ...
Unpacking libpython2.7-stdlib:armhf (2.7.16-2+deb10u1) ...
Selecting previously unselected package python2.7.
Preparing to unpack .../10-python2.7_2.7.16-2+deb10u1_armhf.deb ...
Unpacking python2.7 (2.7.16-2+deb10u1) ...
Selecting previously unselected package libpython2-stdlib:armhf.
Preparing to unpack .../11-libpython2-stdlib_2.7.16-1_armhf.deb ...
Unpacking libpython2-stdlib:armhf (2.7.16-1) ...
Selecting previously unselected package libpython-stdlib:armhf.
Preparing to unpack .../12-libpython-stdlib_2.7.16-1_armhf.deb ...
Unpacking libpython-stdlib:armhf (2.7.16-1) ...
Setting up libpython2.7-minimal:armhf (2.7.16-2+deb10u1) ...
Setting up python2.7-minimal (2.7.16-2+deb10u1) ...
Linking and byte-compiling packages for runtime python2.7...
Setting up python2-minimal (2.7.16-1) ...
Selecting previously unselected package python2.
(Reading database ... 9547 files and directories currently installed.)
Preparing to unpack .../python2_2.7.16-1_armhf.deb ...
Unpacking python2 (2.7.16-1) ...
Setting up python-minimal (2.7.16-1) ...
Selecting previously unselected package python.
(Reading database ... 9580 files and directories currently installed.)
Preparing to unpack .../000-python_2.7.16-1_armhf.deb ...
Unpacking python (2.7.16-1) ...
Selecting previously unselected package liblocale-gettext-perl.
Preparing to unpack .../001-liblocale-gettext-perl_1.07-3+b4_armhf.deb ...
Unpacking liblocale-gettext-perl (1.07-3+b4) ...
Selecting previously unselected package bzip2.
Preparing to unpack .../002-bzip2_1.0.6-9.2~deb10u1_armhf.deb ...
Unpacking bzip2 (1.0.6-9.2~deb10u1) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../003-libmagic-mgc_1%3a5.35-4+deb10u1_armhf.deb ...
Unpacking libmagic-mgc (1:5.35-4+deb10u1) ...
Selecting previously unselected package libmagic1:armhf.
Preparing to unpack .../004-libmagic1_1%3a5.35-4+deb10u1_armhf.deb ...
Unpacking libmagic1:armhf (1:5.35-4+deb10u1) ...
Selecting previously unselected package file.
Preparing to unpack .../005-file_1%3a5.35-4+deb10u1_armhf.deb ...
Unpacking file (1:5.35-4+deb10u1) ...
Selecting previously unselected package krb5-locales.
Preparing to unpack .../006-krb5-locales_1.17-3_all.deb ...
Unpacking krb5-locales (1.17-3) ...
Selecting previously unselected package manpages.
Preparing to unpack .../007-manpages_4.16-2_all.deb ...
Unpacking manpages (4.16-2) ...
Selecting previously unselected package netcat-traditional.
Preparing to unpack .../008-netcat-traditional_1.10-41.1_armhf.deb ...
Unpacking netcat-traditional (1.10-41.1) ...
Selecting previously unselected package xz-utils.
Preparing to unpack .../009-xz-utils_5.2.4-1_armhf.deb ...
Unpacking xz-utils (5.2.4-1) ...
Selecting previously unselected package binutils-common:armhf.
Preparing to unpack .../010-binutils-common_2.31.1-16_armhf.deb ...
Unpacking binutils-common:armhf (2.31.1-16) ...
Selecting previously unselected package libbinutils:armhf.
Preparing to unpack .../011-libbinutils_2.31.1-16_armhf.deb ...
Unpacking libbinutils:armhf (2.31.1-16) ...
Selecting previously unselected package binutils-arm-linux-gnueabihf.
Preparing to unpack .../012-binutils-arm-linux-gnueabihf_2.31.1-16_armhf.deb ...
Unpacking binutils-arm-linux-gnueabihf (2.31.1-16) ...
Selecting previously unselected package binutils.
Preparing to unpack .../013-binutils_2.31.1-16_armhf.deb ...
Unpacking binutils (2.31.1-16) ...
Selecting previously unselected package libc-dev-bin.
Preparing to unpack .../014-libc-dev-bin_2.28-10_armhf.deb ...
Unpacking libc-dev-bin (2.28-10) ...
Selecting previously unselected package linux-libc-dev:armhf.
Preparing to unpack .../015-linux-libc-dev_4.19.98-1_armhf.deb ...
Unpacking linux-libc-dev:armhf (4.19.98-1) ...
Selecting previously unselected package libc6-dev:armhf.
Preparing to unpack .../016-libc6-dev_2.28-10_armhf.deb ...
Unpacking libc6-dev:armhf (2.28-10) ...
Selecting previously unselected package libisl19:armhf.
Preparing to unpack .../017-libisl19_0.20-2_armhf.deb ...
Unpacking libisl19:armhf (0.20-2) ...
Selecting previously unselected package libmpfr6:armhf.
Preparing to unpack .../018-libmpfr6_4.0.2-1_armhf.deb ...
Unpacking libmpfr6:armhf (4.0.2-1) ...
Selecting previously unselected package libmpc3:armhf.
Preparing to unpack .../019-libmpc3_1.1.0-1_armhf.deb ...
Unpacking libmpc3:armhf (1.1.0-1) ...
Selecting previously unselected package cpp-8.
Preparing to unpack .../020-cpp-8_8.3.0-6_armhf.deb ...
Unpacking cpp-8 (8.3.0-6) ...
Selecting previously unselected package cpp.
Preparing to unpack .../021-cpp_4%3a8.3.0-1_armhf.deb ...
Unpacking cpp (4:8.3.0-1) ...
Selecting previously unselected package libcc1-0:armhf.
Preparing to unpack .../022-libcc1-0_8.3.0-6_armhf.deb ...
Unpacking libcc1-0:armhf (8.3.0-6) ...
Selecting previously unselected package libgomp1:armhf.
Preparing to unpack .../023-libgomp1_8.3.0-6_armhf.deb ...
Unpacking libgomp1:armhf (8.3.0-6) ...
Selecting previously unselected package libatomic1:armhf.
Preparing to unpack .../024-libatomic1_8.3.0-6_armhf.deb ...
Unpacking libatomic1:armhf (8.3.0-6) ...
Selecting previously unselected package libasan5:armhf.
Preparing to unpack .../025-libasan5_8.3.0-6_armhf.deb ...
Unpacking libasan5:armhf (8.3.0-6) ...
Selecting previously unselected package libubsan1:armhf.
Preparing to unpack .../026-libubsan1_8.3.0-6_armhf.deb ...
Unpacking libubsan1:armhf (8.3.0-6) ...
Selecting previously unselected package libgcc-8-dev:armhf.
Preparing to unpack .../027-libgcc-8-dev_8.3.0-6_armhf.deb ...
Unpacking libgcc-8-dev:armhf (8.3.0-6) ...
Selecting previously unselected package gcc-8.
Preparing to unpack .../028-gcc-8_8.3.0-6_armhf.deb ...
Unpacking gcc-8 (8.3.0-6) ...
Selecting previously unselected package gcc.
Preparing to unpack .../029-gcc_4%3a8.3.0-1_armhf.deb ...
Unpacking gcc (4:8.3.0-1) ...
Selecting previously unselected package libstdc++-8-dev:armhf.
Preparing to unpack .../030-libstdc++-8-dev_8.3.0-6_armhf.deb ...
Unpacking libstdc++-8-dev:armhf (8.3.0-6) ...
Selecting previously unselected package g++-8.
Preparing to unpack .../031-g++-8_8.3.0-6_armhf.deb ...
Unpacking g++-8 (8.3.0-6) ...
Selecting previously unselected package g++.
Preparing to unpack .../032-g++_4%3a8.3.0-1_armhf.deb ...
Unpacking g++ (4:8.3.0-1) ...
Selecting previously unselected package make.
Preparing to unpack .../033-make_4.2.1-1.2_armhf.deb ...
Unpacking make (4.2.1-1.2) ...
Selecting previously unselected package libdpkg-perl.
Preparing to unpack .../034-libdpkg-perl_1.19.7_all.deb ...
Unpacking libdpkg-perl (1.19.7) ...
Selecting previously unselected package patch.
Preparing to unpack .../035-patch_2.7.6-3+deb10u1_armhf.deb ...
Unpacking patch (2.7.6-3+deb10u1) ...
Selecting previously unselected package dpkg-dev.
Preparing to unpack .../036-dpkg-dev_1.19.7_all.deb ...
Unpacking dpkg-dev (1.19.7) ...
Selecting previously unselected package build-essential.
Preparing to unpack .../037-build-essential_12.6_armhf.deb ...
Unpacking build-essential (12.6) ...
Selecting previously unselected package libkeyutils1:armhf.
Preparing to unpack .../038-libkeyutils1_1.6-6_armhf.deb ...
Unpacking libkeyutils1:armhf (1.6-6) ...
Selecting previously unselected package libkrb5support0:armhf.
Preparing to unpack .../039-libkrb5support0_1.17-3_armhf.deb ...
Unpacking libkrb5support0:armhf (1.17-3) ...
Selecting previously unselected package libk5crypto3:armhf.
Preparing to unpack .../040-libk5crypto3_1.17-3_armhf.deb ...
Unpacking libk5crypto3:armhf (1.17-3) ...
Selecting previously unselected package libkrb5-3:armhf.
Preparing to unpack .../041-libkrb5-3_1.17-3_armhf.deb ...
Unpacking libkrb5-3:armhf (1.17-3) ...
Selecting previously unselected package libgssapi-krb5-2:armhf.
Preparing to unpack .../042-libgssapi-krb5-2_1.17-3_armhf.deb ...
Unpacking libgssapi-krb5-2:armhf (1.17-3) ...
Selecting previously unselected package libsasl2-modules-db:armhf.
Preparing to unpack .../043-libsasl2-modules-db_2.1.27+dfsg-1+deb10u1_armhf.deb ...
Unpacking libsasl2-modules-db:armhf (2.1.27+dfsg-1+deb10u1) ...
Selecting previously unselected package libsasl2-2:armhf.
Preparing to unpack .../044-libsasl2-2_2.1.27+dfsg-1+deb10u1_armhf.deb ...
Unpacking libsasl2-2:armhf (2.1.27+dfsg-1+deb10u1) ...
Selecting previously unselected package libldap-common.
Preparing to unpack .../045-libldap-common_2.4.47+dfsg-3+deb10u1_all.deb ...
Unpacking libldap-common (2.4.47+dfsg-3+deb10u1) ...
Selecting previously unselected package libldap-2.4-2:armhf.
Preparing to unpack .../046-libldap-2.4-2_2.4.47+dfsg-3+deb10u1_armhf.deb ...
Unpacking libldap-2.4-2:armhf (2.4.47+dfsg-3+deb10u1) ...
Selecting previously unselected package libnghttp2-14:armhf.
Preparing to unpack .../047-libnghttp2-14_1.36.0-2+deb10u1_armhf.deb ...
Unpacking libnghttp2-14:armhf (1.36.0-2+deb10u1) ...
Selecting previously unselected package libpsl5:armhf.
Preparing to unpack .../048-libpsl5_0.20.2-2_armhf.deb ...
Unpacking libpsl5:armhf (0.20.2-2) ...
Selecting previously unselected package librtmp1:armhf.
Preparing to unpack .../049-librtmp1_2.4+20151223.gitfa8646d.1-2_armhf.deb ...
Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-2) ...
Selecting previously unselected package libssh2-1:armhf.
Preparing to unpack .../050-libssh2-1_1.8.0-2.1_armhf.deb ...
Unpacking libssh2-1:armhf (1.8.0-2.1) ...
Selecting previously unselected package libcurl4:armhf.
Preparing to unpack .../051-libcurl4_7.64.0-4+deb10u1_armhf.deb ...
Unpacking libcurl4:armhf (7.64.0-4+deb10u1) ...
Selecting previously unselected package curl.
Preparing to unpack .../052-curl_7.64.0-4+deb10u1_armhf.deb ...
Unpacking curl (7.64.0-4+deb10u1) ...
Selecting previously unselected package libjpeg62-turbo:armhf.
Preparing to unpack .../053-libjpeg62-turbo_1%3a1.5.2-2+b1_armhf.deb ...
Unpacking libjpeg62-turbo:armhf (1:1.5.2-2+b1) ...
Selecting previously unselected package liblcms2-2:armhf.
Preparing to unpack .../054-liblcms2-2_2.9-3_armhf.deb ...
Unpacking liblcms2-2:armhf (2.9-3) ...
Selecting previously unselected package dcraw.
Preparing to unpack .../055-dcraw_9.28-2_armhf.deb ...
Unpacking dcraw (9.28-2) ...
Selecting previously unselected package libassuan0:armhf.
Preparing to unpack .../056-libassuan0_2.5.2-1_armhf.deb ...
Unpacking libassuan0:armhf (2.5.2-1) ...
Selecting previously unselected package gpgconf.
Preparing to unpack .../057-gpgconf_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gpgconf (2.2.12-1+deb10u1) ...
Selecting previously unselected package lsb-base.
Preparing to unpack .../058-lsb-base_10.2019051400_all.deb ...
Unpacking lsb-base (10.2019051400) ...
Selecting previously unselected package libksba8:armhf.
Preparing to unpack .../059-libksba8_1.3.5-2_armhf.deb ...
Unpacking libksba8:armhf (1.3.5-2) ...
Selecting previously unselected package libnpth0:armhf.
Preparing to unpack .../060-libnpth0_1.6-1_armhf.deb ...
Unpacking libnpth0:armhf (1.6-1) ...
Selecting previously unselected package dirmngr.
Preparing to unpack .../061-dirmngr_2.2.12-1+deb10u1_armhf.deb ...
Unpacking dirmngr (2.2.12-1+deb10u1) ...
Selecting previously unselected package libfakeroot:armhf.
Preparing to unpack .../062-libfakeroot_1.23-1_armhf.deb ...
Unpacking libfakeroot:armhf (1.23-1) ...
Selecting previously unselected package fakeroot.
Preparing to unpack .../063-fakeroot_1.23-1_armhf.deb ...
Unpacking fakeroot (1.23-1) ...
Selecting previously unselected package gnupg-l10n.
Preparing to unpack .../064-gnupg-l10n_2.2.12-1+deb10u1_all.deb ...
Unpacking gnupg-l10n (2.2.12-1+deb10u1) ...
Selecting previously unselected package gnupg-utils.
Preparing to unpack .../065-gnupg-utils_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gnupg-utils (2.2.12-1+deb10u1) ...
Selecting previously unselected package gpg.
Preparing to unpack .../066-gpg_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gpg (2.2.12-1+deb10u1) ...
Selecting previously unselected package pinentry-curses.
Preparing to unpack .../067-pinentry-curses_1.1.0-2_armhf.deb ...
Unpacking pinentry-curses (1.1.0-2) ...
Selecting previously unselected package gpg-agent.
Preparing to unpack .../068-gpg-agent_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gpg-agent (2.2.12-1+deb10u1) ...
Selecting previously unselected package gpg-wks-client.
Preparing to unpack .../069-gpg-wks-client_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gpg-wks-client (2.2.12-1+deb10u1) ...
Selecting previously unselected package gpg-wks-server.
Preparing to unpack .../070-gpg-wks-server_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gpg-wks-server (2.2.12-1+deb10u1) ...
Selecting previously unselected package gpgsm.
Preparing to unpack .../071-gpgsm_2.2.12-1+deb10u1_armhf.deb ...
Unpacking gpgsm (2.2.12-1+deb10u1) ...
Selecting previously unselected package gnupg.
Preparing to unpack .../072-gnupg_2.2.12-1+deb10u1_all.deb ...
Unpacking gnupg (2.2.12-1+deb10u1) ...
Selecting previously unselected package libalgorithm-diff-perl.
Preparing to unpack .../073-libalgorithm-diff-perl_1.19.03-2_all.deb ...
Unpacking libalgorithm-diff-perl (1.19.03-2) ...
Selecting previously unselected package libalgorithm-diff-xs-perl.
Preparing to unpack .../074-libalgorithm-diff-xs-perl_0.04-5+b1_armhf.deb ...
Unpacking libalgorithm-diff-xs-perl (0.04-5+b1) ...
Selecting previously unselected package libalgorithm-merge-perl.
Preparing to unpack .../075-libalgorithm-merge-perl_0.08-3_all.deb ...
Unpacking libalgorithm-merge-perl (0.08-3) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../076-libarchive-zip-perl_1.64-1_all.deb ...
Unpacking libarchive-zip-perl (1.64-1) ...
Selecting previously unselected package libdatrie1:armhf.
Preparing to unpack .../077-libdatrie1_0.2.12-2_armhf.deb ...
Unpacking libdatrie1:armhf (0.2.12-2) ...
Selecting previously unselected package libfile-fcntllock-perl.
Preparing to unpack .../078-libfile-fcntllock-perl_0.22-3+b5_armhf.deb ...
Unpacking libfile-fcntllock-perl (0.22-3+b5) ...
Selecting previously unselected package libglib2.0-0:armhf.
Preparing to unpack .../079-libglib2.0-0_2.58.3-2+deb10u2_armhf.deb ...
Unpacking libglib2.0-0:armhf (2.58.3-2+deb10u2) ...
Selecting previously unselected package libglib2.0-data.
Preparing to unpack .../080-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...
Unpacking libglib2.0-data (2.58.3-2+deb10u2) ...
Selecting previously unselected package libicu63:armhf.
Preparing to unpack .../081-libicu63_63.1-6_armhf.deb ...
Unpacking libicu63:armhf (63.1-6) ...
Selecting previously unselected package libimage-exiftool-perl.
Preparing to unpack .../082-libimage-exiftool-perl_11.16-1_all.deb ...
Unpacking libimage-exiftool-perl (11.16-1) ...
Selecting previously unselected package libjbig0:armhf.
Preparing to unpack .../083-libjbig0_2.1-3.1+b2_armhf.deb ...
Unpacking libjbig0:armhf (2.1-3.1+b2) ...
Selecting previously unselected package libjbig-dev:armhf.
Preparing to unpack .../084-libjbig-dev_2.1-3.1+b2_armhf.deb ...
Unpacking libjbig-dev:armhf (2.1-3.1+b2) ...
Selecting previously unselected package libjpeg62-turbo-dev:armhf.
Preparing to unpack .../085-libjpeg62-turbo-dev_1%3a1.5.2-2+b1_armhf.deb ...
Unpacking libjpeg62-turbo-dev:armhf (1:1.5.2-2+b1) ...
Selecting previously unselected package libjpeg-dev.
Preparing to unpack .../086-libjpeg-dev_1%3a1.5.2-2_all.deb ...
Unpacking libjpeg-dev (1:1.5.2-2) ...
Selecting previously unselected package liblzma-dev:armhf.
Preparing to unpack .../087-liblzma-dev_5.2.4-1_armhf.deb ...
Unpacking liblzma-dev:armhf (5.2.4-1) ...
Selecting previously unselected package libmime-charset-perl.
Preparing to unpack .../088-libmime-charset-perl_1.012.2-1_all.deb ...
Unpacking libmime-charset-perl (1.012.2-1) ...
Selecting previously unselected package nginx-common.
Preparing to unpack .../089-nginx-common_1.14.2-2+deb10u1_all.deb ...
Unpacking nginx-common (1.14.2-2+deb10u1) ...
Selecting previously unselected package libnginx-mod-http-echo.
Preparing to unpack .../090-libnginx-mod-http-echo_1.14.2-2+deb10u1_armhf.deb ...
Unpacking libnginx-mod-http-echo (1.14.2-2+deb10u1) ...
Selecting previously unselected package libposix-strptime-perl.
Preparing to unpack .../091-libposix-strptime-perl_0.13-1+b5_armhf.deb ...
Unpacking libposix-strptime-perl (0.13-1+b5) ...
Selecting previously unselected package libpq5:armhf.
Preparing to unpack .../092-libpq5_11.7-0+deb10u1_armhf.deb ...
Unpacking libpq5:armhf (11.7-0+deb10u1) ...
Selecting previously unselected package libpq-dev.
Preparing to unpack .../093-libpq-dev_11.7-0+deb10u1_armhf.deb ...
Unpacking libpq-dev (11.7-0+deb10u1) ...
Selecting previously unselected package libsasl2-modules:armhf.
Preparing to unpack .../094-libsasl2-modules_2.1.27+dfsg-1+deb10u1_armhf.deb ...
Unpacking libsasl2-modules:armhf (2.1.27+dfsg-1+deb10u1) ...
Selecting previously unselected package libthai-data.
Preparing to unpack .../095-libthai-data_0.1.28-2_all.deb ...
Unpacking libthai-data (0.1.28-2) ...
Selecting previously unselected package libthai0:armhf.
Preparing to unpack .../096-libthai0_0.1.28-2_armhf.deb ...
Unpacking libthai0:armhf (0.1.28-2) ...
Selecting previously unselected package libsombok3:armhf.
Preparing to unpack .../097-libsombok3_2.4.0-2_armhf.deb ...
Unpacking libsombok3:armhf (2.4.0-2) ...
Selecting previously unselected package libwebp6:armhf.
Preparing to unpack .../098-libwebp6_0.6.1-2_armhf.deb ...
Unpacking libwebp6:armhf (0.6.1-2) ...
Selecting previously unselected package libtiff5:armhf.
Preparing to unpack .../099-libtiff5_4.1.0+git191117-2~deb10u1_armhf.deb ...
Unpacking libtiff5:armhf (4.1.0+git191117-2~deb10u1) ...
Selecting previously unselected package libtiffxx5:armhf.
Preparing to unpack .../100-libtiffxx5_4.1.0+git191117-2~deb10u1_armhf.deb ...
Unpacking libtiffxx5:armhf (4.1.0+git191117-2~deb10u1) ...
Selecting previously unselected package zlib1g-dev:armhf.
Preparing to unpack .../101-zlib1g-dev_1%3a1.2.11.dfsg-1_armhf.deb ...
Unpacking zlib1g-dev:armhf (1:1.2.11.dfsg-1) ...
Selecting previously unselected package libtiff-dev:armhf.
Preparing to unpack .../102-libtiff-dev_4.1.0+git191117-2~deb10u1_armhf.deb ...
Unpacking libtiff-dev:armhf (4.1.0+git191117-2~deb10u1) ...
Selecting previously unselected package libtiff5-dev.
Preparing to unpack .../103-libtiff5-dev_4.1.0+git191117-2~deb10u1_armhf.deb ...
Unpacking libtiff5-dev (4.1.0+git191117-2~deb10u1) ...
Selecting previously unselected package libunicode-linebreak-perl.
Preparing to unpack .../104-libunicode-linebreak-perl_0.0.20190101-1_armhf.deb ...
Unpacking libunicode-linebreak-perl (0.0.20190101-1) ...
Selecting previously unselected package libxml2:armhf.
Preparing to unpack .../105-libxml2_2.9.4+dfsg1-7+b3_armhf.deb ...
Unpacking libxml2:armhf (2.9.4+dfsg1-7+b3) ...
Selecting previously unselected package manpages-dev.
Preparing to unpack .../106-manpages-dev_4.16-2_all.deb ...
Unpacking manpages-dev (4.16-2) ...
Selecting previously unselected package netcat.
Preparing to unpack .../107-netcat_1.10-41.1_all.deb ...
Unpacking netcat (1.10-41.1) ...
Selecting previously unselected package nginx-light.
Preparing to unpack .../108-nginx-light_1.14.2-2+deb10u1_armhf.deb ...
Unpacking nginx-light (1.14.2-2+deb10u1) ...
Selecting previously unselected package pkg-config.
Preparing to unpack .../109-pkg-config_0.29-6_armhf.deb ...
Unpacking pkg-config (0.29-6) ...
Selecting previously unselected package publicsuffix.
Preparing to unpack .../110-publicsuffix_20190415.1030-1_all.deb ...
Unpacking publicsuffix (20190415.1030-1) ...
Selecting previously unselected package python-meld3.
Preparing to unpack .../111-python-meld3_1.0.2-2_all.deb ...
Unpacking python-meld3 (1.0.2-2) ...
Selecting previously unselected package python-pkg-resources.
Preparing to unpack .../112-python-pkg-resources_40.8.0-1_all.deb ...
Unpacking python-pkg-resources (40.8.0-1) ...
Selecting previously unselected package shared-mime-info.
Preparing to unpack .../113-shared-mime-info_1.10-1_armhf.deb ...
Unpacking shared-mime-info (1.10-1) ...
Selecting previously unselected package supervisor.
Preparing to unpack .../114-supervisor_3.3.5-1_all.deb ...
Unpacking supervisor (3.3.5-1) ...
Selecting previously unselected package xdg-user-dirs.
Preparing to unpack .../115-xdg-user-dirs_0.17-2_armhf.deb ...
Unpacking xdg-user-dirs (0.17-2) ...
Setting up perl-modules-5.28 (5.28.1-6) ...
Setting up libksba8:armhf (1.3.5-2) ...
Setting up liblcms2-2:armhf (2.9-3) ...
Setting up lsb-base (10.2019051400) ...
Setting up libkeyutils1:armhf (1.6-6) ...
Setting up libpsl5:armhf (0.20.2-2) ...
Setting up mime-support (3.62) ...
Setting up netcat-traditional (1.10-41.1) ...
update-alternatives: using /bin/nc.traditional to provide /bin/nc (nc) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/man1/nc.1.gz because associated file /usr/share/man/man1/nc.traditional.1.gz (of link group nc) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/netcat.1.gz because associated file /usr/share/man/man1/nc.traditional.1.gz (of link group nc) doesn't exist
Setting up libdatrie1:armhf (0.2.12-2) ...
Setting up xdg-user-dirs (0.17-2) ...
Setting up libmagic-mgc (1:5.35-4+deb10u1) ...
Setting up libglib2.0-0:armhf (2.58.3-2+deb10u2) ...
No schema files found: doing nothing.
Setting up manpages (4.16-2) ...
Setting up libsasl2-modules:armhf (2.1.27+dfsg-1+deb10u1) ...
Setting up binutils-common:armhf (2.31.1-16) ...
Setting up libnghttp2-14:armhf (1.36.0-2+deb10u1) ...
Setting up libmagic1:armhf (1:5.35-4+deb10u1) ...
Setting up linux-libc-dev:armhf (4.19.98-1) ...
Setting up nginx-common (1.14.2-2+deb10u1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Setting up netcat (1.10-41.1) ...
Setting up libnpth0:armhf (1.6-1) ...
Setting up krb5-locales (1.17-3) ...
Setting up file (1:5.35-4+deb10u1) ...
Setting up libassuan0:armhf (2.5.2-1) ...
Setting up libgomp1:armhf (8.3.0-6) ...
Setting up bzip2 (1.0.6-9.2~deb10u1) ...
Setting up libldap-common (2.4.47+dfsg-3+deb10u1) ...
Setting up libjbig0:armhf (2.1-3.1+b2) ...
Setting up libicu63:armhf (63.1-6) ...
Setting up libfakeroot:armhf (1.23-1) ...
Setting up libkrb5support0:armhf (1.17-3) ...
Setting up libsasl2-modules-db:armhf (2.1.27+dfsg-1+deb10u1) ...
Setting up libpython2.7-stdlib:armhf (2.7.16-2+deb10u1) ...
Setting up fakeroot (1.23-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/man1/fakeroot.1.gz because associated file /usr/share/man/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/faked.1.gz because associated file /usr/share/man/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/es/man1/fakeroot.1.gz because associated file /usr/share/man/es/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/es/man1/faked.1.gz because associated file /usr/share/man/es/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/fakeroot.1.gz because associated file /usr/share/man/fr/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/faked.1.gz because associated file /usr/share/man/fr/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/sv/man1/fakeroot.1.gz because associated file /usr/share/man/sv/man1/fakeroot-sysv.1.gz (of link group fakeroot) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/sv/man1/faked.1.gz because associated file /usr/share/man/sv/man1/faked-sysv.1.gz (of link group fakeroot) doesn't exist
Setting up libasan5:armhf (8.3.0-6) ...
Setting up libglib2.0-data (2.58.3-2+deb10u2) ...
Setting up libjpeg62-turbo:armhf (1:1.5.2-2+b1) ...
Setting up make (4.2.1-1.2) ...
Setting up libmpfr6:armhf (4.0.2-1) ...
Setting up gnupg-l10n (2.2.12-1+deb10u1) ...
Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-2) ...
Setting up xz-utils (5.2.4-1) ...
update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/man1/lzma.1.gz because associated file /usr/share/man/man1/xz.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/unlzma.1.gz because associated file /usr/share/man/man1/unxz.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzcat.1.gz because associated file /usr/share/man/man1/xzcat.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzmore.1.gz because associated file /usr/share/man/man1/xzmore.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzless.1.gz because associated file /usr/share/man/man1/xzless.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzdiff.1.gz because associated file /usr/share/man/man1/xzdiff.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzcmp.1.gz because associated file /usr/share/man/man1/xzcmp.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzgrep.1.gz because associated file /usr/share/man/man1/xzgrep.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzegrep.1.gz because associated file /usr/share/man/man1/xzegrep.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzfgrep.1.gz because associated file /usr/share/man/man1/xzfgrep.1.gz (of link group lzma) doesn't exist
Setting up libmpc3:armhf (1.1.0-1) ...
Setting up libatomic1:armhf (8.3.0-6) ...
Setting up patch (2.7.6-3+deb10u1) ...
Setting up libwebp6:armhf (0.6.1-2) ...
Setting up libgdbm-compat4:armhf (1.18.1-4) ...
Setting up libk5crypto3:armhf (1.17-3) ...
Setting up libsasl2-2:armhf (2.1.27+dfsg-1+deb10u1) ...
Setting up libperl5.28:armhf (5.28.1-6) ...
Setting up liblzma-dev:armhf (5.2.4-1) ...
Setting up libubsan1:armhf (8.3.0-6) ...
Setting up libnginx-mod-http-echo (1.14.2-2+deb10u1) ...
Setting up libisl19:armhf (0.20-2) ...
Setting up gpgconf (2.2.12-1+deb10u1) ...
Setting up libthai-data (0.1.28-2) ...
Setting up libssh2-1:armhf (1.8.0-2.1) ...
Setting up libkrb5-3:armhf (1.17-3) ...
Setting up libtiff5:armhf (4.1.0+git191117-2~deb10u1) ...
Setting up libbinutils:armhf (2.31.1-16) ...
Setting up cpp-8 (8.3.0-6) ...
Setting up libc-dev-bin (2.28-10) ...
Setting up binutils-arm-linux-gnueabihf (2.31.1-16) ...
Setting up publicsuffix (20190415.1030-1) ...
Setting up libxml2:armhf (2.9.4+dfsg1-7+b3) ...
Setting up libcc1-0:armhf (8.3.0-6) ...
Setting up liblocale-gettext-perl (1.07-3+b4) ...
Setting up gpg (2.2.12-1+deb10u1) ...
Setting up libtiffxx5:armhf (4.1.0+git191117-2~deb10u1) ...
Setting up gnupg-utils (2.2.12-1+deb10u1) ...
Setting up nginx-light (1.14.2-2+deb10u1) ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Setting up pinentry-curses (1.1.0-2) ...
Setting up manpages-dev (4.16-2) ...
Setting up gpg-agent (2.2.12-1+deb10u1) ...
Setting up python2.7 (2.7.16-2+deb10u1) ...
Setting up libpython2-stdlib:armhf (2.7.16-1) ...
Setting up gpgsm (2.2.12-1+deb10u1) ...
Setting up dcraw (9.28-2) ...
Setting up libjbig-dev:armhf (2.1-3.1+b2) ...
Setting up libldap-2.4-2:armhf (2.4.47+dfsg-3+deb10u1) ...
Setting up binutils (2.31.1-16) ...
Setting up python2 (2.7.16-1) ...
Setting up dirmngr (2.2.12-1+deb10u1) ...
Setting up libthai0:armhf (0.1.28-2) ...
Setting up libpython-stdlib:armhf (2.7.16-1) ...
Setting up perl (5.28.1-6) ...
Setting up libposix-strptime-perl (0.13-1+b5) ...
Setting up shared-mime-info (1.10-1) ...
Setting up libgssapi-krb5-2:armhf (1.17-3) ...
Setting up libdpkg-perl (1.19.7) ...
Setting up libgcc-8-dev:armhf (8.3.0-6) ...
Setting up gpg-wks-server (2.2.12-1+deb10u1) ...
Setting up libmime-charset-perl (1.012.2-1) ...
Setting up cpp (4:8.3.0-1) ...
Setting up libcurl4:armhf (7.64.0-4+deb10u1) ...
Setting up libc6-dev:armhf (2.28-10) ...
Setting up curl (7.64.0-4+deb10u1) ...
Setting up python (2.7.16-1) ...
Setting up libstdc++-8-dev:armhf (8.3.0-6) ...
Setting up gcc-8 (8.3.0-6) ...
Setting up gpg-wks-client (2.2.12-1+deb10u1) ...
Setting up libfile-fcntllock-perl (0.22-3+b5) ...
Setting up libsombok3:armhf (2.4.0-2) ...
Setting up libalgorithm-diff-perl (1.19.03-2) ...
Setting up libarchive-zip-perl (1.64-1) ...
Setting up python-pkg-resources (40.8.0-1) ...
Setting up libpq5:armhf (11.7-0+deb10u1) ...
Setting up libpq-dev (11.7-0+deb10u1) ...
Setting up libimage-exiftool-perl (11.16-1) ...
Setting up gcc (4:8.3.0-1) ...
Setting up dpkg-dev (1.19.7) ...
Setting up libjpeg62-turbo-dev:armhf (1:1.5.2-2+b1) ...
Setting up libunicode-linebreak-perl (0.0.20190101-1) ...
Setting up pkg-config (0.29-6) ...
Setting up zlib1g-dev:armhf (1:1.2.11.dfsg-1) ...
Setting up g++-8 (8.3.0-6) ...
Setting up gnupg (2.2.12-1+deb10u1) ...
Setting up python-meld3 (1.0.2-2) ...
Setting up libalgorithm-diff-xs-perl (0.04-5+b1) ...
Setting up libalgorithm-merge-perl (0.08-3) ...
Setting up supervisor (3.3.5-1) ...
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Setting up libjpeg-dev (1:1.5.2-2) ...
Setting up libtiff-dev:armhf (4.1.0+git191117-2~deb10u1) ...
Setting up g++ (4:8.3.0-1) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode
Setting up build-essential (12.6) ...
Setting up libtiff5-dev (4.1.0+git191117-2~deb10u1) ...
Processing triggers for libc-bin (2.28-10) ...
Removing intermediate container ad49bc119461
 ---> c2f54aefddde
Step 3/22 : RUN curl -sL https://deb.nodesource.com/setup_13.x | bash - &&     curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - &&     echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list &&     apt-get update &&     apt-get install -y nodejs yarn &&          apt-get clean &&             rm -rf /var/lib/apt/lists/*                    /tmp/*                    /var/tmp/*
 ---> Running in 5f9b10737bef

## Installing the NodeSource Node.js 13.x repo...


## Populating apt-get cache...

+ apt-get update
Get:1 http://deb.debian.org/debian buster InRelease [122 kB]
Get:2 http://deb.debian.org/debian buster-updates InRelease [49.3 kB]
Get:3 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:4 http://deb.debian.org/debian buster/main armhf Packages [7699 kB]
Get:5 http://security.debian.org/debian-security buster/updates/main armhf Packages [181 kB]
Get:6 http://deb.debian.org/debian buster-updates/main armhf Packages [7356 B]
Fetched 8123 kB in 4s (2111 kB/s)
Reading package lists...

## Installing packages required for setup: lsb-release...

+ apt-get install -y lsb-release > /dev/null 2>&1

## Confirming "buster" is supported...

+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_13.x/dists/buster/Release'

## Adding the NodeSource signing key to your keyring...

+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
Warning: apt-key output should not be parsed (stdout is not a terminal)
OK

## Creating apt sources list file for the NodeSource Node.js 13.x repo...

+ echo 'deb https://deb.nodesource.com/node_13.x buster main' > /etc/apt/sources.list.d/nodesource.list
+ echo 'deb-src https://deb.nodesource.com/node_13.x buster main' >> /etc/apt/sources.list.d/nodesource.list

## Running `apt-get update` for you...

+ apt-get update
Hit:1 http://deb.debian.org/debian buster InRelease
Hit:2 http://deb.debian.org/debian buster-updates InRelease
Hit:3 http://security.debian.org/debian-security buster/updates InRelease
Get:4 https://deb.nodesource.com/node_13.x buster InRelease [4584 B]
Get:5 https://deb.nodesource.com/node_13.x buster/main armhf Packages [775 B]
Fetched 5359 B in 2s (2818 B/s)
Reading package lists...

## Run `sudo apt-get install -y nodejs` to install Node.js 13.x and npm
## You may also need development tools to build native addons:
     sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
     curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
     echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
     sudo apt-get update && sudo apt-get install yarn


Warning: apt-key output should not be parsed (stdout is not a terminal)
OK
deb https://dl.yarnpkg.com/debian/ stable main
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Hit:4 https://deb.nodesource.com/node_13.x buster InRelease
Get:5 https://dl.yarnpkg.com/debian stable InRelease [17.1 kB]
Get:6 https://dl.yarnpkg.com/debian stable/main all Packages [9953 B]
Get:7 https://dl.yarnpkg.com/debian stable/main armhf Packages [9953 B]
Fetched 37.0 kB in 2s (16.4 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  nodejs yarn
0 upgraded, 2 newly installed, 0 to remove and 9 not upgraded.
Need to get 23.0 MB of archives.
After this operation, 115 MB of additional disk space will be used.
Get:1 https://deb.nodesource.com/node_13.x buster/main armhf nodejs armhf 13.11.0-1nodesource1 [22.1 MB]
Get:2 https://dl.yarnpkg.com/debian stable/main armhf yarn all 1.22.4-1 [891 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 23.0 MB in 2s (10.0 MB/s)
Selecting previously unselected package nodejs.
(Reading database ... 18162 files and directories currently installed.)
Preparing to unpack .../nodejs_13.11.0-1nodesource1_armhf.deb ...
Unpacking nodejs (13.11.0-1nodesource1) ...
Selecting previously unselected package yarn.
Preparing to unpack .../archives/yarn_1.22.4-1_all.deb ...
Unpacking yarn (1.22.4-1) ...
Setting up nodejs (13.11.0-1nodesource1) ...
Setting up yarn (1.22.4-1) ...
Removing intermediate container 5f9b10737bef
 ---> 34f3ccdc35c0
Step 4/22 : COPY ui/package.json /srv/ui/package.json
 ---> fed55bf6d3ee
Step 5/22 : COPY ui/yarn.lock /srv/ui/yarn.lock
 ---> c265530dcbe3
Step 6/22 : COPY ui/config /srv/ui/config
 ---> fab5386059fb
Step 7/22 : COPY ui/scripts /srv/ui/scripts
 ---> f000c07f2047
Step 8/22 : WORKDIR /srv/ui
 ---> Running in 7ca70f04e07c
Removing intermediate container 7ca70f04e07c
 ---> b2cb5609147e
Step 9/22 : RUN yarn install
 ---> Running in ff3875288d0f
yarn install v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
warning file-loader@2.0.0: Invalid bin field for "file-loader".
warning mini-css-extract-plugin@0.4.3: Invalid bin field for "mini-css-extract-plugin".
warning terser-webpack-plugin@1.1.0: Invalid bin field for "terser-webpack-plugin".
warning url-loader@1.1.1: Invalid bin field for "url-loader".
info fsevents@1.2.4: The platform "linux" is incompatible with this module.
info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "@chakra-ui/core > toasted-notes > @reach/alert > @reach/component-component@0.1.3" has unmet peer dependency "prop-types@^15.6.2".
warning " > react-apollo@2.3.1" has unmet peer dependency "apollo-client@^2.3.8".
[4/4] Building fresh packages...
Done in 201.97s.
Removing intermediate container 7df1ef2e11e3
 ---> f37ec538b07a
Step 10/22 : WORKDIR /srv
 ---> Running in 7113a0552ab8
Removing intermediate container 7113a0552ab8
 ---> b2a86241c57b
Step 11/22 : COPY requirements.txt /srv/requirements.txt
 ---> 9e6fb6686e65
Step 12/22 : RUN sed -i "s|tensorflow==2.1.0|https://github.com/damianmoore/tensorflow-builder/releases/download/v2.1.0/tensorflow-2.1.0-cp38-cp38-linux_x86_64.whl|g" /srv/requirements.txt
 ---> Running in dc70f082da5f
Removing intermediate container dc70f082da5f
 ---> 5b50651a7443
Step 13/22 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Running in 10f14eb97438
ERROR: tensorflow-2.1.0-cp38-cp38-linux_x86_64.whl is not a supported wheel on this platform.
ERROR: Service 'photonix' failed to build: The command '/bin/sh -c pip install --no-cache-dir -r requirements.txt' returned a non-zero code: 1

@damianmoore
Copy link
Collaborator Author

damianmoore commented Mar 20, 2020

Thanks for sending the logs and trying to build, @jensbrak. Seems like the build got pretty far. You might want to try removing the line in Dockerfile that uses sed to replace the standard tensorflow version with my own custom build. This is mainly for older x86-based systems like my home server. That way pip may find an official build of tensorflow for armhf.

@damianmoore damianmoore self-assigned this Nov 30, 2020
@damianmoore damianmoore added this to the 1.0 milestone Nov 30, 2020
@damianmoore
Copy link
Collaborator Author

@jensbrak I've made some good progress so far but am not quite there. See this branch for latest developments: https://github.com/damianmoore/photonix/tree/raspberry-pi

I managed to build Tensorflow in my related project here: https://github.com/damianmoore/tensorflow-builder

Currently I'm using a new Dockerfile and an experimental feature of Docker called buildx which allows cross-compilation. This is the command I'm using:

docker buildx build --platform linux/arm/v7,linux/amd64 --tag damianmoore/photonix-multiarch --push -f docker/Dockerfile.multiarch .

Installing Python dependencies on Arm is very slow because there are not many binary Wheel packages available. I've sped up my Docker build time by storing cached .whl packages on my own custom PyPi server.

Seems like an error building matplotlib/numpy with Fortran compilter but I made sure to install gfortran.

Any suggestions very much appreciated as I'm a bit stuck right now. Thanks.

#16 47.43 Collecting matplotlib==3.1.2
#16 47.45   Downloading matplotlib-3.1.2.tar.gz (40.9 MB)
#16 253.1     ERROR: Command errored out with exit status 1:
#16 253.1      command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-87r210xe/matplotlib/setup.py'"'"'; __file__='"'"'/tmp/pip-install-87r210xe/matplotlib/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-000fn4of
#16 253.1          cwd: /tmp/pip-install-87r210xe/matplotlib/
#16 253.1     Complete output (283 lines):
#16 253.1     ================================================================================
#16 253.1     Edit setup.cfg to change the build options
#16 253.1 
#16 253.1     BUILDING MATPLOTLIB
#16 253.1       matplotlib: yes [3.1.2]
#16 253.1           python: yes [3.8.6 (default, Nov 25 2020, 04:22:46)  [GCC 8.3.0]]
#16 253.1         platform: yes [linux]
#16 253.1 
#16 253.1     OPTIONAL SUBPACKAGES
#16 253.1      sample_data: yes [installing]
#16 253.1            tests: no  [skipping due to configuration]
#16 253.1 
#16 253.1     OPTIONAL BACKEND EXTENSIONS
#16 253.1              agg: yes [installing]
#16 253.1            tkagg: yes [installing; run-time loading from Python Tcl/Tk]
#16 253.1           macosx: no  [Mac OS-X only]
#16 253.1 
#16 253.1     OPTIONAL PACKAGE DATA
#16 253.1             dlls: no  [skipping due to configuration]
#16 253.1 
#16 253.1         ERROR: Command errored out with exit status 1:
#16 253.1          command: /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp_y6r9272
#16 253.1              cwd: /tmp/pip-wheel-ymmtnmar/numpy
#16 253.1         Complete output (227 lines):
#16 253.1         Running from numpy source directory.
#16 253.1         setup.py:480: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
#16 253.1           run_build = parse_setuppy_commands()
#16 253.1         Cythonizing sources
#16 253.1         Processing numpy/random/_bounded_integers.pxd.in
#16 253.1         Processing numpy/random/_bounded_integers.pyx.in
#16 253.1         Processing numpy/random/_philox.pyx
#16 253.1         Processing numpy/random/_pcg64.pyx
#16 253.1         Processing numpy/random/mtrand.pyx
#16 253.1         Processing numpy/random/_generator.pyx
#16 253.1         Processing numpy/random/_common.pyx
#16 253.1         Processing numpy/random/_mt19937.pyx
#16 253.1         Processing numpy/random/bit_generator.pyx
#16 253.1         Processing numpy/random/_sfc64.pyx
#16 253.1         blas_opt_info:
#16 253.1         blas_mkl_info:
#16 253.1         customize UnixCCompiler
#16 253.1           libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         blis_info:
#16 253.1           libraries blis not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         openblas_info:
#16 253.1           libraries openblas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_3_10_blas_threads_info:
#16 253.1         Setting PTATLAS=ATLAS
#16 253.1           libraries tatlas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_3_10_blas_info:
#16 253.1           libraries satlas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_blas_threads_info:
#16 253.1         Setting PTATLAS=ATLAS
#16 253.1           libraries ptf77blas,ptcblas,atlas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_blas_info:
#16 253.1           libraries f77blas,cblas,atlas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         accelerate_info:
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         /tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/system_info.py:1914: UserWarning:
#16 253.1             Optimized (vendor) Blas libraries are not found.
#16 253.1             Falls back to netlib Blas library which has worse performance.
#16 253.1             A better performance should be easily gained by switching
#16 253.1             Blas library.
#16 253.1           if self._calc_info(blas):
#16 253.1         blas_info:
#16 253.1           libraries blas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         /tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/system_info.py:1914: UserWarning:
#16 253.1             Blas (http://www.netlib.org/blas/) libraries not found.
#16 253.1             Directories to search for the libraries can be specified in the
#16 253.1             numpy/distutils/site.cfg file (section [blas]) or by setting
#16 253.1             the BLAS environment variable.
#16 253.1           if self._calc_info(blas):
#16 253.1         blas_src_info:
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         /tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/system_info.py:1914: UserWarning:
#16 253.1             Blas (http://www.netlib.org/blas/) sources not found.
#16 253.1             Directories to search for the sources can be specified in the
#16 253.1             numpy/distutils/site.cfg file (section [blas_src]) or by setting
#16 253.1             the BLAS_SRC environment variable.
#16 253.1           if self._calc_info(blas):
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         non-existing path in 'numpy/distutils': 'site.cfg'
#16 253.1         lapack_opt_info:
#16 253.1         lapack_mkl_info:
#16 253.1           libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         openblas_lapack_info:
#16 253.1           libraries openblas not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         openblas_clapack_info:
#16 253.1           libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         flame_info:
#16 253.1           libraries flame not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_3_10_threads_info:
#16 253.1         Setting PTATLAS=ATLAS
#16 253.1           libraries lapack_atlas not found in /usr/local/lib
#16 253.1           libraries tatlas,tatlas not found in /usr/local/lib
#16 253.1           libraries lapack_atlas not found in /usr/lib
#16 253.1           libraries tatlas,tatlas not found in /usr/lib
#16 253.1         <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_3_10_info:
#16 253.1           libraries lapack_atlas not found in /usr/local/lib
#16 253.1           libraries satlas,satlas not found in /usr/local/lib
#16 253.1           libraries lapack_atlas not found in /usr/lib
#16 253.1           libraries satlas,satlas not found in /usr/lib
#16 253.1         <class 'numpy.distutils.system_info.atlas_3_10_info'>
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_threads_info:
#16 253.1         Setting PTATLAS=ATLAS
#16 253.1           libraries lapack_atlas not found in /usr/local/lib
#16 253.1           libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
#16 253.1           libraries lapack_atlas not found in /usr/lib
#16 253.1           libraries ptf77blas,ptcblas,atlas not found in /usr/lib
#16 253.1         <class 'numpy.distutils.system_info.atlas_threads_info'>
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         atlas_info:
#16 253.1           libraries lapack_atlas not found in /usr/local/lib
#16 253.1           libraries f77blas,cblas,atlas not found in /usr/local/lib
#16 253.1           libraries lapack_atlas not found in /usr/lib
#16 253.1           libraries f77blas,cblas,atlas not found in /usr/lib
#16 253.1         <class 'numpy.distutils.system_info.atlas_info'>
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         lapack_info:
#16 253.1           libraries lapack not found in ['/usr/local/lib', '/usr/lib']
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         /tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/system_info.py:1748: UserWarning:
#16 253.1             Lapack (http://www.netlib.org/lapack/) libraries not found.
#16 253.1             Directories to search for the libraries can be specified in the
#16 253.1             numpy/distutils/site.cfg file (section [lapack]) or by setting
#16 253.1             the LAPACK environment variable.
#16 253.1           return getattr(self, '_calc_info_{}'.format(name))()
#16 253.1         lapack_src_info:
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         /tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/system_info.py:1748: UserWarning:
#16 253.1             Lapack (http://www.netlib.org/lapack/) sources not found.
#16 253.1             Directories to search for the sources can be specified in the
#16 253.1             numpy/distutils/site.cfg file (section [lapack_src]) or by setting
#16 253.1             the LAPACK_SRC environment variable.
#16 253.1           return getattr(self, '_calc_info_{}'.format(name))()
#16 253.1           NOT AVAILABLE
#16 253.1 
#16 253.1         numpy_linalg_lapack_lite:
#16 253.1           FOUND:
#16 253.1             language = c
#16 253.1 
#16 253.1         /usr/local/lib/python3.8/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
#16 253.1           warnings.warn(msg)
#16 253.1         running dist_info
#16 253.1         running build_src
#16 253.1         build_src
#16 253.1         building py_modules sources
#16 253.1         creating build
#16 253.1         creating build/src.linux-armv7l-3.8
#16 253.1         creating build/src.linux-armv7l-3.8/numpy
#16 253.1         creating build/src.linux-armv7l-3.8/numpy/distutils
#16 253.1         building library "npymath" sources
#16 253.1         Could not locate executable gfortran
#16 253.1         Could not locate executable f95
#16 253.1         Could not locate executable ifort
#16 253.1         Could not locate executable ifc
#16 253.1         Could not locate executable lf95
#16 253.1         Could not locate executable pgfortran
#16 253.1         Could not locate executable nvfortran
#16 253.1         Could not locate executable f90
#16 253.1         Could not locate executable f77
#16 253.1         Could not locate executable fort
#16 253.1         Could not locate executable efort
#16 253.1         Could not locate executable efc
#16 253.1         Could not locate executable g77
#16 253.1         Could not locate executable g95
#16 253.1         Could not locate executable pathf95
#16 253.1         Could not locate executable nagfor
#16 253.1         don't know how to compile Fortran code on platform 'posix'
#16 253.1         Traceback (most recent call last):
#16 253.1           File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
#16 253.1             main()
#16 253.1           File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
#16 253.1             json_out['return_val'] = hook(**hook_input['kwargs'])
#16 253.1           File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel
#16 253.1             return hook(metadata_directory, config_settings)
#16 253.1           File "/tmp/pip-build-env-xysevyhk/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 157, in prepare_metadata_for_build_wheel
#16 253.1             self.run_setup()
#16 253.1           File "/tmp/pip-build-env-xysevyhk/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 248, in run_setup
#16 253.1             super(_BuildMetaLegacyBackend,
#16 253.1           File "/tmp/pip-build-env-xysevyhk/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 142, in run_setup
#16 253.1             exec(compile(code, __file__, 'exec'), locals())
#16 253.1           File "setup.py", line 508, in <module>
#16 253.1             setup_package()
#16 253.1           File "setup.py", line 500, in setup_package
#16 253.1             setup(**metadata)
#16 253.1           File "/tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/core.py", line 169, in setup
#16 253.1             return old_setup(**new_attr)
#16 253.1           File "/tmp/pip-build-env-xysevyhk/overlay/lib/python3.8/site-packages/setuptools/__init__.py", line 165, in setup
#16 253.1             return distutils.core.setup(**attrs)
#16 253.1           File "/usr/local/lib/python3.8/distutils/core.py", line 148, in setup
#16 253.1             dist.run_commands()
#16 253.1           File "/usr/local/lib/python3.8/distutils/dist.py", line 966, in run_commands
#16 253.1             self.run_command(cmd)
#16 253.1           File "/usr/local/lib/python3.8/distutils/dist.py", line 985, in run_command
#16 253.1             cmd_obj.run()
#16 253.1           File "/tmp/pip-build-env-xysevyhk/overlay/lib/python3.8/site-packages/setuptools/command/dist_info.py", line 31, in run
#16 253.1             egg_info.run()
#16 253.1           File "/tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/command/egg_info.py", line 24, in run
#16 253.1             self.run_command("build_src")
#16 253.1           File "/usr/local/lib/python3.8/distutils/cmd.py", line 313, in run_command
#16 253.1             self.distribution.run_command(command)
#16 253.1           File "/usr/local/lib/python3.8/distutils/dist.py", line 985, in run_command
#16 253.1             cmd_obj.run()
#16 253.1           File "/tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/command/build_src.py", line 144, in run
#16 253.1             self.build_sources()
#16 253.1           File "/tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/command/build_src.py", line 155, in build_sources
#16 253.1             self.build_library_sources(*libname_info)
#16 253.1           File "/tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/command/build_src.py", line 288, in build_library_sources
#16 253.1             sources = self.generate_sources(sources, (lib_name, build_info))
#16 253.1           File "/tmp/pip-wheel-ymmtnmar/numpy/numpy/distutils/command/build_src.py", line 378, in generate_sources
#16 253.1             source = func(extension, build_dir)
#16 253.1           File "numpy/core/setup.py", line 663, in get_mathlib_info
#16 253.1             raise RuntimeError("Broken toolchain: cannot link a simple C program")
#16 253.1         RuntimeError: Broken toolchain: cannot link a simple C program
#16 253.1         ----------------------------------------
#16 253.1     ERROR: Command errored out with exit status 1: /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmp_y6r9272 Check the logs for full command output.
#16 253.1     Traceback (most recent call last):
#16 253.1       File "/usr/local/lib/python3.8/site-packages/setuptools/installer.py", line 126, in fetch_build_egg
#16 253.1         subprocess.check_call(cmd)
#16 253.1       File "/usr/local/lib/python3.8/subprocess.py", line 364, in check_call
#16 253.1         raise CalledProcessError(retcode, cmd)
#16 253.1     subprocess.CalledProcessError: Command '['/usr/local/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpirl2svjj', '--quiet', 'numpy>=1.11']' returned non-zero exit status 1.
#16 253.1 
#16 253.1     The above exception was the direct cause of the following exception:
#16 253.1 
#16 253.1     Traceback (most recent call last):
#16 253.1       File "<string>", line 1, in <module>
#16 253.1       File "/tmp/pip-install-87r210xe/matplotlib/setup.py", line 273, in <module>
#16 253.1         setup(
#16 253.1       File "/usr/local/lib/python3.8/site-packages/setuptools/__init__.py", line 152, in setup
#16 253.1         _install_setup_requires(attrs)
#16 253.1       File "/usr/local/lib/python3.8/site-packages/setuptools/__init__.py", line 147, in _install_setup_requires
#16 253.1         dist.fetch_build_eggs(dist.setup_requires)
#16 253.1       File "/usr/local/lib/python3.8/site-packages/setuptools/dist.py", line 673, in fetch_build_eggs
#16 253.1         resolved_dists = pkg_resources.working_set.resolve(
#16 253.1       File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 764, in resolve
#16 253.1         dist = best[req.key] = env.best_match(
#16 253.1       File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 1049, in best_match
#16 253.1         return self.obtain(req, installer)
#16 253.1       File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 1061, in obtain
#16 253.1         return installer(requirement)
#16 253.1       File "/usr/local/lib/python3.8/site-packages/setuptools/dist.py", line 732, in fetch_build_egg
#16 253.1         return fetch_build_egg(self, req)
#16 253.1       File "/usr/local/lib/python3.8/site-packages/setuptools/installer.py", line 128, in fetch_build_egg
#16 253.1         raise DistutilsError(str(e)) from e
#16 253.1     distutils.errors.DistutilsError: Command '['/usr/local/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpirl2svjj', '--quiet', 'numpy>=1.11']' returned non-zero exit status 1.
#16 253.1     ----------------------------------------
#16 253.1 ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c python /root/install_and_upload_python_packages.py]: buildkit-runc did not terminate successfully

@jensbrak
Copy link

@damianmoore Thank's for making an effort, appreciated! No spontanious suggestions, but I'll give it a go at some point, for sure! Since it's a lovely piece of software it would be awesome to get it up and running but I am by no means dependent on it.
Whenever I try I'll update any findings here.

@damianmoore
Copy link
Collaborator Author

A small update - mainly for future me. The problem is with building Numpy. I tried using the Debian package python3-numpy but it's built for a different version of Python and Tensorflow is very specific about what version of Numpy it needs anyway. Looks like I'll have to figure out what's missing to build Numpy.

@damianmoore
Copy link
Collaborator Author

Fixed the errors building Numpy. The problem was in my script docker/install_and_upload_python_packages.py and pip install -r requirements.txt was working fine. I was accidentally wiping out all environment variables when running pip in a subprocess.

Next problems to solve:

@jensbrak
Copy link

I haven't really tried the Raspberry-Pi branch of Photonix, but I tried the Master branch today. While it fails with the wrong platform for Tensorflow it is possible to go beyond that by using community builds and manually install it. This way I managed to go beyond the Tensorflow parts as well (I used a version from here: https://github.com/bitsy-ai/tensorflow-arm-bin)

Currently I'm getting stuck at a SciPy dependency as far as I can see:

Step 6/20 : RUN pip install --no-cache-dir -r requirements.txt
 ---> Running in efd01ab62005
Collecting absl-py==0.9.0
  Downloading absl-py-0.9.0.tar.gz (104 kB)
Collecting aniso8601==7.0.0
  Downloading aniso8601-7.0.0-py2.py3-none-any.whl (42 kB)
Collecting asgiref==3.2.3
  Downloading asgiref-3.2.3-py2.py3-none-any.whl (18 kB)
Collecting astor==0.8.1
  Downloading astor-0.8.1-py2.py3-none-any.whl (27 kB)
Collecting asyncinotify==2.0.2
  Downloading asyncinotify-2.0.2-py3-none-any.whl (10 kB)
Collecting attrs==19.3.0
  Downloading attrs-19.3.0-py2.py3-none-any.whl (39 kB)
Collecting cachetools==4.0.0
  Downloading cachetools-4.0.0-py3-none-any.whl (10 kB)
Collecting certifi==2019.11.28
  Downloading certifi-2019.11.28-py2.py3-none-any.whl (156 kB)
Collecting chardet==3.0.4
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting coverage==5.0.3
  Downloading coverage-5.0.3.tar.gz (679 kB)
Collecting cycler==0.10.0
  Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Collecting Django==3.0.7
  Downloading Django-3.0.7-py3-none-any.whl (7.5 MB)
Collecting django-cors-headers==3.2.1
  Downloading django_cors_headers-3.2.1-py3-none-any.whl (14 kB)
Collecting django-filter==2.2.0
  Downloading django_filter-2.2.0-py3-none-any.whl (69 kB)
Collecting django-graphql-jwt==0.3.0
  Downloading django_graphql_jwt-0.3.0-py2.py3-none-any.whl (40 kB)
Collecting factory-boy==2.12.0
  Downloading factory_boy-2.12.0-py2.py3-none-any.whl (36 kB)
Collecting Faker==4.0.0
  Downloading Faker-4.0.0-py3-none-any.whl (963 kB)
Collecting gast==0.3.3
  Downloading gast-0.3.3-py2.py3-none-any.whl (9.7 kB)
Collecting google-auth==1.10.2
  Downloading google_auth-1.10.2-py2.py3-none-any.whl (76 kB)
Requirement already satisfied: setuptools>=40.3.0 in /usr/local/lib/python3.8/site-packages (from google-auth==1.10.2->-r requirements.txt (line 21)) (51.0.0)
Collecting google-auth-oauthlib==0.4.1
  Downloading google_auth_oauthlib-0.4.1-py2.py3-none-any.whl (18 kB)
Collecting google-pasta==0.1.8
  Downloading google_pasta-0.1.8-py3-none-any.whl (57 kB)
Collecting graphene==2.1.8
  Downloading graphene-2.1.8-py2.py3-none-any.whl (107 kB)
Collecting graphene-django==2.8.0
  Downloading graphene_django-2.8.0-py2.py3-none-any.whl (68 kB)
Collecting graphql-core==2.2.1
  Downloading graphql_core-2.2.1-py2.py3-none-any.whl (250 kB)
Collecting graphql-relay==2.0.1
  Downloading graphql_relay-2.0.1-py3-none-any.whl (20 kB)
Collecting grpcio==1.26.0
  Downloading grpcio-1.26.0.tar.gz (15.4 MB)
Collecting gunicorn==20.0.4
  Downloading gunicorn-20.0.4-py2.py3-none-any.whl (77 kB)
Collecting h5py==2.10.0
  Downloading h5py-2.10.0.tar.gz (301 kB)
Collecting idna==2.8
  Downloading idna-2.8-py2.py3-none-any.whl (58 kB)
Collecting inotify==0.2.10
  Downloading inotify-0.2.10.tar.gz (9.9 kB)
Collecting Keras-Applications==1.0.8
  Downloading Keras_Applications-1.0.8-py3-none-any.whl (50 kB)
Collecting Keras-Preprocessing==1.1.1
  Downloading Keras_Preprocessing-1.1.1-py2.py3-none-any.whl (42 kB)
Collecting kiwisolver==1.1.0
  Downloading kiwisolver-1.1.0.tar.gz (30 kB)
Collecting Markdown==3.1.1
  Downloading Markdown-3.1.1-py2.py3-none-any.whl (87 kB)
Collecting matplotlib==3.1.2
  Downloading matplotlib-3.1.2.tar.gz (40.9 MB)
Collecting mock==3.0.5
  Downloading mock-3.0.5-py2.py3-none-any.whl (25 kB)
Collecting more-itertools==8.1.0
  Downloading more_itertools-8.1.0-py3-none-any.whl (41 kB)
Collecting nose==1.3.7
  Downloading nose-1.3.7-py3-none-any.whl (154 kB)
Collecting numpy==1.18.1
  Downloading numpy-1.18.1.zip (5.4 MB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: still running...
    Preparing wheel metadata: finished with status 'done'
Collecting oauthlib==3.1.0
  Downloading oauthlib-3.1.0-py2.py3-none-any.whl (147 kB)
Collecting opt-einsum==3.1.0
  Downloading opt_einsum-3.1.0.tar.gz (69 kB)
Collecting packaging==20.0
  Downloading packaging-20.0-py2.py3-none-any.whl (36 kB)
Collecting Pillow==7.2.0
  Downloading Pillow-7.2.0.tar.gz (39.1 MB)
Collecting pluggy==0.13.1
  Downloading pluggy-0.13.1-py2.py3-none-any.whl (18 kB)
Collecting promise==2.3
  Downloading promise-2.3.tar.gz (19 kB)
Collecting protobuf==3.11.2
  Downloading protobuf-3.11.2-py2.py3-none-any.whl (434 kB)
Collecting psycopg2-binary==2.8.4
  Downloading psycopg2-binary-2.8.4.tar.gz (378 kB)
Collecting py==1.8.1
  Downloading py-1.8.1-py2.py3-none-any.whl (83 kB)
Collecting pyasn1==0.4.8
  Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Collecting pyasn1-modules==0.2.8
  Downloading pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting PyJWT==1.7.1
  Downloading PyJWT-1.7.1-py2.py3-none-any.whl (18 kB)
Collecting pyparsing==2.4.6
  Downloading pyparsing-2.4.6-py2.py3-none-any.whl (67 kB)
Collecting pyshp==2.1.0
  Downloading pyshp-2.1.0.tar.gz (215 kB)
Collecting pytest==5.3.4
  Downloading pytest-5.3.4-py3-none-any.whl (235 kB)
Collecting pytest-django==3.8.0
  Downloading pytest_django-3.8.0-py2.py3-none-any.whl (19 kB)
Collecting python-dateutil==2.8.1
  Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting python-redis-lock==3.5.0
  Downloading python_redis_lock-3.5.0-py2.py3-none-any.whl (11 kB)
Collecting pytz==2019.3
  Downloading pytz-2019.3-py2.py3-none-any.whl (509 kB)
Collecting redis==3.3.11
  Downloading redis-3.3.11-py2.py3-none-any.whl (66 kB)
Collecting requests==2.22.0
  Downloading requests-2.22.0-py2.py3-none-any.whl (57 kB)
Collecting requests-oauthlib==1.3.0
  Downloading requests_oauthlib-1.3.0-py2.py3-none-any.whl (23 kB)
Collecting rsa==4.0
  Downloading rsa-4.0-py2.py3-none-any.whl (38 kB)
Collecting Rx==1.6.1
  Downloading Rx-1.6.1-py2.py3-none-any.whl (179 kB)
Collecting scipy==1.4.1
  Downloading scipy-1.4.1.tar.gz (24.6 MB)
  Installing build dependencies: started
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: still running...
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpx_3dsvzc
         cwd: /tmp/pip-install-pk7uls5i/scipy_94150e9aca4c4e5e827665cfa4694f39
    Complete output (139 lines):
    lapack_opt_info:
    lapack_mkl_info:
    customize UnixCCompiler
      libraries mkl_rt not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
      NOT AVAILABLE

    openblas_lapack_info:
    customize UnixCCompiler
    customize UnixCCompiler
      libraries openblas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
      NOT AVAILABLE

    openblas_clapack_info:
    customize UnixCCompiler
    customize UnixCCompiler
      libraries openblas,lapack not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
      NOT AVAILABLE

    flame_info:
    customize UnixCCompiler
      libraries flame not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
      NOT AVAILABLE

    atlas_3_10_threads_info:
    Setting PTATLAS=ATLAS
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries tatlas,tatlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib
    customize UnixCCompiler
      libraries tatlas,tatlas not found in /usr/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib/arm-linux-gnueabihf
    customize UnixCCompiler
      libraries tatlas,tatlas not found in /usr/lib/arm-linux-gnueabihf
    <class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
      NOT AVAILABLE

    atlas_3_10_info:
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries satlas,satlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib
    customize UnixCCompiler
      libraries satlas,satlas not found in /usr/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib/arm-linux-gnueabihf
    customize UnixCCompiler
      libraries satlas,satlas not found in /usr/lib/arm-linux-gnueabihf
    <class 'numpy.distutils.system_info.atlas_3_10_info'>
      NOT AVAILABLE

    atlas_threads_info:
    Setting PTATLAS=ATLAS
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib
    customize UnixCCompiler
      libraries ptf77blas,ptcblas,atlas not found in /usr/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib/arm-linux-gnueabihf
    customize UnixCCompiler
      libraries ptf77blas,ptcblas,atlas not found in /usr/lib/arm-linux-gnueabihf
    <class 'numpy.distutils.system_info.atlas_threads_info'>
      NOT AVAILABLE

    atlas_info:
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries f77blas,cblas,atlas not found in /usr/local/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib
    customize UnixCCompiler
      libraries f77blas,cblas,atlas not found in /usr/lib
    customize UnixCCompiler
      libraries lapack_atlas not found in /usr/lib/arm-linux-gnueabihf
    customize UnixCCompiler
      libraries f77blas,cblas,atlas not found in /usr/lib/arm-linux-gnueabihf
    <class 'numpy.distutils.system_info.atlas_info'>
      NOT AVAILABLE

    accelerate_info:
      NOT AVAILABLE

    lapack_info:
    customize UnixCCompiler
      libraries lapack not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/arm-linux-gnueabihf']
      NOT AVAILABLE

    lapack_src_info:
      NOT AVAILABLE

      NOT AVAILABLE

    setup.py:418: UserWarning: Unrecognized setuptools command ('dist_info --egg-base /tmp/pip-modern-metadata-fqg_ssip'), proceeding with generating Cython sources and expanding templates
      warnings.warn("Unrecognized setuptools command ('{}'), proceeding with "
    Running from scipy source directory.
    /tmp/pip-build-env-hj24zg5i/overlay/lib/python3.8/site-packages/numpy/distutils/system_info.py:1712: UserWarning:
        Lapack (http://www.netlib.org/lapack/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [lapack]) or by setting
        the LAPACK environment variable.
      if getattr(self, '_calc_info_{}'.format(lapack))():
    /tmp/pip-build-env-hj24zg5i/overlay/lib/python3.8/site-packages/numpy/distutils/system_info.py:1712: UserWarning:
        Lapack (http://www.netlib.org/lapack/) sources not found.
        Directories to search for the sources can be specified in the
        numpy/distutils/site.cfg file (section [lapack_src]) or by setting
        the LAPACK_SRC environment variable.
      if getattr(self, '_calc_info_{}'.format(lapack))():
    Traceback (most recent call last):
      File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
        main()
      File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
        json_out['return_val'] = hook(**hook_input['kwargs'])
      File "/usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel
        return hook(metadata_directory, config_settings)
      File "/tmp/pip-build-env-hj24zg5i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 161, in prepare_metadata_for_build_wheel
        self.run_setup()
      File "/tmp/pip-build-env-hj24zg5i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 253, in run_setup
        super(_BuildMetaLegacyBackend,
      File "/tmp/pip-build-env-hj24zg5i/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 145, in run_setup
        exec(compile(code, __file__, 'exec'), locals())
      File "setup.py", line 540, in <module>
        setup_package()
      File "setup.py", line 536, in setup_package
        setup(**metadata)
      File "/tmp/pip-build-env-hj24zg5i/overlay/lib/python3.8/site-packages/numpy/distutils/core.py", line 137, in setup
        config = configuration()
      File "setup.py", line 435, in configuration
        raise NotFoundError(msg)
    numpy.distutils.system_info.NotFoundError: No lapack/blas resources found.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpx_3dsvzc Check the logs for full command output.
WARNING: You are using pip version 20.3.3; however, version 21.0.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
ERROR: Service 'photonix' failed to build: The command '/bin/sh -c pip install --no-cache-dir -r requirements.txt' returned a non-zero code: 1
make: *** [Makefile:7: build] Error 1

@damianmoore
Copy link
Collaborator Author

damianmoore commented Feb 15, 2021

I have an image that's generally working. You can try it if you have an ARMv7 Raspberry Pi (such as my Pi2 Model B). It starts up, imports demo photos. The main downsides are:

  • It takes a few minutes to start up
  • It uses up more than 1GB RAM so required me to add a USB drive as swap partition
  • The location detection job seems to fail to start with ImportError: libfreetype.so.6: cannot open shared object file: No such file or directory.

I should be able to disable certain analysis jobs when memory is tight but allow then to be switched on again through the UI. Fixing the Freetype dependency should just be a case of adding libfreetype6 and libfreetype6-dev apt dependencies in the builder image.

Anyway this is the docker-compose.yml that works for me on my Pi2 Model B (using buildx cross-compiled Docker image on DockerHub):

version: '3'

services:
  postgres:
    container_name: photonix-postgres
    image: postgres:11.1-alpine
    environment:
      POSTGRES_DB: photonix
      POSTGRES_PASSWORD: password
    volumes:
      - ./data/db:/var/lib/postgresql/data

  redis:
    container_name: photonix-redis
    image: arm32v7/redis:3.2.12

  photonix:
    container_name: photonix
    image: damianmoore/photonix-multiarch:latest
    ports:
      - '8888:80'
    environment:
      DEMO: 1
      ENV: prd
      POSTGRES_HOST: postgres
      POSTGRES_DB: photonix
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      REDIS_HOST: redis
      ALLOWED_HOSTS: '*'
    volumes:
      - ./data/photos:/data/photos
      - ./data/raw-photos-processed:/data/raw-photos-processed
      - ./data/cache:/data/cache
      - ./data/models:/data/models
    links:
      - postgres
      - redis

@Felix-Franz
Copy link

I tested it on the Raspberry pi 4 and it worked just fine, besides the import.
But I'll get another error (I'm not really sure if this is because of the armhf image...)

photonix_1  | postgres [172.26.0.3] 5432 (postgresql) open
photonix_1  | Postgres is up
photonix_1  | Running migrations
photonix_1  | Operations to perform:
photonix_1  |   Apply all migrations: accounts
photonix_1  | Running migrations:
photonix_1  |   No migrations to apply.
photonix_1  | Operations to perform:
photonix_1  |   Apply all migrations: accounts, admin, auth, contenttypes, photos, refresh_token, sessions
photonix_1  | Running migrations:
photonix_1  |   No migrations to apply.
photonix_1  | Scanning for new photos
photonix_1  | Searching path for changes /data/photos/
photonix_1  | Traceback (most recent call last):
photonix_1  |   File "/srv/photonix/manage.py", line 22, in <module>
photonix_1  |     execute_from_command_line(sys.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
photonix_1  |     utility.execute()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
photonix_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
photonix_1  |     self.execute(*args, **cmd_options)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
photonix_1  |     output = self.handle(*args, **options)
photonix_1  |   File "/srv/photonix/photos/management/commands/rescan_photos.py", line 26, in handle
photonix_1  |     self.rescan_photos(options['paths'])
photonix_1  |   File "/srv/photonix/photos/management/commands/rescan_photos.py", line 21, in rescan_photos
photonix_1  |     rescan_photo_libraries(paths)
photonix_1  |   File "/srv/photonix/photos/utils/organise.py", line 181, in rescan_photo_libraries
photonix_1  |     library_path.rescan()
photonix_1  |   File "/srv/photonix/photos/models.py", line 68, in rescan
photonix_1  |     import_photos_in_place(self)
photonix_1  |   File "/srv/photonix/photos/utils/organise.py", line 165, in import_photos_in_place
photonix_1  |     modified = record_photo(filepath, library_path.library)
photonix_1  |   File "/srv/photonix/photos/utils/db.py", line 44, in record_photo
photonix_1  |     camera_model = camera_model.replace(camera_make, '').strip()
photonix_1  | TypeError: replace() argument 1 must be str, not None
photonix_1  | Resetting Redis lock

@damianmoore
Copy link
Collaborator Author

damianmoore commented Feb 21, 2021

Thanks for the update @Felix-Franz. I actually just got a Raspberry Pi 4 myself and yesterday I confirmed that the armhf/ARMv7 32-bit image works fine on it. For extra performance we should get the ARMv8 64 bit version working but the 32 bit version imports and runs the demo gallery.

I think you have discovered a separate bug in Photonix though. You must have a photo that has 'Camera Model Name' in it's metadata but no 'Make'. The import code assumes that there must be a camera make if there's a camera model. I'll create a bug ticket for that. For now maybe you can try some different test images.

@darrepac
Copy link

I have used the docker-compose for Pi.
Indeed this time it works at least in the terminal: it is importing my 250GB photos...but I have nothing on localhost:8888, just an error

@damianmoore
Copy link
Collaborator Author

Hi @darrepac. Could it be a networking or firewall problem? Are you using a browser on the Raspberry Pi or across the network? If over a network then the URL won't be localhost but the IP/hostname of the Raspberry PI. Sorry if this is obvious - just trying to eliminate any simple fixes. If possible can you run this on the Pi itself?:

curl -i http://localhost:8888/

@darrepac
Copy link

I think my issue is on the performance side.... too much things running, too much photo to crawl... will try to step down

@damianmoore
Copy link
Collaborator Author

@darrepac OK, sounds possible. With the DEMO: 1 environment variable set in the docker-compose.yml above you should get the same small number of photos as is on https://demo.photonix.org/ which might be good to compare with. If all looks good with that then try with some batches of your own photos.

@darrepac
Copy link

I started again with only the demo files... took quite some time to have something on the web side and got quite some errors in the terminal. Normal?

photonix | utility.execute()
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 395, in execute
photonix | self.fetch_command(subcommand).run_from_argv(self.argv)
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 244, in fetch_command
photonix | klass = load_command_class(app_name, subcommand)
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 37, in load_command_class
photonix | module = import_module('%s.management.commands.%s' % (app_name, name))
photonix | File "/usr/local/lib/python3.8/importlib/init.py", line 127, in import_module
photonix | return _bootstrap._gcd_import(name[level:], package, level)
photonix | File "", line 1014, in _gcd_import
photonix | File "", line 991, in _find_and_load
photonix | File "", line 975, in _find_and_load_unlocked
photonix | File "", line 671, in _load_unlocked
photonix | File "", line 783, in exec_module
photonix | File "", line 219, in _call_with_frames_removed
photonix | File "/srv/photonix/photos/management/commands/classification_location_processor.py", line 3, in
photonix | from photonix.classifiers.location import LocationModel, run_on_photo
photonix | File "/srv/photonix/classifiers/location/init.py", line 1, in
photonix | from .model import LocationModel, run_on_photo
photonix | File "/srv/photonix/classifiers/location/model.py", line 6, in
photonix | import matplotlib.path as mpltPath
photonix | File "/usr/local/lib/python3.8/site-packages/matplotlib/init.py", line 205, in
photonix | _check_versions()
photonix | File "/usr/local/lib/python3.8/site-packages/matplotlib/init.py", line 190, in _check_versions
photonix | from . import ft2font
photonix | ImportError: numpy.core.multiarray failed to import
photonix | 2021-02-23 18:32:45,062 INFO exited: classification_location_processor (exit status 1; not expected)
photonix | 2021-02-23 18:32:48,120 INFO spawned: 'classification_location_processor' with pid 208
photonix | RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
photonix | Traceback (most recent call last):
photonix | File "/srv/photonix/manage.py", line 22, in
photonix | execute_from_command_line(sys.argv)
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 401, in execute_from_command_line
photonix | utility.execute()
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 395, in execute
photonix | self.fetch_command(subcommand).run_from_argv(self.argv)
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 244, in fetch_command
photonix | klass = load_command_class(app_name, subcommand)
photonix | File "/usr/local/lib/python3.8/site-packages/django/core/management/init.py", line 37, in load_command_class
photonix | module = import_module('%s.management.commands.%s' % (app_name, name))
photonix | File "/usr/local/lib/python3.8/importlib/init.py", line 127, in import_module
photonix | return _bootstrap._gcd_import(name[level:], package, level)
photonix | File "", line 1014, in _gcd_import
photonix | File "", line 991, in _find_and_load
photonix | File "", line 975, in _find_and_load_unlocked
photonix | File "", line 671, in _load_unlocked
photonix | File "", line 783, in exec_module
photonix | File "", line 219, in _call_with_frames_removed
photonix | File "/srv/photonix/photos/management/commands/classification_location_processor.py", line 3, in
photonix | from photonix.classifiers.location import LocationModel, run_on_photo
photonix | File "/srv/photonix/classifiers/location/init.py", line 1, in
photonix | from .model import LocationModel, run_on_photo
photonix | File "/srv/photonix/classifiers/location/model.py", line 6, in
photonix | import matplotlib.path as mpltPath
photonix | File "/usr/local/lib/python3.8/site-packages/matplotlib/init.py", line 205, in
photonix | _check_versions()
photonix | File "/usr/local/lib/python3.8/site-packages/matplotlib/init.py", line 190, in _check_versions
photonix | from . import ft2font
photonix | ImportError: numpy.core.multiarray failed to import
photonix | 2021-02-23 18:33:06,459 INFO exited: classification_location_processor (exit status 1; not expected)
photonix | 2021-02-23 18:33:07,463 INFO gave up: classification_location_processor entered FATAL state, too many start retries too quickly
photonix | Traceback (most recent call last):
photonix | File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix | executor(resolve, reject)
photonix | File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix | return resolve(f(*args, **kwargs))
photonix | File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix | return next(*args, **kwargs)
photonix | File "/srv/photonix/accounts/schema.py", line 116, in resolve_after_signup
photonix | if user.has_configured_image_analysis:
photonix | File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 225, in inner
photonix | return func(self._wrapped, *args)
photonix | graphql.error.located_error.GraphQLLocatedError: 'AnonymousUser' object has no attribute 'has_configured_image_analysis'
photonix |
photonix | 192.168.0.90 - - [23/Feb/2021:18:36:49 +0000] "POST /graphql HTTP/1.1" 200 146 "http://192.168.0.61:8888/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"
photonix | 192.168.0.90 - - [23/Feb/2021:18:36:49 +0000] "POST /graphql HTTP/1.1" 200 185 "http://192.168.0.61:8888/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"

@damianmoore
Copy link
Collaborator Author

Hi @darrepac thanks for the update. That is about what I would expect. The classification_location_processor is known to be broken on ARM and is the last piece of the puzzle I think, just need to get matplotlib installed to work with this version of numpy. I think the GraphQL error just shows until the user is properly logged in. Do you get photos displaying correctly and analysed (apart from location)?

@darrepac
Copy link

photos seems to display slowly (get 2 for the moment)...

@damianmoore
Copy link
Collaborator Author

Which Raspberry Pi version are you running @darrepac?

@darrepac
Copy link

Raspberry 3B

@damianmoore
Copy link
Collaborator Author

@darrepac Would be interesting to know if it's pegged at 100% CPU or if RAM is full or if disk IO is the bottleneck. I find that which SD card I use affects things drastically. You can create a swap file on disk if you are out of RAM.

@Felix-Franz
Copy link

I get a similar error as @darrepac.
In my case, the CPU and RAM were rather lightly used.
Photonix is running on a Raspberry Pi 4B (8GB) with Raspberry Pi OS (64 bit).
Because of the error no pictures are imported.

photonix_1  | RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
photonix_1  | Traceback (most recent call last):
photonix_1  |   File "/srv/photonix/manage.py", line 22, in <module>
photonix_1  |     execute_from_command_line(sys.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
photonix_1  |     utility.execute()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
photonix_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 244, in fetch_command
photonix_1  |     klass = load_command_class(app_name, subcommand)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 37, in load_command_class
photonix_1  |     module = import_module('%s.management.commands.%s' % (app_name, name))
photonix_1  |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
photonix_1  |     return _bootstrap._gcd_import(name[level:], package, level)
photonix_1  |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
photonix_1  |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
photonix_1  |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
photonix_1  |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
photonix_1  |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
photonix_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
photonix_1  |   File "/srv/photonix/photos/management/commands/classification_location_processor.py", line 3, in <module>
photonix_1  |     from photonix.classifiers.location import LocationModel, run_on_photo
photonix_1  |   File "/srv/photonix/classifiers/location/__init__.py", line 1, in <module>
photonix_1  |     from .model import LocationModel, run_on_photo
photonix_1  |   File "/srv/photonix/classifiers/location/model.py", line 7, in <module>
photonix_1  |     import matplotlib.path as mpltPath
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 205, in <module>
photonix_1  |     _check_versions()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 190, in _check_versions
photonix_1  |     from . import ft2font
photonix_1  | ImportError: numpy.core.multiarray failed to import
photonix_1  | 2021-04-24 15:00:43,843 INFO exited: classification_location_processor (exit status 1; not expected)
photonix_1  | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.summary API due to missing TensorBoard installation.
photonix_1  | WARNING:root:Limited tf.summary API due to missing TensorBoard installation.
photonix_1  | 2021-04-24 15:00:46,784 INFO spawned: 'classification_location_processor' with pid 82
photonix_1  | RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
photonix_1  | Traceback (most recent call last):
photonix_1  |   File "/srv/photonix/manage.py", line 22, in <module>
photonix_1  |     execute_from_command_line(sys.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
photonix_1  |     utility.execute()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
photonix_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 244, in fetch_command
photonix_1  |     klass = load_command_class(app_name, subcommand)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 37, in load_command_class
photonix_1  |     module = import_module('%s.management.commands.%s' % (app_name, name))
photonix_1  |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
photonix_1  |     return _bootstrap._gcd_import(name[level:], package, level)
photonix_1  |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
photonix_1  |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
photonix_1  |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
photonix_1  |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
photonix_1  |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
photonix_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
photonix_1  |   File "/srv/photonix/photos/management/commands/classification_location_processor.py", line 3, in <module>
photonix_1  |     from photonix.classifiers.location import LocationModel, run_on_photo
photonix_1  |   File "/srv/photonix/classifiers/location/__init__.py", line 1, in <module>
photonix_1  |     from .model import LocationModel, run_on_photo
photonix_1  |   File "/srv/photonix/classifiers/location/model.py", line 7, in <module>
photonix_1  |     import matplotlib.path as mpltPath
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 205, in <module>
photonix_1  |     _check_versions()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 190, in _check_versions
photonix_1  |     from . import ft2font
photonix_1  | ImportError: numpy.core.multiarray failed to import
photonix_1  | 2021-04-24 15:00:58,863 INFO exited: classification_location_processor (exit status 1; not expected)
photonix_1  | 2021-04-24 15:01:01,871 INFO spawned: 'classification_location_processor' with pid 85
photonix_1  | RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
photonix_1  | Traceback (most recent call last):
photonix_1  |   File "/srv/photonix/manage.py", line 22, in <module>
photonix_1  |     execute_from_command_line(sys.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
photonix_1  |     utility.execute()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
photonix_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 244, in fetch_command
photonix_1  |     klass = load_command_class(app_name, subcommand)
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 37, in load_command_class
photonix_1  |     module = import_module('%s.management.commands.%s' % (app_name, name))
photonix_1  |   File "/usr/local/lib/python3.8/importlib/__init__.py", line 127, in import_module
photonix_1  |     return _bootstrap._gcd_import(name[level:], package, level)
photonix_1  |   File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
photonix_1  |   File "<frozen importlib._bootstrap>", line 991, in _find_and_load
photonix_1  |   File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
photonix_1  |   File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
photonix_1  |   File "<frozen importlib._bootstrap_external>", line 783, in exec_module
photonix_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
photonix_1  |   File "/srv/photonix/photos/management/commands/classification_location_processor.py", line 3, in <module>
photonix_1  |     from photonix.classifiers.location import LocationModel, run_on_photo
photonix_1  |   File "/srv/photonix/classifiers/location/__init__.py", line 1, in <module>
photonix_1  |     from .model import LocationModel, run_on_photo
photonix_1  |   File "/srv/photonix/classifiers/location/model.py", line 7, in <module>
photonix_1  |     import matplotlib.path as mpltPath
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 205, in <module>
photonix_1  |     _check_versions()
photonix_1  |   File "/usr/local/lib/python3.8/site-packages/matplotlib/__init__.py", line 190, in _check_versions
photonix_1  |     from . import ft2font
photonix_1  | ImportError: numpy.core.multiarray failed to import

@damianmoore
Copy link
Collaborator Author

damianmoore commented Apr 25, 2021

Thanks for the comment @Felix-Franz. I am at a similar point from my side. This I think is the key error:

RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd

I found out that pip compiles each package it needs to in an isolated environment which means Matplotlib gets built against a different version of Numpy to that in our requirements.txt file. It gets the latest Numpy version but we need a slightly older one as required by Tensorflow. I think this is the most hopeful source of information for going forwards: pypa/pip#9542

So far I've tried the suggestion of pip --no-build-isolation and adding a pyproject.toml but no luck yet.

@damianmoore
Copy link
Collaborator Author

damianmoore commented May 2, 2021

This issue is now complete as of 08fb9ba (arm32v7 and arm64v8). Builds are also automated through GitHub Actions whenever a new version is tagged and pushed. I've also moved to a new Docker Hub organisation at https://hub.docker.com/r/photonixapp/photonix/ . @jensbrak, @Felix-Franz, @darrepac it would be good if you could have a little test (with a small number of photos to start with).

@jensbrak
Copy link

jensbrak commented May 3, 2021

@damianmoore - This is exciting news! I'll have a go at it as soon as I can, for sure! Great work!

@Felix-Franz
Copy link

Felix-Franz commented May 4, 2021

@damianmoore it just worked find with a smaller number of photos, so I tried a larger number.
It really works well, but also consumes a lot of resources for image processing 😄
image
Raspberry Pi 4 model B (8GB RAM)

@damianmoore
Copy link
Collaborator Author

damianmoore commented May 4, 2021

Thanks @Felix-Franz for giving it a go and reporting back. I'm merging another feature at the moment to give control over which analysers are running which should be useful for scaling down all that CPU usage from the UI.

@jensbrak
Copy link

jensbrak commented May 6, 2021

Well, I almost made it. Not as successful as @Felix-Franz though.
Got it to install and run but only as far as the onboarding process goes. After that, importing photos does not seem to work. Photonix reacts when putting an image in the appropriate folder but does not seem to process it (ONE image shouldn't take too much time right?).

photonix    | 2021-05-06 13:13:55.798907: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:196] None of the MLIR optimization passes are enabled (registered 0 passes)
photonix    | 2021-05-06 13:13:55.834122: W tensorflow/core/platform/profile_utils/cpu_utils.cc:116] Failed to find bogomips or clock in /proc/cpuinfo; cannot determine CPU frequency
photonix    | 2021-05-06 13:14:00.664992: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:196] None of the MLIR optimization passes are enabled (registered 0 passes)
photonix    | 2021-05-06 13:14:01.825225: W tensorflow/core/platform/profile_utils/cpu_utils.cc:116] Failed to find bogomips or clock in /proc/cpuinfo; cannot determine CPU frequency

Which leads me back to some messages I briefly noted when launching Photonix (which worked "to the end" now, thanks to all efforts made by you @damianmoore . Some snippets from installation messages:

:~/bin/photonix $ docker-compose up
Pulling redis (redis:6.2.2)...
6.2.2: Pulling from library/redis
8c6bea184b33: Pull complete
5e551b7acd02: Pull complete
b64f82f93aab: Pull complete
3d17c5b4c3b9: Pull complete
59d4f5aea2e0: Pull complete
f419f6933100: Pull complete
Digest: sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396
Status: Downloaded newer image for redis:6.2.2
Pulling photonix (photonixapp/photonix:latest)...
latest: Pulling from photonixapp/photonix
8c6bea184b33: Already exists
8643010f86fd: Pull complete
5dcde71c807d: Pull complete
d91d47f8bb90: Pull complete
d48f9c80ef44: Pull complete
a4dc66b54b40: Pull complete
69d7d1685aec: Pull complete
22dd01dbd69c: Pull complete
8230d14eca67: Pull complete
c4f16754518f: Pull complete
b97235f99c24: Pull complete
d9990f20a770: Pull complete
d6e6bbffc658: Pull complete
41c57e24034f: Pull complete
617fd6fe3d0b: Pull complete
95e81c017ef6: Pull complete
Digest: sha256:79cd884210cf6c1d42be848fdd9e6e4d1d63fec3fea70317412c5726020ed21a
Status: Downloaded newer image for photonixapp/photonix:latest
Recreating photonix-postgres ... done
Recreating photonix-redis    ... done
Recreating photonix          ... done

. . . .

photonix    | Starting Gunicorn server as in prd mode
photonix    | [2021-05-06 12:53:12 +0000] [63] [INFO] Starting gunicorn 20.0.4
photonix    | 2021-05-06 12:53:12,092 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
photonix    | [2021-05-06 12:53:12 +0000] [63] [INFO] Listening at: http://0.0.0.0:8000 (63)
photonix    | [2021-05-06 12:53:12 +0000] [63] [INFO] Using worker: sync
photonix    | 2021-05-06 12:53:12,099 INFO spawned: 'storybook' with pid 68
photonix    | 2021-05-06 12:53:12,105 INFO spawned: 'webpack' with pid 70
photonix    | [2021-05-06 12:53:12 +0000] [69] [INFO] Booting worker with pid: 69
photonix    | 2021-05-06 12:53:12,123 INFO exited: webpack (exit status 0; not expected)
photonix    | 2021-05-06 12:53:12,137 INFO exited: storybook (exit status 0; not expected)
photonix    | 2021-05-06 12:53:14,149 INFO spawned: 'storybook' with pid 72
photonix    | 2021-05-06 12:53:14,160 INFO spawned: 'webpack' with pid 73
photonix    | 2021-05-06 12:53:14,174 INFO exited: storybook (exit status 0; not expected)
photonix    | 2021-05-06 12:53:14,183 INFO exited: webpack (exit status 0; not expected)
photonix    | 2021-05-06 12:53:16,188 INFO success: app_server entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)
photonix    | 2021-05-06 12:53:17,197 INFO spawned: 'storybook' with pid 75
photonix    | 2021-05-06 12:53:17,231 INFO spawned: 'webpack' with pid 76
photonix    | 2021-05-06 12:53:17,233 INFO exited: storybook (exit status 0; not expected)
photonix    | 2021-05-06 12:53:17,244 INFO gave up: storybook entered FATAL state, too many start retries too quickly
photonix    | 2021-05-06 12:53:17,244 INFO exited: webpack (exit status 0; not expected)
photonix    | 2021-05-06 12:53:18,246 INFO gave up: webpack entered FATAL state, too many start retries too quickly
photonix    | 2021-05-06 12:53:23,255 INFO success: watch_photos entered RUNNING state, process has stayed up for > than 12 seconds (startsecs)
photonix    | 2021-05-06 12:53:25,259 INFO success: raw_scheduler entered RUNNING state, process has stayed up for > than 14 seconds (startsecs)
photonix    | 2021-05-06 12:53:26,261 INFO success: raw_processor entered RUNNING state, process has stayed up for > than 15 seconds (startsecs)
photonix    | 2021-05-06 12:53:27,264 INFO success: thumbnail_scheduler entered RUNNING state, process has stayed up for > than 16 seconds (startsecs)
photonix    | 2021-05-06 12:53:28,266 INFO success: classification_scheduler entered RUNNING state, process has stayed up for > than 17 seconds (startsecs )
photonix    | 2021-05-06 12:53:29,268 INFO success: classification_color_processor entered RUNNING state, process has stayed up for > than 18 seconds (sta rtsecs)
photonix    | 2021-05-06 12:53:30,270 INFO success: classification_location_processor entered RUNNING state, process has stayed up for > than 19 seconds ( startsecs)
photonix    | 2021-05-06 12:53:31,273 INFO success: classification_style_processor entered RUNNING state, process has stayed up for > than 20 seconds (sta rtsecs)
photonix    | 2021-05-06 12:53:32,276 INFO success: classification_object_processor entered RUNNING state, process has stayed up for > than 21 seconds (st artsecs)
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.summary API due to missing TensorBoard installation.
photonix    | 2021-05-06 12:54:21,781 INFO success: rescan_photos_periodically entered RUNNING state, process has stayed up for > than 70 seconds (startse cs)
photonix-postgres | 2021-05-06 12:55:44.120 UTC [65] LOG:  using stale statistics instead of current ones because stats collector is not responding
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 169 "http://192.168.2.4:8888/login" "Mozilla/5.0 (Windows NT 10. 0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/srv/photonix/accounts/schema.py", line 116, in resolve_after_signup
photonix    |     if user.has_configured_image_analysis:
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 225, in inner
photonix    |     return func(self._wrapped, *args)
photonix    | graphql.error.located_error.GraphQLLocatedError: 'AnonymousUser' object has no attribute 'has_configured_image_analysis'
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 185 "http://192.168.2.4:8888/login" "Mozilla/5.0 (Windows NT 10. 0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/srv/photonix/photos/schema.py", line 219, in resolve_all_libraries
photonix    |     return Library.objects.filter(users__user=user)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
photonix    |     return getattr(self.get_queryset(), name)(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 904, in filter
photonix    |     return self._filter_or_exclude(False, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 923, in _filter_or_exclude
photonix    |     clone.query.add_q(Q(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1351, in add_q
photonix    |     clause, _ = self._add_q(q_object, self.used_aliases)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1378, in _add_q
photonix    |     child_clause, needed_inner = self.build_filter(
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1285, in build_filter
photonix    |     self.check_related_objects(join_info.final_field, value, join_info.opts)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1125, in check_related_objects
photonix    |     for v in value:
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 225, in inner
photonix    |     return func(self._wrapped, *args)
photonix    | graphql.error.located_error.GraphQLLocatedError: 'AnonymousUser' object is not iterable
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 154 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/srv/photonix/accounts/schema.py", line 77, in resolve_profile
photonix    |     raise Exception('Not logged in')
photonix    | graphql.error.located_error.GraphQLLocatedError: Not logged in
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 119 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphene_django/fields.py", line 171, in connection_resolver
photonix    |     iterable = resolver(root, info, **args)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 30, in wrapper
photonix    |     return func(info.context, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 42, in wrapper
photonix    |     raise exc
photonix    | graphql.error.located_error.GraphQLLocatedError: You do not have permission to perform this action
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 159 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphene_django/fields.py", line 171, in connection_resolver
photonix    |     iterable = resolver(root, info, **args)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 30, in wrapper
photonix    |     return func(info.context, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 42, in wrapper
photonix    |     raise exc
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphene_django/fields.py", line 171, in connection_resolver
photonix    |     iterable = resolver(root, info, **args)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 30, in wrapper
photonix    |     return func(info.context, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 42, in wrapper
photonix    |     raise exc
photonix    | graphql.error.located_error.GraphQLLocatedError: You do not have permission to perform this action
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 159 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 169 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"

(And then Photonix continued with the onboarding process)

Please note that I have NOT tried to do any kind of troubleshooting, I just went through the photonix instalation instructions after checking that I had docker and docker-compose properly installed. So no need to go trying to find issues in Photonix based on this post - It's just me reporting back my first run of the new version. I will have to look at it myself, but must stop now for other activites. I do have a couple of notes just by looking at the logs:

  • I already have nginx running on my Pi, but that is an issue later on when I want to setup Photonix to be accessable from the outside.
  • TensorBoard seems to be missing, not sure why this is so.
  • I tried this on an RPi4 with 4Gb memory headless only (with web access from PC within same network). I do have an RPi4 8Gb with desktop to try it on too, later on - but it's the 4Gb I run as server atm.

@jensbrak
Copy link

jensbrak commented May 6, 2021

Well, now I've experimented some more. It works mostly, so no problem with the overall functionality.
Tried to add more images than one and tried with elevation. Most images get processed but not all. Some gets wrong thumbnails and most wrong classification. Latter might be more of a tensorflow thing.

Again, great work and thanks for the effort. Photonix seems awesome now that I have it running - finally! I have to dig into the classification parts more though. That's where I have my main interest tbh.

@damianmoore
Copy link
Collaborator Author

OK @jensbrak, thanks for testing. Good to know that it's generally working. Tensorflow failures (or any classification failures shouldn't affect thumbnails so I'm a bit confused about that.

@jensbrak
Copy link

jensbrak commented May 9, 2021

@damianmoore Nah, don't believe classification/tensorflow issues are related to thumbnail issues here. More likely it's due to me interrupting execution of docker at a bad timing or something, when it comes to the thumbnails. Classification works in general (the errors noted may or may not be relevant, haven't got a clue yet) but gives some hillarious results depending on what kind of pictures I feed it.

TL;DR: Photonix works 'just fine' on RPi4 now. Some notable errors/warnings when installing and launching that might or might not impact functionality. Some weird thumbnail issue of oncertain origin and some classification issues likely connected to the training data.

@gomme600
Copy link

Well, I almost made it. Not as successful as @Felix-Franz though.
Got it to install and run but only as far as the onboarding process goes. After that, importing photos does not seem to work. Photonix reacts when putting an image in the appropriate folder but does not seem to process it (ONE image shouldn't take too much time right?).

photonix    | 2021-05-06 13:13:55.798907: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:196] None of the MLIR optimization passes are enabled (registered 0 passes)
photonix    | 2021-05-06 13:13:55.834122: W tensorflow/core/platform/profile_utils/cpu_utils.cc:116] Failed to find bogomips or clock in /proc/cpuinfo; cannot determine CPU frequency
photonix    | 2021-05-06 13:14:00.664992: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:196] None of the MLIR optimization passes are enabled (registered 0 passes)
photonix    | 2021-05-06 13:14:01.825225: W tensorflow/core/platform/profile_utils/cpu_utils.cc:116] Failed to find bogomips or clock in /proc/cpuinfo; cannot determine CPU frequency

Which leads me back to some messages I briefly noted when launching Photonix (which worked "to the end" now, thanks to all efforts made by you @damianmoore . Some snippets from installation messages:

:~/bin/photonix $ docker-compose up
Pulling redis (redis:6.2.2)...
6.2.2: Pulling from library/redis
8c6bea184b33: Pull complete
5e551b7acd02: Pull complete
b64f82f93aab: Pull complete
3d17c5b4c3b9: Pull complete
59d4f5aea2e0: Pull complete
f419f6933100: Pull complete
Digest: sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396
Status: Downloaded newer image for redis:6.2.2
Pulling photonix (photonixapp/photonix:latest)...
latest: Pulling from photonixapp/photonix
8c6bea184b33: Already exists
8643010f86fd: Pull complete
5dcde71c807d: Pull complete
d91d47f8bb90: Pull complete
d48f9c80ef44: Pull complete
a4dc66b54b40: Pull complete
69d7d1685aec: Pull complete
22dd01dbd69c: Pull complete
8230d14eca67: Pull complete
c4f16754518f: Pull complete
b97235f99c24: Pull complete
d9990f20a770: Pull complete
d6e6bbffc658: Pull complete
41c57e24034f: Pull complete
617fd6fe3d0b: Pull complete
95e81c017ef6: Pull complete
Digest: sha256:79cd884210cf6c1d42be848fdd9e6e4d1d63fec3fea70317412c5726020ed21a
Status: Downloaded newer image for photonixapp/photonix:latest
Recreating photonix-postgres ... done
Recreating photonix-redis    ... done
Recreating photonix          ... done

. . . .

photonix    | Starting Gunicorn server as in prd mode
photonix    | [2021-05-06 12:53:12 +0000] [63] [INFO] Starting gunicorn 20.0.4
photonix    | 2021-05-06 12:53:12,092 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
photonix    | [2021-05-06 12:53:12 +0000] [63] [INFO] Listening at: http://0.0.0.0:8000 (63)
photonix    | [2021-05-06 12:53:12 +0000] [63] [INFO] Using worker: sync
photonix    | 2021-05-06 12:53:12,099 INFO spawned: 'storybook' with pid 68
photonix    | 2021-05-06 12:53:12,105 INFO spawned: 'webpack' with pid 70
photonix    | [2021-05-06 12:53:12 +0000] [69] [INFO] Booting worker with pid: 69
photonix    | 2021-05-06 12:53:12,123 INFO exited: webpack (exit status 0; not expected)
photonix    | 2021-05-06 12:53:12,137 INFO exited: storybook (exit status 0; not expected)
photonix    | 2021-05-06 12:53:14,149 INFO spawned: 'storybook' with pid 72
photonix    | 2021-05-06 12:53:14,160 INFO spawned: 'webpack' with pid 73
photonix    | 2021-05-06 12:53:14,174 INFO exited: storybook (exit status 0; not expected)
photonix    | 2021-05-06 12:53:14,183 INFO exited: webpack (exit status 0; not expected)
photonix    | 2021-05-06 12:53:16,188 INFO success: app_server entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)
photonix    | 2021-05-06 12:53:17,197 INFO spawned: 'storybook' with pid 75
photonix    | 2021-05-06 12:53:17,231 INFO spawned: 'webpack' with pid 76
photonix    | 2021-05-06 12:53:17,233 INFO exited: storybook (exit status 0; not expected)
photonix    | 2021-05-06 12:53:17,244 INFO gave up: storybook entered FATAL state, too many start retries too quickly
photonix    | 2021-05-06 12:53:17,244 INFO exited: webpack (exit status 0; not expected)
photonix    | 2021-05-06 12:53:18,246 INFO gave up: webpack entered FATAL state, too many start retries too quickly
photonix    | 2021-05-06 12:53:23,255 INFO success: watch_photos entered RUNNING state, process has stayed up for > than 12 seconds (startsecs)
photonix    | 2021-05-06 12:53:25,259 INFO success: raw_scheduler entered RUNNING state, process has stayed up for > than 14 seconds (startsecs)
photonix    | 2021-05-06 12:53:26,261 INFO success: raw_processor entered RUNNING state, process has stayed up for > than 15 seconds (startsecs)
photonix    | 2021-05-06 12:53:27,264 INFO success: thumbnail_scheduler entered RUNNING state, process has stayed up for > than 16 seconds (startsecs)
photonix    | 2021-05-06 12:53:28,266 INFO success: classification_scheduler entered RUNNING state, process has stayed up for > than 17 seconds (startsecs )
photonix    | 2021-05-06 12:53:29,268 INFO success: classification_color_processor entered RUNNING state, process has stayed up for > than 18 seconds (sta rtsecs)
photonix    | 2021-05-06 12:53:30,270 INFO success: classification_location_processor entered RUNNING state, process has stayed up for > than 19 seconds ( startsecs)
photonix    | 2021-05-06 12:53:31,273 INFO success: classification_style_processor entered RUNNING state, process has stayed up for > than 20 seconds (sta rtsecs)
photonix    | 2021-05-06 12:53:32,276 INFO success: classification_object_processor entered RUNNING state, process has stayed up for > than 21 seconds (st artsecs)
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.compat.v2.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.summary API due to missing TensorBoard installation.
photonix    | WARNING:root:Limited tf.summary API due to missing TensorBoard installation.
photonix    | 2021-05-06 12:54:21,781 INFO success: rescan_photos_periodically entered RUNNING state, process has stayed up for > than 70 seconds (startse cs)
photonix-postgres | 2021-05-06 12:55:44.120 UTC [65] LOG:  using stale statistics instead of current ones because stats collector is not responding
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 169 "http://192.168.2.4:8888/login" "Mozilla/5.0 (Windows NT 10. 0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/srv/photonix/accounts/schema.py", line 116, in resolve_after_signup
photonix    |     if user.has_configured_image_analysis:
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 225, in inner
photonix    |     return func(self._wrapped, *args)
photonix    | graphql.error.located_error.GraphQLLocatedError: 'AnonymousUser' object has no attribute 'has_configured_image_analysis'
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 185 "http://192.168.2.4:8888/login" "Mozilla/5.0 (Windows NT 10. 0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/srv/photonix/photos/schema.py", line 219, in resolve_all_libraries
photonix    |     return Library.objects.filter(users__user=user)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
photonix    |     return getattr(self.get_queryset(), name)(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 904, in filter
photonix    |     return self._filter_or_exclude(False, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 923, in _filter_or_exclude
photonix    |     clone.query.add_q(Q(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1351, in add_q
photonix    |     clause, _ = self._add_q(q_object, self.used_aliases)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1378, in _add_q
photonix    |     child_clause, needed_inner = self.build_filter(
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1285, in build_filter
photonix    |     self.check_related_objects(join_info.final_field, value, join_info.opts)
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1125, in check_related_objects
photonix    |     for v in value:
photonix    |   File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 225, in inner
photonix    |     return func(self._wrapped, *args)
photonix    | graphql.error.located_error.GraphQLLocatedError: 'AnonymousUser' object is not iterable
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 154 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/srv/photonix/accounts/schema.py", line 77, in resolve_profile
photonix    |     raise Exception('Not logged in')
photonix    | graphql.error.located_error.GraphQLLocatedError: Not logged in
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 119 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphene_django/fields.py", line 171, in connection_resolver
photonix    |     iterable = resolver(root, info, **args)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 30, in wrapper
photonix    |     return func(info.context, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 42, in wrapper
photonix    |     raise exc
photonix    | graphql.error.located_error.GraphQLLocatedError: You do not have permission to perform this action
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 159 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | Traceback (most recent call last):
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphene_django/fields.py", line 171, in connection_resolver
photonix    |     iterable = resolver(root, info, **args)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 30, in wrapper
photonix    |     return func(info.context, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 42, in wrapper
photonix    |     raise exc
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 489, in _resolve_from_executor
photonix    |     executor(resolve, reject)
photonix    |   File "/usr/local/lib/python3.8/site-packages/promise/promise.py", line 756, in executor
photonix    |     return resolve(f(*args, **kwargs))
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql/execution/middleware.py", line 75, in make_it_promise
photonix    |     return next(*args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphene_django/fields.py", line 171, in connection_resolver
photonix    |     iterable = resolver(root, info, **args)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 30, in wrapper
photonix    |     return func(info.context, *args, **kwargs)
photonix    |   File "/usr/local/lib/python3.8/site-packages/graphql_jwt/decorators.py", line 42, in wrapper
photonix    |     raise exc
photonix    | graphql.error.located_error.GraphQLLocatedError: You do not have permission to perform this action
photonix    |
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 159 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
photonix    | 192.168.2.101 - - [06/May/2021:13:00:37 +0000] "POST /graphql HTTP/1.1" 200 169 "http://192.168.2.4:8888/onboarding" "Mozilla/5.0 (Windows N T 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"

(And then Photonix continued with the onboarding process)

Please note that I have NOT tried to do any kind of troubleshooting, I just went through the photonix instalation instructions after checking that I had docker and docker-compose properly installed. So no need to go trying to find issues in Photonix based on this post - It's just me reporting back my first run of the new version. I will have to look at it myself, but must stop now for other activites. I do have a couple of notes just by looking at the logs:

  • I already have nginx running on my Pi, but that is an issue later on when I want to setup Photonix to be accessable from the outside.
  • TensorBoard seems to be missing, not sure why this is so.
  • I tried this on an RPi4 with 4Gb memory headless only (with web access from PC within same network). I do have an RPi4 8Gb with desktop to try it on too, later on - but it's the 4Gb I run as server atm.

I am having the same error, photonix said during the installation that no photos were detected but they are in the /data/photos folder and visible in my container. Did you get it working in the end ?

@gomme600
Copy link

Ok, to follow up, I have about 5000 photos in the mounted directory. After about 10 minutes of completing the photonix installation my pi 4 8gb froze. I waited about 30 minutes and it came back to life and photonix was scanning. Both CPU and RAM are maxed out. So it seems that patience is key! Thanks for the great project here!

@gomme600
Copy link

Well it froze again unfortunatly. Seems that I am running out of RAM.

@gomme600
Copy link

Would there be a way to limit the number of workers so as to avoid eating up all of my RAM ?

@damianmoore
Copy link
Collaborator Author

Hi @gomme600, glad it's getting a bit further for you. I have some optimisation work I'm planning at the moment to make sure it doesn't run out of RAM. The analysers are set to only one worker each so can only really scale down to 'off'.

For now I would recommend going to settings in the top-right of the UI and turning off most of the analysers off to start with. Jobs will still be queued for photos that are imported so you can turn them on one-at-a-time once importing has completed.

Sorry it's a bit hacky on low memory machine's right now but not for much longer, hopefully.

@gomme600
Copy link

Thanks for the tips! Also, quick question. Whenever I turn on the option to watch the library for new photos it gets turned back off again, is that normal ?

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

No branches or pull requests

5 participants