aboutsummaryrefslogtreecommitdiff
path: root/busybox/abuild
blob: 08c5170482c5fbd2dc23422c67b1d149ade1e03c (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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name=busybox
version=1.37.0
release=7
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
	_enable NETCAT                                          # enable netcat
	
	# 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

	cd $PKG
	rm \
	bin/chattr \
	bin/lsattr \
	sbin/blkid \
	sbin/findfs \
	sbin/mkdosfs \
	sbin/mke2fs \
	sbin/mkfs.ext2 \
	sbin/mkfs.vfat \
	usr/bin/bunzip2 \
	usr/bin/bzcat \
	usr/bin/bzip2 \
	usr/bin/lzcat \
	usr/bin/lzma \
	usr/bin/patch \
	usr/bin/unlzma \
	usr/bin/unxz \
	usr/bin/xz \
	usr/bin/xzcat
}