mirror of
https://github.com/MiSTer-devel/PDFViewer_MiSTer.git
synced 2026-04-19 03:04:49 +00:00
248 lines
7.6 KiB
Docker
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
|