From owner-freebsd-ports Thu Mar 6 10:50:42 2003 Delivered-To: freebsd-ports@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2586037B401 for ; Thu, 6 Mar 2003 10:50:40 -0800 (PST) Received: from mail.inka.de (quechua.inka.de [193.197.184.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id B335F43F85 for ; Thu, 6 Mar 2003 10:50:38 -0800 (PST) (envelope-from mailnull@mips.inka.de) Received: from kemoauc.mips.inka.de (uucp@) by mail.inka.de with gbsmtp id 18r09f-0003fM-04; Thu, 06 Mar 2003 19:31:43 +0100 Received: from kemoauc.mips.inka.de (localhost [127.0.0.1]) by kemoauc.mips.inka.de (8.12.8/8.12.6) with ESMTP id h26HfjZ8052361 for ; Thu, 6 Mar 2003 18:41:45 +0100 (CET) (envelope-from mailnull@localhost.mips.inka.de) Received: (from mailnull@localhost) by kemoauc.mips.inka.de (8.12.8/8.12.8/Submit) id h26HfjZO052360 for freebsd-ports@freebsd.org; Thu, 6 Mar 2003 18:41:45 +0100 (CET) From: naddy@mips.inka.de (Christian Weisgerber) Subject: Re: USE_AUTOEXTRACT option for bsd.port.mk Date: Thu, 6 Mar 2003 17:41:44 +0000 (UTC) Message-ID: References: <200303060431.h264VAjO082569@green.bikeshed.org> Originator: naddy@mips.inka.de (Christian Weisgerber) To: freebsd-ports@freebsd.org Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Brian Fundakowski Feldman wrote: > I implemented a USE_AUTOEXTRACT option which extracts files just like > normal, except it would use the suffix to determine the extraction method, > and thus be able to support more than one distribution file format in the > same port without any further work by the port maintainer. Am I nutty for > thinking of it, or is it possibly a good idea? I think it is a good idea, and it may even deserve to eventually become the default behavior as it is on OpenBSD. OpenBSD uses a variable EXTRACT_CASES to hold a shell fragment. You can prepend cases to it in order to add to the default handlers or to override them. Some relevant snippet's from OpenBSD's bsd.port.mk are: .if !empty(EXTRACT_ONLY:M*.zip) _USE_ZIP?= Yes .endif .if !empty(EXTRACT_ONLY:M*.tar.bz2) || (defined(PATCHFILES) && !empty(_PATCHFILE S:M*.bz2)) _USE_BZIP2?= Yes .endif _USE_ZIP?= No _USE_BZIP2?= No EXTRACT_CASES?= .if ${_USE_ZIP:L} != "no" BUILD_DEPENDS+= :unzip-*:archivers/unzip EXTRACT_CASES+= *.zip) ${UNZIP} -q ${FULLDISTDIR}/$$archive -d ${WRKDIR};; .endif .if ${_USE_BZIP2:L} != "no" BUILD_DEPENDS+= :bzip2-*:archivers/bzip2 EXTRACT_CASES+= *.tar.bz2) ${BZIP2} -dc ${FULLDISTDIR}/$$archive | ${TAR} xf -;; .endif EXTRACT_CASES+= *.tar) ${TAR} xf ${FULLDISTDIR}/$$archive;; EXTRACT_CASES+= *.shar.gz|*.shar.Z|*.sh.gz|*.sh.Z) ${GZIP_CMD} -dc ${FULLDISTDIR}/$$archive | ${_PERL_FIX_SHAR} | /bin/sh;; EXTRACT_CASES+= *.shar | *.sh) ${_PERL_FIX_SHAR} ${FULLDISTDIR}/$$archive | /bin/sh;; EXTRACT_CASES+= *.tar.gz) ${GZIP_CMD} -dc ${FULLDISTDIR}/$$archive | ${TAR} xf - ;; EXTRACT_CASES+= *.gz) ${GZIP_CMD} -dc ${FULLDISTDIR}/$$archive >`basename $$archive .gz`;; EXTRACT_CASES+= *) ${GZIP_CMD} -dc ${FULLDISTDIR}/$$archive | ${TAR} xf -;; ... [and for the action] # What EXTRACT normally does: @PATH=${PORTPATH}; set -e; cd ${WRKDIR}; \ for archive in ${EXTRACT_ONLY}; do \ case $$archive in \ ${EXTRACT_CASES} \ esac; \ done ... In a port Makefile you just use something like this: ... MASTER_SITES= http://www.rdrop.com/users/billmc/ DISTFILES= adcomplain.pl.uu EXTRACT_CASES= *.uu) uudecode ${FULLDISTDIR}/$$archive;; ... There is also a similar PATCH_CASES. -- Christian "naddy" Weisgerber naddy@mips.inka.de To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message