Solved [Solved] security/tripwire fails to build

In a build jail on a FreeBSD 9.1-RELEASE-p6/amd64 system:

# portmaster -g -d security/tripwire
Code:
[snip]
gmake[3]: Entering directory
`/rw/usr/ports/security/tripwire/work/tripwire-2.4.2.2-src/src/cryptlib'
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o algebra.o algebra.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o asn.o asn.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o cryptlib.o cryptlib.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o des.o des.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o dessp.o dessp.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o elgamal.o elgamal.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o eprecomp.o eprecomp.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o filters.o filters.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o forkjoin.o forkjoin.cpp
clang++ -DHAVE_CONFIG_H           -I.. -I../..  -I/usr/local/include   -O2 -pipe -fno-strict-aliasing -c -o integer.o integer.cpp
In file included from integer.cpp:5:
In file included from ./modarith.h:9:
./algebra.h:276:10: error: use of undeclared identifier 'Equal'
        while (!Equal(g[i1], this->Zero()))
                ^
                this->
integer.cpp:2111:38: note: in instantiation of member function 'AbstractEuclideanDomain<Integer>::Gcd' requested here
        return EuclideanDomainOf<Integer>().Gcd(a, b);
                                            ^
./algebra.h:13:15: note: must qualify identifier to find this declaration in dependent base class
        virtual bool Equal(const Element &a, const Element &b) const =0;
                     ^
1 error generated.
gmake[3]: *** [integer.o] Error 1
gmake[3]: Leaving directory`/rw/usr/ports/security/tripwire/work/tripwire-2.4.2.2-src/src/cryptlib'
[snip]
It doesn't look like anything that's supposed to be user-serviceable. Any suggestions before I throw it onto the mailing list?
 
Re: security/tripwire fails to build

How did you tell this port to use Clang instead of GCC?

The only way I can reproduce this situation is when I enable these lines in my /etc/make.conf file:

Code:
# Compiler specification
CC=clang
CPP=clang-cpp
CXX=clang++
I used to have those enabled because I too prefer Clang over GCC, but now that Clang is preferred by default as of FreeBSD 9.2 I no longer see a need for these lines anymore so I disabled them. And in that situation security/tripwire builds cleanly for me.

This seems to be Clang related; whenever I enforce the usage of Clang this port fails to build. If I allow GCC usage then everything works out cleanly.

So my suggestion in this case is to get the port to use GCC. Might be an idea to inform the maintainer as well, I also noticed that this port doesn't use staging as of yet which also seems to become a requirement.

Edit:s/notice/noticed
 
Re: security/tripwire fails to build

ShelLuser said:
This seems to be Clang related; whenever I enforce the usage of Clang this port fails to build. If I allow GCC usage then everything works out cleanly.
You are correct, sir.

Because this box is still on 9.1-RELEASE I manually specified Clang in /etc/make.conf. With those lines commented out everything goes peachy. So far I've never had any issues using Clang (quite the opposite actually: GCC broke more stuff), this is the first time. I'll notify the port maintainer. Since we don't have a Thanks button yet, a virtual one will have to do. So there ;)
 
Back
Top