Skip to content

Commit 65a5042

Browse files
authored
Merge pull request #19 from linuxdeploy/pkgconf_wrapper
Add get_pkgconf_variable function
2 parents 88239cf + 21325db commit 65a5042

File tree

1 file changed

+33
-16
lines changed

1 file changed

+33
-16
lines changed

linuxdeploy-plugin-gtk.sh

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,23 @@ show_usage() {
1616
echo "Bundles resources for applications that use Gtk 2 or 3 into an AppDir"
1717
}
1818

19+
get_pkgconf_variable() {
20+
local variable="$1"
21+
local library="$2"
22+
local default_path="$3"
23+
24+
path="$("$PKG_CONFIG" --variable="$variable" "$library")"
25+
if [ -n "$path" ]; then
26+
echo "$path"
27+
elif [ -n "$default_path" ]; then
28+
echo "$default_path"
29+
else
30+
echo "$0: there is no '$variable' variable for '$library' library." > /dev/stderr
31+
echo "Please check the '$library.pc' file is present in \$PKG_CONFIG_PATH (you may need to install the appropriate -dev/-devel package)." > /dev/stderr
32+
exit 1
33+
fi
34+
}
35+
1936
copy_tree() {
2037
local src=("${@:1:$#-1}")
2138
local dst="${*:$#}"
@@ -120,19 +137,19 @@ export XDG_DATA_DIRS="$APPDIR/usr/share:/usr/share:$XDG_DATA_DIRS" # g_get_syste
120137
EOF
121138

122139
echo "Installing GLib schemas"
123-
glib_schemasdir="$("$PKG_CONFIG" --variable=schemasdir gio-2.0)"
124-
[ -z "$glib_schemasdir" ] && glib_schemasdir="/usr/share/glib-2.0/schemas" # Fix for Ubuntu 16.04
140+
# Note: schemasdir is undefined on Ubuntu 16.04
141+
glib_schemasdir="$(get_pkgconf_variable "schemasdir" "gio-2.0" "/usr/share/glib-2.0/schemas")"
125142
copy_tree "$glib_schemasdir" "$APPDIR/"
126143
glib-compile-schemas "$APPDIR/$glib_schemasdir"
127144
cat >> "$HOOKFILE" <<EOF
128145
export GSETTINGS_SCHEMA_DIR="\$APPDIR/$glib_schemasdir"
129146
EOF
130147

131148
echo "Installing GTK 3.0 modules"
132-
gtk3_exec_prefix="$("$PKG_CONFIG" --variable=exec_prefix gtk+-3.0)"
133-
gtk3_libdir="$("$PKG_CONFIG" --variable=libdir gtk+-3.0)/gtk-3.0"
134-
gtk3_immodulesdir="$gtk3_libdir/$("$PKG_CONFIG" --variable=gtk_binary_version gtk+-3.0)/immodules"
135-
gtk3_printbackendsdir="$gtk3_libdir/$("$PKG_CONFIG" --variable=gtk_binary_version gtk+-3.0)/printbackends"
149+
gtk3_exec_prefix="$(get_pkgconf_variable "exec_prefix" "gtk+-3.0")"
150+
gtk3_libdir="$(get_pkgconf_variable "libdir" "gtk+-3.0")/gtk-3.0"
151+
gtk3_immodulesdir="$gtk3_libdir/$(get_pkgconf_variable "gtk_binary_version" "gtk+-3.0")/immodules"
152+
gtk3_printbackendsdir="$gtk3_libdir/$(get_pkgconf_variable "gtk_binary_version" "gtk+-3.0")/printbackends"
136153
gtk3_immodules_cache_file="$(dirname "$gtk3_immodulesdir")/immodules.cache"
137154
gtk3_immodules_query="$(search_tool "gtk-query-immodules-3.0" "libgtk-3-0")"
138155
copy_tree "$gtk3_libdir" "$APPDIR/"
@@ -154,10 +171,10 @@ if [ ! -f "$APPDIR/$gtk3_immodules_cache_file" ]; then
154171
fi
155172

156173
echo "Installing GDK PixBufs"
157-
gdk_libdir="$("$PKG_CONFIG" --variable=libdir gdk-pixbuf-2.0)"
158-
gdk_pixbuf_binarydir="$("$PKG_CONFIG" --variable=gdk_pixbuf_binarydir gdk-pixbuf-2.0)"
159-
gdk_pixbuf_cache_file="$("$PKG_CONFIG" --variable=gdk_pixbuf_cache_file gdk-pixbuf-2.0)"
160-
gdk_pixbuf_moduledir="$("$PKG_CONFIG" --variable=gdk_pixbuf_moduledir gdk-pixbuf-2.0)"
174+
gdk_libdir="$(get_pkgconf_variable "libdir" "gdk-pixbuf-2.0")"
175+
gdk_pixbuf_binarydir="$(get_pkgconf_variable "gdk_pixbuf_binarydir" "gdk-pixbuf-2.0")"
176+
gdk_pixbuf_cache_file="$(get_pkgconf_variable "gdk_pixbuf_cache_file" "gdk-pixbuf-2.0")"
177+
gdk_pixbuf_moduledir="$(get_pkgconf_variable "gdk_pixbuf_moduledir" "gdk-pixbuf-2.0")"
161178
# Note: gdk_pixbuf_query_loaders variable is not defined on some systems
162179
gdk_pixbuf_query="$(search_tool "gdk-pixbuf-query-loaders" "gdk-pixbuf-2.0")"
163180
copy_tree "$gdk_pixbuf_binarydir" "$APPDIR/"
@@ -177,12 +194,12 @@ if [ ! -f "$APPDIR/$gdk_pixbuf_cache_file" ]; then
177194
fi
178195

179196
echo "Copying more libraries"
180-
gobject_libdir="$("$PKG_CONFIG" --variable=libdir gobject-2.0)"
181-
gio_libdir="$("$PKG_CONFIG" --variable=libdir gio-2.0)"
182-
librsvg_libdir="$("$PKG_CONFIG" --variable=libdir librsvg-2.0)"
183-
pango_libdir="$("$PKG_CONFIG" --variable=libdir pango)"
184-
pangocairo_libdir="$("$PKG_CONFIG" --variable=libdir pangocairo)"
185-
pangoft2_libdir="$("$PKG_CONFIG" --variable=libdir pangoft2)"
197+
gobject_libdir="$(get_pkgconf_variable "libdir" "gobject-2.0")"
198+
gio_libdir="$(get_pkgconf_variable "libdir" "gio-2.0")"
199+
librsvg_libdir="$(get_pkgconf_variable "libdir" "librsvg-2.0")"
200+
pango_libdir="$(get_pkgconf_variable "libdir" "pango")"
201+
pangocairo_libdir="$(get_pkgconf_variable "libdir" "pangocairo")"
202+
pangoft2_libdir="$(get_pkgconf_variable "libdir" "pangoft2")"
186203
FIND_ARRAY=(
187204
"$gdk_libdir" "libgdk_pixbuf-*.so*"
188205
"$gobject_libdir" "libgobject-*.so*"

0 commit comments

Comments
 (0)