FROM alpine as fonts RUN wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Iosevka.zip \ && mkdir iosevka \ && unzip -d iosevka Iosevka.zip \ && rm Iosevka.zip iosevka/Iosevka\ Term\ * \ && chown -R 1000:1000 iosevka FROM debian:testing RUN echo 'deb http://ftp-stud.hs-esslingen.de/pub/Mirrors/debian-multimedia/ testing main' > /etc/apt/sources.list.d/deb-multimedia.list \ && apt-get update -oAcquire::AllowInsecureRepositories=true \ && apt-get -y --allow-unauthenticated install deb-multimedia-keyring \ && apt-get update # Base build dependencies RUN apt-get -y install \ build-essential \ wget # Vapoursynth plugin build dependencies RUN apt-get -y install \ autoconf \ cargo \ git \ libfftw3-dev \ libtool \ meson \ vapoursynth-dev RUN cd /tmp \ && git clone --depth=1 --recursive https://git.kageru.moe/kageru/adaptivegrain \ && cd adaptivegrain \ && cargo build --release \ && cp target/release/libadaptivegrain_rs.so /usr/lib/x86_64-linux-gnu/vapoursynth/ \ && cd .. \ && rm -rf adaptivegrain \ && rm -rf ~/.cargo # required by hvf.Deblock_QED (required by fvf.AutoDeblock) RUN cd /tmp \ && git clone --depth=1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DCTFilter \ && cd VapourSynth-DCTFilter \ && ./autogen.sh \ && ./configure --libdir=/usr/lib/x86_64-linux-gnu/vapoursynth \ && make install \ && cd .. \ && rm -rf VapourSynth-DCTFilter RUN cd /tmp \ && git clone --depth=1 https://github.com/MonoS/VS-ContinuityFixer \ && cd VS-ContinuityFixer \ && sed -i \ -e 's/VapourSynth\.h/vapoursynth\/VapourSynth.h/' \ -e 's/VSHelper\.h/vapoursynth\/VSHelper.h/' \ continuity.cpp \ && g++ -shared -fPIC -O2 -msse2 -mfpmath=sse continuity.cpp -o continuity.so \ && cp continuity.so /usr/lib/x86_64-linux-gnu/vapoursynth/ \ && cd .. \ && rm -rf VS-ContinuityFixer # TODO: Remove when newer version is in deb-multimedia RUN cd /tmp \ && git clone --depth=1 https://github.com/Irrational-Encoding-Wizardry/vapoursynth-descale \ && cd vapoursynth-descale \ && meson build \ && ninja -C build \ && cp build/libdescale.so /usr/lib/x86_64-linux-gnu/vapoursynth/ \ && cd .. \ && rm -rf vapoursynth-descale # TODO: Remove when working version is in deb-multimedia (current one crashes # with symbol lookup error: # /usr/lib/x86_64-linux-gnu/vapoursynth/libdfttest.so: undefined symbol: # fftwf_make_planner_thread_safe COPY dfttest-dummy /tmp/ RUN cd /tmp/ \ && apt-get -y install equivs \ && equivs-build dfttest-dummy \ && dpkg -i vapoursynth-dfttest_7-dmo2_all.deb \ && apt-get purge -y equivs \ && apt-get autoremove --purge -y \ && rm dfttest-dummy vapoursynth-dfttest_7-dmo2_all.deb RUN cd /tmp \ && git clone --depth=1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest \ && cd VapourSynth-DFTTest \ && meson build --prefix /usr/local \ && ninja -C build \ && ninja -C build install \ && cd .. \ && rm -rf VapourSynth-DFTTest # TODO: Remove once debian has compatible libplacebo version RUN echo "deb-src" http://deb.debian.org/debian testing main >> /etc/apt/sources.list.d/src.list \ && apt-get update \ && apt-get -y build-dep libplacebo \ && cd /tmp/ \ && git clone --depth=1 https://code.videolan.org/videolan/libplacebo.git \ && cd libplacebo \ && meson build \ && ninja -C build \ && ninja -C build install \ && cd .. \ && rm -rf libplacebo \ && rm /etc/apt/sources.list.d/src.list RUN cd /tmp \ && git clone --depth=1 --recursive https://github.com/Lypheo/vs-placebo \ && cd vs-placebo \ && meson build \ && cd build \ && ninja \ && cp libvs_placebo.so /usr/lib/x86_64-linux-gnu/vapoursynth/ \ && cd /tmp/ \ && rm -rf vs-placebo # Runtime dependencies RUN apt-get -y install \ beignet-opencl-icd \ clinfo \ ffmpeg \ mkvtoolnix \ pocl-opencl-icd \ python3-opencv \ python3-pip \ qtwayland5 \ vapoursynth-* \ x264 \ x265 # ROCm (AMD Radeon OpenCL) # The gdb packages is necessary for opencl to work (why?) COPY rocm.gpg /etc/apt/trusted.gpg.d/ RUN echo 'deb http://repo.radeon.com/rocm/apt/debian/ xenial main' > /etc/apt/sources.list.d/rocm.list \ && apt-get update \ && apt-get -y install rocm-opencl rocm-gdb \ && rm /etc/OpenCL/vendors/amdocl64* \ && echo /opt/rocm-*/opencl/lib/libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd # models are at wrong location (whyever the package installs it there) RUN cp -r /usr/share/vapoursynth-waifu2x-models/ /usr/lib/x86_64-linux-gnu/vapoursynth/models/ RUN pip3 --no-cache-dir install \ tqdm \ yuuno 'pygments>=2.4.1' \ && yuuno jupyter install ENV PYTHONPATH=/data/functions/:/usr/local/lib/vapoursynth-scripts/ ARG CACHEBUST_SCRIPTS=1 RUN mkdir /usr/local/lib/vapoursynth-scripts/ \ && wget -nv -P /usr/local/lib/vapoursynth-scripts/ \ https://gist.github.com/4re/342624c9e1a144a696c6/raw/08df48752c70c66df4127f2791bbedbc1958da77/nnedi3_rpow2.py \ https://gist.github.com/YamashitaRen/020c497524e794779d9c/raw/2a20385e50804f8b24f2a2479e2c0f3c335d4853/edi_rpow2.py \ https://github.com/HomeOfVapourSynthEvolution/havsfunc/raw/master/havsfunc.py \ https://github.com/HomeOfVapourSynthEvolution/mvsfunc/raw/master/mvsfunc.py \ https://github.com/HomeOfVapourSynthEvolution/vsTAAmbk/raw/master/vsTAAmbk.py \ https://github.com/IFeelBloated/Oyster/raw/master/Oyster.py \ https://github.com/IFeelBloated/vapoursynth-mvtools-sf/raw/5dfa8756092daa7dcc635eef799c6964bd40c259/src/mvmulti.py \ https://github.com/Irrational-Encoding-Wizardry/fvsfunc/raw/master/fvsfunc.py \ https://github.com/Irrational-Encoding-Wizardry/kagefunc/raw/master/kagefunc.py \ https://github.com/WolframRhodium/muvsfunc/raw/master/Collections/muvsfunc_numpy.py \ https://github.com/WolframRhodium/muvsfunc/raw/master/muvsfunc.py \ https://github.com/dubhater/vapoursynth-adjust/raw/master/adjust.py \ https://github.com/theChaosCoder/lostfunc/raw/master/lostfunc.py \ && chmod 755 /usr/local/lib/vapoursynth-scripts/* # kinda dumb (vapoursynth gets built), but I do not know how to do this better RUN pip3 install -t /usr/local/lib/vapoursynth-scripts/ --no-cache-dir \ getnative \ vsutil \ && pip3 uninstall -y vapoursynth RUN adduser --disabled-password --gecos '' vapoursynth USER vapoursynth COPY --from=fonts /iosevka /home/vapoursynth/.fonts