| 1 | # DebWrt - Debian on Embedded devices |
|---|
| 2 | # |
|---|
| 3 | # Copyright (C) 2010 Johan van Zoomeren <amain@debwrt.net> |
|---|
| 4 | # |
|---|
| 5 | # This program is free software: you can redistribute it and/or modify |
|---|
| 6 | # it under the terms of the GNU General Public License as published by |
|---|
| 7 | # the Free Software Foundation, either version 3 of the License, or |
|---|
| 8 | # (at your option) any later version. |
|---|
| 9 | # |
|---|
| 10 | # This program is distributed in the hope that it will be useful, |
|---|
| 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 13 | # GNU General Public License for more details. |
|---|
| 14 | # |
|---|
| 15 | # You should have received a copy of the GNU General Public License |
|---|
| 16 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|---|
| 17 | |
|---|
| 18 | DEBIAN_ROOTFS_INCLUDE_PACKAGES:=$(call qstrip,$(CONFIG_DEBIAN_ROOTFS_INCLUDE_PACKAGES)) |
|---|
| 19 | DEBWRT_EXTRA_ROOTFS_FILES_DIR:=$(TOPDIR)/debian/rootfs/files |
|---|
| 20 | DEBWRT_MODULES_ARCHIVE=$(shell ls $(INSTALL_DIR)/debwrt-modules-*.tar.gz 2>/dev/null) |
|---|
| 21 | MODULES_VERSION=$(shell echo `basename $(DEBWRT_MODULES_ARCHIVE) 2>/dev/null` | awk -F '-' '{print $$6}') |
|---|
| 22 | |
|---|
| 23 | debian/rootfs: debian/rootfs/bootstrap debian/rootfs/unpack debian/rootfs/files-install debian/rootfs/debwrt-packages debian/rootfs/modules-install debian/rootfs/post-setup |
|---|
| 24 | touch $@ |
|---|
| 25 | |
|---|
| 26 | debian/rootfs/install: debian/rootfs |
|---|
| 27 | if [ -d /media/DEBWRT_ROOT ]; then \ |
|---|
| 28 | sudo rm -rf /media/DEBWRT_ROOT/*; \ |
|---|
| 29 | sudo bash -c "tar cf - -C $(ROOTFS_BUILD_DIR) . | tar xf - -C /media/DEBWRT_ROOT"; \ |
|---|
| 30 | fi |
|---|
| 31 | #touch $@ |
|---|
| 32 | |
|---|
| 33 | debian/rootfs/save: |
|---|
| 34 | if [ -d /media/DEBWRT_ROOT ]; then \ |
|---|
| 35 | sudo bash -c "tar cjf debwrt-rootfs-$(TARGET_ARCH)-$(VERSION).tar.bz2 -C /media/DEBWRT_ROOT ."; \ |
|---|
| 36 | fi |
|---|
| 37 | |
|---|
| 38 | debian/rootfs/files-install: debian/rootfs/bootstrap |
|---|
| 39 | if [ ! -f $(ROOTFS_BUILD_DIR)/etc/init.d/rcS.debian -a -e $(ROOTFS_BUILD_DIR)/etc/init.d/rcS ]; then \ |
|---|
| 40 | sudo mv -v $(ROOTFS_BUILD_DIR)/etc/init.d/rcS $(ROOTFS_BUILD_DIR)/etc/init.d/rcS.debian; \ |
|---|
| 41 | fi |
|---|
| 42 | if [ ! -p $(ROOTFS_BUILD_DIR)/dev/initctl ]; then \ |
|---|
| 43 | sudo mkdir -p $(ROOTFS_BUILD_DIR)/dev; \ |
|---|
| 44 | sudo mkfifo $(ROOTFS_BUILD_DIR)/dev/initctl; \ |
|---|
| 45 | fi |
|---|
| 46 | chmod 600 $(DEBWRT_EXTRA_ROOTFS_FILES_DIR)/etc/ssh/ssh_host_rsa_key |
|---|
| 47 | chmod 600 $(DEBWRT_EXTRA_ROOTFS_FILES_DIR)/etc/ssh/ssh_host_dsa_key |
|---|
| 48 | sudo bash -c "tar cf - --exclude=".svn" -C $(DEBWRT_EXTRA_ROOTFS_FILES_DIR) . | tar -xovf - -C $(ROOTFS_BUILD_DIR)" |
|---|
| 49 | touch $@ |
|---|
| 50 | |
|---|
| 51 | debian/rootfs/modules-install: debian/rootfs/bootstrap |
|---|
| 52 | ifneq ($(DEBWRT_MODULES_ARCHIVE),) |
|---|
| 53 | sudo tar xof $(DEBWRT_MODULES_ARCHIVE) -C $(ROOTFS_BUILD_DIR) |
|---|
| 54 | #sudo depmod -a -b $(ROOTFS_BUILD_DIR) $(MODULES_VERSION) |
|---|
| 55 | endif |
|---|
| 56 | touch $@ |
|---|
| 57 | |
|---|
| 58 | debian/rootfs/bootstrap: debian/rootfs/clean-rootfs-dir |
|---|
| 59 | sudo debootstrap --arch=$(TARGET_ARCH)\ |
|---|
| 60 | --foreign \ |
|---|
| 61 | --include="$(DEBIAN_ROOTFS_INCLUDE_PACKAGES)" \ |
|---|
| 62 | $(DEBIAN_BUILD_VERSION) \ |
|---|
| 63 | $(ROOTFS_BUILD_DIR) \ |
|---|
| 64 | $(CONFIG_DEBIAN_BUILDENV_REPOSITORY) |
|---|
| 65 | touch $@ |
|---|
| 66 | |
|---|
| 67 | debian/rootfs/unpack: debian/rootfs/bootstrap |
|---|
| 68 | find $(ROOTFS_BUILD_DIR) -name "*.deb" | while read deb; do \ |
|---|
| 69 | n=`basename $$deb`; \ |
|---|
| 70 | echo -n "I: Extracting $${n}..."; \ |
|---|
| 71 | sudo bash -c "ar -p "$$deb" data.tar.gz | zcat | tar -C $(ROOTFS_BUILD_DIR) -xf -"; \ |
|---|
| 72 | echo "done"; \ |
|---|
| 73 | done |
|---|
| 74 | touch $@ |
|---|
| 75 | |
|---|
| 76 | # install all available cross-compiled debwrt debian packages, extect for the kernel-headers packages because it is to big |
|---|
| 77 | debian/rootfs/debwrt-packages: debian/rootfs/bootstrap debian/package/rootfs |
|---|
| 78 | ls ${INSTALL_DIR_DEBIAN_PACKAGES}/*.deb | grep -v "debwrt-kernel-headers" | while read package; do \ |
|---|
| 79 | pfname=`basename $$package`; \ |
|---|
| 80 | pname=`echo $$pfname | sed 's/_.*//'`; \ |
|---|
| 81 | echo "Installing DebWrt package: $$pname"; \ |
|---|
| 82 | sudo cp $$package $(ROOTFS_BUILD_DIR)/var/cache/apt/archives; \ |
|---|
| 83 | sudo dpkg-deb -x $$package $(ROOTFS_BUILD_DIR); \ |
|---|
| 84 | sudo bash -c "echo \"$$pname /var/cache/apt/archives/$$pfname\" >>$(ROOTFS_BUILD_DIR)/debootstrap/debpaths" ;\ |
|---|
| 85 | done |
|---|
| 86 | touch $@ |
|---|
| 87 | |
|---|
| 88 | debian/rootfs/clean-rootfs-dir: |
|---|
| 89 | sudo rm -rf $(ROOTFS_BUILD_DIR) |
|---|
| 90 | touch $@ |
|---|
| 91 | |
|---|
| 92 | debian/rootfs/post-setup: debian/rootfs/bootstrap |
|---|
| 93 | sudo mkdir -p $(ROOTFS_BUILD_DIR)/etc/apt |
|---|
| 94 | sudo bash -c "echo \"deb http://ftp.debian.org/debian $(DEBIAN_BUILD_VERSION) main\" >$(ROOTFS_BUILD_DIR)/etc/apt/sources.list" |
|---|
| 95 | touch $@ |
|---|
| 96 | |
|---|
| 97 | debian/rootfs/clean: |
|---|
| 98 | sudo rm -rf $(ROOTFS_BUILD_DIR) |
|---|
| 99 | rm -f debian/rootfs/debwrt-packages |
|---|
| 100 | rm -f debian/rootfs/bootstrap |
|---|
| 101 | rm -f debian/rootfs/install |
|---|
| 102 | rm -f debian/rootfs/files-install |
|---|
| 103 | rm -f debian/rootfs/modules-install |
|---|
| 104 | |
|---|