X-Original-To: alpine-devel@lists.alpinelinux.org Delivered-To: alpine-devel@lists.alpinelinux.org Received: from smtp161.dfw.emailsrvr.com (smtp161.dfw.emailsrvr.com [67.192.241.161]) by lists.alpinelinux.org (Postfix) with ESMTP id 20CC01EBFF1 for ; Wed, 29 Dec 2010 02:22:46 +0000 (UTC) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp26.relay.dfw1a.emailsrvr.com (SMTP Server) with ESMTP id A50D8801DA; Tue, 28 Dec 2010 21:22:45 -0500 (EST) X-Virus-Scanned: OK Received: by smtp26.relay.dfw1a.emailsrvr.com (Authenticated sender: mcs-AT-darkregion.net) with ESMTPSA id 66099800E8; Tue, 28 Dec 2010 21:22:44 -0500 (EST) From: Matt Smith To: alpine-devel@lists.alpinelinux.org Cc: Matt Smith Subject: [alpine-devel] [PATCH] abuild: created 'saveas-*://' URI support Date: Tue, 28 Dec 2010 20:22:17 -0600 Message-Id: <1293589337-5232-1-git-send-email-mcs@darkregion.net> X-Mailer: git-send-email 1.7.3.3 X-Mailinglist: alpine-devel Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: 'saveas-*://' URI support has been created for use with the source= line of APKBUILD files. It allows for a remote source file to be saved with an arbitrary filename. This is useful in situations where the last component of the URI is not the preferred filename. Here's how it works. Say we have the following URI: http://oss.example.org/?get=software&ver=1.0 Both Busybox Wget and GNU Wget will save this with the filename: ?get=software&ver=1.0 To get around this, we could use cURL to save the file using the filename in the HTTP response headers: $ curl -JO "http://oss.example.org/?get=software&ver=1.0" Or we could use this 'saveas' hack. Essentially, the original URI is converted to read: saveas-http://oss.example.org/?get=software&ver=1.0/software-1.0.tar.gz In the download process, the 'saveas-' portion is removed, and the file is downloaded from the original URI, but is saved with the filename being the last component of the URI. In this case, it will be saved as 'software-1.0.tar.gz'. It is designed so that it works with any protocol supported by abuild. For example: saveas-ftp://oss.example.org/?get=software&ver=1.0/software-1.0.tar.gz Check it out and let me know what you think. Thanks, Matt --- abuild.in | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/abuild.in b/abuild.in index e5809dc..8f9e773 100755 --- a/abuild.in +++ b/abuild.in @@ -179,7 +179,14 @@ uri_fetch() { # we need GNU wget for this case "$uri" in - https://*) opts="--no-check-certificate";; + *https://*) opts="--no-check-certificate";; + esac + + # fix saveas-*://* URIs + case "$uri" in + # remove 'saveas-' from beginning and + # '/filename' from end of URI + saveas-*://*) uri="${uri:7:$(expr ${#uri} - 7 - ${#d} - 1)}";; esac mkdir -p "$SRCDEST" @@ -194,7 +201,7 @@ uri_fetch() { is_remote() { case "$1" in - http://*|ftp://*|https://*) + http://*|ftp://*|https://*|saveas-*://*) return 0;; esac return 1 -- 1.7.3.3 --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---