On Tue, Mar 14, 2017 at 09:35:37AM +0100, Reinhold Straub wrote: > ok? > > On 06.03.17 18:18, Reinhold Straub wrote: > > Hi all, > > > > pdfgrep has been updated to v. 2.0.1 > > > > It has a new option: --cache, which needs additional dependencies and some > > modification to the pledge(2) syscalls. > > > > Most of our previous patches have been accepted upstream.
Thanks. Your patch didn't apply cleanly, so I regenerated it, see below. Apply with 'patch -E'. Your diff looks good and the port builds fine and all tests pass. However, I ran into the following problem with any pdf file: $ LC_CTYPE=en_US.UTF-8 pdfgrep RFC /tmp/slides.pdf terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abort trap (core dumped) This is new, the old port works fine in the UTF-8 locale. Unsurprisingly, the problem is the locale call in src/pdfgrep.cc 434 // Set locale to user-preference. If this locale is an UTF-8 locale, the 435 // regex-functions regcomp/regexec become unicode aware, which means 436 // e.g. that '.' will match a unicode character, not a single byte. 437 locale::global(locale("")); commenting it out works around the problem. I have no idea what the proper fix is. FWIW here's the backtrace which isn't that useful thanks to the Dwarf Error: (gdb) bt #0 0x0000069bf4e4dd2a in thrkill () at <stdin>:2 #1 0x0000069bf4e608f9 in *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:52 #2 0x0000069bf87feef5 in __gnu_cxx::__verbose_terminate_handler () at /usr/obj/ports/gcc-4.9.4/gcc-4.9.4/libstdc++-v3/libsupc++/vterminate.cc:95 Die: DW_TAG_unspecified_type (abbrev = 26, offset = 139365) has children: FALSE attributes: DW_AT_name (DW_FORM_strp) string: "decltype(nullptr)" Dwarf Error: Cannot find type of die [in module /usr/local/lib/libestdc++.so.17.0] Index: Makefile =================================================================== RCS file: /var/cvs/ports/textproc/pdfgrep/Makefile,v retrieving revision 1.5 diff -u -p -r1.5 Makefile --- Makefile 15 Jan 2016 19:57:24 -0000 1.5 +++ Makefile 14 Mar 2017 09:37:14 -0000 @@ -2,7 +2,7 @@ COMMENT = tool to search text in PDF files -DISTNAME = pdfgrep-1.4.1 +DISTNAME = pdfgrep-2.0.1 CATEGORIES = textproc @@ -18,11 +18,12 @@ MODGCC4_ARCHS = * MODGCC4_LANGS = c++ # uses pledge() -WANTLIB += c m pthread poppler-cpp pcre +WANTLIB += c m pthread poppler-cpp pcre gcrypt gpg-error MASTER_SITES = https://pdfgrep.org/download/ -LIB_DEPENDS = print/poppler +LIB_DEPENDS = print/poppler \ + security/libgcrypt TEST_DEPENDS = devel/dejagnu \ print/texlive/base Index: distinfo =================================================================== RCS file: /var/cvs/ports/textproc/pdfgrep/distinfo,v retrieving revision 1.3 diff -u -p -r1.3 distinfo --- distinfo 15 Jan 2016 19:42:40 -0000 1.3 +++ distinfo 14 Mar 2017 09:34:21 -0000 @@ -1,2 +1,2 @@ -SHA256 (pdfgrep-1.4.1.tar.gz) = 2wSiEOa7e3fNbFSxfw9v7Q0SOoX5elQbJwc2pdOEDyw= -SIZE (pdfgrep-1.4.1.tar.gz) = 151926 +SHA256 (pdfgrep-2.0.1.tar.gz) = A3DXRLMHLUc4Pb7Sy5yLC2S4PAhNpaiWH41Lx2aelB4= +SIZE (pdfgrep-2.0.1.tar.gz) = 187217 Index: patches/patch-src_pdfgrep_cc =================================================================== RCS file: /var/cvs/ports/textproc/pdfgrep/patches/patch-src_pdfgrep_cc,v retrieving revision 1.1 diff -u -p -r1.1 patch-src_pdfgrep_cc --- patches/patch-src_pdfgrep_cc 15 Jan 2016 19:42:40 -0000 1.1 +++ patches/patch-src_pdfgrep_cc 14 Mar 2017 10:32:18 -0000 @@ -1,27 +1,40 @@ -$OpenBSD: patch-src_pdfgrep_cc,v 1.1 2016/01/15 19:42:40 sthen Exp $ ---- src/pdfgrep.cc.orig Wed Sep 16 21:06:49 2015 -+++ src/pdfgrep.cc Fri Jan 15 11:39:19 2016 -@@ -569,6 +569,11 @@ void handle_poppler_errors(const std::string &msg, voi - +$OpenBSD$ +--- src/pdfgrep.cc.orig Sat Mar 4 09:11:53 2017 ++++ src/pdfgrep.cc Tue Mar 14 11:32:03 2017 +@@ -423,6 +423,12 @@ static void handle_poppler_errors(const string &msg, v int main(int argc, char** argv) { -+ if (pledge("stdio rpath tty", NULL) == -1) { + Options options; ++ ++ if (pledge("stdio rpath wpath cpath tty", NULL) == -1) { + fprintf (stderr, "pdfgrep: pledge\n"); + exit (1); + } + - init_colors(); + init_colors(options.outconf.colors); - enum re_engine_type { -@@ -773,6 +778,11 @@ int main(int argc, char** argv) - } else if (context == -2) { - // on non-terminals, always print the whole line - context = -1; -+ } -+ -+ if (pledge("stdio rpath", NULL) == -1) { + // Set locale to user-preference. If this locale is an UTF-8 locale, the +@@ -649,6 +655,11 @@ int main(int argc, char** argv) + bool color_tty = isatty(STDOUT_FILENO) && getenv("TERM") && + strcmp(getenv("TERM"), "dumb"); + ++ if (pledge("stdio rpath wpath cpath", NULL) == -1) { + fprintf (stderr, "pdfgrep: pledge\n"); + exit (1); ++ } ++ + options.outconf.color = + use_colors == COLOR_ALWAYS + || (use_colors == COLOR_AUTO && color_tty); +@@ -689,6 +700,11 @@ int main(int argc, char** argv) + char *limitstr = getenv("PDFGREP_CACHE_LIMIT"); + unsigned int limit = limitstr ? strtoul(limitstr, NULL, 10) : 200; + limit_cachesize(options.cache_directory.c_str(), limit); ++ } ++ } else { ++ if (pledge("stdio rpath", NULL) == -1) { ++ fprintf (stderr, "pdfgrep: pledge\n"); ++ exit (1); + } } - if (excludes_empty(includes)) Index: patches/patch-src_regengine_cc =================================================================== RCS file: patches/patch-src_regengine_cc diff -N patches/patch-src_regengine_cc --- patches/patch-src_regengine_cc 15 Jan 2016 19:42:40 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ -$OpenBSD: patch-src_regengine_cc,v 1.1 2016/01/15 19:42:40 sthen Exp $ - -Convert empty expressions into something that regex(3) will accept. - ---- src/regengine.cc.orig Fri Jan 15 19:37:30 2016 -+++ src/regengine.cc Fri Jan 15 19:38:06 2016 -@@ -34,6 +34,9 @@ PosixRegex::PosixRegex(const char *pattern, bool case_ - { - int regex_flags = REG_EXTENDED | (case_insensitive ? REG_ICASE : 0); - -+ if (strncmp(pattern, "", 2) == 0) { -+ pattern = "()"; -+ } - int err = regcomp(&this->regex, pattern, regex_flags); - if(err) { - char err_msg[256]; Index: patches/patch-testsuite_Makefile_in =================================================================== RCS file: patches/patch-testsuite_Makefile_in diff -N patches/patch-testsuite_Makefile_in --- patches/patch-testsuite_Makefile_in 15 Jan 2016 19:42:40 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-testsuite_Makefile_in,v 1.1 2016/01/15 19:42:40 sthen Exp $ ---- testsuite/Makefile.in.orig Tue Sep 29 18:18:42 2015 -+++ testsuite/Makefile.in Tue Sep 29 18:18:27 2015 -@@ -643,7 +643,7 @@ uninstall-am: - .PRECIOUS: Makefile - - --export DEJAGNU -+# export DEJAGNU - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. Index: patches/patch-testsuite_lib_pdfgrep_exp =================================================================== RCS file: patches/patch-testsuite_lib_pdfgrep_exp diff -N patches/patch-testsuite_lib_pdfgrep_exp --- patches/patch-testsuite_lib_pdfgrep_exp 15 Jan 2016 19:42:40 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-testsuite_lib_pdfgrep_exp,v 1.1 2016/01/15 19:42:40 sthen Exp $ ---- testsuite/lib/pdfgrep.exp.orig Wed Jan 13 15:06:57 2016 -+++ testsuite/lib/pdfgrep.exp Wed Jan 13 15:12:42 2016 -@@ -213,7 +213,7 @@ proc reset_configuration {} { - - # The directory where the PDFs will be generated. - # NOTE This will frequently be removed, so don't put important data there --set pdfdir [exec mktemp --tmpdir -d pdfgrep_tests.XXXXXXXXXX] -+set pdfdir [exec mktemp -t -d pdfgrep_tests.XXXXXXXXXX] - - - # Delete $pdfdir recursively and create it anew Index: patches/patch-testsuite_pdfgrep_tests_exit_status_exp =================================================================== RCS file: patches/patch-testsuite_pdfgrep_tests_exit_status_exp diff -N patches/patch-testsuite_pdfgrep_tests_exit_status_exp --- patches/patch-testsuite_pdfgrep_tests_exit_status_exp 15 Jan 2016 19:42:40 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,19 +0,0 @@ -$OpenBSD: patch-testsuite_pdfgrep_tests_exit_status_exp,v 1.1 2016/01/15 19:42:40 sthen Exp $ ---- testsuite/pdfgrep.tests/exit_status.exp.orig Wed Jan 13 15:07:29 2016 -+++ testsuite/pdfgrep.tests/exit_status.exp Wed Jan 13 15:10:27 2016 -@@ -8,7 +8,7 @@ clear_pdfdir - set pdf [mkpdf exit-status "foobar"] - - pdfgrep foobar $pdf -- -+expect eof - expect_exit_status 0 - - ######################################## -@@ -40,5 +40,5 @@ clear_pdfdir - - # $pdf doesn't exist anymore - pdfgrep foobar $pdf -- -+expect eof - expect_exit_status 2 Index: patches/patch-testsuite_pdfgrep_tests_usage_exp =================================================================== RCS file: patches/patch-testsuite_pdfgrep_tests_usage_exp diff -N patches/patch-testsuite_pdfgrep_tests_usage_exp --- patches/patch-testsuite_pdfgrep_tests_usage_exp 15 Jan 2016 19:42:40 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-testsuite_pdfgrep_tests_usage_exp,v 1.1 2016/01/15 19:42:40 sthen Exp $ ---- testsuite/pdfgrep.tests/usage.exp.orig Wed Jan 13 15:07:55 2016 -+++ testsuite/pdfgrep.tests/usage.exp Wed Jan 13 15:11:50 2016 -@@ -5,7 +5,7 @@ expect { - -re "^Usage: .*" { pass $test } - default { fail $test } - } -- -+expect eof - expect_exit_status 2 - - # Also look that nothing is written to stdout