-compile_unionfs_modules() {
- if [ ! -f "${UNIONFS_MODULES_BINCACHE}" ]
- then
- [ -f "${UNIONFS_SRCTAR}" ] ||
- gen_die "Could not find unionfs source tarball: ${UNIONFS_SRCTAR}!"
- cd "${TEMP}"
- rm -rf ${UNIONFS_DIR} > /dev/null
- rm -rf unionfs* > /dev/null
- mkdir unionfs
- /bin/tar xzpf ${UNIONFS_SRCTAR} ||
- gen_die 'Could not extract unionfs source tarball!'
- [ -d "${UNIONFS_DIR}" ] ||
- gen_die 'Unionfs directory ${UNIONFS_DIR} is invalid!'
- cd "${UNIONFS_DIR}"
- print_info 1 'unionfs modules: >> Compiling...'
- echo "LINUXSRC=${KERNEL_DIR}" >> fistdev.mk
- echo 'TOPINC=-I$(LINUXSRC)/include' >> fistdev.mk
- echo "MODDIR= /lib/modules/${KV}" >> fistdev.mk
- echo "KVERS=${KV}" >> fistdev.mk
- echo "KERNELVERSION=${KV}" >> fistdev.mk
- # Fix for hardened/selinux systems to have extened attributes
- # per r2d2's request. Also add -DUNIONFS_UNSUPPORTED for 2.6.16
- echo "EXTRACFLAGS=-DUNIONFS_XATTR -DFIST_SETXATTR_CONSTVOID -DUNIONFS_UNSUPPORTED" \
- >> fistdev.mk
- # Here we do something really nasty and disable debugging, along with
- # change our default CFLAGS
- echo "UNIONFS_DEBUG_CFLAG=-DUNIONFS_NDEBUG" >> fistdev.mk
- echo "UNIONFS_OPT_CFLAG= -O2 -pipe" >> fistdev.mk
-
- if [ "${PAT}" -ge '6' ]
- then
- # ARCH is used by unionfs - and conflicts with genkernel
- ARCH_PUSH=${ARCH}
- unset ARCH
- # Compile unionfs module within the unionfs
- # environment not within the kernelsrc dir
- make unionfs.ko || gen_die 'failed to compile unionfs'
- ARCH=${ARCH_PUSH}
- else
- gen_die 'unionfs is only supported on 2.6 targets'
- fi
- print_info 1 'unionfs: >> Copying to cache...'
-
- mkdir -p ${TEMP}/unionfs/lib/modules/${KV}/kernel/fs/unionfs
-
- if [ -f unionfs.ko ]
- then
- cp -f unionfs.ko ${TEMP}/unionfs/lib/modules/${KV}/kernel/fs/unionfs
- else
- cp -f unionfs.o ${TEMP}/unionfs/lib/modules/${KV}/kernel/fs/unionfs
- fi
-
- cd ${TEMP}/unionfs
- /bin/tar -cjf "${UNIONFS_MODULES_BINCACHE}" . ||
- gen_die 'Could not create unionfs modules binary cache'
-
- cd "${TEMP}"
- rm -rf "${UNIONFS_DIR}" > /dev/null
- rm -rf unionfs > /dev/null
- fi
-}
-
-compile_unionfs_utils() {
- if [ ! -f "${UNIONFS_BINCACHE}" ]
- then
- [ -f "${UNIONFS_SRCTAR}" ] ||
- gen_die "Could not find unionfs source tarball: ${UNIONFS_SRCTAR}!"
- cd "${TEMP}"
- rm -rf ${UNIONFS_DIR} > /dev/null
- rm -rf unionfs* > /dev/null
- mkdir -p unionfs/sbin
- /bin/tar -zxpf ${UNIONFS_SRCTAR} ||
- gen_die 'Could not extract unionfs source tarball!'
- [ -d "${UNIONFS_DIR}" ] ||
- gen_die 'Unionfs directory ${UNIONFS_DIR} is invalid!'
- cd "${UNIONFS_DIR}"
- print_info 1 'unionfs tools: >> Compiling...'
- sed -i utils/Makefile -e 's|${CC} -o|${CC} -static -o|g'
- sed -i Makefile -e 's|${CC} -o|${CC} -static -o|g'
- compile_generic utils utils
-
- if [ ! -e "uniondbg" ]; then
- cd utils
- fi
- print_info 1 'unionfs: >> Copying to cache...'
- strip uniondbg unionctl
- cp uniondbg ${TEMP}/unionfs/sbin/ ||
- gen_die 'Could not copy the uniondbg binary to the tmp directory'
- cp unionctl ${TEMP}/unionfs/sbin/ ||
- gen_die 'Could not copy the unionctl binary to the tmp directory'
- cd ${TEMP}/unionfs
- /bin/tar -cjf "${UNIONFS_BINCACHE}" . ||
- gen_die 'Could not create unionfs tools binary cache'
-
- cd "${TEMP}"
- rm -rf "${UNIONFS_DIR}" > /dev/null
- rm -rf unionfs > /dev/null
- fi
-}
-