| 1 |
# $FreeWRT$ |
| 2 |
#- |
| 3 |
# This file is part of the FreeWRT project. FreeWRT is copyrighted |
| 4 |
# material, please see the LICENCE file in the top-level directory |
| 5 |
# or at http://www.freewrt.org/licence for details. |
| 6 |
|
| 7 |
include $(TOPDIR)/rules.mk |
| 8 |
include $(TOPDIR)/mk/targets.mk |
| 9 |
|
| 10 |
PKG_NAME:= base-files |
| 11 |
PKG_VERSION:= 1.0 |
| 12 |
PKG_RELEASE:= 20 |
| 13 |
WRKSRC= ${WRKDIR}/base-files |
| 14 |
DISTFILES:= |
| 15 |
|
| 16 |
include $(TOPDIR)/mk/package.mk |
| 17 |
|
| 18 |
IDIR_BASE:=$(WRKBUILD)/$(PKG_NAME)-$(PKG_VERSION) |
| 19 |
IPKG_BASE:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk |
| 20 |
|
| 21 |
UCLIBC_VERSION:=${shell cat $(STAGING_DIR)/uclibc_version} |
| 22 |
IDIR_UCLIBC:=$(WRKBUILD)/uclibc |
| 23 |
IPKG_UCLIBC:=$(PACKAGE_DIR)/uclibc_$(UCLIBC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk |
| 24 |
|
| 25 |
LIBGCC_VERSION:=${shell cat $(STAGING_DIR)/gcc_version} |
| 26 |
IDIR_LIBGCC:=$(WRKBUILD)/libgcc |
| 27 |
IPKG_LIBGCC:=$(PACKAGE_DIR)/libgcc_$(LIBGCC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk |
| 28 |
|
| 29 |
PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC) |
| 30 |
PACKAGES_INSTALL:=$(IPKG_BASE) $(IPKG_UCLIBC) |
| 31 |
|
| 32 |
MD5CRYPT := $(shell $(MKPASSWD) $(FWRT_RUNTIME_PASSWORD)) |
| 33 |
|
| 34 |
ifeq ($(FWRT_PACKAGE_LIBGCC),y) |
| 35 |
PACKAGES+=$(IPKG_LIBGCC) |
| 36 |
PACKAGES_INSTALL+=$(IPKG_LIBGCC) |
| 37 |
endif |
| 38 |
ifeq ($(FWRT_PACKAGE_LIBGCC),m) |
| 39 |
PACKAGES+=$(IPKG_LIBGCC) |
| 40 |
endif |
| 41 |
|
| 42 |
ADMIN_SHELL:= /bin/sh |
| 43 |
ifeq (${FWRT_BASEFILES_ADMIN_ASH},y) |
| 44 |
ADMIN_SHELL:= /bin/ash |
| 45 |
endif |
| 46 |
ifeq (${FWRT_BASEFILES_ADMIN_MKSH},y) |
| 47 |
ADMIN_SHELL:= /bin/mksh |
| 48 |
endif |
| 49 |
ifeq (${FWRT_BASEFILES_ADMIN_HUSH},y) |
| 50 |
ADMIN_SHELL:= /bin/hush |
| 51 |
endif |
| 52 |
ifeq (${FWRT_BASEFILES_ADMIN_LASH},y) |
| 53 |
ADMIN_SHELL:= /bin/lash |
| 54 |
endif |
| 55 |
ifeq (${FWRT_BASEFILES_ADMIN_MSH},y) |
| 56 |
ADMIN_SHELL:= /bin/msh |
| 57 |
endif |
| 58 |
|
| 59 |
$(WRKBUILD)/.prepared: |
| 60 |
mkdir -p $(WRKBUILD) $(PACKAGE_DIR) |
| 61 |
touch $@ |
| 62 |
|
| 63 |
$(WRKBUILD)/.configured: |
| 64 |
touch $@ |
| 65 |
|
| 66 |
$(WRKBUILD)/.built: |
| 67 |
touch $@ |
| 68 |
|
| 69 |
$(IPKG_BASE): |
| 70 |
$(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_BASE) ipkg/$(PKG_NAME).control $(PKG_VERSION)-$(PKG_RELEASE) $(ARCH) |
| 71 |
$(CP) ./files/* $(IDIR_BASE) |
| 72 |
typeset -i REV; \ |
| 73 |
if fgrep xml .svn/entries >/dev/null 2>&1; then \ |
| 74 |
let REV="$$(sed -n '/revision=/s/^.*"\([0-9]*\)".*$$/\1/p' \ |
| 75 |
.svn/entries)"; \ |
| 76 |
else \ |
| 77 |
let REV="$$(head -n 4 .svn/entries | tail -1)"; \ |
| 78 |
fi; ${SED} 's,$$R,'$$REV,g $(IDIR_BASE)/etc/banner |
| 79 |
$(SED) 's,$$R,$(REV),g' $(IDIR_BASE)/etc/banner |
| 80 |
test -z $(FWRT_RUNTIME_PACKAGES_URL) || \ |
| 81 |
$(SED) 's,^src freewrt.*$$,src freewrt $(FWRT_RUNTIME_PACKAGES_URL),' \ |
| 82 |
-e '/^src freewrt/s,"\(.*\)",\1,' $(IDIR_BASE)/etc/ipkg.conf |
| 83 |
$(SED) 's,@TARGET@,$(BOARD)-$(KERNEL),g' $(IDIR_BASE)/etc/ipkg.conf |
| 84 |
$(SED) 's,@VERSION@,$(FWRT_VERSION),g' $(IDIR_BASE)/etc/ipkg.conf |
| 85 |
test -z $(FWRT_RUNTIME_PASSWORD) || \ |
| 86 |
$(SED) 's,\*NP\*,$(MD5CRYPT),g' $(IDIR_BASE)/etc/passwd |
| 87 |
$(SED) 's!@SHELL@!${ADMIN_SHELL}!g' $(IDIR_BASE)/etc/passwd |
| 88 |
test -z $(FWRT_RUNTIME_SSHKEY) || ( \ |
| 89 |
mkdir -p $(IDIR_BASE)/etc/dropbear; \ |
| 90 |
echo $(FWRT_RUNTIME_SSHKEY) >$(IDIR_BASE)/etc/dropbear/authorized_keys; \ |
| 91 |
) |
| 92 |
rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \ |
| 93 |
dd if=$$rng of=$(IDIR_BASE)/etc/.rnd bs=512 count=1; \ |
| 94 |
chmod 600 $(IDIR_BASE)/etc/.rnd |
| 95 |
echo /bin/sh >${IDIR_BASE}/etc/shells |
| 96 |
ifneq (${BUSYBOX_CONFIG_ASH},) |
| 97 |
echo /bin/ash >>${IDIR_BASE}/etc/shells |
| 98 |
endif |
| 99 |
ifneq (${BUSYBOX_CONFIG_HUSH},) |
| 100 |
echo /bin/hush >>${IDIR_BASE}/etc/shells |
| 101 |
endif |
| 102 |
ifneq (${BUSYBOX_CONFIG_LASH},) |
| 103 |
echo /bin/lash >>${IDIR_BASE}/etc/shells |
| 104 |
endif |
| 105 |
ifneq (${BUSYBOX_CONFIG_MSH},) |
| 106 |
echo /bin/msh >>${IDIR_BASE}/etc/shells |
| 107 |
endif |
| 108 |
ifneq (${FWRT_PACKAGE_MKSH},) |
| 109 |
echo /bin/mksh >>${IDIR_BASE}/etc/shells |
| 110 |
endif |
| 111 |
ifneq (${FWRT_PACKAGE_MKSH_AS_BINASH},) |
| 112 |
echo /bin/ash >>${IDIR_BASE}/etc/shells |
| 113 |
endif |
| 114 |
mkdir -p $(IDIR_BASE)/dev |
| 115 |
mkdir -p $(IDIR_BASE)/etc/crontabs |
| 116 |
mkdir -p $(IDIR_BASE)/jffs |
| 117 |
mkdir -p $(IDIR_BASE)/lib |
| 118 |
mkdir -p $(IDIR_BASE)/mnt |
| 119 |
mkdir -p $(IDIR_BASE)/proc |
| 120 |
mkdir -p $(IDIR_BASE)/tmp |
| 121 |
mkdir -p $(IDIR_BASE)/usr/lib |
| 122 |
mkdir -p $(IDIR_BASE)/usr/bin |
| 123 |
ln -sf /tmp/resolv.conf $(IDIR_BASE)/etc/resolv.conf |
| 124 |
ln -sf /proc/mounts $(IDIR_BASE)/etc/mtab |
| 125 |
rm -f $(IDIR_BASE)/var |
| 126 |
ln -sf /tmp $(IDIR_BASE)/var |
| 127 |
-find $(IDIR_BASE) -type d -name CVS | xargs rm -rf |
| 128 |
-find $(IDIR_BASE) -type d -name .svn | xargs rm -rf |
| 129 |
-find $(IDIR_BASE) -name '.#*' | xargs rm -f |
| 130 |
ifneq (${FWRT_PACKAGE_CONFIG_IN_ETC},) |
| 131 |
gzip -9c ${TOPDIR}/.config > $(IDIR_BASE)/etc/freewrt.config.gz |
| 132 |
endif |
| 133 |
$(IPKG_BUILD) $(IDIR_BASE) $(PACKAGE_DIR) |
| 134 |
|
| 135 |
$(IPKG_UCLIBC): |
| 136 |
$(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_UCLIBC) ipkg/uclibc.control $(UCLIBC_VERSION)-$(PKG_RELEASE) $(ARCH) |
| 137 |
mkdir -p $(IDIR_UCLIBC)/lib |
| 138 |
for file in ld-uClibc libc libcrypt libdl libm libnsl libresolv librt libuClibc libutil; do \ |
| 139 |
$(CP) $(STAGING_DIR)/lib/$$file.so.* $(IDIR_UCLIBC)/lib/; \ |
| 140 |
$(CP) $(STAGING_DIR)/lib/$$file-$(UCLIBC_VERSION).so $(IDIR_UCLIBC)/lib/; \ |
| 141 |
done |
| 142 |
-$(STRIP) $(IDIR_UCLIBC)/lib/* |
| 143 |
$(IPKG_BUILD) $(IDIR_UCLIBC) $(PACKAGE_DIR) |
| 144 |
|
| 145 |
$(IPKG_LIBGCC): |
| 146 |
$(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_LIBGCC) ipkg/libgcc.control $(LIBGCC_VERSION)-$(PKG_RELEASE) $(ARCH) |
| 147 |
mkdir -p $(IDIR_LIBGCC)/lib |
| 148 |
$(CP) $(STAGING_DIR)/lib/libgcc_s.so.* $(IDIR_LIBGCC)/lib/ |
| 149 |
-$(STRIP) $(IDIR_LIBGCC)/lib/* |
| 150 |
$(IPKG_BUILD) $(IDIR_LIBGCC) $(PACKAGE_DIR) |
| 151 |
|
| 152 |
install-dev: |
| 153 |
mkdir -p $(STAGING_DIR)/usr/include |
| 154 |
$(CP) ./include/[a-z]* $(STAGING_DIR)/usr/include/ |
| 155 |
|
| 156 |
package-clean: |
| 157 |
rm -f $(PACKAGES) |
| 158 |
|
| 159 |
clean-targets: package-clean |
| 160 |
prepare: install-dev |
| 161 |
compile-targets: $(PACKAGES) |
| 162 |
install-targets: compile |
| 163 |
mkdir -p $(TARGET_DIR) |
| 164 |
$(IPKG) install $(PACKAGES_INSTALL) |