Files
PDFViewer_MiSTer/image/Dockerfile
Alan Steremberg e01987ae8d first release
2022-02-08 14:49:33 -08:00

248 lines
7.6 KiB
Docker

#FROM arm32v7/debian:stretch-slim
FROM arm32v7/debian:bullseye-slim
# Environment Variable
ENV DEBIAN_FRONTEND=noninteractive
ENV MISTER_ROOT=/mister
# Switches for Optimization
#ENV CFLAGS="-mfloat-abi=hard -march=armv7-a -mfpu=neon"
#ENV CXXFLAGS="-mfloat-abi=hard -march=armv7-a -mfpu=neon"
ENV MAKEFLAGS="-j$(nproc)"
# Core Developement Packages
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
autoconf \
automake \
bash-completion \
bison \
build-essential \
ca-certificates \
checkinstall \
cmake \
curl \
flex \
gdb \
git \
gperf \
iputils-ping \
less \
libc-dev \
libcurl4-openssl-dev \
libdjvulibre-dev \
libelf-dev \
libexpat-dev \
libfreetype6-dev \
liblcms2-dev \
libgmp3-dev \
libharfbuzz-dev \
libjbig2dec0-dev \
libjsoncpp-dev \
liblz4-tool \
libmpc-dev \
libmpfr-dev \
libmupdf-dev \
#libncurses5-dev \
libpcap-dev \
libpng-dev \
libpoppler-cpp-dev \
libreadline-dev \
libssl-dev \
libtiff-dev \
libz-dev \
libtcmalloc-minimal4 \
libtool \
libtool-bin \
libusb-dev \
libusb-1.0-0-dev \
locales \
mlocate \
mupdf \
nano \
nasm \
openssh-client \
p7zip \
python3-pip \
pkg-config \
software-properties-common \
sshpass \
sudo \
tcl \
texinfo \
tree \
unzip \
vim \
wget \
xz-utils \
zlib1g-dev \
--no-install-recommends && \
## Make sure we leave any X11 related library behind
apt-get purge -y 'libx11*' x11-common libxt6 && \
apt autoremove -y && \
rm -r /var/lib/apt/lists/*
# Compilers Envoirment Shortcuts.
ENV AS=as \
AR=ar \
CC=gcc \
CPP=cpp \
CXX=g++ \
LD=ld \
FC=gfortran
# Set System Locales
RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen
ENV export LANG en_US.UTF-8
ENV export LANGUAGE en_US:en
ENV export LC_ALL en_US.UTF-8
# Base Directories
RUN mkdir -p "${MISTER_ROOT}" && \
chmod -R 777 "$MISTER_ROOT"
# Fix some core dependencies without rebuilding all layers
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y gettext libglib2.0-dev \
libltdl-dev autopoint libudev-dev udev \
libdbus-1-dev libdbus-glib-1-dev intltool \
autogen shtool \
--no-install-recommends && \
rm -r /var/lib/apt/lists/*
# Add CXXFLAGS
# Set Volume and Workdir
VOLUME /mister
WORKDIR /mister
# Bash Settings
RUN echo "export HISTTIMEFORMAT='%d/%m/%y %T '" >> ~/.bashrc && \
echo "export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '" >> ~/.bashrc && \
echo "alias ll='ls -lah'" >> ~/.bashrc && \
echo "alias ls='ls --color=auto'" >> ~/.bashrc
# Metadata Params
ARG BUILD_DATE
ARG VCS_REF
ARG BUILD_VERSION
# Metadata
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.vendor="alanswx" \
org.label-schema.name="mister/toolchain" \
org.label-schema.description="ARMv7 C/C++ Toolchain for MiSTer FPGA" \
org.label-schema.build-date=$BUILD_DATE \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.version=$BUILD_VERSION \
org.label-schema.docker.cmd="docker run -it --rm -v ${pwd}:/mister alanswx/toolchain"
CMD ["/bin/bash"]
#RUN cd /usr/local/src/ && wget "https://github.com/ccxvii/mujs/archive/refs/tags/1.2.0.tar.gz" && \
# tar zxf 1.2.0.tar.gz && ls && cd mujs-1.2.0 && make && make install
RUN cd /usr/local/src/ && wget "https://github.com/silnrsi/graphite/archive/refs/tags/1.3.14.tar.gz" && \
tar zxf 1.3.14.tar.gz && ls && cd graphite-1.3.14 && mkdir build && cd build && cmake ../ -DBUILD_SHARED_LIBS:bool=off && \
make && make install
RUN cd /usr/local/src/ && wget "https://github.com/uclouvain/openjpeg/archive/refs/tags/v2.2.0.tar.gz" && \
tar zxf v2.2.0.tar.gz && ls && cd openjpeg-2.2.0/ && mkdir build && cd build && \
cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS:bool=off && \
make && make install
RUN cd /usr/local/src/ && wget "https://invisible-mirror.net/archives/ncurses/ncurses-6.2.tar.gz" && \
tar zxf ncurses-6.2.tar.gz && ls && cd ncurses* && ./configure --libdir=/usr/lib/arm-linux-gnueabihf --enable-widec --with-shared && \
make && make install
#
# remove dynamic libraries so we can use static ones
#
RUN rm /usr/lib/arm-linux-gnueabihf/libharfbuzz.so*
RUN rm /usr/lib/arm-linux-gnueabihf/libopenjp2.so*
RUN rm /usr/local/lib/libopenjp2.so*
RUN rm /usr/lib/arm-linux-gnueabihf/libjpeg.so
RUN cp /usr/local/lib/libgraphite2.a /usr/lib/arm-linux-gnueabihf/
RUN rm /usr/lib/arm-linux-gnueabihf/libgraphite2.so*
#
# grab a copy of the pdf viewer, patch it, build it
#
RUN cd /usr/local/src/ && git clone --recurse-submodules "https://github.com/jichu4n/jfbview.git" && \
ls && cd jfbview
ADD jfbview.patch /usr/local/src/jfbview.patch
RUN cd /usr/local/src/jfbview && patch < /usr/local/src/jfbview.patch -p1
RUN cd /usr/local/src/jfbview && mkdir build && cd build && cmake .. -DCMAKE_CXX_STANDARD_LIBRARIES="-lgraphite2" && make
#RUN cd /usr/local/src/ && wget "https://github.com/mm2/Little-CMS/archive/refs/tags/lcms2.8.tar.gz" && \
# tar zxf lcms2.8.tar.gz && ls && cd Little-CMS-lcms2.8 && ./autogen.sh && \
# make && make install
#RUN apt-get update && apt-get install -y \
# libfontconfig-dev uuid-dev libboost-all-dev
#RUN cd /usr/local/src/ && wget "https://gitlab.freedesktop.org/poppler/poppler/-/archive/poppler-21.12.0/poppler-poppler-21.12.0.tar.gz" && \
# tar zxf poppler-poppler-21.12.0.tar.gz && cd poppler-poppler-21.12.0 && mkdir build && cd build && \
# cmake .. -DENABLE_QT4=OFF -DENABLE_QT4=OFF -DWITH_NSS3=OFF -DBUILD_SHARED_LIBS=OFF -DBUILD_SHARED_LIBS=OFF && \
# make && make install
#node-gyp ninja-build python
#RUN cd /usr/local/src/ && wget "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_66_RTM/src/nss-3.66-with-nspr-4.30.tar.gz" && \
# tar zxf nss-3.66-with-nspr-4.30.tar.gz && ls && cd nss-3.66
# nss/build.sh --static
#RUN cd /usr/local/src/ && wget --no-check-certificate "https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/2.11.0/fontconfig-2.11.0.tar.gz" && \
# tar zxf fontconfig-2.11.0.tar.gz && ls && cd fontconfig-2.11.0 && ./autogen.sh && \
# make && make install
#RUN cd /usr/local/src/ && wget "https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_26_RTM/src/nss-3.26-with-nspr-4.12.tar.gz" && \
# tar zxf nss-3.26-with-nspr-4.12.tar.gz && ls && cd nss-3.26 && \
# cd nspr && ./configure --prefix /usr/ && make && make install && \
# cd ../nss && \
# echo "CFLAGS+=-I/usr/include/nspr/" > coreconf/Linux.mk.1 && \
# cp coreconf/Linux.mk coreconf/Linux.mk.2 && cat coreconf/Linux.mk.1 coreconf/Linux.mk.2 > coreconf/Linux.mk && \
# make nss_build_all && \
# make nss_build_all && \
# make nss_build_all ; exit 0
#
#RUN cd /usr/local/src/nss-3.26/nss/ && make nss_build_all ; exit 0
#RUN cd /usr/local/src/nss-3.26/nss/ && make nss_build_all ; exit 0
#RUN cd /usr/local/src/nss-3.26/nss/ && make nss_build_all ; exit 0
#RUN cd /usr/local/src/nss-3.26/nss/ && make nss_build_all ; exit 0
#RUN cd /usr/local/src/nss-3.26/nss/ && make nss_build_all ; exit 0
#
# AJS CUT BELOW
#
# tar zxf nss-3.26-with-nspr-4.12.tar.gz && ls && cd nss-3.26 && cd nspr && ./configure --prefix /usr/ && make && make install && \
# cd nss && make nss_build_all && make install
# d nss && echo "CFLAGS+=-I/usr/local/include/nspr/" >> coreconf/Linux.mk &&
# make && make install && ldconfig && make install
# need to build and install nspr first, then need to add include to the Linux.mk file /usr/local/include/nspr
# https://github.com/mm2/Little-CMS/archive/refs/tags/lcms2.8.tar.gz
# https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/2.11.0/fontconfig-2.11.0.tar.gz
# gyp ninja-build
# /usr/include/nspr usr/local/include/nspr
# ./build.sh --static --system-nspr