aboutsummaryrefslogtreecommitdiffhomepage
path: root/.fmsbw/10-freebsd14-msys-sciteco
blob: 5337827657120daafdc4d2b774675bc136ae9bb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#!/usr/local/bin/bash
set -ex
export ASSUME_ALWAYS_YES=yes

# Already in freebsd14-sciteco
# TODO: Build this with buildah.
# Start with --network=host
#pkg update
#pkg install FreeBSD-clang FreeBSD-clibs-dev \
#            gmake pkgconf autoconf automake libtool \
#            glib gtk3 groff lowdown valgrind
#
#pkg install llvm20 gnugrep gmake coreutils gsed git wget gnupg bash groff zip autoconf automake libtool python3
#git clone https://github.com/HolyBlackCat/quasi-msys2.git /opt/quasi-msys2
#cd /opt/quasi-msys2
#ln -s /usr/local/bin/gpgv2 /usr/local/bin/gpgv
#ln -s /usr/local/bin/bash /bin/bash
# ln -s /usr/local/bin/clang20 gnu-overrides/clang
# ln -s /usr/local/bin/clang++20 gnu-overrides/clang++
# ln -s /usr/local/bin/llvm-windres20 gnu-overrides/llvm-windres
# ln -s /usr/local/bin/ggrep gnu-overrides/grep
# ln -s /usr/local/bin/gmake gnu-overrides/make
# ln -s /usr/local/bin/gsed gnu-overrides/sed
# ln -s /usr/local/bin/greadlink gnu-overrides/readlink
# ln -s /usr/local/bin/wine64 gnu-overrides/wine
#echo MINGW64 >msystem.txt
# cat >activate << EOF
#cd /opt/quasi-msys2
#export PATH=`pwd`/gnu-overrides:$PATH
#set +ex
#. env/all.src
#set -ex
#EOF
#gmake install _autotools _gcc _glib2 _pdcurses _gtk3 _librsvg
#ln -nfs "/opt/quasi-msys2/root/mingw64" /mingw64
#pkg clean -a

autoreconf -i
mkdir build-freebsd
cd build-freebsd
../configure --with-interface=ncurses --enable-debug --enable-html-docs
gmake

# NOTE: The test suite must be run in verbose mode because if it fails
# we won't be able to analyze testsuite.log.
gmake check TESTSUITEFLAGS="--verbose --color=never --valgrind"
# Includes a second test suite run, but without Valgrind.
# This is good since we had to exclude several test cases when running
# under CI with --valgrind.
gmake distcheck

gmake install

# Build and deploy website
cd ../www
sciteco -m build.tes ../build-freebsd
cp *.html /opt/htdocs/
cd ..
cp ico/sciteco.ico /opt/htdocs/graphics
cp ico/sciteco-48.png /opt/htdocs/graphics

# TODO: Should we also distribute FreeBSD binaries?

# FIXME: This should be a separate job but currently we need the
# boostrapping with the FreeBSD version of SciTECO.
# We can run with bootstrapping using --with-wine=wine64,
# but it doesn't even generate all files correctly.
# The test suite also doesn't fully work under Wine yet.
# Activate MSYS environment
. /opt/quasi-msys2/activate
cd /opt/build

export CURSES_CFLAGS=-I/mingw64/include/pdcurses/
# FIXME: glib on MinGW supports static linking but the gspawn
# helper binaries are still linked dynamically, forcing us to ship
# all DLLs anyway. Therefore it makes little sense to link SciTECO
# itself statically - it only wastes a few MB.
# You will also have to add --enable-static-executables.
# The additional Windows libraries are for PDCursesMod/WinGUI:
# LIBGLIB_LIBS: -lglib-2.0 -lintl -liconv -lpcre -lole32 -lws2_32 -luuid
# FIXME: Once there is an --enable-lto, we should use that.
#CFLAGS: -O3 -flto -DGLIB_STATIC_COMPILATION
# FIXME: Get -flto to work again.
#export CFLAGS="-O3 -flto"
#export CXXFLAGS="-O3 -flto"
#export LDFLAGS="-flto"
export CFLAGS="-O3"
export CXXFLAGS="-O3"

# We cannot run Windows binaries automatically through Wine,
# so we must still force cross-compilation with --host.
# Still make sure we don't pick up the MinGW pkg-config
export PKG_CONFIG=pkg-config

#autoreconf -i
mkdir build-wingui build-wincon
cd build-wingui
../configure --host=x86_64-w64-mingw32 \
             --with-interface=pdcurses-gui --enable-html-docs --program-prefix=g \
             --with-scitecodatadir=. \
             --disable-bootstrap \
             CURSES_LIBS="-lpdcurses_wingui -lgdi32 -lcomdlg32 -lwinmm"
make
make install-strip
#make check TESTSUITEFLAGS="--verbose --color=never"

cd ../build-wincon
../configure --host=x86_64-w64-mingw32 \
             --with-interface=pdcurses --enable-html-docs \
             --with-scitecodatadir=. \
             --disable-bootstrap \
             CURSES_LIBS="-lpdcurses_wincon -lgdi32 -lwinmm"
make
make install-strip
#make check TESTSUITEFLAGS="--verbose --color=never"

export MINGW_BUNDLEDLLS_SEARCH_PATH=/mingw64/bin

cd ..
mkdir -p temp-bin-pdcurses/
cd temp-bin-pdcurses/
cp -r /mingw64/bin/{gsciteco.exe,sciteco.exe,grosciteco.tes,tedoc.tes} ./
# datadir is relative to bindir
cp -r /mingw64/bin/{lib,*.tmac} ./
cp /mingw64/bin/fallback.teco_ini .teco_ini
cp -r /mingw64/share/doc/sciteco/* ./
cp ../COPYING ../ChangeLog ./
cp /mingw64/bin/gspawn-win64-helper*.exe ./
# Collect DLLs for all included binaries
for f in *.exe; do ../contrib/mingw-bundledlls --copy $f; done
zip -9 -r ../sciteco-pdcurses_nightly_win64.zip .
cd ..

mkdir -p /opt/htdocs/downloads/nightly/
cp sciteco-pdcurses_nightly_win64.zip /opt/htdocs/downloads/nightly/

# FIXME: If we had a working bootstrapping build (where SciTECO
# is run under wine64), this should also be in a separate job
# so we don't have to install into the same root as for the PDCurses versions.
mkdir build-gtk
cd build-gtk
../configure --host=x86_64-w64-mingw32 \
             --with-interface=gtk --enable-html-docs \
             --with-scitecodatadir=. \
             --disable-bootstrap
make
make install-strip
#make check TESTSUITEFLAGS="--verbose --color=never"

export MINGW_BUNDLEDLLS_SEARCH_PATH=/mingw64/bin

cd ..
mkdir -p temp-bin-gtk/
cd temp-bin-gtk/
cp /mingw64/bin/{sciteco.exe,grosciteco.tes,tedoc.tes} ./
# datadir is relative to bindir
cp -r /mingw64/bin/{lib,*.tmac} ./
cp /mingw64/bin/fallback.teco_ini .teco_ini
cp /mingw64/bin/fallback.css ../win32/.teco_css .
cp -r /mingw64/share/doc/sciteco/* ./
cp ../COPYING ../ChangeLog ./
cp /mingw64/bin/gspawn-win64-helper*.exe ./
# Collect DLLs for all included binaries
for f in *.exe; do ../contrib/mingw-bundledlls --copy $f; done
#mkdir share
#cp /mingw64/share/loader.cache share/
#glib-compile-schemas /mingw64/share/glib-2.0/schemas
#mkdir -p share/glib-2.0
#cp /mingw64/share/glib-2.0/gschemas.compiled share/glib-2.0/
mkdir -p share/icons/Adwaita
# FIXME: It should be sufficient to package the SVG icons,
# but I cannot get it to work. Perhaps index.theme would have to be tweaked.
# We could also try to include a pure scalable icon theme.
#cp -r /mingw64/share/icons/Adwaita/{scalable*,index.theme} share/icons/Adwaita/
cp -r /mingw64/share/icons/Adwaita/* share/icons/Adwaita/
wine64 /mingw64/bin/gtk-update-icon-cache-3.0.exe share/icons/Adwaita/
# FIXME: It's possible to change the location of loaders.cache via $GDK_PIXBUF_MODULE_FILE.
# If we did that, we could avoid "reusing" the lib/ directory.
# This is important when somebody changes $SCITECOPATH.
cp /mingw64/lib/gdk-pixbuf-2.0/2.10.0/loaders/{pixbufloader_svg.dll,libpixbufloader-png.dll} .
# Collect DLLs for all pixbuf loaders into the root directory
for f in *pixbufloader*.dll; do ../contrib/mingw-bundledlls --copy $f; done
mkdir -p lib/gdk-pixbuf-2.0/2.10.0/loaders/
mv *pixbufloader*.dll lib/gdk-pixbuf-2.0/2.10.0/loaders/
cp ../win32/loaders.cache lib/gdk-pixbuf-2.0/2.10.0/
zip -9 -r ../sciteco-gtk3_nightly_win64.zip .
cd ..

mkdir -p /opt/htdocs/downloads/nightly/
cp sciteco-gtk3_nightly_win64.zip /opt/htdocs/downloads/nightly/