source: trunk/base/src/port1.0/portextract.tcl @ 821

Last change on this file since 821 was 821, checked in by kevin, 18 years ago

Enhanced options hooks

Allow multiple hooks for each option.
Call hook with option name, action, and list of parameters.

Added portfile class of depspec

First tests registry, then path, then builds.

Cleans before and after building portfile dependencies.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.2 KB
Line 
1# ex:ts=4
2# portextract.tcl
3#
4# Copyright (c) 2002 Apple Computer, Inc.
5# All rights reserved.
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10# 1. Redistributions of source code must retain the above copyright
11#    notice, this list of conditions and the following disclaimer.
12# 2. Redistributions in binary form must reproduce the above copyright
13#    notice, this list of conditions and the following disclaimer in the
14#    documentation and/or other materials provided with the distribution.
15# 3. Neither the name of Apple Computer, Inc. nor the names of its contributors
16#    may be used to endorse or promote products derived from this software
17#    without specific prior written permission.
18#
19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29# POSSIBILITY OF SUCH DAMAGE.
30#
31
32package provide portextract 1.0
33package require portutil 1.0
34
35register com.apple.extract target extract_main
36register com.apple.extract init extract_init
37register com.apple.extract provides extract
38register com.apple.extract requires fetch checksum
39register com.apple.extract deplist depends_extract
40
41# define options
42options extract.only
43commands extract
44
45# Set up defaults
46# XXX call out to code in portutil.tcl XXX
47# This cleans the distfiles list of all site tags
48default extract.only {[disttagclean $distfiles]}
49
50default extract.dir {${portpath}/${workdir}}
51default extract.cmd gzip
52default extract.pre_args -dc
53default extract.post_args {{| tar -xf -}}
54
55set UI_PREFIX "---> "
56
57proc extract_init {args} {
58    global extract.only extract.cmd extract.pre_args extract.post_args distfiles use_bzip2 use_zip portpath workdir
59
60    if [info exists use_bzip2] {
61        set extract.cmd bzip2
62    } elseif [info exists use_zip] {
63        set extract.cmd unzip
64        set extract.pre_args -q
65        set extract.post_args "-d $portpath/$workdir"
66    }
67}
68
69proc extract_main {args} {
70    global portname portpath workdir distname distpath distfiles use_bzip2 extract.only extract.cmd extract.before_args extract.after_args extract.args UI_PREFIX
71
72    if {![info exists distfiles] && ![info exists extract.only]} {
73        # nothing to do
74        return 0
75    }
76
77    ui_msg "$UI_PREFIX Extracting for $distname"
78
79    foreach distfile ${extract.only} {
80        ui_info "$UI_PREFIX Extracting $distfile ... " -nonewline
81        set extract.args "$distpath/$distfile"
82        if [catch {system "[command extract]"} result] {
83            ui_error "$result"
84            return -code error "$result"
85        }
86        ui_info "Done"
87    }
88    return 0
89}
Note: See TracBrowser for help on using the repository browser.