diff --git a/Dockerfile b/Dockerfile index 0e69375..3cbdf9a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,93 @@ -from ghcr.io/linuxserver/plex:latest +ARG OUTPUT=/output +FROM alpine:edge AS builder +RUN apk add --no-cache \ + autoconf \ + automake \ + binutils \ + cmake \ + curl \ + dpkg \ + file \ + gcc \ + g++ \ + libc6-compat \ + git \ + libtool \ + linux-headers \ + make \ + musl-dev \ + nghttp2-dev \ + pkgconfig \ + xxd -RUN \ - echo "**** install runtime packages ****" && \ - apt-get update && \ - apt-get install -y software-properties-common && \ - add-apt-repository ppa:oibaf/graphics-drivers -y && \ - apt-get update && \ - apt-get install -y \ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +FROM builder AS amd + +ARG CFLAGS +ARG LDFLAGS +ARG MAKEFLAGS +ARG OUTPUT +ARG DESTDIR + +WORKDIR /tmp/amd + +RUN apk add xf86-video-amdgpu linux-firmware-amdgpu --no-cache --update-cache \ + && apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing libva-utils \ + && mkdir -p "$OUTPUT/usr/bin" \ + && cp -a /usr/bin/vainfo "$OUTPUT/usr/bin" \ + && mkdir -p "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libX*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libwayland*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libva*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libdrm*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libbsd*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libxshmfence*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libkms*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libxcb*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libffi*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libLLVM*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libzstd*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libexpat*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libelf*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libstdc++*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libgcc_s*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libmd*.so* "$OUTPUT/usr/lib" \ + && cp -a /usr/lib/libxml2*.so* "$OUTPUT/usr/lib" \ + && mkdir -p "$OUTPUT/usr/lib/dri" \ + && cp -a /usr/lib/dri/*.so* "$OUTPUT/usr/lib/dri" \ + && mkdir -p "$OUTPUT/usr/share/libdrm" \ + && cp -a /usr/share/libdrm/* "$OUTPUT/usr/share/libdrm" \ + && cp -a /lib/ld-musl-x86_64.so.1 "$OUTPUT/usr/lib" \ + && cp -a /lib/libz*.so* "$OUTPUT/usr/lib" + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +from ghcr.io/linuxserver/plex:latest +ARG OUTPUT + +# Install AMD drivers +RUN apt-get update \ + && apt-get install -y software-properties-common \ + && add-apt-repository ppa:oibaf/graphics-drivers -y \ + && apt-get update \ + && apt-get install -y \ vainfo \ mesa-va-drivers \ mesa-vdpau-drivers \ libdrm-amdgpu1 \ - libavutil56 && \ -apt-get clean + libavutil56 \ + && apt-get clean -RUN cp /lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so /usr/lib/plexmediaserver/lib/dri/ -RUN cp /lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.* /usr/lib/plexmediaserver/lib/libdrm_amdgpu.so.1 -RUN cp /lib/x86_64-linux-gnu/libdrm.so.2.* /usr/lib/plexmediaserver/lib/libdrm.so.2 -RUN cp /lib/x86_64-linux-gnu/libva-drm.so.2.* /usr/lib/plexmediaserver/lib/libva-drm.so.2 -RUN cp /lib/x86_64-linux-gnu/libva.so.2.* /usr/lib/plexmediaserver/lib/libva.so.2 -RUN cp /lib/x86_64-linux-gnu/libstdc++.so.6.* /usr/lib/plexmediaserver/lib/libstdc++.so.6 +# Copy lib files +COPY --from=amd $OUTPUT/usr/lib/dri/*.so* /usr/lib/plexmediaserver/lib/dri/ +COPY --from=amd $OUTPUT/usr/lib/ld-musl-x86_64.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libdrm*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libelf*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libffi*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libgcc_s*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libkms*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libLLVM*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libstdc++*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libva*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libxml2*.so* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libz*.so.* /usr/lib/plexmediaserver/lib/ +COPY --from=amd $OUTPUT/usr/lib/libzstd*.so* /usr/lib/plexmediaserver/lib/