* [meta-oe][PATCH 0/6] create meta-initramfs layer
@ 2012-02-21 0:21 Andrea Adami
2012-02-21 0:21 ` [meta-oe][PATCH] meta-initramfs: initial layer commit Andrea Adami
` (5 more replies)
0 siblings, 6 replies; 15+ messages in thread
From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw)
To: openembedded-devel
* Layer will host klibc recipe and .bbclass for compiling
* statically linked binaries.
* Add kexecboot, linux-kexecboot and relative images
* (http://kexecboot.org)
Andrea Adami (6):
meta-initramfs: initial commit
meta-initramfs: import klibc recipe and bbclass from meta-oe
meta-initramfs: add kexec-tools-klibc from meta-oe
meta-initramfs: add initramfs-kexecboot images from meta-handheld
meta-initramfs: add kexecboot recipes from meta-handheld
meta-initramfs: add linux-kexecboot_3.1 from meta-handheld
meta-initramfs/README | 11 +
meta-initramfs/classes/klibc.bbclass | 9 +
.../images/initramfs-kexecboot-image.bb | 28 +
.../images/initramfs-kexecboot-klibc-image.bb | 5 +
.../recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb | 61 +
.../recipes-bsp/kexecboot/kexecboot-klibc_git.bb | 12 +
meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc | 54 +
.../recipes-bsp/kexecboot/kexecboot_git.bb | 9 +
.../linux/files/qvga/logo_linux_clut224.ppm.bz2 | Bin 0 -> 5547 bytes
.../linux/files/vga/logo_linux_clut224.ppm.bz2 | Bin 0 -> 6436 bytes
...xx_sharpsl-retain-ops-structure-on-collie.patch | 34 +
.../linux/linux-kexecboot-3.1/akita/defconfig | 132 ++
.../linux/linux-kexecboot-3.1/c7x0/defconfig | 134 ++
.../linux/linux-kexecboot-3.1/collie/defconfig | 144 ++
.../linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch | 66 +
.../linux/linux-kexecboot-3.1/poodle/defconfig | 136 ++
.../linux/linux-kexecboot-3.1/spitz/defconfig | 132 ++
.../linux/linux-kexecboot-3.1/tosa/defconfig | 134 ++
.../recipes-kernel/linux/linux-kexecboot.inc | 136 ++
.../recipes-kernel/linux/linux-kexecboot_3.1.bb | 15 +
.../recipes-devtools/klibc/klcc-cross_1.5.25.bb | 33 +
.../klibc/klibc-1.5.25/dash_readopt.patch | 111 ++
.../fstype-sane-vfat-and-jffs2-for-1.5.patch | 74 +
.../klibc/klibc-1.5.25/klcc_prefix.patch | 24 +
.../klibc/klibc-1.5.25/klibc-config-eabi.patch | 14 +
.../klibc/klibc-1.5.25/modprobe.patch | 1984 ++++++++++++++++++++
.../klibc/klibc-1.5.25/staging.patch | 153 ++
.../klibc/klibc-1.5.25/use-env-for-perl.patch | 25 +
.../recipes-devtools/klibc/klibc-1.5.25/wc.patch | 245 +++
.../klibc/klibc-checksums_1.5.25.inc | 2 +
.../klibc/klibc-static-utils_1.5.25.bb | 17 +
.../recipes-devtools/klibc/klibc-utils.inc | 70 +
.../recipes-devtools/klibc/klibc-utils_1.5.25.bb | 17 +
meta-initramfs/recipes-devtools/klibc/klibc.inc | 48 +
.../recipes-devtools/klibc/klibc_1.5.25.bb | 35 +
.../kexec/kexec-tools-klibc-2.0.2/elf.patch | 94 +
.../kexec/kexec-tools-klibc-2.0.2/errno.patch | 13 +
.../kexec/kexec-tools-klibc-2.0.2/other.patch | 97 +
.../kexec/kexec-tools-klibc-2.0.2/string.patch | 11 +
.../kexec/kexec-tools-klibc-2.0.2/syscall.patch | 46 +
.../kexec/kexec-tools-klibc_2.0.2.bb | 26 +
meta-initramfs/recipes-kernel/kmod/kmod_git.bb | 16 +
meta-oe/classes/klibc.bbclass | 9 -
.../recipes-devtools/klibc/klcc-cross_1.5.25.bb | 33 -
.../klibc/klibc-1.5.25/dash_readopt.patch | 111 --
.../fstype-sane-vfat-and-jffs2-for-1.5.patch | 74 -
.../klibc/klibc-1.5.25/klcc_prefix.patch | 24 -
.../klibc/klibc-1.5.25/klibc-config-eabi.patch | 14 -
.../klibc/klibc-1.5.25/modprobe.patch | 1984 --------------------
.../klibc/klibc-1.5.25/staging.patch | 153 --
.../klibc/klibc-1.5.25/use-env-for-perl.patch | 25 -
.../recipes-devtools/klibc/klibc-1.5.25/wc.patch | 245 ---
.../klibc/klibc-checksums_1.5.25.inc | 2 -
.../klibc/klibc-static-utils_1.5.25.bb | 17 -
meta-oe/recipes-devtools/klibc/klibc-utils.inc | 70 -
.../recipes-devtools/klibc/klibc-utils_1.5.25.bb | 17 -
meta-oe/recipes-devtools/klibc/klibc.inc | 48 -
meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb | 35 -
.../kexec/kexec-tools-klibc-2.0.2/elf.patch | 94 -
.../kexec/kexec-tools-klibc-2.0.2/errno.patch | 13 -
.../kexec/kexec-tools-klibc-2.0.2/other.patch | 97 -
.../kexec/kexec-tools-klibc-2.0.2/string.patch | 11 -
.../kexec/kexec-tools-klibc-2.0.2/syscall.patch | 46 -
.../kexec/kexec-tools-klibc_2.0.2.bb | 26 -
64 files changed, 4407 insertions(+), 3148 deletions(-)
create mode 100644 meta-initramfs/README
create mode 100644 meta-initramfs/classes/klibc.bbclass
create mode 100644 meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb
create mode 100644 meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb
create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb
create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb
create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc
create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot.inc
create mode 100644 meta-initramfs/recipes-bsp/recipes-kernel/linux/linux-kexecboot_3.1.bb
create mode 100644 meta-initramfs/recipes-devtools/klibc/klcc-cross_1.5.25.bb
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/staging.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/wc.patch
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-checksums_1.5.25.inc
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-utils.inc
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-utils_1.5.25.bb
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc.inc
create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc_1.5.25.bb
create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch
create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch
create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch
create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch
create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch
create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb
create mode 100644 meta-initramfs/recipes-kernel/kmod/kmod_git.bb
delete mode 100644 meta-oe/classes/klibc.bbclass
delete mode 100644 meta-oe/recipes-devtools/klibc/klcc-cross_1.5.25.bb
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/staging.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/wc.patch
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.25.inc
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-utils.inc
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-utils_1.5.25.bb
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc.inc
delete mode 100644 meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb
delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch
delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch
delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch
delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch
delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch
delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb
--
1.7.3.4
^ permalink raw reply [flat|nested] 15+ messages in thread* [meta-oe][PATCH] meta-initramfs: initial layer commit 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami @ 2012-02-21 0:21 ` Andrea Adami 2012-02-21 1:11 ` Koen Kooi 2012-02-21 21:33 ` [meta-oe][PATCH v2 1/6] meta-initramfs: initial commit Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 2/6] meta-initramfs: import klibc recipe and bbclass from meta-oe Andrea Adami ` (4 subsequent siblings) 5 siblings, 2 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- meta-initramfs/README | 14 ++++++++++++++ meta-initramfs/conf/layer.conf | 11 +++++++++++ 2 files changed, 25 insertions(+), 0 deletions(-) create mode 100644 meta-initramfs/README create mode 100644 meta-initramfs/conf/layer.conf diff --git a/meta-initramfs/README b/meta-initramfs/README new file mode 100644 index 0000000..4daa206 --- /dev/null +++ b/meta-initramfs/README @@ -0,0 +1,14 @@ +This layer depends on: + +URI: git://git.openembedded.org/openembedded-core +branch: master +revision: HEAD + +Send pull requests to openembedded-devel@lists.openembedded.org with +'[meta-initramfs]' in the subject. + +When sending single patches, please using something like +'git send-email -1 --to openembedded-devel@lists.openembedded.org \ + --subject-prefix meta-initramfs' + +Interim layer maintainer: Koen Kooi <koen@dominion.thruhere.net> diff --git a/meta-initramfs/conf/layer.conf b/meta-initramfs/conf/layer.conf new file mode 100644 index 0000000..469cde5 --- /dev/null +++ b/meta-initramfs/conf/layer.conf @@ -0,0 +1,11 @@ +# Layer configuration for meta-initramfs layer + +# We have a conf and classes directory, prepend to BBPATH to prefer our versions +BBPATH := "${LAYERDIR}:${BBPATH}" + +# We have a recipes directory, add to BBFILES +BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "meta-initramfs" +BBFILE_PATTERN_meta-initramfs := "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-initramfs = "8" -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [meta-oe][PATCH] meta-initramfs: initial layer commit 2012-02-21 0:21 ` [meta-oe][PATCH] meta-initramfs: initial layer commit Andrea Adami @ 2012-02-21 1:11 ` Koen Kooi 2012-02-21 21:33 ` [meta-oe][PATCH v2 1/6] meta-initramfs: initial commit Andrea Adami 1 sibling, 0 replies; 15+ messages in thread From: Koen Kooi @ 2012-02-21 1:11 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Op 21-02-12 01:21, Andrea Adami schreef: > Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- > meta-initramfs/README | 14 ++++++++++++++ > meta-initramfs/conf/layer.conf | 11 +++++++++++ Missing COPYING.MIT > +Interim layer maintainer: Koen Kooi <koen@dominion.thruhere.net> ehm, no -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (Darwin) Comment: GPGTools - http://gpgtools.org iEYEARECAAYFAk9C71EACgkQMkyGM64RGpFvbwCfbBC326J3smb/3cNCcrXbqlb9 ygIAoJVYwFqOMHDLD9Ino5KQYKvJSvoN =4ho8 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 15+ messages in thread
* [meta-oe][PATCH v2 1/6] meta-initramfs: initial commit 2012-02-21 0:21 ` [meta-oe][PATCH] meta-initramfs: initial layer commit Andrea Adami 2012-02-21 1:11 ` Koen Kooi @ 2012-02-21 21:33 ` Andrea Adami 1 sibling, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 21:33 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- meta-initramfs/COPYING.MIT | 17 +++++++++++++++++ meta-initramfs/README | 34 ++++++++++++++++++++++++++++++++++ meta-initramfs/conf/layer.conf | 11 +++++++++++ 3 files changed, 62 insertions(+), 0 deletions(-) create mode 100644 meta-initramfs/COPYING.MIT create mode 100644 meta-initramfs/README create mode 100644 meta-initramfs/conf/layer.conf diff --git a/meta-initramfs/COPYING.MIT b/meta-initramfs/COPYING.MIT new file mode 100644 index 0000000..fb950dc --- /dev/null +++ b/meta-initramfs/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/meta-initramfs/README b/meta-initramfs/README new file mode 100644 index 0000000..2cecff6 --- /dev/null +++ b/meta-initramfs/README @@ -0,0 +1,34 @@ +meta-initramfs +============== + +This layer contains the metadata necessary to build the klibc library and +utilities (shared and static) plus other tools useful for the creation of +small-sized initramfs. + + +Dependencies +------------ + +This layer depends on: + +URI: git://git.openembedded.org/openembedded-core +branch: master +revision: HEAD + + +Maintenance +----------- + +Send patches / pull requests to openembedded-devel@lists.openembedded.org +with '[meta-initramfs]' in the subject. + +Layer maintainers: Andrea Adami <andrea.adami@gmail.com> + Paul Eggleton <paul.eggleton@linux.intel.com> + + +License +------- + +All metadata is MIT licensed unless otherwise stated. Source code included +in tree for individual recipes is under the LICENSE stated in each recipe +(.bb file) unless otherwise stated. diff --git a/meta-initramfs/conf/layer.conf b/meta-initramfs/conf/layer.conf new file mode 100644 index 0000000..469cde5 --- /dev/null +++ b/meta-initramfs/conf/layer.conf @@ -0,0 +1,11 @@ +# Layer configuration for meta-initramfs layer + +# We have a conf and classes directory, prepend to BBPATH to prefer our versions +BBPATH := "${LAYERDIR}:${BBPATH}" + +# We have a recipes directory, add to BBFILES +BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "meta-initramfs" +BBFILE_PATTERN_meta-initramfs := "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-initramfs = "8" -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-oe][PATCH 2/6] meta-initramfs: import klibc recipe and bbclass from meta-oe 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH] meta-initramfs: initial layer commit Andrea Adami @ 2012-02-21 0:21 ` Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 3/3] meta-initramfs: add kexec-tools-klibc " Andrea Adami ` (3 subsequent siblings) 5 siblings, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- meta-initramfs/classes/klibc.bbclass | 9 + .../recipes-devtools/klibc/klcc-cross_1.5.25.bb | 33 + .../klibc/klibc-1.5.25/dash_readopt.patch | 111 ++ .../fstype-sane-vfat-and-jffs2-for-1.5.patch | 74 + .../klibc/klibc-1.5.25/klcc_prefix.patch | 24 + .../klibc/klibc-1.5.25/klibc-config-eabi.patch | 14 + .../klibc/klibc-1.5.25/modprobe.patch | 1984 ++++++++++++++++++++ .../klibc/klibc-1.5.25/staging.patch | 153 ++ .../klibc/klibc-1.5.25/use-env-for-perl.patch | 25 + .../recipes-devtools/klibc/klibc-1.5.25/wc.patch | 245 +++ .../klibc/klibc-checksums_1.5.25.inc | 2 + .../klibc/klibc-static-utils_1.5.25.bb | 17 + .../recipes-devtools/klibc/klibc-utils.inc | 70 + .../recipes-devtools/klibc/klibc-utils_1.5.25.bb | 17 + meta-initramfs/recipes-devtools/klibc/klibc.inc | 48 + .../recipes-devtools/klibc/klibc_1.5.25.bb | 35 + meta-oe/classes/klibc.bbclass | 9 - .../recipes-devtools/klibc/klcc-cross_1.5.25.bb | 33 - .../klibc/klibc-1.5.25/dash_readopt.patch | 111 -- .../fstype-sane-vfat-and-jffs2-for-1.5.patch | 74 - .../klibc/klibc-1.5.25/klcc_prefix.patch | 24 - .../klibc/klibc-1.5.25/klibc-config-eabi.patch | 14 - .../klibc/klibc-1.5.25/modprobe.patch | 1984 -------------------- .../klibc/klibc-1.5.25/staging.patch | 153 -- .../klibc/klibc-1.5.25/use-env-for-perl.patch | 25 - .../recipes-devtools/klibc/klibc-1.5.25/wc.patch | 245 --- .../klibc/klibc-checksums_1.5.25.inc | 2 - .../klibc/klibc-static-utils_1.5.25.bb | 17 - meta-oe/recipes-devtools/klibc/klibc-utils.inc | 70 - .../recipes-devtools/klibc/klibc-utils_1.5.25.bb | 17 - meta-oe/recipes-devtools/klibc/klibc.inc | 48 - meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb | 35 - 32 files changed, 2861 insertions(+), 2861 deletions(-) create mode 100644 meta-initramfs/classes/klibc.bbclass create mode 100644 meta-initramfs/recipes-devtools/klibc/klcc-cross_1.5.25.bb create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/staging.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/wc.patch create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-checksums_1.5.25.inc create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-utils.inc create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc-utils_1.5.25.bb create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc.inc create mode 100644 meta-initramfs/recipes-devtools/klibc/klibc_1.5.25.bb delete mode 100644 meta-oe/classes/klibc.bbclass delete mode 100644 meta-oe/recipes-devtools/klibc/klcc-cross_1.5.25.bb delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/staging.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-1.5.25/wc.patch delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.25.inc delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-utils.inc delete mode 100644 meta-oe/recipes-devtools/klibc/klibc-utils_1.5.25.bb delete mode 100644 meta-oe/recipes-devtools/klibc/klibc.inc delete mode 100644 meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb diff --git a/meta-initramfs/classes/klibc.bbclass b/meta-initramfs/classes/klibc.bbclass new file mode 100644 index 0000000..d553bd7 --- /dev/null +++ b/meta-initramfs/classes/klibc.bbclass @@ -0,0 +1,9 @@ +# klcc-cross depends on klibc +DEPENDS =+ "klcc-cross" + +export CC = "${TARGET_PREFIX}klcc" + +# klcc uses own optimizations by default. See klcc(1) man file. +export CFLAGS="" +export CPPFLAGS="" +export LDFLAGS="" diff --git a/meta-initramfs/recipes-devtools/klibc/klcc-cross_1.5.25.bb b/meta-initramfs/recipes-devtools/klibc/klcc-cross_1.5.25.bb new file mode 100644 index 0000000..922c8d8 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klcc-cross_1.5.25.bb @@ -0,0 +1,33 @@ +PR = "${INC_PR}.0" + +require klibc.inc +require klibc-checksums_${PV}.inc + +export KLCC_INST = "${STAGING_DIR_TARGET}/lib/klibc" + +SRC_URI += "file://klcc_prefix.patch \ + file://use-env-for-perl.patch" + +DEPENDS = "klibc" + +FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" + +# ${TARGET_PREFIX}klcc is just a +# perl wrapper around gcc-cross +# so give it the same arch and path +PACKAGE_ARCH = "${TUNE_PKGARCH}" + +inherit cross + +do_configure () { + : +} + +do_compile() { + oe_runmake klcc +} + +do_install() { + install -d ${D}${base_bindir} + install -m 0755 klcc/klcc ${D}${base_bindir}/${TARGET_PREFIX}klcc +} diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch new file mode 100644 index 0000000..3be1be0 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch @@ -0,0 +1,111 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id ad67a97e8fbfb03a68088a6ca6ad87b086c88094 +Signed-off-by: Thomas Kunze <thommycheck@gmx.de> +Minor adjustments tracking upstream changes +Signed-off-by: Andrea Adami <andrea.adami@gmail.com> + +diff -uNr klibc-1.5.22.orig//usr/dash/miscbltin.c klibc-1.5.22/usr/dash/miscbltin.c +--- klibc-1.5.22.orig//usr/dash/miscbltin.c 2011-06-11 02:08:49.000000000 +0200 ++++ klibc-1.5.22/usr/dash/miscbltin.c 2011-06-11 13:55:32.000000000 +0200 +@@ -46,6 +46,7 @@ + #include <ctype.h> + #include <inttypes.h> + #include <time.h> /* strtotimeval() */ ++#include <termios.h> + + #include "shell.h" + #include "options.h" +@@ -149,6 +150,11 @@ + int timeout; + int i; + fd_set set; ++ int n_flag = 0; ++ unsigned int nchars = 0; ++ int silent = 0; ++ struct termios tty, old_tty; ++ + struct timeval ts, t0, t1, to; + + ts.tv_sec = ts.tv_usec = 0; +@@ -156,11 +162,18 @@ + rflag = 0; + timeout = 0; + prompt = NULL; +- while ((i = nextopt("p:rt:")) != '\0') { ++ while ((i = nextopt("p:rt:n:s")) != '\0') { + switch(i) { + case 'p': + prompt = optionarg; + break; ++ case 'n': ++ nchars = strtoul(optionarg, NULL, 10); ++ n_flag = nchars; /* just a flag "nchars is nonzero" */ ++ break; ++ case 's': ++ silent = 1; ++ break; + case 't': + p = strtotimeval(optionarg, &ts); + if (*p || (!ts.tv_sec && !ts.tv_usec)) +@@ -182,6 +197,24 @@ + } + if (*(ap = argptr) == NULL) + sh_error("arg count"); ++ if (n_flag || silent) { ++ if (tcgetattr(0, &tty) != 0) { ++ /* Not a tty */ ++ n_flag = 0; ++ silent = 0; ++ } else { ++ old_tty = tty; ++ if (n_flag) { ++ tty.c_lflag &= ~ICANON; ++ tty.c_cc[VMIN] = nchars < 256 ? nchars : 255; ++ } ++ if (silent) { ++ tty.c_lflag &= ~(ECHO | ECHOK | ECHONL); ++ } ++ tcsetattr(0, TCSANOW, &tty); ++ } ++ } ++ + + status = 0; + if (timeout) { +@@ -200,12 +231,14 @@ + goto start; + +- for (;;) { ++ do { + if (timeout) { + gettimeofday(&t1, NULL); + if (t1.tv_sec > ts.tv_sec || + (t1.tv_sec == ts.tv_sec && + t1.tv_usec >= ts.tv_usec)) { + status = 1; ++ if (n_flag) ++ tcsetattr(0, TCSANOW, &old_tty); + break; /* Timeout! */ + } + +@@ -222,6 +255,8 @@ + FD_SET(0, &set); + if (select(1, &set, NULL, NULL, &to) != 1) { + status = 1; ++ if (n_flag) ++ tcsetattr(0, TCSANOW, &old_tty); + break; /* Timeout! */ + } + } +@@ -263,6 +298,9 @@ + newloc = startloc - 1; + } +- } ++ } while (!n_flag || --nchars); ++ if (n_flag || silent) ++ tcsetattr(0, TCSANOW, &old_tty); ++ + out: + recordregion(startloc, p - (char *)stackblock(), 0); + STACKSTRNUL(p); diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch new file mode 100644 index 0000000..3fec98d --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch @@ -0,0 +1,74 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id 2a98e2a2c1b55a0eb0ac09f2f9b55db2e4c23553 +Signed-off-by: Thomas Kunze <thommycheck@gmx.de> +Refresh and fixes as of commit id 5dbd8d611f3cb7eb8baddb17211d6077e2060fdb +Signed-off-by: Andrea Adami <andrea.adami@gmail.com> + +Index: klibc-1.5.22/usr/kinit/fstype/fstype.c +=================================================================== +--- a/usr/kinit/fstype/fstype.c ++++ b/usr/kinit/fstype/fstype.c +@@ -20,7 +20,7 @@ + #include <netinet/in.h> + #include <sys/utsname.h> + #include <sys/vfs.h> +- ++#include <linux/types.h> + #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */ + + #include "btrfs.h" +@@ -38,6 +38,12 @@ + #include "squashfs_fs.h" + #include "xfs_sb.h" + ++#if __BYTE_ORDER == __BIG_ENDIAN ++#include <linux/byteorder/big_endian.h> ++#else ++#include <linux/byteorder/little_endian.h> ++#endif ++ + /* + * Slightly cleaned up version of jfs_superblock to + * avoid pulling in other kernel header files. +@@ -60,6 +66,30 @@ + /* Swap needs the definition of block size */ + #include "swap_fs.h" + ++static int jffs2_image(const void *buf, unsigned long long *blocks) ++{ ++ const unsigned char *p = buf; ++ ++ if (p[0] == 0x85 && p[1] == 0x19) { ++ *blocks=0; ++ return 1; ++ } ++ return 0; ++} ++ ++static int vfat_image(const void *buf, unsigned long long *blocks) ++{ ++ const char *p = buf; ++ ++ if (!strncmp(p + 54, "FAT12 ", 8) ++ || !strncmp(p + 54, "FAT16 ", 8) ++ || !strncmp(p + 82, "FAT32 ", 8)) { ++ *blocks=0; ++ return 1; ++ } ++ return 0; ++} ++ + static int gzip_image(const void *buf, unsigned long long *bytes) + { + const unsigned char *p = buf; +@@ -495,6 +525,8 @@ static struct imagetype images[] = { + {1, "ext3", ext3_image}, + {1, "ext2", ext2_image}, + {1, "minix", minix_image}, ++ {0, "jffs2", jffs2_image}, ++ {0, "vfat", vfat_image}, + {1, "nilfs2", nilfs2_image}, + {2, "ocfs2", ocfs2_image}, + {8, "reiserfs", reiserfs_image}, + diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch new file mode 100644 index 0000000..a4a0026 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch @@ -0,0 +1,24 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id a29bf15b9c9c0d15f96c254b2ed830e104ae3436 +Signed-off-by: Andrea Adami <andrea.adami@gmail.com> + +Index: klibc-1.5.19/klcc/Kbuild +=================================================================== +--- --- klibc-1.5.19.orig/klcc/Kbuild 2010-07-07 14:07:48.000000000 +0200 ++++ --- klibc-1.5.19./klcc/Kbuild 2010-08-18 23:39:23.000000000 +0200 +@@ -22,10 +22,10 @@ + $(Q)echo 'EMAIN=$(KLIBCEMAIN)' >> $@ + $(Q)echo 'BITSIZE=$(KLIBCBITSIZE)' >> $@ + $(Q)echo 'VERSION=$(shell cat $(srctree)/usr/klibc/version)' >> $@ +- $(Q)echo 'prefix=$(INSTALLDIR)' >> $@ +- $(Q)echo 'bindir=$(INSTALLDIR)/$(KCROSS)bin' >> $@ +- $(Q)echo 'libdir=$(INSTALLDIR)/$(KCROSS)lib' >> $@ +- $(Q)echo 'includedir=$(INSTALLDIR)/$(KCROSS)include' >> $@ ++ $(Q)echo 'prefix=$(KLCC_INST)' >> $@ ++ $(Q)echo 'bindir=$(KLCC_INST)/$(KCROSS)bin' >> $@ ++ $(Q)echo 'libdir=$(KLCC_INST)/$(KCROSS)lib' >> $@ ++ $(Q)echo 'includedir=$(KLCC_INST)/$(KCROSS)include' >> $@ + + + # Generate klcc diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch new file mode 100644 index 0000000..316c80a --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch @@ -0,0 +1,14 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id b6764cf32ec93547531130dca364fb95e1c495f4 +Signed-off-by: Thomas Kunze <thommycheck@gmx.de> + +diff -Nur klibc-1.5/defconfig klibc-1.5p/defconfig +--- klibc-1.5/defconfig 2007-03-04 02:52:10.000000000 +0100 ++++ klibc-1.5p/defconfig 2008-02-08 19:24:22.337127756 +0100 +@@ -5,4 +5,4 @@ + CONFIG_REGPARM=y + # ARM options + # CONFIG_KLIBC_THUMB is not set +-# CONFIG_AEABI is not set ++CONFIG_AEABI=y diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch new file mode 100644 index 0000000..eb2fb39 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch @@ -0,0 +1,1984 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id 70ae69edb02e0174db0841ae501299159c888514 +Signed-off-by: Thomas Kunze <thommycheck@gmx.de> +Minor adjustments tracking upstream changes +Signed-off-by: Andrea Adami <andrea.adami@gmail.com> + +diff --git a/usr/utils/Kbuild b/usr/utils/Kbuild +--- a/usr/utils/Kbuild ++++ b/usr/utils/Kbuild +@@ -4,7 +4,7 @@ + + progs := chroot dd mkdir mkfifo mknod mount pivot_root umount + progs += true false sleep ln mv nuke minips cat ls losetup +-progs += uname halt kill readlink cpio sync dmesg ++progs += uname halt kill readlink cpio sync dmesg modprobe + + static-y := $(addprefix static/, $(progs)) + shared-y := $(addprefix shared/, $(progs)) +@@ -58,6 +58,8 @@ static/sync-y := sync.o + shared/sync-y := sync.o + static/losetup-y := losetup.o + shared/losetup-y := losetup.o ++static/modprobe-y := modprobe.o ++shared/modprobe-y := modprobe.o + + # Additionally linked targets + always := static/reboot static/poweroff shared/reboot shared/poweroff +diff --git a/usr/utils/list.h b/usr/utils/list.h +--- /dev/null ++++ b/usr/utils/list.h +@@ -0,0 +1,238 @@ ++/* Stolen from Linux Kernel Source's list.h -- GPL. */ ++#ifndef _MODINITTOOLS_LIST_H ++#define _MODINITTOOLS_LIST_H ++ ++#undef offsetof ++#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ++ ++/** ++ * container_of - cast a member of a structure out to the containing structure ++ * ++ * @ptr: the pointer to the member. ++ * @type: the type of the container struct this is embedded in. ++ * @member: the name of the member within the struct. ++ * ++ */ ++#define container_of(ptr, type, member) ({ \ ++ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ++ (type *)( (char *)__mptr - offsetof(type,member) );}) ++ ++/* ++ * Simple doubly linked list implementation. ++ * ++ * Some of the internal functions ("__xxx") are useful when ++ * manipulating whole lists rather than single entries, as ++ * sometimes we already know the next/prev entries and we can ++ * generate better code by using them directly rather than ++ * using the generic single-entry routines. ++ */ ++ ++struct list_head { ++ struct list_head *next, *prev; ++}; ++ ++#define LIST_HEAD_INIT(name) { &(name), &(name) } ++ ++#define LIST_HEAD(name) \ ++ struct list_head name = LIST_HEAD_INIT(name) ++ ++#define INIT_LIST_HEAD(ptr) do { \ ++ (ptr)->next = (ptr); (ptr)->prev = (ptr); \ ++} while (0) ++ ++/* ++ * Insert a new entry between two known consecutive entries. ++ * ++ * This is only for internal list manipulation where we know ++ * the prev/next entries already! ++ */ ++static inline void __list_add(struct list_head *new, ++ struct list_head *prev, ++ struct list_head *next) ++{ ++ next->prev = new; ++ new->next = next; ++ new->prev = prev; ++ prev->next = new; ++} ++ ++/** ++ * list_add - add a new entry ++ * @new: new entry to be added ++ * @head: list head to add it after ++ * ++ * Insert a new entry after the specified head. ++ * This is good for implementing stacks. ++ */ ++static inline void list_add(struct list_head *new, struct list_head *head) ++{ ++ __list_add(new, head, head->next); ++} ++ ++/** ++ * list_add_tail - add a new entry ++ * @new: new entry to be added ++ * @head: list head to add it before ++ * ++ * Insert a new entry before the specified head. ++ * This is useful for implementing queues. ++ */ ++static inline void list_add_tail(struct list_head *new, struct list_head *head) ++{ ++ __list_add(new, head->prev, head); ++} ++ ++/* ++ * Delete a list entry by making the prev/next entries ++ * point to each other. ++ * ++ * This is only for internal list manipulation where we know ++ * the prev/next entries already! ++ */ ++static inline void __list_del(struct list_head * prev, struct list_head * next) ++{ ++ next->prev = prev; ++ prev->next = next; ++} ++ ++/** ++ * list_del - deletes entry from list. ++ * @entry: the element to delete from the list. ++ * Note: list_empty on entry does not return true after this, the entry is ++ * in an undefined state. ++ */ ++static inline void list_del(struct list_head *entry) ++{ ++ __list_del(entry->prev, entry->next); ++} ++ ++/** ++ * list_del_init - deletes entry from list and reinitialize it. ++ * @entry: the element to delete from the list. ++ */ ++static inline void list_del_init(struct list_head *entry) ++{ ++ __list_del(entry->prev, entry->next); ++ INIT_LIST_HEAD(entry); ++} ++ ++/** ++ * list_move - delete from one list and add as another's head ++ * @list: the entry to move ++ * @head: the head that will precede our entry ++ */ ++static inline void list_move(struct list_head *list, struct list_head *head) ++{ ++ __list_del(list->prev, list->next); ++ list_add(list, head); ++} ++ ++/** ++ * list_move_tail - delete from one list and add as another's tail ++ * @list: the entry to move ++ * @head: the head that will follow our entry ++ */ ++static inline void list_move_tail(struct list_head *list, ++ struct list_head *head) ++{ ++ __list_del(list->prev, list->next); ++ list_add_tail(list, head); ++} ++ ++/** ++ * list_empty - tests whether a list is empty ++ * @head: the list to test. ++ */ ++static inline int list_empty(struct list_head *head) ++{ ++ return head->next == head; ++} ++ ++static inline void __list_splice(struct list_head *list, ++ struct list_head *head) ++{ ++ struct list_head *first = list->next; ++ struct list_head *last = list->prev; ++ struct list_head *at = head->next; ++ ++ first->prev = head; ++ head->next = first; ++ ++ last->next = at; ++ at->prev = last; ++} ++ ++/** ++ * list_splice - join two lists ++ * @list: the new list to add. ++ * @head: the place to add it in the first list. ++ */ ++static inline void list_splice(struct list_head *list, struct list_head *head) ++{ ++ if (!list_empty(list)) ++ __list_splice(list, head); ++} ++ ++/** ++ * list_splice_init - join two lists and reinitialise the emptied list. ++ * @list: the new list to add. ++ * @head: the place to add it in the first list. ++ * ++ * The list at @list is reinitialised ++ */ ++static inline void list_splice_init(struct list_head *list, ++ struct list_head *head) ++{ ++ if (!list_empty(list)) { ++ __list_splice(list, head); ++ INIT_LIST_HEAD(list); ++ } ++} ++ ++/** ++ * list_entry - get the struct for this entry ++ * @ptr: the &struct list_head pointer. ++ * @type: the type of the struct this is embedded in. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_entry(ptr, type, member) \ ++ container_of(ptr, type, member) ++ ++/** ++ * list_for_each - iterate over a list ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ */ ++#define list_for_each(pos, head) \ ++ for (pos = (head)->next; pos != (head); pos = pos->next) ++ ++/** ++ * list_for_each_prev - iterate over a list backwards ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ */ ++#define list_for_each_prev(pos, head) \ ++ for (pos = (head)->prev; pos != (head); pos = pos->prev) ++ ++/** ++ * list_for_each_safe - iterate over a list safe against removal of list entry ++ * @pos: the &struct list_head to use as a loop counter. ++ * @n: another &struct list_head to use as temporary storage ++ * @head: the head for your list. ++ */ ++#define list_for_each_safe(pos, n, head) \ ++ for (pos = (head)->next, n = pos->next; pos != (head); \ ++ pos = n, n = pos->next) ++ ++/** ++ * list_for_each_entry - iterate over list of given type ++ * @pos: the type * to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_for_each_entry(pos, head, member) \ ++ for (pos = list_entry((head)->next, typeof(*pos), member); \ ++ &pos->member != (head); \ ++ pos = list_entry(pos->member.next, typeof(*pos), member)) ++ ++#endif +diff --git a/usr/utils/modprobe.c b/usr/utils/modprobe.c +--- /dev/null ++++ b/usr/utils/modprobe.c +@@ -0,0 +1,1710 @@ ++/* modprobe.c: insert a module into the kernel, intelligently. ++ Copyright (C) 2001 Rusty Russell. ++ Copyright (C) 2002, 2003 Rusty Russell, IBM Corporation. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++*/ ++#define _GNU_SOURCE /* asprintf */ ++ ++#include <sys/utsname.h> ++#include <sys/types.h> ++#include <sys/stat.h> ++#include <sys/mman.h> ++#include <fcntl.h> ++#include <stdarg.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <ctype.h> ++#include <string.h> ++#include <errno.h> ++#include <unistd.h> ++#include <dirent.h> ++#include <limits.h> ++#include <elf.h> ++#include <getopt.h> ++#include <fnmatch.h> ++#include <asm/unistd.h> ++#include <sys/wait.h> ++#include <syslog.h> ++#include <zlib.h> ++ ++#define streq(a,b) (strcmp((a),(b)) == 0) ++#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) ++ ++#include "list.h" ++static inline void try_old_version(const char *progname, char *argv[]) ++{ ++} ++extern long init_module(void *, unsigned long, const char *); ++extern long delete_module(const char *, unsigned int); ++ ++struct module { ++ struct list_head list; ++ char *modname; ++ char filename[0]; ++}; ++ ++#ifndef MODULE_DIR ++#define MODULE_DIR "/lib/modules" ++#endif ++ ++typedef void (*errfn_t)(const char *fmt, ...); ++ ++/* Do we use syslog or stderr for messages? */ ++static int log; ++ ++static void message(const char *prefix, const char *fmt, va_list *arglist) ++{ ++ char *buf, *buf2; ++ ++ vasprintf(&buf, fmt, *arglist); ++ asprintf(&buf2, "%s%s", prefix, buf); ++ ++ if (log) ++ syslog(LOG_NOTICE, "%s", buf2); ++ else ++ fprintf(stderr, "%s", buf2); ++ free(buf2); ++ free(buf); ++} ++void *grab_contents(gzFile *gzfd, unsigned long *size) ++{ ++ unsigned int max = 16384; ++ void *buffer = malloc(max); ++ int ret; ++ ++ if (!buffer) ++ return NULL; ++ ++ *size = 0; ++ while ((ret = gzread(gzfd, buffer + *size, max - *size)) > 0) { ++ *size += ret; ++ if (*size == max) { ++ buffer = realloc(buffer, max *= 2); ++ if (!buffer) ++ return NULL; ++ } ++ } ++ if (ret < 0) { ++ free(buffer); ++ buffer = NULL; ++ } ++ return buffer; ++} ++ ++void *grab_fd(int fd, unsigned long *size) ++{ ++ gzFile gzfd; ++ ++ gzfd = gzdopen(fd, "rb"); ++ if (!gzfd) ++ return NULL; ++ ++ /* gzclose(gzfd) would close fd, which would drop locks. ++ Don't blame zlib: POSIX locking semantics are so horribly ++ broken that they should be ripped out. */ ++ return grab_contents(gzfd, size); ++} ++void release_file(void *data, unsigned long size) ++{ ++ free(data); ++} ++ ++ ++static int warned = 0; ++static void warn(const char *fmt, ...) ++{ ++ va_list arglist; ++ warned++; ++ va_start(arglist, fmt); ++ message("WARNING: ", fmt, &arglist); ++ va_end(arglist); ++} ++ ++static void fatal(const char *fmt, ...) ++{ ++ va_list arglist; ++ va_start(arglist, fmt); ++ message("FATAL: ", fmt, &arglist); ++ va_end(arglist); ++ exit(1); ++} ++ ++ ++static void grammar(const char *cmd, const char *filename, unsigned int line) ++{ ++ warn("%s line %u: ignoring bad line starting with '%s'\n", ++ filename, line, cmd); ++} ++ ++static void *do_nofail(void *ptr, const char *file, int line, const char *expr) ++{ ++ if (!ptr) { ++ fatal("Memory allocation failure %s line %d: %s.\n", ++ file, line, expr); ++ } ++ return ptr; ++} ++ ++#define NOFAIL(ptr) do_nofail((ptr), __FILE__, __LINE__, #ptr) ++ ++static void print_usage(const char *progname) ++{ ++ fprintf(stderr, ++ "Usage: %s [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [-o <modname>] <modname> [parameters...]\n" ++ "%s -r [-n] [-i] [-v] <modulename> ...\n" ++ "%s -l -t <dirname> [ -a <modulename> ...]\n", ++ progname, progname, progname); ++ exit(1); ++} ++ ++static int fgetc_wrapped(FILE *file, unsigned int *linenum) ++{ ++ for (;;) { ++ int ch = fgetc(file); ++ if (ch != '\\') ++ return ch; ++ ch = fgetc(file); ++ if (ch != '\n') ++ return ch; ++ if (linenum) ++ (*linenum)++; ++ } ++} ++ ++static char *getline_wrapped(FILE *file, unsigned int *linenum) ++{ ++ int size = 1024; ++ int i = 0; ++ char *buf = NOFAIL(malloc(size)); ++ for(;;) { ++ int ch = fgetc_wrapped(file, linenum); ++ if (i == size) { ++ size *= 2; ++ buf = NOFAIL(realloc(buf, size)); ++ } ++ if (ch < 0 && i == 0) { ++ free(buf); ++ return NULL; ++ } ++ if (ch < 0 || ch == '\n') { ++ if (linenum) ++ (*linenum)++; ++ buf[i] = '\0'; ++ return NOFAIL(realloc(buf, i+1)); ++ } ++ buf[i++] = ch; ++ } ++} ++ ++static struct module *find_module(const char *filename, struct list_head *list) ++{ ++ struct module *i; ++ ++ list_for_each_entry(i, list, list) { ++ if (strcmp(i->filename, filename) == 0) ++ return i; ++ } ++ return NULL; ++} ++ ++/* Convert filename to the module name. Works if filename == modname, too. */ ++static void filename2modname(char *modname, const char *filename) ++{ ++ const char *afterslash; ++ unsigned int i; ++ ++ afterslash = strrchr(filename, '/'); ++ if (!afterslash) ++ afterslash = filename; ++ else ++ afterslash++; ++ ++ /* Convert to underscores, stop at first . */ ++ for (i = 0; afterslash[i] && afterslash[i] != '.'; i++) { ++ if (afterslash[i] == '-') ++ modname[i] = '_'; ++ else ++ modname[i] = afterslash[i]; ++ } ++ modname[i] = '\0'; ++} ++ ++static int lock_file(const char *filename) ++{ ++ int fd = open(filename, O_RDWR, 0); ++ ++ if (fd >= 0) { ++ struct flock lock; ++ lock.l_type = F_WRLCK; ++ lock.l_whence = SEEK_SET; ++ lock.l_start = 0; ++ lock.l_len = 1; ++ fcntl(fd, F_SETLKW, &lock); ++ } else ++ /* Read-only filesystem? There goes locking... */ ++ fd = open(filename, O_RDONLY, 0); ++ return fd; ++} ++ ++static void unlock_file(int fd) ++{ ++ /* Valgrind is picky... */ ++ close(fd); ++} ++ ++static void add_module(char *filename, int namelen, struct list_head *list) ++{ ++ struct module *mod; ++ ++ /* If it's a duplicate: move it to the end, so it gets ++ inserted where it is *first* required. */ ++ mod = find_module(filename, list); ++ if (mod) ++ list_del(&mod->list); ++ else { ++ /* No match. Create a new module. */ ++ mod = NOFAIL(malloc(sizeof(struct module) + namelen + 1)); ++ memcpy(mod->filename, filename, namelen); ++ mod->filename[namelen] = '\0'; ++ mod->modname = NOFAIL(malloc(namelen + 1)); ++ filename2modname(mod->modname, mod->filename); ++ } ++ ++ list_add_tail(&mod->list, list); ++} ++ ++/* Compare len chars of a to b, with _ and - equivalent. */ ++static int modname_equal(const char *a, const char *b, unsigned int len) ++{ ++ unsigned int i; ++ ++ if (strlen(b) != len) ++ return 0; ++ ++ for (i = 0; i < len; i++) { ++ if ((a[i] == '_' || a[i] == '-') ++ && (b[i] == '_' || b[i] == '-')) ++ continue; ++ if (a[i] != b[i]) ++ return 0; ++ } ++ return 1; ++} ++ ++/* Fills in list of modules if this is the line we want. */ ++static int add_modules_dep_line(char *line, ++ const char *name, ++ struct list_head *list) ++{ ++ char *ptr; ++ int len; ++ char *modname; ++ ++ /* Ignore lines without : or which start with a # */ ++ ptr = strchr(line, ':'); ++ if (ptr == NULL || line[strspn(line, "\t ")] == '#') ++ return 0; ++ ++ /* Is this the module we are looking for? */ ++ *ptr = '\0'; ++ if (strrchr(line, '/')) ++ modname = strrchr(line, '/') + 1; ++ else ++ modname = line; ++ ++ len = strlen(modname); ++ if (strchr(modname, '.')) ++ len = strchr(modname, '.') - modname; ++ if (!modname_equal(modname, name, len)) ++ return 0; ++ ++ /* Create the list. */ ++ add_module(line, ptr - line, list); ++ ++ ptr++; ++ for(;;) { ++ char *dep_start; ++ ptr += strspn(ptr, " \t"); ++ if (*ptr == '\0') ++ break; ++ dep_start = ptr; ++ ptr += strcspn(ptr, " \t"); ++ add_module(dep_start, ptr - dep_start, list); ++ } ++ return 1; ++} ++ ++static void read_depends(const char *dirname, ++ const char *start_name, ++ struct list_head *list) ++{ ++ char *modules_dep_name; ++ char *line; ++ FILE *modules_dep; ++ int done = 0; ++ ++ asprintf(&modules_dep_name, "%s/%s", dirname, "modules.dep"); ++ modules_dep = fopen(modules_dep_name, "r"); ++ if (!modules_dep) ++ fatal("Could not load %s: %s\n", ++ modules_dep_name, strerror(errno)); ++ ++ /* Stop at first line, as we can have duplicates (eg. symlinks ++ from boot/ */ ++ while (!done && (line = getline_wrapped(modules_dep, NULL)) != NULL) { ++ done = add_modules_dep_line(line, start_name, list); ++ free(line); ++ } ++ fclose(modules_dep); ++ free(modules_dep_name); ++} ++ ++/* We use error numbers in a loose translation... */ ++static const char *insert_moderror(int err) ++{ ++ switch (err) { ++ case ENOEXEC: ++ return "Invalid module format"; ++ case ENOENT: ++ return "Unknown symbol in module, or unknown parameter (see dmesg)"; ++ case ENOSYS: ++ return "Kernel does not have module support"; ++ default: ++ return strerror(err); ++ } ++} ++ ++static const char *remove_moderror(int err) ++{ ++ switch (err) { ++ case ENOENT: ++ return "No such module"; ++ case ENOSYS: ++ return "Kernel does not have module unloading support"; ++ default: ++ return strerror(err); ++ } ++} ++ ++/* Is module in /proc/modules? If so, fill in usecount if not NULL. ++ 0 means no, 1 means yes, -1 means unknown. ++ */ ++static int module_in_kernel(const char *modname, unsigned int *usecount) ++{ ++ FILE *proc_modules; ++ char *line; ++ ++again: ++ /* Might not be mounted yet. Don't fail. */ ++ proc_modules = fopen("/proc/modules", "r"); ++ if (!proc_modules) ++ return -1; ++ ++ while ((line = getline_wrapped(proc_modules, NULL)) != NULL) { ++ char *entry = strtok(line, " \n"); ++ ++ if (entry && streq(entry, modname)) { ++ /* If it exists, usecount is the third entry. */ ++ if (!strtok(NULL, " \n")) ++ goto out; ++ ++ if (!(entry = strtok(NULL, " \n"))) /* usecount */ ++ goto out; ++ else ++ if (usecount) ++ *usecount = atoi(entry); ++ ++ /* Followed by - then status. */ ++ if (strtok(NULL, " \n") ++ && (entry = strtok(NULL, " \n")) != NULL) { ++ /* Locking will fail on ro fs, we might hit ++ * cases where module is in flux. Spin. */ ++ if (streq(entry, "Loading") ++ || streq(entry, "Unloading")) { ++ usleep(100000); ++ free(line); ++ fclose(proc_modules); ++ goto again; ++ } ++ } ++ ++ out: ++ free(line); ++ fclose(proc_modules); ++ return 1; ++ } ++ free(line); ++ } ++ fclose(proc_modules); ++ return 0; ++} ++ ++static void replace_modname(struct module *module, ++ void *mem, unsigned long len, ++ const char *oldname, const char *newname) ++{ ++ char *p; ++ ++ /* 64 - sizeof(unsigned long) - 1 */ ++ if (strlen(newname) > 55) ++ fatal("New name %s is too long\n", newname); ++ ++ /* Find where it is in the module structure. Don't assume layout! */ ++ for (p = mem; p < (char *)mem + len - strlen(oldname); p++) { ++ if (memcmp(p, oldname, strlen(oldname)) == 0) { ++ strcpy(p, newname); ++ return; ++ } ++ } ++ ++ warn("Could not find old name in %s to replace!\n", module->filename); ++} ++ ++static void *get_section32(void *file, ++ unsigned long size, ++ const char *name, ++ unsigned long *secsize) ++{ ++ Elf32_Ehdr *hdr = file; ++ Elf32_Shdr *sechdrs = file + hdr->e_shoff; ++ const char *secnames; ++ unsigned int i; ++ ++ /* Too short? */ ++ if (size < sizeof(*hdr)) ++ return NULL; ++ if (size < hdr->e_shoff + hdr->e_shnum * sizeof(sechdrs[0])) ++ return NULL; ++ if (size < sechdrs[hdr->e_shstrndx].sh_offset) ++ return NULL; ++ ++ secnames = file + sechdrs[hdr->e_shstrndx].sh_offset; ++ for (i = 1; i < hdr->e_shnum; i++) ++ if (strcmp(secnames + sechdrs[i].sh_name, name) == 0) { ++ *secsize = sechdrs[i].sh_size; ++ return file + sechdrs[i].sh_offset; ++ } ++ return NULL; ++} ++ ++static void *get_section64(void *file, ++ unsigned long size, ++ const char *name, ++ unsigned long *secsize) ++{ ++ Elf64_Ehdr *hdr = file; ++ Elf64_Shdr *sechdrs = file + hdr->e_shoff; ++ const char *secnames; ++ unsigned int i; ++ ++ /* Too short? */ ++ if (size < sizeof(*hdr)) ++ return NULL; ++ if (size < hdr->e_shoff + hdr->e_shnum * sizeof(sechdrs[0])) ++ return NULL; ++ if (size < sechdrs[hdr->e_shstrndx].sh_offset) ++ return NULL; ++ ++ secnames = file + sechdrs[hdr->e_shstrndx].sh_offset; ++ for (i = 1; i < hdr->e_shnum; i++) ++ if (strcmp(secnames + sechdrs[i].sh_name, name) == 0) { ++ *secsize = sechdrs[i].sh_size; ++ return file + sechdrs[i].sh_offset; ++ } ++ return NULL; ++} ++ ++static int elf_ident(void *mod, unsigned long size) ++{ ++ /* "\177ELF" <byte> where byte = 001 for 32-bit, 002 for 64 */ ++ char *ident = mod; ++ ++ if (size < EI_CLASS || memcmp(mod, ELFMAG, SELFMAG) != 0) ++ return ELFCLASSNONE; ++ return ident[EI_CLASS]; ++} ++ ++static void *get_section(void *file, ++ unsigned long size, ++ const char *name, ++ unsigned long *secsize) ++{ ++ switch (elf_ident(file, size)) { ++ case ELFCLASS32: ++ return get_section32(file, size, name, secsize); ++ case ELFCLASS64: ++ return get_section64(file, size, name, secsize); ++ default: ++ return NULL; ++ } ++} ++ ++static void rename_module(struct module *module, ++ void *mod, ++ unsigned long len, ++ const char *newname) ++{ ++ void *modstruct; ++ unsigned long modstruct_len; ++ ++ /* Old-style */ ++ modstruct = get_section(mod, len, ".gnu.linkonce.this_module", ++ &modstruct_len); ++ /* New-style */ ++ if (!modstruct) ++ modstruct = get_section(mod, len, "__module", &modstruct_len); ++ if (!modstruct) ++ warn("Could not find module name to change in %s\n", ++ module->filename); ++ else ++ replace_modname(module, modstruct, modstruct_len, ++ module->modname, newname); ++} ++ ++/* Kernel told to ignore these sections if SHF_ALLOC not set. */ ++static void invalidate_section32(void *mod, const char *secname) ++{ ++ Elf32_Ehdr *hdr = mod; ++ Elf32_Shdr *sechdrs = mod + hdr->e_shoff; ++ const char *secnames = mod + sechdrs[hdr->e_shstrndx].sh_offset; ++ unsigned int i; ++ ++ for (i = 1; i < hdr->e_shnum; i++) ++ if (strcmp(secnames+sechdrs[i].sh_name, secname) == 0) ++ sechdrs[i].sh_flags &= ~SHF_ALLOC; ++} ++ ++static void invalidate_section64(void *mod, const char *secname) ++{ ++ Elf64_Ehdr *hdr = mod; ++ Elf64_Shdr *sechdrs = mod + hdr->e_shoff; ++ const char *secnames = mod + sechdrs[hdr->e_shstrndx].sh_offset; ++ unsigned int i; ++ ++ for (i = 1; i < hdr->e_shnum; i++) ++ if (strcmp(secnames+sechdrs[i].sh_name, secname) == 0) ++ sechdrs[i].sh_flags &= ~(unsigned long long)SHF_ALLOC; ++} ++ ++static void strip_section(struct module *module, ++ void *mod, ++ unsigned long len, ++ const char *secname) ++{ ++ switch (elf_ident(mod, len)) { ++ case ELFCLASS32: ++ invalidate_section32(mod, secname); ++ break; ++ case ELFCLASS64: ++ invalidate_section64(mod, secname); ++ break; ++ default: ++ warn("Unknown module format in %s: not forcing version\n", ++ module->filename); ++ } ++} ++ ++static const char *next_string(const char *string, unsigned long *secsize) ++{ ++ /* Skip non-zero chars */ ++ while (string[0]) { ++ string++; ++ if ((*secsize)-- <= 1) ++ return NULL; ++ } ++ ++ /* Skip any zero padding. */ ++ while (!string[0]) { ++ string++; ++ if ((*secsize)-- <= 1) ++ return NULL; ++ } ++ return string; ++} ++ ++static void clear_magic(struct module *module, void *mod, unsigned long len) ++{ ++ const char *p; ++ unsigned long modlen; ++ ++ /* Old-style: __vermagic section */ ++ strip_section(module, mod, len, "__vermagic"); ++ ++ /* New-style: in .modinfo section */ ++ for (p = get_section(mod, len, ".modinfo", &modlen); ++ p; ++ p = next_string(p, &modlen)) { ++ if (strncmp(p, "vermagic=", strlen("vermagic=")) == 0) { ++ memset((char *)p, 0, strlen(p)); ++ return; ++ } ++ } ++} ++ ++struct module_options ++{ ++ struct module_options *next; ++ char *modulename; ++ char *options; ++}; ++ ++struct module_command ++{ ++ struct module_command *next; ++ char *modulename; ++ char *command; ++}; ++ ++struct module_alias ++{ ++ struct module_alias *next; ++ char *module; ++}; ++ ++struct module_blacklist ++{ ++ struct module_blacklist *next; ++ char *modulename; ++}; ++ ++/* Link in a new option line from the config file. */ ++static struct module_options * ++add_options(const char *modname, ++ const char *option, ++ struct module_options *options) ++{ ++ struct module_options *new; ++ char *tab; ++ ++ new = NOFAIL(malloc(sizeof(*new))); ++ new->modulename = NOFAIL(strdup(modname)); ++ new->options = NOFAIL(strdup(option)); ++ /* We can handle tabs, kernel can't. */ ++ for (tab = strchr(new->options, '\t'); tab; tab = strchr(tab, '\t')) ++ *tab = ' '; ++ new->next = options; ++ return new; ++} ++ ++/* Link in a new install line from the config file. */ ++static struct module_command * ++add_command(const char *modname, ++ const char *command, ++ struct module_command *commands) ++{ ++ struct module_command *new; ++ ++ new = NOFAIL(malloc(sizeof(*new))); ++ new->modulename = NOFAIL(strdup(modname)); ++ new->command = NOFAIL(strdup(command)); ++ new->next = commands; ++ return new; ++} ++ ++/* Link in a new alias line from the config file. */ ++static struct module_alias * ++add_alias(const char *modname, struct module_alias *aliases) ++{ ++ struct module_alias *new; ++ ++ new = NOFAIL(malloc(sizeof(*new))); ++ new->module = NOFAIL(strdup(modname)); ++ new->next = aliases; ++ return new; ++} ++ ++/* Link in a new blacklist line from the config file. */ ++static struct module_blacklist * ++add_blacklist(const char *modname, struct module_blacklist *blacklist) ++{ ++ struct module_blacklist *new; ++ ++ new = NOFAIL(malloc(sizeof(*new))); ++ new->modulename = NOFAIL(strdup(modname)); ++ new->next = blacklist; ++ return new; ++} ++ ++/* Find blacklist commands if any. */ ++static int ++find_blacklist(const char *modname, const struct module_blacklist *blacklist) ++{ ++ while (blacklist) { ++ if (strcmp(blacklist->modulename, modname) == 0) ++ return 1; ++ blacklist = blacklist->next; ++ } ++ return 0; ++} ++ ++/* return a new alias list, with backlisted elems filtered out */ ++static struct module_alias * ++apply_blacklist(const struct module_alias *aliases, ++ const struct module_blacklist *blacklist) ++{ ++ struct module_alias *result = NULL; ++ while (aliases) { ++ char *modname = aliases->module; ++ if (!find_blacklist(modname, blacklist)) ++ result = add_alias(modname, result); ++ aliases = aliases->next; ++ } ++ return result; ++} ++ ++/* Find install commands if any. */ ++static const char *find_command(const char *modname, ++ const struct module_command *commands) ++{ ++ while (commands) { ++ if (fnmatch(commands->modulename, modname, 0) == 0) ++ return commands->command; ++ commands = commands->next; ++ } ++ return NULL; ++} ++ ++static char *append_option(char *options, const char *newoption) ++{ ++ options = NOFAIL(realloc(options, strlen(options) + 1 ++ + strlen(newoption) + 1)); ++ if (strlen(options)) strcat(options, " "); ++ strcat(options, newoption); ++ return options; ++} ++ ++/* Add to options */ ++static char *add_extra_options(const char *modname, ++ char *optstring, ++ const struct module_options *options) ++{ ++ while (options) { ++ if (strcmp(options->modulename, modname) == 0) ++ optstring = append_option(optstring, options->options); ++ options = options->next; ++ } ++ return optstring; ++} ++ ++/* If we don't flush, then child processes print before we do */ ++static void verbose_printf(int verbose, const char *fmt, ...) ++{ ++ va_list arglist; ++ ++ if (verbose) { ++ va_start(arglist, fmt); ++ vprintf(fmt, arglist); ++ fflush(stdout); ++ va_end(arglist); ++ } ++} ++ ++/* Do an install/remove command: replace $CMDLINE_OPTS if it's specified. */ ++static void do_command(const char *modname, ++ const char *command, ++ int verbose, int dry_run, ++ errfn_t error, ++ const char *type, ++ const char *cmdline_opts) ++{ ++ int ret; ++ char *p, *replaced_cmd = NOFAIL(strdup(command)); ++ ++ while ((p = strstr(replaced_cmd, "$CMDLINE_OPTS")) != NULL) { ++ char *new; ++ asprintf(&new, "%.*s%s%s", ++ p - replaced_cmd, replaced_cmd, cmdline_opts, ++ p + strlen("$CMDLINE_OPTS")); ++ NOFAIL(new); ++ free(replaced_cmd); ++ replaced_cmd = new; ++ } ++ ++ verbose_printf(verbose, "%s %s\n", type, replaced_cmd); ++ if (dry_run) ++ return; ++ ++ setenv("MODPROBE_MODULE", modname, 1); ++ ret = system(replaced_cmd); ++ if (ret == -1 || WEXITSTATUS(ret)) ++ error("Error running %s command for %s\n", type, modname); ++ free(replaced_cmd); ++} ++ ++/* Actually do the insert. Frees second arg. */ ++static void insmod(struct list_head *list, ++ char *optstring, ++ const char *newname, ++ int first_time, ++ errfn_t error, ++ int dry_run, ++ int verbose, ++ const struct module_options *options, ++ const struct module_command *commands, ++ int ignore_commands, ++ int ignore_proc, ++ int strip_vermagic, ++ int strip_modversion, ++ const char *cmdline_opts) ++{ ++ int ret, fd; ++ unsigned long len; ++ void *map; ++ const char *command; ++ struct module *mod = list_entry(list->next, struct module, list); ++ ++ /* Take us off the list. */ ++ list_del(&mod->list); ++ ++ /* Do things we (or parent) depend on first, but don't die if ++ * they fail. */ ++ if (!list_empty(list)) { ++ insmod(list, NOFAIL(strdup("")), NULL, 0, warn, ++ dry_run, verbose, options, commands, 0, ignore_proc, ++ strip_vermagic, strip_modversion, cmdline_opts); ++ } ++ ++ /* Lock before we look, in case it's initializing. */ ++ fd = lock_file(mod->filename); ++ if (fd < 0) { ++ error("Could not open '%s': %s\n", ++ mod->filename, strerror(errno)); ++ goto out_optstring; ++ } ++ ++ /* Don't do ANYTHING if already in kernel. */ ++ if (!ignore_proc ++ && module_in_kernel(newname ?: mod->modname, NULL) == 1) { ++ if (first_time) ++ error("Module %s already in kernel.\n", ++ newname ?: mod->modname); ++ goto out_unlock; ++ } ++ ++ command = find_command(mod->modname, commands); ++ if (command && !ignore_commands) { ++ /* It might recurse: unlock. */ ++ unlock_file(fd); ++ do_command(mod->modname, command, verbose, dry_run, error, ++ "install", cmdline_opts); ++ goto out_optstring; ++ } ++ ++ map = grab_fd(fd, &len); ++ if (!map) { ++ error("Could not read '%s': %s\n", ++ mod->filename, strerror(errno)); ++ goto out_unlock; ++ } ++ ++ /* Rename it? */ ++ if (newname) ++ rename_module(mod, map, len, newname); ++ ++ if (strip_modversion) ++ strip_section(mod, map, len, "__versions"); ++ if (strip_vermagic) ++ clear_magic(mod, map, len); ++ ++ /* Config file might have given more options */ ++ optstring = add_extra_options(mod->modname, optstring, options); ++ ++ verbose_printf(verbose, "insmod %s %s\n", mod->filename, optstring); ++ ++ if (dry_run) ++ goto out; ++ ++ ret = init_module(map, len, optstring); ++ if (ret != 0) { ++ if (errno == EEXIST) { ++ if (first_time) ++ error("Module %s already in kernel.\n", ++ newname ?: mod->modname); ++ goto out_unlock; ++ } ++ error("Error inserting %s (%s): %s\n", ++ mod->modname, mod->filename, insert_moderror(errno)); ++ } ++ out: ++ release_file(map, len); ++ out_unlock: ++ unlock_file(fd); ++ out_optstring: ++ free(optstring); ++ return; ++} ++ ++/* Do recursive removal. */ ++static void rmmod(struct list_head *list, ++ const char *name, ++ int first_time, ++ errfn_t error, ++ int dry_run, ++ int verbose, ++ struct module_command *commands, ++ int ignore_commands, ++ int ignore_inuse, ++ const char *cmdline_opts) ++{ ++ const char *command; ++ unsigned int usecount = 0; ++ int lock; ++ struct module *mod = list_entry(list->next, struct module, list); ++ ++ /* Take first one off the list. */ ++ list_del(&mod->list); ++ ++ /* Ignore failure; it's best effort here. */ ++ lock = lock_file(mod->filename); ++ ++ if (!name) ++ name = mod->modname; ++ ++ /* Even if renamed, find commands to orig. name. */ ++ command = find_command(mod->modname, commands); ++ if (command && !ignore_commands) { ++ /* It might recurse: unlock. */ ++ unlock_file(lock); ++ do_command(mod->modname, command, verbose, dry_run, error, ++ "remove", cmdline_opts); ++ goto remove_rest_no_unlock; ++ } ++ ++ if (module_in_kernel(name, &usecount) == 0) ++ goto nonexistent_module; ++ ++ if (usecount != 0) { ++ if (!ignore_inuse) ++ error("Module %s is in use.\n", name); ++ goto remove_rest; ++ } ++ ++ verbose_printf(verbose, "rmmod %s\n", mod->filename); ++ ++ if (dry_run) ++ goto remove_rest; ++ ++ if (delete_module(name, O_EXCL) != 0) { ++ if (errno == ENOENT) ++ goto nonexistent_module; ++ error("Error removing %s (%s): %s\n", ++ name, mod->filename, ++ remove_moderror(errno)); ++ } ++ ++ remove_rest: ++ unlock_file(lock); ++ remove_rest_no_unlock: ++ /* Now do things we depend. */ ++ if (!list_empty(list)) ++ rmmod(list, NULL, 0, warn, dry_run, verbose, commands, ++ 0, 1, cmdline_opts); ++ return; ++ ++nonexistent_module: ++ if (first_time) ++ fatal("Module %s is not in kernel.\n", mod->modname); ++ goto remove_rest; ++} ++ ++/* Does path contain directory(s) subpath? */ ++static int type_matches(const char *path, const char *subpath) ++{ ++ char *subpath_with_slashes; ++ int ret; ++ ++ asprintf(&subpath_with_slashes, "/%s/", subpath); ++ NOFAIL(subpath_with_slashes); ++ ++ ret = (strstr(path, subpath_with_slashes) != NULL); ++ free(subpath_with_slashes); ++ return ret; ++} ++ ++static char *underscores(char *string) ++{ ++ if (string) { ++ unsigned int i; ++ for (i = 0; string[i]; i++) ++ if (string[i] == '-') ++ string[i] = '_'; ++ } ++ return string; ++} ++ ++static int do_wildcard(const char *dirname, ++ const char *type, ++ const char *wildcard) ++{ ++ char modules_dep_name[strlen(dirname) + sizeof("modules.dep") + 1]; ++ char *line, *wcard; ++ FILE *modules_dep; ++ ++ /* Canonicalize wildcard */ ++ wcard = strdup(wildcard); ++ underscores(wcard); ++ ++ sprintf(modules_dep_name, "%s/%s", dirname, "modules.dep"); ++ modules_dep = fopen(modules_dep_name, "r"); ++ if (!modules_dep) ++ fatal("Could not load %s: %s\n", ++ modules_dep_name, strerror(errno)); ++ ++ while ((line = getline_wrapped(modules_dep, NULL)) != NULL) { ++ char *ptr; ++ ++ /* Ignore lines without : or which start with a # */ ++ ptr = strchr(line, ':'); ++ if (ptr == NULL || line[strspn(line, "\t ")] == '#') ++ goto next; ++ *ptr = '\0'; ++ ++ /* "type" must match complete directory component(s). */ ++ if (!type || type_matches(line, type)) { ++ char modname[strlen(line)+1]; ++ ++ filename2modname(modname, line); ++ if (fnmatch(wcard, modname, 0) == 0) ++ printf("%s\n", line); ++ } ++ next: ++ free(line); ++ } ++ ++ free(wcard); ++ return 0; ++} ++ ++static char *strsep_skipspace(char **string, char *delim) ++{ ++ if (!*string) ++ return NULL; ++ *string += strspn(*string, delim); ++ return strsep(string, delim); ++} ++ ++/* Recursion */ ++static int read_config(const char *filename, ++ const char *name, ++ int dump_only, ++ int removing, ++ struct module_options **options, ++ struct module_command **commands, ++ struct module_alias **alias, ++ struct module_blacklist **blacklist); ++ ++/* FIXME: Maybe should be extended to "alias a b [and|or c]...". --RR */ ++static int read_config_file(const char *filename, ++ const char *name, ++ int dump_only, ++ int removing, ++ struct module_options **options, ++ struct module_command **commands, ++ struct module_alias **aliases, ++ struct module_blacklist **blacklist) ++{ ++ char *line; ++ unsigned int linenum = 0; ++ FILE *cfile; ++ ++ cfile = fopen(filename, "r"); ++ if (!cfile) ++ return 0; ++ ++ while ((line = getline_wrapped(cfile, &linenum)) != NULL) { ++ char *ptr = line; ++ char *cmd, *modname; ++ ++ if (dump_only) ++ printf("%s\n", line); ++ ++ cmd = strsep_skipspace(&ptr, "\t "); ++ if (cmd == NULL || cmd[0] == '#' || cmd[0] == '\0') ++ continue; ++ ++ if (strcmp(cmd, "alias") == 0) { ++ char *wildcard ++ = underscores(strsep_skipspace(&ptr, "\t ")); ++ char *realname ++ = underscores(strsep_skipspace(&ptr, "\t ")); ++ ++ if (!wildcard || !realname) ++ grammar(cmd, filename, linenum); ++ else if (fnmatch(wildcard,name,0) == 0) ++ *aliases = add_alias(realname, *aliases); ++ } else if (strcmp(cmd, "include") == 0) { ++ struct module_alias *newalias = NULL; ++ char *newfilename; ++ ++ newfilename = strsep_skipspace(&ptr, "\t "); ++ if (!newfilename) ++ grammar(cmd, filename, linenum); ++ else { ++ if (!read_config(newfilename, name, ++ dump_only, removing, ++ options, commands, &newalias, ++ blacklist)) ++ warn("Failed to open included" ++ " config file %s: %s\n", ++ newfilename, strerror(errno)); ++ ++ /* Files included override aliases, ++ etc that was already set ... */ ++ if (newalias) ++ *aliases = newalias; ++ } ++ } else if (strcmp(cmd, "options") == 0) { ++ modname = strsep_skipspace(&ptr, "\t "); ++ if (!modname || !ptr) ++ grammar(cmd, filename, linenum); ++ else { ++ ptr += strspn(ptr, "\t "); ++ *options = add_options(underscores(modname), ++ ptr, *options); ++ } ++ } else if (strcmp(cmd, "install") == 0) { ++ modname = strsep_skipspace(&ptr, "\t "); ++ if (!modname || !ptr) ++ grammar(cmd, filename, linenum); ++ else if (!removing) { ++ ptr += strspn(ptr, "\t "); ++ *commands = add_command(underscores(modname), ++ ptr, *commands); ++ } ++ } else if (strcmp(cmd, "blacklist") == 0) { ++ modname = strsep_skipspace(&ptr, "\t "); ++ if (!modname) ++ grammar(cmd, filename, linenum); ++ else if (!removing) { ++ *blacklist = add_blacklist(underscores(modname), ++ *blacklist); ++ } ++ } else if (strcmp(cmd, "remove") == 0) { ++ modname = strsep_skipspace(&ptr, "\t "); ++ if (!modname || !ptr) ++ grammar(cmd, filename, linenum); ++ else if (removing) { ++ ptr += strspn(ptr, "\t "); ++ *commands = add_command(underscores(modname), ++ ptr, *commands); ++ } ++ } else ++ grammar(cmd, filename, linenum); ++ ++ free(line); ++ } ++ fclose(cfile); ++ return 1; ++} ++ ++/* Simple format, ignore lines starting with #, one command per line. ++ Returns true or false. */ ++static int read_config(const char *filename, ++ const char *name, ++ int dump_only, ++ int removing, ++ struct module_options **options, ++ struct module_command **commands, ++ struct module_alias **aliases, ++ struct module_blacklist **blacklist) ++{ ++ DIR *dir; ++ int ret = 0; ++ ++ /* ignore everything in this directory */ ++ if (streq(filename, "/etc/modprobe.d/arch")) ++ return 1; ++ ++ /* Reiser4 has file/directory duality: treat it as both. */ ++ dir = opendir(filename); ++ if (dir) { ++ struct dirent *i; ++ while ((i = readdir(dir)) != NULL) { ++ if (!streq(i->d_name,".") && !streq(i->d_name,"..")) { ++ char sub[strlen(filename) + 1 ++ + strlen(i->d_name) + 1]; ++ ++ sprintf(sub, "%s/%s", filename, i->d_name); ++ if (!read_config(sub, name, ++ dump_only, removing, options, ++ commands, aliases, blacklist)) ++ warn("Failed to open" ++ " config file %s: %s\n", ++ sub, strerror(errno)); ++ } ++ } ++ closedir(dir); ++ ret = 1; ++ } ++ ++ if (read_config_file(filename, name, dump_only, removing, ++ options, commands, aliases, blacklist)) ++ ret = 1; ++ ++ return ret; ++} ++ ++static const char *default_configs[] = ++{ ++ "/etc/modprobe.conf", ++ "/etc/modprobe.d", ++}; ++ ++static void read_toplevel_config(const char *filename, ++ const char *name, ++ int dump_only, ++ int removing, ++ struct module_options **options, ++ struct module_command **commands, ++ struct module_alias **aliases, ++ struct module_blacklist **blacklist) ++{ ++ unsigned int i; ++ ++ if (filename) { ++ if (!read_config(filename, name, dump_only, removing, ++ options, commands, aliases, blacklist)) ++ fatal("Failed to open config file %s: %s\n", ++ filename, strerror(errno)); ++ return; ++ } ++ ++ /* Try defaults. */ ++ for (i = 0; i < ARRAY_SIZE(default_configs); i++) { ++ if (read_config(default_configs[i], name, dump_only, removing, ++ options, commands, aliases, blacklist)) ++ return; ++ } ++} ++ ++static void add_to_env_var(const char *option) ++{ ++ const char *oldenv; ++ ++ if ((oldenv = getenv("MODPROBE_OPTIONS")) != NULL) { ++ char *newenv; ++ asprintf(&newenv, "%s %s", oldenv, option); ++ setenv("MODPROBE_OPTIONS", newenv, 1); ++ } else ++ setenv("MODPROBE_OPTIONS", option, 1); ++} ++ ++/* Prepend options from environment. */ ++static char **merge_args(char *args, char *argv[], int *argc) ++{ ++ char *arg, *argstring; ++ char **newargs = NULL; ++ unsigned int i, num_env = 0; ++ ++ if (!args) ++ return argv; ++ ++ argstring = NOFAIL(strdup(args)); ++ for (arg = strtok(argstring, " "); arg; arg = strtok(NULL, " ")) { ++ num_env++; ++ newargs = NOFAIL(realloc(newargs, ++ sizeof(newargs[0]) ++ * (num_env + *argc + 1))); ++ newargs[num_env] = arg; ++ } ++ ++ /* Append commandline args */ ++ newargs[0] = argv[0]; ++ for (i = 1; i <= *argc; i++) ++ newargs[num_env+i] = argv[i]; ++ ++ *argc += num_env; ++ return newargs; ++} ++ ++static char *gather_options(char *argv[]) ++{ ++ char *optstring = NOFAIL(strdup("")); ++ ++ /* Rest is module options */ ++ while (*argv) { ++ /* Quote value if it contains spaces. */ ++ unsigned int eq = strcspn(*argv, "="); ++ ++ if (strchr(*argv+eq, ' ') && !strchr(*argv, '"')) { ++ char quoted[strlen(*argv) + 3]; ++ (*argv)[eq] = '\0'; ++ sprintf(quoted, "%s=\"%s\"", *argv, *argv+eq+1); ++ optstring = append_option(optstring, quoted); ++ } else ++ optstring = append_option(optstring, *argv); ++ argv++; ++ } ++ return optstring; ++} ++ ++static void handle_module(const char *modname, ++ struct list_head *todo_list, ++ const char *newname, ++ int remove, ++ char *options, ++ int first_time, ++ errfn_t error, ++ int dry_run, ++ int verbose, ++ struct module_options *modoptions, ++ struct module_command *commands, ++ int ignore_commands, ++ int ignore_proc, ++ int strip_vermagic, ++ int strip_modversion, ++ int unknown_silent, ++ const char *cmdline_opts) ++{ ++ if (list_empty(todo_list)) { ++ const char *command; ++ ++ /* The dependencies have to be real modules, but ++ handle case where the first is completely bogus. */ ++ command = find_command(modname, commands); ++ if (command && !ignore_commands) { ++ do_command(modname, command, verbose, dry_run, error, ++ remove ? "remove":"install", cmdline_opts); ++ return; ++ } ++ ++ if (unknown_silent) ++ exit(1); ++ error("Module %s not found.\n", modname); ++ return; ++ } ++ ++ if (remove) ++ rmmod(todo_list, newname, first_time, error, dry_run, verbose, ++ commands, ignore_commands, 0, cmdline_opts); ++ else ++ insmod(todo_list, NOFAIL(strdup(options)), newname, ++ first_time, error, dry_run, verbose, modoptions, ++ commands, ignore_commands, ignore_proc, strip_vermagic, ++ strip_modversion, cmdline_opts); ++} ++ ++static struct option options[] = { { "verbose", 0, NULL, 'v' }, ++ { "version", 0, NULL, 'V' }, ++ { "config", 1, NULL, 'C' }, ++ { "name", 1, NULL, 'o' }, ++ { "remove", 0, NULL, 'r' }, ++ { "showconfig", 0, NULL, 'c' }, ++ { "autoclean", 0, NULL, 'k' }, ++ { "quiet", 0, NULL, 'q' }, ++ { "show", 0, NULL, 'n' }, ++ { "dry-run", 0, NULL, 'n' }, ++ { "syslog", 0, NULL, 's' }, ++ { "type", 1, NULL, 't' }, ++ { "list", 0, NULL, 'l' }, ++ { "all", 0, NULL, 'a' }, ++ { "ignore-install", 0, NULL, 'i' }, ++ { "ignore-remove", 0, NULL, 'i' }, ++ { "force", 0, NULL, 'f' }, ++ { "force-vermagic", 0, NULL, 1 }, ++ { "force-modversion", 0, NULL, 2 }, ++ { "set-version", 1, NULL, 'S' }, ++ { "show-depends", 0, NULL, 'D' }, ++ { "first-time", 0, NULL, 3 }, ++ { "use-blacklist", 0, NULL, 'b' }, ++ { NULL, 0, NULL, 0 } }; ++ ++#define MODPROBE_DEVFSD_CONF "/etc/modprobe.devfs" ++ ++/* This is a horrible hack to allow devfsd, which calls modprobe with ++ -C /etc/modules.conf or /etc/modules.devfs, to work. FIXME. */ ++/* Modern devfsd or variants should use -q explicitly in 2.6. */ ++static int is_devfs_call(char *argv[]) ++{ ++ unsigned int i; ++ ++ /* Look for "/dev" arg */ ++ for (i = 1; argv[i]; i++) { ++ if (strncmp(argv[i], "/dev/", 5) == 0) ++ return 1; ++ } ++ return 0; ++} ++ ++int main(int argc, char *argv[]) ++{ ++ struct utsname buf; ++ struct stat statbuf; ++ int opt; ++ int dump_only = 0; ++ int dry_run = 0; ++ int remove = 0; ++ int verbose = 0; ++ int unknown_silent = 0; ++ int list_only = 0; ++ int all = 0; ++ int ignore_commands = 0; ++ int strip_vermagic = 0; ++ int strip_modversion = 0; ++ int ignore_proc = 0; ++ int first_time = 0; ++ int use_blacklist = 0; ++ unsigned int i, num_modules; ++ char *type = NULL; ++ const char *config = NULL; ++ char *dirname, *optstring; ++ char *newname = NULL; ++ char *aliasfilename, *symfilename; ++ errfn_t error = fatal; ++ ++ /* Prepend options from environment. */ ++ argv = merge_args(getenv("MODPROBE_OPTIONS"), argv, &argc); ++ ++ /* --set-version overrides version, and disables backwards compat. */ ++ for (opt = 1; opt < argc; opt++) ++ if (strncmp(argv[opt],"--set-version",strlen("--set-version")) ++ == 0) ++ break; ++ ++ if (opt == argc) ++ try_old_version("modprobe", argv); ++ ++ uname(&buf); ++ while ((opt = getopt_long(argc, argv, "vVC:o:rknqQsclt:aifb", options, NULL)) != -1){ ++ switch (opt) { ++ case 'v': ++ add_to_env_var("-v"); ++ verbose = 1; ++ break; ++ case 'V': ++ puts("module-init-tools version 3.2.2"); ++ exit(0); ++ case 'S': ++ strncpy(buf.release, optarg, sizeof(buf.release)); ++ buf.release[sizeof(buf.release)-1] = '\0'; ++ break; ++ case 'C': ++ if (is_devfs_call(argv)) { ++ if (streq("/etc/modules.devfs", optarg)) { ++ config = MODPROBE_DEVFSD_CONF; ++ add_to_env_var("-C"); ++ add_to_env_var(config); ++ /* Fall thru to -q */ ++ } else if (streq("/etc/modules.conf", optarg)) ++ /* Ignore config, fall thru to -q */ ++ ; ++ else { ++ /* False alarm. Treat as normal. */ ++ config = optarg; ++ add_to_env_var("-C"); ++ add_to_env_var(config); ++ break; ++ } ++ } else { ++ config = optarg; ++ add_to_env_var("-C"); ++ add_to_env_var(config); ++ break; ++ } ++ case 'q': ++ unknown_silent = 1; ++ add_to_env_var("-q"); ++ break; ++ case 'D': ++ dry_run = 1; ++ ignore_proc = 1; ++ verbose = 1; ++ add_to_env_var("-D"); ++ break; ++ case 'o': ++ newname = optarg; ++ break; ++ case 'r': ++ remove = 1; ++ break; ++ case 'c': ++ dump_only = 1; ++ break; ++ case 't': ++ type = optarg; ++ break; ++ case 'l': ++ list_only = 1; ++ break; ++ case 'a': ++ all = 1; ++ error = warn; ++ break; ++ case 'k': ++ /* FIXME: This should actually do something */ ++ break; ++ case 'n': ++ dry_run = 1; ++ break; ++ case 's': ++ add_to_env_var("-s"); ++ log = 1; ++ break; ++ case 'i': ++ ignore_commands = 1; ++ break; ++ case 'f': ++ strip_vermagic = 1; ++ strip_modversion = 1; ++ break; ++ case 'b': ++ use_blacklist = 1; ++ break; ++ case 1: ++ strip_vermagic = 1; ++ break; ++ case 2: ++ strip_modversion = 1; ++ break; ++ case 3: ++ first_time = 1; ++ break; ++ default: ++ print_usage(argv[0]); ++ } ++ } ++ ++ /* If stderr not open, go to syslog */ ++ if (log || fstat(STDERR_FILENO, &statbuf) != 0) { ++ openlog("modprobe", LOG_CONS, LOG_DAEMON); ++ log = 1; ++ } ++ ++ if (argc < optind + 1 && !dump_only && !list_only && !remove) ++ print_usage(argv[0]); ++ ++ dirname = NOFAIL(malloc(strlen(buf.release) + sizeof(MODULE_DIR) + 1)); ++ sprintf(dirname, "%s/%s", MODULE_DIR, buf.release); ++ aliasfilename = NOFAIL(malloc(strlen(dirname) ++ + sizeof("/modules.alias"))); ++ sprintf(aliasfilename, "%s/modules.alias", dirname); ++ symfilename = NOFAIL(malloc(strlen(dirname) ++ + sizeof("/modules.symbols"))); ++ sprintf(symfilename, "%s/modules.symbols", dirname); ++ ++ /* Old-style -t xxx wildcard? Only with -l. */ ++ if (list_only) { ++ if (optind+1 < argc) ++ fatal("Can't have multiple wildcards\n"); ++ /* fprintf(stderr, "man find\n"); return 1; */ ++ return do_wildcard(dirname, type, argv[optind]?:"*"); ++ } ++ if (type) ++ fatal("-t only supported with -l"); ++ ++ if (dump_only) { ++ struct module_command *commands = NULL; ++ struct module_options *modoptions = NULL; ++ struct module_alias *aliases = NULL; ++ struct module_blacklist *blacklist = NULL; ++ ++ read_toplevel_config(config, "", 1, 0, ++ &modoptions, &commands, &aliases, &blacklist); ++ read_config(aliasfilename, "", 1, 0,&modoptions, &commands, ++ &aliases, &blacklist); ++ read_config(symfilename, "", 1, 0, &modoptions, &commands, ++ &aliases, &blacklist); ++ exit(0); ++ } ++ ++ if (remove || all) { ++ num_modules = argc - optind; ++ optstring = NOFAIL(strdup("")); ++ } else { ++ num_modules = 1; ++ optstring = gather_options(argv+optind+1); ++ } ++ ++ /* num_modules is always 1 except for -r or -a. */ ++ for (i = 0; i < num_modules; i++) { ++ struct module_command *commands = NULL; ++ struct module_options *modoptions = NULL; ++ struct module_alias *aliases = NULL; ++ struct module_blacklist *blacklist = NULL; ++ LIST_HEAD(list); ++ char *modulearg = argv[optind + i]; ++ ++ /* Convert name we are looking for */ ++ underscores(modulearg); ++ ++ /* Returns the resolved alias, options */ ++ read_toplevel_config(config, modulearg, 0, ++ remove, &modoptions, &commands, &aliases, &blacklist); ++ ++ /* No luck? Try symbol names, if starts with symbol:. */ ++ if (!aliases ++ && strncmp(modulearg, "symbol:", strlen("symbol:")) == 0) ++ read_config(symfilename, modulearg, 0, ++ remove, &modoptions, &commands, ++ &aliases, &blacklist); ++ ++ if (!aliases) { ++ /* We only use canned aliases as last resort. */ ++ read_depends(dirname, modulearg, &list); ++ ++ if (list_empty(&list) ++ && !find_command(modulearg, commands)) ++ { ++ read_config(aliasfilename, modulearg, 0, ++ remove, &modoptions, &commands, ++ &aliases, &blacklist); ++ aliases = apply_blacklist(aliases, blacklist); ++ } ++ } ++ ++ if (aliases) { ++ errfn_t err = error; ++ ++ /* More than one alias? Don't bail out on failure. */ ++ if (aliases->next) ++ err = warn; ++ while (aliases) { ++ /* Add the options for this alias. */ ++ char *opts = NOFAIL(strdup(optstring)); ++ opts = add_extra_options(modulearg, ++ opts, modoptions); ++ ++ read_depends(dirname, aliases->module, &list); ++ handle_module(aliases->module, &list, newname, ++ remove, opts, first_time, err, ++ dry_run, verbose, modoptions, ++ commands, ignore_commands, ++ ignore_proc, strip_vermagic, ++ strip_modversion, ++ unknown_silent, ++ optstring); ++ ++ aliases = aliases->next; ++ INIT_LIST_HEAD(&list); ++ } ++ } else { ++ if (use_blacklist ++ && find_blacklist(modulearg, blacklist)) ++ continue; ++ ++ handle_module(modulearg, &list, newname, remove, ++ optstring, first_time, error, dry_run, ++ verbose, modoptions, commands, ++ ignore_commands, ignore_proc, ++ strip_vermagic, strip_modversion, ++ unknown_silent, optstring); ++ } ++ } ++ if (log) ++ closelog(); ++ ++ return 0; ++} diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/staging.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/staging.patch new file mode 100644 index 0000000..cedd5e6 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/staging.patch @@ -0,0 +1,153 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id eefb99a313bbcc8f34c8b32bf0c5aa2dd2580735 +Signed-off-by: Thomas Kunze <thommycheck@gmx.de> + +Minor edits following upstream changes +Signed-off-by: Andrea Adami <andrea.adami@gmail.com> + +Index: klibc-1.5.24/Makefile +=================================================================== +--- a/Makefile 2011-07-27 15:50:53.000000000 +0200 ++++ b/Makefile 2011-08-01 00:47:56.000000000 +0200 +@@ -39,7 +39,7 @@ + export PERL := perl + + # Location for installation +-export prefix = /usr ++export prefix = $(INST) + export bindir = $(prefix)/bin + export libdir = $(prefix)/lib + export mandir = $(prefix)/man + +Index: klibc-1.5.24/scripts/Kbuild.install +=================================================================== +--- a/scripts/Kbuild.install 2011-07-27 15:50:53.000000000 +0200 ++++ b/scripts/Kbuild.install 2011-08-01 00:03:03.000000000 +0200 +@@ -88,16 +88,12 @@ + header: + $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)" + $(Q)mkdir -p $(INSTALLROOT)$(bindir) +- $(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1 +- $(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR) + $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR) + $(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include + $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include + $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib +- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin + $(Q)$(MAKE) -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install + $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/. +- $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1 + $(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir) + + footer: header + +Index: klibc-1.5.24/usr/dash/Kbuild +=================================================================== +--- a/usr/dash/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/dash/Kbuild 2011-08-01 00:07:56.000000000 +0200 +@@ -92,5 +92,3 @@ + $(obj)/syntax.h: $(obj)/syntax.c + $(Q): + +-# Targets to install +-install-y := sh.shared + +Index: klibc-1.5.24/usr/gzip/Kbuild +=================================================================== +--- a/usr/gzip/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/gzip/Kbuild 2011-08-01 00:06:39.000000000 +0200 +@@ -21,5 +21,3 @@ + # Cleaning + targets := gzip gzip.g gunzip zcat + +-# Targets to install +-install-y := gzip gunzip zcat + +Index: klibc-1.5.24/usr/kinit/fstype/Kbuild +=================================================================== +--- a/usr/kinit/fstype/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/kinit/fstype/Kbuild 2011-08-01 00:09:12.000000000 +0200 +@@ -21,5 +21,3 @@ + # Cleaning + clean-dirs := static shared + +-# install binary +-install-y := $(shared-y) + +Index: klibc-1.5.24/usr/kinit/ipconfig/Kbuild +=================================================================== +--- a/usr/kinit/ipconfig/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/kinit/ipconfig/Kbuild 2011-08-01 00:10:52.000000000 +0200 +@@ -27,5 +27,3 @@ + # Cleaning + clean-dirs := static shared + +-# install binary +-install-y := $(shared-y) + +Index: klibc-1.5.24/usr/kinit/Kbuild +=================================================================== +--- a/usr/kinit/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/kinit/Kbuild 2011-08-01 00:20:18.000000000 +0200 +@@ -33,5 +33,3 @@ + subdir- := fstype ipconfig nfsmount resume run-init + + +-# install binary +-install-y := kinit kinit.shared + +Index: klibc-1.5.24/usr/kinit/nfsmount/Kbuild +=================================================================== +--- a/usr/kinit/nfsmount/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/kinit/nfsmount/Kbuild 2011-08-01 00:12:52.000000000 +0200 +@@ -23,5 +23,3 @@ + + clean-dirs := static shared + +-# Install binary +-install-y := $(shared-y) + +Index: klibc-1.5.24/usr/kinit/resume/Kbuild +=================================================================== +--- a/usr/kinit/resume/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/kinit/resume/Kbuild 2011-08-01 00:13:51.000000000 +0200 +@@ -26,5 +26,3 @@ + # Cleaning + clean-dirs := static shared + +-# install binary +-install-y := $(shared-y) + +Index: klibc-1.5.24/usr/kinit/run-init/Kbuild +=================================================================== +--- a/usr/kinit/run-init/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/kinit/run-init/Kbuild 2011-08-01 00:14:41.000000000 +0200 +@@ -25,5 +25,3 @@ + # Cleaning + clean-dirs := static shared + +-# install binary +-install-y := $(shared-y) + +Index: klibc-1.5.24/usr/klibc/Kbuild +=================================================================== +--- a/usr/klibc/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/klibc/Kbuild 2011-08-01 00:18:11.000000000 +0200 +@@ -177,5 +177,3 @@ + $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib)) + $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \ + $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib +- $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \ +- $(INSTALLROOT)$(SHLIBDIR) + +Index: klibc-1.5.24/usr/utils/Kbuild +=================================================================== +--- a/usr/utils/Kbuild 2011-07-27 15:50:53.000000000 +0200 ++++ b/usr/utils/Kbuild 2011-08-01 00:19:13.000000000 +0200 +@@ -72,5 +72,3 @@ + # Clean deletes the static and shared dir + clean-dirs := static shared + +-# install only install the shared binaries +-install-y := $(shared-y) shared/reboot shared/poweroff diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch new file mode 100644 index 0000000..eac128c --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch @@ -0,0 +1,25 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id 676cbb54d42c89a4832871064cfcb7ee2ad372ee + +klcc-cross: Add patch to use /usr/bin/env perl +Certain configurations (such as autobuilders) may build in very +deep paths (that are longer than the #! mechanism allows) which +makes it unsafe to use the direct path for perl. In our case we know +that /usr/bin/env perl will always return ours (if it has been built). + +Signed-off-by: Tom Rini <tom_rini@mentor.com> + +Index: klibc-1.5.20/klcc/makeklcc.pl +=================================================================== +--- a/klcc/makeklcc.pl ++++ b/klcc/makeklcc.pl +@@ -26,7 +26,7 @@ sub pathsearch($) { + return undef; + } + +-print "#!${perlpath}\n"; ++print "#!/usr/bin/env perl\n"; + + open(KLIBCCONF, "< $klibcconf\0") + or die "$0: cannot open $klibcconf: $!\n"; diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/wc.patch b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/wc.patch new file mode 100644 index 0000000..28705fd --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-1.5.25/wc.patch @@ -0,0 +1,245 @@ +Patch was imported from the OpenEmbedded git server +(git://git.openembedded.org/openembedded) +as of commit id acb6fa33fccf7196c86a3a28f927d4fa441d05eb + +klibc: add wc to tools + * for use with uniboot + +Signed-off-by: Thomas Kunze <thommycheck@gmx.de> + +diff --git a/usr/utils/Kbuild b/usr/utils/Kbuild +index a52ea61..7c8ccfb 100644 +--- a/usr/utils/Kbuild ++++ b/usr/utils/Kbuild +@@ -3,7 +3,7 @@ + # + + progs := chroot dd mkdir mkfifo mknod mount pivot_root umount +-progs += true false sleep ln mv nuke minips cat ls losetup ++progs += true false sleep ln mv nuke minips cat ls losetup wc + progs += uname halt kill readlink cpio sync dmesg modprobe + + static-y := $(addprefix static/, $(progs)) +@@ -62,6 +62,8 @@ static/losetup-y := losetup.o + shared/losetup-y := losetup.o + static/modprobe-y := modprobe.o + shared/modprobe-y := modprobe.o ++static/wc-y := wc.o ++shared/wc-y := wc.o + + # Additionally linked targets + always := static/reboot static/poweroff shared/reboot shared/poweroff +diff --git a/usr/utils/wc.c b/usr/utils/wc.c +new file mode 100644 +index 0000000..f5059fc +--- /dev/null ++++ b/usr/utils/wc.c +@@ -0,0 +1,208 @@ ++/* vi: set sw=4 ts=4: */ ++/* ++ * wc implementation for busybox ++ * ++ * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> ++ * ++ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. ++ */ ++ ++/* BB_AUDIT SUSv3 _NOT_ compliant -- option -m is not currently supported. */ ++/* http://www.opengroup.org/onlinepubs/007904975/utilities/wc.html */ ++ ++/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org) ++ * ++ * Rewritten to fix a number of problems and do some size optimizations. ++ * Problems in the previous busybox implementation (besides bloat) included: ++ * 1) broken 'wc -c' optimization (read note below) ++ * 2) broken handling of '-' args ++ * 3) no checking of ferror on EOF returns ++ * 4) isprint() wasn't considered when word counting. ++ * ++ * TODO: ++ * ++ * When locale support is enabled, count multibyte chars in the '-m' case. ++ * ++ * NOTES: ++ * ++ * The previous busybox wc attempted an optimization using stat for the ++ * case of counting chars only. I omitted that because it was broken. ++ * It didn't take into account the possibility of input coming from a ++ * pipe, or input from a file with file pointer not at the beginning. ++ * ++ * To implement such a speed optimization correctly, not only do you ++ * need the size, but also the file position. Note also that the ++ * file position may be past the end of file. Consider the example ++ * (adapted from example in gnu wc.c) ++ * ++ * echo hello > /tmp/testfile && ++ * (dd ibs=1k skip=1 count=0 &> /dev/null; wc -c) < /tmp/testfile ++ * ++ * for which 'wc -c' should output '0'. ++ */ ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++#include <unistd.h> ++#undef isspace ++#undef isprint ++#define isspace(c) ((((c) == ' ') || (((unsigned int)((c) - 9)) <= (13 - 9)))) ++#define isprint(c) (((unsigned int)((c) - 0x20)) <= (0x7e - 0x20)) ++#define isspace_given_isprint(c) ((c) == ' ') ++ ++#define COUNT_T unsigned long ++#define COUNT_FMT "u" ++#define optind 1 ++FILE *fopen_or_warn_stdin(const char *filename) ++{ ++ FILE *fp = stdin; ++ ++ if (filename[0]) { ++ fp = fopen(filename, "r"); ++ } ++ ++ return fp; ++} ++ ++enum { ++ WC_LINES = 0, ++ WC_WORDS = 1, ++ WC_CHARS = 2, ++ WC_LENGTH = 3 ++}; ++ ++int main(int argc, char **argv) ++{ ++ FILE *fp; ++ const char *s, *arg; ++ const char *start_fmt = "%9"COUNT_FMT; ++ const char *fname_fmt = " %s\n"; ++ COUNT_T *pcounts; ++ COUNT_T counts[4]; ++ COUNT_T totals[4]; ++ unsigned linepos; ++ unsigned u; ++ int num_files = 0; ++ int c; ++ signed char status = EXIT_SUCCESS; ++ signed char in_word; ++ unsigned print_type; ++ ++ print_type = getopt(argc, argv, "lwcL"); ++ ++ if (print_type == 0) { ++ print_type = (1 << WC_LINES) | (1 << WC_WORDS) | (1 << WC_CHARS); ++ } ++ ++ argv += optind; ++ if (!argv[0]) { ++ *--argv = (char *) "wc"; ++ fname_fmt = "\n"; ++ if (!((print_type-1) & print_type)) /* exactly one option? */ ++ start_fmt = "%"COUNT_FMT; ++ } ++ ++ memset(totals, 0, sizeof(totals)); ++ ++ pcounts = counts; ++ ++ while ((arg = *argv++) != 0) { ++ ++num_files; ++ fp = fopen_or_warn_stdin(arg); ++ if (!fp) { ++ status = EXIT_FAILURE; ++ continue; ++ } ++ ++ memset(counts, 0, sizeof(counts)); ++ linepos = 0; ++ in_word = 0; ++ ++ do { ++ /* Our -w doesn't match GNU wc exactly... oh well */ ++ ++ ++counts[WC_CHARS]; ++ c = getc(fp); ++ if (isprint(c)) { ++ ++linepos; ++ if (!isspace_given_isprint(c)) { ++ in_word = 1; ++ continue; ++ } ++ } else if (((unsigned int)(c - 9)) <= 4) { ++ /* \t 9 ++ * \n 10 ++ * \v 11 ++ * \f 12 ++ * \r 13 ++ */ ++ if (c == '\t') { ++ linepos = (linepos | 7) + 1; ++ } else { /* '\n', '\r', '\f', or '\v' */ ++ DO_EOF: ++ if (linepos > counts[WC_LENGTH]) { ++ counts[WC_LENGTH] = linepos; ++ } ++ if (c == '\n') { ++ ++counts[WC_LINES]; ++ } ++ if (c != '\v') { ++ linepos = 0; ++ } ++ } ++ } else if (c == EOF) { ++/* if (ferror(fp)) { ++ status = EXIT_FAILURE; ++ } ++*/ --counts[WC_CHARS]; ++ goto DO_EOF; /* Treat an EOF as '\r'. */ ++ } else { ++ continue; ++ } ++ ++ counts[WC_WORDS] += in_word; ++ in_word = 0; ++ if (c == EOF) { ++ break; ++ } ++ } while (1); ++ ++ if (totals[WC_LENGTH] < counts[WC_LENGTH]) { ++ totals[WC_LENGTH] = counts[WC_LENGTH]; ++ } ++ totals[WC_LENGTH] -= counts[WC_LENGTH]; ++ ++ if(fp != stdin) ++ fclose(fp); ++ ++ OUTPUT: ++ /* coreutils wc tries hard to print pretty columns ++ * (saves results for all files, find max col len etc...) ++ * we won't try that hard, it will bloat us too much */ ++ s = start_fmt; ++ u = 0; ++ do { ++ if (print_type & (1 << u)) { ++ printf(s, pcounts[u]); ++ s = " %9"COUNT_FMT; /* Ok... restore the leading space. */ ++ } ++ totals[u] += pcounts[u]; ++ } while (++u < 4); ++ printf(fname_fmt, arg); ++ } ++ ++ /* If more than one file was processed, we want the totals. To save some ++ * space, we set the pcounts ptr to the totals array. This has the side ++ * effect of trashing the totals array after outputting it, but that's ++ * irrelavent since we no longer need it. */ ++ if (num_files > 1) { ++ num_files = 0; /* Make sure we don't get here again. */ ++ arg = "total"; ++ pcounts = totals; ++ --argv; ++ goto OUTPUT; ++ } ++ ++ fflush(stdout); ++ exit(status); ++} diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-checksums_1.5.25.inc b/meta-initramfs/recipes-devtools/klibc/klibc-checksums_1.5.25.inc new file mode 100644 index 0000000..ebba658 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-checksums_1.5.25.inc @@ -0,0 +1,2 @@ +SRC_URI[md5sum] = "5bc4dcd63e9142b934787729133c2766" +SRC_URI[sha256sum] = "0b910ec0b2a97d4c775ed06e44ad7bca7be150efdf2a77a19253a573e16367d3" diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb b/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb new file mode 100644 index 0000000..c9749f0 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb @@ -0,0 +1,17 @@ +PR = "${INC_PR}.0" + +KLIBC_UTILS_VARIANT = "static" +KLIBC_UTILS_PKGNAME = "klibc-static-utils" + +FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" + +do_install() { + : +} + +PACKAGES_${PN} = "${PN}" +FILES_${PN} = "" + +require klibc-utils.inc +require klibc.inc +require klibc-checksums_${PV}.inc diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc b/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc new file mode 100644 index 0000000..0f195a3 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-utils.inc @@ -0,0 +1,70 @@ +KLIBC_UTILS_VARIANT ?= "shared" +KLIBC_UTILS_PKGNAME ?= "klibc-utils" + +# modprobe and losetup go to ${base_sbindir} +# even though debian packages all in /usr/lib/klibc/bin + +do_install_append() { + + install -d ${D}${base_bindir} + install -d ${D}${base_sbindir} + + # debian packages kinit + kinit.shared but only sh.shared + if [ "${KLIBC_UTILS_VARIANT}" = "shared" ]; then + install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit + install -m 755 usr/kinit/kinit.shared ${D}${base_bindir}/kinit.shared + install -m 755 usr/dash/sh.shared ${D}${base_bindir}/sh.shared + else + install -m 755 usr/dash/sh ${D}${base_bindir}/sh + install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit + fi + + install -m 755 usr/gzip/gzip ${D}${base_bindir} + install -m 755 usr/kinit/fstype/${KLIBC_UTILS_VARIANT}/fstype ${D}${base_bindir} + install -m 755 usr/kinit/ipconfig/${KLIBC_UTILS_VARIANT}/ipconfig ${D}${base_bindir} + install -m 755 usr/kinit/nfsmount/${KLIBC_UTILS_VARIANT}/nfsmount ${D}${base_bindir} + install -m 755 usr/kinit/resume/${KLIBC_UTILS_VARIANT}/resume ${D}${base_bindir} + install -m 755 usr/kinit/run-init/${KLIBC_UTILS_VARIANT}/run-init ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/cat ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/chroot ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/cpio ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/dd ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/dmesg ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/false ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/halt ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/kill ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/ln ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/losetup ${D}${base_sbindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/ls ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/minips ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mkdir ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mkfifo ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mknod ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/modprobe ${D}${base_sbindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mount ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mv ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/nuke ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/pivot_root ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/poweroff ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/readlink ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/reboot ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/sleep ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/sync ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/true ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/umount ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/uname ${D}${base_bindir} + install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/wc ${D}${base_bindir} + ln -s gzip ${D}${base_bindir}/gunzip + ln -s gzip ${D}${base_bindir}/zcat +} + +PACKAGES_DYNAMIC = "${KLIBC_UTILS_PKGNAME}-*" + +python populate_packages_prepend () { + + base_bin_dir = bb.data.expand('${base_bindir}', d) + do_split_packages(d, base_bin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', allow_links=True, allow_dirs=True) + + base_sbin_dir = bb.data.expand('${base_sbindir}', d) + do_split_packages(d, base_sbin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', allow_dirs=True) +} diff --git a/meta-initramfs/recipes-devtools/klibc/klibc-utils_1.5.25.bb b/meta-initramfs/recipes-devtools/klibc/klibc-utils_1.5.25.bb new file mode 100644 index 0000000..b26dda4 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc-utils_1.5.25.bb @@ -0,0 +1,17 @@ +PR = "${INC_PR}.0" + +KLIBC_UTILS_VARIANT = "shared" +KLIBC_UTILS_PKGNAME = "klibc-utils" + +FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" + +do_install() { + : +} + +PACKAGES_${PN} = "${PN}" +FILES_${PN} = "" + +require klibc-utils.inc +require klibc.inc +require klibc-checksums_${PV}.inc diff --git a/meta-initramfs/recipes-devtools/klibc/klibc.inc b/meta-initramfs/recipes-devtools/klibc/klibc.inc new file mode 100644 index 0000000..1b1f7c6 --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc.inc @@ -0,0 +1,48 @@ +DEPENDS = "virtual/kernel perl-native" +SECTION = "libs" +DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \ +use with initramfs. It is deliberately written for small size, \ +minimal entaglement, and portability, not speed." +LICENSE = "BSD-ADV" +LIC_FILES_CHKSUM = "file://usr/klibc/LICENSE;md5=d75181f10e998c21eb147f6d2e43ce8b" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +# Prevents do_package failures with: +# debugsources.list: No such file or directory: +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +INC_PR = "r0" + +KLIBC_ARCH = '${TARGET_ARCH}' +KLIBC_ARCH_armeb = 'arm' +KLIBC_ARCH_mipsel = 'mips' +KLIBC_ARCH_x86 = 'i386' +KLIBC_ARCH_i486 = 'i386' +KLIBC_ARCH_i586 = 'i386' +KLIBC_ARCH_i686 = 'i386' +KLIBC_ARCH_pentium = 'i386' + +KLIBC_FETCHDIR = "1.5" +SRC_URI = "${KERNELORG_MIRROR}/linux/libs/klibc/${KLIBC_FETCHDIR}/klibc-${PV}.tar.bz2" + +SRC_URI_append_linux-gnueabi = " file://klibc-config-eabi.patch" +SRC_URI_append_linux-uclibceabi = " file://klibc-config-eabi.patch" + +SRC_URI += "file://fstype-sane-vfat-and-jffs2-for-1.5.patch \ + file://modprobe.patch \ + file://dash_readopt.patch \ + file://wc.patch \ + file://staging.patch \ + " + +S = "${WORKDIR}/klibc-${PV}" + +EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \ + 'CROSS_COMPILE=${TARGET_PREFIX}' \ + 'KLIBCKERNELSRC=${STAGING_KERNEL_DIR}' \ + " + +do_configure () { + ln -sf ${STAGING_KERNEL_DIR} linux +} diff --git a/meta-initramfs/recipes-devtools/klibc/klibc_1.5.25.bb b/meta-initramfs/recipes-devtools/klibc/klibc_1.5.25.bb new file mode 100644 index 0000000..a313bfd --- /dev/null +++ b/meta-initramfs/recipes-devtools/klibc/klibc_1.5.25.bb @@ -0,0 +1,35 @@ +PR = "${INC_PR}.0" + +export INST = "${D}" + +do_install() { + + oe_runmake install + + # the crosscompiler is packaged by klcc-cross + # remove klcc + # remove also from FILES_libklibc-dev + rm ${D}${base_bindir}/klcc + + # remove Linux headers .install and ..install.cmd files + find ${D}${base_libdir}/klibc/include -name '.install' -delete + find ${D}${base_libdir}/klibc/include -name '..install.cmd' -delete + + install -d ${D}${base_libdir} + install -m 755 usr/klibc/klibc-*.so ${D}${base_libdir} + (cd ${D}${base_libdir}; ln -s klibc-*.so klibc.so) + +} + +PACKAGES = "libklibc libklibc-dev" +FILES_libklibc = "${base_libdir}/klibc-*.so" +FILES_libklibc-dev = "${base_libdir}/klibc.so \ + ${base_libdir}/klibc/lib/* \ + ${base_libdir}/klibc/include/* \ + " +# see above +# do not package it in -dev +# ${base_bindir}/klcc \ + +require klibc.inc +require klibc-checksums_${PV}.inc diff --git a/meta-oe/classes/klibc.bbclass b/meta-oe/classes/klibc.bbclass deleted file mode 100644 index d553bd7..0000000 --- a/meta-oe/classes/klibc.bbclass +++ /dev/null @@ -1,9 +0,0 @@ -# klcc-cross depends on klibc -DEPENDS =+ "klcc-cross" - -export CC = "${TARGET_PREFIX}klcc" - -# klcc uses own optimizations by default. See klcc(1) man file. -export CFLAGS="" -export CPPFLAGS="" -export LDFLAGS="" diff --git a/meta-oe/recipes-devtools/klibc/klcc-cross_1.5.25.bb b/meta-oe/recipes-devtools/klibc/klcc-cross_1.5.25.bb deleted file mode 100644 index 922c8d8..0000000 --- a/meta-oe/recipes-devtools/klibc/klcc-cross_1.5.25.bb +++ /dev/null @@ -1,33 +0,0 @@ -PR = "${INC_PR}.0" - -require klibc.inc -require klibc-checksums_${PV}.inc - -export KLCC_INST = "${STAGING_DIR_TARGET}/lib/klibc" - -SRC_URI += "file://klcc_prefix.patch \ - file://use-env-for-perl.patch" - -DEPENDS = "klibc" - -FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" - -# ${TARGET_PREFIX}klcc is just a -# perl wrapper around gcc-cross -# so give it the same arch and path -PACKAGE_ARCH = "${TUNE_PKGARCH}" - -inherit cross - -do_configure () { - : -} - -do_compile() { - oe_runmake klcc -} - -do_install() { - install -d ${D}${base_bindir} - install -m 0755 klcc/klcc ${D}${base_bindir}/${TARGET_PREFIX}klcc -} diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch deleted file mode 100644 index 3be1be0..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/dash_readopt.patch +++ /dev/null @@ -1,111 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id ad67a97e8fbfb03a68088a6ca6ad87b086c88094 -Signed-off-by: Thomas Kunze <thommycheck@gmx.de> -Minor adjustments tracking upstream changes -Signed-off-by: Andrea Adami <andrea.adami@gmail.com> - -diff -uNr klibc-1.5.22.orig//usr/dash/miscbltin.c klibc-1.5.22/usr/dash/miscbltin.c ---- klibc-1.5.22.orig//usr/dash/miscbltin.c 2011-06-11 02:08:49.000000000 +0200 -+++ klibc-1.5.22/usr/dash/miscbltin.c 2011-06-11 13:55:32.000000000 +0200 -@@ -46,6 +46,7 @@ - #include <ctype.h> - #include <inttypes.h> - #include <time.h> /* strtotimeval() */ -+#include <termios.h> - - #include "shell.h" - #include "options.h" -@@ -149,6 +150,11 @@ - int timeout; - int i; - fd_set set; -+ int n_flag = 0; -+ unsigned int nchars = 0; -+ int silent = 0; -+ struct termios tty, old_tty; -+ - struct timeval ts, t0, t1, to; - - ts.tv_sec = ts.tv_usec = 0; -@@ -156,11 +162,18 @@ - rflag = 0; - timeout = 0; - prompt = NULL; -- while ((i = nextopt("p:rt:")) != '\0') { -+ while ((i = nextopt("p:rt:n:s")) != '\0') { - switch(i) { - case 'p': - prompt = optionarg; - break; -+ case 'n': -+ nchars = strtoul(optionarg, NULL, 10); -+ n_flag = nchars; /* just a flag "nchars is nonzero" */ -+ break; -+ case 's': -+ silent = 1; -+ break; - case 't': - p = strtotimeval(optionarg, &ts); - if (*p || (!ts.tv_sec && !ts.tv_usec)) -@@ -182,6 +197,24 @@ - } - if (*(ap = argptr) == NULL) - sh_error("arg count"); -+ if (n_flag || silent) { -+ if (tcgetattr(0, &tty) != 0) { -+ /* Not a tty */ -+ n_flag = 0; -+ silent = 0; -+ } else { -+ old_tty = tty; -+ if (n_flag) { -+ tty.c_lflag &= ~ICANON; -+ tty.c_cc[VMIN] = nchars < 256 ? nchars : 255; -+ } -+ if (silent) { -+ tty.c_lflag &= ~(ECHO | ECHOK | ECHONL); -+ } -+ tcsetattr(0, TCSANOW, &tty); -+ } -+ } -+ - - status = 0; - if (timeout) { -@@ -200,12 +231,14 @@ - goto start; - -- for (;;) { -+ do { - if (timeout) { - gettimeofday(&t1, NULL); - if (t1.tv_sec > ts.tv_sec || - (t1.tv_sec == ts.tv_sec && - t1.tv_usec >= ts.tv_usec)) { - status = 1; -+ if (n_flag) -+ tcsetattr(0, TCSANOW, &old_tty); - break; /* Timeout! */ - } - -@@ -222,6 +255,8 @@ - FD_SET(0, &set); - if (select(1, &set, NULL, NULL, &to) != 1) { - status = 1; -+ if (n_flag) -+ tcsetattr(0, TCSANOW, &old_tty); - break; /* Timeout! */ - } - } -@@ -263,6 +298,9 @@ - newloc = startloc - 1; - } -- } -+ } while (!n_flag || --nchars); -+ if (n_flag || silent) -+ tcsetattr(0, TCSANOW, &old_tty); -+ - out: - recordregion(startloc, p - (char *)stackblock(), 0); - STACKSTRNUL(p); diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch deleted file mode 100644 index 3fec98d..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/fstype-sane-vfat-and-jffs2-for-1.5.patch +++ /dev/null @@ -1,74 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id 2a98e2a2c1b55a0eb0ac09f2f9b55db2e4c23553 -Signed-off-by: Thomas Kunze <thommycheck@gmx.de> -Refresh and fixes as of commit id 5dbd8d611f3cb7eb8baddb17211d6077e2060fdb -Signed-off-by: Andrea Adami <andrea.adami@gmail.com> - -Index: klibc-1.5.22/usr/kinit/fstype/fstype.c -=================================================================== ---- a/usr/kinit/fstype/fstype.c -+++ b/usr/kinit/fstype/fstype.c -@@ -20,7 +20,7 @@ - #include <netinet/in.h> - #include <sys/utsname.h> - #include <sys/vfs.h> -- -+#include <linux/types.h> - #define cpu_to_be32(x) __cpu_to_be32(x) /* Needed by romfs_fs.h */ - - #include "btrfs.h" -@@ -38,6 +38,12 @@ - #include "squashfs_fs.h" - #include "xfs_sb.h" - -+#if __BYTE_ORDER == __BIG_ENDIAN -+#include <linux/byteorder/big_endian.h> -+#else -+#include <linux/byteorder/little_endian.h> -+#endif -+ - /* - * Slightly cleaned up version of jfs_superblock to - * avoid pulling in other kernel header files. -@@ -60,6 +66,30 @@ - /* Swap needs the definition of block size */ - #include "swap_fs.h" - -+static int jffs2_image(const void *buf, unsigned long long *blocks) -+{ -+ const unsigned char *p = buf; -+ -+ if (p[0] == 0x85 && p[1] == 0x19) { -+ *blocks=0; -+ return 1; -+ } -+ return 0; -+} -+ -+static int vfat_image(const void *buf, unsigned long long *blocks) -+{ -+ const char *p = buf; -+ -+ if (!strncmp(p + 54, "FAT12 ", 8) -+ || !strncmp(p + 54, "FAT16 ", 8) -+ || !strncmp(p + 82, "FAT32 ", 8)) { -+ *blocks=0; -+ return 1; -+ } -+ return 0; -+} -+ - static int gzip_image(const void *buf, unsigned long long *bytes) - { - const unsigned char *p = buf; -@@ -495,6 +525,8 @@ static struct imagetype images[] = { - {1, "ext3", ext3_image}, - {1, "ext2", ext2_image}, - {1, "minix", minix_image}, -+ {0, "jffs2", jffs2_image}, -+ {0, "vfat", vfat_image}, - {1, "nilfs2", nilfs2_image}, - {2, "ocfs2", ocfs2_image}, - {8, "reiserfs", reiserfs_image}, - diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch deleted file mode 100644 index a4a0026..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/klcc_prefix.patch +++ /dev/null @@ -1,24 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id a29bf15b9c9c0d15f96c254b2ed830e104ae3436 -Signed-off-by: Andrea Adami <andrea.adami@gmail.com> - -Index: klibc-1.5.19/klcc/Kbuild -=================================================================== ---- --- klibc-1.5.19.orig/klcc/Kbuild 2010-07-07 14:07:48.000000000 +0200 -+++ --- klibc-1.5.19./klcc/Kbuild 2010-08-18 23:39:23.000000000 +0200 -@@ -22,10 +22,10 @@ - $(Q)echo 'EMAIN=$(KLIBCEMAIN)' >> $@ - $(Q)echo 'BITSIZE=$(KLIBCBITSIZE)' >> $@ - $(Q)echo 'VERSION=$(shell cat $(srctree)/usr/klibc/version)' >> $@ -- $(Q)echo 'prefix=$(INSTALLDIR)' >> $@ -- $(Q)echo 'bindir=$(INSTALLDIR)/$(KCROSS)bin' >> $@ -- $(Q)echo 'libdir=$(INSTALLDIR)/$(KCROSS)lib' >> $@ -- $(Q)echo 'includedir=$(INSTALLDIR)/$(KCROSS)include' >> $@ -+ $(Q)echo 'prefix=$(KLCC_INST)' >> $@ -+ $(Q)echo 'bindir=$(KLCC_INST)/$(KCROSS)bin' >> $@ -+ $(Q)echo 'libdir=$(KLCC_INST)/$(KCROSS)lib' >> $@ -+ $(Q)echo 'includedir=$(KLCC_INST)/$(KCROSS)include' >> $@ - - - # Generate klcc diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch deleted file mode 100644 index 316c80a..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/klibc-config-eabi.patch +++ /dev/null @@ -1,14 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id b6764cf32ec93547531130dca364fb95e1c495f4 -Signed-off-by: Thomas Kunze <thommycheck@gmx.de> - -diff -Nur klibc-1.5/defconfig klibc-1.5p/defconfig ---- klibc-1.5/defconfig 2007-03-04 02:52:10.000000000 +0100 -+++ klibc-1.5p/defconfig 2008-02-08 19:24:22.337127756 +0100 -@@ -5,4 +5,4 @@ - CONFIG_REGPARM=y - # ARM options - # CONFIG_KLIBC_THUMB is not set --# CONFIG_AEABI is not set -+CONFIG_AEABI=y diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch deleted file mode 100644 index eb2fb39..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/modprobe.patch +++ /dev/null @@ -1,1984 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id 70ae69edb02e0174db0841ae501299159c888514 -Signed-off-by: Thomas Kunze <thommycheck@gmx.de> -Minor adjustments tracking upstream changes -Signed-off-by: Andrea Adami <andrea.adami@gmail.com> - -diff --git a/usr/utils/Kbuild b/usr/utils/Kbuild ---- a/usr/utils/Kbuild -+++ b/usr/utils/Kbuild -@@ -4,7 +4,7 @@ - - progs := chroot dd mkdir mkfifo mknod mount pivot_root umount - progs += true false sleep ln mv nuke minips cat ls losetup --progs += uname halt kill readlink cpio sync dmesg -+progs += uname halt kill readlink cpio sync dmesg modprobe - - static-y := $(addprefix static/, $(progs)) - shared-y := $(addprefix shared/, $(progs)) -@@ -58,6 +58,8 @@ static/sync-y := sync.o - shared/sync-y := sync.o - static/losetup-y := losetup.o - shared/losetup-y := losetup.o -+static/modprobe-y := modprobe.o -+shared/modprobe-y := modprobe.o - - # Additionally linked targets - always := static/reboot static/poweroff shared/reboot shared/poweroff -diff --git a/usr/utils/list.h b/usr/utils/list.h ---- /dev/null -+++ b/usr/utils/list.h -@@ -0,0 +1,238 @@ -+/* Stolen from Linux Kernel Source's list.h -- GPL. */ -+#ifndef _MODINITTOOLS_LIST_H -+#define _MODINITTOOLS_LIST_H -+ -+#undef offsetof -+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) -+ -+/** -+ * container_of - cast a member of a structure out to the containing structure -+ * -+ * @ptr: the pointer to the member. -+ * @type: the type of the container struct this is embedded in. -+ * @member: the name of the member within the struct. -+ * -+ */ -+#define container_of(ptr, type, member) ({ \ -+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ -+ (type *)( (char *)__mptr - offsetof(type,member) );}) -+ -+/* -+ * Simple doubly linked list implementation. -+ * -+ * Some of the internal functions ("__xxx") are useful when -+ * manipulating whole lists rather than single entries, as -+ * sometimes we already know the next/prev entries and we can -+ * generate better code by using them directly rather than -+ * using the generic single-entry routines. -+ */ -+ -+struct list_head { -+ struct list_head *next, *prev; -+}; -+ -+#define LIST_HEAD_INIT(name) { &(name), &(name) } -+ -+#define LIST_HEAD(name) \ -+ struct list_head name = LIST_HEAD_INIT(name) -+ -+#define INIT_LIST_HEAD(ptr) do { \ -+ (ptr)->next = (ptr); (ptr)->prev = (ptr); \ -+} while (0) -+ -+/* -+ * Insert a new entry between two known consecutive entries. -+ * -+ * This is only for internal list manipulation where we know -+ * the prev/next entries already! -+ */ -+static inline void __list_add(struct list_head *new, -+ struct list_head *prev, -+ struct list_head *next) -+{ -+ next->prev = new; -+ new->next = next; -+ new->prev = prev; -+ prev->next = new; -+} -+ -+/** -+ * list_add - add a new entry -+ * @new: new entry to be added -+ * @head: list head to add it after -+ * -+ * Insert a new entry after the specified head. -+ * This is good for implementing stacks. -+ */ -+static inline void list_add(struct list_head *new, struct list_head *head) -+{ -+ __list_add(new, head, head->next); -+} -+ -+/** -+ * list_add_tail - add a new entry -+ * @new: new entry to be added -+ * @head: list head to add it before -+ * -+ * Insert a new entry before the specified head. -+ * This is useful for implementing queues. -+ */ -+static inline void list_add_tail(struct list_head *new, struct list_head *head) -+{ -+ __list_add(new, head->prev, head); -+} -+ -+/* -+ * Delete a list entry by making the prev/next entries -+ * point to each other. -+ * -+ * This is only for internal list manipulation where we know -+ * the prev/next entries already! -+ */ -+static inline void __list_del(struct list_head * prev, struct list_head * next) -+{ -+ next->prev = prev; -+ prev->next = next; -+} -+ -+/** -+ * list_del - deletes entry from list. -+ * @entry: the element to delete from the list. -+ * Note: list_empty on entry does not return true after this, the entry is -+ * in an undefined state. -+ */ -+static inline void list_del(struct list_head *entry) -+{ -+ __list_del(entry->prev, entry->next); -+} -+ -+/** -+ * list_del_init - deletes entry from list and reinitialize it. -+ * @entry: the element to delete from the list. -+ */ -+static inline void list_del_init(struct list_head *entry) -+{ -+ __list_del(entry->prev, entry->next); -+ INIT_LIST_HEAD(entry); -+} -+ -+/** -+ * list_move - delete from one list and add as another's head -+ * @list: the entry to move -+ * @head: the head that will precede our entry -+ */ -+static inline void list_move(struct list_head *list, struct list_head *head) -+{ -+ __list_del(list->prev, list->next); -+ list_add(list, head); -+} -+ -+/** -+ * list_move_tail - delete from one list and add as another's tail -+ * @list: the entry to move -+ * @head: the head that will follow our entry -+ */ -+static inline void list_move_tail(struct list_head *list, -+ struct list_head *head) -+{ -+ __list_del(list->prev, list->next); -+ list_add_tail(list, head); -+} -+ -+/** -+ * list_empty - tests whether a list is empty -+ * @head: the list to test. -+ */ -+static inline int list_empty(struct list_head *head) -+{ -+ return head->next == head; -+} -+ -+static inline void __list_splice(struct list_head *list, -+ struct list_head *head) -+{ -+ struct list_head *first = list->next; -+ struct list_head *last = list->prev; -+ struct list_head *at = head->next; -+ -+ first->prev = head; -+ head->next = first; -+ -+ last->next = at; -+ at->prev = last; -+} -+ -+/** -+ * list_splice - join two lists -+ * @list: the new list to add. -+ * @head: the place to add it in the first list. -+ */ -+static inline void list_splice(struct list_head *list, struct list_head *head) -+{ -+ if (!list_empty(list)) -+ __list_splice(list, head); -+} -+ -+/** -+ * list_splice_init - join two lists and reinitialise the emptied list. -+ * @list: the new list to add. -+ * @head: the place to add it in the first list. -+ * -+ * The list at @list is reinitialised -+ */ -+static inline void list_splice_init(struct list_head *list, -+ struct list_head *head) -+{ -+ if (!list_empty(list)) { -+ __list_splice(list, head); -+ INIT_LIST_HEAD(list); -+ } -+} -+ -+/** -+ * list_entry - get the struct for this entry -+ * @ptr: the &struct list_head pointer. -+ * @type: the type of the struct this is embedded in. -+ * @member: the name of the list_struct within the struct. -+ */ -+#define list_entry(ptr, type, member) \ -+ container_of(ptr, type, member) -+ -+/** -+ * list_for_each - iterate over a list -+ * @pos: the &struct list_head to use as a loop counter. -+ * @head: the head for your list. -+ */ -+#define list_for_each(pos, head) \ -+ for (pos = (head)->next; pos != (head); pos = pos->next) -+ -+/** -+ * list_for_each_prev - iterate over a list backwards -+ * @pos: the &struct list_head to use as a loop counter. -+ * @head: the head for your list. -+ */ -+#define list_for_each_prev(pos, head) \ -+ for (pos = (head)->prev; pos != (head); pos = pos->prev) -+ -+/** -+ * list_for_each_safe - iterate over a list safe against removal of list entry -+ * @pos: the &struct list_head to use as a loop counter. -+ * @n: another &struct list_head to use as temporary storage -+ * @head: the head for your list. -+ */ -+#define list_for_each_safe(pos, n, head) \ -+ for (pos = (head)->next, n = pos->next; pos != (head); \ -+ pos = n, n = pos->next) -+ -+/** -+ * list_for_each_entry - iterate over list of given type -+ * @pos: the type * to use as a loop counter. -+ * @head: the head for your list. -+ * @member: the name of the list_struct within the struct. -+ */ -+#define list_for_each_entry(pos, head, member) \ -+ for (pos = list_entry((head)->next, typeof(*pos), member); \ -+ &pos->member != (head); \ -+ pos = list_entry(pos->member.next, typeof(*pos), member)) -+ -+#endif -diff --git a/usr/utils/modprobe.c b/usr/utils/modprobe.c ---- /dev/null -+++ b/usr/utils/modprobe.c -@@ -0,0 +1,1710 @@ -+/* modprobe.c: insert a module into the kernel, intelligently. -+ Copyright (C) 2001 Rusty Russell. -+ Copyright (C) 2002, 2003 Rusty Russell, IBM Corporation. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+*/ -+#define _GNU_SOURCE /* asprintf */ -+ -+#include <sys/utsname.h> -+#include <sys/types.h> -+#include <sys/stat.h> -+#include <sys/mman.h> -+#include <fcntl.h> -+#include <stdarg.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <ctype.h> -+#include <string.h> -+#include <errno.h> -+#include <unistd.h> -+#include <dirent.h> -+#include <limits.h> -+#include <elf.h> -+#include <getopt.h> -+#include <fnmatch.h> -+#include <asm/unistd.h> -+#include <sys/wait.h> -+#include <syslog.h> -+#include <zlib.h> -+ -+#define streq(a,b) (strcmp((a),(b)) == 0) -+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -+ -+#include "list.h" -+static inline void try_old_version(const char *progname, char *argv[]) -+{ -+} -+extern long init_module(void *, unsigned long, const char *); -+extern long delete_module(const char *, unsigned int); -+ -+struct module { -+ struct list_head list; -+ char *modname; -+ char filename[0]; -+}; -+ -+#ifndef MODULE_DIR -+#define MODULE_DIR "/lib/modules" -+#endif -+ -+typedef void (*errfn_t)(const char *fmt, ...); -+ -+/* Do we use syslog or stderr for messages? */ -+static int log; -+ -+static void message(const char *prefix, const char *fmt, va_list *arglist) -+{ -+ char *buf, *buf2; -+ -+ vasprintf(&buf, fmt, *arglist); -+ asprintf(&buf2, "%s%s", prefix, buf); -+ -+ if (log) -+ syslog(LOG_NOTICE, "%s", buf2); -+ else -+ fprintf(stderr, "%s", buf2); -+ free(buf2); -+ free(buf); -+} -+void *grab_contents(gzFile *gzfd, unsigned long *size) -+{ -+ unsigned int max = 16384; -+ void *buffer = malloc(max); -+ int ret; -+ -+ if (!buffer) -+ return NULL; -+ -+ *size = 0; -+ while ((ret = gzread(gzfd, buffer + *size, max - *size)) > 0) { -+ *size += ret; -+ if (*size == max) { -+ buffer = realloc(buffer, max *= 2); -+ if (!buffer) -+ return NULL; -+ } -+ } -+ if (ret < 0) { -+ free(buffer); -+ buffer = NULL; -+ } -+ return buffer; -+} -+ -+void *grab_fd(int fd, unsigned long *size) -+{ -+ gzFile gzfd; -+ -+ gzfd = gzdopen(fd, "rb"); -+ if (!gzfd) -+ return NULL; -+ -+ /* gzclose(gzfd) would close fd, which would drop locks. -+ Don't blame zlib: POSIX locking semantics are so horribly -+ broken that they should be ripped out. */ -+ return grab_contents(gzfd, size); -+} -+void release_file(void *data, unsigned long size) -+{ -+ free(data); -+} -+ -+ -+static int warned = 0; -+static void warn(const char *fmt, ...) -+{ -+ va_list arglist; -+ warned++; -+ va_start(arglist, fmt); -+ message("WARNING: ", fmt, &arglist); -+ va_end(arglist); -+} -+ -+static void fatal(const char *fmt, ...) -+{ -+ va_list arglist; -+ va_start(arglist, fmt); -+ message("FATAL: ", fmt, &arglist); -+ va_end(arglist); -+ exit(1); -+} -+ -+ -+static void grammar(const char *cmd, const char *filename, unsigned int line) -+{ -+ warn("%s line %u: ignoring bad line starting with '%s'\n", -+ filename, line, cmd); -+} -+ -+static void *do_nofail(void *ptr, const char *file, int line, const char *expr) -+{ -+ if (!ptr) { -+ fatal("Memory allocation failure %s line %d: %s.\n", -+ file, line, expr); -+ } -+ return ptr; -+} -+ -+#define NOFAIL(ptr) do_nofail((ptr), __FILE__, __LINE__, #ptr) -+ -+static void print_usage(const char *progname) -+{ -+ fprintf(stderr, -+ "Usage: %s [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [-o <modname>] <modname> [parameters...]\n" -+ "%s -r [-n] [-i] [-v] <modulename> ...\n" -+ "%s -l -t <dirname> [ -a <modulename> ...]\n", -+ progname, progname, progname); -+ exit(1); -+} -+ -+static int fgetc_wrapped(FILE *file, unsigned int *linenum) -+{ -+ for (;;) { -+ int ch = fgetc(file); -+ if (ch != '\\') -+ return ch; -+ ch = fgetc(file); -+ if (ch != '\n') -+ return ch; -+ if (linenum) -+ (*linenum)++; -+ } -+} -+ -+static char *getline_wrapped(FILE *file, unsigned int *linenum) -+{ -+ int size = 1024; -+ int i = 0; -+ char *buf = NOFAIL(malloc(size)); -+ for(;;) { -+ int ch = fgetc_wrapped(file, linenum); -+ if (i == size) { -+ size *= 2; -+ buf = NOFAIL(realloc(buf, size)); -+ } -+ if (ch < 0 && i == 0) { -+ free(buf); -+ return NULL; -+ } -+ if (ch < 0 || ch == '\n') { -+ if (linenum) -+ (*linenum)++; -+ buf[i] = '\0'; -+ return NOFAIL(realloc(buf, i+1)); -+ } -+ buf[i++] = ch; -+ } -+} -+ -+static struct module *find_module(const char *filename, struct list_head *list) -+{ -+ struct module *i; -+ -+ list_for_each_entry(i, list, list) { -+ if (strcmp(i->filename, filename) == 0) -+ return i; -+ } -+ return NULL; -+} -+ -+/* Convert filename to the module name. Works if filename == modname, too. */ -+static void filename2modname(char *modname, const char *filename) -+{ -+ const char *afterslash; -+ unsigned int i; -+ -+ afterslash = strrchr(filename, '/'); -+ if (!afterslash) -+ afterslash = filename; -+ else -+ afterslash++; -+ -+ /* Convert to underscores, stop at first . */ -+ for (i = 0; afterslash[i] && afterslash[i] != '.'; i++) { -+ if (afterslash[i] == '-') -+ modname[i] = '_'; -+ else -+ modname[i] = afterslash[i]; -+ } -+ modname[i] = '\0'; -+} -+ -+static int lock_file(const char *filename) -+{ -+ int fd = open(filename, O_RDWR, 0); -+ -+ if (fd >= 0) { -+ struct flock lock; -+ lock.l_type = F_WRLCK; -+ lock.l_whence = SEEK_SET; -+ lock.l_start = 0; -+ lock.l_len = 1; -+ fcntl(fd, F_SETLKW, &lock); -+ } else -+ /* Read-only filesystem? There goes locking... */ -+ fd = open(filename, O_RDONLY, 0); -+ return fd; -+} -+ -+static void unlock_file(int fd) -+{ -+ /* Valgrind is picky... */ -+ close(fd); -+} -+ -+static void add_module(char *filename, int namelen, struct list_head *list) -+{ -+ struct module *mod; -+ -+ /* If it's a duplicate: move it to the end, so it gets -+ inserted where it is *first* required. */ -+ mod = find_module(filename, list); -+ if (mod) -+ list_del(&mod->list); -+ else { -+ /* No match. Create a new module. */ -+ mod = NOFAIL(malloc(sizeof(struct module) + namelen + 1)); -+ memcpy(mod->filename, filename, namelen); -+ mod->filename[namelen] = '\0'; -+ mod->modname = NOFAIL(malloc(namelen + 1)); -+ filename2modname(mod->modname, mod->filename); -+ } -+ -+ list_add_tail(&mod->list, list); -+} -+ -+/* Compare len chars of a to b, with _ and - equivalent. */ -+static int modname_equal(const char *a, const char *b, unsigned int len) -+{ -+ unsigned int i; -+ -+ if (strlen(b) != len) -+ return 0; -+ -+ for (i = 0; i < len; i++) { -+ if ((a[i] == '_' || a[i] == '-') -+ && (b[i] == '_' || b[i] == '-')) -+ continue; -+ if (a[i] != b[i]) -+ return 0; -+ } -+ return 1; -+} -+ -+/* Fills in list of modules if this is the line we want. */ -+static int add_modules_dep_line(char *line, -+ const char *name, -+ struct list_head *list) -+{ -+ char *ptr; -+ int len; -+ char *modname; -+ -+ /* Ignore lines without : or which start with a # */ -+ ptr = strchr(line, ':'); -+ if (ptr == NULL || line[strspn(line, "\t ")] == '#') -+ return 0; -+ -+ /* Is this the module we are looking for? */ -+ *ptr = '\0'; -+ if (strrchr(line, '/')) -+ modname = strrchr(line, '/') + 1; -+ else -+ modname = line; -+ -+ len = strlen(modname); -+ if (strchr(modname, '.')) -+ len = strchr(modname, '.') - modname; -+ if (!modname_equal(modname, name, len)) -+ return 0; -+ -+ /* Create the list. */ -+ add_module(line, ptr - line, list); -+ -+ ptr++; -+ for(;;) { -+ char *dep_start; -+ ptr += strspn(ptr, " \t"); -+ if (*ptr == '\0') -+ break; -+ dep_start = ptr; -+ ptr += strcspn(ptr, " \t"); -+ add_module(dep_start, ptr - dep_start, list); -+ } -+ return 1; -+} -+ -+static void read_depends(const char *dirname, -+ const char *start_name, -+ struct list_head *list) -+{ -+ char *modules_dep_name; -+ char *line; -+ FILE *modules_dep; -+ int done = 0; -+ -+ asprintf(&modules_dep_name, "%s/%s", dirname, "modules.dep"); -+ modules_dep = fopen(modules_dep_name, "r"); -+ if (!modules_dep) -+ fatal("Could not load %s: %s\n", -+ modules_dep_name, strerror(errno)); -+ -+ /* Stop at first line, as we can have duplicates (eg. symlinks -+ from boot/ */ -+ while (!done && (line = getline_wrapped(modules_dep, NULL)) != NULL) { -+ done = add_modules_dep_line(line, start_name, list); -+ free(line); -+ } -+ fclose(modules_dep); -+ free(modules_dep_name); -+} -+ -+/* We use error numbers in a loose translation... */ -+static const char *insert_moderror(int err) -+{ -+ switch (err) { -+ case ENOEXEC: -+ return "Invalid module format"; -+ case ENOENT: -+ return "Unknown symbol in module, or unknown parameter (see dmesg)"; -+ case ENOSYS: -+ return "Kernel does not have module support"; -+ default: -+ return strerror(err); -+ } -+} -+ -+static const char *remove_moderror(int err) -+{ -+ switch (err) { -+ case ENOENT: -+ return "No such module"; -+ case ENOSYS: -+ return "Kernel does not have module unloading support"; -+ default: -+ return strerror(err); -+ } -+} -+ -+/* Is module in /proc/modules? If so, fill in usecount if not NULL. -+ 0 means no, 1 means yes, -1 means unknown. -+ */ -+static int module_in_kernel(const char *modname, unsigned int *usecount) -+{ -+ FILE *proc_modules; -+ char *line; -+ -+again: -+ /* Might not be mounted yet. Don't fail. */ -+ proc_modules = fopen("/proc/modules", "r"); -+ if (!proc_modules) -+ return -1; -+ -+ while ((line = getline_wrapped(proc_modules, NULL)) != NULL) { -+ char *entry = strtok(line, " \n"); -+ -+ if (entry && streq(entry, modname)) { -+ /* If it exists, usecount is the third entry. */ -+ if (!strtok(NULL, " \n")) -+ goto out; -+ -+ if (!(entry = strtok(NULL, " \n"))) /* usecount */ -+ goto out; -+ else -+ if (usecount) -+ *usecount = atoi(entry); -+ -+ /* Followed by - then status. */ -+ if (strtok(NULL, " \n") -+ && (entry = strtok(NULL, " \n")) != NULL) { -+ /* Locking will fail on ro fs, we might hit -+ * cases where module is in flux. Spin. */ -+ if (streq(entry, "Loading") -+ || streq(entry, "Unloading")) { -+ usleep(100000); -+ free(line); -+ fclose(proc_modules); -+ goto again; -+ } -+ } -+ -+ out: -+ free(line); -+ fclose(proc_modules); -+ return 1; -+ } -+ free(line); -+ } -+ fclose(proc_modules); -+ return 0; -+} -+ -+static void replace_modname(struct module *module, -+ void *mem, unsigned long len, -+ const char *oldname, const char *newname) -+{ -+ char *p; -+ -+ /* 64 - sizeof(unsigned long) - 1 */ -+ if (strlen(newname) > 55) -+ fatal("New name %s is too long\n", newname); -+ -+ /* Find where it is in the module structure. Don't assume layout! */ -+ for (p = mem; p < (char *)mem + len - strlen(oldname); p++) { -+ if (memcmp(p, oldname, strlen(oldname)) == 0) { -+ strcpy(p, newname); -+ return; -+ } -+ } -+ -+ warn("Could not find old name in %s to replace!\n", module->filename); -+} -+ -+static void *get_section32(void *file, -+ unsigned long size, -+ const char *name, -+ unsigned long *secsize) -+{ -+ Elf32_Ehdr *hdr = file; -+ Elf32_Shdr *sechdrs = file + hdr->e_shoff; -+ const char *secnames; -+ unsigned int i; -+ -+ /* Too short? */ -+ if (size < sizeof(*hdr)) -+ return NULL; -+ if (size < hdr->e_shoff + hdr->e_shnum * sizeof(sechdrs[0])) -+ return NULL; -+ if (size < sechdrs[hdr->e_shstrndx].sh_offset) -+ return NULL; -+ -+ secnames = file + sechdrs[hdr->e_shstrndx].sh_offset; -+ for (i = 1; i < hdr->e_shnum; i++) -+ if (strcmp(secnames + sechdrs[i].sh_name, name) == 0) { -+ *secsize = sechdrs[i].sh_size; -+ return file + sechdrs[i].sh_offset; -+ } -+ return NULL; -+} -+ -+static void *get_section64(void *file, -+ unsigned long size, -+ const char *name, -+ unsigned long *secsize) -+{ -+ Elf64_Ehdr *hdr = file; -+ Elf64_Shdr *sechdrs = file + hdr->e_shoff; -+ const char *secnames; -+ unsigned int i; -+ -+ /* Too short? */ -+ if (size < sizeof(*hdr)) -+ return NULL; -+ if (size < hdr->e_shoff + hdr->e_shnum * sizeof(sechdrs[0])) -+ return NULL; -+ if (size < sechdrs[hdr->e_shstrndx].sh_offset) -+ return NULL; -+ -+ secnames = file + sechdrs[hdr->e_shstrndx].sh_offset; -+ for (i = 1; i < hdr->e_shnum; i++) -+ if (strcmp(secnames + sechdrs[i].sh_name, name) == 0) { -+ *secsize = sechdrs[i].sh_size; -+ return file + sechdrs[i].sh_offset; -+ } -+ return NULL; -+} -+ -+static int elf_ident(void *mod, unsigned long size) -+{ -+ /* "\177ELF" <byte> where byte = 001 for 32-bit, 002 for 64 */ -+ char *ident = mod; -+ -+ if (size < EI_CLASS || memcmp(mod, ELFMAG, SELFMAG) != 0) -+ return ELFCLASSNONE; -+ return ident[EI_CLASS]; -+} -+ -+static void *get_section(void *file, -+ unsigned long size, -+ const char *name, -+ unsigned long *secsize) -+{ -+ switch (elf_ident(file, size)) { -+ case ELFCLASS32: -+ return get_section32(file, size, name, secsize); -+ case ELFCLASS64: -+ return get_section64(file, size, name, secsize); -+ default: -+ return NULL; -+ } -+} -+ -+static void rename_module(struct module *module, -+ void *mod, -+ unsigned long len, -+ const char *newname) -+{ -+ void *modstruct; -+ unsigned long modstruct_len; -+ -+ /* Old-style */ -+ modstruct = get_section(mod, len, ".gnu.linkonce.this_module", -+ &modstruct_len); -+ /* New-style */ -+ if (!modstruct) -+ modstruct = get_section(mod, len, "__module", &modstruct_len); -+ if (!modstruct) -+ warn("Could not find module name to change in %s\n", -+ module->filename); -+ else -+ replace_modname(module, modstruct, modstruct_len, -+ module->modname, newname); -+} -+ -+/* Kernel told to ignore these sections if SHF_ALLOC not set. */ -+static void invalidate_section32(void *mod, const char *secname) -+{ -+ Elf32_Ehdr *hdr = mod; -+ Elf32_Shdr *sechdrs = mod + hdr->e_shoff; -+ const char *secnames = mod + sechdrs[hdr->e_shstrndx].sh_offset; -+ unsigned int i; -+ -+ for (i = 1; i < hdr->e_shnum; i++) -+ if (strcmp(secnames+sechdrs[i].sh_name, secname) == 0) -+ sechdrs[i].sh_flags &= ~SHF_ALLOC; -+} -+ -+static void invalidate_section64(void *mod, const char *secname) -+{ -+ Elf64_Ehdr *hdr = mod; -+ Elf64_Shdr *sechdrs = mod + hdr->e_shoff; -+ const char *secnames = mod + sechdrs[hdr->e_shstrndx].sh_offset; -+ unsigned int i; -+ -+ for (i = 1; i < hdr->e_shnum; i++) -+ if (strcmp(secnames+sechdrs[i].sh_name, secname) == 0) -+ sechdrs[i].sh_flags &= ~(unsigned long long)SHF_ALLOC; -+} -+ -+static void strip_section(struct module *module, -+ void *mod, -+ unsigned long len, -+ const char *secname) -+{ -+ switch (elf_ident(mod, len)) { -+ case ELFCLASS32: -+ invalidate_section32(mod, secname); -+ break; -+ case ELFCLASS64: -+ invalidate_section64(mod, secname); -+ break; -+ default: -+ warn("Unknown module format in %s: not forcing version\n", -+ module->filename); -+ } -+} -+ -+static const char *next_string(const char *string, unsigned long *secsize) -+{ -+ /* Skip non-zero chars */ -+ while (string[0]) { -+ string++; -+ if ((*secsize)-- <= 1) -+ return NULL; -+ } -+ -+ /* Skip any zero padding. */ -+ while (!string[0]) { -+ string++; -+ if ((*secsize)-- <= 1) -+ return NULL; -+ } -+ return string; -+} -+ -+static void clear_magic(struct module *module, void *mod, unsigned long len) -+{ -+ const char *p; -+ unsigned long modlen; -+ -+ /* Old-style: __vermagic section */ -+ strip_section(module, mod, len, "__vermagic"); -+ -+ /* New-style: in .modinfo section */ -+ for (p = get_section(mod, len, ".modinfo", &modlen); -+ p; -+ p = next_string(p, &modlen)) { -+ if (strncmp(p, "vermagic=", strlen("vermagic=")) == 0) { -+ memset((char *)p, 0, strlen(p)); -+ return; -+ } -+ } -+} -+ -+struct module_options -+{ -+ struct module_options *next; -+ char *modulename; -+ char *options; -+}; -+ -+struct module_command -+{ -+ struct module_command *next; -+ char *modulename; -+ char *command; -+}; -+ -+struct module_alias -+{ -+ struct module_alias *next; -+ char *module; -+}; -+ -+struct module_blacklist -+{ -+ struct module_blacklist *next; -+ char *modulename; -+}; -+ -+/* Link in a new option line from the config file. */ -+static struct module_options * -+add_options(const char *modname, -+ const char *option, -+ struct module_options *options) -+{ -+ struct module_options *new; -+ char *tab; -+ -+ new = NOFAIL(malloc(sizeof(*new))); -+ new->modulename = NOFAIL(strdup(modname)); -+ new->options = NOFAIL(strdup(option)); -+ /* We can handle tabs, kernel can't. */ -+ for (tab = strchr(new->options, '\t'); tab; tab = strchr(tab, '\t')) -+ *tab = ' '; -+ new->next = options; -+ return new; -+} -+ -+/* Link in a new install line from the config file. */ -+static struct module_command * -+add_command(const char *modname, -+ const char *command, -+ struct module_command *commands) -+{ -+ struct module_command *new; -+ -+ new = NOFAIL(malloc(sizeof(*new))); -+ new->modulename = NOFAIL(strdup(modname)); -+ new->command = NOFAIL(strdup(command)); -+ new->next = commands; -+ return new; -+} -+ -+/* Link in a new alias line from the config file. */ -+static struct module_alias * -+add_alias(const char *modname, struct module_alias *aliases) -+{ -+ struct module_alias *new; -+ -+ new = NOFAIL(malloc(sizeof(*new))); -+ new->module = NOFAIL(strdup(modname)); -+ new->next = aliases; -+ return new; -+} -+ -+/* Link in a new blacklist line from the config file. */ -+static struct module_blacklist * -+add_blacklist(const char *modname, struct module_blacklist *blacklist) -+{ -+ struct module_blacklist *new; -+ -+ new = NOFAIL(malloc(sizeof(*new))); -+ new->modulename = NOFAIL(strdup(modname)); -+ new->next = blacklist; -+ return new; -+} -+ -+/* Find blacklist commands if any. */ -+static int -+find_blacklist(const char *modname, const struct module_blacklist *blacklist) -+{ -+ while (blacklist) { -+ if (strcmp(blacklist->modulename, modname) == 0) -+ return 1; -+ blacklist = blacklist->next; -+ } -+ return 0; -+} -+ -+/* return a new alias list, with backlisted elems filtered out */ -+static struct module_alias * -+apply_blacklist(const struct module_alias *aliases, -+ const struct module_blacklist *blacklist) -+{ -+ struct module_alias *result = NULL; -+ while (aliases) { -+ char *modname = aliases->module; -+ if (!find_blacklist(modname, blacklist)) -+ result = add_alias(modname, result); -+ aliases = aliases->next; -+ } -+ return result; -+} -+ -+/* Find install commands if any. */ -+static const char *find_command(const char *modname, -+ const struct module_command *commands) -+{ -+ while (commands) { -+ if (fnmatch(commands->modulename, modname, 0) == 0) -+ return commands->command; -+ commands = commands->next; -+ } -+ return NULL; -+} -+ -+static char *append_option(char *options, const char *newoption) -+{ -+ options = NOFAIL(realloc(options, strlen(options) + 1 -+ + strlen(newoption) + 1)); -+ if (strlen(options)) strcat(options, " "); -+ strcat(options, newoption); -+ return options; -+} -+ -+/* Add to options */ -+static char *add_extra_options(const char *modname, -+ char *optstring, -+ const struct module_options *options) -+{ -+ while (options) { -+ if (strcmp(options->modulename, modname) == 0) -+ optstring = append_option(optstring, options->options); -+ options = options->next; -+ } -+ return optstring; -+} -+ -+/* If we don't flush, then child processes print before we do */ -+static void verbose_printf(int verbose, const char *fmt, ...) -+{ -+ va_list arglist; -+ -+ if (verbose) { -+ va_start(arglist, fmt); -+ vprintf(fmt, arglist); -+ fflush(stdout); -+ va_end(arglist); -+ } -+} -+ -+/* Do an install/remove command: replace $CMDLINE_OPTS if it's specified. */ -+static void do_command(const char *modname, -+ const char *command, -+ int verbose, int dry_run, -+ errfn_t error, -+ const char *type, -+ const char *cmdline_opts) -+{ -+ int ret; -+ char *p, *replaced_cmd = NOFAIL(strdup(command)); -+ -+ while ((p = strstr(replaced_cmd, "$CMDLINE_OPTS")) != NULL) { -+ char *new; -+ asprintf(&new, "%.*s%s%s", -+ p - replaced_cmd, replaced_cmd, cmdline_opts, -+ p + strlen("$CMDLINE_OPTS")); -+ NOFAIL(new); -+ free(replaced_cmd); -+ replaced_cmd = new; -+ } -+ -+ verbose_printf(verbose, "%s %s\n", type, replaced_cmd); -+ if (dry_run) -+ return; -+ -+ setenv("MODPROBE_MODULE", modname, 1); -+ ret = system(replaced_cmd); -+ if (ret == -1 || WEXITSTATUS(ret)) -+ error("Error running %s command for %s\n", type, modname); -+ free(replaced_cmd); -+} -+ -+/* Actually do the insert. Frees second arg. */ -+static void insmod(struct list_head *list, -+ char *optstring, -+ const char *newname, -+ int first_time, -+ errfn_t error, -+ int dry_run, -+ int verbose, -+ const struct module_options *options, -+ const struct module_command *commands, -+ int ignore_commands, -+ int ignore_proc, -+ int strip_vermagic, -+ int strip_modversion, -+ const char *cmdline_opts) -+{ -+ int ret, fd; -+ unsigned long len; -+ void *map; -+ const char *command; -+ struct module *mod = list_entry(list->next, struct module, list); -+ -+ /* Take us off the list. */ -+ list_del(&mod->list); -+ -+ /* Do things we (or parent) depend on first, but don't die if -+ * they fail. */ -+ if (!list_empty(list)) { -+ insmod(list, NOFAIL(strdup("")), NULL, 0, warn, -+ dry_run, verbose, options, commands, 0, ignore_proc, -+ strip_vermagic, strip_modversion, cmdline_opts); -+ } -+ -+ /* Lock before we look, in case it's initializing. */ -+ fd = lock_file(mod->filename); -+ if (fd < 0) { -+ error("Could not open '%s': %s\n", -+ mod->filename, strerror(errno)); -+ goto out_optstring; -+ } -+ -+ /* Don't do ANYTHING if already in kernel. */ -+ if (!ignore_proc -+ && module_in_kernel(newname ?: mod->modname, NULL) == 1) { -+ if (first_time) -+ error("Module %s already in kernel.\n", -+ newname ?: mod->modname); -+ goto out_unlock; -+ } -+ -+ command = find_command(mod->modname, commands); -+ if (command && !ignore_commands) { -+ /* It might recurse: unlock. */ -+ unlock_file(fd); -+ do_command(mod->modname, command, verbose, dry_run, error, -+ "install", cmdline_opts); -+ goto out_optstring; -+ } -+ -+ map = grab_fd(fd, &len); -+ if (!map) { -+ error("Could not read '%s': %s\n", -+ mod->filename, strerror(errno)); -+ goto out_unlock; -+ } -+ -+ /* Rename it? */ -+ if (newname) -+ rename_module(mod, map, len, newname); -+ -+ if (strip_modversion) -+ strip_section(mod, map, len, "__versions"); -+ if (strip_vermagic) -+ clear_magic(mod, map, len); -+ -+ /* Config file might have given more options */ -+ optstring = add_extra_options(mod->modname, optstring, options); -+ -+ verbose_printf(verbose, "insmod %s %s\n", mod->filename, optstring); -+ -+ if (dry_run) -+ goto out; -+ -+ ret = init_module(map, len, optstring); -+ if (ret != 0) { -+ if (errno == EEXIST) { -+ if (first_time) -+ error("Module %s already in kernel.\n", -+ newname ?: mod->modname); -+ goto out_unlock; -+ } -+ error("Error inserting %s (%s): %s\n", -+ mod->modname, mod->filename, insert_moderror(errno)); -+ } -+ out: -+ release_file(map, len); -+ out_unlock: -+ unlock_file(fd); -+ out_optstring: -+ free(optstring); -+ return; -+} -+ -+/* Do recursive removal. */ -+static void rmmod(struct list_head *list, -+ const char *name, -+ int first_time, -+ errfn_t error, -+ int dry_run, -+ int verbose, -+ struct module_command *commands, -+ int ignore_commands, -+ int ignore_inuse, -+ const char *cmdline_opts) -+{ -+ const char *command; -+ unsigned int usecount = 0; -+ int lock; -+ struct module *mod = list_entry(list->next, struct module, list); -+ -+ /* Take first one off the list. */ -+ list_del(&mod->list); -+ -+ /* Ignore failure; it's best effort here. */ -+ lock = lock_file(mod->filename); -+ -+ if (!name) -+ name = mod->modname; -+ -+ /* Even if renamed, find commands to orig. name. */ -+ command = find_command(mod->modname, commands); -+ if (command && !ignore_commands) { -+ /* It might recurse: unlock. */ -+ unlock_file(lock); -+ do_command(mod->modname, command, verbose, dry_run, error, -+ "remove", cmdline_opts); -+ goto remove_rest_no_unlock; -+ } -+ -+ if (module_in_kernel(name, &usecount) == 0) -+ goto nonexistent_module; -+ -+ if (usecount != 0) { -+ if (!ignore_inuse) -+ error("Module %s is in use.\n", name); -+ goto remove_rest; -+ } -+ -+ verbose_printf(verbose, "rmmod %s\n", mod->filename); -+ -+ if (dry_run) -+ goto remove_rest; -+ -+ if (delete_module(name, O_EXCL) != 0) { -+ if (errno == ENOENT) -+ goto nonexistent_module; -+ error("Error removing %s (%s): %s\n", -+ name, mod->filename, -+ remove_moderror(errno)); -+ } -+ -+ remove_rest: -+ unlock_file(lock); -+ remove_rest_no_unlock: -+ /* Now do things we depend. */ -+ if (!list_empty(list)) -+ rmmod(list, NULL, 0, warn, dry_run, verbose, commands, -+ 0, 1, cmdline_opts); -+ return; -+ -+nonexistent_module: -+ if (first_time) -+ fatal("Module %s is not in kernel.\n", mod->modname); -+ goto remove_rest; -+} -+ -+/* Does path contain directory(s) subpath? */ -+static int type_matches(const char *path, const char *subpath) -+{ -+ char *subpath_with_slashes; -+ int ret; -+ -+ asprintf(&subpath_with_slashes, "/%s/", subpath); -+ NOFAIL(subpath_with_slashes); -+ -+ ret = (strstr(path, subpath_with_slashes) != NULL); -+ free(subpath_with_slashes); -+ return ret; -+} -+ -+static char *underscores(char *string) -+{ -+ if (string) { -+ unsigned int i; -+ for (i = 0; string[i]; i++) -+ if (string[i] == '-') -+ string[i] = '_'; -+ } -+ return string; -+} -+ -+static int do_wildcard(const char *dirname, -+ const char *type, -+ const char *wildcard) -+{ -+ char modules_dep_name[strlen(dirname) + sizeof("modules.dep") + 1]; -+ char *line, *wcard; -+ FILE *modules_dep; -+ -+ /* Canonicalize wildcard */ -+ wcard = strdup(wildcard); -+ underscores(wcard); -+ -+ sprintf(modules_dep_name, "%s/%s", dirname, "modules.dep"); -+ modules_dep = fopen(modules_dep_name, "r"); -+ if (!modules_dep) -+ fatal("Could not load %s: %s\n", -+ modules_dep_name, strerror(errno)); -+ -+ while ((line = getline_wrapped(modules_dep, NULL)) != NULL) { -+ char *ptr; -+ -+ /* Ignore lines without : or which start with a # */ -+ ptr = strchr(line, ':'); -+ if (ptr == NULL || line[strspn(line, "\t ")] == '#') -+ goto next; -+ *ptr = '\0'; -+ -+ /* "type" must match complete directory component(s). */ -+ if (!type || type_matches(line, type)) { -+ char modname[strlen(line)+1]; -+ -+ filename2modname(modname, line); -+ if (fnmatch(wcard, modname, 0) == 0) -+ printf("%s\n", line); -+ } -+ next: -+ free(line); -+ } -+ -+ free(wcard); -+ return 0; -+} -+ -+static char *strsep_skipspace(char **string, char *delim) -+{ -+ if (!*string) -+ return NULL; -+ *string += strspn(*string, delim); -+ return strsep(string, delim); -+} -+ -+/* Recursion */ -+static int read_config(const char *filename, -+ const char *name, -+ int dump_only, -+ int removing, -+ struct module_options **options, -+ struct module_command **commands, -+ struct module_alias **alias, -+ struct module_blacklist **blacklist); -+ -+/* FIXME: Maybe should be extended to "alias a b [and|or c]...". --RR */ -+static int read_config_file(const char *filename, -+ const char *name, -+ int dump_only, -+ int removing, -+ struct module_options **options, -+ struct module_command **commands, -+ struct module_alias **aliases, -+ struct module_blacklist **blacklist) -+{ -+ char *line; -+ unsigned int linenum = 0; -+ FILE *cfile; -+ -+ cfile = fopen(filename, "r"); -+ if (!cfile) -+ return 0; -+ -+ while ((line = getline_wrapped(cfile, &linenum)) != NULL) { -+ char *ptr = line; -+ char *cmd, *modname; -+ -+ if (dump_only) -+ printf("%s\n", line); -+ -+ cmd = strsep_skipspace(&ptr, "\t "); -+ if (cmd == NULL || cmd[0] == '#' || cmd[0] == '\0') -+ continue; -+ -+ if (strcmp(cmd, "alias") == 0) { -+ char *wildcard -+ = underscores(strsep_skipspace(&ptr, "\t ")); -+ char *realname -+ = underscores(strsep_skipspace(&ptr, "\t ")); -+ -+ if (!wildcard || !realname) -+ grammar(cmd, filename, linenum); -+ else if (fnmatch(wildcard,name,0) == 0) -+ *aliases = add_alias(realname, *aliases); -+ } else if (strcmp(cmd, "include") == 0) { -+ struct module_alias *newalias = NULL; -+ char *newfilename; -+ -+ newfilename = strsep_skipspace(&ptr, "\t "); -+ if (!newfilename) -+ grammar(cmd, filename, linenum); -+ else { -+ if (!read_config(newfilename, name, -+ dump_only, removing, -+ options, commands, &newalias, -+ blacklist)) -+ warn("Failed to open included" -+ " config file %s: %s\n", -+ newfilename, strerror(errno)); -+ -+ /* Files included override aliases, -+ etc that was already set ... */ -+ if (newalias) -+ *aliases = newalias; -+ } -+ } else if (strcmp(cmd, "options") == 0) { -+ modname = strsep_skipspace(&ptr, "\t "); -+ if (!modname || !ptr) -+ grammar(cmd, filename, linenum); -+ else { -+ ptr += strspn(ptr, "\t "); -+ *options = add_options(underscores(modname), -+ ptr, *options); -+ } -+ } else if (strcmp(cmd, "install") == 0) { -+ modname = strsep_skipspace(&ptr, "\t "); -+ if (!modname || !ptr) -+ grammar(cmd, filename, linenum); -+ else if (!removing) { -+ ptr += strspn(ptr, "\t "); -+ *commands = add_command(underscores(modname), -+ ptr, *commands); -+ } -+ } else if (strcmp(cmd, "blacklist") == 0) { -+ modname = strsep_skipspace(&ptr, "\t "); -+ if (!modname) -+ grammar(cmd, filename, linenum); -+ else if (!removing) { -+ *blacklist = add_blacklist(underscores(modname), -+ *blacklist); -+ } -+ } else if (strcmp(cmd, "remove") == 0) { -+ modname = strsep_skipspace(&ptr, "\t "); -+ if (!modname || !ptr) -+ grammar(cmd, filename, linenum); -+ else if (removing) { -+ ptr += strspn(ptr, "\t "); -+ *commands = add_command(underscores(modname), -+ ptr, *commands); -+ } -+ } else -+ grammar(cmd, filename, linenum); -+ -+ free(line); -+ } -+ fclose(cfile); -+ return 1; -+} -+ -+/* Simple format, ignore lines starting with #, one command per line. -+ Returns true or false. */ -+static int read_config(const char *filename, -+ const char *name, -+ int dump_only, -+ int removing, -+ struct module_options **options, -+ struct module_command **commands, -+ struct module_alias **aliases, -+ struct module_blacklist **blacklist) -+{ -+ DIR *dir; -+ int ret = 0; -+ -+ /* ignore everything in this directory */ -+ if (streq(filename, "/etc/modprobe.d/arch")) -+ return 1; -+ -+ /* Reiser4 has file/directory duality: treat it as both. */ -+ dir = opendir(filename); -+ if (dir) { -+ struct dirent *i; -+ while ((i = readdir(dir)) != NULL) { -+ if (!streq(i->d_name,".") && !streq(i->d_name,"..")) { -+ char sub[strlen(filename) + 1 -+ + strlen(i->d_name) + 1]; -+ -+ sprintf(sub, "%s/%s", filename, i->d_name); -+ if (!read_config(sub, name, -+ dump_only, removing, options, -+ commands, aliases, blacklist)) -+ warn("Failed to open" -+ " config file %s: %s\n", -+ sub, strerror(errno)); -+ } -+ } -+ closedir(dir); -+ ret = 1; -+ } -+ -+ if (read_config_file(filename, name, dump_only, removing, -+ options, commands, aliases, blacklist)) -+ ret = 1; -+ -+ return ret; -+} -+ -+static const char *default_configs[] = -+{ -+ "/etc/modprobe.conf", -+ "/etc/modprobe.d", -+}; -+ -+static void read_toplevel_config(const char *filename, -+ const char *name, -+ int dump_only, -+ int removing, -+ struct module_options **options, -+ struct module_command **commands, -+ struct module_alias **aliases, -+ struct module_blacklist **blacklist) -+{ -+ unsigned int i; -+ -+ if (filename) { -+ if (!read_config(filename, name, dump_only, removing, -+ options, commands, aliases, blacklist)) -+ fatal("Failed to open config file %s: %s\n", -+ filename, strerror(errno)); -+ return; -+ } -+ -+ /* Try defaults. */ -+ for (i = 0; i < ARRAY_SIZE(default_configs); i++) { -+ if (read_config(default_configs[i], name, dump_only, removing, -+ options, commands, aliases, blacklist)) -+ return; -+ } -+} -+ -+static void add_to_env_var(const char *option) -+{ -+ const char *oldenv; -+ -+ if ((oldenv = getenv("MODPROBE_OPTIONS")) != NULL) { -+ char *newenv; -+ asprintf(&newenv, "%s %s", oldenv, option); -+ setenv("MODPROBE_OPTIONS", newenv, 1); -+ } else -+ setenv("MODPROBE_OPTIONS", option, 1); -+} -+ -+/* Prepend options from environment. */ -+static char **merge_args(char *args, char *argv[], int *argc) -+{ -+ char *arg, *argstring; -+ char **newargs = NULL; -+ unsigned int i, num_env = 0; -+ -+ if (!args) -+ return argv; -+ -+ argstring = NOFAIL(strdup(args)); -+ for (arg = strtok(argstring, " "); arg; arg = strtok(NULL, " ")) { -+ num_env++; -+ newargs = NOFAIL(realloc(newargs, -+ sizeof(newargs[0]) -+ * (num_env + *argc + 1))); -+ newargs[num_env] = arg; -+ } -+ -+ /* Append commandline args */ -+ newargs[0] = argv[0]; -+ for (i = 1; i <= *argc; i++) -+ newargs[num_env+i] = argv[i]; -+ -+ *argc += num_env; -+ return newargs; -+} -+ -+static char *gather_options(char *argv[]) -+{ -+ char *optstring = NOFAIL(strdup("")); -+ -+ /* Rest is module options */ -+ while (*argv) { -+ /* Quote value if it contains spaces. */ -+ unsigned int eq = strcspn(*argv, "="); -+ -+ if (strchr(*argv+eq, ' ') && !strchr(*argv, '"')) { -+ char quoted[strlen(*argv) + 3]; -+ (*argv)[eq] = '\0'; -+ sprintf(quoted, "%s=\"%s\"", *argv, *argv+eq+1); -+ optstring = append_option(optstring, quoted); -+ } else -+ optstring = append_option(optstring, *argv); -+ argv++; -+ } -+ return optstring; -+} -+ -+static void handle_module(const char *modname, -+ struct list_head *todo_list, -+ const char *newname, -+ int remove, -+ char *options, -+ int first_time, -+ errfn_t error, -+ int dry_run, -+ int verbose, -+ struct module_options *modoptions, -+ struct module_command *commands, -+ int ignore_commands, -+ int ignore_proc, -+ int strip_vermagic, -+ int strip_modversion, -+ int unknown_silent, -+ const char *cmdline_opts) -+{ -+ if (list_empty(todo_list)) { -+ const char *command; -+ -+ /* The dependencies have to be real modules, but -+ handle case where the first is completely bogus. */ -+ command = find_command(modname, commands); -+ if (command && !ignore_commands) { -+ do_command(modname, command, verbose, dry_run, error, -+ remove ? "remove":"install", cmdline_opts); -+ return; -+ } -+ -+ if (unknown_silent) -+ exit(1); -+ error("Module %s not found.\n", modname); -+ return; -+ } -+ -+ if (remove) -+ rmmod(todo_list, newname, first_time, error, dry_run, verbose, -+ commands, ignore_commands, 0, cmdline_opts); -+ else -+ insmod(todo_list, NOFAIL(strdup(options)), newname, -+ first_time, error, dry_run, verbose, modoptions, -+ commands, ignore_commands, ignore_proc, strip_vermagic, -+ strip_modversion, cmdline_opts); -+} -+ -+static struct option options[] = { { "verbose", 0, NULL, 'v' }, -+ { "version", 0, NULL, 'V' }, -+ { "config", 1, NULL, 'C' }, -+ { "name", 1, NULL, 'o' }, -+ { "remove", 0, NULL, 'r' }, -+ { "showconfig", 0, NULL, 'c' }, -+ { "autoclean", 0, NULL, 'k' }, -+ { "quiet", 0, NULL, 'q' }, -+ { "show", 0, NULL, 'n' }, -+ { "dry-run", 0, NULL, 'n' }, -+ { "syslog", 0, NULL, 's' }, -+ { "type", 1, NULL, 't' }, -+ { "list", 0, NULL, 'l' }, -+ { "all", 0, NULL, 'a' }, -+ { "ignore-install", 0, NULL, 'i' }, -+ { "ignore-remove", 0, NULL, 'i' }, -+ { "force", 0, NULL, 'f' }, -+ { "force-vermagic", 0, NULL, 1 }, -+ { "force-modversion", 0, NULL, 2 }, -+ { "set-version", 1, NULL, 'S' }, -+ { "show-depends", 0, NULL, 'D' }, -+ { "first-time", 0, NULL, 3 }, -+ { "use-blacklist", 0, NULL, 'b' }, -+ { NULL, 0, NULL, 0 } }; -+ -+#define MODPROBE_DEVFSD_CONF "/etc/modprobe.devfs" -+ -+/* This is a horrible hack to allow devfsd, which calls modprobe with -+ -C /etc/modules.conf or /etc/modules.devfs, to work. FIXME. */ -+/* Modern devfsd or variants should use -q explicitly in 2.6. */ -+static int is_devfs_call(char *argv[]) -+{ -+ unsigned int i; -+ -+ /* Look for "/dev" arg */ -+ for (i = 1; argv[i]; i++) { -+ if (strncmp(argv[i], "/dev/", 5) == 0) -+ return 1; -+ } -+ return 0; -+} -+ -+int main(int argc, char *argv[]) -+{ -+ struct utsname buf; -+ struct stat statbuf; -+ int opt; -+ int dump_only = 0; -+ int dry_run = 0; -+ int remove = 0; -+ int verbose = 0; -+ int unknown_silent = 0; -+ int list_only = 0; -+ int all = 0; -+ int ignore_commands = 0; -+ int strip_vermagic = 0; -+ int strip_modversion = 0; -+ int ignore_proc = 0; -+ int first_time = 0; -+ int use_blacklist = 0; -+ unsigned int i, num_modules; -+ char *type = NULL; -+ const char *config = NULL; -+ char *dirname, *optstring; -+ char *newname = NULL; -+ char *aliasfilename, *symfilename; -+ errfn_t error = fatal; -+ -+ /* Prepend options from environment. */ -+ argv = merge_args(getenv("MODPROBE_OPTIONS"), argv, &argc); -+ -+ /* --set-version overrides version, and disables backwards compat. */ -+ for (opt = 1; opt < argc; opt++) -+ if (strncmp(argv[opt],"--set-version",strlen("--set-version")) -+ == 0) -+ break; -+ -+ if (opt == argc) -+ try_old_version("modprobe", argv); -+ -+ uname(&buf); -+ while ((opt = getopt_long(argc, argv, "vVC:o:rknqQsclt:aifb", options, NULL)) != -1){ -+ switch (opt) { -+ case 'v': -+ add_to_env_var("-v"); -+ verbose = 1; -+ break; -+ case 'V': -+ puts("module-init-tools version 3.2.2"); -+ exit(0); -+ case 'S': -+ strncpy(buf.release, optarg, sizeof(buf.release)); -+ buf.release[sizeof(buf.release)-1] = '\0'; -+ break; -+ case 'C': -+ if (is_devfs_call(argv)) { -+ if (streq("/etc/modules.devfs", optarg)) { -+ config = MODPROBE_DEVFSD_CONF; -+ add_to_env_var("-C"); -+ add_to_env_var(config); -+ /* Fall thru to -q */ -+ } else if (streq("/etc/modules.conf", optarg)) -+ /* Ignore config, fall thru to -q */ -+ ; -+ else { -+ /* False alarm. Treat as normal. */ -+ config = optarg; -+ add_to_env_var("-C"); -+ add_to_env_var(config); -+ break; -+ } -+ } else { -+ config = optarg; -+ add_to_env_var("-C"); -+ add_to_env_var(config); -+ break; -+ } -+ case 'q': -+ unknown_silent = 1; -+ add_to_env_var("-q"); -+ break; -+ case 'D': -+ dry_run = 1; -+ ignore_proc = 1; -+ verbose = 1; -+ add_to_env_var("-D"); -+ break; -+ case 'o': -+ newname = optarg; -+ break; -+ case 'r': -+ remove = 1; -+ break; -+ case 'c': -+ dump_only = 1; -+ break; -+ case 't': -+ type = optarg; -+ break; -+ case 'l': -+ list_only = 1; -+ break; -+ case 'a': -+ all = 1; -+ error = warn; -+ break; -+ case 'k': -+ /* FIXME: This should actually do something */ -+ break; -+ case 'n': -+ dry_run = 1; -+ break; -+ case 's': -+ add_to_env_var("-s"); -+ log = 1; -+ break; -+ case 'i': -+ ignore_commands = 1; -+ break; -+ case 'f': -+ strip_vermagic = 1; -+ strip_modversion = 1; -+ break; -+ case 'b': -+ use_blacklist = 1; -+ break; -+ case 1: -+ strip_vermagic = 1; -+ break; -+ case 2: -+ strip_modversion = 1; -+ break; -+ case 3: -+ first_time = 1; -+ break; -+ default: -+ print_usage(argv[0]); -+ } -+ } -+ -+ /* If stderr not open, go to syslog */ -+ if (log || fstat(STDERR_FILENO, &statbuf) != 0) { -+ openlog("modprobe", LOG_CONS, LOG_DAEMON); -+ log = 1; -+ } -+ -+ if (argc < optind + 1 && !dump_only && !list_only && !remove) -+ print_usage(argv[0]); -+ -+ dirname = NOFAIL(malloc(strlen(buf.release) + sizeof(MODULE_DIR) + 1)); -+ sprintf(dirname, "%s/%s", MODULE_DIR, buf.release); -+ aliasfilename = NOFAIL(malloc(strlen(dirname) -+ + sizeof("/modules.alias"))); -+ sprintf(aliasfilename, "%s/modules.alias", dirname); -+ symfilename = NOFAIL(malloc(strlen(dirname) -+ + sizeof("/modules.symbols"))); -+ sprintf(symfilename, "%s/modules.symbols", dirname); -+ -+ /* Old-style -t xxx wildcard? Only with -l. */ -+ if (list_only) { -+ if (optind+1 < argc) -+ fatal("Can't have multiple wildcards\n"); -+ /* fprintf(stderr, "man find\n"); return 1; */ -+ return do_wildcard(dirname, type, argv[optind]?:"*"); -+ } -+ if (type) -+ fatal("-t only supported with -l"); -+ -+ if (dump_only) { -+ struct module_command *commands = NULL; -+ struct module_options *modoptions = NULL; -+ struct module_alias *aliases = NULL; -+ struct module_blacklist *blacklist = NULL; -+ -+ read_toplevel_config(config, "", 1, 0, -+ &modoptions, &commands, &aliases, &blacklist); -+ read_config(aliasfilename, "", 1, 0,&modoptions, &commands, -+ &aliases, &blacklist); -+ read_config(symfilename, "", 1, 0, &modoptions, &commands, -+ &aliases, &blacklist); -+ exit(0); -+ } -+ -+ if (remove || all) { -+ num_modules = argc - optind; -+ optstring = NOFAIL(strdup("")); -+ } else { -+ num_modules = 1; -+ optstring = gather_options(argv+optind+1); -+ } -+ -+ /* num_modules is always 1 except for -r or -a. */ -+ for (i = 0; i < num_modules; i++) { -+ struct module_command *commands = NULL; -+ struct module_options *modoptions = NULL; -+ struct module_alias *aliases = NULL; -+ struct module_blacklist *blacklist = NULL; -+ LIST_HEAD(list); -+ char *modulearg = argv[optind + i]; -+ -+ /* Convert name we are looking for */ -+ underscores(modulearg); -+ -+ /* Returns the resolved alias, options */ -+ read_toplevel_config(config, modulearg, 0, -+ remove, &modoptions, &commands, &aliases, &blacklist); -+ -+ /* No luck? Try symbol names, if starts with symbol:. */ -+ if (!aliases -+ && strncmp(modulearg, "symbol:", strlen("symbol:")) == 0) -+ read_config(symfilename, modulearg, 0, -+ remove, &modoptions, &commands, -+ &aliases, &blacklist); -+ -+ if (!aliases) { -+ /* We only use canned aliases as last resort. */ -+ read_depends(dirname, modulearg, &list); -+ -+ if (list_empty(&list) -+ && !find_command(modulearg, commands)) -+ { -+ read_config(aliasfilename, modulearg, 0, -+ remove, &modoptions, &commands, -+ &aliases, &blacklist); -+ aliases = apply_blacklist(aliases, blacklist); -+ } -+ } -+ -+ if (aliases) { -+ errfn_t err = error; -+ -+ /* More than one alias? Don't bail out on failure. */ -+ if (aliases->next) -+ err = warn; -+ while (aliases) { -+ /* Add the options for this alias. */ -+ char *opts = NOFAIL(strdup(optstring)); -+ opts = add_extra_options(modulearg, -+ opts, modoptions); -+ -+ read_depends(dirname, aliases->module, &list); -+ handle_module(aliases->module, &list, newname, -+ remove, opts, first_time, err, -+ dry_run, verbose, modoptions, -+ commands, ignore_commands, -+ ignore_proc, strip_vermagic, -+ strip_modversion, -+ unknown_silent, -+ optstring); -+ -+ aliases = aliases->next; -+ INIT_LIST_HEAD(&list); -+ } -+ } else { -+ if (use_blacklist -+ && find_blacklist(modulearg, blacklist)) -+ continue; -+ -+ handle_module(modulearg, &list, newname, remove, -+ optstring, first_time, error, dry_run, -+ verbose, modoptions, commands, -+ ignore_commands, ignore_proc, -+ strip_vermagic, strip_modversion, -+ unknown_silent, optstring); -+ } -+ } -+ if (log) -+ closelog(); -+ -+ return 0; -+} diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/staging.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/staging.patch deleted file mode 100644 index cedd5e6..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/staging.patch +++ /dev/null @@ -1,153 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id eefb99a313bbcc8f34c8b32bf0c5aa2dd2580735 -Signed-off-by: Thomas Kunze <thommycheck@gmx.de> - -Minor edits following upstream changes -Signed-off-by: Andrea Adami <andrea.adami@gmail.com> - -Index: klibc-1.5.24/Makefile -=================================================================== ---- a/Makefile 2011-07-27 15:50:53.000000000 +0200 -+++ b/Makefile 2011-08-01 00:47:56.000000000 +0200 -@@ -39,7 +39,7 @@ - export PERL := perl - - # Location for installation --export prefix = /usr -+export prefix = $(INST) - export bindir = $(prefix)/bin - export libdir = $(prefix)/lib - export mandir = $(prefix)/man - -Index: klibc-1.5.24/scripts/Kbuild.install -=================================================================== ---- a/scripts/Kbuild.install 2011-07-27 15:50:53.000000000 +0200 -+++ b/scripts/Kbuild.install 2011-08-01 00:03:03.000000000 +0200 -@@ -88,16 +88,12 @@ - header: - $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)" - $(Q)mkdir -p $(INSTALLROOT)$(bindir) -- $(Q)mkdir -p $(INSTALLROOT)$(mandir)/man1 -- $(Q)mkdir -p $(INSTALLROOT)$(SHLIBDIR) - $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR) - $(Q)-rm -rf $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include - $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include - $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)lib -- $(Q)mkdir -p $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)bin - $(Q)$(MAKE) -C $(KLIBCKERNELSRC) ARCH=$(KLIBCARCH) INSTALL_HDR_PATH=$(INSTALLROOT)$(INSTALLDIR)/$(KCROSS) headers_install - $(Q)cp -rf usr/include/. $(INSTALLROOT)$(INSTALLDIR)/$(KCROSS)include/. -- $(Q)$(install-data) $(srctree)/klcc/klcc.1 $(INSTALLROOT)$(mandir)/man1/$(KCROSS)klcc.1 - $(Q)$(install-bin) $(objtree)/klcc/$(KCROSS)klcc $(INSTALLROOT)$(bindir) - - footer: header - -Index: klibc-1.5.24/usr/dash/Kbuild -=================================================================== ---- a/usr/dash/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/dash/Kbuild 2011-08-01 00:07:56.000000000 +0200 -@@ -92,5 +92,3 @@ - $(obj)/syntax.h: $(obj)/syntax.c - $(Q): - --# Targets to install --install-y := sh.shared - -Index: klibc-1.5.24/usr/gzip/Kbuild -=================================================================== ---- a/usr/gzip/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/gzip/Kbuild 2011-08-01 00:06:39.000000000 +0200 -@@ -21,5 +21,3 @@ - # Cleaning - targets := gzip gzip.g gunzip zcat - --# Targets to install --install-y := gzip gunzip zcat - -Index: klibc-1.5.24/usr/kinit/fstype/Kbuild -=================================================================== ---- a/usr/kinit/fstype/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/kinit/fstype/Kbuild 2011-08-01 00:09:12.000000000 +0200 -@@ -21,5 +21,3 @@ - # Cleaning - clean-dirs := static shared - --# install binary --install-y := $(shared-y) - -Index: klibc-1.5.24/usr/kinit/ipconfig/Kbuild -=================================================================== ---- a/usr/kinit/ipconfig/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/kinit/ipconfig/Kbuild 2011-08-01 00:10:52.000000000 +0200 -@@ -27,5 +27,3 @@ - # Cleaning - clean-dirs := static shared - --# install binary --install-y := $(shared-y) - -Index: klibc-1.5.24/usr/kinit/Kbuild -=================================================================== ---- a/usr/kinit/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/kinit/Kbuild 2011-08-01 00:20:18.000000000 +0200 -@@ -33,5 +33,3 @@ - subdir- := fstype ipconfig nfsmount resume run-init - - --# install binary --install-y := kinit kinit.shared - -Index: klibc-1.5.24/usr/kinit/nfsmount/Kbuild -=================================================================== ---- a/usr/kinit/nfsmount/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/kinit/nfsmount/Kbuild 2011-08-01 00:12:52.000000000 +0200 -@@ -23,5 +23,3 @@ - - clean-dirs := static shared - --# Install binary --install-y := $(shared-y) - -Index: klibc-1.5.24/usr/kinit/resume/Kbuild -=================================================================== ---- a/usr/kinit/resume/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/kinit/resume/Kbuild 2011-08-01 00:13:51.000000000 +0200 -@@ -26,5 +26,3 @@ - # Cleaning - clean-dirs := static shared - --# install binary --install-y := $(shared-y) - -Index: klibc-1.5.24/usr/kinit/run-init/Kbuild -=================================================================== ---- a/usr/kinit/run-init/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/kinit/run-init/Kbuild 2011-08-01 00:14:41.000000000 +0200 -@@ -25,5 +25,3 @@ - # Cleaning - clean-dirs := static shared - --# install binary --install-y := $(shared-y) - -Index: klibc-1.5.24/usr/klibc/Kbuild -=================================================================== ---- a/usr/klibc/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/klibc/Kbuild 2011-08-01 00:18:11.000000000 +0200 -@@ -177,5 +177,3 @@ - $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib)) - $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \ - $(INSTALLROOT)$(INSTALLDIR)/$(KLIBCCROSS)lib -- $(Q)$(install-lib) $(obj)/klibc-$(SOLIBHASH).so \ -- $(INSTALLROOT)$(SHLIBDIR) - -Index: klibc-1.5.24/usr/utils/Kbuild -=================================================================== ---- a/usr/utils/Kbuild 2011-07-27 15:50:53.000000000 +0200 -+++ b/usr/utils/Kbuild 2011-08-01 00:19:13.000000000 +0200 -@@ -72,5 +72,3 @@ - # Clean deletes the static and shared dir - clean-dirs := static shared - --# install only install the shared binaries --install-y := $(shared-y) shared/reboot shared/poweroff diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch deleted file mode 100644 index eac128c..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/use-env-for-perl.patch +++ /dev/null @@ -1,25 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id 676cbb54d42c89a4832871064cfcb7ee2ad372ee - -klcc-cross: Add patch to use /usr/bin/env perl -Certain configurations (such as autobuilders) may build in very -deep paths (that are longer than the #! mechanism allows) which -makes it unsafe to use the direct path for perl. In our case we know -that /usr/bin/env perl will always return ours (if it has been built). - -Signed-off-by: Tom Rini <tom_rini@mentor.com> - -Index: klibc-1.5.20/klcc/makeklcc.pl -=================================================================== ---- a/klcc/makeklcc.pl -+++ b/klcc/makeklcc.pl -@@ -26,7 +26,7 @@ sub pathsearch($) { - return undef; - } - --print "#!${perlpath}\n"; -+print "#!/usr/bin/env perl\n"; - - open(KLIBCCONF, "< $klibcconf\0") - or die "$0: cannot open $klibcconf: $!\n"; diff --git a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/wc.patch b/meta-oe/recipes-devtools/klibc/klibc-1.5.25/wc.patch deleted file mode 100644 index 28705fd..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-1.5.25/wc.patch +++ /dev/null @@ -1,245 +0,0 @@ -Patch was imported from the OpenEmbedded git server -(git://git.openembedded.org/openembedded) -as of commit id acb6fa33fccf7196c86a3a28f927d4fa441d05eb - -klibc: add wc to tools - * for use with uniboot - -Signed-off-by: Thomas Kunze <thommycheck@gmx.de> - -diff --git a/usr/utils/Kbuild b/usr/utils/Kbuild -index a52ea61..7c8ccfb 100644 ---- a/usr/utils/Kbuild -+++ b/usr/utils/Kbuild -@@ -3,7 +3,7 @@ - # - - progs := chroot dd mkdir mkfifo mknod mount pivot_root umount --progs += true false sleep ln mv nuke minips cat ls losetup -+progs += true false sleep ln mv nuke minips cat ls losetup wc - progs += uname halt kill readlink cpio sync dmesg modprobe - - static-y := $(addprefix static/, $(progs)) -@@ -62,6 +62,8 @@ static/losetup-y := losetup.o - shared/losetup-y := losetup.o - static/modprobe-y := modprobe.o - shared/modprobe-y := modprobe.o -+static/wc-y := wc.o -+shared/wc-y := wc.o - - # Additionally linked targets - always := static/reboot static/poweroff shared/reboot shared/poweroff -diff --git a/usr/utils/wc.c b/usr/utils/wc.c -new file mode 100644 -index 0000000..f5059fc ---- /dev/null -+++ b/usr/utils/wc.c -@@ -0,0 +1,208 @@ -+/* vi: set sw=4 ts=4: */ -+/* -+ * wc implementation for busybox -+ * -+ * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> -+ * -+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. -+ */ -+ -+/* BB_AUDIT SUSv3 _NOT_ compliant -- option -m is not currently supported. */ -+/* http://www.opengroup.org/onlinepubs/007904975/utilities/wc.html */ -+ -+/* Mar 16, 2003 Manuel Novoa III (mjn3@codepoet.org) -+ * -+ * Rewritten to fix a number of problems and do some size optimizations. -+ * Problems in the previous busybox implementation (besides bloat) included: -+ * 1) broken 'wc -c' optimization (read note below) -+ * 2) broken handling of '-' args -+ * 3) no checking of ferror on EOF returns -+ * 4) isprint() wasn't considered when word counting. -+ * -+ * TODO: -+ * -+ * When locale support is enabled, count multibyte chars in the '-m' case. -+ * -+ * NOTES: -+ * -+ * The previous busybox wc attempted an optimization using stat for the -+ * case of counting chars only. I omitted that because it was broken. -+ * It didn't take into account the possibility of input coming from a -+ * pipe, or input from a file with file pointer not at the beginning. -+ * -+ * To implement such a speed optimization correctly, not only do you -+ * need the size, but also the file position. Note also that the -+ * file position may be past the end of file. Consider the example -+ * (adapted from example in gnu wc.c) -+ * -+ * echo hello > /tmp/testfile && -+ * (dd ibs=1k skip=1 count=0 &> /dev/null; wc -c) < /tmp/testfile -+ * -+ * for which 'wc -c' should output '0'. -+ */ -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+#include <unistd.h> -+#undef isspace -+#undef isprint -+#define isspace(c) ((((c) == ' ') || (((unsigned int)((c) - 9)) <= (13 - 9)))) -+#define isprint(c) (((unsigned int)((c) - 0x20)) <= (0x7e - 0x20)) -+#define isspace_given_isprint(c) ((c) == ' ') -+ -+#define COUNT_T unsigned long -+#define COUNT_FMT "u" -+#define optind 1 -+FILE *fopen_or_warn_stdin(const char *filename) -+{ -+ FILE *fp = stdin; -+ -+ if (filename[0]) { -+ fp = fopen(filename, "r"); -+ } -+ -+ return fp; -+} -+ -+enum { -+ WC_LINES = 0, -+ WC_WORDS = 1, -+ WC_CHARS = 2, -+ WC_LENGTH = 3 -+}; -+ -+int main(int argc, char **argv) -+{ -+ FILE *fp; -+ const char *s, *arg; -+ const char *start_fmt = "%9"COUNT_FMT; -+ const char *fname_fmt = " %s\n"; -+ COUNT_T *pcounts; -+ COUNT_T counts[4]; -+ COUNT_T totals[4]; -+ unsigned linepos; -+ unsigned u; -+ int num_files = 0; -+ int c; -+ signed char status = EXIT_SUCCESS; -+ signed char in_word; -+ unsigned print_type; -+ -+ print_type = getopt(argc, argv, "lwcL"); -+ -+ if (print_type == 0) { -+ print_type = (1 << WC_LINES) | (1 << WC_WORDS) | (1 << WC_CHARS); -+ } -+ -+ argv += optind; -+ if (!argv[0]) { -+ *--argv = (char *) "wc"; -+ fname_fmt = "\n"; -+ if (!((print_type-1) & print_type)) /* exactly one option? */ -+ start_fmt = "%"COUNT_FMT; -+ } -+ -+ memset(totals, 0, sizeof(totals)); -+ -+ pcounts = counts; -+ -+ while ((arg = *argv++) != 0) { -+ ++num_files; -+ fp = fopen_or_warn_stdin(arg); -+ if (!fp) { -+ status = EXIT_FAILURE; -+ continue; -+ } -+ -+ memset(counts, 0, sizeof(counts)); -+ linepos = 0; -+ in_word = 0; -+ -+ do { -+ /* Our -w doesn't match GNU wc exactly... oh well */ -+ -+ ++counts[WC_CHARS]; -+ c = getc(fp); -+ if (isprint(c)) { -+ ++linepos; -+ if (!isspace_given_isprint(c)) { -+ in_word = 1; -+ continue; -+ } -+ } else if (((unsigned int)(c - 9)) <= 4) { -+ /* \t 9 -+ * \n 10 -+ * \v 11 -+ * \f 12 -+ * \r 13 -+ */ -+ if (c == '\t') { -+ linepos = (linepos | 7) + 1; -+ } else { /* '\n', '\r', '\f', or '\v' */ -+ DO_EOF: -+ if (linepos > counts[WC_LENGTH]) { -+ counts[WC_LENGTH] = linepos; -+ } -+ if (c == '\n') { -+ ++counts[WC_LINES]; -+ } -+ if (c != '\v') { -+ linepos = 0; -+ } -+ } -+ } else if (c == EOF) { -+/* if (ferror(fp)) { -+ status = EXIT_FAILURE; -+ } -+*/ --counts[WC_CHARS]; -+ goto DO_EOF; /* Treat an EOF as '\r'. */ -+ } else { -+ continue; -+ } -+ -+ counts[WC_WORDS] += in_word; -+ in_word = 0; -+ if (c == EOF) { -+ break; -+ } -+ } while (1); -+ -+ if (totals[WC_LENGTH] < counts[WC_LENGTH]) { -+ totals[WC_LENGTH] = counts[WC_LENGTH]; -+ } -+ totals[WC_LENGTH] -= counts[WC_LENGTH]; -+ -+ if(fp != stdin) -+ fclose(fp); -+ -+ OUTPUT: -+ /* coreutils wc tries hard to print pretty columns -+ * (saves results for all files, find max col len etc...) -+ * we won't try that hard, it will bloat us too much */ -+ s = start_fmt; -+ u = 0; -+ do { -+ if (print_type & (1 << u)) { -+ printf(s, pcounts[u]); -+ s = " %9"COUNT_FMT; /* Ok... restore the leading space. */ -+ } -+ totals[u] += pcounts[u]; -+ } while (++u < 4); -+ printf(fname_fmt, arg); -+ } -+ -+ /* If more than one file was processed, we want the totals. To save some -+ * space, we set the pcounts ptr to the totals array. This has the side -+ * effect of trashing the totals array after outputting it, but that's -+ * irrelavent since we no longer need it. */ -+ if (num_files > 1) { -+ num_files = 0; /* Make sure we don't get here again. */ -+ arg = "total"; -+ pcounts = totals; -+ --argv; -+ goto OUTPUT; -+ } -+ -+ fflush(stdout); -+ exit(status); -+} diff --git a/meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.25.inc b/meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.25.inc deleted file mode 100644 index ebba658..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-checksums_1.5.25.inc +++ /dev/null @@ -1,2 +0,0 @@ -SRC_URI[md5sum] = "5bc4dcd63e9142b934787729133c2766" -SRC_URI[sha256sum] = "0b910ec0b2a97d4c775ed06e44ad7bca7be150efdf2a77a19253a573e16367d3" diff --git a/meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb b/meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb deleted file mode 100644 index c9749f0..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-static-utils_1.5.25.bb +++ /dev/null @@ -1,17 +0,0 @@ -PR = "${INC_PR}.0" - -KLIBC_UTILS_VARIANT = "static" -KLIBC_UTILS_PKGNAME = "klibc-static-utils" - -FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" - -do_install() { - : -} - -PACKAGES_${PN} = "${PN}" -FILES_${PN} = "" - -require klibc-utils.inc -require klibc.inc -require klibc-checksums_${PV}.inc diff --git a/meta-oe/recipes-devtools/klibc/klibc-utils.inc b/meta-oe/recipes-devtools/klibc/klibc-utils.inc deleted file mode 100644 index 0f195a3..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-utils.inc +++ /dev/null @@ -1,70 +0,0 @@ -KLIBC_UTILS_VARIANT ?= "shared" -KLIBC_UTILS_PKGNAME ?= "klibc-utils" - -# modprobe and losetup go to ${base_sbindir} -# even though debian packages all in /usr/lib/klibc/bin - -do_install_append() { - - install -d ${D}${base_bindir} - install -d ${D}${base_sbindir} - - # debian packages kinit + kinit.shared but only sh.shared - if [ "${KLIBC_UTILS_VARIANT}" = "shared" ]; then - install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit - install -m 755 usr/kinit/kinit.shared ${D}${base_bindir}/kinit.shared - install -m 755 usr/dash/sh.shared ${D}${base_bindir}/sh.shared - else - install -m 755 usr/dash/sh ${D}${base_bindir}/sh - install -m 755 usr/kinit/kinit ${D}${base_bindir}/kinit - fi - - install -m 755 usr/gzip/gzip ${D}${base_bindir} - install -m 755 usr/kinit/fstype/${KLIBC_UTILS_VARIANT}/fstype ${D}${base_bindir} - install -m 755 usr/kinit/ipconfig/${KLIBC_UTILS_VARIANT}/ipconfig ${D}${base_bindir} - install -m 755 usr/kinit/nfsmount/${KLIBC_UTILS_VARIANT}/nfsmount ${D}${base_bindir} - install -m 755 usr/kinit/resume/${KLIBC_UTILS_VARIANT}/resume ${D}${base_bindir} - install -m 755 usr/kinit/run-init/${KLIBC_UTILS_VARIANT}/run-init ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/cat ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/chroot ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/cpio ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/dd ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/dmesg ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/false ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/halt ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/kill ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/ln ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/losetup ${D}${base_sbindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/ls ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/minips ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mkdir ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mkfifo ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mknod ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/modprobe ${D}${base_sbindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mount ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/mv ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/nuke ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/pivot_root ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/poweroff ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/readlink ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/reboot ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/sleep ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/sync ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/true ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/umount ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/uname ${D}${base_bindir} - install -m 755 usr/utils/${KLIBC_UTILS_VARIANT}/wc ${D}${base_bindir} - ln -s gzip ${D}${base_bindir}/gunzip - ln -s gzip ${D}${base_bindir}/zcat -} - -PACKAGES_DYNAMIC = "${KLIBC_UTILS_PKGNAME}-*" - -python populate_packages_prepend () { - - base_bin_dir = bb.data.expand('${base_bindir}', d) - do_split_packages(d, base_bin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', allow_links=True, allow_dirs=True) - - base_sbin_dir = bb.data.expand('${base_sbindir}', d) - do_split_packages(d, base_sbin_dir, '(.*)', '${KLIBC_UTILS_PKGNAME}-%s', 'Klibc util for %s', allow_dirs=True) -} diff --git a/meta-oe/recipes-devtools/klibc/klibc-utils_1.5.25.bb b/meta-oe/recipes-devtools/klibc/klibc-utils_1.5.25.bb deleted file mode 100644 index b26dda4..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc-utils_1.5.25.bb +++ /dev/null @@ -1,17 +0,0 @@ -PR = "${INC_PR}.0" - -KLIBC_UTILS_VARIANT = "shared" -KLIBC_UTILS_PKGNAME = "klibc-utils" - -FILESPATH =. "${FILE_DIRNAME}/klibc-${PV}:" - -do_install() { - : -} - -PACKAGES_${PN} = "${PN}" -FILES_${PN} = "" - -require klibc-utils.inc -require klibc.inc -require klibc-checksums_${PV}.inc diff --git a/meta-oe/recipes-devtools/klibc/klibc.inc b/meta-oe/recipes-devtools/klibc/klibc.inc deleted file mode 100644 index 1b1f7c6..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc.inc +++ /dev/null @@ -1,48 +0,0 @@ -DEPENDS = "virtual/kernel perl-native" -SECTION = "libs" -DESCRIPTION = "klibc is intended to be a minimalistic libc subset for \ -use with initramfs. It is deliberately written for small size, \ -minimal entaglement, and portability, not speed." -LICENSE = "BSD-ADV" -LIC_FILES_CHKSUM = "file://usr/klibc/LICENSE;md5=d75181f10e998c21eb147f6d2e43ce8b" - -PACKAGE_ARCH = "${MACHINE_ARCH}" - -# Prevents do_package failures with: -# debugsources.list: No such file or directory: -INHIBIT_PACKAGE_DEBUG_SPLIT = "1" - -INC_PR = "r0" - -KLIBC_ARCH = '${TARGET_ARCH}' -KLIBC_ARCH_armeb = 'arm' -KLIBC_ARCH_mipsel = 'mips' -KLIBC_ARCH_x86 = 'i386' -KLIBC_ARCH_i486 = 'i386' -KLIBC_ARCH_i586 = 'i386' -KLIBC_ARCH_i686 = 'i386' -KLIBC_ARCH_pentium = 'i386' - -KLIBC_FETCHDIR = "1.5" -SRC_URI = "${KERNELORG_MIRROR}/linux/libs/klibc/${KLIBC_FETCHDIR}/klibc-${PV}.tar.bz2" - -SRC_URI_append_linux-gnueabi = " file://klibc-config-eabi.patch" -SRC_URI_append_linux-uclibceabi = " file://klibc-config-eabi.patch" - -SRC_URI += "file://fstype-sane-vfat-and-jffs2-for-1.5.patch \ - file://modprobe.patch \ - file://dash_readopt.patch \ - file://wc.patch \ - file://staging.patch \ - " - -S = "${WORKDIR}/klibc-${PV}" - -EXTRA_OEMAKE = "'KLIBCARCH=${KLIBC_ARCH}' \ - 'CROSS_COMPILE=${TARGET_PREFIX}' \ - 'KLIBCKERNELSRC=${STAGING_KERNEL_DIR}' \ - " - -do_configure () { - ln -sf ${STAGING_KERNEL_DIR} linux -} diff --git a/meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb b/meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb deleted file mode 100644 index a313bfd..0000000 --- a/meta-oe/recipes-devtools/klibc/klibc_1.5.25.bb +++ /dev/null @@ -1,35 +0,0 @@ -PR = "${INC_PR}.0" - -export INST = "${D}" - -do_install() { - - oe_runmake install - - # the crosscompiler is packaged by klcc-cross - # remove klcc - # remove also from FILES_libklibc-dev - rm ${D}${base_bindir}/klcc - - # remove Linux headers .install and ..install.cmd files - find ${D}${base_libdir}/klibc/include -name '.install' -delete - find ${D}${base_libdir}/klibc/include -name '..install.cmd' -delete - - install -d ${D}${base_libdir} - install -m 755 usr/klibc/klibc-*.so ${D}${base_libdir} - (cd ${D}${base_libdir}; ln -s klibc-*.so klibc.so) - -} - -PACKAGES = "libklibc libklibc-dev" -FILES_libklibc = "${base_libdir}/klibc-*.so" -FILES_libklibc-dev = "${base_libdir}/klibc.so \ - ${base_libdir}/klibc/lib/* \ - ${base_libdir}/klibc/include/* \ - " -# see above -# do not package it in -dev -# ${base_bindir}/klcc \ - -require klibc.inc -require klibc-checksums_${PV}.inc -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-oe][PATCH 3/3] meta-initramfs: add kexec-tools-klibc from meta-oe 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH] meta-initramfs: initial layer commit Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 2/6] meta-initramfs: import klibc recipe and bbclass from meta-oe Andrea Adami @ 2012-02-21 0:21 ` Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 4/6] meta-initramfs: add initramfs-kexecboot images from meta-handheld Andrea Adami ` (2 subsequent siblings) 5 siblings, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- .../kexec/kexec-tools-klibc-2.0.2/elf.patch | 94 +++++++++++++++++++ .../kexec/kexec-tools-klibc-2.0.2/errno.patch | 13 +++ .../kexec/kexec-tools-klibc-2.0.2/other.patch | 97 ++++++++++++++++++++ .../kexec/kexec-tools-klibc-2.0.2/string.patch | 11 ++ .../kexec/kexec-tools-klibc-2.0.2/syscall.patch | 46 +++++++++ .../kexec/kexec-tools-klibc_2.0.2.bb | 26 +++++ .../kexec/kexec-tools-klibc-2.0.2/elf.patch | 94 ------------------- .../kexec/kexec-tools-klibc-2.0.2/errno.patch | 13 --- .../kexec/kexec-tools-klibc-2.0.2/other.patch | 97 -------------------- .../kexec/kexec-tools-klibc-2.0.2/string.patch | 11 -- .../kexec/kexec-tools-klibc-2.0.2/syscall.patch | 46 --------- .../kexec/kexec-tools-klibc_2.0.2.bb | 26 ----- 12 files changed, 287 insertions(+), 287 deletions(-) create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch create mode 100644 meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch delete mode 100644 meta-oe/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch new file mode 100644 index 0000000..0eef4b4 --- /dev/null +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch @@ -0,0 +1,94 @@ +Index: kexec-tools-2.0.2/kexec/kexec-elf-rel.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/kexec-elf-rel.c 2009-09-24 14:15:34.025828340 +0100 ++++ kexec-tools-2.0.2/kexec/kexec-elf-rel.c 2009-09-24 14:15:47.030825302 +0100 +@@ -4,7 +4,7 @@ + #include <stdio.h> + #include <errno.h> + #include <stdlib.h> +-#include "elf.h" ++#include "../include/elf.h" + #include <boot/elf_boot.h> + #include "kexec.h" + #include "kexec-elf.h" +Index: kexec-tools-2.0.2/kexec/crashdump.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/crashdump.c 2008-10-31 03:00:38.000000000 +0100 ++++ kexec-tools-2.0.2/kexec/crashdump.c 2009-09-26 11:16:27.000000000 +0200 +@@ -26,7 +26,7 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <unistd.h> +-#include <elf.h> ++#include "../../../include/elf.h" + #include "kexec.h" + #include "crashdump.h" + #include "kexec-syscall.h" + +Index: kexec-tools-2.0.2/kexec/crashdump-xen.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/crashdump-xen.c 2008-07-15 02:46:43.000000000 +0200 ++++ kexec-tools-2.0.2/kexec/crashdump-xen.c 2009-09-26 11:16:41.000000000 +0200 +@@ -3,7 +3,7 @@ + #include <stdarg.h> + #include <string.h> + #include <stdlib.h> +-#include <elf.h> ++#include "../../../include/elf.h" + #include <errno.h> + #include <limits.h> + #include <sys/types.h> + +Index: kexec-tools-2.0.2/kexec/arch/arm/kexec-elf-rel-arm.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/arch/arm/kexec-elf-rel-arm.c 2009-04-24 14:15:46.934825202 +0100 ++++ kexec-tools-2.0.2/kexec/arch/arm/kexec-elf-rel-arm.c 2009-09-24 14:15:47.014827381 +0100 +@@ -1,5 +1,5 @@ + #include <stdio.h> +-#include <elf.h> ++#include "../../../include/elf.h" + #include "../../kexec.h" + #include "../../kexec-elf.h" + +Index: kexec-tools-2.0.2/kexec/kexec-elf-boot.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/kexec-elf-boot.c 2009-05-16 13:28:19.000000000 +0200 ++++ kexec-tools-2.0.2/kexec/kexec-elf-boot.c 2009-09-16 11:13:28.000000000 +0200 +@@ -22,7 +22,7 @@ + #include <string.h> + #include <stdlib.h> + #include <errno.h> +-#include <elf.h> ++#include "../include/elf.h" + #include <boot/elf_boot.h> + #include <ip_checksum.h> + #include <x86/x86-linux.h> + +Index: kexec-tools-2.0.2/kdump/kdump.c +=================================================================== +--- kexec-tools-2.0.2.orig/kdump/kdump.c 2009-05-16 13:28:19.000000000 +0200 ++++ kexec-tools-2.0.2/kdump/kdump.c 2009-09-16 11:13:08.000000000 +0200 +@@ -8,7 +8,7 @@ + #include <sys/stat.h> + #include <fcntl.h> + #include <endian.h> +-#include <elf.h> ++#include "../include/elf.h" + + #if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) || !defined(__BIG_ENDIAN) + #error Endian defines missing + +Index: kexec-tools-2.0.2/kexec/arch/arm/crashdump-arm.c +=================================================================== +--- kexec-tools-2.0.2.old/kexec/arch/arm/crashdump-arm.c 2010-08-01 15:07:47.000000000 +0200 ++++ kexec-tools-2.0.2/kexec/arch/arm/crashdump-arm.c 2010-07-29 06:19:59.000000000 +0200 +@@ -20,7 +20,7 @@ + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +-#include <elf.h> ++#include "../../../include/elf.h" + #include <errno.h> + #include <stdio.h> + #include <stdlib.h> + diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch new file mode 100644 index 0000000..c56b5a9 --- /dev/null +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch @@ -0,0 +1,13 @@ +Index: kexec-tools-2.0.2/kexec/ifdown.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/ifdown.c 2009-09-24 14:15:34.025828340 +0100 ++++ kexec-tools-2.0.2/kexec/ifdown.c 2009-09-24 14:15:47.014827381 +0100 +@@ -14,7 +14,7 @@ + #include <sys/ioctl.h> + #include <sys/socket.h> + #include <sys/time.h> +-#include <sys/errno.h> ++#include <errno.h> + + #include <net/if.h> + #include <netinet/in.h> \ No newline at end of file diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch new file mode 100644 index 0000000..f6efaeb --- /dev/null +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch @@ -0,0 +1,97 @@ +Index: kexec-tools-2.0.2/kexec/crashdump-elf.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/crashdump-elf.c 2008-10-31 03:00:38.000000000 +0100 ++++ kexec-tools-2.0.2/kexec/crashdump-elf.c 2009-09-26 11:17:57.000000000 +0200 +@@ -47,7 +47,8 @@ + if (xen_present()) + nr_cpus = xen_get_nr_phys_cpus(); + else +- nr_cpus = sysconf(_SC_NPROCESSORS_CONF); ++ /*nr_cpus = sysconf(_SC_NPROCESSORS_CONF);*/ ++ nr_cpus = 1; + + if (nr_cpus < 0) { + return -1; + +Index: kexec-tools-2.0.2/kexec/arch/arm/kexec-zImage-arm.c +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/arch/arm/kexec-zImage-arm.c 2009-04-24 14:15:46.982825391 +0100 ++++ kexec-tools-2.0.2/kexec/arch/arm/kexec-zImage-arm.c 2009-09-26 01:58:20.838624318 +0200 +@@ -2,6 +2,10 @@ + * - 08/21/2007 ATAG support added by Uli Luckas <u.luckas@road.de> + * + */ ++ ++/* work around for linux header files */ ++#define __deprecated ++ + #define _GNU_SOURCE + #define _XOPEN_SOURCE + #include <stdio.h> + +Index: kexec-tools-2.0.2/kexec/kexec.h +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/kexec.h 2008-05-16 13:28:19.000000000 +0200 ++++ kexec-tools-2.0.2/kexec/kexec.h 2009-09-16 17:32:15.000000000 +0200 +@@ -204,7 +204,7 @@ + extern char *slurp_file(const char *filename, off_t *r_size); + extern char *slurp_file_len(const char *filename, off_t size); + extern char *slurp_decompress_file(const char *filename, off_t *r_size); +-extern unsigned long virt_to_phys(unsigned long addr); ++/* extern unsigned long virt_to_phys(unsigned long addr); */ + extern void add_segment(struct kexec_info *info, + const void *buf, size_t bufsz, unsigned long base, size_t memsz); + extern void add_segment_phys_virt(struct kexec_info *info, + +Index: kexec-tools-2.0.2/Makefile.in +=================================================================== +--- kexec-tools-2.0.2.orig/Makefile.in 2009-09-29 23:49:47.000000000 +0200 ++++ kexec-tools-2.0.2/Makefile.in 2009-09-29 23:49:09.000000000 +0200 +@@ -46,7 +46,7 @@ + # where necessary. + CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \ + -Iinclude/ +-CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes ++CFLAGS = @CFLAGS@ -static -fno-strict-aliasing -Wall -Wstrict-prototypes + PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@ + ASFLAGS = @ASFLAGS@ + LDFLAGS = @LDFLAGS@ + +Index: kexec-tools-2.0.2/util_lib/include/sha256.h +=================================================================== +--- kexec-tools-2.0.2.orig/util_lib/include/sha256.h 2008-07-15 02:46:43.000000000 +0200 ++++ kexec-tools-2.0.2/util_lib/include/sha256.h 2009-10-02 18:28:45.000000000 +0200 +@@ -1,7 +1,8 @@ + #ifndef SHA256_H + #define SHA256_H + +-#include <sys/types.h> ++//#include <sys/types.h> ++#include <stddef.h> + #include <stdint.h> + + typedef struct + +Index: kexec-tools-2.0.2/purgatory/Makefile +=================================================================== +--- kexec-tools-2.0.2.orig/purgatory/Makefile 2008-10-09 00:32:14.000000000 +0200 ++++ kexec-tools-2.0.2.orig/purgatory/Makefile 2009-10-03 00:28:45.000000000 +0200 +@@ -47,7 +47,7 @@ + $(PURGATORY): CC=$(TARGET_CC) + $(PURGATORY): CFLAGS+=$(PURGATORY_EXTRA_CFLAGS) \ + $($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ +- -Os -fno-builtin -ffreestanding ++ -Os -fno-builtin -ffreestanding -nostdinc + + $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ + -I$(srcdir)/purgatory/include \ +@@ -61,7 +61,8 @@ + + $(PURGATORY): $(PURGATORY_OBJS) + $(MKDIR) -p $(@D) +- $(CC) $(LDFLAGS) -o $@ $^ ++# $(CC) $(LDFLAGS) -o $@ $^ ++ $(LD) $(LDFLAGS) -o $@ $^ + + # $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) --no-undefined -e purgatory_start -r -o $@ $(PURGATORY_OBJS) $(UTIL_LIB) + diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch new file mode 100644 index 0000000..7d27e39 --- /dev/null +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch @@ -0,0 +1,11 @@ +Index: kexec-tools-2.0.2/purgatory/string.c +=================================================================== +--- kexec-tools-2.0.2.orig/purgatory/string.c 2008-05-16 13:28:19.000000000 +0200 ++++ kexec-tools-2.0.2/purgatory/string.c 2009-09-16 17:49:04.000000000 +0200 +@@ -1,5 +1,5 @@ + #include <stddef.h> +-#include <string.h> ++/* #include <string.h> */ + + size_t strnlen(const char *s, size_t max) + { diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch new file mode 100644 index 0000000..ae2e3f6 --- /dev/null +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch @@ -0,0 +1,46 @@ +Index: kexec-tools-2.0.2/kexec/kexec-syscall.h +=================================================================== +--- kexec-tools-2.0.2.orig/kexec/kexec-syscall.h 2010-07-29 06:19:59.000000000 +0200 ++++ kexec-tools-2.0.2/kexec/kexec-syscall.h 2010-08-02 00:13:39.000000000 +0200 +@@ -2,7 +2,7 @@ + #define KEXEC_SYSCALL_H + + #define __LIBRARY__ +-#include <syscall.h> ++/*#include <syscall.h>*/ + #include <sys/syscall.h> + #include <unistd.h> + +@@ -23,6 +23,7 @@ + #define LINUX_REBOOT_CMD_KEXEC 0x45584543 + + #ifndef __NR_kexec_load ++/* + #ifdef __i386__ + #define __NR_kexec_load 283 + #endif +@@ -61,19 +62,21 @@ + #ifndef __NR_kexec_load + #error Unknown processor architecture. Needs a kexec_load syscall number. + #endif ++*/ + #endif /*ifndef __NR_kexec_load*/ + + struct kexec_segment; +- ++/* + static inline long kexec_load(void *entry, unsigned long nr_segments, + struct kexec_segment *segments, unsigned long flags) + { + return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags); + } +- ++*/ + static inline long kexec_reboot(void) + { +- return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0); ++ //return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0); ++ return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0); + } + + diff --git a/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb new file mode 100644 index 0000000..9c35330 --- /dev/null +++ b/meta-initramfs/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb @@ -0,0 +1,26 @@ +# the binaries are statically linked against klibc +require recipes-kernel/kexec/kexec-tools.inc +SRC_URI[md5sum] = "bc401cf3262b25ff7c9a51fc76c8ab91" +SRC_URI[sha256sum] = "549ab65c18a2229b6bf21b6875ca6bbe0e579bca08c3543ce6aaf8287a0b4188" + +inherit klibc + +FILESPATH =. "${FILE_DIRNAME}/kexec-tools-${PV}:" + +SRC_URI += "file://elf.patch \ + file://errno.patch \ + file://string.patch \ + file://syscall.patch \ + file://other.patch \ + " + +S = "${WORKDIR}/kexec-tools-${PV}" + +EXTRA_OECONF += "--without-zlib" + +PACKAGES =+ "kexec-klibc kdump-klibc" + +CFLAGS += "-I${STAGING_DIR_HOST}${base_libdir}/klibc/include -I${STAGING_DIR_HOST}${base_libdir}/klibc/include/bits32" + +FILES_kexec-klibc = "${sbindir}/kexec" +FILES_kdump-klibc = "${sbindir}/kdump" diff --git a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch b/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch deleted file mode 100644 index 0eef4b4..0000000 --- a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/elf.patch +++ /dev/null @@ -1,94 +0,0 @@ -Index: kexec-tools-2.0.2/kexec/kexec-elf-rel.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/kexec-elf-rel.c 2009-09-24 14:15:34.025828340 +0100 -+++ kexec-tools-2.0.2/kexec/kexec-elf-rel.c 2009-09-24 14:15:47.030825302 +0100 -@@ -4,7 +4,7 @@ - #include <stdio.h> - #include <errno.h> - #include <stdlib.h> --#include "elf.h" -+#include "../include/elf.h" - #include <boot/elf_boot.h> - #include "kexec.h" - #include "kexec-elf.h" -Index: kexec-tools-2.0.2/kexec/crashdump.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/crashdump.c 2008-10-31 03:00:38.000000000 +0100 -+++ kexec-tools-2.0.2/kexec/crashdump.c 2009-09-26 11:16:27.000000000 +0200 -@@ -26,7 +26,7 @@ - #include <sys/types.h> - #include <sys/stat.h> - #include <unistd.h> --#include <elf.h> -+#include "../../../include/elf.h" - #include "kexec.h" - #include "crashdump.h" - #include "kexec-syscall.h" - -Index: kexec-tools-2.0.2/kexec/crashdump-xen.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/crashdump-xen.c 2008-07-15 02:46:43.000000000 +0200 -+++ kexec-tools-2.0.2/kexec/crashdump-xen.c 2009-09-26 11:16:41.000000000 +0200 -@@ -3,7 +3,7 @@ - #include <stdarg.h> - #include <string.h> - #include <stdlib.h> --#include <elf.h> -+#include "../../../include/elf.h" - #include <errno.h> - #include <limits.h> - #include <sys/types.h> - -Index: kexec-tools-2.0.2/kexec/arch/arm/kexec-elf-rel-arm.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/arch/arm/kexec-elf-rel-arm.c 2009-04-24 14:15:46.934825202 +0100 -+++ kexec-tools-2.0.2/kexec/arch/arm/kexec-elf-rel-arm.c 2009-09-24 14:15:47.014827381 +0100 -@@ -1,5 +1,5 @@ - #include <stdio.h> --#include <elf.h> -+#include "../../../include/elf.h" - #include "../../kexec.h" - #include "../../kexec-elf.h" - -Index: kexec-tools-2.0.2/kexec/kexec-elf-boot.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/kexec-elf-boot.c 2009-05-16 13:28:19.000000000 +0200 -+++ kexec-tools-2.0.2/kexec/kexec-elf-boot.c 2009-09-16 11:13:28.000000000 +0200 -@@ -22,7 +22,7 @@ - #include <string.h> - #include <stdlib.h> - #include <errno.h> --#include <elf.h> -+#include "../include/elf.h" - #include <boot/elf_boot.h> - #include <ip_checksum.h> - #include <x86/x86-linux.h> - -Index: kexec-tools-2.0.2/kdump/kdump.c -=================================================================== ---- kexec-tools-2.0.2.orig/kdump/kdump.c 2009-05-16 13:28:19.000000000 +0200 -+++ kexec-tools-2.0.2/kdump/kdump.c 2009-09-16 11:13:08.000000000 +0200 -@@ -8,7 +8,7 @@ - #include <sys/stat.h> - #include <fcntl.h> - #include <endian.h> --#include <elf.h> -+#include "../include/elf.h" - - #if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) || !defined(__BIG_ENDIAN) - #error Endian defines missing - -Index: kexec-tools-2.0.2/kexec/arch/arm/crashdump-arm.c -=================================================================== ---- kexec-tools-2.0.2.old/kexec/arch/arm/crashdump-arm.c 2010-08-01 15:07:47.000000000 +0200 -+++ kexec-tools-2.0.2/kexec/arch/arm/crashdump-arm.c 2010-07-29 06:19:59.000000000 +0200 -@@ -20,7 +20,7 @@ - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ --#include <elf.h> -+#include "../../../include/elf.h" - #include <errno.h> - #include <stdio.h> - #include <stdlib.h> - diff --git a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch b/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch deleted file mode 100644 index c56b5a9..0000000 --- a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/errno.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: kexec-tools-2.0.2/kexec/ifdown.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/ifdown.c 2009-09-24 14:15:34.025828340 +0100 -+++ kexec-tools-2.0.2/kexec/ifdown.c 2009-09-24 14:15:47.014827381 +0100 -@@ -14,7 +14,7 @@ - #include <sys/ioctl.h> - #include <sys/socket.h> - #include <sys/time.h> --#include <sys/errno.h> -+#include <errno.h> - - #include <net/if.h> - #include <netinet/in.h> \ No newline at end of file diff --git a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch b/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch deleted file mode 100644 index f6efaeb..0000000 --- a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/other.patch +++ /dev/null @@ -1,97 +0,0 @@ -Index: kexec-tools-2.0.2/kexec/crashdump-elf.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/crashdump-elf.c 2008-10-31 03:00:38.000000000 +0100 -+++ kexec-tools-2.0.2/kexec/crashdump-elf.c 2009-09-26 11:17:57.000000000 +0200 -@@ -47,7 +47,8 @@ - if (xen_present()) - nr_cpus = xen_get_nr_phys_cpus(); - else -- nr_cpus = sysconf(_SC_NPROCESSORS_CONF); -+ /*nr_cpus = sysconf(_SC_NPROCESSORS_CONF);*/ -+ nr_cpus = 1; - - if (nr_cpus < 0) { - return -1; - -Index: kexec-tools-2.0.2/kexec/arch/arm/kexec-zImage-arm.c -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/arch/arm/kexec-zImage-arm.c 2009-04-24 14:15:46.982825391 +0100 -+++ kexec-tools-2.0.2/kexec/arch/arm/kexec-zImage-arm.c 2009-09-26 01:58:20.838624318 +0200 -@@ -2,6 +2,10 @@ - * - 08/21/2007 ATAG support added by Uli Luckas <u.luckas@road.de> - * - */ -+ -+/* work around for linux header files */ -+#define __deprecated -+ - #define _GNU_SOURCE - #define _XOPEN_SOURCE - #include <stdio.h> - -Index: kexec-tools-2.0.2/kexec/kexec.h -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/kexec.h 2008-05-16 13:28:19.000000000 +0200 -+++ kexec-tools-2.0.2/kexec/kexec.h 2009-09-16 17:32:15.000000000 +0200 -@@ -204,7 +204,7 @@ - extern char *slurp_file(const char *filename, off_t *r_size); - extern char *slurp_file_len(const char *filename, off_t size); - extern char *slurp_decompress_file(const char *filename, off_t *r_size); --extern unsigned long virt_to_phys(unsigned long addr); -+/* extern unsigned long virt_to_phys(unsigned long addr); */ - extern void add_segment(struct kexec_info *info, - const void *buf, size_t bufsz, unsigned long base, size_t memsz); - extern void add_segment_phys_virt(struct kexec_info *info, - -Index: kexec-tools-2.0.2/Makefile.in -=================================================================== ---- kexec-tools-2.0.2.orig/Makefile.in 2009-09-29 23:49:47.000000000 +0200 -+++ kexec-tools-2.0.2/Makefile.in 2009-09-29 23:49:09.000000000 +0200 -@@ -46,7 +46,7 @@ - # where necessary. - CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -I$(srcdir)/util_lib/include \ - -Iinclude/ --CFLAGS = @CFLAGS@ -fno-strict-aliasing -Wall -Wstrict-prototypes -+CFLAGS = @CFLAGS@ -static -fno-strict-aliasing -Wall -Wstrict-prototypes - PURGATORY_EXTRA_CFLAGS = @PURGATORY_EXTRA_CFLAGS@ - ASFLAGS = @ASFLAGS@ - LDFLAGS = @LDFLAGS@ - -Index: kexec-tools-2.0.2/util_lib/include/sha256.h -=================================================================== ---- kexec-tools-2.0.2.orig/util_lib/include/sha256.h 2008-07-15 02:46:43.000000000 +0200 -+++ kexec-tools-2.0.2/util_lib/include/sha256.h 2009-10-02 18:28:45.000000000 +0200 -@@ -1,7 +1,8 @@ - #ifndef SHA256_H - #define SHA256_H - --#include <sys/types.h> -+//#include <sys/types.h> -+#include <stddef.h> - #include <stdint.h> - - typedef struct - -Index: kexec-tools-2.0.2/purgatory/Makefile -=================================================================== ---- kexec-tools-2.0.2.orig/purgatory/Makefile 2008-10-09 00:32:14.000000000 +0200 -+++ kexec-tools-2.0.2.orig/purgatory/Makefile 2009-10-03 00:28:45.000000000 +0200 -@@ -47,7 +47,7 @@ - $(PURGATORY): CC=$(TARGET_CC) - $(PURGATORY): CFLAGS+=$(PURGATORY_EXTRA_CFLAGS) \ - $($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ -- -Os -fno-builtin -ffreestanding -+ -Os -fno-builtin -ffreestanding -nostdinc - - $(PURGATORY): CPPFLAGS=$($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ - -I$(srcdir)/purgatory/include \ -@@ -61,7 +61,8 @@ - - $(PURGATORY): $(PURGATORY_OBJS) - $(MKDIR) -p $(@D) -- $(CC) $(LDFLAGS) -o $@ $^ -+# $(CC) $(LDFLAGS) -o $@ $^ -+ $(LD) $(LDFLAGS) -o $@ $^ - - # $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) --no-undefined -e purgatory_start -r -o $@ $(PURGATORY_OBJS) $(UTIL_LIB) - diff --git a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch b/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch deleted file mode 100644 index 7d27e39..0000000 --- a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/string.patch +++ /dev/null @@ -1,11 +0,0 @@ -Index: kexec-tools-2.0.2/purgatory/string.c -=================================================================== ---- kexec-tools-2.0.2.orig/purgatory/string.c 2008-05-16 13:28:19.000000000 +0200 -+++ kexec-tools-2.0.2/purgatory/string.c 2009-09-16 17:49:04.000000000 +0200 -@@ -1,5 +1,5 @@ - #include <stddef.h> --#include <string.h> -+/* #include <string.h> */ - - size_t strnlen(const char *s, size_t max) - { diff --git a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch b/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch deleted file mode 100644 index ae2e3f6..0000000 --- a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc-2.0.2/syscall.patch +++ /dev/null @@ -1,46 +0,0 @@ -Index: kexec-tools-2.0.2/kexec/kexec-syscall.h -=================================================================== ---- kexec-tools-2.0.2.orig/kexec/kexec-syscall.h 2010-07-29 06:19:59.000000000 +0200 -+++ kexec-tools-2.0.2/kexec/kexec-syscall.h 2010-08-02 00:13:39.000000000 +0200 -@@ -2,7 +2,7 @@ - #define KEXEC_SYSCALL_H - - #define __LIBRARY__ --#include <syscall.h> -+/*#include <syscall.h>*/ - #include <sys/syscall.h> - #include <unistd.h> - -@@ -23,6 +23,7 @@ - #define LINUX_REBOOT_CMD_KEXEC 0x45584543 - - #ifndef __NR_kexec_load -+/* - #ifdef __i386__ - #define __NR_kexec_load 283 - #endif -@@ -61,19 +62,21 @@ - #ifndef __NR_kexec_load - #error Unknown processor architecture. Needs a kexec_load syscall number. - #endif -+*/ - #endif /*ifndef __NR_kexec_load*/ - - struct kexec_segment; -- -+/* - static inline long kexec_load(void *entry, unsigned long nr_segments, - struct kexec_segment *segments, unsigned long flags) - { - return (long) syscall(__NR_kexec_load, entry, nr_segments, segments, flags); - } -- -+*/ - static inline long kexec_reboot(void) - { -- return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0); -+ //return (long) syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0); -+ return __reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, LINUX_REBOOT_CMD_KEXEC, 0); - } - - diff --git a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb b/meta-oe/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb deleted file mode 100644 index 9c35330..0000000 --- a/meta-oe/recipes-kernel/kexec/kexec-tools-klibc_2.0.2.bb +++ /dev/null @@ -1,26 +0,0 @@ -# the binaries are statically linked against klibc -require recipes-kernel/kexec/kexec-tools.inc -SRC_URI[md5sum] = "bc401cf3262b25ff7c9a51fc76c8ab91" -SRC_URI[sha256sum] = "549ab65c18a2229b6bf21b6875ca6bbe0e579bca08c3543ce6aaf8287a0b4188" - -inherit klibc - -FILESPATH =. "${FILE_DIRNAME}/kexec-tools-${PV}:" - -SRC_URI += "file://elf.patch \ - file://errno.patch \ - file://string.patch \ - file://syscall.patch \ - file://other.patch \ - " - -S = "${WORKDIR}/kexec-tools-${PV}" - -EXTRA_OECONF += "--without-zlib" - -PACKAGES =+ "kexec-klibc kdump-klibc" - -CFLAGS += "-I${STAGING_DIR_HOST}${base_libdir}/klibc/include -I${STAGING_DIR_HOST}${base_libdir}/klibc/include/bits32" - -FILES_kexec-klibc = "${sbindir}/kexec" -FILES_kdump-klibc = "${sbindir}/kdump" -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-oe][PATCH 4/6] meta-initramfs: add initramfs-kexecboot images from meta-handheld 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami ` (2 preceding siblings ...) 2012-02-21 0:21 ` [meta-oe][PATCH 3/3] meta-initramfs: add kexec-tools-klibc " Andrea Adami @ 2012-02-21 0:21 ` Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes " Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 " Andrea Adami 5 siblings, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- .../images/initramfs-kexecboot-image.bb | 28 ++++++++++++++++++++ .../images/initramfs-kexecboot-klibc-image.bb | 5 +++ 2 files changed, 33 insertions(+), 0 deletions(-) create mode 100644 meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb create mode 100644 meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb diff --git a/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb b/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb new file mode 100644 index 0000000..f306fb5 --- /dev/null +++ b/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-image.bb @@ -0,0 +1,28 @@ +# Initramfs image providing kexecboot +# a linux as bootloader implementation + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" + +# avoid circular dependencies +EXTRA_IMAGEDEPENDS = "" + +IMAGE_INSTALL = "kexec kexecboot" + +# Do not pollute the initrd image with rootfs features +IMAGE_FEATURES = "" + +export IMAGE_BASENAME = "initramfs-kexecboot-image" + +IMAGE_LINGUAS = "" +IMAGE_LOGIN_MANAGER = "" +IMAGE_INIT_MANAGER = "" +IMAGE_INITSCRIPTS = "" +IMAGE_DEV_MANAGER = "" + +FEED_DEPLOYDIR_BASE_URI = "" +ONLINE_PACKAGE_MANAGEMENT = "none" + +inherit image diff --git a/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb b/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb new file mode 100644 index 0000000..e81f9ee --- /dev/null +++ b/meta-initramfs/recipes-bsp/images/initramfs-kexecboot-klibc-image.bb @@ -0,0 +1,5 @@ +require initramfs-kexecboot-image.bb + +IMAGE_INSTALL = "kexec-klibc kexecboot-klibc" + +export IMAGE_BASENAME = "initramfs-kexecboot-klibc-image" -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes from meta-handheld 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami ` (3 preceding siblings ...) 2012-02-21 0:21 ` [meta-oe][PATCH 4/6] meta-initramfs: add initramfs-kexecboot images from meta-handheld Andrea Adami @ 2012-02-21 0:21 ` Andrea Adami 2012-02-22 10:06 ` Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 " Andrea Adami 5 siblings, 1 reply; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw) To: openembedded-devel * (purged from device specific settings) Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- .../recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb | 61 ++++++++++++++++++++ .../recipes-bsp/kexecboot/kexecboot-klibc_git.bb | 12 ++++ meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc | 54 +++++++++++++++++ .../recipes-bsp/kexecboot/kexecboot_git.bb | 9 +++ 4 files changed, 136 insertions(+), 0 deletions(-) create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb new file mode 100644 index 0000000..84c1116 --- /dev/null +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb @@ -0,0 +1,61 @@ +DESCRIPTION = "Configuration file for kexecboot" +SECTION = "base" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" + +PR = "r13" + +INHIBIT_DEFAULT_DEPS = "1" + +SRC_URI = "file://icon.xpm" + +CMDLINE ?= "" +CMDLINE_DEBUG ?= "${@base_conditional('DISTRO_TYPE', 'release', 'quiet', 'debug',d)}" + +# Note: for qvga the label is currently limited to about 24 chars +KEXECBOOT_LABEL ?= "${@d.getVar('DISTRO', True) or d.getVar('DISTRO_VERSION', True)}-${MACHINE}" + +do_configure_prepend () { + install -m 0644 ${WORKDIR}/icon.xpm ${S} +} + +do_install_prepend () { +echo '# First kernel stanza. +# Specify full kernel path on target. +KERNEL=/boot/${KERNEL_IMAGETYPE} + +# Show this label in kexecboot menu. +LABEL=${KEXECBOOT_LABEL} +# +# Append this tags to the kernel cmdline. +APPEND=${CMDLINE} ${CMDLINE_DEBUG} +# +# Specify optional initrd/initramfs. +# INITRD=/boot/initramfs.cpio.gz +# +# Specify full path for a custom icon for the menu-item. +# If not set, use device-icons as default (NAND, SD, CF, ...). +# ICON=/boot/icon.xpm +# +# Priority of item in kexecboot menu. +# Items with highest priority will be shown at top of menu. +# Default: 0 (lowest, ordered by device ordering) +# PRIORITY=10 +# +# +# Second kernel stanza. +# KERNEL=/boot/${KERNEL_IMAGETYPE}-test +# LABEL=${DISTRO}-${MACHINE}-test +# APPEND=${CMDLINE} +#' >> ${S}/boot.cfg +} + +do_install () { + install -d ${D}/boot + install -m 0644 boot.cfg ${D}/boot/boot.cfg + install -m 0644 icon.xpm ${D}/boot/icon.xpm +} + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +FILES_${PN} += "/boot/*" diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb new file mode 100644 index 0000000..0d6d00f --- /dev/null +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb @@ -0,0 +1,12 @@ +RDEPENDS_${PN} = "kexec-klibc" +PV = "0.5.9" +PR = "r8+gitr${SRCREV}" + +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" +S = "${WORKDIR}/git" + +# the binary is statically linked against klibc +inherit klibc + +require kexecboot.inc diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc new file mode 100644 index 0000000..a205904 --- /dev/null +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc @@ -0,0 +1,54 @@ +########################### +# Configure options: +# +# --enable-static-linking compile kexecboot as static executable [default=no] +# --enable-fbui support framebuffer menu [default=yes] +# --enable-fbui-width limit FB UI width to specified value [default=no] +# --enable-fbui-height limit FB UI height to specified value [default=no] +# --enable-textui support console text user interface [default=no] +# --enable-cfgfiles support config files [default=yes] +# --enable-icons support custom icons (depends on fbui) [default=yes] +# --enable-zaurus compile Sharp Zaurus specific code [default=no] +# --enable-zimage compile with zImage support [default=yes] +# --enable-uimage compile with uImage support [default=no] +# --enable-machine-kernel look for machine-specific zImage kernel [default=no] +# --enable-devices-recreating +# enable devices re-creating [default=yes] +# --enable-debug enable debug output [default=no] +# --enable-host-debug allow for non-destructive executing of kexecboot on +# host system [default=no] +# --enable-numkeys enable menu item selection by keys [0-9] [default=yes] +# --enable-bg-buffer enable buffer for pre-drawed FB GUI background +# +# --enable-timeout allow to boot 1st kernel after timeout in seconds +# [default=no] +# --enable-delay specify delay before device scanning, allowing +# initialization of old CF/SD cards [default=1] +# --enable-bpp enable support of specified bpp modes +# (all,32,24,18,16,4,2,1) [default=all] +# --enable-evdev-rate change evdev (keyboard/mouse) repeat rate +# in milliseconds e.g. "1000,250" [default=no] +# --with-kexec-binary look for kexec binary at path +# [default="/usr/sbin/kexec"] +########################## +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" +inherit autotools + +EXTRA_OECONF = "--enable-delay=2 --enable-evdev-rate=1000,250" + +do_install () { + install -d ${D}${bindir} + install -m 0755 kexecboot ${D}${bindir}/ + install -d ${D}/proc + install -d ${D}/mnt + install -d ${D}/dev +} + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +FILES_${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev" + +pkg_postinst_${PN} () { + ln -sf ${bindir}/kexecboot $D/init +} diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb new file mode 100644 index 0000000..1341461 --- /dev/null +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb @@ -0,0 +1,9 @@ +RDEPENDS_${PN} = "kexec" +PV = "0.5.9" +PR = "r8+gitr${SRCREV}" + +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" +S = "${WORKDIR}/git" + +require kexecboot.inc -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes from meta-handheld 2012-02-21 0:21 ` [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes " Andrea Adami @ 2012-02-22 10:06 ` Andrea Adami 2012-02-22 10:43 ` Martin Jansa 0 siblings, 1 reply; 15+ messages in thread From: Andrea Adami @ 2012-02-22 10:06 UTC (permalink / raw) To: openembedded-devel On Tue, Feb 21, 2012 at 1:21 AM, Andrea Adami <andrea.adami@gmail.com> wrote: > * (purged from device specific settings) > > Signed-off-by: Andrea Adami <andrea.adami@gmail.com> > --- > .../recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb | 61 ++++++++++++++++++++ > .../recipes-bsp/kexecboot/kexecboot-klibc_git.bb | 12 ++++ > meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc | 54 +++++++++++++++++ > .../recipes-bsp/kexecboot/kexecboot_git.bb | 9 +++ > 4 files changed, 136 insertions(+), 0 deletions(-) > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb > > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb > new file mode 100644 > index 0000000..84c1116 > --- /dev/null > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb > @@ -0,0 +1,61 @@ > +DESCRIPTION = "Configuration file for kexecboot" > +SECTION = "base" > +LICENSE = "MIT" > +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" > + > +PR = "r13" > + > +INHIBIT_DEFAULT_DEPS = "1" > + > +SRC_URI = "file://icon.xpm" > + > +CMDLINE ?= "" > +CMDLINE_DEBUG ?= "${@base_conditional('DISTRO_TYPE', 'release', 'quiet', 'debug',d)}" > + > +# Note: for qvga the label is currently limited to about 24 chars > +KEXECBOOT_LABEL ?= "${@d.getVar('DISTRO', True) or d.getVar('DISTRO_VERSION', True)}-${MACHINE}" > + > +do_configure_prepend () { > + install -m 0644 ${WORKDIR}/icon.xpm ${S} > +} > + > +do_install_prepend () { > +echo '# First kernel stanza. > +# Specify full kernel path on target. > +KERNEL=/boot/${KERNEL_IMAGETYPE} > + > +# Show this label in kexecboot menu. > +LABEL=${KEXECBOOT_LABEL} > +# > +# Append this tags to the kernel cmdline. > +APPEND=${CMDLINE} ${CMDLINE_DEBUG} > +# > +# Specify optional initrd/initramfs. > +# INITRD=/boot/initramfs.cpio.gz > +# > +# Specify full path for a custom icon for the menu-item. > +# If not set, use device-icons as default (NAND, SD, CF, ...). > +# ICON=/boot/icon.xpm > +# > +# Priority of item in kexecboot menu. > +# Items with highest priority will be shown at top of menu. > +# Default: 0 (lowest, ordered by device ordering) > +# PRIORITY=10 > +# > +# > +# Second kernel stanza. > +# KERNEL=/boot/${KERNEL_IMAGETYPE}-test > +# LABEL=${DISTRO}-${MACHINE}-test > +# APPEND=${CMDLINE} > +#' >> ${S}/boot.cfg > +} > + > +do_install () { > + install -d ${D}/boot > + install -m 0644 boot.cfg ${D}/boot/boot.cfg > + install -m 0644 icon.xpm ${D}/boot/icon.xpm > +} > + > +PACKAGE_ARCH = "${MACHINE_ARCH}" > + > +FILES_${PN} += "/boot/*" > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb > new file mode 100644 > index 0000000..0d6d00f > --- /dev/null > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb > @@ -0,0 +1,12 @@ > +RDEPENDS_${PN} = "kexec-klibc" > +PV = "0.5.9" > +PR = "r8+gitr${SRCREV}" > + > +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " > +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" > +S = "${WORKDIR}/git" > + > +# the binary is statically linked against klibc > +inherit klibc > + > +require kexecboot.inc > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc > new file mode 100644 > index 0000000..a205904 > --- /dev/null > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc > @@ -0,0 +1,54 @@ > +########################### > +# Configure options: > +# > +# --enable-static-linking compile kexecboot as static executable [default=no] > +# --enable-fbui support framebuffer menu [default=yes] > +# --enable-fbui-width limit FB UI width to specified value [default=no] > +# --enable-fbui-height limit FB UI height to specified value [default=no] > +# --enable-textui support console text user interface [default=no] > +# --enable-cfgfiles support config files [default=yes] > +# --enable-icons support custom icons (depends on fbui) [default=yes] > +# --enable-zaurus compile Sharp Zaurus specific code [default=no] > +# --enable-zimage compile with zImage support [default=yes] > +# --enable-uimage compile with uImage support [default=no] > +# --enable-machine-kernel look for machine-specific zImage kernel [default=no] > +# --enable-devices-recreating > +# enable devices re-creating [default=yes] > +# --enable-debug enable debug output [default=no] > +# --enable-host-debug allow for non-destructive executing of kexecboot on > +# host system [default=no] > +# --enable-numkeys enable menu item selection by keys [0-9] [default=yes] > +# --enable-bg-buffer enable buffer for pre-drawed FB GUI background > +# > +# --enable-timeout allow to boot 1st kernel after timeout in seconds > +# [default=no] > +# --enable-delay specify delay before device scanning, allowing > +# initialization of old CF/SD cards [default=1] > +# --enable-bpp enable support of specified bpp modes > +# (all,32,24,18,16,4,2,1) [default=all] > +# --enable-evdev-rate change evdev (keyboard/mouse) repeat rate > +# in milliseconds e.g. "1000,250" [default=no] > +# --with-kexec-binary look for kexec binary at path > +# [default="/usr/sbin/kexec"] > +########################## > +LICENSE = "GPLv2" > +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" > +inherit autotools > + > +EXTRA_OECONF = "--enable-delay=2 --enable-evdev-rate=1000,250" > + > +do_install () { > + install -d ${D}${bindir} > + install -m 0755 kexecboot ${D}${bindir}/ > + install -d ${D}/proc > + install -d ${D}/mnt > + install -d ${D}/dev > +} > + > +PACKAGE_ARCH = "${MACHINE_ARCH}" > + > +FILES_${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev" > + > +pkg_postinst_${PN} () { > + ln -sf ${bindir}/kexecboot $D/init > +} > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb > new file mode 100644 > index 0000000..1341461 > --- /dev/null > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb > @@ -0,0 +1,9 @@ > +RDEPENDS_${PN} = "kexec" > +PV = "0.5.9" > +PR = "r8+gitr${SRCREV}" > + > +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " > +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" > +S = "${WORKDIR}/git" > + > +require kexecboot.inc > -- > 1.7.3.4 > Unfortunately I forgot to add /kexecboot-cfg/icon.xpm I'll send a separate patch to fix the things in meta-initramfs. Regards Andrea ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes from meta-handheld 2012-02-22 10:06 ` Andrea Adami @ 2012-02-22 10:43 ` Martin Jansa 2012-02-22 12:41 ` Andrea Adami 2012-02-23 0:06 ` Paul Eggleton 0 siblings, 2 replies; 15+ messages in thread From: Martin Jansa @ 2012-02-22 10:43 UTC (permalink / raw) To: openembedded-devel [-- Attachment #1: Type: text/plain, Size: 9021 bytes --] On Wed, Feb 22, 2012 at 11:06:54AM +0100, Andrea Adami wrote: > On Tue, Feb 21, 2012 at 1:21 AM, Andrea Adami <andrea.adami@gmail.com> wrote: > > * (purged from device specific settings) With this patchset applied to meta-oe and current meta-handheld master I get strange bitbake error while parsing: OE qemux86-64@shr ~/shr-core $ bitbake mcnavi Pseudo is not present but is required, building this first before the main build NOTE: Out of date cache found, rebuilding... ERROR: Command execution failed: Exited with 1 | ETA: 0:00:36 Summary: There were 0 ERROR messages shown, returning a non-zero exit code. IIRC someone reported same error message yesterday on IRC or ML. Removing meta-handheld from bblayers.conf allows me to finish parsing and adding new meta-initramfs to bblayers.conf works too. Maybe it's some require/include/inherit without corresponding file available, but for those it was showing reasonable error message before.. Cheers, > > > > Signed-off-by: Andrea Adami <andrea.adami@gmail.com> > > --- > > .../recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb | 61 ++++++++++++++++++++ > > .../recipes-bsp/kexecboot/kexecboot-klibc_git.bb | 12 ++++ > > meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc | 54 +++++++++++++++++ > > .../recipes-bsp/kexecboot/kexecboot_git.bb | 9 +++ > > 4 files changed, 136 insertions(+), 0 deletions(-) > > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb > > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb > > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc > > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb > > > > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb > > new file mode 100644 > > index 0000000..84c1116 > > --- /dev/null > > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb > > @@ -0,0 +1,61 @@ > > +DESCRIPTION = "Configuration file for kexecboot" > > +SECTION = "base" > > +LICENSE = "MIT" > > +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" > > + > > +PR = "r13" > > + > > +INHIBIT_DEFAULT_DEPS = "1" > > + > > +SRC_URI = "file://icon.xpm" > > + > > +CMDLINE ?= "" > > +CMDLINE_DEBUG ?= "${@base_conditional('DISTRO_TYPE', 'release', 'quiet', 'debug',d)}" > > + > > +# Note: for qvga the label is currently limited to about 24 chars > > +KEXECBOOT_LABEL ?= "${@d.getVar('DISTRO', True) or d.getVar('DISTRO_VERSION', True)}-${MACHINE}" > > + > > +do_configure_prepend () { > > + install -m 0644 ${WORKDIR}/icon.xpm ${S} > > +} > > + > > +do_install_prepend () { > > +echo '# First kernel stanza. > > +# Specify full kernel path on target. > > +KERNEL=/boot/${KERNEL_IMAGETYPE} > > + > > +# Show this label in kexecboot menu. > > +LABEL=${KEXECBOOT_LABEL} > > +# > > +# Append this tags to the kernel cmdline. > > +APPEND=${CMDLINE} ${CMDLINE_DEBUG} > > +# > > +# Specify optional initrd/initramfs. > > +# INITRD=/boot/initramfs.cpio.gz > > +# > > +# Specify full path for a custom icon for the menu-item. > > +# If not set, use device-icons as default (NAND, SD, CF, ...). > > +# ICON=/boot/icon.xpm > > +# > > +# Priority of item in kexecboot menu. > > +# Items with highest priority will be shown at top of menu. > > +# Default: 0 (lowest, ordered by device ordering) > > +# PRIORITY=10 > > +# > > +# > > +# Second kernel stanza. > > +# KERNEL=/boot/${KERNEL_IMAGETYPE}-test > > +# LABEL=${DISTRO}-${MACHINE}-test > > +# APPEND=${CMDLINE} > > +#' >> ${S}/boot.cfg > > +} > > + > > +do_install () { > > + install -d ${D}/boot > > + install -m 0644 boot.cfg ${D}/boot/boot.cfg > > + install -m 0644 icon.xpm ${D}/boot/icon.xpm > > +} > > + > > +PACKAGE_ARCH = "${MACHINE_ARCH}" > > + > > +FILES_${PN} += "/boot/*" > > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb > > new file mode 100644 > > index 0000000..0d6d00f > > --- /dev/null > > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb > > @@ -0,0 +1,12 @@ > > +RDEPENDS_${PN} = "kexec-klibc" > > +PV = "0.5.9" > > +PR = "r8+gitr${SRCREV}" > > + > > +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " > > +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" > > +S = "${WORKDIR}/git" > > + > > +# the binary is statically linked against klibc > > +inherit klibc > > + > > +require kexecboot.inc > > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc > > new file mode 100644 > > index 0000000..a205904 > > --- /dev/null > > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc > > @@ -0,0 +1,54 @@ > > +########################### > > +# Configure options: > > +# > > +# --enable-static-linking compile kexecboot as static executable [default=no] > > +# --enable-fbui support framebuffer menu [default=yes] > > +# --enable-fbui-width limit FB UI width to specified value [default=no] > > +# --enable-fbui-height limit FB UI height to specified value [default=no] > > +# --enable-textui support console text user interface [default=no] > > +# --enable-cfgfiles support config files [default=yes] > > +# --enable-icons support custom icons (depends on fbui) [default=yes] > > +# --enable-zaurus compile Sharp Zaurus specific code [default=no] > > +# --enable-zimage compile with zImage support [default=yes] > > +# --enable-uimage compile with uImage support [default=no] > > +# --enable-machine-kernel look for machine-specific zImage kernel [default=no] > > +# --enable-devices-recreating > > +# enable devices re-creating [default=yes] > > +# --enable-debug enable debug output [default=no] > > +# --enable-host-debug allow for non-destructive executing of kexecboot on > > +# host system [default=no] > > +# --enable-numkeys enable menu item selection by keys [0-9] [default=yes] > > +# --enable-bg-buffer enable buffer for pre-drawed FB GUI background > > +# > > +# --enable-timeout allow to boot 1st kernel after timeout in seconds > > +# [default=no] > > +# --enable-delay specify delay before device scanning, allowing > > +# initialization of old CF/SD cards [default=1] > > +# --enable-bpp enable support of specified bpp modes > > +# (all,32,24,18,16,4,2,1) [default=all] > > +# --enable-evdev-rate change evdev (keyboard/mouse) repeat rate > > +# in milliseconds e.g. "1000,250" [default=no] > > +# --with-kexec-binary look for kexec binary at path > > +# [default="/usr/sbin/kexec"] > > +########################## > > +LICENSE = "GPLv2" > > +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" > > +inherit autotools > > + > > +EXTRA_OECONF = "--enable-delay=2 --enable-evdev-rate=1000,250" > > + > > +do_install () { > > + install -d ${D}${bindir} > > + install -m 0755 kexecboot ${D}${bindir}/ > > + install -d ${D}/proc > > + install -d ${D}/mnt > > + install -d ${D}/dev > > +} > > + > > +PACKAGE_ARCH = "${MACHINE_ARCH}" > > + > > +FILES_${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev" > > + > > +pkg_postinst_${PN} () { > > + ln -sf ${bindir}/kexecboot $D/init > > +} > > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb > > new file mode 100644 > > index 0000000..1341461 > > --- /dev/null > > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb > > @@ -0,0 +1,9 @@ > > +RDEPENDS_${PN} = "kexec" > > +PV = "0.5.9" > > +PR = "r8+gitr${SRCREV}" > > + > > +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " > > +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" > > +S = "${WORKDIR}/git" > > + > > +require kexecboot.inc > > -- > > 1.7.3.4 > > > > Unfortunately I forgot to add /kexecboot-cfg/icon.xpm > I'll send a separate patch to fix the things in meta-initramfs. > > Regards > > Andrea > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 205 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes from meta-handheld 2012-02-22 10:43 ` Martin Jansa @ 2012-02-22 12:41 ` Andrea Adami 2012-02-23 0:06 ` Paul Eggleton 1 sibling, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-22 12:41 UTC (permalink / raw) To: openembedded-devel On Wed, Feb 22, 2012 at 11:43 AM, Martin Jansa <martin.jansa@gmail.com> wrote: > On Wed, Feb 22, 2012 at 11:06:54AM +0100, Andrea Adami wrote: >> On Tue, Feb 21, 2012 at 1:21 AM, Andrea Adami <andrea.adami@gmail.com> wrote: >> > * (purged from device specific settings) > > With this patchset applied to meta-oe and current meta-handheld master I > get strange bitbake error while parsing: > > OE qemux86-64@shr ~/shr-core $ bitbake mcnavi > Pseudo is not present but is required, building this first before the main build > NOTE: Out of date cache found, rebuilding... > ERROR: Command execution failed: Exited with 1 | ETA: 0:00:36 > Summary: There were 0 ERROR messages shown, returning a non-zero exit code. > > IIRC someone reported same error message yesterday on IRC or ML. > > Removing meta-handheld from bblayers.conf allows me to finish parsing > and adding new meta-initramfs to bblayers.conf works too. > > Maybe it's some require/include/inherit without corresponding file available, > but for those it was showing reasonable error message before.. > > Cheers, The corresponding patchset in meta-handheld is not yet committed. Probably this is causing some strange issues...hours ago I tested with all my patches applied and got no conflicts. Regards Andrea > >> > >> > Signed-off-by: Andrea Adami <andrea.adami@gmail.com> >> > --- >> > .../recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb | 61 ++++++++++++++++++++ >> > .../recipes-bsp/kexecboot/kexecboot-klibc_git.bb | 12 ++++ >> > meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc | 54 +++++++++++++++++ >> > .../recipes-bsp/kexecboot/kexecboot_git.bb | 9 +++ >> > 4 files changed, 136 insertions(+), 0 deletions(-) >> > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb >> > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb >> > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc >> > create mode 100644 meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb >> > >> > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb >> > new file mode 100644 >> > index 0000000..84c1116 >> > --- /dev/null >> > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-cfg_0.1.bb >> > @@ -0,0 +1,61 @@ >> > +DESCRIPTION = "Configuration file for kexecboot" >> > +SECTION = "base" >> > +LICENSE = "MIT" >> > +LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" >> > + >> > +PR = "r13" >> > + >> > +INHIBIT_DEFAULT_DEPS = "1" >> > + >> > +SRC_URI = "file://icon.xpm" >> > + >> > +CMDLINE ?= "" >> > +CMDLINE_DEBUG ?= "${@base_conditional('DISTRO_TYPE', 'release', 'quiet', 'debug',d)}" >> > + >> > +# Note: for qvga the label is currently limited to about 24 chars >> > +KEXECBOOT_LABEL ?= "${@d.getVar('DISTRO', True) or d.getVar('DISTRO_VERSION', True)}-${MACHINE}" >> > + >> > +do_configure_prepend () { >> > + install -m 0644 ${WORKDIR}/icon.xpm ${S} >> > +} >> > + >> > +do_install_prepend () { >> > +echo '# First kernel stanza. >> > +# Specify full kernel path on target. >> > +KERNEL=/boot/${KERNEL_IMAGETYPE} >> > + >> > +# Show this label in kexecboot menu. >> > +LABEL=${KEXECBOOT_LABEL} >> > +# >> > +# Append this tags to the kernel cmdline. >> > +APPEND=${CMDLINE} ${CMDLINE_DEBUG} >> > +# >> > +# Specify optional initrd/initramfs. >> > +# INITRD=/boot/initramfs.cpio.gz >> > +# >> > +# Specify full path for a custom icon for the menu-item. >> > +# If not set, use device-icons as default (NAND, SD, CF, ...). >> > +# ICON=/boot/icon.xpm >> > +# >> > +# Priority of item in kexecboot menu. >> > +# Items with highest priority will be shown at top of menu. >> > +# Default: 0 (lowest, ordered by device ordering) >> > +# PRIORITY=10 >> > +# >> > +# >> > +# Second kernel stanza. >> > +# KERNEL=/boot/${KERNEL_IMAGETYPE}-test >> > +# LABEL=${DISTRO}-${MACHINE}-test >> > +# APPEND=${CMDLINE} >> > +#' >> ${S}/boot.cfg >> > +} >> > + >> > +do_install () { >> > + install -d ${D}/boot >> > + install -m 0644 boot.cfg ${D}/boot/boot.cfg >> > + install -m 0644 icon.xpm ${D}/boot/icon.xpm >> > +} >> > + >> > +PACKAGE_ARCH = "${MACHINE_ARCH}" >> > + >> > +FILES_${PN} += "/boot/*" >> > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb >> > new file mode 100644 >> > index 0000000..0d6d00f >> > --- /dev/null >> > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot-klibc_git.bb >> > @@ -0,0 +1,12 @@ >> > +RDEPENDS_${PN} = "kexec-klibc" >> > +PV = "0.5.9" >> > +PR = "r8+gitr${SRCREV}" >> > + >> > +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " >> > +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" >> > +S = "${WORKDIR}/git" >> > + >> > +# the binary is statically linked against klibc >> > +inherit klibc >> > + >> > +require kexecboot.inc >> > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc >> > new file mode 100644 >> > index 0000000..a205904 >> > --- /dev/null >> > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot.inc >> > @@ -0,0 +1,54 @@ >> > +########################### >> > +# Configure options: >> > +# >> > +# --enable-static-linking compile kexecboot as static executable [default=no] >> > +# --enable-fbui support framebuffer menu [default=yes] >> > +# --enable-fbui-width limit FB UI width to specified value [default=no] >> > +# --enable-fbui-height limit FB UI height to specified value [default=no] >> > +# --enable-textui support console text user interface [default=no] >> > +# --enable-cfgfiles support config files [default=yes] >> > +# --enable-icons support custom icons (depends on fbui) [default=yes] >> > +# --enable-zaurus compile Sharp Zaurus specific code [default=no] >> > +# --enable-zimage compile with zImage support [default=yes] >> > +# --enable-uimage compile with uImage support [default=no] >> > +# --enable-machine-kernel look for machine-specific zImage kernel [default=no] >> > +# --enable-devices-recreating >> > +# enable devices re-creating [default=yes] >> > +# --enable-debug enable debug output [default=no] >> > +# --enable-host-debug allow for non-destructive executing of kexecboot on >> > +# host system [default=no] >> > +# --enable-numkeys enable menu item selection by keys [0-9] [default=yes] >> > +# --enable-bg-buffer enable buffer for pre-drawed FB GUI background >> > +# >> > +# --enable-timeout allow to boot 1st kernel after timeout in seconds >> > +# [default=no] >> > +# --enable-delay specify delay before device scanning, allowing >> > +# initialization of old CF/SD cards [default=1] >> > +# --enable-bpp enable support of specified bpp modes >> > +# (all,32,24,18,16,4,2,1) [default=all] >> > +# --enable-evdev-rate change evdev (keyboard/mouse) repeat rate >> > +# in milliseconds e.g. "1000,250" [default=no] >> > +# --with-kexec-binary look for kexec binary at path >> > +# [default="/usr/sbin/kexec"] >> > +########################## >> > +LICENSE = "GPLv2" >> > +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" >> > +inherit autotools >> > + >> > +EXTRA_OECONF = "--enable-delay=2 --enable-evdev-rate=1000,250" >> > + >> > +do_install () { >> > + install -d ${D}${bindir} >> > + install -m 0755 kexecboot ${D}${bindir}/ >> > + install -d ${D}/proc >> > + install -d ${D}/mnt >> > + install -d ${D}/dev >> > +} >> > + >> > +PACKAGE_ARCH = "${MACHINE_ARCH}" >> > + >> > +FILES_${PN} += " ${bindir}/kexecboot /init /proc /mnt /dev" >> > + >> > +pkg_postinst_${PN} () { >> > + ln -sf ${bindir}/kexecboot $D/init >> > +} >> > diff --git a/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb >> > new file mode 100644 >> > index 0000000..1341461 >> > --- /dev/null >> > +++ b/meta-initramfs/recipes-bsp/kexecboot/kexecboot_git.bb >> > @@ -0,0 +1,9 @@ >> > +RDEPENDS_${PN} = "kexec" >> > +PV = "0.5.9" >> > +PR = "r8+gitr${SRCREV}" >> > + >> > +SRC_URI = "git://git.linuxtogo.org/home/groups/kexecboot/kexecboot.git;protocol=git " >> > +SRCREV = "8f1d3cc3d9c650c6a6c88f83071185d6ee0ef9c7" >> > +S = "${WORKDIR}/git" >> > + >> > +require kexecboot.inc >> > -- >> > 1.7.3.4 >> > >> >> Unfortunately I forgot to add /kexecboot-cfg/icon.xpm >> I'll send a separate patch to fix the things in meta-initramfs. >> >> Regards >> >> Andrea >> >> _______________________________________________ >> Openembedded-devel mailing list >> Openembedded-devel@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > > -- > Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com > > _______________________________________________ > Openembedded-devel mailing list > Openembedded-devel@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes from meta-handheld 2012-02-22 10:43 ` Martin Jansa 2012-02-22 12:41 ` Andrea Adami @ 2012-02-23 0:06 ` Paul Eggleton 1 sibling, 0 replies; 15+ messages in thread From: Paul Eggleton @ 2012-02-23 0:06 UTC (permalink / raw) To: openembedded-devel; +Cc: Christopher Larson, Martin Jansa On Wednesday 22 February 2012 11:43:31 Martin Jansa wrote: > With this patchset applied to meta-oe and current meta-handheld master I > get strange bitbake error while parsing: > > OE qemux86-64@shr ~/shr-core $ bitbake mcnavi > Pseudo is not present but is required, building this first before the main > build NOTE: Out of date cache found, rebuilding... > ERROR: Command execution failed: Exited with 1 > > | ETA: > 0:00:36 Summary: There were 0 ERROR messages shown, returning a non-zero > exit code. > > IIRC someone reported same error message yesterday on IRC or ML. > > Removing meta-handheld from bblayers.conf allows me to finish parsing > and adding new meta-initramfs to bblayers.conf works too. > > Maybe it's some require/include/inherit without corresponding file > available, but for those it was showing reasonable error message before.. I think I've tracked this down to bitbake rev c9f58ef6b897d3fa5b0d23734b5f2cb3dabb057a "cooker: add missing shutdowns to the exception handling". The actual error occurring here is "ParseError: Could not inherit file classes/klibc.bbclass", however with the aforementioned change to cooker.py, sys.exit(1) gets called within self.shutdown() before the bb.fatal line that used to print out the error, thus no error message is printed. Chris, should we just change that bb.fatal line to a bb.error and put it before the self.shutdown? Cheers, Paul Eggleton Intel Open Source Technology Centre ^ permalink raw reply [flat|nested] 15+ messages in thread
* [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 from meta-handheld 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami ` (4 preceding siblings ...) 2012-02-21 0:21 ` [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes " Andrea Adami @ 2012-02-21 0:21 ` Andrea Adami 2012-02-21 0:52 ` Andrea Adami 2012-02-21 22:18 ` [meta-oe][PATCH v2 " Andrea Adami 5 siblings, 2 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:21 UTC (permalink / raw) To: openembedded-devel Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- .../linux/files/qvga/logo_linux_clut224.ppm.bz2 | Bin 0 -> 5547 bytes .../linux/files/vga/logo_linux_clut224.ppm.bz2 | Bin 0 -> 6436 bytes ...xx_sharpsl-retain-ops-structure-on-collie.patch | 34 +++++ .../linux/linux-kexecboot-3.1/akita/defconfig | 132 ++++++++++++++++++ .../linux/linux-kexecboot-3.1/c7x0/defconfig | 134 ++++++++++++++++++ .../linux/linux-kexecboot-3.1/collie/defconfig | 144 ++++++++++++++++++++ .../linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch | 66 +++++++++ .../linux/linux-kexecboot-3.1/poodle/defconfig | 136 ++++++++++++++++++ .../linux/linux-kexecboot-3.1/spitz/defconfig | 132 ++++++++++++++++++ .../linux/linux-kexecboot-3.1/tosa/defconfig | 134 ++++++++++++++++++ .../recipes-kernel/linux/linux-kexecboot.inc | 136 ++++++++++++++++++ .../recipes-kernel/linux/linux-kexecboot_3.1.bb | 15 ++ 12 files changed, 1063 insertions(+), 0 deletions(-) create mode 100644 meta-initramfs/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2 create mode 100644 meta-initramfs/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2 create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb diff --git a/meta-initramfs/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2 b/meta-initramfs/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ddc39a3c64dfadcd18c3d3f4489378c59fd649cc GIT binary patch literal 5547 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 Sex#Cb>7?Lnq(&RAkNSUT^P|B4 literal 0 HcmV?d00001 diff --git a/meta-initramfs/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2 b/meta-initramfs/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c3aeaac1833469a6de74f75a77d655d600c5bd99 GIT binary patch literal 6436 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 literal 0 HcmV?d00001 diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch new file mode 100644 index 0000000..d86b47d --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch @@ -0,0 +1,34 @@ +From 31d99c4c9f14e571ca0e22c5862dd5b6a871e2dd Mon Sep 17 00:00:00 2001 +From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> +Date: Fri, 5 Aug 2011 15:32:23 +0400 +Subject: [PATCH] pcmcia/pxa2xx_sharpsl: retain ops structure on collie + +The pxa2xx_sharpsl driver part is also used on collie, which (as +a StrongARM board) has different expectations for PCMCIA drivers. +So, on collie place sharpsl_pcmcia_ops in .data section rather than +in __initdata. + +Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> +--- + drivers/pcmcia/pxa2xx_sharpsl.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/drivers/pcmcia/pxa2xx_sharpsl.c b/drivers/pcmcia/pxa2xx_sharpsl.c +index 81af2b3..1b5b749 100644 +--- a/drivers/pcmcia/pxa2xx_sharpsl.c ++++ b/drivers/pcmcia/pxa2xx_sharpsl.c +@@ -222,7 +222,11 @@ static void sharpsl_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt) + sharpsl_pcmcia_init_reset(skt); + } + ++#ifdef CONFIG_SA1100_COLLIE ++static struct pcmcia_low_level sharpsl_pcmcia_ops = { ++#else + static struct pcmcia_low_level sharpsl_pcmcia_ops __initdata = { ++#endif + .owner = THIS_MODULE, + .hw_init = sharpsl_pcmcia_hw_init, + .hw_shutdown = sharpsl_pcmcia_hw_shutdown, +-- +1.7.2.5 + diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig new file mode 100644 index 0000000..b066839 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig @@ -0,0 +1,132 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZMA=y +# CONFIG_SWAP is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" +CONFIG_RD_LZMA=y +CONFIG_INITRAMFS_COMPRESSION_LZMA=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_PRINTK is not set +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_LBDAF is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_PXA=y +CONFIG_PXA_SHARPSL=y +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y +CONFIG_MACH_AKITA=y +CONFIG_MACH_BORZOI=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_PCMCIA_PXA2XX=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 fbcon=rotate:1 loglevel=3" +CONFIG_KEXEC=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_ROM=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_SHARPSL=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_PATA_PXA=y +CONFIG_PATA_PCMCIA=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_APMPOWER=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_MATRIX=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_PXA=y +CONFIG_SERIAL_PXA_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_I2C_COMPAT is not set +CONFIG_SPI=y +CONFIG_SPI_PXA2XX=y +CONFIG_POWER_SUPPLY=y +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_MFD_SUPPORT is not set +CONFIG_FB=y +CONFIG_FB_PXA=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CORGI=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FONTS=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_PXA=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PXA=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_ARM_UNWIND is not set +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig new file mode 100644 index 0000000..b08e27e --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig @@ -0,0 +1,134 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZMA=y +# CONFIG_SWAP is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" +CONFIG_RD_LZMA=y +CONFIG_INITRAMFS_COMPRESSION_LZMA=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_PRINTK is not set +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_LBDAF is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_PXA=y +CONFIG_PXA_SHARPSL=y +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y +CONFIG_MACH_CORGI=y +CONFIG_MACH_SHEPHERD=y +CONFIG_MACH_HUSKY=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_PCMCIA_PXA2XX=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 loglevel=3" +CONFIG_KEXEC=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_ROM=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_SHARPSL=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_PATA_PXA=y +CONFIG_PATA_PCMCIA=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_APMPOWER=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_MATRIX=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_PXA=y +CONFIG_SERIAL_PXA_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_PXA=y +CONFIG_SPI=y +CONFIG_SPI_PXA2XX=y +CONFIG_POWER_SUPPLY=y +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_MFD_SUPPORT is not set +CONFIG_FB=y +CONFIG_FB_W100=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CORGI=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FONTS=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_PXA=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_SA1100=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_ARM_UNWIND is not set +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig new file mode 100644 index 0000000..ce1299d --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig @@ -0,0 +1,144 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZMA=y +# CONFIG_SWAP is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" +CONFIG_RD_LZMA=y +CONFIG_INITRAMFS_COMPRESSION_LZMA=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_PRINTK is not set +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_LBDAF is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_SA1100=y +CONFIG_SA1100_COLLIE=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_PCMCIA_SA1100=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty1 console=ttySA0,115200n8 fbcon=rotate:1 mem=64M loglevel=3" +CONFIG_KEXEC=y +CONFIG_APM_EMULATION=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set +# CONFIG_MTD_CFI_I1 is not set +# CONFIG_MTD_CFI_I2 is not set +CONFIG_MTD_CFI_I4=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_ROM=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_SA1100=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_PATA_PCMCIA=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=240 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_APMPOWER=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_LOCOMO=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_SA1100=y +CONFIG_SERIAL_SA1100_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +# CONFIG_I2C_COMPAT is not set +CONFIG_SPI=y +CONFIG_SPI_GPIO=y +CONFIG_POWER_SUPPLY=y +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +CONFIG_BATTERY_COLLIE=y +# CONFIG_HWMON is not set +# CONFIG_MFD_SUPPORT is not set +CONFIG_MCP_SA11X0=y +CONFIG_MCP_UCB1200=y +CONFIG_MCP_UCB1200_TS=y +CONFIG_FB=y +CONFIG_FB_SA1100=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_SPI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_LOCOMO=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_SA1100=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_ARM_UNWIND is not set +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch new file mode 100644 index 0000000..0d47ade --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch @@ -0,0 +1,66 @@ + drivers/input/keyboard/locomokbd.c | 61 +++++++++++++++++++++++-------------- + 1 file changed, 39 insertions(+), 22 deletions(-) + +Index: linux-2.6.26-rc4/drivers/input/keyboard/locomokbd.c +=================================================================== +--- linux-2.6.26-rc4.orig/drivers/input/keyboard/locomokbd.c 2008-05-26 19:08:11.000000000 +0100 ++++ linux-2.6.26-rc4/drivers/input/keyboard/locomokbd.c 2008-06-01 18:35:55.000000000 +0100 +@@ -41,25 +41,32 @@ + + #define LOCOMOKBD_NUMKEYS 128 + +-#define KEY_ACTIVITY KEY_F16 +-#define KEY_CONTACT KEY_F18 +-#define KEY_CENTER KEY_F15 ++#define LOCOMO_KEY_CALENDER KEY_LEFTCTRL ++#define LOCOMO_KEY_ADDRESS KEY_LEFTALT /* Needed for SysRQ */ ++#define LOCOMO_KEY_HOME KEY_SYSRQ /* Needed for SysRQ */ ++#define LOCOMO_KEY_MENU KEY_F12 ++#define LOCOMO_KEY_MAIL KEY_F10 ++#define LOCOMO_KEY_OK KEY_F11 /* Don't hardwire to KEY_RETURN */ ++#define LOCOMO_KEY_CANCEL KEY_POWER ++#define LOCOMO_KEY_CENTER KEY_F5 /* Don't hardwire to KEY_RETURN */ + +-static const unsigned char ++#define LOCOMO_KEY_FN KEY_F9 ++ ++static const unsigned char + locomokbd_keycode[LOCOMOKBD_NUMKEYS] __devinitconst = { +- 0, KEY_ESC, KEY_ACTIVITY, 0, 0, 0, 0, 0, 0, 0, /* 0 - 9 */ +- 0, 0, 0, 0, 0, 0, 0, KEY_MENU, KEY_HOME, KEY_CONTACT, /* 10 - 19 */ +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 - 29 */ +- 0, 0, 0, KEY_CENTER, 0, KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */ +- 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */ +- KEY_UP, KEY_LEFT, 0, 0, KEY_P, 0, KEY_O, KEY_I, KEY_Y, KEY_T, /* 50 - 59 */ +- KEY_E, KEY_W, 0, 0, 0, 0, KEY_DOWN, KEY_ENTER, 0, 0, /* 60 - 69 */ +- KEY_BACKSPACE, 0, KEY_L, KEY_U, KEY_H, KEY_R, KEY_D, KEY_Q, 0, 0, /* 70 - 79 */ +- 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */ +- KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */ +- 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */ +- KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */ +- KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */ ++ 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, LOCOMO_KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */ ++ 0, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, 0, LOCOMO_KEY_ADDRESS, /* 10 - 19 */ ++ 0, 0, 0, 0, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 20 - 29 */ ++ 0, 0, 0, LOCOMO_KEY_CENTER, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */ ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */ ++ KEY_UP, KEY_LEFT, 0, 0, KEY_P, 0, KEY_O, KEY_I, KEY_Y, KEY_T, /* 50 - 59 */ ++ KEY_E, KEY_W, 0, 0, 0, 0, KEY_DOWN, LOCOMO_KEY_OK, 0, 0, /* 60 - 69 */ ++ KEY_BACKSPACE, 0, KEY_L, KEY_U, KEY_H, KEY_R, KEY_D, KEY_Q, 0, 0, /* 70 - 79 */ ++ 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */ ++ KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */ ++ 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */ ++ KEY_LEFTSHIFT, KEY_TAB, LOCOMO_KEY_FN, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */ ++ KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */ + }; + + #define KB_ROWS 16 +@@ -68,7 +75,7 @@ + #define SCANCODE(c,r) ( ((c)<<4) + (r) + 1 ) + + #define KB_DELAY 8 +-#define SCAN_INTERVAL (HZ/10) ++#define SCAN_INTERVAL (HZ/20) + + struct locomokbd { + unsigned char keycode[LOCOMOKBD_NUMKEYS]; diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig new file mode 100644 index 0000000..68c37e6 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig @@ -0,0 +1,136 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZMA=y +# CONFIG_SWAP is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" +CONFIG_RD_LZMA=y +CONFIG_INITRAMFS_COMPRESSION_LZMA=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_PRINTK is not set +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_LBDAF is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_PXA=y +CONFIG_PXA_SHARPSL=y +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y +CONFIG_MACH_POODLE=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_PCMCIA_PXA2XX=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 fbcon=rotate:1 loglevel=3" +CONFIG_KEXEC=y +CONFIG_APM_EMULATION=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_ROM=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_SHARPSL=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_PATA_PXA=y +CONFIG_PATA_PCMCIA=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=240 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_APMPOWER=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_LOCOMO=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_PXA=y +CONFIG_SERIAL_PXA_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_PXA=y +CONFIG_SPI=y +CONFIG_SPI_PXA2XX=y +CONFIG_POWER_SUPPLY=y +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_HWMON is not set +# CONFIG_MFD_SUPPORT is not set +CONFIG_FB=y +CONFIG_FB_PXA=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_PXA=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_LOCOMO=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_SA1100=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_ARM_UNWIND is not set +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig new file mode 100644 index 0000000..b066839 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig @@ -0,0 +1,132 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZMA=y +# CONFIG_SWAP is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" +CONFIG_RD_LZMA=y +CONFIG_INITRAMFS_COMPRESSION_LZMA=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_PRINTK is not set +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_LBDAF is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_PXA=y +CONFIG_PXA_SHARPSL=y +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y +CONFIG_MACH_AKITA=y +CONFIG_MACH_BORZOI=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_PCMCIA_PXA2XX=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 fbcon=rotate:1 loglevel=3" +CONFIG_KEXEC=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_ROM=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_SHARPSL=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_PATA_PXA=y +CONFIG_PATA_PCMCIA=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_APMPOWER=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_MATRIX=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_ADS7846=y +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_PXA=y +CONFIG_SERIAL_PXA_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_I2C_COMPAT is not set +CONFIG_SPI=y +CONFIG_SPI_PXA2XX=y +CONFIG_POWER_SUPPLY=y +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_MFD_SUPPORT is not set +CONFIG_FB=y +CONFIG_FB_PXA=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CORGI=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FONTS=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_PXA=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PXA=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_ARM_UNWIND is not set +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig new file mode 100644 index 0000000..59cf640 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig @@ -0,0 +1,134 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZMA=y +# CONFIG_SWAP is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" +CONFIG_RD_LZMA=y +CONFIG_INITRAMFS_COMPRESSION_LZMA=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_PRINTK is not set +# CONFIG_BUG is not set +# CONFIG_ELF_CORE is not set +# CONFIG_BASE_FULL is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_SLOB=y +# CONFIG_LBDAF is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_PXA=y +CONFIG_PXA_SHARPSL=y +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y +CONFIG_MACH_TOSA=y +CONFIG_PCCARD=y +# CONFIG_PCMCIA_LOAD_CIS is not set +CONFIG_PCMCIA_PXA2XX=y +CONFIG_NO_HZ=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 loglevel=3" +CONFIG_KEXEC=y +CONFIG_APM_EMULATION=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_ROM=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_TMIO=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_PATA_PXA=y +CONFIG_PATA_PCMCIA=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=480 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_APMPOWER=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_MATRIX=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_SERIO is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_PXA=y +CONFIG_SERIAL_PXA_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_PXA=y +CONFIG_SPI=y +CONFIG_SPI_PXA2XX=y +CONFIG_POWER_SUPPLY=y +CONFIG_PDA_POWER=y +CONFIG_APM_POWER=y +# CONFIG_HWMON is not set +CONFIG_MFD_TC6393XB=y +CONFIG_FB=y +CONFIG_FB_TMIO=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_TOSA=y +CONFIG_BACKLIGHT_TOSA=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FONTS=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_MMC=y +CONFIG_MMC_PXA=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_SA1100=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +# CONFIG_EXT4_FS_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=2048 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_ARM_UNWIND is not set +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc b/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc new file mode 100644 index 0000000..28b9ec2 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc @@ -0,0 +1,136 @@ +DESCRIPTION = "Linux Kernel" +SECTION = "kernel" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" + +INC_PR = "r2" + +inherit kernel siteinfo + +# FILESEXTRAPATHS cannot be used, because it puts extra paths before FILESPATH and we need it at the end +# only as fallback for patches available only in linux-PV dir and ie defconfigs needs to go from linux-kexecboot-PV +FILESPATH_append = ":${FILE_DIRNAME}/linux-${PV}" + +DEPENDS += "xz-native" + +# Kernel bootlogo is distro-specific (default is OE logo). +# Logo resolution (qvga, vga, ...) is machine-specific. +LOGO_SIZE ?= "." +# To use this, add file://${LOGO_SIZE}/logo_linux_clut224.ppm.bz2 or similar +# to your kernel recipe, and then structure your logos for each resolution +# accordingly. + +# Set the verbosity of kernel messages during runtime +# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour +CMDLINE_DEBUG ?= "loglevel=3" + +# Note we set loglevel=3 and master console on serial to protect bootlogo. + +PACKAGES = "" +PROVIDES = "" + +KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${PV}-${PR}-${MACHINE}" +KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}" + +LOCALVERSION ?= "" + +# we want the smallest size +INITRAMFS_IMAGE = "initramfs-kexecboot-klibc-image" + +kernel_conf_variable() { + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;" + if test "$2" = "n" + then + echo "# CONFIG_$1 is not set" >> ${S}/.config + else + echo "CONFIG_$1=$2" >> ${S}/.config + fi +} + +do_configure_prepend() { + + echo "" > ${S}/.config + CONF_SED_SCRIPT="" + + # + # CONFIG_CMDLINE mangling + # + kernel_conf_variable CMDLINE_BOOL y + kernel_conf_variable CMDLINE "\"${CMDLINE} ${CMDLINE_DEBUG}\"" + + # mips and x86 + kernel_conf_variable CMDLINE_OVERRIDE y + + # sh only + kernel_conf_variable CMDLINE_OVERWRITE y + kernel_conf_variable CMDLINE_EXTEND n + + # + # endian support + # + if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then + kernel_conf_variable CPU_BIG_ENDIAN y + fi + + # + # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it is going to be used + # + if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then + install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm + kernel_conf_variable LOGO y + kernel_conf_variable LOGO_LINUX_CLUT224 y + fi + + # When enabling thumb for userspace we also need thumb support in the kernel + if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then + kernel_conf_variable ARM_THUMB y + fi + + kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\"" + kernel_conf_variable LOCALVERSION_AUTO n + + # Force sane defaults for kexec-enabled kernels and keep size small + kernel_conf_variable BLK_DEV_INITRD y + kernel_conf_variable KEXEC y + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /=m/d;" + kernel_conf_variable MODULES n + if ${@base_contains("CMDLINE_DEBUG", "debug", "true", "false", d)}; then + kernel_conf_variable DEBUG_LL y + kernel_conf_variable PRINTK y + kernel_conf_variable EARLY_PRINTK y + kernel_conf_variable BUG y + kernel_conf_variable DEBUG_ERRORS y + kernel_conf_variable DEBUG_BUGVERBOSE y + kernel_conf_variable DEBUG_KERNEL y + else + kernel_conf_variable DEBUG_ERRORS n + kernel_conf_variable DEBUG_BUGVERBOSE n + kernel_conf_variable DEBUG_KERNEL n + fi + + # Force lzma for arm kernels only + if [ "${ARCH}" = "arm" ] ; then + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_KERNEL/d;" + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_RD/d;" + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_COMPRESSION/d;" + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_SOURCE/d;" + kernel_conf_variable KERNEL_LZMA y + kernel_conf_variable RD_LZMA y + kernel_conf_variable INITRAMFS_COMPRESSION_LZMA y + kernel_conf_variable INITRAMFS_SOURCE "\"initramfs.cpio.lzma\"" + fi + + sed -e "${CONF_SED_SCRIPT}" \ + < '${WORKDIR}/defconfig' >>'${S}/.config' + + yes '' | oe_runmake oldconfig +} + +do_populate_sysroot() { + : +} + +do_install() { + : +} + diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb b/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb new file mode 100644 index 0000000..466efd4 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb @@ -0,0 +1,15 @@ +require linux-kexecboot.inc + +PR = "${INC_PR}.8" +S = "${WORKDIR}/linux-${PV}" + +SRC_URI += "${KERNELORG_MIRROR}/linux/kernel/v3.x/linux-${PV}.tar.bz2;name=kernel \ + ${KERNELORG_MIRROR}/linux/kernel/v3.x/patch-${PV}.10.bz2;apply=yes;name=stablepatch \ + file://defconfig \ + file://${LOGO_SIZE}/logo_linux_clut224.ppm.bz2 \ + " + +SRC_URI[kernel.md5sum] = "8d43453f8159b2332ad410b19d86a931" +SRC_URI[kernel.sha256sum] = "2573d2378c754b0c602b57586e9311e5b38c5d1e6c137f02873833633a4b9359" +SRC_URI[stablepatch.md5sum] = "a8e1c25a93a685ec2a1c3a808715fe9d" +SRC_URI[stablepatch.sha256sum] = "f25126052d1a083a415ddd313b40c7fcdb3742f40474cb4a826af7e43fee29d3" -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 from meta-handheld 2012-02-21 0:21 ` [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 " Andrea Adami @ 2012-02-21 0:52 ` Andrea Adami 2012-02-21 22:18 ` [meta-oe][PATCH v2 " Andrea Adami 1 sibling, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 0:52 UTC (permalink / raw) To: openembedded-devel On Tue, Feb 21, 2012 at 1:21 AM, Andrea Adami <andrea.adami@gmail.com> wrote: > Signed-off-by: Andrea Adami <andrea.adami@gmail.com> > --- > .../linux/files/qvga/logo_linux_clut224.ppm.bz2 | Bin 0 -> 5547 bytes > .../linux/files/vga/logo_linux_clut224.ppm.bz2 | Bin 0 -> 6436 bytes > ...xx_sharpsl-retain-ops-structure-on-collie.patch | 34 +++++ > .../linux/linux-kexecboot-3.1/akita/defconfig | 132 ++++++++++++++++++ > .../linux/linux-kexecboot-3.1/c7x0/defconfig | 134 ++++++++++++++++++ > .../linux/linux-kexecboot-3.1/collie/defconfig | 144 ++++++++++++++++++++ > .../linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch | 66 +++++++++ > .../linux/linux-kexecboot-3.1/poodle/defconfig | 136 ++++++++++++++++++ > .../linux/linux-kexecboot-3.1/spitz/defconfig | 132 ++++++++++++++++++ > .../linux/linux-kexecboot-3.1/tosa/defconfig | 134 ++++++++++++++++++ > .../recipes-kernel/linux/linux-kexecboot.inc | 136 ++++++++++++++++++ > .../recipes-kernel/linux/linux-kexecboot_3.1.bb | 15 ++ > 12 files changed, 1063 insertions(+), 0 deletions(-) > create mode 100644 meta-initramfs/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2 > create mode 100644 meta-initramfs/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2 > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc > create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb > > diff --git a/meta-initramfs/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2 b/meta-initramfs/recipes-kernel/linux/files/qvga/logo_linux_clut224.ppm.bz2 > new file mode 100644 > index 0000000000000000000000000000000000000000..ddc39a3c64dfadcd18c3d3f4489378c59fd649cc > GIT binary patch > literal 5547 > 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 > Sex#Cb>7?Lnq(&RAkNSUT^P|B4 > > literal 0 > HcmV?d00001 > > diff --git a/meta-initramfs/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2 b/meta-initramfs/recipes-kernel/linux/files/vga/logo_linux_clut224.ppm.bz2 > new file mode 100644 > index 0000000000000000000000000000000000000000..c3aeaac1833469a6de74f75a77d655d600c5bd99 > GIT binary patch > literal 6436 > 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 > > literal 0 > HcmV?d00001 > > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch > new file mode 100644 > index 0000000..d86b47d > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/0001-pcmcia-pxa2xx_sharpsl-retain-ops-structure-on-collie.patch > @@ -0,0 +1,34 @@ > +From 31d99c4c9f14e571ca0e22c5862dd5b6a871e2dd Mon Sep 17 00:00:00 2001 > +From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> > +Date: Fri, 5 Aug 2011 15:32:23 +0400 > +Subject: [PATCH] pcmcia/pxa2xx_sharpsl: retain ops structure on collie > + > +The pxa2xx_sharpsl driver part is also used on collie, which (as > +a StrongARM board) has different expectations for PCMCIA drivers. > +So, on collie place sharpsl_pcmcia_ops in .data section rather than > +in __initdata. > + > +Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> > +--- > + drivers/pcmcia/pxa2xx_sharpsl.c | 4 ++++ > + 1 files changed, 4 insertions(+), 0 deletions(-) > + > +diff --git a/drivers/pcmcia/pxa2xx_sharpsl.c b/drivers/pcmcia/pxa2xx_sharpsl.c > +index 81af2b3..1b5b749 100644 > +--- a/drivers/pcmcia/pxa2xx_sharpsl.c > ++++ b/drivers/pcmcia/pxa2xx_sharpsl.c > +@@ -222,7 +222,11 @@ static void sharpsl_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt) > + sharpsl_pcmcia_init_reset(skt); > + } > + > ++#ifdef CONFIG_SA1100_COLLIE > ++static struct pcmcia_low_level sharpsl_pcmcia_ops = { > ++#else > + static struct pcmcia_low_level sharpsl_pcmcia_ops __initdata = { > ++#endif > + .owner = THIS_MODULE, > + .hw_init = sharpsl_pcmcia_hw_init, > + .hw_shutdown = sharpsl_pcmcia_hw_shutdown, > +-- > +1.7.2.5 > + > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig > new file mode 100644 > index 0000000..b066839 > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/akita/defconfig > @@ -0,0 +1,132 @@ > +CONFIG_EXPERIMENTAL=y > +# CONFIG_LOCALVERSION_AUTO is not set > +CONFIG_KERNEL_LZMA=y > +# CONFIG_SWAP is not set > +CONFIG_LOG_BUF_SHIFT=14 > +CONFIG_BLK_DEV_INITRD=y > +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" > +CONFIG_RD_LZMA=y > +CONFIG_INITRAMFS_COMPRESSION_LZMA=y > +# CONFIG_UID16 is not set > +# CONFIG_SYSCTL_SYSCALL is not set > +# CONFIG_KALLSYMS is not set > +# CONFIG_PRINTK is not set > +# CONFIG_BUG is not set > +# CONFIG_ELF_CORE is not set > +# CONFIG_BASE_FULL is not set > +CONFIG_EMBEDDED=y > +# CONFIG_VM_EVENT_COUNTERS is not set > +# CONFIG_COMPAT_BRK is not set > +CONFIG_SLOB=y > +# CONFIG_LBDAF is not set > +# CONFIG_IOSCHED_CFQ is not set > +CONFIG_ARCH_PXA=y > +CONFIG_PXA_SHARPSL=y > +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y > +CONFIG_MACH_AKITA=y > +CONFIG_MACH_BORZOI=y > +CONFIG_PCCARD=y > +# CONFIG_PCMCIA_LOAD_CIS is not set > +CONFIG_PCMCIA_PXA2XX=y > +CONFIG_NO_HZ=y > +CONFIG_AEABI=y > +# CONFIG_OABI_COMPAT is not set > +CONFIG_ZBOOT_ROM_TEXT=0x0 > +CONFIG_ZBOOT_ROM_BSS=0x0 > +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 fbcon=rotate:1 loglevel=3" > +CONFIG_KEXEC=y > +CONFIG_DEVTMPFS=y > +CONFIG_DEVTMPFS_MOUNT=y > +CONFIG_MTD=y > +CONFIG_MTD_CMDLINE_PARTS=y > +CONFIG_MTD_CHAR=y > +CONFIG_MTD_BLOCK=y > +CONFIG_MTD_ROM=y > +CONFIG_MTD_COMPLEX_MAPPINGS=y > +CONFIG_MTD_PHYSMAP=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_VERIFY_WRITE=y > +CONFIG_MTD_NAND_SHARPSL=y > +CONFIG_MTD_UBI=y > +CONFIG_BLK_DEV_LOOP=y > +CONFIG_BLK_DEV_SD=y > +CONFIG_ATA=y > +# CONFIG_ATA_VERBOSE_ERROR is not set > +# CONFIG_SATA_PMP is not set > +CONFIG_PATA_PXA=y > +CONFIG_PATA_PCMCIA=y > +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set > +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 > +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 > +CONFIG_INPUT_EVDEV=y > +CONFIG_INPUT_APMPOWER=y > +# CONFIG_KEYBOARD_ATKBD is not set > +CONFIG_KEYBOARD_GPIO=y > +CONFIG_KEYBOARD_MATRIX=y > +# CONFIG_INPUT_MOUSE is not set > +CONFIG_INPUT_TOUCHSCREEN=y > +CONFIG_TOUCHSCREEN_ADS7846=y > +# CONFIG_SERIO is not set > +# CONFIG_LEGACY_PTYS is not set > +# CONFIG_DEVKMEM is not set > +CONFIG_SERIAL_PXA=y > +CONFIG_SERIAL_PXA_CONSOLE=y > +# CONFIG_HW_RANDOM is not set > +# CONFIG_I2C_COMPAT is not set > +CONFIG_SPI=y > +CONFIG_SPI_PXA2XX=y > +CONFIG_POWER_SUPPLY=y > +CONFIG_PDA_POWER=y > +CONFIG_APM_POWER=y > +# CONFIG_MFD_SUPPORT is not set > +CONFIG_FB=y > +CONFIG_FB_PXA=y > +CONFIG_BACKLIGHT_LCD_SUPPORT=y > +CONFIG_LCD_CORGI=y > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y > +CONFIG_FONTS=y > +CONFIG_FONT_8x16=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +# CONFIG_LOGO_LINUX_VGA16 is not set > +# CONFIG_HID_SUPPORT is not set > +# CONFIG_USB_SUPPORT is not set > +CONFIG_MMC=y > +CONFIG_MMC_PXA=y > +CONFIG_NEW_LEDS=y > +CONFIG_LEDS_CLASS=y > +CONFIG_LEDS_GPIO=y > +CONFIG_LEDS_TRIGGERS=y > +CONFIG_LEDS_TRIGGER_TIMER=y > +CONFIG_LEDS_TRIGGER_HEARTBEAT=y > +CONFIG_RTC_CLASS=y > +CONFIG_RTC_DRV_PXA=y > +CONFIG_EXT2_FS=y > +CONFIG_EXT3_FS=y > +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > +# CONFIG_EXT3_FS_XATTR is not set > +CONFIG_EXT4_FS=y > +# CONFIG_EXT4_FS_XATTR is not set > +# CONFIG_FILE_LOCKING is not set > +# CONFIG_DNOTIFY is not set > +CONFIG_MSDOS_FS=y > +CONFIG_VFAT_FS=y > +# CONFIG_PROC_PAGE_MONITOR is not set > +CONFIG_TMPFS=y > +CONFIG_TMPFS_POSIX_ACL=y > +CONFIG_JFFS2_FS=y > +CONFIG_JFFS2_SUMMARY=y > +CONFIG_JFFS2_COMPRESSION_OPTIONS=y > +CONFIG_JFFS2_LZO=y > +CONFIG_JFFS2_RUBIN=y > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_PARTITION_ADVANCED=y > +# CONFIG_ENABLE_WARN_DEPRECATED is not set > +# CONFIG_ENABLE_MUST_CHECK is not set > +CONFIG_FRAME_WARN=2048 > +CONFIG_MAGIC_SYSRQ=y > +# CONFIG_ARM_UNWIND is not set > +# CONFIG_CRYPTO_ANSI_CPRNG is not set > +# CONFIG_CRYPTO_HW is not set > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig > new file mode 100644 > index 0000000..b08e27e > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/c7x0/defconfig > @@ -0,0 +1,134 @@ > +CONFIG_EXPERIMENTAL=y > +# CONFIG_LOCALVERSION_AUTO is not set > +CONFIG_KERNEL_LZMA=y > +# CONFIG_SWAP is not set > +CONFIG_LOG_BUF_SHIFT=14 > +CONFIG_BLK_DEV_INITRD=y > +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" > +CONFIG_RD_LZMA=y > +CONFIG_INITRAMFS_COMPRESSION_LZMA=y > +# CONFIG_UID16 is not set > +# CONFIG_SYSCTL_SYSCALL is not set > +# CONFIG_KALLSYMS is not set > +# CONFIG_PRINTK is not set > +# CONFIG_BUG is not set > +# CONFIG_ELF_CORE is not set > +# CONFIG_BASE_FULL is not set > +CONFIG_EMBEDDED=y > +# CONFIG_VM_EVENT_COUNTERS is not set > +# CONFIG_COMPAT_BRK is not set > +CONFIG_SLOB=y > +# CONFIG_LBDAF is not set > +# CONFIG_IOSCHED_CFQ is not set > +CONFIG_ARCH_PXA=y > +CONFIG_PXA_SHARPSL=y > +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y > +CONFIG_MACH_CORGI=y > +CONFIG_MACH_SHEPHERD=y > +CONFIG_MACH_HUSKY=y > +CONFIG_PCCARD=y > +# CONFIG_PCMCIA_LOAD_CIS is not set > +CONFIG_PCMCIA_PXA2XX=y > +CONFIG_NO_HZ=y > +CONFIG_AEABI=y > +# CONFIG_OABI_COMPAT is not set > +CONFIG_ZBOOT_ROM_TEXT=0x0 > +CONFIG_ZBOOT_ROM_BSS=0x0 > +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 loglevel=3" > +CONFIG_KEXEC=y > +CONFIG_DEVTMPFS=y > +CONFIG_DEVTMPFS_MOUNT=y > +CONFIG_MTD=y > +CONFIG_MTD_CMDLINE_PARTS=y > +CONFIG_MTD_CHAR=y > +CONFIG_MTD_BLOCK=y > +CONFIG_MTD_ROM=y > +CONFIG_MTD_COMPLEX_MAPPINGS=y > +CONFIG_MTD_PHYSMAP=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_VERIFY_WRITE=y > +CONFIG_MTD_NAND_SHARPSL=y > +CONFIG_MTD_UBI=y > +CONFIG_BLK_DEV_LOOP=y > +CONFIG_BLK_DEV_SD=y > +CONFIG_ATA=y > +# CONFIG_ATA_VERBOSE_ERROR is not set > +# CONFIG_SATA_PMP is not set > +CONFIG_PATA_PXA=y > +CONFIG_PATA_PCMCIA=y > +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set > +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 > +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 > +CONFIG_INPUT_EVDEV=y > +CONFIG_INPUT_APMPOWER=y > +# CONFIG_KEYBOARD_ATKBD is not set > +CONFIG_KEYBOARD_GPIO=y > +CONFIG_KEYBOARD_MATRIX=y > +# CONFIG_INPUT_MOUSE is not set > +CONFIG_INPUT_TOUCHSCREEN=y > +CONFIG_TOUCHSCREEN_ADS7846=y > +# CONFIG_SERIO is not set > +# CONFIG_LEGACY_PTYS is not set > +# CONFIG_DEVKMEM is not set > +CONFIG_SERIAL_PXA=y > +CONFIG_SERIAL_PXA_CONSOLE=y > +# CONFIG_HW_RANDOM is not set > +CONFIG_I2C=y > +# CONFIG_I2C_COMPAT is not set > +CONFIG_I2C_PXA=y > +CONFIG_SPI=y > +CONFIG_SPI_PXA2XX=y > +CONFIG_POWER_SUPPLY=y > +CONFIG_PDA_POWER=y > +CONFIG_APM_POWER=y > +# CONFIG_MFD_SUPPORT is not set > +CONFIG_FB=y > +CONFIG_FB_W100=y > +CONFIG_BACKLIGHT_LCD_SUPPORT=y > +CONFIG_LCD_CORGI=y > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FONTS=y > +CONFIG_FONT_8x16=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +# CONFIG_LOGO_LINUX_VGA16 is not set > +# CONFIG_HID_SUPPORT is not set > +# CONFIG_USB_SUPPORT is not set > +CONFIG_MMC=y > +CONFIG_MMC_PXA=y > +CONFIG_NEW_LEDS=y > +CONFIG_LEDS_CLASS=y > +CONFIG_LEDS_GPIO=y > +CONFIG_LEDS_TRIGGERS=y > +CONFIG_LEDS_TRIGGER_TIMER=y > +CONFIG_LEDS_TRIGGER_HEARTBEAT=y > +CONFIG_RTC_CLASS=y > +CONFIG_RTC_DRV_SA1100=y > +CONFIG_EXT2_FS=y > +CONFIG_EXT3_FS=y > +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > +# CONFIG_EXT3_FS_XATTR is not set > +CONFIG_EXT4_FS=y > +# CONFIG_EXT4_FS_XATTR is not set > +# CONFIG_FILE_LOCKING is not set > +# CONFIG_DNOTIFY is not set > +CONFIG_MSDOS_FS=y > +CONFIG_VFAT_FS=y > +# CONFIG_PROC_PAGE_MONITOR is not set > +CONFIG_TMPFS=y > +CONFIG_TMPFS_POSIX_ACL=y > +CONFIG_JFFS2_FS=y > +CONFIG_JFFS2_SUMMARY=y > +CONFIG_JFFS2_COMPRESSION_OPTIONS=y > +CONFIG_JFFS2_LZO=y > +CONFIG_JFFS2_RUBIN=y > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_PARTITION_ADVANCED=y > +# CONFIG_ENABLE_WARN_DEPRECATED is not set > +# CONFIG_ENABLE_MUST_CHECK is not set > +CONFIG_FRAME_WARN=2048 > +CONFIG_MAGIC_SYSRQ=y > +# CONFIG_ARM_UNWIND is not set > +# CONFIG_CRYPTO_ANSI_CPRNG is not set > +# CONFIG_CRYPTO_HW is not set > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig > new file mode 100644 > index 0000000..ce1299d > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/collie/defconfig > @@ -0,0 +1,144 @@ > +CONFIG_EXPERIMENTAL=y > +# CONFIG_LOCALVERSION_AUTO is not set > +CONFIG_KERNEL_LZMA=y > +# CONFIG_SWAP is not set > +CONFIG_LOG_BUF_SHIFT=14 > +CONFIG_BLK_DEV_INITRD=y > +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" > +CONFIG_RD_LZMA=y > +CONFIG_INITRAMFS_COMPRESSION_LZMA=y > +# CONFIG_UID16 is not set > +# CONFIG_SYSCTL_SYSCALL is not set > +# CONFIG_KALLSYMS is not set > +# CONFIG_PRINTK is not set > +# CONFIG_BUG is not set > +# CONFIG_ELF_CORE is not set > +# CONFIG_BASE_FULL is not set > +CONFIG_EMBEDDED=y > +# CONFIG_VM_EVENT_COUNTERS is not set > +# CONFIG_COMPAT_BRK is not set > +CONFIG_SLOB=y > +# CONFIG_LBDAF is not set > +# CONFIG_IOSCHED_CFQ is not set > +CONFIG_ARCH_SA1100=y > +CONFIG_SA1100_COLLIE=y > +CONFIG_PCCARD=y > +# CONFIG_PCMCIA_LOAD_CIS is not set > +CONFIG_PCMCIA_SA1100=y > +CONFIG_NO_HZ=y > +CONFIG_AEABI=y > +# CONFIG_OABI_COMPAT is not set > +CONFIG_ZBOOT_ROM_TEXT=0x0 > +CONFIG_ZBOOT_ROM_BSS=0x0 > +CONFIG_CMDLINE="console=tty1 console=ttySA0,115200n8 fbcon=rotate:1 mem=64M loglevel=3" > +CONFIG_KEXEC=y > +CONFIG_APM_EMULATION=y > +CONFIG_DEVTMPFS=y > +CONFIG_DEVTMPFS_MOUNT=y > +CONFIG_MTD=y > +CONFIG_MTD_CMDLINE_PARTS=y > +CONFIG_MTD_CHAR=y > +CONFIG_MTD_BLOCK=y > +CONFIG_MTD_CFI=y > +CONFIG_MTD_JEDECPROBE=y > +CONFIG_MTD_CFI_ADV_OPTIONS=y > +CONFIG_MTD_CFI_GEOMETRY=y > +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set > +# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set > +# CONFIG_MTD_CFI_I1 is not set > +# CONFIG_MTD_CFI_I2 is not set > +CONFIG_MTD_CFI_I4=y > +CONFIG_MTD_CFI_INTELEXT=y > +CONFIG_MTD_ROM=y > +CONFIG_MTD_COMPLEX_MAPPINGS=y > +CONFIG_MTD_PHYSMAP=y > +CONFIG_MTD_SA1100=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_VERIFY_WRITE=y > +CONFIG_MTD_UBI=y > +CONFIG_BLK_DEV_LOOP=y > +CONFIG_BLK_DEV_SD=y > +CONFIG_ATA=y > +# CONFIG_ATA_VERBOSE_ERROR is not set > +# CONFIG_SATA_PMP is not set > +CONFIG_PATA_PCMCIA=y > +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set > +CONFIG_INPUT_MOUSEDEV_SCREEN_X=240 > +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320 > +CONFIG_INPUT_EVDEV=y > +CONFIG_INPUT_APMPOWER=y > +# CONFIG_KEYBOARD_ATKBD is not set > +CONFIG_KEYBOARD_LOCOMO=y > +# CONFIG_INPUT_MOUSE is not set > +CONFIG_INPUT_TOUCHSCREEN=y > +# CONFIG_SERIO is not set > +# CONFIG_LEGACY_PTYS is not set > +# CONFIG_DEVKMEM is not set > +CONFIG_SERIAL_SA1100=y > +CONFIG_SERIAL_SA1100_CONSOLE=y > +# CONFIG_HW_RANDOM is not set > +CONFIG_I2C=y > +# CONFIG_I2C_COMPAT is not set > +CONFIG_SPI=y > +CONFIG_SPI_GPIO=y > +CONFIG_POWER_SUPPLY=y > +CONFIG_PDA_POWER=y > +CONFIG_APM_POWER=y > +CONFIG_BATTERY_COLLIE=y > +# CONFIG_HWMON is not set > +# CONFIG_MFD_SUPPORT is not set > +CONFIG_MCP_SA11X0=y > +CONFIG_MCP_UCB1200=y > +CONFIG_MCP_UCB1200_TS=y > +CONFIG_FB=y > +CONFIG_FB_SA1100=y > +CONFIG_BACKLIGHT_LCD_SUPPORT=y > +# CONFIG_BACKLIGHT_GENERIC is not set > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y > +CONFIG_FONTS=y > +CONFIG_FONT_8x8=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +# CONFIG_LOGO_LINUX_VGA16 is not set > +# CONFIG_HID_SUPPORT is not set > +# CONFIG_USB_SUPPORT is not set > +CONFIG_MMC=y > +CONFIG_MMC_SPI=y > +CONFIG_NEW_LEDS=y > +CONFIG_LEDS_CLASS=y > +CONFIG_LEDS_LOCOMO=y > +CONFIG_LEDS_GPIO=y > +CONFIG_LEDS_TRIGGERS=y > +CONFIG_LEDS_TRIGGER_TIMER=y > +CONFIG_LEDS_TRIGGER_HEARTBEAT=y > +CONFIG_RTC_CLASS=y > +CONFIG_RTC_DRV_SA1100=y > +CONFIG_EXT2_FS=y > +CONFIG_EXT3_FS=y > +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > +# CONFIG_EXT3_FS_XATTR is not set > +CONFIG_EXT4_FS=y > +# CONFIG_EXT4_FS_XATTR is not set > +# CONFIG_FILE_LOCKING is not set > +# CONFIG_DNOTIFY is not set > +CONFIG_MSDOS_FS=y > +CONFIG_VFAT_FS=y > +# CONFIG_PROC_PAGE_MONITOR is not set > +CONFIG_TMPFS=y > +CONFIG_TMPFS_POSIX_ACL=y > +CONFIG_JFFS2_FS=y > +CONFIG_JFFS2_SUMMARY=y > +CONFIG_JFFS2_COMPRESSION_OPTIONS=y > +CONFIG_JFFS2_LZO=y > +CONFIG_JFFS2_RUBIN=y > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_PARTITION_ADVANCED=y > +# CONFIG_ENABLE_WARN_DEPRECATED is not set > +# CONFIG_ENABLE_MUST_CHECK is not set > +CONFIG_FRAME_WARN=2048 > +CONFIG_MAGIC_SYSRQ=y > +# CONFIG_ARM_UNWIND is not set > +# CONFIG_CRYPTO_ANSI_CPRNG is not set > +# CONFIG_CRYPTO_HW is not set > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch > new file mode 100644 > index 0000000..0d47ade > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/locomo_kbd_tweak-r2.patch > @@ -0,0 +1,66 @@ > + drivers/input/keyboard/locomokbd.c | 61 +++++++++++++++++++++++-------------- > + 1 file changed, 39 insertions(+), 22 deletions(-) > + > +Index: linux-2.6.26-rc4/drivers/input/keyboard/locomokbd.c > +=================================================================== > +--- linux-2.6.26-rc4.orig/drivers/input/keyboard/locomokbd.c 2008-05-26 19:08:11.000000000 +0100 > ++++ linux-2.6.26-rc4/drivers/input/keyboard/locomokbd.c 2008-06-01 18:35:55.000000000 +0100 > +@@ -41,25 +41,32 @@ > + > + #define LOCOMOKBD_NUMKEYS 128 > + > +-#define KEY_ACTIVITY KEY_F16 > +-#define KEY_CONTACT KEY_F18 > +-#define KEY_CENTER KEY_F15 > ++#define LOCOMO_KEY_CALENDER KEY_LEFTCTRL > ++#define LOCOMO_KEY_ADDRESS KEY_LEFTALT /* Needed for SysRQ */ > ++#define LOCOMO_KEY_HOME KEY_SYSRQ /* Needed for SysRQ */ > ++#define LOCOMO_KEY_MENU KEY_F12 > ++#define LOCOMO_KEY_MAIL KEY_F10 > ++#define LOCOMO_KEY_OK KEY_F11 /* Don't hardwire to KEY_RETURN */ > ++#define LOCOMO_KEY_CANCEL KEY_POWER > ++#define LOCOMO_KEY_CENTER KEY_F5 /* Don't hardwire to KEY_RETURN */ > + > +-static const unsigned char > ++#define LOCOMO_KEY_FN KEY_F9 > ++ > ++static const unsigned char > + locomokbd_keycode[LOCOMOKBD_NUMKEYS] __devinitconst = { > +- 0, KEY_ESC, KEY_ACTIVITY, 0, 0, 0, 0, 0, 0, 0, /* 0 - 9 */ > +- 0, 0, 0, 0, 0, 0, 0, KEY_MENU, KEY_HOME, KEY_CONTACT, /* 10 - 19 */ > +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 - 29 */ > +- 0, 0, 0, KEY_CENTER, 0, KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */ > +- 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */ > +- KEY_UP, KEY_LEFT, 0, 0, KEY_P, 0, KEY_O, KEY_I, KEY_Y, KEY_T, /* 50 - 59 */ > +- KEY_E, KEY_W, 0, 0, 0, 0, KEY_DOWN, KEY_ENTER, 0, 0, /* 60 - 69 */ > +- KEY_BACKSPACE, 0, KEY_L, KEY_U, KEY_H, KEY_R, KEY_D, KEY_Q, 0, 0, /* 70 - 79 */ > +- 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */ > +- KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */ > +- 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */ > +- KEY_LEFTSHIFT, KEY_TAB, KEY_LEFTCTRL, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */ > +- KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */ > ++ 0, LOCOMO_KEY_CANCEL, LOCOMO_KEY_CALENDER, LOCOMO_KEY_HOME, 0, 0, 0, 0, 0, 0, /* 0 - 9 */ > ++ 0, 0, 0, 0, 0, 0, 0, LOCOMO_KEY_MENU, 0, LOCOMO_KEY_ADDRESS, /* 10 - 19 */ > ++ 0, 0, 0, 0, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 20 - 29 */ > ++ 0, 0, 0, LOCOMO_KEY_CENTER, 0, LOCOMO_KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */ > ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */ > ++ KEY_UP, KEY_LEFT, 0, 0, KEY_P, 0, KEY_O, KEY_I, KEY_Y, KEY_T, /* 50 - 59 */ > ++ KEY_E, KEY_W, 0, 0, 0, 0, KEY_DOWN, LOCOMO_KEY_OK, 0, 0, /* 60 - 69 */ > ++ KEY_BACKSPACE, 0, KEY_L, KEY_U, KEY_H, KEY_R, KEY_D, KEY_Q, 0, 0, /* 70 - 79 */ > ++ 0, 0, 0, 0, 0, 0, KEY_ENTER, KEY_RIGHTSHIFT, KEY_K, KEY_J, /* 80 - 89 */ > ++ KEY_G, KEY_F, KEY_X, KEY_S, 0, 0, 0, 0, 0, 0, /* 90 - 99 */ > ++ 0, 0, KEY_DOT, 0, KEY_COMMA, KEY_N, KEY_B, KEY_C, KEY_Z, KEY_A, /* 100 - 109 */ > ++ KEY_LEFTSHIFT, KEY_TAB, LOCOMO_KEY_FN, 0, 0, 0, 0, 0, 0, 0, /* 110 - 119 */ > ++ KEY_M, KEY_SPACE, KEY_V, KEY_APOSTROPHE, KEY_SLASH, 0, 0, 0 /* 120 - 128 */ > + }; > + > + #define KB_ROWS 16 > +@@ -68,7 +75,7 @@ > + #define SCANCODE(c,r) ( ((c)<<4) + (r) + 1 ) > + > + #define KB_DELAY 8 > +-#define SCAN_INTERVAL (HZ/10) > ++#define SCAN_INTERVAL (HZ/20) > + > + struct locomokbd { > + unsigned char keycode[LOCOMOKBD_NUMKEYS]; > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig > new file mode 100644 > index 0000000..68c37e6 > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/poodle/defconfig > @@ -0,0 +1,136 @@ > +CONFIG_EXPERIMENTAL=y > +# CONFIG_LOCALVERSION_AUTO is not set > +CONFIG_KERNEL_LZMA=y > +# CONFIG_SWAP is not set > +CONFIG_LOG_BUF_SHIFT=14 > +CONFIG_BLK_DEV_INITRD=y > +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" > +CONFIG_RD_LZMA=y > +CONFIG_INITRAMFS_COMPRESSION_LZMA=y > +# CONFIG_UID16 is not set > +# CONFIG_SYSCTL_SYSCALL is not set > +# CONFIG_KALLSYMS is not set > +# CONFIG_PRINTK is not set > +# CONFIG_BUG is not set > +# CONFIG_ELF_CORE is not set > +# CONFIG_BASE_FULL is not set > +CONFIG_EMBEDDED=y > +# CONFIG_VM_EVENT_COUNTERS is not set > +# CONFIG_COMPAT_BRK is not set > +CONFIG_SLOB=y > +# CONFIG_LBDAF is not set > +# CONFIG_IOSCHED_CFQ is not set > +CONFIG_ARCH_PXA=y > +CONFIG_PXA_SHARPSL=y > +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y > +CONFIG_MACH_POODLE=y > +CONFIG_PCCARD=y > +# CONFIG_PCMCIA_LOAD_CIS is not set > +CONFIG_PCMCIA_PXA2XX=y > +CONFIG_NO_HZ=y > +CONFIG_AEABI=y > +# CONFIG_OABI_COMPAT is not set > +CONFIG_ZBOOT_ROM_TEXT=0x0 > +CONFIG_ZBOOT_ROM_BSS=0x0 > +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 fbcon=rotate:1 loglevel=3" > +CONFIG_KEXEC=y > +CONFIG_APM_EMULATION=y > +CONFIG_DEVTMPFS=y > +CONFIG_DEVTMPFS_MOUNT=y > +CONFIG_MTD=y > +CONFIG_MTD_CMDLINE_PARTS=y > +CONFIG_MTD_CHAR=y > +CONFIG_MTD_BLOCK=y > +CONFIG_MTD_ROM=y > +CONFIG_MTD_COMPLEX_MAPPINGS=y > +CONFIG_MTD_PHYSMAP=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_VERIFY_WRITE=y > +CONFIG_MTD_NAND_SHARPSL=y > +CONFIG_MTD_UBI=y > +CONFIG_BLK_DEV_LOOP=y > +CONFIG_BLK_DEV_SD=y > +CONFIG_ATA=y > +# CONFIG_ATA_VERBOSE_ERROR is not set > +# CONFIG_SATA_PMP is not set > +CONFIG_PATA_PXA=y > +CONFIG_PATA_PCMCIA=y > +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set > +CONFIG_INPUT_MOUSEDEV_SCREEN_X=240 > +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320 > +CONFIG_INPUT_EVDEV=y > +CONFIG_INPUT_APMPOWER=y > +# CONFIG_KEYBOARD_ATKBD is not set > +CONFIG_KEYBOARD_GPIO=y > +CONFIG_KEYBOARD_LOCOMO=y > +# CONFIG_INPUT_MOUSE is not set > +CONFIG_INPUT_TOUCHSCREEN=y > +CONFIG_TOUCHSCREEN_ADS7846=y > +# CONFIG_SERIO is not set > +# CONFIG_LEGACY_PTYS is not set > +# CONFIG_DEVKMEM is not set > +CONFIG_SERIAL_PXA=y > +CONFIG_SERIAL_PXA_CONSOLE=y > +# CONFIG_HW_RANDOM is not set > +CONFIG_I2C=y > +# CONFIG_I2C_COMPAT is not set > +CONFIG_I2C_PXA=y > +CONFIG_SPI=y > +CONFIG_SPI_PXA2XX=y > +CONFIG_POWER_SUPPLY=y > +CONFIG_PDA_POWER=y > +CONFIG_APM_POWER=y > +# CONFIG_HWMON is not set > +# CONFIG_MFD_SUPPORT is not set > +CONFIG_FB=y > +CONFIG_FB_PXA=y > +CONFIG_BACKLIGHT_LCD_SUPPORT=y > +# CONFIG_BACKLIGHT_GENERIC is not set > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y > +CONFIG_FONTS=y > +CONFIG_FONT_8x8=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +# CONFIG_LOGO_LINUX_VGA16 is not set > +# CONFIG_HID_SUPPORT is not set > +# CONFIG_USB_SUPPORT is not set > +CONFIG_MMC=y > +CONFIG_MMC_PXA=y > +CONFIG_NEW_LEDS=y > +CONFIG_LEDS_CLASS=y > +CONFIG_LEDS_LOCOMO=y > +CONFIG_LEDS_GPIO=y > +CONFIG_LEDS_TRIGGERS=y > +CONFIG_LEDS_TRIGGER_TIMER=y > +CONFIG_LEDS_TRIGGER_HEARTBEAT=y > +CONFIG_RTC_CLASS=y > +CONFIG_RTC_DRV_SA1100=y > +CONFIG_EXT2_FS=y > +CONFIG_EXT3_FS=y > +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > +# CONFIG_EXT3_FS_XATTR is not set > +CONFIG_EXT4_FS=y > +# CONFIG_EXT4_FS_XATTR is not set > +# CONFIG_FILE_LOCKING is not set > +# CONFIG_DNOTIFY is not set > +CONFIG_MSDOS_FS=y > +CONFIG_VFAT_FS=y > +# CONFIG_PROC_PAGE_MONITOR is not set > +CONFIG_TMPFS=y > +CONFIG_TMPFS_POSIX_ACL=y > +CONFIG_JFFS2_FS=y > +CONFIG_JFFS2_SUMMARY=y > +CONFIG_JFFS2_COMPRESSION_OPTIONS=y > +CONFIG_JFFS2_LZO=y > +CONFIG_JFFS2_RUBIN=y > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_PARTITION_ADVANCED=y > +# CONFIG_ENABLE_WARN_DEPRECATED is not set > +# CONFIG_ENABLE_MUST_CHECK is not set > +CONFIG_FRAME_WARN=2048 > +CONFIG_MAGIC_SYSRQ=y > +# CONFIG_ARM_UNWIND is not set > +# CONFIG_CRYPTO_ANSI_CPRNG is not set > +# CONFIG_CRYPTO_HW is not set > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig > new file mode 100644 > index 0000000..b066839 > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/spitz/defconfig > @@ -0,0 +1,132 @@ > +CONFIG_EXPERIMENTAL=y > +# CONFIG_LOCALVERSION_AUTO is not set > +CONFIG_KERNEL_LZMA=y > +# CONFIG_SWAP is not set > +CONFIG_LOG_BUF_SHIFT=14 > +CONFIG_BLK_DEV_INITRD=y > +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" > +CONFIG_RD_LZMA=y > +CONFIG_INITRAMFS_COMPRESSION_LZMA=y > +# CONFIG_UID16 is not set > +# CONFIG_SYSCTL_SYSCALL is not set > +# CONFIG_KALLSYMS is not set > +# CONFIG_PRINTK is not set > +# CONFIG_BUG is not set > +# CONFIG_ELF_CORE is not set > +# CONFIG_BASE_FULL is not set > +CONFIG_EMBEDDED=y > +# CONFIG_VM_EVENT_COUNTERS is not set > +# CONFIG_COMPAT_BRK is not set > +CONFIG_SLOB=y > +# CONFIG_LBDAF is not set > +# CONFIG_IOSCHED_CFQ is not set > +CONFIG_ARCH_PXA=y > +CONFIG_PXA_SHARPSL=y > +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y > +CONFIG_MACH_AKITA=y > +CONFIG_MACH_BORZOI=y > +CONFIG_PCCARD=y > +# CONFIG_PCMCIA_LOAD_CIS is not set > +CONFIG_PCMCIA_PXA2XX=y > +CONFIG_NO_HZ=y > +CONFIG_AEABI=y > +# CONFIG_OABI_COMPAT is not set > +CONFIG_ZBOOT_ROM_TEXT=0x0 > +CONFIG_ZBOOT_ROM_BSS=0x0 > +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 fbcon=rotate:1 loglevel=3" > +CONFIG_KEXEC=y > +CONFIG_DEVTMPFS=y > +CONFIG_DEVTMPFS_MOUNT=y > +CONFIG_MTD=y > +CONFIG_MTD_CMDLINE_PARTS=y > +CONFIG_MTD_CHAR=y > +CONFIG_MTD_BLOCK=y > +CONFIG_MTD_ROM=y > +CONFIG_MTD_COMPLEX_MAPPINGS=y > +CONFIG_MTD_PHYSMAP=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_VERIFY_WRITE=y > +CONFIG_MTD_NAND_SHARPSL=y > +CONFIG_MTD_UBI=y > +CONFIG_BLK_DEV_LOOP=y > +CONFIG_BLK_DEV_SD=y > +CONFIG_ATA=y > +# CONFIG_ATA_VERBOSE_ERROR is not set > +# CONFIG_SATA_PMP is not set > +CONFIG_PATA_PXA=y > +CONFIG_PATA_PCMCIA=y > +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set > +CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 > +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 > +CONFIG_INPUT_EVDEV=y > +CONFIG_INPUT_APMPOWER=y > +# CONFIG_KEYBOARD_ATKBD is not set > +CONFIG_KEYBOARD_GPIO=y > +CONFIG_KEYBOARD_MATRIX=y > +# CONFIG_INPUT_MOUSE is not set > +CONFIG_INPUT_TOUCHSCREEN=y > +CONFIG_TOUCHSCREEN_ADS7846=y > +# CONFIG_SERIO is not set > +# CONFIG_LEGACY_PTYS is not set > +# CONFIG_DEVKMEM is not set > +CONFIG_SERIAL_PXA=y > +CONFIG_SERIAL_PXA_CONSOLE=y > +# CONFIG_HW_RANDOM is not set > +# CONFIG_I2C_COMPAT is not set > +CONFIG_SPI=y > +CONFIG_SPI_PXA2XX=y > +CONFIG_POWER_SUPPLY=y > +CONFIG_PDA_POWER=y > +CONFIG_APM_POWER=y > +# CONFIG_MFD_SUPPORT is not set > +CONFIG_FB=y > +CONFIG_FB_PXA=y > +CONFIG_BACKLIGHT_LCD_SUPPORT=y > +CONFIG_LCD_CORGI=y > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y > +CONFIG_FONTS=y > +CONFIG_FONT_8x16=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +# CONFIG_LOGO_LINUX_VGA16 is not set > +# CONFIG_HID_SUPPORT is not set > +# CONFIG_USB_SUPPORT is not set > +CONFIG_MMC=y > +CONFIG_MMC_PXA=y > +CONFIG_NEW_LEDS=y > +CONFIG_LEDS_CLASS=y > +CONFIG_LEDS_GPIO=y > +CONFIG_LEDS_TRIGGERS=y > +CONFIG_LEDS_TRIGGER_TIMER=y > +CONFIG_LEDS_TRIGGER_HEARTBEAT=y > +CONFIG_RTC_CLASS=y > +CONFIG_RTC_DRV_PXA=y > +CONFIG_EXT2_FS=y > +CONFIG_EXT3_FS=y > +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > +# CONFIG_EXT3_FS_XATTR is not set > +CONFIG_EXT4_FS=y > +# CONFIG_EXT4_FS_XATTR is not set > +# CONFIG_FILE_LOCKING is not set > +# CONFIG_DNOTIFY is not set > +CONFIG_MSDOS_FS=y > +CONFIG_VFAT_FS=y > +# CONFIG_PROC_PAGE_MONITOR is not set > +CONFIG_TMPFS=y > +CONFIG_TMPFS_POSIX_ACL=y > +CONFIG_JFFS2_FS=y > +CONFIG_JFFS2_SUMMARY=y > +CONFIG_JFFS2_COMPRESSION_OPTIONS=y > +CONFIG_JFFS2_LZO=y > +CONFIG_JFFS2_RUBIN=y > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_PARTITION_ADVANCED=y > +# CONFIG_ENABLE_WARN_DEPRECATED is not set > +# CONFIG_ENABLE_MUST_CHECK is not set > +CONFIG_FRAME_WARN=2048 > +CONFIG_MAGIC_SYSRQ=y > +# CONFIG_ARM_UNWIND is not set > +# CONFIG_CRYPTO_ANSI_CPRNG is not set > +# CONFIG_CRYPTO_HW is not set > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig > new file mode 100644 > index 0000000..59cf640 > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot-3.1/tosa/defconfig > @@ -0,0 +1,134 @@ > +CONFIG_EXPERIMENTAL=y > +# CONFIG_LOCALVERSION_AUTO is not set > +CONFIG_KERNEL_LZMA=y > +# CONFIG_SWAP is not set > +CONFIG_LOG_BUF_SHIFT=14 > +CONFIG_BLK_DEV_INITRD=y > +CONFIG_INITRAMFS_SOURCE="initramfs.cpio.lzma" > +CONFIG_RD_LZMA=y > +CONFIG_INITRAMFS_COMPRESSION_LZMA=y > +# CONFIG_UID16 is not set > +# CONFIG_SYSCTL_SYSCALL is not set > +# CONFIG_KALLSYMS is not set > +# CONFIG_PRINTK is not set > +# CONFIG_BUG is not set > +# CONFIG_ELF_CORE is not set > +# CONFIG_BASE_FULL is not set > +CONFIG_EMBEDDED=y > +# CONFIG_VM_EVENT_COUNTERS is not set > +# CONFIG_COMPAT_BRK is not set > +CONFIG_SLOB=y > +# CONFIG_LBDAF is not set > +# CONFIG_IOSCHED_CFQ is not set > +CONFIG_ARCH_PXA=y > +CONFIG_PXA_SHARPSL=y > +CONFIG_PXA_SHARPSL_DETECT_MACH_ID=y > +CONFIG_MACH_TOSA=y > +CONFIG_PCCARD=y > +# CONFIG_PCMCIA_LOAD_CIS is not set > +CONFIG_PCMCIA_PXA2XX=y > +CONFIG_NO_HZ=y > +CONFIG_AEABI=y > +# CONFIG_OABI_COMPAT is not set > +CONFIG_ZBOOT_ROM_TEXT=0x0 > +CONFIG_ZBOOT_ROM_BSS=0x0 > +CONFIG_CMDLINE="console=tty1 console=ttyS0,115200n8 loglevel=3" > +CONFIG_KEXEC=y > +CONFIG_APM_EMULATION=y > +CONFIG_DEVTMPFS=y > +CONFIG_DEVTMPFS_MOUNT=y > +CONFIG_MTD=y > +CONFIG_MTD_CMDLINE_PARTS=y > +CONFIG_MTD_CHAR=y > +CONFIG_MTD_BLOCK=y > +CONFIG_MTD_ROM=y > +CONFIG_MTD_COMPLEX_MAPPINGS=y > +CONFIG_MTD_PHYSMAP=y > +CONFIG_MTD_NAND=y > +CONFIG_MTD_NAND_VERIFY_WRITE=y > +CONFIG_MTD_NAND_TMIO=y > +CONFIG_MTD_UBI=y > +CONFIG_BLK_DEV_LOOP=y > +CONFIG_BLK_DEV_SD=y > +CONFIG_ATA=y > +# CONFIG_ATA_VERBOSE_ERROR is not set > +# CONFIG_SATA_PMP is not set > +CONFIG_PATA_PXA=y > +CONFIG_PATA_PCMCIA=y > +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set > +CONFIG_INPUT_MOUSEDEV_SCREEN_X=480 > +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640 > +CONFIG_INPUT_EVDEV=y > +CONFIG_INPUT_APMPOWER=y > +# CONFIG_KEYBOARD_ATKBD is not set > +CONFIG_KEYBOARD_GPIO=y > +CONFIG_KEYBOARD_MATRIX=y > +# CONFIG_INPUT_MOUSE is not set > +CONFIG_INPUT_TOUCHSCREEN=y > +# CONFIG_SERIO is not set > +# CONFIG_LEGACY_PTYS is not set > +# CONFIG_DEVKMEM is not set > +CONFIG_SERIAL_PXA=y > +CONFIG_SERIAL_PXA_CONSOLE=y > +# CONFIG_HW_RANDOM is not set > +CONFIG_I2C=y > +# CONFIG_I2C_COMPAT is not set > +CONFIG_I2C_PXA=y > +CONFIG_SPI=y > +CONFIG_SPI_PXA2XX=y > +CONFIG_POWER_SUPPLY=y > +CONFIG_PDA_POWER=y > +CONFIG_APM_POWER=y > +# CONFIG_HWMON is not set > +CONFIG_MFD_TC6393XB=y > +CONFIG_FB=y > +CONFIG_FB_TMIO=y > +CONFIG_BACKLIGHT_LCD_SUPPORT=y > +CONFIG_LCD_TOSA=y > +CONFIG_BACKLIGHT_TOSA=y > +CONFIG_FRAMEBUFFER_CONSOLE=y > +CONFIG_FONTS=y > +CONFIG_FONT_8x16=y > +CONFIG_LOGO=y > +# CONFIG_LOGO_LINUX_MONO is not set > +# CONFIG_LOGO_LINUX_VGA16 is not set > +# CONFIG_HID_SUPPORT is not set > +# CONFIG_USB_SUPPORT is not set > +CONFIG_MMC=y > +CONFIG_MMC_PXA=y > +CONFIG_NEW_LEDS=y > +CONFIG_LEDS_CLASS=y > +CONFIG_LEDS_GPIO=y > +CONFIG_LEDS_TRIGGERS=y > +CONFIG_LEDS_TRIGGER_TIMER=y > +CONFIG_LEDS_TRIGGER_HEARTBEAT=y > +CONFIG_RTC_CLASS=y > +CONFIG_RTC_DRV_SA1100=y > +CONFIG_EXT2_FS=y > +CONFIG_EXT3_FS=y > +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set > +# CONFIG_EXT3_FS_XATTR is not set > +CONFIG_EXT4_FS=y > +# CONFIG_EXT4_FS_XATTR is not set > +# CONFIG_FILE_LOCKING is not set > +# CONFIG_DNOTIFY is not set > +CONFIG_MSDOS_FS=y > +CONFIG_VFAT_FS=y > +# CONFIG_PROC_PAGE_MONITOR is not set > +CONFIG_TMPFS=y > +CONFIG_TMPFS_POSIX_ACL=y > +CONFIG_JFFS2_FS=y > +CONFIG_JFFS2_SUMMARY=y > +CONFIG_JFFS2_COMPRESSION_OPTIONS=y > +CONFIG_JFFS2_LZO=y > +CONFIG_JFFS2_RUBIN=y > +CONFIG_UBIFS_FS=y > +CONFIG_UBIFS_FS_ADVANCED_COMPR=y > +CONFIG_PARTITION_ADVANCED=y > +# CONFIG_ENABLE_WARN_DEPRECATED is not set > +# CONFIG_ENABLE_MUST_CHECK is not set > +CONFIG_FRAME_WARN=2048 > +CONFIG_MAGIC_SYSRQ=y > +# CONFIG_ARM_UNWIND is not set > +# CONFIG_CRYPTO_ANSI_CPRNG is not set > +# CONFIG_CRYPTO_HW is not set > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc b/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc > new file mode 100644 > index 0000000..28b9ec2 > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc > @@ -0,0 +1,136 @@ > +DESCRIPTION = "Linux Kernel" > +SECTION = "kernel" > +LICENSE = "GPLv2" > +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" > + > +INC_PR = "r2" > + > +inherit kernel siteinfo > + > +# FILESEXTRAPATHS cannot be used, because it puts extra paths before FILESPATH and we need it at the end > +# only as fallback for patches available only in linux-PV dir and ie defconfigs needs to go from linux-kexecboot-PV > +FILESPATH_append = ":${FILE_DIRNAME}/linux-${PV}" > + > +DEPENDS += "xz-native" > + > +# Kernel bootlogo is distro-specific (default is OE logo). > +# Logo resolution (qvga, vga, ...) is machine-specific. > +LOGO_SIZE ?= "." > +# To use this, add file://${LOGO_SIZE}/logo_linux_clut224.ppm.bz2 or similar > +# to your kernel recipe, and then structure your logos for each resolution > +# accordingly. > + > +# Set the verbosity of kernel messages during runtime > +# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour > +CMDLINE_DEBUG ?= "loglevel=3" > + > +# Note we set loglevel=3 and master console on serial to protect bootlogo. > + > +PACKAGES = "" > +PROVIDES = "" > + > +KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${PV}-${PR}-${MACHINE}" > +KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}" > + > +LOCALVERSION ?= "" > + > +# we want the smallest size > +INITRAMFS_IMAGE = "initramfs-kexecboot-klibc-image" > + > +kernel_conf_variable() { > + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;" > + if test "$2" = "n" > + then > + echo "# CONFIG_$1 is not set" >> ${S}/.config > + else > + echo "CONFIG_$1=$2" >> ${S}/.config > + fi > +} > + > +do_configure_prepend() { > + > + echo "" > ${S}/.config > + CONF_SED_SCRIPT="" > + > + # > + # CONFIG_CMDLINE mangling > + # > + kernel_conf_variable CMDLINE_BOOL y > + kernel_conf_variable CMDLINE "\"${CMDLINE} ${CMDLINE_DEBUG}\"" > + > + # mips and x86 > + kernel_conf_variable CMDLINE_OVERRIDE y > + > + # sh only > + kernel_conf_variable CMDLINE_OVERWRITE y > + kernel_conf_variable CMDLINE_EXTEND n > + > + # > + # endian support > + # > + if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then > + kernel_conf_variable CPU_BIG_ENDIAN y > + fi > + > + # > + # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it is going to be used > + # > + if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then > + install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm > + kernel_conf_variable LOGO y > + kernel_conf_variable LOGO_LINUX_CLUT224 y > + fi > + > + # When enabling thumb for userspace we also need thumb support in the kernel > + if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then > + kernel_conf_variable ARM_THUMB y > + fi > + > + kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\"" > + kernel_conf_variable LOCALVERSION_AUTO n > + > + # Force sane defaults for kexec-enabled kernels and keep size small > + kernel_conf_variable BLK_DEV_INITRD y > + kernel_conf_variable KEXEC y > + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /=m/d;" > + kernel_conf_variable MODULES n > + if ${@base_contains("CMDLINE_DEBUG", "debug", "true", "false", d)}; then > + kernel_conf_variable DEBUG_LL y > + kernel_conf_variable PRINTK y > + kernel_conf_variable EARLY_PRINTK y > + kernel_conf_variable BUG y > + kernel_conf_variable DEBUG_ERRORS y > + kernel_conf_variable DEBUG_BUGVERBOSE y > + kernel_conf_variable DEBUG_KERNEL y > + else > + kernel_conf_variable DEBUG_ERRORS n > + kernel_conf_variable DEBUG_BUGVERBOSE n > + kernel_conf_variable DEBUG_KERNEL n > + fi > + > + # Force lzma for arm kernels only > + if [ "${ARCH}" = "arm" ] ; then > + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_KERNEL/d;" > + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_RD/d;" > + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_COMPRESSION/d;" > + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_SOURCE/d;" > + kernel_conf_variable KERNEL_LZMA y > + kernel_conf_variable RD_LZMA y > + kernel_conf_variable INITRAMFS_COMPRESSION_LZMA y > + kernel_conf_variable INITRAMFS_SOURCE "\"initramfs.cpio.lzma\"" > + fi > + > + sed -e "${CONF_SED_SCRIPT}" \ > + < '${WORKDIR}/defconfig' >>'${S}/.config' > + > + yes '' | oe_runmake oldconfig > +} > + > +do_populate_sysroot() { > + : > +} > + > +do_install() { > + : > +} > + > diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb b/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb > new file mode 100644 > index 0000000..466efd4 > --- /dev/null > +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb > @@ -0,0 +1,15 @@ > +require linux-kexecboot.inc > + > +PR = "${INC_PR}.8" > +S = "${WORKDIR}/linux-${PV}" > + > +SRC_URI += "${KERNELORG_MIRROR}/linux/kernel/v3.x/linux-${PV}.tar.bz2;name=kernel \ > + ${KERNELORG_MIRROR}/linux/kernel/v3.x/patch-${PV}.10.bz2;apply=yes;name=stablepatch \ > + file://defconfig \ > + file://${LOGO_SIZE}/logo_linux_clut224.ppm.bz2 \ > + " > + > +SRC_URI[kernel.md5sum] = "8d43453f8159b2332ad410b19d86a931" > +SRC_URI[kernel.sha256sum] = "2573d2378c754b0c602b57586e9311e5b38c5d1e6c137f02873833633a4b9359" > +SRC_URI[stablepatch.md5sum] = "a8e1c25a93a685ec2a1c3a808715fe9d" > +SRC_URI[stablepatch.sha256sum] = "f25126052d1a083a415ddd313b40c7fcdb3742f40474cb4a826af7e43fee29d3" > -- > 1.7.3.4 > Sorry, I realized this patch adds specific defconfigs and patches which should be hosted in the BSP layer. PATCH V2 will follow soon. Regards Andrea ^ permalink raw reply [flat|nested] 15+ messages in thread
* [meta-oe][PATCH v2 6/6] meta-initramfs: add linux-kexecboot_3.1 from meta-handheld 2012-02-21 0:21 ` [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 " Andrea Adami 2012-02-21 0:52 ` Andrea Adami @ 2012-02-21 22:18 ` Andrea Adami 1 sibling, 0 replies; 15+ messages in thread From: Andrea Adami @ 2012-02-21 22:18 UTC (permalink / raw) To: openembedded-devel * and add revised linux-kexecboot.inc Signed-off-by: Andrea Adami <andrea.adami@gmail.com> --- .../recipes-kernel/linux/linux-kexecboot.inc | 124 ++++++++++++++++++++ .../recipes-kernel/linux/linux-kexecboot_3.1.bb | 13 ++ 2 files changed, 137 insertions(+), 0 deletions(-) create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc create mode 100644 meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc b/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc new file mode 100644 index 0000000..19c5ea9 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot.inc @@ -0,0 +1,124 @@ +DESCRIPTION = "Linux Kernel" +SECTION = "kernel" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" + +INC_PR = "r2" + +inherit kernel siteinfo + +DEPENDS += "xz-native" + +# Set the verbosity of kernel messages during runtime +# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour +# Note that you need i.e. loglevel=3 and master console on serial to protect bootlogo +CMDLINE_DEBUG ?= "loglevel=3" + +PACKAGES = "" +PROVIDES = "" + +KERNEL_IMAGE_BASE_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${PV}-${PR}-${MACHINE}" +KERNEL_IMAGE_SYMLINK_NAME = "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}" + +LOCALVERSION ?= "" + +# we want the smallest size +INITRAMFS_IMAGE = "initramfs-kexecboot-klibc-image" + +kernel_conf_variable() { + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;" + if test "$2" = "n" + then + echo "# CONFIG_$1 is not set" >> ${S}/.config + else + echo "CONFIG_$1=$2" >> ${S}/.config + fi +} + +do_configure_prepend() { + + echo "" > ${S}/.config + CONF_SED_SCRIPT="" + + # + # CONFIG_CMDLINE mangling + # + kernel_conf_variable CMDLINE_BOOL y + kernel_conf_variable CMDLINE "\"${CMDLINE} ${CMDLINE_DEBUG}\"" + + # mips and x86 + kernel_conf_variable CMDLINE_OVERRIDE y + + # sh only + kernel_conf_variable CMDLINE_OVERWRITE y + kernel_conf_variable CMDLINE_EXTEND n + + # + # endian support + # + if [ "${SITEINFO_ENDIANNESS}" = "be" ]; then + kernel_conf_variable CPU_BIG_ENDIAN y + fi + + # + # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it is going to be used + # + if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then + install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm + kernel_conf_variable LOGO y + kernel_conf_variable LOGO_LINUX_CLUT224 y + fi + + # When enabling thumb for userspace we also need thumb support in the kernel + if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then + kernel_conf_variable ARM_THUMB y + fi + + kernel_conf_variable LOCALVERSION "\"${LOCALVERSION}\"" + kernel_conf_variable LOCALVERSION_AUTO n + + # Force sane defaults for kexec-enabled kernels and keep size small + kernel_conf_variable BLK_DEV_INITRD y + kernel_conf_variable KEXEC y + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /=m/d;" + kernel_conf_variable MODULES n + if ${@base_contains("CMDLINE_DEBUG", "debug", "true", "false", d)}; then + kernel_conf_variable DEBUG_LL y + kernel_conf_variable PRINTK y + kernel_conf_variable EARLY_PRINTK y + kernel_conf_variable BUG y + kernel_conf_variable DEBUG_ERRORS y + kernel_conf_variable DEBUG_BUGVERBOSE y + kernel_conf_variable DEBUG_KERNEL y + else + kernel_conf_variable DEBUG_ERRORS n + kernel_conf_variable DEBUG_BUGVERBOSE n + kernel_conf_variable DEBUG_KERNEL n + fi + + # Force lzma for arm kernels only + if [ "${ARCH}" = "arm" ] ; then + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_KERNEL/d;" + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_RD/d;" + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_COMPRESSION/d;" + CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_INITRAMFS_SOURCE/d;" + kernel_conf_variable KERNEL_LZMA y + kernel_conf_variable RD_LZMA y + kernel_conf_variable INITRAMFS_COMPRESSION_LZMA y + kernel_conf_variable INITRAMFS_SOURCE "\"initramfs.cpio.lzma\"" + fi + + sed -e "${CONF_SED_SCRIPT}" \ + < '${WORKDIR}/defconfig' >>'${S}/.config' + + yes '' | oe_runmake oldconfig +} + +do_populate_sysroot() { + : +} + +do_install() { + : +} + diff --git a/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb b/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb new file mode 100644 index 0000000..b045ff7 --- /dev/null +++ b/meta-initramfs/recipes-kernel/linux/linux-kexecboot_3.1.bb @@ -0,0 +1,13 @@ +require linux-kexecboot.inc + +PR = "${INC_PR}.8" +S = "${WORKDIR}/linux-${PV}" + +SRC_URI += "${KERNELORG_MIRROR}/linux/kernel/v3.x/linux-${PV}.tar.bz2;name=kernel \ + ${KERNELORG_MIRROR}/linux/kernel/v3.x/patch-${PV}.10.bz2;apply=yes;name=stablepatch \ + " + +SRC_URI[kernel.md5sum] = "8d43453f8159b2332ad410b19d86a931" +SRC_URI[kernel.sha256sum] = "2573d2378c754b0c602b57586e9311e5b38c5d1e6c137f02873833633a4b9359" +SRC_URI[stablepatch.md5sum] = "a8e1c25a93a685ec2a1c3a808715fe9d" +SRC_URI[stablepatch.sha256sum] = "f25126052d1a083a415ddd313b40c7fcdb3742f40474cb4a826af7e43fee29d3" -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
end of thread, other threads:[~2012-02-23 0:14 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-02-21 0:21 [meta-oe][PATCH 0/6] create meta-initramfs layer Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH] meta-initramfs: initial layer commit Andrea Adami 2012-02-21 1:11 ` Koen Kooi 2012-02-21 21:33 ` [meta-oe][PATCH v2 1/6] meta-initramfs: initial commit Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 2/6] meta-initramfs: import klibc recipe and bbclass from meta-oe Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 3/3] meta-initramfs: add kexec-tools-klibc " Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 4/6] meta-initramfs: add initramfs-kexecboot images from meta-handheld Andrea Adami 2012-02-21 0:21 ` [meta-oe][PATCH 5/6] meta-initramfs: add kexecboot recipes " Andrea Adami 2012-02-22 10:06 ` Andrea Adami 2012-02-22 10:43 ` Martin Jansa 2012-02-22 12:41 ` Andrea Adami 2012-02-23 0:06 ` Paul Eggleton 2012-02-21 0:21 ` [meta-oe][PATCH 6/6] meta-initramfs: add linux-kexecboot_3.1 " Andrea Adami 2012-02-21 0:52 ` Andrea Adami 2012-02-21 22:18 ` [meta-oe][PATCH v2 " Andrea Adami
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.