[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freewrt-developers
Subject:    Re: [FreeWRT-developers] building custom packages
From:       Waldemar Brodkorb <wbx () freewrt ! org>
Date:       2006-12-09 17:33:23
Message-ID: 20061209173323.GB24118 () freewrt ! org
[Download RAW message or body]

Hi,
On Sat, 09 Dec 2006 at 14:04 +0000, Sven Geggus wrote:
> Hi there,
> 
> I like to build some custom packages. With limited sucess so far.
> 
> What would I need to do to build the package?
> 
> I added
> 
> source "package/mypackage/Config.in"
> 
> to package/Config.in, but that does not seem to be enough. 
> 
> Package shows up fine in "make menuconfig" is not beeing build using
> "make" however.

Custom packages needs to be customized :}
The package can be used to overwrite files in the default firmware
image. For example I added some parts of my mypackage, which is used
to generate pre-configured VPN nodes.

Example for package/mypackage/Makefile:

PKG_NAME:=              vpn
PKG_RELEASE:=           1

WRKSRC=                 ${WRKDIR}/$(PKG_NAME)
DISTFILES:=

include $(TOPDIR)/mk/package.mk

# vpn locations
ifeq ($(FWRT_VPN-DE-1),y)
FWRT_VPN_CN=VPN-DE-1
FWRT_HOSTNAME=vpn-de-1
FWRT_WIFI_CHANNEL=11
FWRT_WIFI_ESSID=VPN-DE-1
FWRT_LAN_IP_ADDRESS=172.16.0.1
FWRT_LAN_IP_NETWORK=172.16.0
FWRT_SAMBA_WORKGROUP=VPN-DE-1
FWRT_SAMBA_PATH=/mnt/disk0_1/samba
FWRT_WIFI_WEP_KEY=123456789
endif

IDIR_MYPACKAGE:=$(WRKBUILD)/$(PKG_NAME)
IPKG_MYPACKAGE:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_RELEASE)_$(ARCH).ipk

$(WRKBUILD)/.prepared:
        mkdir -p $(WRKBUILD)
        touch $@

$(WRKBUILD)/.configured:
        touch $@

$(WRKBUILD)/.built:
        touch $@

$(IPKG_MYPACKAGE):
        rm -rf $(IDIR_MYPACKAGE)
        mkdir -p $(IDIR_MYPACKAGE)
        $(SCRIPT_DIR)/make-ipkg-dir.sh $(IDIR_MYPACKAGE) ipkg/$(PKG_NAME).control $(PKG_RELEASE) $(ARCH)
        mkdir -p $(IDIR_MYPACKAGE)/etc/init.d
        mkdir -p $(IDIR_MYPACKAGE)/etc/crontabs
        mkdir -p $(IDIR_MYPACKAGE)/usr/sbin
        mkdir $(IDIR_MYPACKAGE)/etc/openvpn
        mkdir $(IDIR_MYPACKAGE)/etc/samba
        mkdir $(IDIR_MYPACKAGE)/etc/network
        $(CP) ./files/dnsmasq.conf $(IDIR_MYPACKAGE)/etc
        $(CP) ./files/openvpn.conf $(IDIR_MYPACKAGE)/etc/openvpn
        $(CP) ./files/smb.conf $(IDIR_MYPACKAGE)/etc/samba
        $(CP) ./files/interfaces $(IDIR_MYPACKAGE)/etc/network
        $(CP) ./files/firewall.conf $(IDIR_MYPACKAGE)/etc
        $(CP) ./files/hosts $(IDIR_MYPACKAGE)/etc/hosts
        $(SED) "s/@FWRT_WAN@/$(FWRT_WAN)/g" \
                $(IDIR_MYPACKAGE)/etc/firewall.conf
        $(CP) ./files/rc.conf $(IDIR_MYPACKAGE)/etc/rc.conf
        $(CP) ./files/vpnreset $(IDIR_MYPACKAGE)/usr/sbin
        $(CP) ./files/$(FWRT_VPN_CN).p12 \
                $(IDIR_MYPACKAGE)/etc/openvpn
        $(CP) ./files/dh1024.pem \
                $(IDIR_MYPACKAGE)/etc/openvpn
        $(SED) "s/@FWRT_VPN_CN@/$(FWRT_VPN_CN)/" \
                $(IDIR_MYPACKAGE)/etc/openvpn/openvpn.conf
        $(SED) "s/@FWRT_LOCAL_NET@/$(FWRT_LAN_IP_NETWORK)/g" \
                $(IDIR_MYPACKAGE)/etc/dnsmasq.conf
        $(SED) "s/@FWRT_SAMBA_WORKGROUP@/$(FWRT_SAMBA_WORKGROUP)/" \
                $(IDIR_MYPACKAGE)/etc/samba/smb.conf
        $(SED) "s#@FWRT_SAMBA_PATH@#$(FWRT_SAMBA_PATH)#" \
                $(IDIR_MYPACKAGE)/etc/samba/smb.conf
        $(SED) "s/@FWRT_LAN@/$(FWRT_LAN)/g" \
                $(IDIR_MYPACKAGE)/etc/network/interfaces
        $(SED) "s/@FWRT_WAN@/$(FWRT_WAN)/g" \
                $(IDIR_MYPACKAGE)/etc/network/interfaces
        $(SED) "s/@FWRT_WLAN@/$(FWRT_WLAN)/g" \
                $(IDIR_MYPACKAGE)/etc/network/interfaces
        $(SED) "s/@FWRT_NET_LAN_IP_ADDRESS@/$(FWRT_LAN_IP_ADDRESS)/g" \
                $(IDIR_MYPACKAGE)/etc/network/interfaces
        $(SED) "s/@FWRT_WIFI_CHANNEL@/$(FWRT_WIFI_CHANNEL)/g" \
                $(IDIR_MYPACKAGE)/etc/network/interfaces
        -find $(IDIR_MYPACKAGE) -type d -name CVS | xargs rm -rf
        -find $(IDIR_MYPACKAGE) -type d -name .svn | xargs rm -rf
        -find $(IDIR_MYPACKAGE) -name '.#*' | xargs rm -f
        $(IPKG_BUILD) $(IDIR_MYPACKAGE) $(PACKAGE_DIR)

compile-targets: $(IPKG_MYPACKAGE)
install-targets: compile
        $(IPKG) install $(IPKG_MYPACKAGE)

=============================================

And in package/mypackage/Config.in

choice 
prompt "Location of VPN endpoint"
config FWRT_VPN-DE-1
        bool "VPN-DE-1"
        select FWRT_PACKAGE_MYPACKAGE
        help
         Germany 1
endchoice

config FWRT_PACKAGE_MYPACKAGE
        bool "VPN Router with OpenVPN"
        select FWRT_PACKAGE_BRIDGE_UTILS
        select FWRT_PACKAGE_IPTABLES
        select FWRT_PACKAGE_FDISK
        select FWRT_PACKAGE_DNSMASQ
        select FWRT_PACKAGE_E2FSPROGS
        select FWRT_PACKAGE_PPP
        select FWRT_PACKAGE_PPP_MOD_PPPOE
        select FWRT_PACKAGE_OPENNTPD
        select FWRT_PACKAGE_OPENVPN
        ...
      help
          Firmware for DSL router with OpenVPN. It selects dns server,
          dhcp server, iptables, ntpclient, ppp and openvpn.


Check if your .config contains FWRT_PACKAGE_MYPACKAGE. Use following
command to just build one package:
make package=mypackage compile V=99

have fun
 Waldemar
_______________________________________________
freewrt-developers mailing list
freewrt-developers@freewrt.org
https://www.freewrt.org/lists/listinfo/freewrt-developers
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic