Package: linux-patch-xenomai
Version: 2.5.1-2
Severity: grave

Hello,

I have tried compiling Linux 2.6.32.7 with the patches provided by
the new version of the linux-patch-xenomai package. Unfortunately,
I noticed that running "make defconfig" or "make silentoldconfig"
print the following errors messages and make exits with an error:

=== 8< ===
*** Default configuration is based on 'i386_defconfig'
arch/x86/Kconfig:74: unexpected option "select"
arch/x86/Kconfig:75: unexpected option "select"
arch/x86/Kconfig:76: unexpected option "select"
arch/x86/Kconfig:77: unexpected option "select"
arch/x86/Kconfig:78: unexpected option "select"
arch/x86/Kconfig:79: unexpected option "select"
arch/x86/Kconfig:80: unexpected option "select"
arch/x86/Kconfig:81: unexpected option "select"
arch/x86/Kconfig:82: unexpected option "select"
arch/x86/Kconfig:83: unexpected option "select"
arch/x86/Kconfig:84: unexpected option "select"
arch/x86/Kconfig:85: unexpected option "select"
make[1]: *** [defconfig] Error 1
make: *** [defconfig] Error 2
=== >8 ===

Please note that no such errors occur with the vanilla Xenomai
2.5.1 source code.

As one can see from the errors, the source of this problem is the
arch/x86/Kconfig file. Here are the relevant lines:

=== 8< ===
### Arch settings
config X86
        def_bool y
        select HAVE_AOUT if X86_32
        select HAVE_READQ
        select HAVE_WRITEQ
        select HAVE_UNSTABLE_SCHED_CLOCK
        select HAVE_IDE
        select HAVE_OPROFILE
        select HAVE_PERF_EVENTS if (!M386 && !M486)
        select HAVE_IOREMAP_PROT
        select HAVE_KPROBES
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select ARCH_WANT_FRAME_POINTERS
        select HAVE_DMA_ATTRS
        select HAVE_KRETPROBES
        select HAVE_FTRACE_MCOUNT_RECORD
        select HAVE_DYNAMIC_FTRACE
        select HAVE_FUNCTION_TRACER
        select HAVE_FUNCTION_GRAPH_TRACER
        select HAVE_FUNCTION_GRAPH_FP_TEST
        select HAVE_FUNCTION_TRACE_MCOUNT_TEST
        select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE

menu "Real-time sub-system"

comment "WARNING! You enabled APM, CPU Frequency scaling or ACPI 'processor'"
        depends on APM || CPU_FREQ || ACPI_PROCESSOR
comment "option. These options are known to cause troubles with Xenomai."
        depends on APM || CPU_FREQ || ACPI_PROCESSOR

comment "NOTE: Xenomai conflicts with PC speaker support."
        depends on !X86_TSC && X86 && INPUT_PCSPKR
comment "(menu Device Drivers/Input device support/Miscellaneous devices)"
        depends on !X86_TSC && X86 && INPUT_PCSPKR

comment "NOTE: Xenomai needs either X86_LOCAL_APIC enabled or HPET_TIMER 
disabled."
        depends on (!X86_LOCAL_APIC || !X86_TSC) && X86 && HPET_TIMER
comment "(menu Processor type and features)"
        depends on (!X86_LOCAL_APIC || !X86_TSC) && X86 && HPET_TIMER

config XENOMAI
        depends on ((X86_TSC || !X86 || !INPUT_PCSPKR) && (!HPET_TIMER || !X86 
|| (X86_LOCAL_APIC && X86_TSC)))
        bool "Xenomai"
        default y
        select IPIPE

        help
          Xenomai is a real-time extension to the Linux kernel. Note
          that Xenomai relies on Adeos interrupt pipeline (CONFIG_IPIPE
          option) to be enabled, so enabling this option selects the
          CONFIG_IPIPE option.

source "arch/x86/xenomai/Kconfig"

endmenu
        select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_KVM
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_TRACEHOOK
        select HAVE_GENERIC_DMA_COHERENT if X86_32
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
        select USER_STACKTRACE_SUPPORT
        select HAVE_DMA_API_DEBUG
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_BZIP2
        select HAVE_KERNEL_LZMA
        select HAVE_ARCH_KMEMCHECK
=== >8 ===

As you can see, the options for "config X86" are cut off in the middle,
and then the menu for Xenomai related settings is inserted. Then, after
Xenomai settings menu, the options for X86 continue. This suggests a
problem with the generated Xenomai patch.

After having a look at the Debian package, I noticed that the problem
is caused by the following lines in "debian/prepare-patch.sh"

=== 8< ===
77 diff_addons() {
78     lines=`(echo ; echo ; cat $xenomai_root/scripts/Kconfig.frag) | wc -l`
79
80     echo "--- linux/arch/$linux_arch/Kconfig    1970-01-01 
01:00:00.000000000 +0100" >> $patch_file
81     echo "+++ linux-patched/arch/$linux_arch/Kconfig    2007-03-06 
17:55:58.000000000 +0000" >> $patch_file
82     echo "@@ -40,2 +40,$lines @@" >> $patch_file
83     echo " source \"init/Kconfig\"" >> $patch_file
84     sed -e "s,@LINUX_ARCH@,$linux_arch,g" $xenomai_root/scripts/Kconfig.frag 
| sed 's/^/+/' >> $patch_file
85     echo " " >> $patch_file
86 }
=== >8 ===

As you can see, the line number 40 is hard-coded to the patch.
Unfortunately, this ends up putting the Xenomai related options
right in the middle of "config X86" options, which causes the
errors shown above.

Then I looked at how Xenomai (upstream) handles this issue. I saw
that it also uses hard-coded line numbers, however in this case
they use a very large number (1400) as the initial line number
so the new lines of the patch get inserted to the *end* of the
init/Kconfig file.

I have not come up with a solution to this problem, but I believe
the solution should involve hard-coding "safer" line numbers into
the patch, like upstream does.

I chose "grave" as the severity as I believe that this bug makes
the "linux-patch-xenomai" package unusuable for its main purpose.

Dear Roland Stigge,

I know the following request should be separate wishlist bug, but
can you please use a patch system like quilt or something similar
so it would be easy to see what changes you made to the original
Xenomai source code without having to dig through the diff.gz file?

Regards,

M. Vefa Bicakci




-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to