Skip to content
Snippets Groups Projects
Commit 51535a21 authored by Simon McVittie's avatar Simon McVittie
Browse files

Consistently use CAPSULE_VERSION_TOOL, C_SYMBOLS_TOOL for tools


We use CAPSULE_VERSION in the stub library for the version of the
library being encapsulated, so we can't use that variable name for
the tool.

Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
parent 044762e7
Branches
Tags
1 merge request!311Build capsule-capture-libs from a bundled copy of libcapsule
......@@ -11,8 +11,10 @@ usage ()
cat << EOF
Usage: $me [OPTIONS] TARGET [TREE [PROJECT-NAME]]"
Options:
--capsule-symbols=PATH Use replacement capsule-symbols(1)
--capsule-version=PATH Use replacement capsule-symbols(1)
--capsule-symbols-tool=PATH
Use replacement capsule-symbols(1)
--capsule-version-tool=PATH
Use replacement capsule-version(1)
Positional parameters:
TARGET SONAME of the library to be proxied
TREE Chroot or container to find libraries in,
......@@ -23,7 +25,7 @@ EOF
}
getopt_temp="$(getopt -o 'h' \
-l 'help' \
-l 'capsule-symbols-tool,capsule-version-tool,help' \
-n "$me" -- "$@")"
eval set -- "$getopt_temp"
......@@ -34,14 +36,14 @@ do
usage 0;
;;
(--capsule-symbols)
CAPSULE_SYMBOLS="$2"
(--capsule-symbols-tool)
CAPSULE_SYMBOLS_TOOL="$2"
shift 2;
continue;
;;
(--capsule-version)
CAPSULE_VERSION="$2"
(--capsule-version-tool)
CAPSULE_VERSION_TOOL="$2"
shift 2;
continue;
;;
......@@ -74,10 +76,10 @@ dest=${3:-$base-proxy};
ver=0;
maj=0;
: "${CAPSULE_SYMBOLS:="$libexec/capsule-symbols"}"
: "${CAPSULE_VERSION:="$libexec/capsule-version"}"
: "${CAPSULE_SYMBOLS_TOOL:="$libexec/capsule-symbols"}"
: "${CAPSULE_VERSION_TOOL:="$libexec/capsule-version"}"
read x x ver x < <("$CAPSULE_VERSION" "$target" "$tree");
read x x ver x < <("$CAPSULE_VERSION_TOOL" "$target" "$tree");
maj=${ver%%.*};
......@@ -114,7 +116,7 @@ EOF
echo Extracting dynamic symbols from $tree : $target;
"$CAPSULE_SYMBOLS" "$target" "$tree" > "shim/$base.so.symbols";
"$CAPSULE_SYMBOLS_TOOL" "$target" "$tree" > "shim/$base.so.symbols";
echo Preparing proxy source files
touch shim/$base.so.c.{shared,excluded};
......
......@@ -30,7 +30,8 @@ usage ()
cat << EOF
Usage: $me [OPTIONS] TARGET EXCLUDES EXPORTS OUTPUT [DSO-VERSION [TREE]]"
Options:
--capsule-symbols=PATH Use replacement capsule-symbols(1)
--capsule-symbols-tool=PATH
Use replacement capsule-symbols(1)
--dlopen-implementation=PATH
An implementation of _dlopen()
[default: OUTPUT.dlopen]
......@@ -72,15 +73,15 @@ EOF
update_symbols=
getopt_temp="$(getopt -o 'h' \
-l 'capsule-symbols:,search-tree:,runtime-tree:,dlopen-implementation:,dlsym-implementation:,symbols-from:,update-symbols,no-update-symbols,help' \
-l 'capsule-symbols-tool:,search-tree:,runtime-tree:,dlopen-implementation:,dlsym-implementation:,symbols-from:,update-symbols,no-update-symbols,help' \
-n "$me" -- "$@")"
eval set -- "$getopt_temp"
while true;
do
case "$1" in
(--capsule-symbols)
CAPSULE_SYMBOLS="$2"
(--capsule-symbols-tool)
CAPSULE_SYMBOLS_TOOL="$2"
shift 2;
continue;
;;
......@@ -142,7 +143,7 @@ do
esac
done
: "${CAPSULE_SYMBOLS:="$top/capsule-symbols"}"
: "${CAPSULE_SYMBOLS_TOOL:="$top/capsule-symbols"}"
if [ "$#" -lt 4 ] || [ "$#" -gt 6 ];
then
......@@ -215,11 +216,11 @@ then
do
if [ x$V = x1 ];
then
echo " $CAPSULE_SYMBOLS $pt $search_tree" >&2;
echo " $CAPSULE_SYMBOLS_TOOL $pt $search_tree" >&2;
else
echo " SYMBOLS $pt $search_tree" >&2;
fi;
$CAPSULE_SYMBOLS $pt $search_tree || exit 1;
$CAPSULE_SYMBOLS_TOOL $pt $search_tree || exit 1;
done) > $symbol_file.tmp;
then
mv $symbol_file.tmp $symbol_file;
......
......@@ -39,28 +39,28 @@ mkdir($host);
my $libexecdir = `pkg-config --variable=libexecdir capsule`;
chomp $libexecdir;
my $CAPSULE_SYMBOLS = "$libexecdir/capsule-symbols";
my $CAPSULE_SYMBOLS_TOOL = "$libexecdir/capsule-symbols";
# We need a well-behaved library with a simple ABI to inspect. Let's use
# libcapsule itself :-)
my $output;
run_ok([qw(bwrap --ro-bind / / --ro-bind /), $host,
qw(--dev-bind /dev /dev),
$CAPSULE_SYMBOLS, 'libcapsule.so.0', $host], '>', \$output);
$CAPSULE_SYMBOLS_TOOL, 'libcapsule.so.0', $host], '>', \$output);
diag_multiline $output;
like($output, qr{^capsule_init $}m, "capsule_init is an unversioned symbol");
unlike($output, qr{^(?!capsule)}m, "all of libcapsule's ABI matches /^capsule/");
# Try the same thing without a prefix
run_ok([$CAPSULE_SYMBOLS, 'libcapsule.so.0', '/'], '>', \$output);
run_ok([$CAPSULE_SYMBOLS_TOOL, 'libcapsule.so.0', '/'], '>', \$output);
diag_multiline $output;
like($output, qr{^capsule_init $}m, "capsule_init is an unversioned symbol");
unlike($output, qr{^(?!capsule)}m, "all of libcapsule's ABI matches /^capsule/");
# How about versioned symbols?
run_ok([$CAPSULE_SYMBOLS, 'libjpeg.so.62', '/'], '>', \$output);
run_ok([$CAPSULE_SYMBOLS_TOOL, 'libjpeg.so.62', '/'], '>', \$output);
diag_multiline $output;
like($output, qr{^jpeg_destroy \@\@LIBJPEG_6\.2$}m,
......
......@@ -39,12 +39,12 @@ mkdir($host);
my $libexecdir = `pkg-config --variable=libexecdir capsule`;
chomp $libexecdir;
my $CAPSULE_VERSION = "$libexecdir/capsule-version";
my $CAPSULE_VERSION_TOOL = "$libexecdir/capsule-version";
my $output;
my ($root, $soname, $version, $path);
run_ok([qw(bwrap --ro-bind / / --ro-bind /), $host,
qw(--dev-bind /dev /dev), $CAPSULE_VERSION, 'libz.so.1',
qw(--dev-bind /dev /dev), $CAPSULE_VERSION_TOOL, 'libz.so.1',
$host], '>', \$output);
like($output, qr{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$};
......@@ -60,7 +60,7 @@ $path =~ s/^\Q$host\E//;
ok(-e $path);
# Try the same thing without a prefix
run_ok([$CAPSULE_VERSION, 'libz.so.1', '/'], '>', \$output);
run_ok([$CAPSULE_VERSION_TOOL, 'libz.so.1', '/'], '>', \$output);
like($output, qr{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......@@ -81,7 +81,7 @@ like($4, qr{^(//?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$version\E)$});
ok(-e $1);
# A different way
run_ok([$CAPSULE_VERSION, 'libz.so.1', ''], '>', \$output);
run_ok([$CAPSULE_VERSION_TOOL, 'libz.so.1', ''], '>', \$output);
like($output, qr{^(\S*)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S*)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......@@ -102,7 +102,7 @@ like($path, qr{^(//?(?:usr/)?lib/.*-linux-gnu.*/libz\.so\.\Q$version\E)$});
ok(-e $path);
# Another different way
run_ok([$CAPSULE_VERSION, 'libz.so.1'], '>', \$output);
run_ok([$CAPSULE_VERSION_TOOL, 'libz.so.1'], '>', \$output);
like($output, qr{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$});
$output =~ m{^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$};
$root = $1;
......
......@@ -60,7 +60,7 @@ Mount I<APP> on F</app>
Look for B<capsule-version>(1) in I<PATH>
=item --capsule-version=I<EXECUTABLE>
=item --capsule-version-tool=I<EXECUTABLE>
Run I<EXECUTABLE> as B<capsule-version>(1)
......@@ -203,7 +203,7 @@ sub run_in_container {
return run([@bwrap, @$argv], @run_params);
}
my $CAPSULE_VERSION;
my $CAPSULE_VERSION_TOOL;
=item get_lib_implementation(I<SONAME>, I<TREE>)
......@@ -220,7 +220,7 @@ sub get_lib_implementation {
my $sysroot = $tree;
if (-d "$tree/usr") {
run([$CAPSULE_VERSION, $soname, $sysroot], '>', \$output);
run([$CAPSULE_VERSION_TOOL, $soname, $sysroot], '>', \$output);
}
else {
$sysroot = '/tmp/sysroot';
......@@ -230,7 +230,7 @@ sub get_lib_implementation {
--symlink usr/etc /tmp/sysroot/etc
--symlink usr/var /tmp/sysroot/var
--bind), $tree, '/tmp/sysroot/usr',
$CAPSULE_VERSION, $soname, '/tmp/sysroot'], '>', \$output);
$CAPSULE_VERSION_TOOL, $soname, '/tmp/sysroot'], '>', \$output);
}
chomp $output;
......@@ -682,7 +682,7 @@ my $capsule_libexecdir = '/usr/lib/libcapsule';
GetOptions(
'app=s' => \$app,
'capsule-libexecdir=s' => \$capsule_libexecdir,
'capsule-version=s' => \$CAPSULE_VERSION,
'capsule-version-tool=s' => \$CAPSULE_VERSION_TOOL,
'container=s' => \$container_tree,
'flatpak-app=s' => \$flatpak_app,
'flatpak-runtime=s' => \$flatpak_runtime,
......@@ -704,8 +704,8 @@ if (defined $flatpak_runtime) {
$container_tree = "$data_home/flatpak/runtime/$flatpak_runtime/active/files";
}
$CAPSULE_VERSION = "$capsule_libexecdir/capsule-version"
unless defined $CAPSULE_VERSION;
$CAPSULE_VERSION_TOOL = "$capsule_libexecdir/capsule-version"
unless defined $CAPSULE_VERSION_TOOL;
$app = "$data_home/flatpak/app/org.debian.packages.mesa_utils/$arch/master/active/files"
unless defined $app;
$container_tree = "$data_home/flatpak/runtime/net.debian.flatpak.Games.Platform/$arch/stretch/active/files"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment