[packages] wget: Fix installation and cleanup package makefile (#6990)
authorVasilis Tsiligiannis <acinonyx@openwrt.gr>
Mon, 29 Mar 2010 14:58:36 +0000 (14:58 +0000)
committerVasilis Tsiligiannis <acinonyx@openwrt.gr>
Mon, 29 Mar 2010 14:58:36 +0000 (14:58 +0000)
* wget package binary installed at /usr/bin/wget-ssl
* wget-nossl package binary installed at /usr/bin/wget-nossl
* allows both packages to co-exist without conflict
* busybox symlink is replaced with symlink to newest package binary
* symlink is restored when removing package with the following preference:
1. /usr/bin/wget-ssl or /usr/bin/wget-nossl
2. /bin/busybox

SVN-Revision: 20583

net/wget/Makefile

index d410a0a13170ebaa57a4cf42edccb19e24212d04..ab933968c1b3b70a53587bfae5ad640a1c4ec987 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2007-2008 OpenWrt.org
+# Copyright (C) 2007-2010 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,12 +9,14 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wget
 PKG_VERSION:=1.12
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
 PKG_MD5SUM:=308a5476fc096a8a525d07279a6f6aa3
 
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/wget/Default
@@ -37,6 +39,7 @@ define Package/wget
 $(call Package/wget/Default)
   DEPENDS+= +libopenssl
   TITLE+= (with SSL support)
+  VARIANT:=ssl
 endef
 
 define Package/wget/description
@@ -47,6 +50,7 @@ endef
 define Package/wget-nossl
 $(call Package/wget/Default)
   TITLE+= (without SSL support)
+  VARIANT:=nossl
 endef
 
 define Package/wget-nossl/description
@@ -54,52 +58,65 @@ $(call Package/wget/Default/description)
  This package is built without SSL support.
 endef
 
+CONFIGURE_ARGS+= \
+       --disable-rpath
 
-define Build/Template
+ifeq ($(BUILD_VARIANT),ssl)
+       CONFIGURE_ARGS+= \
+               --with-ssl \
+               --with-libssl-prefix="$(STAGING_DIR)/usr"
+endif
 
-$(STAMP_BUILT)-$(2): $(STAMP_PREPARED)
-       -$(MAKE) -C $(PKG_BUILD_DIR) clean
-       $(call Build/Configure/Default,$(3))
-       $(MAKE) -C $(PKG_BUILD_DIR)
-       ( cd $(PKG_BUILD_DIR)/src; mv -f wget wget-$(2) )
-       touch $$@
+ifeq ($(BUILD_VARIANT),nossl)
+       CONFIGURE_ARGS+= \
+               --without-ssl
+endif
 
-$(STAMP_BUILT): $(STAMP_BUILT)-$(2)
+define Package/wget/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget $(1)/usr/bin/wget-ssl
+endef
 
-define Package/$(1)/install
-       $(INSTALL_DIR) $$(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget-$(2) $$(1)/usr/bin/wget
+define Package/wget-nossl/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wget $(1)/usr/bin/wget-nossl
 endef
 
-# FIXME: check if busybox really provides a wget applet
-define Package/$(1)/postrm
+define Package/wget/postinst
 #!/bin/sh
-ln -sf ../../bin/busybox $${IPKG_INSTROOT}/usr/bin/wget
+if [ -e $${IPKG_INSTROOT}/usr/bin/wget ]; then
+  rm -rf $${IPKG_INSTROOT}/usr/bin/wget;
+fi
+ln -sf ./wget-ssl $${IPKG_INSTROOT}/usr/bin/wget
 endef
 
+define Package/wget/postrm
+#!/bin/sh
+rm $${IPKG_INSTROOT}/usr/bin/wget
+[ -x $${IPKG_INSTROOT}/usr/bin/wget-nossl ] && ln -s ./wget-nossl $${IPKG_INSTROOT}/usr/bin/wget || {
+  ln -s ../../bin/busybox $${IPKG_INSTROOT}/usr/bin/wget
+  $${IPKG_INSTROOT}/usr/bin/wget 2>&1 | grep 'applet not found' > /dev/null 2>&1 && rm $${IPKG_INSTROOT}/usr/bin/wget
+}
+exit 0
 endef
 
-CONFIGURE_ARGS += \
-       --disable-rpath
+define Package/wget-nossl/postinst
+#!/bin/sh
+if [ -e $${IPKG_INSTROOT}/usr/bin/wget ]; then
+  rm -rf $${IPKG_INSTROOT}/usr/bin/wget;
+fi
+ln -s ./wget-nossl $${IPKG_INSTROOT}/usr/bin/wget
+endef
 
-ifneq ($(SDK)$(CONFIG_PACKAGE_wget),)
-  define Build/with-ssl
-       $(call Build/Template,wget,with-ssl, \
-               --with-ssl \
-               --with-libssl-prefix="$(STAGING_DIR)/usr" \
-       )
-  endef
-endif
-$(eval $(Build/with-ssl))
-
-ifneq ($(SDK)$(CONFIG_PACKAGE_wget-nossl),)
-  define Build/without-ssl
-       $(call Build/Template,wget-nossl,without-ssl, \
-               --without-ssl \
-       )
-  endef
-endif
-$(eval $(Build/without-ssl))
+define Package/wget-nossl/postrm
+#!/bin/sh
+rm $${IPKG_INSTROOT}/usr/bin/wget
+[ -x $${IPKG_INSTROOT}/usr/bin/wget-ssl ] && ln -s ./wget-ssl $${IPKG_INSTROOT}/usr/bin/wget || {
+  ln -s ../../bin/busybox $${IPKG_INSTROOT}/usr/bin/wget
+  $${IPKG_INSTROOT}/usr/bin/wget 2>&1 | grep 'applet not found' > /dev/null 2>&1 && rm $${IPKG_INSTROOT}/usr/bin/wget
+}
+exit 0
+endef
 
 $(eval $(call BuildPackage,wget))
 $(eval $(call BuildPackage,wget-nossl))