# $FreeWRT$ #- # This file is part of the FreeWRT project. FreeWRT is copyrighted # material, please see the LICENCE file in the top-level directory # or at http://www.freewrt.org/licence for details. include $(TOPDIR)/rules.mk include $(TOPDIR)/mk/targets.mk PKG_NAME:= base-files PKG_RELEASE:= 11 WRKSRC= ${WRKDIR}/base-files REV:=$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' ) ifeq ($(REV),) REV:=0 endif DISTFILES:= include $(TOPDIR)/mk/package.mk IDIR_BASE:=$(WRKBUILD)/base-files IPKG_BASE:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_RELEASE)_$(ARCH).ipk UCLIBC_VERSION:=${shell cat $(STAGING_DIR)/uclibc_version} IDIR_UCLIBC:=$(WRKBUILD)/uclibc IPKG_UCLIBC:=$(PACKAGE_DIR)/uclibc_$(UCLIBC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk LIBGCC_VERSION:=${shell cat $(STAGING_DIR)/gcc_version} IDIR_LIBGCC:=$(WRKBUILD)/libgcc IPKG_LIBGCC:=$(PACKAGE_DIR)/libgcc_$(LIBGCC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC) PACKAGES_INSTALL:=$(IPKG_BASE) $(IPKG_UCLIBC) MD5CRYPT := $(shell $(MKPASSWD) $(FWRT_RUNTIME_PASSWORD)) ifeq ($(FWRT_PACKAGE_LIBGCC),y) PACKAGES+=$(IPKG_LIBGCC) PACKAGES_INSTALL+=$(IPKG_LIBGCC) endif ifeq ($(FWRT_PACKAGE_LIBGCC),m) PACKAGES+=$(IPKG_LIBGCC) endif ADMIN_SHELL:= /bin/sh ifeq (${FWRT_BASEFILES_ADMIN_ASH},y) ADMIN_SHELL:= /bin/ash endif ifeq (${FWRT_BASEFILES_ADMIN_MKSH},y) ADMIN_SHELL:= /bin/mksh endif ifeq (${FWRT_BASEFILES_ADMIN_HUSH},y) ADMIN_SHELL:= /bin/hush endif ifeq (${FWRT_BASEFILES_ADMIN_LASH},y) ADMIN_SHELL:= /bin/lash endif ifeq (${FWRT_BASEFILES_ADMIN_MSH},y) ADMIN_SHELL:= /bin/msh endif $(WRKBUILD)/.prepared: mkdir -p $(WRKBUILD) $(PACKAGE_DIR) touch $@ $(WRKBUILD)/.configured: touch $@ $(WRKBUILD)/.built: touch $@ $(IPKG_BASE): $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_BASE) ipkg/$(PKG_NAME).control $(PKG_RELEASE) $(ARCH) $(CP) ./default/* $(IDIR_BASE) $(SED) 's,$$R,$(REV),g' $(IDIR_BASE)/etc/banner test -z $(FWRT_RUNTIME_PACKAGES_URL) || \ $(SED) 's,^src freewrt.*$$,src freewrt $(FWRT_RUNTIME_PACKAGES_URL),' \ -e '/^src freewrt/s,"\(.*\)",\1,' $(IDIR_BASE)/etc/ipkg.conf $(SED) 's,@TARGET@,$(BOARD)-$(KERNEL),g' $(IDIR_BASE)/etc/ipkg.conf test -z $(FWRT_RUNTIME_PASSWORD) || \ $(SED) 's,\*NP\*,$(MD5CRYPT),g' $(IDIR_BASE)/etc/passwd $(SED) 's!@SHELL@!${ADMIN_SHELL}!g' $(IDIR_BASE)/etc/passwd test -z $(FWRT_RUNTIME_SSHKEY) || ( \ mkdir -p $(IDIR_BASE)/etc/dropbear; \ echo $(FWRT_RUNTIME_SSHKEY) >$(IDIR_BASE)/etc/dropbear/authorized_keys; \ ) rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \ dd if=$$rng of=$(IDIR_BASE)/etc/.rnd bs=512 count=1; \ chmod 600 $(IDIR_BASE)/etc/.rnd echo /bin/sh >${IDIR_BASE}/etc/shells ifneq (${BUSYBOX_CONFIG_ASH},) echo /bin/ash >>${IDIR_BASE}/etc/shells endif ifneq (${BUSYBOX_CONFIG_HUSH},) echo /bin/hush >>${IDIR_BASE}/etc/shells endif ifneq (${BUSYBOX_CONFIG_LASH},) echo /bin/lash >>${IDIR_BASE}/etc/shells endif ifneq (${BUSYBOX_CONFIG_MSH},) echo /bin/msh >>${IDIR_BASE}/etc/shells endif ifneq (${FWRT_PACKAGE_MKSH},) echo /bin/mksh >>${IDIR_BASE}/etc/shells endif ifneq (${FWRT_PACKAGE_MKSH_AS_BINASH},) echo /bin/ash >>${IDIR_BASE}/etc/shells endif mkdir -p $(IDIR_BASE)/dev mkdir -p $(IDIR_BASE)/etc/crontabs mkdir -p $(IDIR_BASE)/jffs mkdir -p $(IDIR_BASE)/lib mkdir -p $(IDIR_BASE)/mnt mkdir -p $(IDIR_BASE)/proc mkdir -p $(IDIR_BASE)/tmp mkdir -p $(IDIR_BASE)/usr/lib mkdir -p $(IDIR_BASE)/usr/bin ln -sf /tmp/resolv.conf $(IDIR_BASE)/etc/resolv.conf ln -sf /proc/mounts $(IDIR_BASE)/etc/mtab rm -f $(IDIR_BASE)/var ln -sf /tmp $(IDIR_BASE)/var -find $(IDIR_BASE) -type d -name CVS | xargs rm -rf -find $(IDIR_BASE) -type d -name .svn | xargs rm -rf -find $(IDIR_BASE) -name '.#*' | xargs rm -f $(IPKG_BUILD) $(IDIR_BASE) $(PACKAGE_DIR) $(IPKG_UCLIBC): $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_UCLIBC) ipkg/uclibc.control $(UCLIBC_VERSION)-$(PKG_RELEASE) $(ARCH) mkdir -p $(IDIR_UCLIBC)/lib for file in ld-uClibc libc libcrypt libdl libm libnsl libresolv librt libuClibc libutil; do \ $(CP) $(STAGING_DIR)/lib/$$file.so.* $(IDIR_UCLIBC)/lib/; \ $(CP) $(STAGING_DIR)/lib/$$file-$(UCLIBC_VERSION).so $(IDIR_UCLIBC)/lib/; \ done -$(STRIP) $(IDIR_UCLIBC)/lib/* $(IPKG_BUILD) $(IDIR_UCLIBC) $(PACKAGE_DIR) $(IPKG_LIBGCC): $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_LIBGCC) ipkg/libgcc.control $(LIBGCC_VERSION)-$(PKG_RELEASE) $(ARCH) mkdir -p $(IDIR_LIBGCC)/lib $(CP) $(STAGING_DIR)/lib/libgcc_s.so.* $(IDIR_LIBGCC)/lib/ -$(STRIP) $(IDIR_LIBGCC)/lib/* $(IPKG_BUILD) $(IDIR_LIBGCC) $(PACKAGE_DIR) install-dev: mkdir -p $(STAGING_DIR)/usr/include $(CP) ./include/[a-z]* $(STAGING_DIR)/usr/include/ package-clean: rm -f $(PACKAGES) clean-targets: package-clean prepare: install-dev compile-targets: $(PACKAGES) install-targets: compile mkdir -p $(TARGET_DIR) $(IPKG) install $(PACKAGES_INSTALL)