#43145: Perl PortGroup fails to reinplace non-ascii Makefiles ---------------------+-------------------------------- Reporter: mojca@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 2.2.1 Keywords: | Port: p5-yaml ---------------------+-------------------------------- When building p5-yaml on 10.8 and 10.9, sed fails with {{{ DEBUG: Executing reinplace: /usr/bin/sed {/^CCFLAGS *=/s/$/ /} < /opt/local/var/macports/build/_opt_mports_dports_perl_p5-yaml/p5.16-yaml/work/YAML-0.90/Makefile
@ file14 DEBUG: sed: RE error: illegal byte sequence }}} (see https://build.macports.org/builders/buildports-mavericks- x86_64/builds/2454) because the `Makefile` contains a non-ascii character (in Latin 1 encoding, invalid UTF).
This comes from the perl PortGroup: {{{ # CCFLAGS can be passed in to "configure" but it's not necessarily inherited. # LDFLAGS can't be passed in (or if it can, it's not easy to figure out how). post-configure { fs-traverse file ${configure.dir} { if {[file isfile ${file}] && [file tail ${file}] eq "Makefile"} { ui_info "Fixing flags in [string map "${configure.dir}/ {}" ${file}]" reinplace "/^CCFLAGS *=/s/$/ [get_canonical_archflags cc]/" ${file} reinplace "/^OTHERLDFLAGS *=/s/$/ [get_canonical_archflags ld]/" ${file} } } } }}} Suggestions from IRC: neverpanic:
set LC_ALL to C I think that's a common issue with ill-formatted UTF-8 files /usr/bin/sed changed on 10.8 and above You can either patch that to be valid UTF-8 or set configure.env LC_ALL=C in the Portfile It is kind of weird to use the locale settings for that. I mean you could set the correct locale for the file, but then any messages to your terminal would be broken…
anddam:
I'd escape that dollar sign
Dar1us:
it refuses to process files which aren't validly encoded given the current LC settings .. and by default that is UTF-8
-- Ticket URL: <https://trac.macports.org/ticket/43145> MacPorts <http://www.macports.org/> Ports system for OS X