On Wed, Aug 12, 2009 at 02:28:57AM -0400, Oren Laadan wrote: > > If I understand correctly you want to avoid needing the kernel > sources (or headers) in order to compile user-cr - so you would > suggest to auto-generate the a header file and add it as a source > file to user-cr ? Yup. Cheers, -Matt > (If this doesn't make any sense -- I'll blame the hour ...) Only if I can make the same excuse ;) > > Oren. > > > Matt Helsley wrote: > > Oren, > > > > Could this script or something like it be useful for user-cr > > rather than always using KERNELSRC and KERNELBUILD? > > > > Cheers, > > -Matt Helsley > > On Tue, Aug 04, 2009 at 04:43:08PM -0700, Matt Helsley wrote: > >> Signed-off-by: Matt Helsley <matthltc@xxxxxxxxxx> > >> --- > > > > <snip> > > > >> diff --git a/rewrite-cr-header.sh b/rewrite-cr-header.sh > >> new file mode 100755 > >> index 0000000..22f92c7 > >> --- /dev/null > >> +++ b/rewrite-cr-header.sh > >> @@ -0,0 +1,64 @@ > >> +#!/bin/bash > >> +# > >> +# Rewrite the contents of cr.h > >> +# > >> + > >> +KERNELSRC=../oren > >> + > >> +################################################################################ > >> + > >> +[ -z "${KERNELSRC}" ] && exit -1 > >> +mv cr.h cr.h.bak || exit -1 > >> + > >> +( > >> +COND='#if' > >> +set -e > >> +echo '/* AUTOMATICALLY GENERATED by rewrite-cr-header.sh */' > >> + > >> +# > >> +# Include non-__KERNEL__ sections of include/linux/checkpoint.h using > >> +# cpp to expand only the directives of the kernel header. > >> +# > >> +# The first 6 lines of cpp output write some trashy #define/#undef lines > >> +# we don't want. Would it be better to throw everything away until we see > >> +# "#define _LINUX_CHECKPOINT_H_" ?? > >> +# > >> +cpp -CC -P -U__KERNEL__ -undef -nostdinc -fdirectives-only ${KERNELSRC}/include/linux/checkpoint.h | tail -n '+6' > >> + > >> +find ${KERNELSRC}/arch -name 'unistd*.h' -print | sort | \ > >> +while read UNISTDH ; do > >> + REGEX='[[:space:]]*#[[:space:]]*define[[:space:]]+__NR_(checkpoint|restart)[[:space:]]+[[:digit:]]+' > >> + > >> + [ -z "${UNISTDH}" ] && continue > >> + KARCH=$(echo "${UNISTDH}" | sed -e 's|.*/arch/\([^/]\+\)/.*|\1|') > >> + BITNESS=$(basename "${UNISTDH}" | sed -e 's/unistd_*\([12346]\+\)\.h/\1/') > >> + > >> + # Map KARCH to something suitable for CPP e.g. __i386__ > >> + case "${KARCH}" in > >> + x86) if [ "${BITNESS}" == "32" ]; then > >> + CPPARCH=i386 > >> + else > >> + CPPARCH=x86_64 > >> + fi > >> + ;; > >> + s390*) CPPARCH=s390x ;; > >> + *) CPPARCH="${KARCH}" ;; > >> + esac > >> + > >> + grep -q -E "${REGEX}" ${UNISTDH} || { > >> + echo '/* '"${CPPARCH}"' unsupported. */' > >> + continue > >> + } > >> + > >> + echo -e "${COND} __${CPPARCH}__\\n" > >> + grep -E "${REGEX}" ${UNISTDH} | \ > >> + sed -e 's/^[[:space:]]*#define[[:space:]]\+__NR_\([^[:space:]]\+\)[[:space:]]\+\([^[:space:]]\+\).*$/#ifndef __NR_\1\n#define __NR_\1 \2\n#endif\n/' > >> + COND='#elif' > >> +done > >> +echo -e '#else\n#error "Architecture does not have definitons for __NR_(checkpoint|restart)"\n#endif' > >> +) > cr.h || { > >> + mv -f cr.h.bak cr.h > >> + exit -1 > >> +} > >> + > >> +rm -f cr.h.bak > >> -- > >> 1.5.6.3 > >> > >> > > _______________________________________________ > > Containers mailing list > > Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx > > https://lists.linux-foundation.org/mailman/listinfo/containers _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers