adding support for .patches and /proc/patches.gz
Subsystems (9)
RFC PATCH 1/1 adding support for .patches and /proc/patches.gz
Greetings,
This feature has been brought up several times before, as can be seen here:
http://www.ussg.iu.edu/hypermail/linux/kernel/0404.3/0798.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0203.1/0598.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/9803.0/0223.html
For those unfamiliar, a file linux/.patches would be adding to the source tree. When applying patches to the source tree, descriptive information would be written to .patches. After compilation and running of this kernel, the .patches information would be accessible through /proc/patches.gz; similar to the /proc/config.gz feature.
When a user requests help troubleshooting, they can send a developer the output of zcat /proc/patches.gz along with their /proc/config.gz, traces, dmesg, etc. A list of applied patches to the user's source tree can make it much easier and quicker to track down a bug. In addition, users of stock distribution kernels will be able to identify all the patches applied by "Your Favorite Distro".
Getting .patches adopted into common use is the main problem. Here are several solutions towards making effective use of .patches...in order from terrible to ideal:
Solution 1:
Free-for-all .patches file. Vendors and developers could write whatever data they see fit to the file.
Pros: NULL
Cons: TOO much flexibility; no structure; confusion; flash floods; would render .patches practically useless
Solution 2:
Use a format similar to the MAINTAINERS to keep information about applied patches.
Pros: uniform structure; descriptive data
Cons: additional code would be necessary to modify the .patches file which is not very desirable when passing around small diffs.
Solution 3:
Incorporate a command line flag (or possibly a wrapper) in patch (such as -k) to indicate that the user will be performing a kernel patch and therefore patch should write information (such as the patch filename, date, etc) to .patches in a uniform format. Patch information could be inserted into .patches when a patch is applied and removed when it is reserved (-R).
Pros: Automatic insertion/removal into .patches via normal diff's; requires no extra code besides the -k flag
Cons: All vendors would have to modify their utilities and remember to pass this flag to patch; users/developers manually patching would have to remember it as well.
Solution 4:
Incorporate insertion and removal globally into patch without the need for a flag (perhaps have a flag to NOT use it if desired). Patch information could be inserted into .patches when a patch is applied and removed when it is reserved (-R).
Pros: Automatic insertion/removal into .patches via normal diff's; no vendor, developer, user intervention required to implement; the .patches file could be easily used by other software as it would be default in patch;
Cons: politics: an arguably radical change to patch
I'm CC'ing this to the GNU patch maintainers. Hopefully they will have some input. Attached is four patch files which apply to 2.6.6-rc3-bk11. It would likely be best for these to sit in mm until one of the above solutions is reached:
dotpatches-Kconfig: Kconfig update and .patches creation
dotpatches-defconfigs: set defconfigs identical to /proc/config feature
dotpatches-kernel: modifications in linux/kernel
dotpatches-scripts: modifications in linux/scripts
Regards,
Jon Oberheide
[email protected]
init/Kconfig +19 -0
@@ -218,6 +218,25 @@ This option enables access to kernel configuration file and build information through /proc/config.gz. +config IKPATCHES + bool "Kernel .patches support" + ---help--- + This option enables the kernel's ".patches" file to be saved in + the kernel. The .patches file is used to store important + information about patches that have been applied to the running + kernel's original source. The .patches data can be valuable + while troubleshooting and tracking down bugs. This information + can be extracted from the kernel image file with the script + scripts/extract-ikpatches. It can also be extracted from a + running kernel by reading /proc/patches.gz, if enabled (below). + +config IKPATCHES_PROC + bool "Enable access to .patches through /proc/patches.gz" + depends on IKPATCHES && PROC_FS + ---help--- + This option enables access to information about kernel patches + through /proc/patches.gz. + menuconfig EMBEDDED bool "Configure standard kernel features (for small systems)"
.patches +1 -0
@@ -0,0 +1,1 @@ +
arch/alpha/defconfig +1 -0
@@ -25,6 +25,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/assabet_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/bast_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=16 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/cerfcube_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/epxa10db_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/lart_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/lubbock_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/netwinder_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/s3c2410_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=16 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/shark_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/arm/configs/versatile_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/h8300/defconfig +1 -0
@@ -26,6 +26,7 @@ # CONFIG_SYSCTL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/i386/defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_LOG_BUF_SHIFT=15 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ia64/configs/generic_defconfig +2 -0
@@ -19,6 +19,8 @@ CONFIG_LOG_BUF_SHIFT=20 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ia64/configs/sn2_defconfig +1 -0
@@ -19,6 +19,7 @@ CONFIG_LOG_BUF_SHIFT=20 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ia64/configs/zx1_defconfig +1 -0
@@ -21,6 +21,7 @@ CONFIG_LOG_BUF_SHIFT=17 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ia64/defconfig +2 -0
@@ -22,6 +22,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/atlas_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/bosporus_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/capcella_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/cobalt_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/db1000_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/db1100_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/db1500_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ddb5476_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ddb5477_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/decstation_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/e55_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/eagle_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ev64120_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ev96100_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ip22_defconfig +2 -0
@@ -25,6 +25,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ip27_defconfig +2 -0
@@ -23,6 +23,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ip32_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/it8172_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ivr_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/jaguar-atx_defconfig +2 -0
@@ -25,6 +25,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/jmr3927_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/lasat200_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/malta_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/mirage_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/mpc30x_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/mtx1_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ocelot_c_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/ocelot_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/osprey_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/pb1000_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/pb1100_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/pb1500_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/pb1550_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/rm200_defconfig +2 -0
@@ -25,6 +25,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/sb1250-swarm_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_LOG_BUF_SHIFT=15 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/sead_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/tb0226_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/tb0229_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/workpad_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/xxs1500_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/configs/yosemite_defconfig +2 -0
@@ -24,6 +24,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/mips/defconfig +2 -0
@@ -25,6 +25,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/parisc/configs/712_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=15 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/parisc/configs/a500_defconfig +2 -0
@@ -26,6 +26,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/parisc/configs/b180_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=15 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/parisc/configs/c3000_defconfig +2 -0
@@ -26,6 +26,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/parisc/defconfig +2 -0
@@ -25,6 +25,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/beech_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/common_defconfig +2 -0
@@ -25,6 +25,8 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/cpci405_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/ebony_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/ep405_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/ibmchrp_defconfig +2 -0
@@ -25,6 +25,8 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/k2_defconfig +1 -0
@@ -28,6 +28,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/mcpn765_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/ocotea_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/pcore_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/pmac_defconfig +2 -0
@@ -25,6 +25,8 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/power3_defconfig +2 -0
@@ -24,6 +24,8 @@ CONFIG_LOG_BUF_SHIFT=15 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/pplus_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/prpmc750_defconfig +1 -0
@@ -28,6 +28,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/prpmc800_defconfig +1 -0
@@ -28,6 +28,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/redwood5_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/redwood6_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/redwood_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/configs/spruce_defconfig +1 -0
@@ -25,6 +25,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc/configs/walnut_defconfig +1 -0
@@ -26,6 +26,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y # CONFIG_KALLSYMS is not set CONFIG_FUTEX=y
arch/ppc/defconfig +2 -0
@@ -25,6 +25,8 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc64/configs/g5_defconfig +1 -0
@@ -30,6 +30,7 @@ CONFIG_LOG_BUF_SHIFT=17 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc64/configs/iSeries_defconfig +2 -0
@@ -29,6 +29,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc64/configs/pSeries_defconfig +2 -0
@@ -29,6 +29,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/ppc64/defconfig +2 -0
@@ -29,6 +29,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/s390/defconfig +2 -0
@@ -26,6 +26,8 @@ CONFIG_HOTPLUG=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sh/configs/dreamcast_defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_LOG_BUF_SHIFT=14 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sh/configs/hp680_defconfig +1 -0
@@ -23,6 +23,7 @@ # CONFIG_SYSCTL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sh/configs/se7751_defconfig +1 -0
@@ -22,6 +22,7 @@ CONFIG_SYSCTL=y CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sh/configs/snapgear_defconfig +1 -0
@@ -22,6 +22,7 @@ # CONFIG_SYSCTL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sh/configs/systemh_defconfig +1 -0
@@ -23,6 +23,7 @@ # CONFIG_SYSCTL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sh/defconfig +1 -0
@@ -22,6 +22,7 @@ # CONFIG_SYSCTL is not set CONFIG_LOG_BUF_SHIFT=14 # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set CONFIG_EMBEDDED=y CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sparc/defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_LOG_BUF_SHIFT=14 # CONFIG_HOTPLUG is not set # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/sparc64/defconfig +1 -0
@@ -23,6 +23,7 @@ CONFIG_LOG_BUF_SHIFT=15 CONFIG_HOTPLUG=y # CONFIG_IKCONFIG is not set +# CONFIG_IKPATCHES is not set # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
arch/x86_64/defconfig +2 -0
@@ -32,6 +32,8 @@ # CONFIG_HOTPLUG is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +CONFIG_IKPATCHES=y +CONFIG_IKPATCHES_PROC=y # CONFIG_EMBEDDED is not set CONFIG_KALLSYMS=y CONFIG_FUTEX=y
kernel/Makefile +34 -0
@@ -20,6 +20,8 @@ obj-$(CONFIG_COMPAT) += compat.o obj-$(CONFIG_IKCONFIG) += configs.o obj-$(CONFIG_IKCONFIG_PROC) += configs.o +obj-$(CONFIG_IKPATCHES) += patches.o +obj-$(CONFIG_IKPATCHES_PROC) += patches.o obj-$(CONFIG_STOP_MACHINE) += stop_machine.o obj-$(CONFIG_AUDIT) += audit.o obj-$(CONFIG_AUDITSYSCALL) += auditsc.o
@@ -62,3 +64,35 @@ targets += config_data.h $(obj)/config_data.h: $(obj)/config_data.gz FORCE $(call if_changed,ikconfiggz) + + + +# patches.o uses generated files - dependecies must be listed explicitly +$(obj)/patches.o: $(obj)/ikpatches.h + +ifdef CONFIG_IKCONFIG_PROC +$(obj)/patches.o: $(obj)/patches_data.h +endif + +# ikpatches.h contains all the kernel's patches data - generated +# from .patches. Info from ikpatches.h can be extracted from the +# kernel binary. + +quiet_cmd_ikpatches = IKCFG $@ + cmd_ikpatches = $(CONFIG_SHELL) $< .patches > $@ + +targets += ikpatches.h +$(obj)/ikpatches.h: scripts/mkpatches .patches FORCE + $(call if_changed,ikpatches) + +# patches_data.h contains the same information as ikpatches.h but gzipped. +# Info from patches_data can be extracted from /proc/patches* +targets += patches_data.gz +$(obj)/patches_data.gz: .patches FORCE + $(call if_changed,gzip) + +quiet_cmd_ikpatchesgz = IKCFG $@ + cmd_ikpatchesgz = cat $< | scripts/bin2c kernel_patches_data > $@ +targets += patches_data.h +$(obj)/patches_data.h: $(obj)/patches_data.gz FORCE + $(call if_changed,ikpatchesgz)
kernel/patches.c +108 -0
108 lines not on this page · raw message
scripts/extract-ikpatches +66 -0
66 lines not on this page · raw message
scripts/mkpatches +63 -0
63 lines not on this page · raw message
Quoted 2 lines · Jon Oberheide
I'm CC'ing this to the GNU patch maintainers. Hopefully they will have some input.
As I understand it, Solution 4 is an incompatible change to 'patch' which would cause 'patch' to not conform to POSIX, the LSB, or to widespread existing practice. That's a pretty serious step, and I'm not sure it's worth the aggravation.
Solution 3 would be to add an option to 'patch' to cause it to log the patches into a file. The basic idea seems like a worthwhile improvement to 'patch', though (as you mention) it's more of a hassle for users to remember the option.
Perhaps there's a better way to address the problem in a way that maintains compatibility while still satisfying your needs. For example, if the kernel patches all contained a line like this at the start:
Patch-log: .patches
then 'patch' could log all the changes into the named file. This would conform to POSIX.
Quoted 15 lines · Paul Eggert
Quoted 2 lines · Jon Oberheide
I'm CC'ing this to the GNU patch maintainers. Hopefully they will have some input.
As I understand it, Solution 4 is an incompatible change to 'patch' which would cause 'patch' to not conform to POSIX, the LSB, or to widespread existing practice. That's a pretty serious step, and I'm not sure it's worth the aggravation.
Solution 3 would be to add an option to 'patch' to cause it to log the patches into a file. The basic idea seems like a worthwhile improvement to 'patch', though (as you mention) it's more of a hassle for users to remember the option.
Quoted 8 lines
Perhaps there's a better way to address the problem in a way that maintains compatibility while still satisfying your needs. For example, if the kernel patches all contained a line like this at the start:
Patch-log: .patches
then 'patch' could log all the changes into the named file. This would conform to POSIX.
Not needed.
file +0 -0
1i
lines
.
will do just fine. Remember that patch(1) can handle at least some ed scripts.
On Mon, 2004-05-10 19:51:07 +0100, [email protected] <[email protected]> wrote in message <[email protected]>:
Quoted 9 lines · Paul Eggert
Quoted 5 lines
Quoted 2 lines · Jon Oberheide
I'm CC'ing this to the GNU patch maintainers. Hopefully they will have some input.
then 'patch' could log all the changes into the named file. This would conform to POSIX.
will do just fine. Remember that patch(1) can handle at least some ed scripts.
Another way would be to have a ./linux/patches/ directory and ask every patch to place a file down there. Then, just list all the file names with their contents in /proc/patches.gz ...
Of course, one could even place the actual patches there and display everything in /proc/patches.gz that's not an actual patch chunk. This way, you can have nice patches with proper documentation (think quilt series) and even (another CONFIG_XXX option) the full patch file inside the kernel! For custom built kernels, *this* would be a *real* advantage! For vanilla kernel, you wouldn't loose anything.
MfG, JBG
Signature · 4 lines
Jan-Benedict Glaw [email protected] . +49-172-7608481 "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg fuer einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
Quoted 8 lines · Jon Oberheide
Greetings,
This feature has been brought up several times before, as can be seen here:
http://www.ussg.iu.edu/hypermail/linux/kernel/0404.3/0798.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0203.1/0598.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/9803.0/0223.html
Quoted 5 lines
For those unfamiliar, a file linux/.patches would be adding to the source tree. When applying patches to the source tree, descriptive information would be written to .patches. After compilation and running of this kernel, the .patches information would be accessible through
/proc/patches.gz; similar to the/proc/config.gzfeature.
The first question would be, patches between the current kernel and what? Vendor kernel, people may not have it. Kernel.org kernal, just the patches to a current vendor kernel diff would be pretty huge in some cases.
Let's say it looks like a high cost/benefit ratio, would be much less effective unless it were used for every patch, and feels like something you might want to do within an organization rather than as a general practice.
Sorry, you asked for comments...
Signature · 3 lines
-bill davidsen ([email protected]) "The secret to procrastination is to put things off until the last possible moment - but no longer" -me
Quoted 15 lines · Bill Davidsen
Quoted 8 lines · Jon Oberheide
Greetings,
This feature has been brought up several times before, as can be seen here:
http://www.ussg.iu.edu/hypermail/linux/kernel/0404.3/0798.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0203.1/0598.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/9803.0/0223.htmlQuoted 5 lines
For those unfamiliar, a file linux/.patches would be adding to the source tree. When applying patches to the source tree, descriptive information would be written to .patches. After compilation and running of this kernel, the .patches information would be accessible through
/proc/patches.gz; similar to the/proc/config.gzfeature.
Quoted 3 lines
The first question would be, patches between the current kernel and what? Vendor kernel, people may not have it. Kernel.org kernal, just the patches to a current vendor kernel diff would be pretty huge in some cases.
Any patches applied against the current vanilla kernel.org kernel would be listed in .patches. This would include vendor, third-party, and even pre/bk/mm patches.
Keep in mind, .patches would not contain the entire patch, as that would be WAY to large, but just a short entry such as the name, date last modified, and date applied of the patch file.
Quoted 4 lines
Let's say it looks like a high cost/benefit ratio, would be much less effective unless it were used for every patch, and feels like something you might want to do within an organization rather than as a general practice.
Exactly as I stated, adoption would be the hardest part. Paul's idea of adding an option to patch w/o breaking POSIX sounds like a way to go. Of course that would require widespread documentation updates and contacting vendors but would be very possible.
Quoted 1 line
Sorry, you asked for comments...
No need to be sorry, thanks! :)
Regards,
Jon Oberheide
[email protected]
Quoted 7 lines · Jon Oberheide
Any patches applied against the current vanilla kernel.org kernel would be listed in .patches. This would include vendor, third-party, and even pre/bk/mm patches.
Keep in mind, .patches would not contain the entire patch, as that would be WAY to large, but just a short entry such as the name, date last modified, and date applied of the patch file.
A URI would always be nice. That way the originator of the patch can be contacted and/or the patch can be fetched easily, all without the original kernel source.
In fact, it seems to me that BK (or in fact any patch management system) could prove useful here. Not only could it list merged changesets in .patches, it could also provide a URI for the author or the repo/patch. And as the kernel tree moves and the patches get pushed into releases, the .patches file gets cleared of everything that exists in the base tree. Really, something like a translated output of the BK changelog for a tree would probably do the job. Much like lk-changelog.pl, but more compact information wise. Providing a tool at least would get it out in the open and used.
Of course, then you have to define what the base is, and really this should be the first thing in .patches - You need to state what the baseline is you're comparing against. It'd be good if it wasn't in a separate place. That increases it's versatility greatly.
For something like this to happen with BK (ie: as a BitMover provided app), you may want to talk to Larry McVoy - it's his baby after all. Of course, you could just hack on lk-changelog.pl yourself.
Signature · 2 lines
Stuart Young (aka Cef) [email protected] is for LKML and related email only