Subject: pkg/32155: devel/pcre fails to build on Solaris 10 with Sun Studio 11 compilers
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <segv@netctl.net>
List: pkgsrc-bugs
Date: 11/24/2005 10:22:01
>Number: 32155
>Category: pkg
>Synopsis: devel/pcre fails to build on Solaris 10 with Sun Studio 11 compilers
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Nov 24 10:22:00 +0000 2005
>Originator: segv
>Release:
>Organization:
>Environment:
SunOS ultra10 5.10 Generic sun4u sparc SUNW,Ultra-5_10
>Description:
Building pcre with Sun Studio 11 compilers produces the following error:
"./pcre_scanner.cc", line 93: Error: Could not find a match for std::count<std::InputIterator, std::T, std::Size>(const char*, const char*, char) needed in pcrecpp::Scanner::LineNumber() const. 1 Error(s) detected. ***
Error code 1
>How-To-Repeat:
>Fix:
I emailed the author about the problem and he got back to me with the following patch, which fixes the problem:
diff -Nur pcre-6.4/pcre_scanner.cc pcre-6.4-new/pcre_scanner.cc
--- pcre-6.4/pcre_scanner.cc 2005-09-12 01:45:39.000000000 -0700
+++ pcre-6.4-new/pcre_scanner.cc 2005-11-23 14:13:48.000000000
-0800
@@ -30,7 +30,6 @@
// Author: Sanjay Ghemawat
#include <vector>
-#include <algorithm> // for count()
#include <assert.h>
#include "config.h"
#include "pcre_scanner.h"
@@ -90,7 +89,12 @@
int Scanner::LineNumber() const {
// TODO: Make it more efficient by keeping track of the last point
// where we computed line numbers and counting newlines since then.
- return 1 + std::count(data_.data(), input_.data(), '\n');
+ // We could use std:count, but not all systems have it (HPUX). :-(
+ int count = 1;
+ for (const char* p = data_.data(); p < input_.data(); ++p)
+ if (*p == '\n')
+ ++count;
+ return count;
}
int Scanner::Offset() const {
diff -Nur pcre-6.4/pcre_scanner_unittest.cc
pcre-6.4-new/pcre_scanner_unittest.cc
--- pcre-6.4/pcre_scanner_unittest.cc 2005-09-12 01:45:39.000000000
-0700
+++ pcre-6.4-new/pcre_scanner_unittest.cc 2005-11-23
14:14:10.000000000 -0800
@@ -68,6 +68,7 @@
s.Consume(re, &var, &number);
CHECK_EQ(var, "alpha");
CHECK_EQ(number, 1);
+ CHECK_EQ(s.LineNumber(), 3);
s.GetNextComments(&comments);
CHECK_EQ(comments.size(), 1);
CHECK_EQ(comments[0].as_string(), " // this sets alpha\n");