diff --git a/package/opkg/Makefile b/package/opkg/Makefile new file mode 100644 index 0000000000..b9e3e2979a --- /dev/null +++ b/package/opkg/Makefile @@ -0,0 +1,76 @@ +# +# Copyright (C) 2006-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. + +include $(TOPDIR)/rules.mk + +PKG_NAME:=opkg +PKG_REV:=4561 +PKG_VERSION:=$(PKG_REV) +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=svn +PKG_SOURCE_VERSION:=$(PKG_REV) +PKG_SOURCE_SUBDIR:=opkg-$(PKG_VERSION) +PKG_SOURCE_URL:=http://svn.openmoko.org/trunk/src/target/opkg/ +PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz +PKG_FIXUP = libtool +include $(INCLUDE_DIR)/package.mk + +define Package/opkg + SECTION:=base + CATEGORY:=Base system + TITLE:=opkg package management system + URL:=http://wiki.openmoko.org/wiki/Opkg +endef + +define Package/opkg/description + Lightweight package management system + opkg is the opkg Package Management System, for handling + installation and removal of packages on a system. It can + recursively follow dependencies and download all packages + necessary to install a particular package. + + opkg knows how to install both .ipk and .deb packages. +endef + +EXTRA_CFLAGS+=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/lib +EXTRA_LDFLAGS+=-L$(STAGING_DIR)/usr/lib -Wl,-rpath-link,$(STAGING_DIR)/usr/lib + +CONFIGURE_ARGS += \ + --disable-curl \ + --disable-gpg \ + +define Build/Configure + (cd $(PKG_BUILD_DIR); \ + ./autogen.sh \ + ); + $(call Build/Configure/Default) +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + CC=$(TARGET_CC) \ + DESTDIR="$(PKG_INSTALL_DIR)" \ + all install +endef + +define Package/opkg/install + $(INSTALL_DIR) $(1)/etc + $(INSTALL_DATA) ./files/opkg.conf $(1)/etc/ + $(SED) 's,$$$$S,$(BOARD),g' $(1)/etc/opkg.conf + $(INSTALL_BIN) ./files/postinst $(1)/CONTROL/postinst + $(INSTALL_DIR) $(1)/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopkg.so.* $(1)/usr/lib/ +endef + +define Build/InstallDev + mkdir -p $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/libopkg $(1)/usr/include/ +endef + +$(eval $(call BuildPackage,opkg)) diff --git a/package/opkg/files/opkg.conf b/package/opkg/files/opkg.conf new file mode 100644 index 0000000000..f7f96fe2b6 --- /dev/null +++ b/package/opkg/files/opkg.conf @@ -0,0 +1,4 @@ +src snapshots http://downloads.openwrt.org/snapshots/$S/packages +dest root / +dest ram /tmp +lists_dir ext /var/opkg-lists diff --git a/package/opkg/files/postinst b/package/opkg/files/postinst new file mode 100644 index 0000000000..c479744500 --- /dev/null +++ b/package/opkg/files/postinst @@ -0,0 +1,2 @@ +#!/bin/sh +ln -sf "${IPKG_INSTROOT}/usr/lib/ipkg" "${IPKG_INSTROOT}/usr/lib/opkg" diff --git a/package/opkg/patches/001-use-wget b/package/opkg/patches/001-use-wget new file mode 100644 index 0000000000..a8ec7c518a --- /dev/null +++ b/package/opkg/patches/001-use-wget @@ -0,0 +1,77 @@ +Index: opkg-4561/libopkg/opkg_download.c +=================================================================== +--- opkg-4561/libopkg/opkg_download.c (revision 4480) ++++ opkg-4561/libopkg/opkg_download.c (working copy) +@@ -17,7 +17,9 @@ + General Public License for more details. + */ + #include "config.h" ++#ifdef HAVE_CURL + #include ++#endif + #ifdef HAVE_GPGME + #include + #endif +@@ -74,6 +76,7 @@ + setenv("no_proxy", conf->no_proxy, 1); + } + ++#ifdef HAVE_CURL + CURL *curl; + CURLcode res; + FILE * file = fopen (tmp_file_location, "w"); +@@ -119,6 +122,31 @@ + free(src_basec); + return -1; + } ++#else /* if wget is selected */ ++ char *cmd; ++ /* XXX: BUG rewrite to use execvp or else busybox's internal wget -Jamey 7/23/2002 */ ++ sprintf_alloc(&cmd, "wget --passive-ftp %s %s%s %s%s -P %s %s", ++ (conf->http_proxy || conf->ftp_proxy) ? "--proxy=on" : "", ++ conf->proxy_user ? "--proxy-user=" : "", ++ conf->proxy_user ? conf->proxy_user : "", ++ conf->proxy_passwd ? "--proxy-passwd=" : "", ++ conf->proxy_passwd ? conf->proxy_passwd : "", ++ conf->tmp_dir, ++ src); ++ err = xsystem(cmd); ++ if (err) { ++ if (err != -1) { ++ opkg_message(conf,OPKG_ERROR, "%s: ERROR: Command failed with return value %d: `%s'\n", ++ __FUNCTION__, err, cmd); ++ } ++ unlink(tmp_file_location); ++ free(tmp_file_location); ++ free(src_basec); ++ free(cmd); ++ return EINVAL; ++ } ++ free(cmd); ++#endif + + err = file_move(tmp_file_location, dest_file_name); + +Index: opkg-4561/configure.ac +=================================================================== +--- opkg-4561/configure.ac (revision 4480) ++++ opkg-4561/configure.ac (working copy) +@@ -22,9 +22,16 @@ + + # Checks for libraries + +-# check for libcurl +-PKG_CHECK_MODULES(CURL, libcurl) ++AC_ARG_ENABLE(curl, ++ AC_HELP_STRING([--enable-curl], [Enable use of libcurl instead of wget ++ [[default=yes]] ]), ++ [want_curl="$enableval"], [want_curl="yes"]) + ++if test "x$want_curl" = "xyes"; then ++ # check for libcurl ++ PKG_CHECK_MODULES(CURL, libcurl) ++ AC_DEFINE(HAVE_CURL, 1, [Define if you want to use libcurl instead of wget]) ++fi + + + dnl ********** diff --git a/package/opkg/patches/002-fix-autogen b/package/opkg/patches/002-fix-autogen new file mode 100644 index 0000000000..0d39c42298 --- /dev/null +++ b/package/opkg/patches/002-fix-autogen @@ -0,0 +1,8 @@ +--- opkg-4561/autogen.sh-orig 2008-07-28 18:00:33.000000000 -0500 ++++ opkg-4561/autogen.sh 2008-07-28 18:00:45.000000000 -0500 +@@ -1,5 +1,3 @@ + #! /bin/sh + autoreconf -v --install || exit 1 + glib-gettextize --force --copy || exit 1 +-./configure --enable-maintainer-mode "$@" +-