X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=scripts%2Flttng-modules%2Fparam-build.sh;h=405c61f0ee87dc4a87d67142977e35935facd558;hb=417251718144a9f5ab350abe6a15aca660819ab9;hp=443059da8d298b14efde53a940e6bf86a202f105;hpb=c448771aff7ae930b9e4b5f750974d096b79677b;p=lttng-ci.git diff --git a/scripts/lttng-modules/param-build.sh b/scripts/lttng-modules/param-build.sh index 443059d..405c61f 100644 --- a/scripts/lttng-modules/param-build.sh +++ b/scripts/lttng-modules/param-build.sh @@ -15,6 +15,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +# Parameters +arch=${arch:-} +cross_arch=${cross_arch:-} +ktag=${ktag:-} + + ## FUNCTIONS ## # Kernel version compare functions @@ -42,17 +48,28 @@ prepare_lnx_sources() { if [ "$outdir" = "." ]; then koutput="" else - koutput="O=\"${outdir}\"" + koutput="O=${outdir}" fi # Generate kernel configuration case "$ktag" in Ubuntu*) + if [ "${cross_arch}" = "powerpc" ]; then + if vergte "$KVERSION" "4.10"; then + echo "Ubuntu removed big endian powerpc configuration from kernel >= 4.10. Don't try to build it." + exit 0 + fi + fi fakeroot debian/rules clean fakeroot debian/rules genconfigs cp CONFIGS/"${ubuntu_config}" "${outdir}"/.config ;; *) + # Force 32bit build on x86-32, default is 64bit + if [ "$arch" = "x86-32" ]; then + export ARCH="i386" + fi + # Que sera sera make "${vanilla_config}" CC="$CC" ${koutput} ;; @@ -76,21 +93,20 @@ prepare_lnx_sources() { echo "CONFIG_KALLSYMS_ALL=y"; } >> "${outdir}"/.config + # Debug + #cat "${outdir}"/.config make "$oldconf_target" CC="$CC" ${koutput} make modules_prepare CC="$CC" ${koutput} - # Debug - #cat "${outdir}"/.config - # On powerpc this object is required to link modules if [ "${karch}" = "powerpc" ]; then make arch/powerpc/lib/crtsavres.o CC="$CC" ${koutput} fi - # On arm64 this object is required to build with ftrace support + # On arm64 between 4.13 and 4.15 this object is required to build with ftrace support if [ "${karch}" = "arm64" ]; then - if vergte "$KVERSION" "4.13-rc1"; then + if [ -f "arch/arm64/kernel/ftrace-mod.S" ]; then make arch/arm64/kernel/ftrace-mod.o CC="$CC" ${koutput} fi fi @@ -168,7 +184,7 @@ LTTBUILDKHDRDIR="${WORKSPACE}/build/lttng-modules-khdr" # Setup cross compile env if available -if [ "x${cross_arch:-}" != "x" ]; then +if [ "x${cross_arch}" != "x" ]; then case "$cross_arch" in "armhf") @@ -215,7 +231,7 @@ if [ "x${cross_arch:-}" != "x" ]; then oldconf_target="olddefconfig" # Set arch specific values if we are not cross compiling -elif [ "x${arch:-}" != "x" ]; then +elif [ "x${arch}" != "x" ]; then case "$arch" in "x86-32") @@ -322,13 +338,18 @@ if [ "${karch}" = "powerpc" ]; then cp -a --parents arch/powerpc/lib/crtsavres.[So] "${LNXHDRDIR}/" fi -# On arm64 this object is required to build with ftrace support +# On arm64 between 4.13 and 1.15 this object is required to build with ftrace support if [ "${karch}" = "arm64" ]; then - if vergte "$KVERSION" "4.13-rc1"; then + if [ -f "arch/arm64/kernel/ftrace-mod.S" ]; then cp -a --parents arch/arm64/kernel/ftrace-mod.[So] "${LNXHDRDIR}/" fi fi +# Newer kernels need objtool to build modules when CONFIG_STACK_VALIDATION=y +if [ -f tools/objtool/objtool ]; then + cp -a --parents tools/objtool/objtool "${LNXHDRDIR}/" +fi + # Copy modules related stuff, if available if [ -s Module.symvers ]; then cp Module.symvers "${LNXHDRDIR}"