mirror of https://gitee.com/openkylin/linux.git
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull misc kbuild changes from Michal Marek: "The non-critical part of kbuild is small this time: - Three fixes for make deb-pkg - A new coccinelle check One of the deb-pkg fixes is a leftover from the last merge window, hence the merge commit" * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: deb-pkg: Fix building for MIPS big-endian or ARM OABI deb-pkg: Fix cross-building linux-headers package scripts: Coccinelle script for pm_runtime_* return checks with IS_ERR_VALUE deb-pkg: Inhibit initramfs builders if CONFIG_BLK_DEV_INITRD is not set
This commit is contained in:
commit
5cb480f6b4
|
@ -0,0 +1,109 @@
|
|||
/// Make sure pm_runtime_* calls does not use unnecessary IS_ERR_VALUE
|
||||
//
|
||||
// Keywords: pm_runtime
|
||||
// Confidence: Medium
|
||||
// Copyright (C) 2013 Texas Instruments Incorporated - GPLv2.
|
||||
// URL: http://coccinelle.lip6.fr/
|
||||
// Options: --include-headers
|
||||
|
||||
virtual patch
|
||||
virtual context
|
||||
virtual org
|
||||
virtual report
|
||||
|
||||
//----------------------------------------------------------
|
||||
// Detection
|
||||
//----------------------------------------------------------
|
||||
|
||||
@runtime_bad_err_handle exists@
|
||||
expression ret;
|
||||
@@
|
||||
(
|
||||
ret = \(pm_runtime_idle\|
|
||||
pm_runtime_suspend\|
|
||||
pm_runtime_autosuspend\|
|
||||
pm_runtime_resume\|
|
||||
pm_request_idle\|
|
||||
pm_request_resume\|
|
||||
pm_request_autosuspend\|
|
||||
pm_runtime_get\|
|
||||
pm_runtime_get_sync\|
|
||||
pm_runtime_put\|
|
||||
pm_runtime_put_autosuspend\|
|
||||
pm_runtime_put_sync\|
|
||||
pm_runtime_put_sync_suspend\|
|
||||
pm_runtime_put_sync_autosuspend\|
|
||||
pm_runtime_set_active\|
|
||||
pm_schedule_suspend\|
|
||||
pm_runtime_barrier\|
|
||||
pm_generic_runtime_suspend\|
|
||||
pm_generic_runtime_resume\)(...);
|
||||
...
|
||||
IS_ERR_VALUE(ret)
|
||||
...
|
||||
)
|
||||
|
||||
//----------------------------------------------------------
|
||||
// For context mode
|
||||
//----------------------------------------------------------
|
||||
|
||||
@depends on runtime_bad_err_handle && context@
|
||||
identifier pm_runtime_api;
|
||||
expression ret;
|
||||
@@
|
||||
(
|
||||
ret = pm_runtime_api(...);
|
||||
...
|
||||
* IS_ERR_VALUE(ret)
|
||||
...
|
||||
)
|
||||
|
||||
//----------------------------------------------------------
|
||||
// For patch mode
|
||||
//----------------------------------------------------------
|
||||
|
||||
@depends on runtime_bad_err_handle && patch@
|
||||
identifier pm_runtime_api;
|
||||
expression ret;
|
||||
@@
|
||||
(
|
||||
ret = pm_runtime_api(...);
|
||||
...
|
||||
- IS_ERR_VALUE(ret)
|
||||
+ ret < 0
|
||||
...
|
||||
)
|
||||
|
||||
//----------------------------------------------------------
|
||||
// For org and report mode
|
||||
//----------------------------------------------------------
|
||||
|
||||
@r depends on runtime_bad_err_handle exists@
|
||||
position p1, p2;
|
||||
identifier pm_runtime_api;
|
||||
expression ret;
|
||||
@@
|
||||
(
|
||||
ret = pm_runtime_api@p1(...);
|
||||
...
|
||||
IS_ERR_VALUE@p2(ret)
|
||||
...
|
||||
)
|
||||
|
||||
@script:python depends on org@
|
||||
p1 << r.p1;
|
||||
p2 << r.p2;
|
||||
pm_runtime_api << r.pm_runtime_api;
|
||||
@@
|
||||
|
||||
cocci.print_main(pm_runtime_api,p1)
|
||||
cocci.print_secs("IS_ERR_VALUE",p2)
|
||||
|
||||
@script:python depends on report@
|
||||
p1 << r.p1;
|
||||
p2 << r.p2;
|
||||
pm_runtime_api << r.pm_runtime_api;
|
||||
@@
|
||||
|
||||
msg = "%s returns < 0 as error. Unecessary IS_ERR_VALUE at line %s" % (pm_runtime_api, p2[0].line)
|
||||
coccilib.report.print_report(p1[0],msg)
|
|
@ -41,9 +41,9 @@ create_package() {
|
|||
parisc*)
|
||||
debarch=hppa ;;
|
||||
mips*)
|
||||
debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;;
|
||||
debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
|
||||
arm*)
|
||||
debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;;
|
||||
debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
|
||||
*)
|
||||
echo "" >&2
|
||||
echo "** ** ** WARNING ** ** **" >&2
|
||||
|
@ -62,7 +62,7 @@ create_package() {
|
|||
fi
|
||||
|
||||
# Create the package
|
||||
dpkg-gencontrol -isp $forcearch -p$pname -P"$pdir"
|
||||
dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir"
|
||||
dpkg --build "$pdir" ..
|
||||
}
|
||||
|
||||
|
@ -172,8 +172,15 @@ fi
|
|||
|
||||
# Install the maintainer scripts
|
||||
# Note: hook scripts under /etc/kernel are also executed by official Debian
|
||||
# kernel packages, as well as kernel packages built using make-kpkg
|
||||
# kernel packages, as well as kernel packages built using make-kpkg.
|
||||
# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
|
||||
# so do we; recent versions of dracut and initramfs-tools will obey this.
|
||||
debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
|
||||
if grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
|
||||
want_initrd=Yes
|
||||
else
|
||||
want_initrd=No
|
||||
fi
|
||||
for script in postinst postrm preinst prerm ; do
|
||||
mkdir -p "$tmpdir$debhookdir/$script.d"
|
||||
cat <<EOF > "$tmpdir/DEBIAN/$script"
|
||||
|
@ -184,6 +191,9 @@ set -e
|
|||
# Pass maintainer script parameters to hook scripts
|
||||
export DEB_MAINT_PARAMS="\$*"
|
||||
|
||||
# Tell initramfs builder whether it's wanted
|
||||
export INITRD=$want_initrd
|
||||
|
||||
test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
|
||||
exit 0
|
||||
EOF
|
||||
|
@ -288,15 +298,14 @@ mkdir -p "$destdir"
|
|||
(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
|
||||
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
|
||||
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
|
||||
arch=$(dpkg --print-architecture)
|
||||
|
||||
cat <<EOF >> debian/control
|
||||
|
||||
Package: $kernel_headers_packagename
|
||||
Provides: linux-headers, linux-headers-2.6
|
||||
Architecture: $arch
|
||||
Description: Linux kernel headers for $KERNELRELEASE on $arch
|
||||
This package provides kernel header files for $KERNELRELEASE on $arch
|
||||
Architecture: any
|
||||
Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
|
||||
This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
|
||||
.
|
||||
This is useful for people who need to build external modules
|
||||
EOF
|
||||
|
|
Loading…
Reference in New Issue