source: freewrt/package/base-files/Makefile@ 33408c6

freewrt_1_0 freewrt_2_0
Last change on this file since 33408c6 was 6d052bd, checked in by Thorsten Glaser <tg@…>, 19 years ago

generate /etc/shells dynamically, based upon packages
being built (even if marked 'm')

git-svn-id: svn://www.freewrt.org/trunk/freewrt@441 afb5a338-a214-0410-bd46-81f09a774fd1

  • Property mode set to 100644
File size: 4.8 KB
Line 
1# $Id: Makefile 3588 2006-04-05 02:09:22Z nbd $
2
3include $(TOPDIR)/rules.mk
4
5PKG_NAME:= base-files
6PKG_RELEASE:= 10
7WRKSRC= ${WRKDIR}/base-files
8
9BOARD:=$(shell LANG=C grep ^FWRT_LINUX_2 $(TOPDIR)/.config| \
10 head -n 1 | sed -e "s/=y//" \
11 -e "s/.*_//"| tr "[:upper:]" "[:lower:]")
12KERNEL:=$(shell LANG=C grep ^FWRT_LINUX_2 $(TOPDIR)/.config| \
13 head -n 1 | sed -e "s/=y//" \
14 -e "s/FWRT_LINUX_//" -e "s/_BRCM//" -e "s/_/./"| tr "[:upper:]" "[:lower:]")
15
16REV:=$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' )
17ifeq ($(REV),)
18REV:=0
19endif
20
21DISTFILES:=
22include $(TOPDIR)/package/rules.mk
23
24IDIR_BASE:=$(WRKBUILD)/base-files
25IPKG_BASE:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_RELEASE)_$(ARCH).ipk
26
27UCLIBC_VERSION:=${shell cat $(STAGING_DIR)/uclibc_version}
28IDIR_UCLIBC:=$(WRKBUILD)/uclibc
29IPKG_UCLIBC:=$(PACKAGE_DIR)/uclibc_$(UCLIBC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk
30
31LIBGCC_VERSION:=${shell cat $(STAGING_DIR)/gcc_version}
32IDIR_LIBGCC:=$(WRKBUILD)/libgcc
33IPKG_LIBGCC:=$(PACKAGE_DIR)/libgcc_$(LIBGCC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk
34
35PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC)
36PACKAGES_INSTALL:=$(IPKG_BASE) $(IPKG_UCLIBC)
37
38MD5CRYPT := $(shell $(MKPASSWD) $(FWRT_RUNTIME_PASSWORD))
39
40ifeq ($(FWRT_PACKAGE_LIBGCC),y)
41PACKAGES+=$(IPKG_LIBGCC)
42PACKAGES_INSTALL+=$(IPKG_LIBGCC)
43endif
44ifeq ($(FWRT_PACKAGE_LIBGCC),m)
45PACKAGES+=$(IPKG_LIBGCC)
46endif
47
48ADMIN_SHELL:= /bin/sh
49ifeq (${FWRT_BASEFILES_ADMIN_ASH},y)
50ADMIN_SHELL:= /bin/ash
51endif
52ifeq (${FWRT_BASEFILES_ADMIN_MKSH},y)
53ADMIN_SHELL:= /bin/mksh
54endif
55ifeq (${FWRT_BASEFILES_ADMIN_HUSH},y)
56ADMIN_SHELL:= /bin/hush
57endif
58ifeq (${FWRT_BASEFILES_ADMIN_LASH},y)
59ADMIN_SHELL:= /bin/lash
60endif
61ifeq (${FWRT_BASEFILES_ADMIN_MSH},y)
62ADMIN_SHELL:= /bin/msh
63endif
64
65$(WRKBUILD)/.prepared:
66 mkdir -p $(WRKBUILD) $(PACKAGE_DIR)
67 touch $@
68
69$(WRKBUILD)/.configured:
70 touch $@
71
72$(WRKBUILD)/.built:
73 touch $@
74
75$(IPKG_BASE):
76 $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_BASE) ipkg/$(PKG_NAME).control $(PKG_RELEASE) $(ARCH)
77 $(CP) ./default/* $(IDIR_BASE)
78 $(SED) 's,$$R,$(REV),g' $(IDIR_BASE)/etc/banner
79 test -z $(FWRT_RUNTIME_PACKAGES_URL) || \
80 $(SED) 's,^src freewrt.*$$,src freewrt $(FWRT_RUNTIME_PACKAGES_URL),' \
81 -e '/^src freewrt/s,"\(.*\)",\1,' $(IDIR_BASE)/etc/ipkg.conf
82 $(SED) 's,@TARGET@,$(BOARD)-$(KERNEL),g' $(IDIR_BASE)/etc/ipkg.conf
83 test -z $(FWRT_RUNTIME_PASSWORD) || \
84 $(SED) 's,\*NP\*,$(MD5CRYPT),g' $(IDIR_BASE)/etc/passwd
85 $(SED) 's!@SHELL@!${ADMIN_SHELL}!g' $(IDIR_BASE)/etc/passwd
86 test -z $(FWRT_RUNTIME_SSHKEY) || ( \
87 mkdir -p $(IDIR_BASE)/etc/dropbear; \
88 echo $(FWRT_RUNTIME_SSHKEY) >$(IDIR_BASE)/etc/dropbear/authorized_keys; \
89 )
90 rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \
91 dd if=$$rng of=$(IDIR_BASE)/etc/.rnd bs=512 count=1; \
92 chmod 600 $(IDIR_BASE)/etc/.rnd
93 echo /bin/sh >${IDIR_BASE}/etc/shells
94ifneq (${BUSYBOX_CONFIG_ASH},)
95 echo /bin/ash >>${IDIR_BASE}/etc/shells
96endif
97ifneq (${BUSYBOX_CONFIG_HUSH},)
98 echo /bin/hush >>${IDIR_BASE}/etc/shells
99endif
100ifneq (${BUSYBOX_CONFIG_LASH},)
101 echo /bin/lash >>${IDIR_BASE}/etc/shells
102endif
103ifneq (${BUSYBOX_CONFIG_MSH},)
104 echo /bin/msh >>${IDIR_BASE}/etc/shells
105endif
106ifneq (${FWRT_PACKAGE_MKSH},)
107 echo /bin/mksh >>${IDIR_BASE}/etc/shells
108endif
109ifneq (${FWRT_PACKAGE_MKSH_AS_BINASH},)
110 echo /bin/ash >>${IDIR_BASE}/etc/shells
111endif
112 mkdir -p $(IDIR_BASE)/dev
113 mkdir -p $(IDIR_BASE)/etc/crontabs
114 mkdir -p $(IDIR_BASE)/jffs
115 mkdir -p $(IDIR_BASE)/lib
116 mkdir -p $(IDIR_BASE)/mnt
117 mkdir -p $(IDIR_BASE)/proc
118 mkdir -p $(IDIR_BASE)/tmp
119 mkdir -p $(IDIR_BASE)/usr/lib
120 mkdir -p $(IDIR_BASE)/usr/bin
121 mkdir -p $(IDIR_BASE)/sys
122 ln -sf /tmp/resolv.conf $(IDIR_BASE)/etc/resolv.conf
123 ln -sf /proc/mounts $(IDIR_BASE)/etc/mtab
124 rm -f $(IDIR_BASE)/var
125 ln -sf /tmp $(IDIR_BASE)/var
126 -find $(IDIR_BASE) -type d -name CVS | xargs rm -rf
127 -find $(IDIR_BASE) -type d -name .svn | xargs rm -rf
128 -find $(IDIR_BASE) -name '.#*' | xargs rm -f
129 mkdir -p $(IDIR_BASE)/etc
130 $(IPKG_BUILD) $(IDIR_BASE) $(PACKAGE_DIR)
131
132$(IPKG_UCLIBC):
133 $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_UCLIBC) ipkg/uclibc.control $(UCLIBC_VERSION)-$(PKG_RELEASE) $(ARCH)
134 mkdir -p $(IDIR_UCLIBC)/lib
135 for file in ld-uClibc libc libcrypt libdl libm libnsl libresolv librt libuClibc libutil; do \
136 $(CP) $(STAGING_DIR)/lib/$$file.so.* $(IDIR_UCLIBC)/lib/; \
137 $(CP) $(STAGING_DIR)/lib/$$file-$(UCLIBC_VERSION).so $(IDIR_UCLIBC)/lib/; \
138 done
139 -$(STRIP) $(IDIR_UCLIBC)/lib/*
140 $(IPKG_BUILD) $(IDIR_UCLIBC) $(PACKAGE_DIR)
141
142$(IPKG_LIBGCC):
143 $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_LIBGCC) ipkg/libgcc.control $(LIBGCC_VERSION)-$(PKG_RELEASE) $(ARCH)
144 mkdir -p $(IDIR_LIBGCC)/lib
145 $(CP) $(STAGING_DIR)/lib/libgcc_s.so.* $(IDIR_LIBGCC)/lib/
146 -$(STRIP) $(IDIR_LIBGCC)/lib/*
147 $(IPKG_BUILD) $(IDIR_LIBGCC) $(PACKAGE_DIR)
148
149package-clean:
150 rm -f $(PACKAGES)
151
152clean-targets: package-clean
153prepare:
154compile-targets: $(PACKAGES)
155install-targets: compile
156 mkdir -p $(TARGET_DIR)
157 $(IPKG) install $(PACKAGES_INSTALL)
Note: See TracBrowser for help on using the repository browser.