powerpc64 context, sysutils/polkit fails to build: broken pipe during /usr/local/lib/gobject-introspection/giscanner/sourcescanner.py

Mark Millard markmi at dsl-only.net
Sun Mar 8 06:22:56 UTC 2015

powerpc64 context (more details are listed later):

$ freebsd-version -ku; uname -a
FreeBSD FBSDG5S0 10.1-STABLE FreeBSD 10.1-STABLE #0 r279507M: Fri Mar  6 23:08:59 PST 2015     root at FBSDG5S0:/usr/obj/usr/src/sys/GENERIC64vtsc  powerpc

Ports Revision 380683 via svnlite update. I've been using portmaster.

The problem (which I've not figured out yet)...

x11/xorg, x11-drivers/xf86-video-ati-ums, x11-drivers/xf86-video-scfb, and x11-wm/xfce4 are all blocked from building by sysutils/polkit failing to build because of a broken pipe with a subprocess...

gmake  all-am
gmake[6]: Entering directory '/usr/obj/portswork/usr/ports/sysutils/polkit/work/polkit-0.105/src/polkit'
  CC     libpolkit_gobject_1_la-polkitenumtypes.lo
  CC     libpolkit_gobject_1_la-polkitactiondescription.lo
  CC     libpolkit_gobject_1_la-polkitauthorityfeatures.lo
  CC     libpolkit_gobject_1_la-polkitdetails.lo
  CC     libpolkit_gobject_1_la-polkitauthority.lo
  CC     libpolkit_gobject_1_la-polkiterror.lo
  CC     libpolkit_gobject_1_la-polkitsubject.lo
  CC     libpolkit_gobject_1_la-polkitunixprocess.lo
  CC     libpolkit_gobject_1_la-polkitsystembusname.lo
  CC     libpolkit_gobject_1_la-polkitidentity.lo
  CC     libpolkit_gobject_1_la-polkitunixuser.lo
  CC     libpolkit_gobject_1_la-polkitunixgroup.lo
  CC     libpolkit_gobject_1_la-polkitunixnetgroup.lo
  CC     libpolkit_gobject_1_la-polkitauthorizationresult.lo
  CC     libpolkit_gobject_1_la-polkitcheckauthorizationflags.lo
  CC     libpolkit_gobject_1_la-polkitimplicitauthorization.lo
  CC     libpolkit_gobject_1_la-polkittemporaryauthorization.lo
  CC     libpolkit_gobject_1_la-polkitpermission.lo
  CC     libpolkit_gobject_1_la-polkitunixsession.lo
  CCLD   libpolkit-gobject-1.la
  GISCAN   Polkit-1.0.gir
Traceback (most recent call last):
  File "/usr/local/bin/g-ir-scanner", line 55, in <module>
  File "/usr/local/lib/gobject-introspection/giscanner/scannermain.py", line 517, in scanner_main
    ss = create_source_scanner(options, args)
  File "/usr/local/lib/gobject-introspection/giscanner/scannermain.py", line 430, in create_source_scanner
  File "/usr/local/lib/gobject-introspection/giscanner/sourcescanner.py", line 256, in parse_files
  File "/usr/local/lib/gobject-introspection/giscanner/sourcescanner.py", line 302, in _parse
    proc.stdin.write('#ifndef %s\n' % (define, ))
IOError: [Errno 32] Broken pipe
/usr/local/share/gobject-introspection-1.0/Makefile.introspection:153: recipe for target 'Polkit-1.0.gir' failed
gmake[6]: *** [Polkit-1.0.gir] Error 1
gmake[6]: Leaving directory '/usr/obj/portswork/usr/ports/sysutils/polkit/work/polkit-0.105/src/polkit'
Makefile:444: recipe for target 'all' failed
gmake[5]: *** [all] Error 2
gmake[5]: Leaving directory '/usr/obj/portswork/usr/ports/sysutils/polkit/work/polkit-0.105/src/polkit'
Makefile:326: recipe for target 'all-recursive' failed
gmake[4]: *** [all-recursive] Error 1
gmake[4]: Leaving directory '/usr/obj/portswork/usr/ports/sysutils/polkit/work/polkit-0.105/src'
Makefile:374: recipe for target 'all-recursive' failed
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory '/usr/obj/portswork/usr/ports/sysutils/polkit/work/polkit-0.105'
Makefile:305: recipe for target 'all' failed
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory '/usr/obj/portswork/usr/ports/sysutils/polkit/work/polkit-0.105'
*** Error code 1

make[1]: stopped in /usr/ports/sysutils/polkit
*** Error code 1

make: stopped in /usr/ports/sysutils/polkit

===>>> make build failed for sysutils/polkit
===>>> Aborting update

===>>> You can restart from the point of failure with this command line:
       portmaster <flags> sysutils/polkit 

The relevant /usr/local/lib/gobject-introspection/giscanner/sourcescanner.py code being...

    def _parse(self, filenames):
        if not filenames:
        defines = ['__GI_SCANNER__']
        undefs = []
        cpp_args = os.environ.get('CC', 'cc').split()  # support CC="ccache gcc"
        if 'cl' in cpp_args:
            # The Microsoft compiler/preprocessor (cl) does not accept
            # source input from stdin (the '-' flag), so we need
            # some help from gcc from MinGW/Cygwin or so.
            # Note that the generated dumper program is
            # still built and linked by Visual C++.
            cpp_args = ['gcc']
        cpp_args += os.environ.get('CPPFLAGS', '').split()
        cpp_args += os.environ.get('CFLAGS', '').split()
        cpp_args += ['-E', '-C', '-I.', '-']
        cpp_args += self._cpp_options

        proc = subprocess.Popen(cpp_args,

        for define in defines:
            proc.stdin.write('#ifndef %s\n' % (define, ))
            proc.stdin.write('# define %s\n' % (define, ))

For my context the overall environment has (but ports might force other ports as alternatives to):

# more /etc/make.conf

# more /etc/src.conf

# which cc

# cc --version
cc (GCC) 4.2.1 20070831 patched [FreeBSD]
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

# which clang

# clang --version
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: powerpc64-unknown-freebsd10.1
Thread model: posix

Other context details:

$ cd /usr/ports
$ svnlite info
Path: .
Working Copy Root Path: /usr/ports
URL: https://svn0.us-west.freebsd.org/ports/head
Relative URL: ^/head
Repository Root: https://svn0.us-west.freebsd.org/ports
Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5
Revision: 380683
Node Kind: directory
Schedule: normal
Last Changed Author: demon
Last Changed Rev: 380683
Last Changed Date: 2015-03-07 03:31:11 -0800 (Sat, 07 Mar 2015)

$ svnlite st --no-ignore
?       .snap
I       distfiles
M       graphics/libGL/bsd.mesalib.mk
I       packages
?       restoresymtable

$ svnlite diff graphics/libGL/bsd.mesalib.mk
Index: graphics/libGL/bsd.mesalib.mk
--- graphics/libGL/bsd.mesalib.mk	(revision 380683)
+++ graphics/libGL/bsd.mesalib.mk	(working copy)
@@ -136,6 +136,10 @@
+.if ${ARCH} == powerpc64
+CFLAGS+=	-mminimal-toc
 	@${REINPLACE_CMD} -e 's|-ffast-math|${FAST_MATH}|' -e 's|x86_64|amd64|' \

$ cd /usr/src
$ svnlite info
Path: .
Working Copy Root Path: /usr/src
URL: https://svn0.us-west.freebsd.org/base/stable/10
Relative URL: ^/stable/10
Repository Root: https://svn0.us-west.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 279507
Node Kind: directory
Schedule: normal
Last Changed Author: ngie
Last Changed Rev: 279507
Last Changed Date: 2015-03-01 14:12:24 -0800 (Sun, 01 Mar 2015)

$ svnlite st --no-ignore
?       .snap
?       restoresymtable
M       sys/ddb/db_main.c
M       sys/ddb/db_script.c
I       sys/powerpc/conf/GENERIC64vtsc
I       sys/powerpc/conf/GENERICvtsc
M       sys/powerpc/ofw/ofw_machdep.c
M       sys/powerpc/ofw/ofwcall64.S
M       sys/powerpc/powerpc/dump_machdep.c

sys/powerpc/ofw/ofw_machdep.c has a PowerMac G5 specific change to avoid intermittent boot problems.

sys/ddb/... and sys/powerpc/ofw/ofwcall64.S are just to help me get evidence if I do end up with another early-boot failure. DDB and GDB are listed in sys/powerpc/conf/GENERIC64vtsc for the same reason.

sys/powerpc/powerpc/dump_machdep.c is from me forcing the DMA transfer size for dumps to be small enough not to be rejected as too large of a DMA request size.

sys/powerpc/conf/GENERIC64vtsc turns off ps3 in order to turn on both vt and sc. It includes the standard GENERIC64.

Mark Millard
markmi at dsl-only.net

More information about the freebsd-ports mailing list