pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: pkgsrc/multimedia/libmatroska
I've asked jperkin to test it in his setup, since he has the best
infrastructure with his multiple-platform bulk build setup.
Thanks,
Thomas
On Wed, Feb 11, 2015 at 05:24:07AM +0900, PHO wrote:
> From: Thomas Klausner <wiz%NetBSD.org@localhost>
> Subject: Re: CVS commit: pkgsrc/multimedia/libmatroska
> Date: Tue, 10 Feb 2015 14:58:57 +0100
>
> >> > On Thu, Jan 22, 2015 at 12:57:27PM +0000, Masatake Daimon wrote:
> >> >> Module Name: pkgsrc
> >> >> Committed By: pho
> >> >> Date: Thu Jan 22 12:57:27 UTC 2015
> >> >>
> >> >> Modified Files:
> >> >> pkgsrc/multimedia/libmatroska: Makefile
> >> >>
> >> >> Log Message:
> >> >> Add 'c' to USE_LANGUAGES
> >> >>
> >> >> Otherwise the configure script fails with:
> >> >> PKGSRC-WARNING: Something is trying to run the c compiler,
> >> >> PKGSRC-WARNING: but it is not added to USE_LANGUAGES in the package Makefile.
> >> >
> >> > This is not a failure, but just a warning. If the source code contains
> >> > no c code, you should not add 'c' to USE_LANGUAGES; and since this
> >> > builds on lots of platforms, I expect the it was ok before adding 'c'.
> >>
> >> Sorry for my late reply. Since removing 'c' from USE_LANGUAGES
> >> actually results in a configuration failure on Darwin, I investigated
> >> the problem further. This is an excerpt from config.log:
> >>
> >> configure:7833: checking how to run the C preprocessor
> >> configure:7903: result: gcc -E -isystem /usr/include
> >> configure:7923: gcc -E -isystem /usr/include -isystem /usr/include -I/usr/pkg/include conftest.c
> >> PKGSRC-WARNING: Something is trying to run the c compiler,
> >> PKGSRC-WARNING: but it is not added to USE_LANGUAGES in the package Makefile.
> >> configure:7923: $? = 1
> >> configure:7953: error: in `/usr/pkgsrc/multimedia/libmatroska/work/libmatroska-1.4.2':
> >> configure:7955: error: C preprocessor "gcc -E -isystem /usr/include" fails sanity check
> >> See `config.log' for more details
> >>
> >> It turned out that ${CPP} was defined as "${CC} -E -isystem
> >> /usr/include" on this platform (see mk/platform/Darwin.mk). Because of
> >> this, ${CPP} always fails unless USE_LANGUAGES contains 'c'.
> >>
> >> So what should we do in this case?
> >
> > Thanks for taking another look at this. Since Darwin is the only
> > platform where cpp is defined this way, you'll probably have to fix
> > lots of packages. Is there some cpp wrapper installed on Darwin that
> > we could use, to make it more similar to the other platforms in
> > pkgsrc?
>
> Darwin actually comes with /usr/bin/cpp but it's a weird shell script
> that runs "/usr/bin/gcc -E" with arguments heavily modified for some
> unknown reasons, e.g.
>
> % cpp -isystem /usr/include test.c
>
> is translated to this, which is of course not what we want:
>
> % /usr/bin/gcc -E -traditional '-system' -x -c /usr/include -o test.c
>
> The reason why we need "-isystem /usr/include" is, as described in
> mk/platform/Darwin.mk, Darwin's native gcc is weirdly configured so
> that /usr/local/include takes precedence over /usr/include.
>
> So if ${WRKDIR}/.gcc/bin/cpp were the following shell script,
> everything would work as expected. Note that "-isystem /usr/include"
> is passed through ${CPPFLAGS} so there's no need to repeat it here:
>
> #!/bin/sh
> exec /usr/bin/gcc -E "$@"
>
> I attached a patch to get the effect described above.
> Could you review it?
>
> Thanks,
> _______________________________________________________
> - PHO - http://cielonegro.org/
> OpenPGP public key: 1024D/1A86EF72
> Fpr: 5F3E 5B5F 535C CE27 8254 4D1A 14E7 9CA7 1A86 EF72
> Index: compiler/gcc.mk
> ===================================================================
> RCS file: /cvsroot/pkgsrc/mk/compiler/gcc.mk,v
> retrieving revision 1.155
> diff -u -r1.155 gcc.mk
> --- compiler/gcc.mk 4 Feb 2015 14:11:50 -0000 1.155
> +++ compiler/gcc.mk 10 Feb 2015 19:54:26 -0000
> @@ -786,6 +786,13 @@
> IMAKEOPTS+= -DHasGcc2=YES -DHasGcc2ForCplusplus=YES
> .endif
>
> +.if ${OPSYS} == "Darwin" && !empty(_USE_PKGSRC_GCC:M[nN][oO])
> +# The native cpp on this platform is a weird shell script that chokes
> +# on "-isystem" flag. See also ../../mk/platform/Darwin.mk
> +_GCC_CPP_CMD= ${CCPATH} -E
> +_DEF_VARS.gcc+= _GCC_CPP_CMD
> +.endif
> +
> .if ${OPSYS} == "Darwin" || ${OPSYS} == "Linux" || ${OPSYS} == "SunOS"
> _COMPILER_ABI_FLAG.32= -m32
> _COMPILER_ABI_FLAG.64= -m64
> @@ -845,7 +852,13 @@
> override-tools: ${_GCC_${_var_}}
> ${_GCC_${_var_}}:
> ${RUN}${MKDIR} ${.TARGET:H}
> -. if !empty(COMPILER_USE_SYMLINKS:M[Yy][Ee][Ss])
> +. if defined(_GCC_${_var_}_CMD)
> + ${RUN} \
> + (${ECHO} '#!${TOOLS_SHELL}'; \
> + ${ECHO} 'exec ${_GCC_${_var_}_CMD} "$$@"'; \
> + ) > ${.TARGET}
> + ${RUN}${CHMOD} +x ${.TARGET}
> +. elif !empty(COMPILER_USE_SYMLINKS:M[Yy][Ee][Ss])
> ${RUN}${RM} -f ${.TARGET}
> ${RUN}${LN} -s ${_GCCBINDIR}/${.TARGET:T} ${.TARGET}
> . else
> Index: platform/Darwin.mk
> ===================================================================
> RCS file: /cvsroot/pkgsrc/mk/platform/Darwin.mk,v
> retrieving revision 1.66
> diff -u -r1.66 Darwin.mk
> --- platform/Darwin.mk 3 Jan 2015 21:30:52 -0000 1.66
> +++ platform/Darwin.mk 10 Feb 2015 19:54:26 -0000
> @@ -26,9 +26,6 @@
> X11_TYPE?= native
> .endif
>
> -.if !defined(CPP) || ${CPP} == "cpp"
> -CPP= ${CC} -E ${CPP_PRECOMP_FLAGS}
> -.endif
> .if empty(MACHINE_PLATFORM:MDarwin-[0-8].*-*)
> ECHO_N?= /bin/echo -n
> .else
Home |
Main Index |
Thread Index |
Old Index