/
package.mk
210 lines (173 loc) · 7.24 KB
/
package.mk
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="busybox"
PKG_VERSION="1.36.1"
PKG_SHA256="b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314"
PKG_LICENSE="GPL"
PKG_SITE="http://www.busybox.net"
PKG_URL="https://busybox.net/downloads/${PKG_NAME}-${PKG_VERSION}.tar.bz2"
PKG_DEPENDS_TARGET="toolchain hdparm dosfstools e2fsprogs zip usbutils parted procps-ng libtirpc"
PKG_DEPENDS_INIT="toolchain libtirpc"
PKG_LONGDESC="BusyBox combines tiny versions of many common UNIX utilities into a single small executable."
PKG_BUILD_FLAGS="-parallel"
# nano text editor
if [ "${NANO_EDITOR}" = "yes" ]; then
PKG_DEPENDS_TARGET+=" nano"
fi
if [ "${TARGET_ARCH}" = "x86_64" ]; then
PKG_DEPENDS_TARGET+=" pciutils"
fi
pre_build_target() {
PKG_MAKE_OPTS_TARGET="ARCH=${TARGET_ARCH} \
HOSTCC=${HOST_CC} \
CROSS_COMPILE=${TARGET_PREFIX} \
KBUILD_VERBOSE=1 \
install"
mkdir -p ${PKG_BUILD}/.${TARGET_NAME}
cp -RP ${PKG_BUILD}/* ${PKG_BUILD}/.${TARGET_NAME}
}
pre_build_init() {
PKG_MAKE_OPTS_INIT="ARCH=${TARGET_ARCH} \
HOSTCC=${HOST_CC} \
CROSS_COMPILE=${TARGET_PREFIX} \
KBUILD_VERBOSE=1 \
install"
mkdir -p ${PKG_BUILD}/.${TARGET_NAME}-init
cp -RP ${PKG_BUILD}/* ${PKG_BUILD}/.${TARGET_NAME}-init
}
configure_target() {
cd ${PKG_BUILD}/.${TARGET_NAME}
find_file_path config/busybox-target.conf
cp ${FOUND_PATH} .config
# set install dir
sed -i -e "s|^CONFIG_PREFIX=.*$|CONFIG_PREFIX=\"${INSTALL}/usr\"|" .config
if [ ! "${CRON_SUPPORT}" = "yes" ]; then
sed -i -e "s|^CONFIG_CROND=.*$|# CONFIG_CROND is not set|" .config
sed -i -e "s|^CONFIG_FEATURE_CROND_D=.*$|# CONFIG_FEATURE_CROND_D is not set|" .config
sed -i -e "s|^CONFIG_CRONTAB=.*$|# CONFIG_CRONTAB is not set|" .config
sed -i -e "s|^CONFIG_FEATURE_CROND_SPECIAL_TIMES=.*$|# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set|" .config
fi
if [ ! "${SAMBA_SUPPORT}" = yes ]; then
sed -i -e "s|^CONFIG_FEATURE_MOUNT_CIFS=.*$|# CONFIG_FEATURE_MOUNT_CIFS is not set|" .config
fi
# optimize for size
CFLAGS=$(echo ${CFLAGS} | sed -e "s|-Ofast|-Os|")
CFLAGS=$(echo ${CFLAGS} | sed -e "s|-O.|-Os|")
CFLAGS+=" -I${SYSROOT_PREFIX}/usr/include/tirpc"
LDFLAGS+=" -fwhole-program"
make oldconfig
}
configure_init() {
cd ${PKG_BUILD}/.${TARGET_NAME}-init
find_file_path config/busybox-init.conf
cp ${FOUND_PATH} .config
# set install dir
sed -i -e "s|^CONFIG_PREFIX=.*$|CONFIG_PREFIX=\"${INSTALL}/usr\"|" .config
# optimize for size
CFLAGS=$(echo ${CFLAGS} | sed -e "s|-Ofast|-Os|")
CFLAGS=$(echo ${CFLAGS} | sed -e "s|-O.|-Os|")
CFLAGS+=" -I${SYSROOT_PREFIX}/usr/include/tirpc"
LDFLAGS+=" -fwhole-program"
make oldconfig
}
makeinstall_target() {
mkdir -p ${INSTALL}/usr/bin
if [ ${TARGET_ARCH} = x86_64 ]; then
cp ${PKG_DIR}/scripts/getedid ${INSTALL}/usr/bin
else
cp ${PKG_DIR}/scripts/dump-active-edids-drm ${INSTALL}/usr/bin/dump-active-edids
fi
cp ${PKG_DIR}/scripts/create-edid-cpio ${INSTALL}/usr/bin/
if [ "${PROJECT}" = "RPi" ]; then
cp ${PKG_DIR}/scripts/update-bootloader-edid-rpi ${INSTALL}/usr/bin/update-bootloader-edid
cp ${PKG_DIR}/scripts/getedid-drm ${INSTALL}/usr/bin/getedid
fi
if [ "${PROJECT}" = "Amlogic" ]; then
cp ${PKG_DIR}/scripts/update-bootloader-edid-amlogic ${INSTALL}/usr/bin/getedid
fi
cp ${PKG_DIR}/scripts/createlog ${INSTALL}/usr/bin/
cp ${PKG_DIR}/scripts/dthelper ${INSTALL}/usr/bin
ln -sf dthelper ${INSTALL}/usr/bin/dtfile
ln -sf dthelper ${INSTALL}/usr/bin/dtflag
ln -sf dthelper ${INSTALL}/usr/bin/dtname
ln -sf dthelper ${INSTALL}/usr/bin/dtsoc
cp ${PKG_DIR}/scripts/ledfix ${INSTALL}/usr/bin
cp ${PKG_DIR}/scripts/lsb_release ${INSTALL}/usr/bin/
cp ${PKG_DIR}/scripts/apt-get ${INSTALL}/usr/bin/
cp ${PKG_DIR}/scripts/sudo ${INSTALL}/usr/bin/
cp ${PKG_DIR}/scripts/pastebinit ${INSTALL}/usr/bin/
sed -e "s/@DISTRONAME@-@OS_VERSION@/${DISTRONAME}-${OS_VERSION}/g" \
-i ${INSTALL}/usr/bin/pastebinit
ln -sf pastebinit ${INSTALL}/usr/bin/paste
cp ${PKG_DIR}/scripts/vfd-clock ${INSTALL}/usr/bin/
mkdir -p ${INSTALL}/usr/sbin
cp ${PKG_DIR}/scripts/kernel-overlays-setup ${INSTALL}/usr/sbin
mkdir -p ${INSTALL}/usr/lib/libreelec
cp ${PKG_DIR}/scripts/functions ${INSTALL}/usr/lib/libreelec
cp ${PKG_DIR}/scripts/fs-resize ${INSTALL}/usr/lib/libreelec
sed -e "s/@DISTRONAME@/${DISTRONAME}/g" \
-i ${INSTALL}/usr/lib/libreelec/fs-resize
mkdir -p ${INSTALL}/usr/lib/systemd/system-generators/
cp ${PKG_DIR}/scripts/libreelec-target-generator ${INSTALL}/usr/lib/systemd/system-generators/
mkdir -p ${INSTALL}/etc
cp ${PKG_DIR}/config/profile ${INSTALL}/etc
cp ${PKG_DIR}/config/inputrc ${INSTALL}/etc
cp ${PKG_DIR}/config/suspend-modules.conf ${INSTALL}/etc
# /etc/fstab is needed by...
touch ${INSTALL}/etc/fstab
# /etc/machine-id, needed by systemd and dbus
ln -sf /storage/.cache/systemd-machine-id ${INSTALL}/etc/machine-id
# /etc/mtab is needed by udisks etc...
ln -sf /proc/self/mounts ${INSTALL}/etc/mtab
# create /etc/hostname
ln -sf /proc/sys/kernel/hostname ${INSTALL}/etc/hostname
}
post_install() {
echo "chmod 4755 ${INSTALL}/usr/bin/busybox" >> ${FAKEROOT_SCRIPT}
echo "chmod 000 ${INSTALL}/usr/cache/shadow" >> ${FAKEROOT_SCRIPT}
add_user root "${ROOT_PASSWORD}" 0 0 "Root User" "/storage" "/bin/sh"
add_group root 0
add_group users 100
add_user nobody x 65534 65534 "Nobody" "/" "/bin/sh"
add_group nogroup 65534
enable_service fs-resize.service
enable_service ledfix.service
enable_service shell.service
enable_service show-version.service
enable_service vfd-clock.service
enable_service var.mount
enable_service locale.service
# cron support
if [ "${CRON_SUPPORT}" = "yes" ]; then
mkdir -p ${INSTALL}/usr/lib/systemd/system
cp ${PKG_DIR}/system.d.opt/cron.service ${INSTALL}/usr/lib/systemd/system
enable_service cron.service
mkdir -p ${INSTALL}/usr/share/services
cp -P ${PKG_DIR}/default.d/*.conf ${INSTALL}/usr/share/services
cp ${PKG_DIR}/system.d.opt/cron-defaults.service ${INSTALL}/usr/lib/systemd/system
enable_service cron-defaults.service
fi
}
makeinstall_init() {
mkdir -p ${INSTALL}/bin
ln -sf busybox ${INSTALL}/usr/bin/sh
chmod 4755 ${INSTALL}/usr/bin/busybox
mkdir -p ${INSTALL}/etc
touch ${INSTALL}/etc/fstab
ln -sf /proc/self/mounts ${INSTALL}/etc/mtab
if find_file_path initramfs/platform_init; then
cp ${FOUND_PATH} ${INSTALL}
sed -e "s/@BOOT_LABEL@/${DISTRO_BOOTLABEL}/g" \
-e "s/@DISK_LABEL@/${DISTRO_DISKLABEL}/g" \
-i ${INSTALL}/platform_init
chmod 755 ${INSTALL}/platform_init
fi
cp ${PKG_DIR}/scripts/functions ${INSTALL}
cp ${PKG_DIR}/scripts/init ${INSTALL}
sed -e "s/@DISTRONAME@/${DISTRONAME}/g" \
-e "s/@KERNEL_NAME@/${KERNEL_NAME}/g" \
-e "s/@SYSTEM_SIZE@/${SYSTEM_SIZE}/g" \
-i ${INSTALL}/init
chmod 755 ${INSTALL}/init
}