From patchwork Mon Aug 27 22:15:12 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Stefan_Fr=C3=B6berg?= X-Patchwork-Id: 180285 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id 0D0EA2C0345 for ; Tue, 28 Aug 2012 08:15:46 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id C046B24A8E; Mon, 27 Aug 2012 22:15:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XgQ3W+2u1M6F; Mon, 27 Aug 2012 22:15:43 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id EF6ED24B90; Mon, 27 Aug 2012 22:15:42 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 9C3688F753 for ; Mon, 27 Aug 2012 22:15:39 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 4BD5890F89 for ; Mon, 27 Aug 2012 22:15:39 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9+myAYRO37dt for ; Mon, 27 Aug 2012 22:15:37 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.petroprogram.com (mail.petroprogram.com [194.89.34.74]) by whitealder.osuosl.org (Postfix) with ESMTPS id 7048690F84 for ; Mon, 27 Aug 2012 22:15:37 +0000 (UTC) Received: from localhost.localdomain (88-148-226-121.bb.dnainternet.fi [88.148.226.121]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: stefan.froberg@petroprogram.com) by mail.petroprogram.com (Postfix) with ESMTPSA id B887244189; Tue, 28 Aug 2012 01:04:18 +0300 (EEST) From: =?UTF-8?q?Stefan=20Fr=C3=B6berg?= To: buildroot@busybox.net Date: Tue, 28 Aug 2012 01:15:12 +0300 Message-Id: <1346105712-20614-2-git-send-email-stefan.froberg@petroprogram.com> X-Mailer: git-send-email 1.7.7.6 In-Reply-To: <1346105712-20614-1-git-send-email-stefan.froberg@petroprogram.com> References: <1346105712-20614-1-git-send-email-stefan.froberg@petroprogram.com> MIME-Version: 1.0 Cc: thomas.petazzoni@free-electrons.com Subject: [Buildroot] [PATCH] upx: high-performance executable packer with in-place decompression support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Stefan Fröberg --- package/Config.in | 2 + package/ucl/Config.in | 6 ++ package/ucl/ucl-1.03-CFLAGS.patch | 134 +++++++++++++++++++++++++++++++++++++ package/ucl/ucl.mk | 26 +++++++ package/upx/Config.in | 8 ++ package/upx/upx.mk | 53 +++++++++++++++ 6 files changed, 229 insertions(+), 0 deletions(-) create mode 100644 package/ucl/Config.in create mode 100644 package/ucl/ucl-1.03-CFLAGS.patch create mode 100644 package/ucl/ucl.mk create mode 100644 package/upx/Config.in create mode 100644 package/upx/upx.mk diff --git a/package/Config.in b/package/Config.in index f308de7..4be7c22 100644 --- a/package/Config.in +++ b/package/Config.in @@ -13,6 +13,7 @@ source "package/gzip/Config.in" endif source "package/lzop/Config.in" source "package/lzma/Config.in" +source "package/upx/Config.in" source "package/xz/Config.in" endmenu @@ -307,6 +308,7 @@ endmenu menu "Compression and decompression" source "package/libarchive/Config.in" source "package/lzo/Config.in" +source "package/ucl/Config.in" source "package/zlib/Config.in" endmenu diff --git a/package/ucl/Config.in b/package/ucl/Config.in new file mode 100644 index 0000000..00a0b59 --- /dev/null +++ b/package/ucl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_UCL + bool "ucl" + help + The UCL Compression Library + + http://www.oberhumer.com/opensource/ucl diff --git a/package/ucl/ucl-1.03-CFLAGS.patch b/package/ucl/ucl-1.03-CFLAGS.patch new file mode 100644 index 0000000..07c925b --- /dev/null +++ b/package/ucl/ucl-1.03-CFLAGS.patch @@ -0,0 +1,134 @@ +From: Nathan Phillip Brink +Subject: Respect CCASFLAGS (which often defaults to CFLAGS). Fixes + compilation for portage-multilib users. + +diff -r c090ed619e90 configure.ac +--- a/configure.ac Sun Jun 26 16:00:09 2011 -0400 ++++ b/configure.ac Sun Jun 26 20:52:01 2011 -0400 +@@ -47,14 +47,12 @@ + AC_CANONICAL_TARGET + AM_MAINTAINER_MODE + +-if test -z "$ac_abs_top_srcdir"; then +- _AC_SRCPATHS(.) +-fi + if test -r .Conf.settings1; then + . ./.Conf.settings1 + fi + + AC_PROG_CC ++AM_PROG_AS + AC_PROG_CPP + mfx_PROG_CPPFLAGS + AC_C_CONST +@@ -84,13 +82,13 @@ + if test "X$enable_asm" != Xno; then + mfx_compile_S='${CC-cc} -c conftest.S 1>&AS_MESSAGE_LOG_FD' + cat > conftest.S < acinclude.m4 ) +endef + +UCL_POST_PATCH_HOOKS += UCL_CONFIGURE_FIXUP + +$(eval $(autotools-package)) diff --git a/package/upx/Config.in b/package/upx/Config.in new file mode 100644 index 0000000..ef2134b --- /dev/null +++ b/package/upx/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_UPX + bool "upx" + depends on BR2_PACKAGE_UCL + depends on BR2_PACKAGE_MICROPERL + help + Ultimate Packer for eXecutables (free version using UCL compression and not NRV) + + http://upx.sourceforge.net diff --git a/package/upx/upx.mk b/package/upx/upx.mk new file mode 100644 index 0000000..ade4e7a --- /dev/null +++ b/package/upx/upx.mk @@ -0,0 +1,53 @@ +############################################ +# +# upx +# +############################################ + +UPX_VERSION = 3.08 +UPX_SOURCE = upx-$(UPX_VERSION)-src.tar.bz2 +UPX_SITE = http://upx.sourceforge.net/download +UPX_DEPENDENCIES = ucl host-microperl +UPX_AUTORECONF = yes +UPX_LICENSE = GPLv2 +UPX_LICENSE_FILES = COPYING + + +# Because UPX can't currently use the newer XZ compression but +# older LZMA and because LZMA is currently deprecated in +# Buildroot, we do the things The Hard Way(TM). +# This just fetches LZMA sources and unpack them to $(BUILD_DIR) +# so that UPX can find them. +# +# This might seem braindead way to include source files directly +# and not just link against LZMA library but there is an explanation +# provided by one of the authors (John Reiser) of the UPX in +# https://bugzilla.redhat.com/show_bug.cgi?id=501636 + +# To prevent picking variables from actual lzma package +# if it still exists. + +SRC_LZMA_VERSION:=4.65 +SRC_LZMA_SOURCE:=lzma465.tar.bz2 +SRC_LZMA_SITE:=http://downloads.sourceforge.net/project/sevenzip/LZMA%20SDK/$(SRC_LZMA_VERSION) +SRC_LZMA_DIR:=$(BUILD_DIR)/lzma-$(SRC_LZMA_VERSION) + +define UPX_CONFIGURE_CMDS + $(call DOWNLOAD,$(SRC_LZMA_SITE)/$(SRC_LZMA_SOURCE)) + # God I hate folks who don't include top level directory in their tarballs ... + mkdir -p $(SRC_LZMA_DIR) + $(BZCAT) $(DL_DIR)/$(SRC_LZMA_SOURCE) | tar -C $(SRC_LZMA_DIR) $(TAR_OPTIONS) - +endef + +define UPX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) UPX_UCLDIR=$(UCL_DIR) UPX_LZMA_VERSION=0x465 UPX_LZMADIR=$(SRC_LZMA_DIR) $(MAKE) -C $(@D) all +endef + +define UPX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/upx.out $(TARGET_DIR)/usr/bin/upx +endef + +$(eval $(generic-package)) + + +