1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-09-20 01:46:15 -04:00
elinks/docker/djgpp/Dockerfile

256 lines
10 KiB
Docker
Raw Normal View History

2022-07-10 13:28:04 -04:00
#
# [ djgpp ] elinks docker development environment v0.1c
#
# [*] base system
# get latest fedora
FROM fedora:38
2022-07-10 13:28:04 -04:00
# prepare system
RUN dnf -y update && dnf -y install bash wget \
rsync vim screen git make automake meson unzip cmake patch upx gcc
2022-07-10 13:28:04 -04:00
2022-09-10 06:26:57 -04:00
RUN cd /root; wget http://ftp.delorie.com/pub/djgpp/rpms/djcross-gcc-12.2.0/djcross-gcc-12.2.0-1ap.x86_64.rpm ; \
wget http://ftp.delorie.com/pub/djgpp/rpms/djcross-gcc-12.2.0/djcross-gcc-c++-12.2.0-1ap.x86_64.rpm ; \
wget http://ftp.delorie.com/pub/djgpp/rpms/djcross-gcc-12.2.0/djcross-gcc-tools-12.2.0-1ap.x86_64.rpm ; \
2022-07-10 13:28:04 -04:00
wget http://ftp.delorie.com/pub/djgpp/rpms/djcross-binutils-2.34-1ap.x86_64.rpm ; \
wget http://ftp.delorie.com/pub/djgpp/rpms/djcrx-2.05-5.x86_64.rpm ; \
rpm -Uhv *.rpm
# djgpp libraries
RUN cd /root; mkdir zip; cd zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2tk/expat20br2.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2tk/wat3211b.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2tk/zlb13b.zip; \
2022-07-10 13:28:04 -04:00
wget http://ftp.delorie.com/pub/djgpp/current/v2apps/xz-525a.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2apps/bz2-108a.zip; \
wget https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/repositories/1.3/apps/sqlite.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2gnu/licv116b.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2gnu/lus0910b.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2tk/lua522b.zip; \
wget http://ftp.delorie.com/pub/djgpp/current/v2gnu/rdln80b.zip
2022-07-10 13:28:04 -04:00
RUN cd /root/zip; \
mkdir tmp; unzip expat20br2.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local; rm -rf tmp; \
mkdir tmp; unzip wat3211b.zip -d tmp; mv -f tmp/net/watt/inc tmp/net/watt/include; cp -a tmp/net/watt/include /usr/local/; cp -a tmp/net/watt/lib /usr/local; rm -rf tmp; \
mkdir tmp; unzip zlb13b.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
2022-07-10 13:28:04 -04:00
mkdir tmp; unzip xz-525a.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
mkdir tmp; unzip bz2-108a.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
mkdir tmp; unzip sqlite.zip -d tmp; mkdir tmp/tmp2; unzip tmp/SOURCE/SQLITE/SOURCES.ZIP -d tmp/tmp2; cp -a tmp/tmp2/examples/sqlite3.h /usr/local/include/; cp -a tmp/tmp2/examples/libsqlite3.a /usr/local/lib/; \
cp -a tmp/tmp2/sqlite3.pc /usr/local/lib/pkgconfig/; rm -rf tmp; \
mkdir tmp; unzip licv116b.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
2023-01-03 11:11:21 -05:00
mkdir tmp; unzip lus0910b.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
mkdir tmp; unzip rdln80b.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
2022-07-12 11:32:44 -04:00
sed -i -e 's|/dev/env/DJDIR|/usr/local|g' /usr/local/lib/pkgconfig/*.pc; \
sed -i -e 's|/dev/env/DJDIR|/usr/local|g' /usr/local/lib/*.la; \
sed -i -e 's/Libs\.private/#Libs.private/' /usr/local/lib/pkgconfig/sqlite3.pc; \
mkdir tmp; unzip lua522b.zip -d tmp; cp -a tmp/include /usr/local/; cp -a tmp/lib /usr/local/; rm -rf tmp; \
cat <<EOF > /usr/local/lib/pkgconfig/lua.pc
prefix=/usr/local
2023-10-29 13:10:17 -04:00
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: Lua
Description: An Extensible Extension Language
Version: 5.2
Requires:
Libs: -llua -lm
2023-10-29 13:10:17 -04:00
Cflags: -I\${includedir}
EOF
2022-07-10 13:28:04 -04:00
# openssl
RUN dnf -y install perl-FindBin; cd /root; \
mkdir -p /dev/env/WATT_ROOT; \
ln -sf /usr/local/include /dev/env/WATT_ROOT/inc; \
ln -sf /usr/local/lib /dev/env/WATT_ROOT/lib; \
rm -rf openssl-1.1.1w; \
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz; \
tar -xf openssl-1.1.1w.tar.gz; \
cd openssl-1.1.1w; \
2022-07-10 13:28:04 -04:00
CFLAGS="-I/usr/local/include -DWATT32_NO_OLDIES -DSHUT_RD=0 -L/usr/local/lib -fcommon" \
./Configure no-threads \
no-tests \
-static \
DJGPP \
--prefix=/usr/local \
--cross-compile-prefix=i586-pc-msdosdjgpp- && \
make depend && \
2022-12-01 12:12:44 -05:00
make -j`nproc` && \
2022-07-10 13:28:04 -04:00
make install_runtime_libs && \
make install_dev
#rm -rf /root/tmp
2022-07-10 13:28:04 -04:00
# brotli
ADD cc.py /usr/local/bin/cc.py
ADD brotli.diff /root/brotli.diff
RUN cd /root; \
rm -rf brotli-1.1.0; \
wget https://github.com/google/brotli/archive/refs/tags/v1.1.0.tar.gz; \
tar -xf v1.1.0.tar.gz; \
cd brotli-1.1.0; \
patch -p1 < /root/brotli.diff || exit 1; \
2022-07-10 13:28:04 -04:00
mkdir build; \
cd build; \
CC=cc.py cmake \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DBUILD_STATIC_LIBS:BOOL=ON \
-DCMAKE_AR=/usr/bin/i586-pc-msdosdjgpp-ar \
.. ; \
2022-12-01 12:12:44 -05:00
make -j`nproc` VERBOSE=1; \
make install
#rm -rf /root/tmp
2022-07-10 13:28:04 -04:00
# quickjs
RUN dnf -y install xz; cd /root; \
rm -rf quickjs-2021-03-27; \
wget https://bellard.org/quickjs/quickjs-2021-03-27.tar.xz; \
tar xf quickjs-2021-03-27.tar.xz
ADD quickjs-dos.diff /root/quickjs-dos.diff
RUN cd /root/quickjs-2021-03-27; \
patch -p1 < ../quickjs-dos.diff; \
make -f Makefile.dos; \
mv -f /usr/local /usr/local2; \
make -f Makefile.dos; \
mv -f /usr/local2 /usr/local; \
make -f Makefile.dos install
2022-07-10 13:28:04 -04:00
2023-01-03 11:11:21 -05:00
# libidn2
RUN cd /root; \
rm -rf libidn2-2.3.4; \
2023-01-03 11:11:21 -05:00
wget https://ftp.gnu.org/gnu/libidn/libidn2-2.3.4.tar.gz; \
tar xvf libidn2-2.3.4.tar.gz
ADD getprogname.diff /root/getprogname.diff
ADD build_libidn2.sh /root/libidn2-2.3.4
RUN cd /root/libidn2-2.3.4; \
2023-01-03 11:11:21 -05:00
patch -p1 < ../getprogname.diff; \
./build_libidn2.sh
RUN dnf -y install pkgconf-pkg-config gettext
# netsurf
RUN cd /root; \
wget http://download.netsurf-browser.org/libs/releases/buildsystem-1.9.tar.gz; \
tar -xf buildsystem-1.9.tar.gz; \
make -C buildsystem-1.9 install PREFIX=/usr/local
##rm -rf buildsystem-1.9
#
RUN cd /root; \
export LIBRARY_PATH="/usr/local/lib"; \
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"; \
export C_INCLUDE_PATH="/usr/local/include"; \
export CFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export CXXFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export LDFLAGS="-L/usr/local/lib"; \
export CC="i586-pc-msdosdjgpp-gcc"; \
export AR="i586-pc-msdosdjgpp-ar"; \
wget http://download.netsurf-browser.org/libs/releases/libparserutils-0.2.4-src.tar.gz; \
tar -xf libparserutils-0.2.4-src.tar.gz; \
make -C libparserutils-0.2.4 install -j1 Q= PREFIX=/usr/local LIBDIR=lib COMPONENT_TYPE=lib-static
##rm -rf libparserutils-0.2.4
RUN cd /root; \
export LIBRARY_PATH="/usr/local/lib"; \
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"; \
export C_INCLUDE_PATH="/usr/local/include"; \
export CFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export CXXFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export LDFLAGS="-L/usr/local/lib"; \
export CC="i586-pc-msdosdjgpp-gcc"; \
export AR="i586-pc-msdosdjgpp-ar"; \
wget http://download.netsurf-browser.org/libs/releases/libwapcaplet-0.4.3-src.tar.gz; \
tar -xf libwapcaplet-0.4.3-src.tar.gz; \
make -C libwapcaplet-0.4.3 install -j1 Q= PREFIX=/usr/local LIBDIR=lib COMPONENT_TYPE=lib-static
##rm -rf libwapcaplet-0.4.3
RUN cd /root; \
export LIBRARY_PATH="/usr/local/lib"; \
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"; \
export C_INCLUDE_PATH="/usr/local/include"; \
export CFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export CXXFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export LDFLAGS="-L/usr/local/lib"; \
export CC="i586-pc-msdosdjgpp-gcc"; \
export AR="i586-pc-msdosdjgpp-ar"; \
wget http://download.netsurf-browser.org/libs/releases/libhubbub-0.3.7-src.tar.gz; \
tar -xf libhubbub-0.3.7-src.tar.gz; \
make -C libhubbub-0.3.7 install -j1 Q= PREFIX=/usr/local LIBDIR=lib COMPONENT_TYPE=lib-static
##rm -rf libhubbub-0.3.7
RUN cd /root; \
rm -rf libcss-0.9.1; \
wget http://download.netsurf-browser.org/libs/releases/libcss-0.9.1-src.tar.gz; tar -xf libcss-0.9.1-src.tar.gz
ADD libCSS-restrict.diff /root/libCSS-restrict.diff
RUN cd /root/libcss-0.9.1; patch -p1 < /root/libCSS-restrict.diff; \
printf '\ngen: $(PRE_TARGETS)\n' >> Makefile; \
cd ..; \
export LIBRARY_PATH="/usr/local/lib"; \
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"; \
export C_INCLUDE_PATH="/usr/local/include"; \
export CFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export CXXFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export LDFLAGS="-L/usr/local/lib"; \
export CC="i586-pc-msdosdjgpp-gcc"; \
export AR="i586-pc-msdosdjgpp-ar"; \
export HOST="i586-pc-msdosdjgpp"; \
export BUILD_CC=cc; \
mv -f /usr/local /usr/local3; \
mkdir -p /usr/local/share; \
cp -a /usr/local3/share/netsurf-buildsystem /usr/local/share/; \
make -C libcss-0.9.1 -j1 Q= PREFIX=/usr/local LIBDIR=lib gen
RUN cd /root; \
mv -f /usr/local /usr/local4; \
mv -f /usr/local3 /usr/local; \
export LIBRARY_PATH="/usr/local/lib"; \
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"; \
export C_INCLUDE_PATH="/usr/local/include"; \
export CFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export CXXFLAGS="-O2 -I/usr/local/include -Wno-error -DWATT32_NO_NAMESPACE -U__STRICT_ANSI__"; \
export LDFLAGS="-L/usr/local/lib"; \
export CC="i586-pc-msdosdjgpp-gcc"; \
export AR="i586-pc-msdosdjgpp-ar"; \
export HOST="i586-pc-msdosdjgpp"; \
make -C libcss-0.9.1 install -j1 Q= PREFIX=/usr/local LIBDIR=lib COMPONENT_TYPE=lib-static
##rm -rf libcss-0.9.1
RUN cd /root; \
export CFLAGS="-Wno-error"; \
export CC="i586-pc-msdosdjgpp-gcc"; \
export AR="i586-pc-msdosdjgpp-ar"; \
wget http://download.netsurf-browser.org/libs/releases/libdom-0.4.1-src.tar.gz; \
tar -xf libdom-0.4.1-src.tar.gz; \
make -C libdom-0.4.1 install -j1 Q= PREFIX=/usr/local LIBDIR=lib COMPONENT_TYPE=lib-static
##rm -rf libdom-0.4.1
2023-10-29 13:10:17 -04:00
# libcurl
RUN cd /root; \
rm -rf curl-8.4.0; \
wget https://curl.se/download/curl-8.4.0.tar.xz; tar -xf curl-8.4.0.tar.xz
RUN cd /root/curl-8.4.0; \
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" LIBS="-L/usr/local/lib -lbrotlicommon -L/usr/local/lib -lunistring -L/usr/local/lib -liconv" \
./configure --host=i586-pc-msdosdjgpp --with-ssl --with-zlib --with-brotli --with-libidn2 --disable-threaded-resolver --with-srp --with-ca-bundle="C:\\ca.crt"; \
make -j `nproc`; \
make install
2023-10-29 13:10:17 -04:00
# mujs
RUN cd /root; \
rm -rf mujs-1.3.3; \
wget https://mujs.com/downloads/mujs-1.3.3.tar.gz ; tar -xf mujs-1.3.3.tar.gz
RUN cd /root/mujs-1.3.3; \
make CC=i586-pc-msdosdjgpp-gcc AR=i586-pc-msdosdjgpp-ar CFLAGS="-U_POSIX_SOURCE -I/usr/local/include -L/usr/local/lib" install
2022-07-10 13:28:04 -04:00
# [*] elinks sources
# get elinks source
RUN cd /root; git clone https://github.com/rkd77/elinks
2022-07-10 13:28:04 -04:00
ADD mes_djgpp.sh /root/elinks/mes_djgpp.sh
RUN cd /root/elinks; \
./mes_djgpp.sh;
2023-10-29 13:10:17 -04:00
ADD mes_djgpp_js.sh /root/elinks/mes_djgpp_js.sh
RUN cd /root/elinks; \
./mes_djgpp_js.sh;