aboutsummaryrefslogtreecommitdiff
path: root/busybox/abuild
blob: 0d3378b9453f087bbbba97b8de4deeb3be2b8f4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
name=busybox
version=1.37.0
release=6
source="https://${name}.net/downloads/${name}-${version}.tar.bz2
	0001-awk-fix-handling-of-literal-backslashes-in-replaceme.patch
	0016-ping-make-ping-work-without-root-privileges.patch
	0006-modinfo-add-k-option-for-kernel-version.patch
	0031-syslogd-fix-wrong-OPT_locallog-flag-detection.patch
	0034-adduser-remove-preconfigured-GECOS-full-name-field.patch
	kernel-6.8-tca.patch
	fsck-resolve-uuid.patch
	adduser-no-setgid.patch
	print-unicode.patch
	modprobe-kernel-version.patch
	busybox-suidwrapper.c
	mdev.conf
	udhcpc.conf
	net-static.conf
	acpid.run
	crond.run
	ntpd.run
	syslogd.run
	udhcpc.run
	klogd.run
	inetd.run
	httpd.run
	mdev.run
	net-static.run
	tty1.run
	tty2.run
	tty3.run
	tty4.run
	tty5.run
	ttyS0.run
	pause.c
	pause.1
	default.script"
sv="acpid.run
    crond.run
    ntpd.run
    syslogd.run
    klogd.run
    inetd.run
    httpd.run
    mdev.run
    tty1.run
    tty2.run
    tty3.run
    tty4.run
    tty5.run
    ttyS0.run
    net-static.run
    net-static.conf
    udhcpc.run
    udhcpc.conf"
    
_disable() {
	while [ "$1" ]; do
		sed "s/^CONFIG_${1}=y/# CONFIG_${1} is not set/" -i .config
		shift
	done
}

_enable() {
	while [ "$1" ]; do
		sed "s/^# CONFIG_${1}.*/CONFIG_${1}=y/" -i .config
		shift
	done
}

build() {
	make defconfig

	_disable XZCAT XZ UNXZ UNLZMA LZCAT LZMA             # provided by xz
	_disable STRINGS                                     # provided by llvm
	#_disable CLEAR RESET                                 # provided by ncurses
	_disable PATCH                                       # provided by patch (GNU patch works better)
	_disable BZCAT BUNZIP2 BZIP2                         # provided by bzip2
	_disable CHATTR LSATTR MKE2FS FINDFS MKFS_EXT2 BLKID # provided by e2fsprogs
	_disable MKDOSFS MKFS_VFAT                           # provided by dosfstools
	
	_disable FSCK_MINIX MKFS_MINIX DPKG DPKG_DEB MAN  #
	_disable MODPROBE_SMALL HUSH SHELL_HUSH RPM2CPIO  # JUNKS
	_disable RX CHAT LINUXRC RPM RUN_PARTS            #
	
	_enable STATIC                                          # enable static build
	_enable FEATURE_MODUTILS_ALIAS FEATURE_MODUTILS_SYMBOLS # enable some kmod features
	
	# install nologin to /sbin
	sed 's/BB_DIR_USR_SBIN/BB_DIR_SBIN/' -i util-linux/nologin.c
	
	# install diff to /bin
	sed 's/BB_DIR_USR_BIN/BB_DIR_BIN/' -i editors/diff.c
	
	make
	make CONFIG_PREFIX=$PKG install
	mkdir -p $PKG/usr/share/busybox
	cat .config > $PKG/usr/share/busybox/config

	${CC:-cc} -o $PKG/bin/busybox-suidwrapper $SRC/busybox-suidwrapper.c
	chmod u+s $PKG/bin/busybox-suidwrapper

	for i in $($PKG/bin/busybox-suidwrapper -l); do
		[ -e /bin/$i ] && ln -svf busybox-suidwrapper $PKG/bin/$i
		[ -e /usr/bin/$i ] && ln -svf ../../bin/busybox-suidwrapper $PKG/usr/bin/$i
	done

	# mdev	
	mkdir -p $PKG/etc
	install -m644 $SRC/mdev.conf $PKG/etc/mdev.conf

	# udhcpc script
	mkdir -p $PKG/usr/share/udhcpc
	install -m755 $SRC/default.script $PKG/usr/share/udhcpc/default.script
	
	# crond
	mkdir -p $PKG/var/spool/cron/crontabs

	${CC:-gcc} ${CFLAGS} $SRC/pause.c -o $PKG/usr/bin/pause
	install -d $PKG/usr/share/man/man1
	install -m644 $SRC/pause.1 $PKG/usr/share/man/man1/pause.1	
}