Skip to content

Commit 72b1397

Browse files
committed
Add script for producing and testing the dependencies tarball.
And update dependencies.txt for the current (5.13) build requirements.
1 parent f6d2eb3 commit 72b1397

File tree

3 files changed

+148
-48
lines changed

3 files changed

+148
-48
lines changed

README.markdown

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,43 +21,24 @@ on your system.
2121
##### Procedure #####
2222
1. Change the file versions in dependencies.txt to match the versions
2323
in the build you just made.
24-
2. Perform the following:
24+
Change GNC_VERSION in depstarball.sh to match the current or next
25+
release as appropriate. If that's not changing consider adding a
26+
suffix (e.g. 5.13-1) so that the new and old can coexist on sourceforge.
27+
2. Build the dependencies:
2528
```
2629
cd /Users/runner
2730
jhbuild --prefix /Users/runner/gnucash bootstrap-gtk-osx
2831
jhbuild --prefix /Users/runner/gnucash --moduleset=/Path/to/gnucash-on-osx/modules/gnucash.modules build meta-gnucash-dependencies
29-
cd gnucash/inst
30-
xargs < /Path/to/gnucash-on-osx/dependencies.txt tar -rf ~/gnucash-<version>-mac-dependencies.tar
31-
jhbuild --prefix /Users/runner/gnucash shell
32-
xz ~/gnucash-<version>-mac-dependencies.tar
3332
```
34-
##### Testing the tarball #####
35-
While still in the jhbuild shell:
36-
```
37-
cd /Users/runner/gnucash
38-
mkdir parked
39-
mkdir gc-tarball
40-
cd gc-tarball
41-
tar -xf gnucash-<version>-mac-dependencies.tar.xz
42-
cd ../inst
43-
mv lib ../parked
44-
mv include ../parked
45-
mv share ../parked
46-
ln -s /Users/runner/gnucash/gc-tarball/include .
47-
ln -s /Users/runner/gnucash/gc-tarball/lib .
48-
ln -s /Users/runner/gnucash/gc-tarball/share .
49-
cd ../src
50-
git clone https://github.com/gnucash/gnucash
51-
mkdir ../build/gnucash-git && cd ../build/gnucash-git
52-
```
53-
Configure, build, and test GnuCash. If things go wrong then you need
54-
to figure out what's missing, add it to `dependencies.txt`, regenerate
55-
the tarball, untar it in `gc-tarball` and try again.
33+
3. Run `depstarball.sh`. It uses absolute paths so it can be run from
34+
any directory. If GnuCash compiles and all the tests pass,
35+
proceed. If not then diagnose the problem, adjust dependencies.txt
36+
as needed, and try again.
5637

5738
##### Finish up #####
5839
1. Upload the result to the Dependencies folder in GnuCash's
5940
Sourceforge project.
6041
2. Change the dependencies file URI in
6142
`gnucash-git/.github/workflows/macos-tests.yaml` to match the file you
6243
just made, commit the result, and push it.
63-
3. Commit and push any changes you made to `dependencies.txt`.
44+
3. Commit and push any changes you made to `dependencies.txt` and `depstarball.sh`.

dependencies.txt

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ bin/aqebics-tool
55
bin/aqhbci-tool4
66
bin/aqofxconnect-tool
77
bin/aqpaypal-tool
8-
bin/arm-apple-darwin23.5.0-pkg-config
98
bin/ccache-swig
109
bin/cardcommander
1110
bin/chipcard-config
1211
bin/chipcard-tool
12+
bin/cmake
13+
bin/ctest
1314
bin/gettext
1415
bin/gio-querymodules
1516
bin/glib-compile-resources
@@ -24,12 +25,13 @@ bin/guile
2425
bin/guild
2526
bin/msgmerge
2627
bin/msgfmt
27-
bin/pkg-config
28-
bin/python3.11
28+
bin/pkgconf
29+
bin/python3.13
2930
bin/python3
3031
bin/python3-config
31-
bin/python3.11-config
32+
bin/python3.13-config
3233
bin/swig
34+
bin/xgettext
3335
bin/xsltproc
3436
lib/aqbanking/
3537
lib/dbd/libdbdpgsql.so
@@ -39,7 +41,7 @@ lib/gdk-pixbuf-2.0/
3941
lib/gio/
4042
lib/glib-2.0/
4143
lib/gtk-3.0/3.0.0/
42-
lib/guile/2.2/
44+
lib/guile/3.0/
4345
lib/gwenhywfar/
4446
lib/libaqbanking.dylib lib/libaqbanking.44.dylib
4547
lib/libatk-1.0.dylib lib/libatk-1.0.0.dylib
@@ -62,14 +64,14 @@ lib/libepoxy.dylib lib/libepoxy.0.dylib
6264
lib/libexslt.dylib lib/libexslt.0.dylib
6365
lib/libffi.dylib lib/libffi.8.dylib
6466
lib/libfontconfig.dylib lib/libfontconfig.1.dylib
65-
lib/libfreetype.dylib lib/libfreetype.6.dylib lib/libfreetype.6.20.0.dylib
67+
lib/libfreetype.dylib lib/libfreetype.6.dylib lib/libfreetype.6.20.2.dylib
6668
lib/libfribidi.dylib lib/libfribidi.0.dylib
67-
lib/libgc.dylib lib/libgc.1.dylib
69+
lib/libgc.dylib lib/libgc.1.dylib lib/libgc.1.5.3.dylib
6870
lib/libgcrypt.dylib lib/libgcrypt.20.dylib
6971
lib/libgdk-3.dylib lib/libgdk-3.0.dylib
7072
lib/libgdk_pixbuf-2.0.dylib lib/libgdk_pixbuf-2.0.0.dylib
71-
lib/libgettextsrc.dylib lib/libgettextsrc-0.22.3.dylib
72-
lib/libgettextlib.dylib lib/libgettextlib-0.22.3.dylib
73+
lib/libgettextsrc.dylib lib/libgettextsrc-0.23.1.dylib
74+
lib/libgettextlib.dylib lib/libgettextlib-0.23.1.dylib
7375
lib/libgio-2.0.dylib lib/libgio-2.0.0.dylib
7476
lib/libglib-2.0.dylib lib/libglib-2.0.0.dylib
7577
lib/libgmodule-2.0.dylib lib/libgmodule-2.0.0.dylib
@@ -80,22 +82,23 @@ lib/libgpg-error.dylib lib/libgpg-error.0.dylib
8082
lib/libgthread-2.0.dylib lib/libgthread-2.0.0.dylib
8183
lib/libgtk-3.dylib lib/libgtk-3.0.dylib
8284
lib/libgtkmacintegration-gtk3.dylib lib/libgtkmacintegration-gtk3.4.dylib
83-
lib/libguile-2.2.dylib lib/libguile-2.2.1.dylib
85+
lib/libguile-3.0.dylib lib/libguile-3.0.1.dylib
8486
lib/libgwengui-gtk3.dylib lib/libgwengui-gtk3.79.dylib
8587
lib/libgwenhywfar.dylib lib/libgwenhywfar.79.dylib
8688
lib/libharfbuzz-icu.dylib lib/libharfbuzz-icu.0.dylib
8789
lib/libharfbuzz.dylib lib/libharfbuzz.0.dylib
88-
lib/libhogweed.dylib lib/libhogweed.6.dylib lib/libhogweed.6.8.dylib
90+
lib/libhogweed.dylib lib/libhogweed.6.dylib lib/libhogweed.6.10.dylib
91+
lib/libiconv.dylib lib/libiconv.2.dylib
8992
lib/libicudata.dylib lib/libicudata.73.dylib lib/libicudata.73.2.dylib
9093
lib/libicui18n.dylib lib/libicui18n.73.dylib lib/libicui18n.73.2.dylib
9194
lib/libicuio.dylib lib/libicuio.73.dylib lib/libicuio.73.2.dylib
9295
lib/libicuuc.dylib lib/libicuuc.73.dylib lib/libicuuc.73.2.dylib
9396
lib/libintl.dylib lib/libintl.8.dylib
9497
lib/libjavascriptcoregtk-4.0.dylib lib/libjavascriptcoregtk-4.0.18.dylib lib/libjavascriptcoregtk-4.0.18.18.4.dylib
95-
lib/libjpeg.dylib lib/libjpeg.9.dylib
98+
lib/libjpeg.dylib lib/libjpeg.62.dylib lib/libjpeg.62.4.0.dylib
9699
lib/libltdl.dylib lib/libltdl.7.dylib
97100
lib/liblzma.dylib lib/liblzma.5.dylib
98-
lib/libnettle.dylib lib/libnettle.8.dylib lib/libnettle.8.8.dylib
101+
lib/libnettle.dylib lib/libnettle.8.dylib lib/libnettle.8.10.dylib
99102
lib/libofx.dylib lib/libofx.7.dylib
100103
lib/libosp.dylib lib/libosp.5.dylib
101104
lib/libp11-kit.dylib lib/libp11-kit.0.dylib
@@ -105,20 +108,22 @@ lib/libpangoft2-1.0.dylib lib/libpangoft2-1.0.0.dylib
105108
lib/libpcre.dylib lib/libpcre.1.dylib
106109
lib/libpcre2-8.dylib lib/libpcre2-8.0.dylib
107110
lib/libpixman-1.dylib lib/libpixman-1.0.dylib
111+
lib/libpkgconf.dylib lib/libpkgconf.5.dylib
108112
lib/libpng16.dylib lib/libpng16.16.dylib
109-
lib/libpq.dylib lib/libpq.5.dylib lib/libpq.5.12.dylib
113+
lib/libpq.dylib lib/libpq.5.dylib
110114
lib/libproxy.dylib lib/libproxy.1.dylib
111115
lib/libproxy/libpxbackend-1.0.dylib
112116
lib/libpsl.dylib lib/libpsl.5.dylib
117+
lib/libpython3.13.dylib
113118
lib/librsvg-2.dylib lib/librsvg-2.2.dylib
114119
lib/libsharpyuv.dylib lib/libsharpyuv.0.dylib
115120
lib/libsoup-2.4.dylib lib/libsoup-2.4.1.dylib
116-
lib/libsqlite3.dylib lib/libsqlite3.0.dylib
121+
lib/libsqlite3.dylib lib/libsqlite3.0.dylib lib/libsqlite3.3.49.1.dylib
117122
lib/libssl.dylib lib/libssl.3.dylib
118123
lib/libtasn1.dylib lib/libtasn1.6.dylib
119124
lib/libtextstyle.dylib lib/libtextstyle.0.dylib
120-
lib/libtiff.dylib lib/libtiff.6.dylib
121-
lib/libunistring.dylib lib/libunistring.2.dylib
125+
lib/libtiff.dylib lib/libtiff.6.dylib lib/libtiff.6.1.0.dylib
126+
lib/libunistring.dylib lib/libunistring.5.dylib
122127
lib/libwebkit2gtk-4.0.dylib lib/libwebkit2gtk-4.0.37.dylib lib/libwebkit2gtk-4.0.37.53.1.dylib
123128
lib/libwebp.dylib lib/libwebp.7.dylib
124129
lib/libwebpdemux.dylib lib/libwebpdemux.2.dylib
@@ -128,8 +133,8 @@ lib/libxmlsec1.dylib lib/libxmlsec1.1.dylib
128133
lib/libz.dylib lib/libz.1.dylib lib/libz.1.3.1.dylib
129134
lib/mariadb/libmariadb.dylib lib/mariadb/libmariadb.3.dylib lib/mariadb/libmysqlclient.dylib
130135
lib/pkgconfig/
136+
lib/python3.13/
131137
lib/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so
132-
include/python3.11/
133138
include/atk-1.0/
134139
include/libxml2/
135140
include/aqbanking6/
@@ -154,11 +159,14 @@ include/libsoup-2.4/
154159
include/libxml2/
155160
include/pango-1.0/
156161
include/pixman-1
162+
include/python3.13/
157163
include/unicode/
158164
include/webkitgtk-4.0/webkit2/
159165
include/webkitgtk-4.0/jsc/
166+
include/webp/
167+
share/cmake-3.31/
160168
share/gettext/
161-
share/gettext-0.22.3/
162-
share/guile/
169+
share/gettext-0.23.1/
170+
share/guile/3.0
163171
share/pkgconfig/
164172
share/swig/

depstarball.sh

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#!/usr/bin/env bash
2+
if [ -z "$JHBUILD_PREFIX" ]; then
3+
echo "This script requires that you be in a JHBuild shell for making dependencies"
4+
exit -1
5+
fi
6+
7+
GC_VERSION="5.13"
8+
SRC_URI="https://github.com/gnucash/gnucash"
9+
#Paths:
10+
ROOT_DIR="/Users/runner/gnucash"
11+
INST_DIR="$ROOT_DIR/inst"
12+
PARK_DIR="$ROOT_DIR/parked"
13+
TAR_DIR="$ROOT_DIR/gc-tarball"
14+
SRC_DIR="$ROOT_DIR/src/gnucash-git"
15+
BUILD_DIR="$ROOT_DIR/build/gnucash-git"
16+
DEPS_FILE="$HOME/Development/GTK-OSX/gnucash-on-osx/dependencies.txt"
17+
TARBALL="$HOME/gnucash-$GC_VERSION-mac-dependencies.tar"
18+
COMP_TARBALL="$TARBALL.xz"
19+
20+
if [ ! -d $INST_DIR ]; then
21+
mkdir -p $INST_DIR
22+
fi
23+
if [ ! -d $PARK_DIR ]; then
24+
mkdir -p $PARK_DIR
25+
fi
26+
if [ ! -d $TAR_DIR ]; then
27+
mkdir -p $TAR_DIR
28+
fi
29+
if [ ! -d $BUILD_DIR ]; then
30+
if [ ! -d $SRC_DIR ]; then
31+
mkdir -p $SRC_DIR
32+
pushd $SRC_DIR
33+
git clone $SRC_URI
34+
popd
35+
fi
36+
mkdir -p $BUILD_DIR
37+
fi
38+
39+
function reset_from_tarball
40+
{
41+
pushd $INST_DIR
42+
rm bin include lib share
43+
mv "$PARK_DIR/bin" .
44+
mv "$PARK_DIR/include" .
45+
mv "$PARK_DIR/lib" .
46+
mv "$PARK_DIR/share" .
47+
popd
48+
}
49+
50+
function enable_tarball
51+
{
52+
pushd $INST_DIR
53+
mv bin "$PARK_DIR"
54+
mv include "$PARK_DIR"
55+
mv lib "$PARK_DIR"
56+
mv share "$PARK_DIR"
57+
ln -s "$TAR_DIR/bin" .
58+
ln -s "$TAR_DIR/include" .
59+
ln -s "$TAR_DIR/lib" .
60+
ln -s "$TAR_DIR/share" .
61+
popd
62+
}
63+
64+
function create_tarball
65+
{
66+
pushd "$INST_DIR"
67+
if [ -f "$COMP_TARBALL" ]; then
68+
rm "$COMP_TARBALL"
69+
fi
70+
xargs < "$DEPS_FILE" tar -rf "$TARBALL"
71+
xz "$TARBALL"
72+
popd
73+
}
74+
75+
function test_tarball
76+
{
77+
pushd "$TAR_DIR"
78+
rm -rf *
79+
tar -xf "$COMP_TARBALL"
80+
popd
81+
enable_tarball
82+
pushd "$BUILD_DIR"
83+
rm -rf *
84+
cmake -G Ninja -DPython3_ROOT_DIR=$PREFIX -DPKG_CONFIG_EXECUTABLE=$PREFIX/bin/pkgconf -DCMAKE_PREFIX_PATH=$PRFIX -DCMAKE_INSTALL_PREFIX=$PREFIX \
85+
-DGTEST_ROOT=$SRCROOT/googletest -DWITH_PYTHON=YES $SRCROOT/gnucash-git \
86+
&& ninja && ninja check
87+
popd
88+
reset_from_tarball
89+
}
90+
91+
if [ "x$1" = "xuse_tarball" ] ; then
92+
enable_tarball
93+
exit 0
94+
fi
95+
96+
if [ "x$1" = "xrestore" ] ; then
97+
reset_from_tarball
98+
exit 0
99+
fi
100+
101+
if [ "x$1" = "xbuild" ] ; then
102+
test_tarball
103+
exit 0
104+
fi
105+
106+
if [ -L "$INST_DIR/bin" ]; then
107+
reset_from_tarball
108+
fi
109+
create_tarball
110+
test_tarball
111+
exit 0

0 commit comments

Comments
 (0)