Created
October 10, 2017 21:23
-
-
Save furkanmustafa/9e73feb64b0b18942047fd7b7e2fd53e to your computer and use it in GitHub Desktop.
Script to generate /lib/modules/`uname -r`/build directory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash -e | |
# | |
# Extracted from: https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/linux | |
set -x | |
ARCH=$(uname -m) | |
KARCH=x86 # applies to x86_64 too (change for arm, etc.) | |
pkgdir= | |
_kernver=$(make kernelversion)$(git diff-index --quiet HEAD -- || echo "+") | |
_builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" | |
echo "installing to ${_builddir}" | |
sleep 2 | |
rm ${pkgdir}/lib/modules/${_kernver}/{source,build} || true | |
mkdir -p "${_builddir}" | |
# install documentation | |
cp -t "${_builddir}" -a Documentation | |
install -Dm644 vmlinux ${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux | |
install -Dt "${_builddir}" -m644 Makefile .config Module.symvers | |
install -Dt "${_builddir}/kernel" -m644 kernel/Makefile | |
mkdir "${_builddir}/.tmp_versions" | |
cp -t "${_builddir}" -a include scripts | |
install -Dt "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile | |
install -Dt "${_builddir}/arch/${KARCH}/kernel" -m644 arch/${KARCH}/kernel/asm-offsets.s | |
if [[ ${CARCH} = i686 ]]; then | |
install -t "${_builddir}/arch/${KARCH}" -m644 arch/${KARCH}/Makefile_32.cpu | |
fi | |
cp -t "${_builddir}/arch/${KARCH}" -a arch/${KARCH}/include | |
install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h | |
install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h | |
# http://bugs.archlinux.org/task/9912 | |
install -Dt "${_builddir}/drivers/media/dvb-core" -m644 drivers/media/dvb-core/*.h | |
# http://bugs.archlinux.org/task/13146 | |
install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/lgdt330x.h | |
install -Dt "${_builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h | |
# http://bugs.archlinux.org/task/20402 | |
install -Dt "${_builddir}/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h | |
install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h | |
install -Dt "${_builddir}/drivers/media/tuners" -m644 drivers/media/tuners/*.h | |
# add xfs and shmem for aufs building | |
mkdir -p "${_builddir}"/{fs/xfs,mm} | |
# copy in Kconfig files | |
find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \; | |
# add objtool for external module building and enabled VALIDATION_STACK option | |
if [[ -e tools/objtool/objtool ]]; then | |
install -Dt "${_builddir}/tools/objtool" tools/objtool/objtool | |
fi | |
# remove unneeded architectures | |
for _arch in "${_builddir}"/arch/*/; do | |
if [[ ${_arch} != */${KARCH}/ ]]; then | |
rm -r "${_arch}" | |
fi | |
done | |
# remove files already in linux-docs package | |
rm -r "${_builddir}/Documentation" | |
# Fix permissions | |
chmod -R u=rwX,go=rX "${_builddir}" | |
# strip scripts directory | |
while read -rd '' _binary; do | |
case "$(file -bi "${_binary}")" in | |
*application/x-sharedlib*) _strip="${STRIP_SHARED}" ;; # Libraries (.so) | |
*application/x-archive*) _strip="${STRIP_STATIC}" ;; # Libraries (.a) | |
*application/x-executable*) _strip="${STRIP_BINARIES}" ;; # Binaries | |
*) continue ;; | |
esac | |
/usr/bin/strip ${_strip} "${_binary}" | |
done < <(find "${_builddir}/scripts" -type f -perm -u+w -print0 2>/dev/null) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment