[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Octave-bug-tracker] [bug #64172] PCRE flags are not set correctly if PC
From: |
Ali Zahraee |
Subject: |
[Octave-bug-tracker] [bug #64172] PCRE flags are not set correctly if PCRE2 is partially available, and PCRE is fully available. |
Date: |
Tue, 9 May 2023 13:19:58 -0400 (EDT) |
URL:
<https://savannah.gnu.org/bugs/?64172>
Summary: PCRE flags are not set correctly if PCRE2 is
partially available, and PCRE is fully available.
Group: GNU Octave
Submitter: dexores
Submitted: Tue 09 May 2023 05:19:56 PM UTC
Category: Configuration and Build System
Severity: 3 - Normal
Priority: 5 - Normal
Item Group: Build Failure
Status: None
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Release: dev
Discussion Lock: Any
Operating System: GNU/Linux
Fixed Release: None
Planned Release: None
_______________________________________________________
Follow-up Comments:
-------------------------------------------------------
Date: Tue 09 May 2023 05:19:56 PM UTC By: Ali Zahraee <dexores>
On my system, I have an incomplete installation of PCRE2. So pcre2.h is
available, but pcre2 libraries are not completely available.
I also have a complete installation of PCRE, including pcre.h and the
libraries. The output from configure says:
checking for pcre2.h... yes
checking for pcre2_compile_8 in -lpcre2... no
checking for pcre.h... yes
checking for pcre_compile in -lpcre... yes
This results in a misconfiguration of macros in config.h, like this:
/* Define to 1 if PCRE is available. */
#define HAVE_PCRE 1
/* Define to 1 if PCRE2 is available. */
/* #undef HAVE_PCRE2 */
/* Define to 1 if you have the <pcre2.h> header file. */
#define HAVE_PCRE2_H 1
/* Define to 1 if you have the <pcre2/pcre2.h> header file. */
/* #undef HAVE_PCRE2_PCRE2_H */
/* Define to 1 if you have the <pcre.h> header file. */
#define HAVE_PCRE_H 1
/* Define to 1 if you have the <pcre/pcre.h> header file. */
/* #undef HAVE_PCRE_PCRE_H */
This results in the build to fail:
../liboctave/util/lo-regexp.cc:74:9: error: ‘pcre’ does not name a type
74 | typedef pcre octave_pcre_code;
| ^~~~
../liboctave/util/lo-regexp.cc:76:42: error: ‘pcre_free’ was not declared
in this scope
76 | void (*octave_pcre_code_free) (void *) = pcre_free;
| ^~~~~~~~~
../liboctave/util/lo-regexp.cc:91:33: error: ‘octave_pcre_code’ does not
name a type
91 | octave_pcre_pattern_info (const octave_pcre_code *code, int what, void
*where)
| ^~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc: In function ‘int
octave_pcre_pattern_info(const int*, int, void*)’:
../liboctave/util/lo-regexp.cc:96:10: error: ‘pcre_fullinfo’ was not
declared in this scope
96 | return pcre_fullinfo (code, nullptr, what, where);
| ^~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc: In member function ‘void
octave::regexp::free()’:
../liboctave/util/lo-regexp.cc:117:38: error: ‘octave_pcre_code’ does not
name a type
117 | octave_pcre_code_free (static_cast<octave_pcre_code *> (m_code));
| ^~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:117:55: error: expected ‘>’ before ‘*’
token
117 | octave_pcre_code_free (static_cast<octave_pcre_code *> (m_code));
| ^
../liboctave/util/lo-regexp.cc:117:55: error: expected ‘(’ before ‘*’
token
117 | octave_pcre_code_free (static_cast<octave_pcre_code *> (m_code));
| ^
| (
../liboctave/util/lo-regexp.cc:117:56: error: expected primary-expression
before ‘>’ token
117 | octave_pcre_code_free (static_cast<octave_pcre_code *> (m_code));
| ^
../liboctave/util/lo-regexp.cc: In member function ‘void
octave::regexp::compile_internal()’:
../liboctave/util/lo-regexp.cc:77:32: error: ‘PCRE_CASELESS’ was not
declared in this scope; did you mean ‘PCRE2_CASELESS’?
77 | # define OCTAVE_PCRE_CASELESS PCRE_CASELESS
| ^~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:282:43: note: in expansion of macro
‘OCTAVE_PCRE_CASELESS’
282 | = ( (m_options.case_insensitive () ? OCTAVE_PCRE_CASELESS : 0)
| ^~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:78:30: error: ‘PCRE_DOTALL’ was not
declared in this scope; did you mean ‘PCRE2_DOTALL’?
78 | # define OCTAVE_PCRE_DOTALL PCRE_DOTALL
| ^~~~~~~~~~~
../liboctave/util/lo-regexp.cc:283:49: note: in expansion of macro
‘OCTAVE_PCRE_DOTALL’
283 | | (m_options.dotexceptnewline () ? 0 : OCTAVE_PCRE_DOTALL)
| ^~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:79:33: error: ‘PCRE_MULTILINE’ was not
declared in this scope; did you mean ‘PCRE2_MULTILINE’?
79 | # define OCTAVE_PCRE_MULTILINE PCRE_MULTILINE
| ^~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:284:40: note: in expansion of macro
‘OCTAVE_PCRE_MULTILINE’
284 | | (m_options.lineanchors () ? OCTAVE_PCRE_MULTILINE : 0)
| ^~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:80:32: error: ‘PCRE_EXTENDED’ was not
declared in this scope; did you mean ‘PCRE2_EXTENDED’?
80 | # define OCTAVE_PCRE_EXTENDED PCRE_EXTENDED
| ^~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:285:40: note: in expansion of macro
‘OCTAVE_PCRE_EXTENDED’
285 | | (m_options.freespacing () ? OCTAVE_PCRE_EXTENDED : 0)
| ^~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:81:27: error: ‘PCRE_UTF8’ was not declared
in this scope; did you mean ‘PCRE2_UTF’?
81 | # define OCTAVE_PCRE_UTF PCRE_UTF8
| ^~~~~~~~~
../liboctave/util/lo-regexp.cc:286:12: note: in expansion of macro
‘OCTAVE_PCRE_UTF’
286 | | OCTAVE_PCRE_UTF);
| ^~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:318:12: error: ‘pcre_compile’ was not
declared in this scope; did you mean ‘pcre2_compile’?
318 | m_code = pcre_compile (buf_str.c_str (), pcre_options,
| ^~~~~~~~~~~~
| pcre2_compile
../liboctave/util/lo-regexp.cc: In member function
‘octave::regexp::match_data octave::regexp::match(const string&) const’:
../liboctave/util/lo-regexp.cc:346:3: error: ‘octave_pcre_code’ was not
declared in this scope; did you mean ‘octave_pcre_code_free’?
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^~~~~~~~~~~~~~~~
| octave_pcre_code_free
../liboctave/util/lo-regexp.cc:346:21: error: ‘re’ was not declared in
this scope; did you mean ‘rem’?
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^~
| rem
../liboctave/util/lo-regexp.cc:346:38: error: ‘octave_pcre_code’ does not
name a type
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:346:55: error: expected ‘>’ before ‘*’
token
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^
../liboctave/util/lo-regexp.cc:346:55: error: expected ‘(’ before ‘*’
token
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^
| (
../liboctave/util/lo-regexp.cc:346:56: error: expected primary-expression
before ‘>’ token
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^
../liboctave/util/lo-regexp.cc:346:66: error: expected ‘)’ before ‘;’
token
346 | octave_pcre_code *re = static_cast<octave_pcre_code *> (m_code);
| ^
| )
../liboctave/util/lo-regexp.cc:82:41: error: ‘PCRE_INFO_CAPTURECOUNT’ was
not declared in this scope; did you mean ‘PCRE2_INFO_CAPTURECOUNT’?
82 | # define OCTAVE_PCRE_INFO_CAPTURECOUNT PCRE_INFO_CAPTURECOUNT
| ^~~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:348:33: note: in expansion of macro
‘OCTAVE_PCRE_INFO_CAPTURECOUNT’
348 | octave_pcre_pattern_info (re, OCTAVE_PCRE_INFO_CAPTURECOUNT,
&subpatterns);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:83:38: error: ‘PCRE_INFO_NAMECOUNT’ was not
declared in this scope; did you mean ‘PCRE2_INFO_NAMECOUNT’?
83 | # define OCTAVE_PCRE_INFO_NAMECOUNT PCRE_INFO_NAMECOUNT
| ^~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:349:33: note: in expansion of macro
‘OCTAVE_PCRE_INFO_NAMECOUNT’
349 | octave_pcre_pattern_info (re, OCTAVE_PCRE_INFO_NAMECOUNT,
&namecount);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:84:42: error: ‘PCRE_INFO_NAMEENTRYSIZE’ was
not declared in this scope; did you mean ‘PCRE2_INFO_NAMEENTRYSIZE’?
84 | # define OCTAVE_PCRE_INFO_NAMEENTRYSIZE PCRE_INFO_NAMEENTRYSIZE
| ^~~~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:350:33: note: in expansion of macro
‘OCTAVE_PCRE_INFO_NAMEENTRYSIZE’
350 | octave_pcre_pattern_info (re, OCTAVE_PCRE_INFO_NAMEENTRYSIZE,
&nameentrysize);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:85:38: error: ‘PCRE_INFO_NAMETABLE’ was not
declared in this scope; did you mean ‘PCRE2_INFO_NAMETABLE’?
85 | # define OCTAVE_PCRE_INFO_NAMETABLE PCRE_INFO_NAMETABLE
| ^~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:351:33: note: in expansion of macro
‘OCTAVE_PCRE_INFO_NAMETABLE’
351 | octave_pcre_pattern_info (re, OCTAVE_PCRE_INFO_NAMETABLE,
&nametable);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
../liboctave/util/lo-regexp.cc:395:32: error: ‘PCRE_NO_UTF8_CHECK’ was not
declared in this scope; did you mean ‘PCRE2_NO_UTF_CHECK’?
395 | PCRE_NO_UTF8_CHECK | (idx ? PCRE_NOTBOL
: 0),
| ^~~~~~~~~~~~~~~~~~
| PCRE2_NO_UTF_CHECK
../liboctave/util/lo-regexp.cc:395:60: error: ‘PCRE_NOTBOL’ was not
declared in this scope; did you mean ‘PCRE2_NOTBOL’?
395 | PCRE_NO_UTF8_CHECK | (idx ? PCRE_NOTBOL
: 0),
|
^~~~~~~~~~~
|
PCRE2_NOTBOL
../liboctave/util/lo-regexp.cc:393:21: error: ‘pcre_exec’ was not declared
in this scope
393 | int matches = pcre_exec (re, nullptr, buffer.c_str (),
| ^~~~~~~~~
../liboctave/util/lo-regexp.cc:398:22: error: ‘PCRE_ERROR_MATCHLIMIT’ was
not declared in this scope; did you mean ‘PCRE2_ERROR_MATCHLIMIT’?
398 | if (matches == PCRE_ERROR_MATCHLIMIT)
| ^~~~~~~~~~~~~~~~~~~~~
| PCRE2_ERROR_MATCHLIMIT
../liboctave/util/lo-regexp.cc:406:11: error: ‘pcre_extra’ was not
declared in this scope
406 | pcre_extra pe;
| ^~~~~~~~~~
../liboctave/util/lo-regexp.cc:408:24: error: ‘PCRE_CONFIG_MATCH_LIMIT’
was not declared in this scope; did you mean ‘PCRE2_CONFIG_MATCHLIMIT’?
408 | pcre_config (PCRE_CONFIG_MATCH_LIMIT,
| ^~~~~~~~~~~~~~~~~~~~~~~
| PCRE2_CONFIG_MATCHLIMIT
../liboctave/util/lo-regexp.cc:409:46: error: ‘pe’ was not declared in
this scope
409 | static_cast<void *> (&pe.match_limit));
| ^~
../liboctave/util/lo-regexp.cc:408:11: error: ‘pcre_config’ was not
declared in this scope; did you mean ‘pcre2_config’?
408 | pcre_config (PCRE_CONFIG_MATCH_LIMIT,
| ^~~~~~~~~~~
| pcre2_config
../liboctave/util/lo-regexp.cc:411:22: error: ‘PCRE_EXTRA_MATCH_LIMIT’ was
not declared in this scope; did you mean ‘PCRE2_EXTRA_MATCH_LINE’?
411 | pe.flags = PCRE_EXTRA_MATCH_LIMIT;
| ^~~~~~~~~~~~~~~~~~~~~~
| PCRE2_EXTRA_MATCH_LINE
../liboctave/util/lo-regexp.cc:428:37: error: ‘PCRE_ERROR_NOMATCH’ was not
declared in this scope; did you mean ‘PCRE2_ERROR_NOMATCH’?
428 | if (matches < 0 && matches != PCRE_ERROR_NOMATCH)
| ^~~~~~~~~~~~~~~~~~
| PCRE2_ERROR_NOMATCH
CC liboctave/util/libutil_la-oct-atomic.lo
../liboctave/util/lo-regexp.cc:433:22: error: ‘PCRE_ERROR_NOMATCH’ was not
declared in this scope; did you mean ‘PCRE2_ERROR_NOMATCH’?
433 | if (matches == PCRE_ERROR_NOMATCH)
| ^~~~~~~~~~~~~~~~~~
| PCRE2_ERROR_NOMATCH
../liboctave/util/lo-regexp.cc:477:24: error: ‘pcre_get_substring_list’
was not declared in this scope; did you mean ‘pcre2_substring_list_get’?
477 | int status = pcre_get_substring_list (buffer.c_str (),
ovector,
| ^~~~~~~~~~~~~~~~~~~~~~~
| pcre2_substring_list_get
../liboctave/util/lo-regexp.cc:480:25: error: ‘PCRE_ERROR_NOMEMORY’ was
not declared in this scope; did you mean ‘PCRE2_ERROR_NOMEMORY’?
480 | if (status == PCRE_ERROR_NOMEMORY)
| ^~~~~~~~~~~~~~~~~~~
| PCRE2_ERROR_NOMEMORY
../liboctave/util/lo-regexp.cc:541:11: error: ‘pcre_free_substring_list’
was not declared in this scope
541 | pcre_free_substring_list (listptr);
| ^~~~~~~~~~~~~~~~~~~~~~~~
CXX liboctave/util/libutil_la-oct-base64.lo
make[2]: *** [Makefile:25135: liboctave/util/libutil_la-lo-regexp.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/home/a/code/octave/.build'
make[1]: *** [Makefile:27931: all-recursive] Error 1
make[1]: Leaving directory '/home/a/code/octave/.build'
make: *** [Makefile:11108: all] Error 2
As a temperory workaround, commenting out this line in config.h let's
compilation to proceed:
#define HAVE_PCRE2_H 1
I had a look at configure.ac, but don't have enough knowledge of autoconfg to
fix this.
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?64172>
_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
- [Octave-bug-tracker] [bug #64172] PCRE flags are not set correctly if PCRE2 is partially available, and PCRE is fully available.,
Ali Zahraee <=