diff options
Diffstat (limited to 'target')
-rw-r--r-- | target/Makefile.in | 2 | ||||
-rw-r--r-- | target/device/Atmel/Makefile.in | 1 | ||||
-rw-r--r-- | target/device/Atmel/arch-arm/Config.in.linux.patches | 7 | ||||
-rw-r--r-- | target/device/Atmel/atngw100-base/Makefile.in | 1 | ||||
-rw-r--r-- | target/device/Atmel/atngw100/Makefile.in | 1 | ||||
-rw-r--r-- | target/device/Atmel/atstk1005/Makefile.in | 1 | ||||
-rw-r--r-- | target/device/Atmel/atstk100x/Makefile.in | 1 | ||||
-rw-r--r-- | target/device/KwikByte/kb9202/Makefile.in | 1 | ||||
-rw-r--r-- | target/device/valka/Makefile.in | 2 | ||||
-rw-r--r-- | target/device/xtensa/Makefile.in | 8 | ||||
-rw-r--r-- | target/device/xtensa/device_table.diff | 10 | ||||
-rw-r--r-- | target/device/xtensa/device_table.txt | 189 | ||||
-rw-r--r-- | target/generic/Makefile.in | 2 | ||||
-rw-r--r-- | target/linux/Makefile.in | 2 | ||||
-rw-r--r-- | target/linux/Makefile.in.advanced | 2 | ||||
-rw-r--r-- | target/makedevs/makedevs.c | 535 | ||||
-rw-r--r-- | target/makedevs/makedevs.mk | 30 | ||||
-rw-r--r-- | target/xtensa/defconfig | 1 |
18 files changed, 199 insertions, 597 deletions
diff --git a/target/Makefile.in b/target/Makefile.in index 48396d5d8..afe96a7f0 100644 --- a/target/Makefile.in +++ b/target/Makefile.in @@ -62,8 +62,6 @@ ifeq ($(BR2_TARGET_UBOOT),y) include target/u-boot/Makefile.in endif -include target/*/*.mk - # kernel rules # We already did add the kernel target to TARGETS and now just pull in the rules # to actually build this target. diff --git a/target/device/Atmel/Makefile.in b/target/device/Atmel/Makefile.in index bf7a2d108..c5dfffd70 100644 --- a/target/device/Atmel/Makefile.in +++ b/target/device/Atmel/Makefile.in @@ -8,7 +8,6 @@ BOARD_PATH:=$(call qstrip,$(BR2_BOARD_PATH)) ATMEL_TARGET:=$(ATMEL_PATH)/root TARGET_SKELETON:=$(ATMEL_TARGET)/target_skeleton -TARGET_DEVICE_TABLE:=$(ATMEL_TARGET)/device_table.txt TARGET_SKELETON_LINKS:=$(ATMEL_TARGET)/skel.tar.gz ifeq ($(BR2_avr32),y) diff --git a/target/device/Atmel/arch-arm/Config.in.linux.patches b/target/device/Atmel/arch-arm/Config.in.linux.patches index 0ea509196..8cd9a856a 100644 --- a/target/device/Atmel/arch-arm/Config.in.linux.patches +++ b/target/device/Atmel/arch-arm/Config.in.linux.patches @@ -2,11 +2,17 @@ choice prompt "Add AT91 specific patches" depends on BR2_KERNEL_ARCH_PATCH_ENABLED depends on BR2_TARGET_ATMEL && BR2_arm + default BR2_ARCH_AT91_2_6_30 if BR2_LINUX_2_6_30 default BR2_ARCH_AT91_2_6_28 if BR2_LINUX_2_6_28 default BR2_ARCH_AT91_2_6_27 if BR2_LINUX_2_6_27 help Select a patch to add to the Linux kernel +config BR2_ARCH_AT91_2_6_30 + bool "2.6.30" + help + Apply the at91 linux-2.6.30 patches + config BR2_ARCH_AT91_2_6_28 bool "2.6.28" help @@ -22,6 +28,7 @@ config BR2_KERNEL_ARCH_PATCH_VERSION string depends on BR2_KERNEL_ARCH_PATCH_ENABLED depends on BR2_TARGET_ATMEL && BR2_arm + default "2.6.30" if BR2_ARCH_AT91_2_6_30 default "2.6.28" if BR2_ARCH_AT91_2_6_28 default "2.6.27" if BR2_ARCH_AT91_2_6_27 diff --git a/target/device/Atmel/atngw100-base/Makefile.in b/target/device/Atmel/atngw100-base/Makefile.in index 467951f08..c2f296970 100644 --- a/target/device/Atmel/atngw100-base/Makefile.in +++ b/target/device/Atmel/atngw100-base/Makefile.in @@ -1,5 +1,4 @@ ifeq ($(BR2_TARGET_AVR32_ATNGW100_BASE),y) UBOOT_BOARD_NAME:=atngw100 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/Atmel/atngw100/Makefile.in b/target/device/Atmel/atngw100/Makefile.in index 3c34d8d4a..7e02d8e83 100644 --- a/target/device/Atmel/atngw100/Makefile.in +++ b/target/device/Atmel/atngw100/Makefile.in @@ -1,5 +1,4 @@ ifeq ($(BR2_TARGET_AVR32_ATNGW100),y) UBOOT_BOARD_NAME:=atngw100 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/Atmel/atstk1005/Makefile.in b/target/device/Atmel/atstk1005/Makefile.in index 4c3aadffb..84b31070d 100644 --- a/target/device/Atmel/atstk1005/Makefile.in +++ b/target/device/Atmel/atstk1005/Makefile.in @@ -1,4 +1,3 @@ ifeq ($(strip $(BR2_TARGET_AVR32_ATSTK1005)),y) TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/Atmel/atstk100x/Makefile.in b/target/device/Atmel/atstk100x/Makefile.in index e9dd4dc42..395c74a6e 100644 --- a/target/device/Atmel/atstk100x/Makefile.in +++ b/target/device/Atmel/atstk100x/Makefile.in @@ -1,5 +1,4 @@ ifeq ($(strip $(BR2_TARGET_AVR32_ATSTK1002)),y) UBOOT_BOARD_NAME:=atstk1002 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/KwikByte/kb9202/Makefile.in b/target/device/KwikByte/kb9202/Makefile.in index 5d743cec5..0048dcc3a 100644 --- a/target/device/KwikByte/kb9202/Makefile.in +++ b/target/device/KwikByte/kb9202/Makefile.in @@ -1,4 +1,3 @@ BOARD_PATH=target/device/KwikByte/kb9202 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt diff --git a/target/device/valka/Makefile.in b/target/device/valka/Makefile.in index 01422465e..fec4d88d5 100644 --- a/target/device/valka/Makefile.in +++ b/target/device/valka/Makefile.in @@ -2,7 +2,6 @@ ifeq ($(BR2_TARGET_VALKA),y) VALKA_PATH= target/device/valka TARGET_SKELETON=$(VALKA_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(VALKA_PATH)/device_table.txt KERNEL_HEADERS_PATCH_DIR=target/device/Atmel/arch-avr32/kernel-headers-2.6.28.2 valka_status: @@ -10,7 +9,6 @@ valka_status: @echo VALKA_PATH = $(VALKA_PATH) @echo BOARD_NAME = $(BR_BOARD_NAME) @echo TARGET_SKELETON = $(TARGET_SKELETON) - @echo TARGET_DEVICE_TABLE = $(TARGET_DEVICE_TABLE) @echo BR2_PACKAGE_BUSYBOX_CONFIG = $(BR2_PACKAGE_BUSYBOX_CONFIG) @echo BR2_PACKAGE_LINUX_KCONFIG = $(BR2_PACKAGE_LINUX_KCONFIG) @echo "*****************************************************************" diff --git a/target/device/xtensa/Makefile.in b/target/device/xtensa/Makefile.in index 7c95c239b..f878a822a 100644 --- a/target/device/xtensa/Makefile.in +++ b/target/device/xtensa/Makefile.in @@ -6,12 +6,4 @@ ifeq ($(strip $(BR2_TARGET_XTENSA_XTAV60)),y) TARGET_SKELETON_PATCH:=target/device/xtensa endif -# Custom device table patch used when targeting ISS: -OLD_TARGET_DEVICE_TABLE := $(TARGET_DEVICE_TABLE) -TARGET_DEVICE_TABLE := target/device/xtensa/device_table.txt -makedevs: - @echo "Applying patch to $(TARGET_DEVICE_TABLE)" - cp -f $(OLD_TARGET_DEVICE_TABLE) $(TARGET_DEVICE_TABLE) - patch -p1 -g 0 < target/device/xtensa/device_table.diff - endif diff --git a/target/device/xtensa/device_table.diff b/target/device/xtensa/device_table.diff deleted file mode 100644 index 12f682546..000000000 --- a/target/device/xtensa/device_table.diff +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/target/generic/device_table.txt b/target/generic/device_table.txt -index f4b16ba..b87bf69 100644 ---- a/target/device/xtensa/device_table.txt -+++ b/target/device/xtensa/device_table.txt -@@ -169,3 +169,5 @@ - #/dev/mcd b 640 0 0 23 0 0 0 - #/dev/optcd b 640 0 0 17 0 0 0 - -+/dev/simdisk0 b 640 0 0 240 0 0 0 -+/dev/simdisk1 b 640 0 0 240 1 0 0 diff --git a/target/device/xtensa/device_table.txt b/target/device/xtensa/device_table.txt new file mode 100644 index 000000000..d0c746797 --- /dev/null +++ b/target/device/xtensa/device_table.txt @@ -0,0 +1,189 @@ +# When building a target filesystem, it is desirable to not have to +# become root and then run 'mknod' a thousand times. Using a device +# table you can create device nodes and directories "on the fly". +# +# This is a sample device table file for use with genext2fs. You can +# do all sorts of interesting things with a device table file. For +# example, if you want to adjust the permissions on a particular file +# you can just add an entry like: +# /sbin/foobar f 2755 0 0 - - - - - +# and (assuming the file /sbin/foobar exists) it will be made setuid +# root (regardless of what its permissions are on the host filesystem. +# Furthermore, you can use a single table entry to create a many device +# minors. For example, if I wanted to create /dev/hda and /dev/hda[0-15] +# I could just use the following two table entries: +# /dev/hda b 640 0 0 3 0 0 0 - +# /dev/hda b 640 0 0 3 1 1 1 15 +# +# Device table entries take the form of: +# <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> +# where name is the file name, type can be one of: +# f A regular file +# d Directory +# c Character special device file +# b Block special device file +# p Fifo (named pipe) +# uid is the user id for the target file, gid is the group id for the +# target file. The rest of the entries (major, minor, etc) apply only +# to device special files. + +# Have fun +# -Erik Andersen <andersen@codepoet.org> +# + +#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> +/dev d 755 0 0 - - - - - +/dev/pts d 755 0 0 - - - - - +/dev/shm d 755 0 0 - - - - - +/tmp d 1777 0 0 - - - - - +/etc d 755 0 0 - - - - - +/home/default d 2755 1000 1000 - - - - - +#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> +/bin/busybox f 4755 0 0 - - - - - +/etc/shadow f 600 0 0 - - - - - +/etc/passwd f 644 0 0 - - - - - +/etc/network/if-up.d d 755 0 0 - - - - - +/etc/network/if-pre-up.d d 755 0 0 - - - - - +/etc/network/if-down.d d 755 0 0 - - - - - +/etc/network/if-post-down.d d 755 0 0 - - - - - +/usr/share/udhcpc/default.script f 755 0 0 - - - - - +# uncomment this to allow starting x as non-root +#/usr/X11R6/bin/Xfbdev f 4755 0 0 - - - - - +# Normal system devices +/dev/mem c 640 0 0 1 1 0 0 - +/dev/kmem c 640 0 0 1 2 0 0 - +/dev/null c 666 0 0 1 3 0 0 - +/dev/zero c 666 0 0 1 5 0 0 - +/dev/random c 666 0 0 1 8 0 0 - +/dev/urandom c 666 0 0 1 9 0 0 - +/dev/ram b 640 0 0 1 1 0 0 - +/dev/ram b 640 0 0 1 0 0 1 4 +/dev/loop b 640 0 0 7 0 0 1 2 +/dev/rtc c 640 0 0 10 135 - - - +/dev/console c 666 0 0 5 1 - - - +/dev/tty c 666 0 0 5 0 - - - +/dev/tty c 666 0 0 4 0 0 1 8 +/dev/ttyp c 666 0 0 3 0 0 1 10 +/dev/ptyp c 666 0 0 2 0 0 1 10 +/dev/ptmx c 666 0 0 5 2 - - - +/dev/ttyP c 666 0 0 57 0 0 1 4 +/dev/ttyS c 666 0 0 4 64 0 1 4 +/dev/fb c 640 0 5 29 0 0 1 4 +#/dev/ttySA c 666 0 0 204 5 0 1 3 +/dev/psaux c 666 0 0 10 1 0 0 - +#/dev/ppp c 666 0 0 108 0 - - - +/dev/ttyCPM c 666 0 0 204 46 0 1 4 +/dev/ttyAMA c 666 0 0 204 64 0 1 4 +/dev/ttySAC c 666 0 0 204 64 0 1 4 +/dev/ttyPSC c 666 0 0 204 148 0 1 4 +/dev/ttyUL c 666 0 0 204 187 0 1 4 +/dev/ttymxc c 666 0 0 207 16 0 1 3 + +# Input stuff +/dev/input d 755 0 0 - - - - - +/dev/input/mice c 640 0 0 13 63 0 0 - +/dev/input/mouse c 660 0 0 13 32 0 1 4 +/dev/input/event c 660 0 0 13 64 0 1 4 +#/dev/input/js c 660 0 0 13 0 0 1 4 + + +# MTD stuff +/dev/mtd c 640 0 0 90 0 0 2 4 +/dev/mtdblock b 640 0 0 31 0 0 1 4 + +#Tun/tap driver +/dev/net d 755 0 0 - - - - - +/dev/net/tun c 660 0 0 10 200 - - - + +# Audio stuff +#/dev/audio c 666 0 29 14 4 - - - +#/dev/audio1 c 666 0 29 14 20 - - - +#/dev/dsp c 666 0 29 14 3 - - - +#/dev/dsp1 c 666 0 29 14 19 - - - +#/dev/sndstat c 666 0 29 14 6 - - - + +# User-mode Linux stuff +#/dev/ubda b 640 0 0 98 0 0 0 - +#/dev/ubda b 640 0 0 98 1 1 1 15 + +# IDE Devices +/dev/hda b 640 0 0 3 0 0 0 - +/dev/hda b 640 0 0 3 1 1 1 15 +/dev/hdb b 640 0 0 3 64 0 0 - +/dev/hdb b 640 0 0 3 65 1 1 15 +#/dev/hdc b 640 0 0 22 0 0 0 - +#/dev/hdc b 640 0 0 22 1 1 1 15 +#/dev/hdd b 640 0 0 22 64 0 0 - +#/dev/hdd b 640 0 0 22 65 1 1 15 +#/dev/hde b 640 0 0 33 0 0 0 - +#/dev/hde b 640 0 0 33 1 1 1 15 +#/dev/hdf b 640 0 0 33 64 0 0 - +#/dev/hdf b 640 0 0 33 65 1 1 15 +#/dev/hdg b 640 0 0 34 0 0 0 - +#/dev/hdg b 640 0 0 34 1 1 1 15 +#/dev/hdh b 640 0 0 34 64 0 0 - +#/dev/hdh b 640 0 0 34 65 1 1 15 + +# SCSI Devices +/dev/sda b 640 0 0 8 0 0 0 - +/dev/sda b 640 0 0 8 1 1 1 15 +/dev/sdb b 640 0 0 8 16 0 0 - +/dev/sdb b 640 0 0 8 17 1 1 15 +#/dev/sdc b 640 0 0 8 32 0 0 - +#/dev/sdc b 640 0 0 8 33 1 1 15 +#/dev/sdd b 640 0 0 8 48 0 0 - +#/dev/sdd b 640 0 0 8 49 1 1 15 +#/dev/sde b 640 0 0 8 64 0 0 - +#/dev/sde b 640 0 0 8 65 1 1 15 +#/dev/sdf b 640 0 0 8 80 0 0 - +#/dev/sdf b 640 0 0 8 81 1 1 15 +#/dev/sdg b 640 0 0 8 96 0 0 - +#/dev/sdg b 640 0 0 8 97 1 1 15 +#/dev/sdh b 640 0 0 8 112 0 0 - +#/dev/sdh b 640 0 0 8 113 1 1 15 +#/dev/sg c 640 0 0 21 0 0 1 15 +#/dev/scd b 640 0 0 11 0 0 1 15 +#/dev/st c 640 0 0 9 0 0 1 8 +#/dev/nst c 640 0 0 9 128 0 1 8 +#/dev/st c 640 0 0 9 32 1 1 4 +#/dev/st c 640 0 0 9 64 1 1 4 +#/dev/st c 640 0 0 9 96 1 1 4 + +# USB block devices (ub driver) +/dev/uba b 640 0 0 180 0 0 0 - +/dev/uba b 640 0 0 180 1 1 1 6 +/dev/ubb b 640 0 0 180 8 0 0 - +/dev/ubb b 640 0 0 180 65 1 1 6 + +# Floppy disk devices +#/dev/fd b 640 0 0 2 0 0 1 2 +#/dev/fd0d360 b 640 0 0 2 4 0 0 - +#/dev/fd1d360 b 640 0 0 2 5 0 0 - +#/dev/fd0h1200 b 640 0 0 2 8 0 0 - +#/dev/fd1h1200 b 640 0 0 2 9 0 0 - +#/dev/fd0u1440 b 640 0 0 2 28 0 0 - +#/dev/fd1u1440 b 640 0 0 2 29 0 0 - +#/dev/fd0u2880 b 640 0 0 2 32 0 0 - +#/dev/fd1u2880 b 640 0 0 2 33 0 0 - + +# All the proprietary cdrom devices in the world +#/dev/aztcd b 640 0 0 29 0 0 0 - +#/dev/bpcd b 640 0 0 41 0 0 0 - +#/dev/capi20 c 640 0 0 68 0 0 1 2 +#/dev/cdu31a b 640 0 0 15 0 0 0 - +#/dev/cdu535 b 640 0 0 24 0 0 0 - +#/dev/cm206cd b 640 0 0 32 0 0 0 - +#/dev/sjcd b 640 0 0 18 0 0 0 - +#/dev/sonycd b 640 0 0 15 0 0 0 - +#/dev/gscd b 640 0 0 16 0 0 0 - +#/dev/sbpcd b 640 0 0 25 0 0 0 - +#/dev/sbpcd b 640 0 0 25 0 0 1 4 +#/dev/mcd b 640 0 0 23 0 0 0 - +#/dev/optcd b 640 0 0 17 0 0 0 - + +# I2C device nodes +/dev/i2c- c 666 0 0 89 0 0 1 4 + +# Xtensa special devices +/dev/simdisk0 b 640 0 0 240 0 0 0 +/dev/simdisk1 b 640 0 0 240 1 0 0 diff --git a/target/generic/Makefile.in b/target/generic/Makefile.in index f77f9698c..9a56f7604 100644 --- a/target/generic/Makefile.in +++ b/target/generic/Makefile.in @@ -1,10 +1,8 @@ # Default target skeleton stuff, may be overridden TARGET_SKELETON=target/generic/target_skeleton -TARGET_DEVICE_TABLE=target/generic/device_table.txt ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y) TARGET_SKELETON=target/generic/target_busybox_skeleton -TARGET_DEVICE_TABLE=target/generic/mini_device_table.txt endif TARGET_GENERIC_HOSTNAME:=$(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) diff --git a/target/linux/Makefile.in b/target/linux/Makefile.in index f3c7807c7..41e482131 100644 --- a/target/linux/Makefile.in +++ b/target/linux/Makefile.in @@ -153,7 +153,7 @@ endif $(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config $(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) - echo "CONFIG_INITRAMFS_SOURCE=\"$(INITRAMFS_TARGET)\"" >> \ + echo "CONFIG_INITRAMFS_SOURCE=\"$(BINARIES_DIR)/rootfs.initramfs\"" >> \ $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config diff --git a/target/linux/Makefile.in.advanced b/target/linux/Makefile.in.advanced index f87d14d1b..745224d3f 100644 --- a/target/linux/Makefile.in.advanced +++ b/target/linux/Makefile.in.advanced @@ -344,7 +344,7 @@ endif $(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config $(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) - echo "CONFIG_INITRAMFS_SOURCE=\"$(INITRAMFS_TARGET)\"" >> \ + echo "CONFIG_INITRAMFS_SOURCE=\"$(BINARIES_DIR)/rootfs.initramfs\"" >> \ $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config diff --git a/target/makedevs/makedevs.c b/target/makedevs/makedevs.c deleted file mode 100644 index 5ca45e9ae..000000000 --- a/target/makedevs/makedevs.c +++ /dev/null @@ -1,535 +0,0 @@ -/* vi: set sw=4 ts=4: */ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * 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 Library 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 -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <getopt.h> -#include <time.h> -#include <pwd.h> -#include <grp.h> -#include <unistd.h> -#include <ctype.h> -#include <errno.h> -#include <libgen.h> -#include <stdarg.h> -#include <sys/stat.h> -#include <sys/types.h> -#ifndef __APPLE__ -#include <sys/sysmacros.h> /* major() and minor() */ -#endif - -const char *bb_applet_name; - -void bb_verror_msg(const char *s, va_list p) -{ - fflush(stdout); - fprintf(stderr, "%s: ", bb_applet_name); - vfprintf(stderr, s, p); -} - -void bb_error_msg(const char *s, ...) -{ - va_list p; - - va_start(p, s); - bb_verror_msg(s, p); - va_end(p); - putc('\n', stderr); -} - -void bb_error_msg_and_die(const char *s, ...) -{ - va_list p; - - va_start(p, s); - bb_verror_msg(s, p); - va_end(p); - putc('\n', stderr); - exit(1); -} - -void bb_vperror_msg(const char *s, va_list p) -{ - int err=errno; - if(s == 0) s = ""; - bb_verror_msg(s, p); - if (*s) s = ": "; - fprintf(stderr, "%s%s\n", s, strerror(err)); -} - -void bb_perror_msg(const char *s, ...) -{ - va_list p; - - va_start(p, s); - bb_vperror_msg(s, p); - va_end(p); -} - -void bb_perror_msg_and_die(const char *s, ...) -{ - va_list p; - - va_start(p, s); - bb_vperror_msg(s, p); - va_end(p); - exit(1); -} - -FILE *bb_xfopen(const char *path, const char *mode) -{ - FILE *fp; - if ((fp = fopen(path, mode)) == NULL) - bb_perror_msg_and_die("%s", path); - return fp; -} - -enum { - FILEUTILS_PRESERVE_STATUS = 1, - FILEUTILS_DEREFERENCE = 2, - FILEUTILS_RECUR = 4, - FILEUTILS_FORCE = 8, - FILEUTILS_INTERACTIVE = 16 -}; -int bb_make_directory (char *path, long mode, int flags) -{ - mode_t mask; - const char *fail_msg; - char *s = path; - char c; - struct stat st; - - mask = umask(0); - if (mode == -1) { - umask(mask); - mode = (S_IXUSR | S_IXGRP | S_IXOTH | - S_IWUSR | S_IWGRP | S_IWOTH | - S_IRUSR | S_IRGRP | S_IROTH) & ~mask; - } else { - umask(mask & ~0300); - } - - do { - c = 0; - - if (flags & FILEUTILS_RECUR) { /* Get the parent. */ - /* Bypass leading non-'/'s and then subsequent '/'s. */ - while (*s) { - if (*s == '/') { - do { - ++s; - } while (*s == '/'); - c = *s; /* Save the current char */ - *s = 0; /* and replace it with nul. */ - break; - } - ++s; - } - } - - if (mkdir(path, 0777) < 0) { - /* If we failed for any other reason than the directory - * already exists, output a diagnostic and return -1.*/ - if ((errno != EEXIST && errno != EISDIR) - || !(flags & FILEUTILS_RECUR) - || (stat(path, &st) < 0 || !S_ISDIR(st.st_mode))) { - fail_msg = "create"; - umask(mask); - break; - } - /* Since the directory exists, don't attempt to change - * permissions if it was the full target. Note that - * this is not an error conditon. */ - if (!c) { - umask(mask); - return 0; - } - } - - if (!c) { - /* Done. If necessary, updated perms on the newly - * created directory. Failure to update here _is_ - * an error.*/ - umask(mask); - if ((mode != -1) && (chmod(path, mode) < 0)){ - fail_msg = "set permissions of"; - break; - } - return 0; - } - - /* Remove any inserted nul from the path (recursive mode). */ - *s = c; - - } while (1); - - bb_perror_msg ("Cannot %s directory `%s'", fail_msg, path); - return -1; -} - -const char * const bb_msg_memory_exhausted = "memory exhausted"; - -void *xmalloc(size_t size) -{ - void *ptr = malloc(size); - if (ptr == NULL && size != 0) - bb_error_msg_and_die(bb_msg_memory_exhausted); - return ptr; -} - -void *xcalloc(size_t nmemb, size_t size) -{ - void *ptr = calloc(nmemb, size); - if (ptr == NULL && nmemb != 0 && size != 0) - bb_error_msg_and_die(bb_msg_memory_exhausted); - return ptr; -} - -void *xrealloc(void *ptr, size_t size) -{ - ptr = realloc(ptr, size); - if (ptr == NULL && size != 0) - bb_error_msg_and_die(bb_msg_memory_exhausted); - return ptr; -} - -char *private_get_line_from_file(FILE *file, int c) -{ -#define GROWBY (80) /* how large we will grow strings by */ - - int ch; - int idx = 0; - char *linebuf = NULL; - int linebufsz = 0; - - while ((ch = getc(file)) != EOF) { - /* grow the line buffer as necessary */ - if (idx > linebufsz - 2) { - linebuf = xrealloc(linebuf, linebufsz += GROWBY); - } - linebuf[idx++] = (char)ch; - if (!ch) return linebuf; - if (c<2 && ch == '\n') { - if (c) { - --idx; - } - break; - } - } - if (linebuf) { - if (ferror(file)) { - free(linebuf); - return NULL; - } - linebuf[idx] = 0; - } - return linebuf; -} - -char *bb_get_chomped_line_from_file(FILE *file) -{ - return private_get_line_from_file(file, 1); -} - -long my_getpwnam(const char *name) -{ - struct passwd *myuser; - - myuser = getpwnam(name); - if (myuser==NULL) - bb_error_msg_and_die("unknown user name: %s", name); - - return myuser->pw_uid; -} - -long my_getgrnam(const char *name) -{ - struct group *mygroup; - - mygroup = getgrnam(name); - if (mygroup==NULL) - bb_error_msg_and_die("unknown group name: %s", name); - - return (mygroup->gr_gid); -} - -unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *)) -{ - unsigned long r; - char *p; - - r = strtoul(s, &p, 10); - if (*p || (s == p)) { - r = my_getxxnam(s); - } - - return r; -} - -char * last_char_is(const char *s, int c) -{ - char *sret = (char *)s; - if (sret) { - sret = strrchr(sret, c); - if(sret != NULL && *(sret+1) != 0) - sret = NULL; - } - return sret; -} - -void bb_xasprintf(char **string_ptr, const char *format, ...) -{ - va_list p; - int r; - - va_start(p, format); - r = vasprintf(string_ptr, format, p); - va_end(p); - - if (r < 0) { - bb_perror_msg_and_die("bb_xasprintf"); - } -} - -char *concat_path_file(const char *path, const char *filename) -{ - char *outbuf; - char *lc; - - if (!path) - path = ""; - lc = last_char_is(path, '/'); - while (*filename == '/') - filename++; - bb_xasprintf(&outbuf, "%s%s%s", path, (lc==NULL ? "/" : ""), filename); - - return outbuf; -} - -void bb_show_usage(void) -{ - fprintf(stderr, "%s: [-d device_table] rootdir\n\n", bb_applet_name); - fprintf(stderr, "Creates a batch of special files as specified in a device table.\n"); - fprintf(stderr, "Device table entries take the form of:\n"); - fprintf(stderr, "type mode user group major minor start increment count\n\n"); - fprintf(stderr, "Where name is the file name, type can be one of:\n"); - fprintf(stderr, " f A regular file\n"); - fprintf(stderr, " d Directory\n"); - fprintf(stderr, " c Character special device file\n"); - fprintf(stderr, " b Block special device file\n"); - fprintf(stderr, " p Fifo (named pipe)\n"); - fprintf(stderr, "uid is the user id for the target file, gid is the group id for the\n"); - fprintf(stderr, "target file. The rest of the entries (major, minor, etc) apply to\n"); - fprintf(stderr, "to device special files. A '-' may be used for blank entries.\n\n"); - fprintf(stderr, "For example:\n"); - fprintf(stderr, "<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\n"); - fprintf(stderr, "/dev d 755 0 0 - - - - -\n"); - fprintf(stderr, "/dev/console c 666 0 0 5 1 - - -\n"); - fprintf(stderr, "/dev/null c 666 0 0 1 3 0 0 -\n"); - fprintf(stderr, "/dev/zero c 666 0 0 1 5 0 0 -\n"); - fprintf(stderr, "/dev/hda b 640 0 0 3 0 0 0 -\n"); - fprintf(stderr, "/dev/hda b 640 0 0 3 1 1 1 15\n\n"); - fprintf(stderr, "Will Produce:\n"); - fprintf(stderr, "/dev\n"); - fprintf(stderr, "/dev/console\n"); - fprintf(stderr, "/dev/null\n"); - fprintf(stderr, "/dev/zero\n"); - fprintf(stderr, "/dev/hda\n"); - fprintf(stderr, "/dev/hda[0-15]\n"); - exit(1); -} - -int main(int argc, char **argv) -{ - int opt; - FILE *table = stdin; - char *rootdir = NULL; - char *line = NULL; - int linenum = 0; - int ret = EXIT_SUCCESS; - - bb_applet_name = basename(argv[0]); - - while ((opt = getopt(argc, argv, "d:")) != -1) { - switch(opt) { - case 'd': - table = bb_xfopen((line=optarg), "r"); - break; - default: - bb_show_usage(); - } - } - - if (optind >= argc || (rootdir=argv[optind])==NULL) { - bb_error_msg_and_die("root directory not speficied"); - } - - if (chdir(rootdir) != 0) { - bb_perror_msg_and_die("Couldnt chdir to %s", rootdir); - } - - umask(0); - - printf("rootdir=%s\n", rootdir); - if (line) { - printf("table='%s'\n", line); - } else { - printf("table=<stdin>\n"); - } - - while ((line = bb_get_chomped_line_from_file(table))) { - char type; - unsigned int mode = 0755; - unsigned int major = 0; - unsigned int minor = 0; - unsigned int count = 0; - unsigned int increment = 0; - unsigned int start = 0; - char name[41]; - char user[41]; - char group[41]; - char *full_name; - uid_t uid; - gid_t gid; - - linenum++; - - if ((2 > sscanf(line, "%40s %c %o %40s %40s %u %u %u %u %u", name, - &type, &mode, user, group, &major, - &minor, &start, &increment, &count)) || - ((major | minor | start | count | increment) > 255)) - { - if (*line=='\0' || *line=='#' || isspace(*line)) - continue; - bb_error_msg("line %d invalid: '%s'\n", linenum, line); - ret = EXIT_FAILURE; - continue; - } - if (name[0] == '#') { - continue; - } - if (*group) { - gid = get_ug_id(group, my_getgrnam); - } else { - gid = getgid(); - } - if (*user) { - uid = get_ug_id(user, my_getpwnam); - } else { - uid = getuid(); - } - full_name = concat_path_file(rootdir, name); - - if (type == 'd') { - bb_make_directory(full_name, mode | S_IFDIR, FILEUTILS_RECUR); - if (chown(full_name, uid, gid) == -1) { - bb_perror_msg("line %d: chown failed for %s", linenum, full_name); - ret = EXIT_FAILURE; - goto loop; - } - if ((mode != -1) && (chmod(full_name, mode) < 0)){ - bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); - ret = EXIT_FAILURE; - goto loop; - } - } else if (type == 'f') { - struct stat st; - if ((stat(full_name, &st) < 0 || !S_ISREG(st.st_mode))) { - bb_perror_msg("line %d: regular file '%s' does not exist", linenum, full_name); - ret = EXIT_FAILURE; - goto loop; - } - if (chown(full_name, uid, gid) == -1) { - bb_perror_msg("line %d: chown failed for %s", linenum, full_name); - ret = EXIT_FAILURE; - goto loop; - } - if ((mode != -1) && (chmod(full_name, mode) < 0)){ - bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); - ret = EXIT_FAILURE; - goto loop; - } - } else - { - dev_t rdev; - - if (type == 'p') { - mode |= S_IFIFO; - } - else if (type == 'c') { - mode |= S_IFCHR; - } - else if (type == 'b') { - mode |= S_IFBLK; - } else { - bb_error_msg("line %d: Unsupported file type %c", linenum, type); - ret = EXIT_FAILURE; - goto loop; - } - - if (count > 0) { - int i; - char *full_name_inc; - - full_name_inc = xmalloc(strlen(full_name) + 4); - for (i = start; i < count; i++) { - sprintf(full_name_inc, "%s%d", full_name, i); - rdev = makedev(major, minor + (i * increment - start)); - if (mknod(full_name_inc, mode, rdev) == -1) { - bb_perror_msg("line %d: Couldnt create node %s", linenum, full_name_inc); - ret = EXIT_FAILURE; - } - else if (chown(full_name_inc, uid, gid) == -1) { - bb_perror_msg("line %d: chown failed for %s", linenum, full_name_inc); - ret = EXIT_FAILURE; - } - if ((mode != -1) && (chmod(full_name_inc, mode) < 0)){ - bb_perror_msg("line %d: chmod failed for %s", linenum, full_name_inc); - ret = EXIT_FAILURE; - } - } - free(full_name_inc); - } else { - rdev = makedev(major, minor); - if (mknod(full_name, mode, rdev) == -1) { - bb_perror_msg("line %d: Couldnt create node %s", linenum, full_name); - ret = EXIT_FAILURE; - } - else if (chown(full_name, uid, gid) == -1) { - bb_perror_msg("line %d: chown failed for %s", linenum, full_name); - ret = EXIT_FAILURE; - } - if ((mode != -1) && (chmod(full_name, mode) < 0)){ - bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); - ret = EXIT_FAILURE; - } - } - } -loop: - free(line); - free(full_name); - } - fclose(table); - - if (system("/bin/sync")) - bb_error_msg("sync failed, continuing anyway"); - - return 0; -} diff --git a/target/makedevs/makedevs.mk b/target/makedevs/makedevs.mk deleted file mode 100644 index fe426cafe..000000000 --- a/target/makedevs/makedevs.mk +++ /dev/null @@ -1,30 +0,0 @@ -############################################################# -# -# build makedevs to run on the build system, in order to create -# device nodes and whatnot for the target device, in conjunction -# with fakeroot. -# -############################################################# -MAKEDEVS_DIR=$(BUILD_DIR)/makedevs-host - -$(MAKEDEVS_DIR)/makedevs.c: target/makedevs/makedevs.c - rm -rf $(MAKEDEVS_DIR) - mkdir $(MAKEDEVS_DIR) - cp target/makedevs/makedevs.c $(MAKEDEVS_DIR) - -$(MAKEDEVS_DIR)/makedevs: $(MAKEDEVS_DIR)/makedevs.c - $(HOSTCC) -Wall -Werror -O2 $(MAKEDEVS_DIR)/makedevs.c -o $@ - -$(HOST_DIR)/usr/bin/makedevs: $(MAKEDEVS_DIR)/makedevs - $(INSTALL) -m 755 $^ $@ - -makedevs: $(HOST_DIR)/usr/bin/makedevs - -makedevs-source: - -makedevs-clean: - rm -rf $(MAKEDEVS_DIR)/makedevs - -makedevs-dirclean: - rm -rf $(MAKEDEVS_DIR) - diff --git a/target/xtensa/defconfig b/target/xtensa/defconfig index f03f7a6d9..49b7eb3fd 100644 --- a/target/xtensa/defconfig +++ b/target/xtensa/defconfig @@ -104,6 +104,7 @@ BR2_PACKAGE_PORTMAP=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/xtensa/device_table.txt" BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_GZIP=y BR2_TARGET_ROOTFS_INITRAMFS=y |