lang/gcc6-aux for head beyond __nonnull related issues: vm_ooffset_t and vm_pindex_t related changes (and more)
Mark Millard
markmi at dsl-only.net
Sat Apr 15 03:12:12 UTC 2017
On 2017-Apr-14, at 6:54 PM, Mark Millard <markmi at dsl-only.net> wrote:
> Alexander Kabaev kabaev at gmail.com on Sat Apr 15 00:20:40 UTC 2017
> wrote:
> . . .
>
>> it was suggested multiple times that the whole fixinc step is
>> ultimately harmful and serves no useful purpose and probably should be
>> disabled in built packages outright. Is there a reason not to do it?
>> Even Redhat appears to do the slimming in their rpms:
>>
>> mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
>> mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
>> for h in `find $FULLPATH/include -name \*.h`; do
>> if grep -q 'It has been auto-edited by fixincludes from' $h; then
>> rh=`grep -A2 'It has been auto-edited by fixincludes from' $h |
>> tail -1 | sed 's|^.*"\(.*\)".*$|\1|'` diff -up $rh $h || :
>> rm -f $h
>> fi
>> done
>
> I'll note that:
>
> http://www.linuxfromscratch.org/lfs/view/7.1/chapter06/gcc.html
>
> reports as one of its steps (quote):
>
> The fixincludes script is known to occasionally erroneously attempt
> to "fix" the system headers installed so far. As the headers up to
> this point are known to not require fixing, issue the following
> command to prevent the fixincludes script from running:
>
> sed -i 's@\./fixinc\.sh at -c true@' gcc/Makefile.in
>
> (End quote)
>
> So seems that disabling fixinc.sh's use is fairly common when
> the headers are known to "not require fixing" (i.e., are known
> to already be gcc compliant).
Hmm. Looking around I found a more overall script. For the
context that I tried it in the command was:
# /usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap/libexec/gcc/aarch64-aux-freebsd12.0/6.3.1/install-tools/mkheaders /usr/obj/portswork/usr/ports/lang/gcc6-aux/work/bootstrap
In other words:
bootstrap/libexec/gcc/*/*/install-tools/mkheaders
is the script and looking on the web I find other references
to using such as well. So I doubt that is all that special
to gcc6-aux, although some of the content of the example
might well be.
It in turn uses fixinc.sh script(s).
The mkheaders core loop looked like:
for ml in `cat ${itoolsdatadir}/fixinc_list`; do
sysroot_headers_suffix=`echo ${ml} | sed -e 's/;.*$//'`
multi_dir=`echo ${ml} | sed -e 's/^[^;]*;//'`
subincdir=${incdir}${multi_dir}
. ${itoolsdatadir}/mkheaders.conf
if [ x${STMP_FIXINC} != x ] ; then
TARGET_MACHINE="${target}" target_canonical="${target}" \
MACRO_LIST="${itoolsdatadir}/macro_list" \
/bin/sh ./fixinc.sh ${subincdir} \
${isysroot}${SYSTEM_HEADER_DIR} ${OTHER_FIXINCLUDES_DIRS}
rm -f ${subincdir}/syslimits.h
if [ -f ${subincdir}/limits.h ]; then
mv ${subincdir}/limits.h ${subincdir}/syslimits.h
else
cp ${itoolsdatadir}/gsyslimits.h ${subincdir}/syslimits.h
fi
fi
cp ${itoolsdatadir}/include${multi_dir}/limits.h ${subincdir}
done
This code provides context to fixinc.sh and deals with limits.h
as well. So:
http://www.linuxfromscratch.org/lfs/view/7.1/chapter06/gcc.html
was not turning everything off.
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-ports
mailing list