1.1 --- a/Makefile.am Fri Mar 08 12:05:41 2019 +0000
1.2 +++ b/Makefile.am Fri Mar 08 13:50:07 2019 +0000
1.3 @@ -1,4 +1,4 @@
1.4 -SUBDIRS=plover plover-gtk tests setup update pre-inst app-manager plover-open
1.5 +SUBDIRS=plover plover-gtk pre-inst tests setup update app-manager plover-open
1.6
1.7 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
1.8
2.1 --- a/configure.ac Fri Mar 08 12:05:41 2019 +0000
2.2 +++ b/configure.ac Fri Mar 08 13:50:07 2019 +0000
2.3 @@ -25,6 +25,7 @@
2.4 tests/Makefile
2.5 tests/plover/Makefile
2.6 tests/plover-gtk/Makefile
2.7 +tests/pre-inst/Makefile
2.8 ])
2.9 PLOVER_MSWIN_MANIFEST([setup/setup.exe.manifest:setup/manifest.xml.in
2.10 update/update.exe.manifest:update/manifest.xml.in
3.1 --- a/plover/log.c Fri Mar 08 12:05:41 2019 +0000
3.2 +++ b/plover/log.c Fri Mar 08 13:50:07 2019 +0000
3.3 @@ -300,6 +300,8 @@
3.4 if (root)
3.5 {
3.6 base_file=g_file_new_for_uri(root);
3.7 + if (g_path_is_absolute(path))
3.8 + path=g_path_skip_root(path);
3.9 file=g_file_resolve_relative_path(base_file,path);
3.10 g_object_unref(base_file);
3.11 filename=g_file_get_path(file);
4.1 --- a/plover/util.c Fri Mar 08 12:05:41 2019 +0000
4.2 +++ b/plover/util.c Fri Mar 08 13:50:07 2019 +0000
4.3 @@ -117,7 +117,11 @@
4.4 return root;
4.5 }
4.6 #else
4.7 - return g_strdup("/var/lib/plover/root");
4.8 + const char *prefix;
4.9 + prefix=g_getenv("PLOVER_PRE_INSTALL_PREFIX");
4.10 + if (!prefix)
4.11 + prefix="/var/lib/plover/root";
4.12 + return g_strdup(prefix);
4.13 #endif
4.14 }
4.15
5.1 --- a/pre-inst/pre-inst.c Fri Mar 08 12:05:41 2019 +0000
5.2 +++ b/pre-inst/pre-inst.c Fri Mar 08 13:50:07 2019 +0000
5.3 @@ -358,7 +358,7 @@
5.4 int exit_status;
5.5 #endif
5.6 GError *tmp_error=NULL;
5.7 - if (argc<1)
5.8 + if (argc<2)
5.9 {
5.10 g_set_error_literal(error,G_FILE_ERROR,G_FILE_ERROR_NOENT,
5.11 "--post: No command given");
5.12 @@ -519,7 +519,7 @@
5.13 success=!!pre_install(path);
5.14 #endif
5.15 }
5.16 - if (enable_post && !run_post(argc-1,argv+1,success,&error))
5.17 + if (enable_post && !run_post(argc,argv,success,&error))
5.18 {
5.19 #ifndef WIN32
5.20 fprintf(stderr,"Error in post: %s\n",error->message);
6.1 --- a/tests/Makefile.am Fri Mar 08 12:05:41 2019 +0000
6.2 +++ b/tests/Makefile.am Fri Mar 08 13:50:07 2019 +0000
6.3 @@ -1,4 +1,4 @@
6.4 -SUBDIRS = . plover plover-gtk
6.5 +SUBDIRS = . plover plover-gtk pre-inst
6.6
6.7 EXTRA_DIST = zsh.spec zsh2.spec zip.spec zap.spec filesystem.spec zappy.spec \
6.8 zappy2.spec unsatisfiable.spec uninstallable.spec badpostun.spec comps.xml \
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/tests/pre-inst/Makefile.am Fri Mar 08 13:50:07 2019 +0000
7.3 @@ -0,0 +1,18 @@
7.4 +check_SCRIPTS=no-post post
7.5 +
7.6 +no-post: no-post.sh Makefile
7.7 + cp $(srcdir)/no-post.sh $@
7.8 + chmod +x $@
7.9 +
7.10 +post: post.sh Makefile
7.11 + cp $(srcdir)/post.sh $@
7.12 + chmod +x $@
7.13 +
7.14 +TESTS=$(check_SCRIPTS)
7.15 +
7.16 +EXTRA_DIST=no-post.sh post.sh
7.17 +
7.18 +clean-local:
7.19 + rm -f razor-set-*
7.20 +
7.21 +MOSTLYCLEANFILES=$(check_SCRIPTS)
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2 +++ b/tests/pre-inst/no-post.sh Fri Mar 08 13:50:07 2019 +0000
8.3 @@ -0,0 +1,30 @@
8.4 +#!/bin/sh
8.5 +set -x
8.6 +tmpdir=`mktemp -dt` || exit 1
8.7 +if [ $# -gt 0 ]; then
8.8 + cp "$1" $tmpdir/pre-inst
8.9 +else
8.10 + cp ../../pre-inst/pre-inst $tmpdir/pre-inst
8.11 +fi
8.12 +mkdir $tmpdir/repodata
8.13 +cat << EOF > $tmpdir/repodata/primary.xml
8.14 +<?xml version="1.0" encoding="UTF-8"?>
8.15 +<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="0">
8.16 +</metadata>
8.17 +EOF
8.18 +cat << EOF > $tmpdir/repodata/filelists.xml
8.19 +<?xml version="1.0" encoding="UTF-8"?>
8.20 +<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="0">
8.21 +</filelists>
8.22 +EOF
8.23 +gzip $tmpdir/repodata/primary.xml $tmpdir/repodata/filelists.xml
8.24 +pre_inst="$tmpdir/pre-inst"
8.25 +export PLOVER_PRE_INSTALL_PREFIX="$tmpdir"
8.26 +$pre_inst --post
8.27 +if grep -s "^Error in post: --post: No command given$" "$tmpdir/var/log/pre-install"; then
8.28 + rm -rf "$tmpdir"
8.29 + exit 0
8.30 +else
8.31 + cat "$tmpdir/var/log/pre-install"
8.32 + exit 1
8.33 +fi
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2 +++ b/tests/pre-inst/post.sh Fri Mar 08 13:50:07 2019 +0000
9.3 @@ -0,0 +1,30 @@
9.4 +#!/bin/sh
9.5 +set -x
9.6 +tmpdir=`mktemp -dt` || exit 1
9.7 +if [ $# -gt 0 ]; then
9.8 + cp "$1" $tmpdir/pre-inst
9.9 +else
9.10 + cp ../../pre-inst/pre-inst $tmpdir/pre-inst
9.11 +fi
9.12 +mkdir $tmpdir/repodata
9.13 +cat << EOF > $tmpdir/repodata/primary.xml
9.14 +<?xml version="1.0" encoding="UTF-8"?>
9.15 +<metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="0">
9.16 +</metadata>
9.17 +EOF
9.18 +cat << EOF > $tmpdir/repodata/filelists.xml
9.19 +<?xml version="1.0" encoding="UTF-8"?>
9.20 +<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="0">
9.21 +</filelists>
9.22 +EOF
9.23 +gzip $tmpdir/repodata/primary.xml $tmpdir/repodata/filelists.xml
9.24 +pre_inst="$tmpdir/pre-inst"
9.25 +export PLOVER_PRE_INSTALL_PREFIX="$tmpdir"
9.26 +$pre_inst --post "touch $tmpdir/xyzzy"
9.27 +if [ -f $tmpdir/xyzzy ]; then
9.28 + rm -rf "$tmpdir"
9.29 + exit 0
9.30 +else
9.31 + cat "$tmpdir/var/log/pre-install"
9.32 + exit 1
9.33 +fi