mirror of https://gitee.com/openkylin/glib2.0.git
144 lines
2.8 KiB
Bash
Executable File
144 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# autopkgtest check: Build and run a program against glib, to verify that the
|
|
# headers and pkg-config file are installed correctly
|
|
# (C) 2012,2019 Canonical Ltd.
|
|
# (C) 2018 Simon McVittie
|
|
# Authors: Martin Pitt <martin.pitt@ubuntu.com>, Simon McVittie
|
|
|
|
set -eux
|
|
|
|
mode=dynamic
|
|
|
|
getopt_temp="$(getopt -o '' --long 'static' -n debian/tests/build -- "$@")"
|
|
eval set -- "$getopt_temp"
|
|
|
|
while true; do
|
|
case "$1" in
|
|
(--static)
|
|
mode=static
|
|
shift
|
|
continue
|
|
;;
|
|
|
|
(--)
|
|
shift
|
|
break
|
|
;;
|
|
|
|
(*)
|
|
echo "getopt: Internal error" >&2
|
|
exit 2
|
|
esac
|
|
done
|
|
|
|
WORKDIR=$(mktemp -d)
|
|
trap 'rm -rf "${WORKDIR}"' 0 INT QUIT ABRT PIPE TERM
|
|
cd "${WORKDIR}"
|
|
|
|
if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then
|
|
CROSS_COMPILE="${DEB_HOST_GNU_TYPE}-"
|
|
else
|
|
CROSS_COMPILE=
|
|
fi
|
|
|
|
cat <<EOF > glib.c
|
|
#include <glib.h>
|
|
|
|
int main(void)
|
|
{
|
|
g_assert_cmpint (g_strcmp0 (NULL, "hello"), ==, -1);
|
|
g_assert_cmpstr (g_getenv ("foo"), ==, "bar");
|
|
return 0;
|
|
}
|
|
EOF
|
|
cat <<EOF > gobject.c
|
|
#include <glib-object.h>
|
|
|
|
int main(void)
|
|
{
|
|
g_assert_cmpuint (G_TYPE_OBJECT, !=, G_TYPE_INVALID);
|
|
return 0;
|
|
}
|
|
EOF
|
|
cat <<EOF > gio.c
|
|
#include <gio/gio.h>
|
|
|
|
int main(void)
|
|
{
|
|
g_assert_cmpuint (G_TYPE_FILE, !=, G_TYPE_INVALID);
|
|
return 0;
|
|
}
|
|
EOF
|
|
cat <<EOF > gio-unix.c
|
|
#include <gio/gunixfdlist.h>
|
|
|
|
int main(void)
|
|
{
|
|
g_assert_cmpuint (G_TYPE_UNIX_FD_LIST, !=, G_TYPE_INVALID);
|
|
return 0;
|
|
}
|
|
EOF
|
|
cat <<EOF > gmodule.c
|
|
#include <gmodule.h>
|
|
|
|
int main(void)
|
|
{
|
|
GModule *module;
|
|
|
|
g_assert_true (g_module_supported ());
|
|
module = g_module_open (NULL, 0);
|
|
g_assert_nonnull (module);
|
|
g_assert_true (g_module_close (module));
|
|
return 0;
|
|
}
|
|
EOF
|
|
cat <<EOF > gthread.c
|
|
#include <glib.h>
|
|
|
|
static gpointer
|
|
other_cb (gpointer nil)
|
|
{
|
|
return "hello";
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
GThread *other;
|
|
gpointer ret;
|
|
|
|
other = g_thread_new ("other", other_cb, NULL);
|
|
g_assert_nonnull (other);
|
|
ret = g_thread_join (other);
|
|
g_assert_cmpstr (ret, ==, "hello");
|
|
return 0;
|
|
}
|
|
EOF
|
|
|
|
for lib in glib gobject gio gio-unix gmodule gthread; do
|
|
cflags=
|
|
pcflags=
|
|
packages="${lib}-2.0"
|
|
|
|
case "$mode" in
|
|
(static)
|
|
cflags=-static
|
|
pcflags=--static
|
|
|
|
case "$lib" in
|
|
(gio|gio-unix)
|
|
# GIO depends on libmount which no longer supports
|
|
# being linked statically
|
|
continue
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
# shellcheck disable=SC2046
|
|
${CROSS_COMPILE}gcc $cflags -o ${lib}-$mode ${lib}.c $(${CROSS_COMPILE}pkg-config $pcflags --cflags --libs ${packages})
|
|
echo "build ($lib, $mode): OK"
|
|
[ -x ${lib}-$mode ]
|
|
foo=bar ./${lib}-$mode
|
|
echo "run ($lib, $mode): OK"
|
|
done
|