Creant Paquet del OpenWRT

Documentació

(Basat en http://downloads.openwrt.org/kamikaze/docs/openwrt.html#x1-380002.1.2 )

Una vegada fet el checkout amb kamikaze hem d'anar a la carpeta packages i crear un directori (nom del packet) amb un fitxer Makefile i dues carpetes patches i files.

cd <kamikaze_path>
mkdir package/<package_name>/
mkdir package/<package_name>/patches
mkdir package/<package_name>/files

Després hem de crear el Makefile on donarem tota la informació per què el make world de la compilació trobi les fonts i pugui cross-compliar les fonts.

Exemples

Crear un paquet i publicant-lo

Fent el paquet 'hello':

  1. Crear els fonts+Makefile de compilació.
  2. Crear Makefile del package
# Hem de definir les variables: 
#    $APACHE_HOME (on tinguem el web server)
#    $KAMIKAZE_PATH on hem fet el checkout del svn de openwrt
mkdir hello-0.1
cd hello-0.1
# Creem el programa.
cat <<EOF > hello.c
#include <stdio.h>

int main ( void )
{
   printf("Hola graciasensefils!");
   return(0);
}
EOF
# Creem el seu Makefile
cat <<EOF > Makefile
all:   hello
clear:
       rm -f hello
EOF
cd ..
tar -zcvf hello-0.1.tgz hello-0.1
CHECKSUM=`md5sum -b hello-0.1.tgz|cut -d ' ' -f 1`
cp hello-0.1.tgz $APACHE_HOME
cd $KAMIKAZE_PATH
mkdir package/hello
mkdir package/hello/patches
# Creem el Makefile del paquet.
cat <<EOF >package/hello/Makefile
#Id hello.c 2008 07 29 agusti moll

include $(TOPDIR)/rules.mk

PKG_NAME:=hello
PKG_VERSION:=0.1
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
PKG_SOURCE_URL:=http://localhost/
EOF
echo "PKG_MD5SUM:=$CHECKSUM" >>package/hello/Makefile
cat <<EOF >>package/hello/Makefile
PKG_CAT:=zcat
PKG_BUILD_DIR:=$(BUILD_DIR)/hello-$(PKG_VERSION)  

include $(INCLUDE_DIR)/package.mk

define Package/hello
  SECTION:=other
  CATEGORY:=Test system
  TITLE:=Programa tipic per provar la sortida estandard
  URL:=http://localhost/
endef

define Package/hello/description
  Tipic programa per fer testing de la sortida estandar, i
  provar una compilacio amb openwrt.
endef

CONFIGURE_ARGS += \
 	--with-linux-headers="$(LINUX_DIR)" \

define Package/hello/install
 	$(INSTALL_DIR) $(1)/usr/bin
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/usr/bin/
endef

$(eval $(call BuildPackage,hello))
EOF
# Ara ja haurà de sortir al llistat de paquets, a la categoria que 
# hem definit,  "Test system"
make menuconfig 
# Una vegada sel·leccionat ja podem compilar.
make world V=99

El paquet té el programari

La idea és la mateixa que l'exemple anterior però el paquet en comptes de estar descarregable vía URL, el tenim directament en el directori del paquet.

Exemple basat en <kamikaze_path>/package/mtd

# A $KAMIKAZE_PATH inicialitzem el path del kamikaze

cd $KAMIKAZE_PATH
mkdir package/hello2/
mkdir package/hello2/src/
cat <<EOF > package/hello2/src/hello2.c
#include <stdio.h>

int main ( void )
{
   printf("Hola graciasensefils!");
   return(0);
}
EOF
# Creem el seu Makefile
cat <<EOF > package/hello2/src/Makefile
all:   hello2
clear:
       rm -f hello2
EOF
cat <<EOF > package/hello2/Makefile
# $Id: hello2.c 2008 07 29 agusti moll

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=hello2
PKG_RELEASE:=1

PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/hello2
  SECTION:=other
  CATEGORY:=Test system
  TITLE:=Yet anther Hello program, without package .tgz.
endef

define Package/hello2/description
  Yet anther hello program.
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
	$(MAKE) -C $(PKG_BUILD_DIR) \
		$(TARGET_CONFIGURE_OPTS) \
		CFLAGS="$(TARGET_CFLAGS) -Dtarget_$(BOARD)=1"
endef

define Package/hello2/install
	$(INSTALL_DIR) $(1)/usr/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/hello2 $(1)/usr/bin/
endef

$(eval $(call BuildPackage,hello2))
EOF
# Ara ja haurà de sortir al llistat de paquets, a la categoria que 
# hem definit,  "Test system"
make menuconfig 
# Una vegada sel·leccionat ja podem compilar.
make world V=99
desenvolupament/kamikaze/buildpackage.txt · Darrera modificació: 2008/07/29 20:39 per 62.37.184.230
Creative Commons License Valid CSS Driven by DokuWiki Valid XHTML 1.0