1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-06-15 23:35:34 +00:00

[docker] win32-static

This commit is contained in:
Witold Filipczyk 2023-11-10 17:49:17 +01:00
parent b812a9ce3d
commit b5e7eae2d1
22 changed files with 480 additions and 0 deletions

View File

@ -0,0 +1,94 @@
#
# [ win32 ] elinks docker development environment v0.1c
#
# [*] base system
# get latest debian
FROM debian:bookworm
# prepare system
RUN apt-get update && apt-get -y install bash \
rsync vim screen git make automake grep sed meson
# install dev tools [ platform dependent ]
RUN apt-get install -y gcc-mingw-w64-i686 g++-mingw-w64-i686
# install wine
RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install -y wine wine32:i386
# create user
RUN useradd -m elinks -s /bin/bash
# wget
RUN apt-get install -y wget cmake pkg-config
# build expat
ADD build_expat.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_expat.sh
# netsurf buildsystem
ADD build_netsurf.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_netsurf.sh
# build iconv
ADD build_iconv.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_iconv.sh
# parserutils
ADD build_parserutils.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_parserutils.sh
# wapcaplet
ADD build_wapcaplet.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_wapcaplet.sh
# hubbub
ADD build_hubbub.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_hubbub.sh
# patch
RUN apt-get install -y patch gcc
# libcss
ADD build_libcss.sh /home/elinks/
ADD libCSS-restrict.diff /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_libcss.sh
# libdom
ADD build_libdom.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_libdom.sh
# lua
ADD build_lua.sh /home/elinks/
ADD lua.diff /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_lua.sh
# sqlite3
ADD build_sqlite3.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_sqlite3.sh
# mujs
ADD build_mujs.sh /home/elinks/
ADD mujs.diff /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/build_mujs.sh
# curl
RUN apt-get install -y unzip
ADD unpack_curl.sh /home/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/unpack_curl.sh
# elinks sources
RUN apt-get install -y git
RUN runuser -u elinks git clone https://github.com/rkd77/elinks /home/elinks/elinks
# build without js
ADD mes.sh /home/elinks/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/elinks/mes.sh
# build with js
ADD mes_js.sh /home/elinks/elinks/
RUN runuser -u elinks /bin/bash /home/elinks/elinks/mes_js.sh

2
docker/win32-static/build.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/bash
sudo docker build -t "elinks-win32-static-dev:latest" .

View File

@ -0,0 +1,13 @@
cd
wget https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.gz
rm -rf expat-2.5.0
tar -xf expat-2.5.0.tar.gz
cd expat-2.5.0
./configure --host=i686-w64-mingw32 --prefix=$HOME \
--enable-static=yes \
--enable-shared=no \
CC=i686-w64-mingw32-gcc \
CPPFLAGS="-I$HOME/include -Wall" \
LDFLAGS="-L$HOME/lib"
make -j $(nproc)
make install

View File

@ -0,0 +1,13 @@
export LIBRARY_PATH="$HOME/lib"
export PKG_CONFIG_PATH="$HOME/lib/pkgconfig"
export C_INCLUDE_PATH="$HOME/include"
export CFLAGS="-O2 -I$HOME/include -Wno-error"
export CXXFLAGS="-O2 -I$HOME/include -Wno-error"
export LDFLAGS="-L$HOME/lib"
export CC="i686-w64-mingw32-gcc"
export AR="i686-w64-mingw32-ar"
cd
wget http://download.netsurf-browser.org/libs/releases/libhubbub-0.3.7-src.tar.gz
rm -rf libhubbub-0.3.7
tar -xf libhubbub-0.3.7-src.tar.gz
make -C libhubbub-0.3.7 install -j1 Q= PREFIX=$HOME LIBDIR=lib COMPONENT_TYPE=lib-static

View File

@ -0,0 +1,13 @@
cd
wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.17.tar.gz
rm -rf libiconv-1.17
tar xf libiconv-1.17.tar.gz
cd libiconv-1.17
./configure --host=i686-w64-mingw32 --prefix=$HOME \
--enable-static=yes \
--enable-shared=no \
CC=i686-w64-mingw32-gcc \
CPPFLAGS="-I$HOME/include -Wall" \
LDFLAGS="-L$HOME/lib"
make -j $(nproc)
make install

View File

@ -0,0 +1,30 @@
cd
wget http://download.netsurf-browser.org/libs/releases/libcss-0.9.1-src.tar.gz; tar -xf libcss-0.9.1-src.tar.gz
rm -rf libcss-0.9.1
tar -xf libcss-0.9.1-src.tar.gz
cd libcss-0.9.1
patch -p1 < ../libCSS-restrict.diff
printf '\ngen: $(PRE_TARGETS)\n' >> Makefile
cd ..
export LIBRARY_PATH="$HOME/lib"
export PKG_CONFIG_PATH="$HOME/lib/pkgconfig"
export C_INCLUDE_PATH="$HOME/include"
export CFLAGS="-O2 -I$HOME/include -Wno-error"
export CXXFLAGS="-O2 -I$HOME/include -Wno-error"
export LDFLAGS="-L$HOME/lib"
export CC="i686-w64-mingw32-gcc"
export AR="i686-w64-mingw32-ar"
export HOST="i686-w64-mingw32"
export BUILD_CC=cc
make -C libcss-0.9.1 -j1 Q= PREFIX=$HOME LIBDIR=lib gen
export LIBRARY_PATH="$HOME/lib"
export PKG_CONFIG_PATH="$HOME/lib/pkgconfig"
export C_INCLUDE_PATH="$HOME/include"
export CFLAGS="-O2 -I$HOME/include -Wno-error"
export CXXFLAGS="-O2 -I$HOME/include -Wno-error"
export LDFLAGS="-L$HOME/lib"
export CC="i686-w64-mingw32-gcc"
export AR="i686-w64-mingw32-ar"
export HOST="i686-w64-mingw32"
make -C libcss-0.9.1 install -j1 Q= PREFIX=$HOME LIBDIR=lib COMPONENT_TYPE=lib-static

View File

@ -0,0 +1,13 @@
export LIBRARY_PATH="$HOME/lib"
export PKG_CONFIG_PATH="$HOME/lib/pkgconfig"
export C_INCLUDE_PATH="$HOME/include"
export CFLAGS="-O2 -I$HOME/include -Wno-error"
export CXXFLAGS="-O2 -I$HOME/include -Wno-error"
export LDFLAGS="-L$HOME/lib"
export CC="i686-w64-mingw32-gcc"
export AR="i686-w64-mingw32-ar"
cd
wget http://download.netsurf-browser.org/libs/releases/libdom-0.4.1-src.tar.gz
rm -rf libdom-0.4.1
tar -xf libdom-0.4.1-src.tar.gz
make -C libdom-0.4.1 install -j1 Q= PREFIX=$HOME LIBDIR=lib COMPONENT_TYPE=lib-static

View File

@ -0,0 +1,8 @@
cd
wget https://www.lua.org/ftp/lua-5.4.6.tar.gz
rm -rf lua-5.4.6
tar -xf lua-5.4.6.tar.gz
cd lua-5.4.6
patch -p1 < ../lua.diff
make mingw CC="i686-w64-mingw32-gcc" AR="i686-w64-mingw32-ar rcu" RANLIB="i686-w64-mingw32-ranlib" INSTALL_TOP=$HOME -j $(nproc)
make install CC="i686-w64-mingw32-gcc" AR="i686-w64-mingw32-ar rcu" RANLIB="i686-w64-mingw32-ranlib" INSTALL_TOP=$HOME

View File

@ -0,0 +1,7 @@
cd
wget https://mujs.com/downloads/mujs-1.3.3.tar.gz
rm -rf mujs-1.3.3
tar -xf mujs-1.3.3.tar.gz
cd mujs-1.3.3
patch -p1 < ../mujs.diff
make CC=i686-w64-mingw32-gcc AR=i686-w64-mingw32-ar prefix=$HOME install

View File

@ -0,0 +1,4 @@
cd
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=$HOME

View File

@ -0,0 +1,13 @@
export LIBRARY_PATH="$HOME/lib"
export PKG_CONFIG_PATH="$HOME/lib/pkgconfig"
export C_INCLUDE_PATH="$HOME/include"
export CFLAGS="-O2 -I$HOME/include -Wno-error"
export CXXFLAGS="-O2 -I$HOME/include -Wno-error"
export LDFLAGS="-L$HOME/lib"
export CC="i686-w64-mingw32-gcc"
export AR="i686-w64-mingw32-ar"
cd
wget http://download.netsurf-browser.org/libs/releases/libparserutils-0.2.4-src.tar.gz
rm -rf libparserutils-0.2.4
tar -xf libparserutils-0.2.4-src.tar.gz
make -C libparserutils-0.2.4 install -j1 Q= PREFIX=$HOME LIBDIR=lib COMPONENT_TYPE=lib-static

View File

@ -0,0 +1,14 @@
cd
wget https://www.sqlite.org/2023/sqlite-autoconf-3440000.tar.gz
rm -rf sqlite-autoconf-3440000
tar xf sqlite-autoconf-3440000.tar.gz
cd sqlite-autoconf-3440000
./configure --host=i686-w64-mingw32 --prefix=$HOME \
--enable-static=yes \
--enable-shared=no \
--disable-readline \
CC=i686-w64-mingw32-gcc \
CPPFLAGS="-I$HOME/include -Wall" \
LDFLAGS="-L$HOME/lib"
make -j $(nproc)
make install

View File

@ -0,0 +1,13 @@
export LIBRARY_PATH="$HOME/lib"
export PKG_CONFIG_PATH="$HOME/lib/pkgconfig"
export C_INCLUDE_PATH="$HOME/include"
export CFLAGS="-O2 -I$HOME/include -Wno-error"
export CXXFLAGS="-O2 -I$HOME/include -Wno-error"
export LDFLAGS="-L$HOME/lib"
export CC="i686-w64-mingw32-gcc"
export AR="i686-w64-mingw32-ar"
cd
wget http://download.netsurf-browser.org/libs/releases/libwapcaplet-0.4.3-src.tar.gz
rm -rf libwapcaplet-0.4.3
tar -xf libwapcaplet-0.4.3-src.tar.gz
make -C libwapcaplet-0.4.3 install -j1 Q= PREFIX=$HOME LIBDIR=lib COMPONENT_TYPE=lib-static

4
docker/win32-static/cleanup.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
sudo docker container stop elinks-win32-static-dev
sudo docker container rm elinks-win32-static-dev
#docker image rm elinks-win32-static-dev

View File

@ -0,0 +1,19 @@
--- libcss-0.8.0/include/libcss/computed.h.orig 2018-08-22 15:27:44.000000000 +0200
+++ libcss-0.8.0/include/libcss/computed.h 2018-12-29 19:02:55.633399014 +0100
@@ -79,13 +79,13 @@
css_error css_computed_style_destroy(css_computed_style *style);
css_error css_computed_style_compose(
- const css_computed_style *restrict parent,
- const css_computed_style *restrict child,
+ const css_computed_style *__restrict parent,
+ const css_computed_style *__restrict child,
css_error (*compute_font_size)(void *pw,
const struct css_hint *parent,
struct css_hint *size),
void *pw,
- css_computed_style **restrict result);
+ css_computed_style **__restrict result);
/******************************************************************************
* Property accessors below here *

View File

@ -0,0 +1,11 @@
--- lua-5.4.6/Makefile 2023-05-02 20:06:08.000000000 +0000
+++ lua-5.4.6/Makefile.win 2023-11-07 19:58:26.145909376 +0000
@@ -39,7 +39,7 @@
PLATS= guess aix bsd c89 freebsd generic ios linux linux-readline macosx mingw posix solaris
# What to install.
-TO_BIN= lua luac
+TO_BIN= lua.exe luac.exe
TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
TO_LIB= liblua.a
TO_MAN= lua.1 luac.1

69
docker/win32-static/mes.sh Executable file
View File

@ -0,0 +1,69 @@
#!/bin/sh
rm -rf ~/build
cd ~/elinks
LIBRARY_PATH="$HOME/lib" \
PKG_CONFIG_PATH="$HOME/lib/pkgconfig" \
C_INCLUDE_PATH="$HOME/include" \
CFLAGS="-O0 -I$HOME/include -DCURL_STATICLIB" \
CXXFLAGS="-O0 -I$HOME/include -DCURL_STATICLIB" \
LDFLAGS="-L$HOME/lib -lcrypto -L$HOME/lib -lbrotlicommon -L$HOME/lib -lbrotlidec -L$HOME/lib -lzstd -L$HOME/lib -lssh2 -L$HOME/lib -lnghttp2 -L$HOME/lib -lnghttp3 -L$HOME/lib -lngtcp2 -L$HOME/lib -lngtcp2_crypto_quictls -lws2_32 -lcrypt32 -lwldap32 -lbcrypt -lucrt -liphlpapi" \
meson setup ~/build --cross-file cross/linux-mingw32.txt \
-D88-colors=false \
-D256-colors=false \
-Dapidoc=false \
-Dbacktrace=false \
-Dbittorrent=false \
-Dbrotli=false \
-Dbzlib=false \
-Dcgi=false \
-Dcss=true \
-Dcombining=false \
-Ddgi=true \
-Dexmode=true \
-Dfastmem=true \
-Dfsp=false \
-Dfsp2=true \
-Dgemini=true \
-Dgettext=false \
-Dgnutls=false \
-Dgopher=true \
-Dgpm=false \
-Dguile=false \
-Dhtmldoc=false \
-Didn=false \
-Dipv6=true \
-Dlibcss=true \
-Dlibcurl=true \
-Dlibev=false \
-Dlibevent=false \
-Dluapkg='lua' \
-Dlzma=false \
-Dmailcap=false \
-Dmouse=true \
-Dnls=true \
-Dnntp=true \
-Dopenssl=true \
-Dpdfdoc=false \
-Dperl=false \
-Dprefix=$HOME \
-Dpython=false \
-Dquickjs=false \
-Druby=false \
-Dsm-scripting=false \
-Dspidermonkey=false \
-Dstatic=true \
-Dterminfo=false \
-Dtest=false \
-Dtre=false \
-Dtrue-color=false \
-Dutf-8=true \
-Dwithdebug=false \
-Dx=false \
-Dxbel=true \
-Dzlib=true \
-Dzstd=false
meson compile -C ~/build

68
docker/win32-static/mes_js.sh Executable file
View File

@ -0,0 +1,68 @@
#!/bin/sh
rm -rf ~/buildjs
cd ~/elinks
LIBRARY_PATH="$HOME/lib" \
PKG_CONFIG_PATH="$HOME/lib/pkgconfig" \
C_INCLUDE_PATH="$HOME/include" \
CFLAGS="-O2 -I$HOME/include -DCURL_STATICLIB" \
CXXFLAGS="-O2 -I$HOME/include -DCURL_STATICLIB" \
LDFLAGS="-L$HOME/lib -lcrypto -L$HOME/lib -lbrotlicommon -L$HOME/lib -lbrotlidec -L$HOME/lib -lzstd -L$HOME/lib -lssh2 -L$HOME/lib -lnghttp2 -L$HOME/lib -lnghttp3 -L$HOME/lib -lngtcp2 -L$HOME/lib -lngtcp2_crypto_quictls -lws2_32 -lcrypt32 -lwldap32 -lbcrypt -lucrt -lpthread" \
meson setup ~/buildjs --cross-file cross/linux-mingw32.txt \
-D88-colors=false \
-D256-colors=false \
-Dapidoc=false \
-Dbacktrace=false \
-Dbittorrent=false \
-Dbrotli=false \
-Dbzlib=false \
-Dcgi=false \
-Dcss=true \
-Dcombining=false \
-Ddgi=true \
-Dexmode=true \
-Dfastmem=true \
-Dfsp=false \
-Dfsp2=true \
-Dgemini=true \
-Dgettext=false \
-Dgnutls=false \
-Dgopher=true \
-Dgpm=false \
-Dguile=false \
-Dhtmldoc=false \
-Didn=false \
-Dipv6=true \
-Dlibcss=true \
-Dlibcurl=true \
-Dlibev=false \
-Dlibevent=false \
-Dluapkg='lua' \
-Dlzma=false \
-Dmailcap=false \
-Dmouse=true \
-Dmujs=true \
-Dnls=true \
-Dnntp=true \
-Dopenssl=true \
-Dpdfdoc=false \
-Dperl=false \
-Dprefix=$HOME \
-Dpython=false \
-Dquickjs=false \
-Druby=false \
-Dsm-scripting=false \
-Dspidermonkey=false \
-Dstatic=true \
-Dterminfo=false \
-Dtest=false \
-Dtre=false \
-Dtrue-color=false \
-Dutf-8=true \
-Dwithdebug=false \
-Dx=false \
-Dxbel=true \
-Dzlib=true \
-Dzstd=false
meson compile -C ~/buildjs

View File

@ -0,0 +1,58 @@
--- mujs-1.3.3/Makefile 2023-01-10 11:11:11.000000000 +0000
+++ mujs-1.3.3/Makefile.win 2023-11-07 16:18:12.781947760 +0000
@@ -98,8 +98,8 @@
$(CC) $(CFLAGS) $(OPTIM) -c -o $@ one.c
build/release/libmujs.a: build/release/libmujs.o
$(AR) cr $@ $^
-build/release/mujs: main.c build/release/libmujs.o
- $(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm -DHAVE_READLINE -lreadline
+#build/release/mujs: main.c build/release/libmujs.o
+# $(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm -DHAVE_READLINE -lreadline
build/release/mujs-pp: pp.c build/release/libmujs.o
$(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm
@@ -112,14 +112,13 @@
echo >> $@ Libs: -L$(libdir) -lmujs
echo >> $@ Libs.private: -lm
-install-common: build/release/mujs build/release/mujs-pp build/release/mujs.pc
+install-common: build/release/mujs-pp build/release/mujs.pc
install -d $(DESTDIR)$(incdir)
install -d $(DESTDIR)$(libdir)
install -d $(DESTDIR)$(libdir)/pkgconfig
install -d $(DESTDIR)$(bindir)
install -m 644 mujs.h $(DESTDIR)$(incdir)
install -m 644 build/release/mujs.pc $(DESTDIR)$(libdir)/pkgconfig
- install -m 755 build/release/mujs $(DESTDIR)$(bindir)
install -m 755 build/release/mujs-pp $(DESTDIR)$(bindir)
install-static: install-common build/release/libmujs.a
--- mujs-1.3.3/Makefile 2023-11-07 16:20:17.847381765 +0000
+++ mujs-1.3.3/Makefile.win 2023-11-07 16:22:46.616720069 +0000
@@ -100,8 +100,8 @@
$(AR) cr $@ $^
#build/release/mujs: main.c build/release/libmujs.o
# $(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm -DHAVE_READLINE -lreadline
-build/release/mujs-pp: pp.c build/release/libmujs.o
- $(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm
+#build/release/mujs-pp: pp.c build/release/libmujs.o
+# $(CC) $(CFLAGS) $(OPTIM) -o $@ $^ -lm
build/release/mujs.pc:
@mkdir -p $(@D)
@@ -112,14 +112,13 @@
echo >> $@ Libs: -L$(libdir) -lmujs
echo >> $@ Libs.private: -lm
-install-common: build/release/mujs-pp build/release/mujs.pc
+install-common: build/release/mujs.pc
install -d $(DESTDIR)$(incdir)
install -d $(DESTDIR)$(libdir)
install -d $(DESTDIR)$(libdir)/pkgconfig
install -d $(DESTDIR)$(bindir)
install -m 644 mujs.h $(DESTDIR)$(incdir)
install -m 644 build/release/mujs.pc $(DESTDIR)$(libdir)/pkgconfig
- install -m 755 build/release/mujs-pp $(DESTDIR)$(bindir)
install-static: install-common build/release/libmujs.a
install -m 644 build/release/libmujs.a $(DESTDIR)$(libdir)

6
docker/win32-static/run.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
sudo docker run -it \
--name=elinks-win32-static-dev \
-v /tmp:/tmp/host \
elinks-win32-static-dev:latest \
/bin/bash

3
docker/win32-static/shell.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sudo docker start elinks-win32-static-dev
sudo docker exec -it elinks-win32-static-dev bash

View File

@ -0,0 +1,5 @@
cd
wget https://curl.se/windows/dl-8.4.0_6/curl-8.4.0_6-win32-mingw.zip
unzip curl-8.4.0_6-win32-mingw.zip
cd curl-8.4.0_6-win32-mingw
cp -a * ~/