Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2015 20:35:37 -0700
From:      "Russell L. Carter" <rcarter@pinyon.org>
To:        freebsd-ports@freebsd.org
Subject:   libfxp fails with poudriere but not as a port
Message-ID:  <54B88709.3010604@pinyon.org>

next in thread | raw e-mail | index | archive | help
Greetings,

amd64 stable/10, updated across the failure.

I've been watching a poudriere build failure with graphics/libfpx for
several days now and investigated, and it is a curious failure.  Some
advice solicited on the fix.

With an updated poudriere world, and an updated outside r277194
stable/10 world, graphics/libfxp fails with:

(wrapped, of course)

/wrkdirs/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/oless/h/fat.hxx:368:63:
     error: explicitly assigning a variable of type 'SCODE' (aka 'int')
     to itself [-Werror,-Wself-assign] do if (((HRESULT)(sc =
     (FindMaxSect(&_sectMax)))<0)) { sc = sc; goto Err;} while(0);

which a little bit of grepping finds this line in fat.hxx:

     msfChk(FindMaxSect(&_sectMax));

where msfChk is defined in msf.hxx:

#define msfErr(l, e) ErrJmp(msf, l, e, sc)
#define msfChkTo(l, e) do if (FAILED(sc = (e))) msfErr(l, sc) while(0)
#define msfChk(e) msfChkTo(Err, e)

and ErrJmp is defined in error.hxx:

#define ErrJmp(comp, label, errval, var) \
{\
     var = errval;\
     goto label;\
}

so that clearly, sc = sc, just like the compiler complained about.

Now normally I'd experiment with the macros a bit to see if I could
fix it but I am hesitant because if I update a ports tree on the same
system as the poudriere build system and make reinstall, everything
builds installs and works great (including wdm and emacs, the reason
that I've dug down this far).  If I cd /usr/ports/graphics/build &&
make build, the compiler is /usr/bin/c++, while poudriere's log says
it used c++.  Any ideas on what the difference might be would awesome.
Once I understand this I would be delighted to provide a patch.

Thanks,
Russell

Late thought:  I elided a debug branch on the ErrJmp macro, is there
a reason why the ports tree might by default have debugging on while
poudriere would not?  I don't see anything obvious in a /usr/ports
compiler command:

/usr/bin/c++  -O2 -pipe  -DHAVE_WCHAR_H -DHAVE_DLFCN_H -DHAVE_SYS_TIME_H 
-DHAVE_SYS_PARAM_H -DHAVE_SYS_MOUNT_H -Qunused-arguments 
-fstack-protector -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter 
-Wpointer-arith -Wno-uninitialized -Wno-empty-body -Wno-string-plus-int 
-Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value 
-Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion 
-fno-rtti -fno-exceptions -fno-strict-aliasing -DHAVE_WCHAR_H 
-DHAVE_DLFCN_H -DHAVE_SYS_TIME_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_MOUNT_H 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/oless/h 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/jpeg 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/ole 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/basics 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/ri_image 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/oless 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/fpx 
-I/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/. -I/usr/local/include 
-D_UNIX -Wno-c++11-extensions  -c 
/usr/ports/graphics/libfpx/work/libfpx-1.3.1-4/ole/oleprops.cpp -o 
oleprops.o




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54B88709.3010604>