| 1 | # Copyright 2004 Gentoo Technologies, Inc. |
1 | # Copyright 2004 Gentoo Technologies, Inc. |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/darcs.eclass,v 1.2 2006/08/10 22:52:47 dcoutts Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/darcs.eclass,v 1.5 2007/06/17 21:33:57 kolmodin Exp $ |
| 4 | # |
4 | # |
| 5 | # darcs eclass author: Andres Loeh <kosmikus@gentoo.org> |
5 | # darcs eclass author: Andres Loeh <kosmikus@gentoo.org> |
| 6 | # tla eclass author: <rphillips@gentoo.org> |
6 | # tla eclass author: <rphillips@gentoo.org> |
| 7 | # Original Author: Jeffrey Yasskin <jyasskin@mail.utexas.edu> |
7 | # Original Author: Jeffrey Yasskin <jyasskin@mail.utexas.edu> |
| 8 | # |
8 | # |
| … | |
… | |
| 29 | |
29 | |
| 30 | # darcs command to run |
30 | # darcs command to run |
| 31 | [ -z "$EDARCS_DARCS_CMD" ] && EDARCS_DARCS_CMD="darcs" |
31 | [ -z "$EDARCS_DARCS_CMD" ] && EDARCS_DARCS_CMD="darcs" |
| 32 | |
32 | |
| 33 | # darcs commands with command-specific options |
33 | # darcs commands with command-specific options |
| 34 | [ -z "$EDARCS_GET_CMD" ] && EDARCS_GET_CMD="get" |
34 | [ -z "$EDARCS_GET_CMD" ] && EDARCS_GET_CMD="get --partial" |
| 35 | [ -z "$EDARCS_UPDATE_CMD" ] && EDARCS_UPDATE_CMD="pull" |
35 | [ -z "$EDARCS_UPDATE_CMD" ] && EDARCS_UPDATE_CMD="pull" |
| 36 | |
36 | |
| 37 | # options to pass to both the "get" and "update" commands |
37 | # options to pass to both the "get" and "update" commands |
| 38 | [ -z "$EDARCS_OPTIONS" ] && EDARCS_OPTIONS="--set-scripts-executable" |
38 | [ -z "$EDARCS_OPTIONS" ] && EDARCS_OPTIONS="--set-scripts-executable" |
| 39 | |
39 | |
| … | |
… | |
| 44 | [ -z "$EDARCS_REPOSITORY" ] && EDARCS_REPOSITORY="" |
44 | [ -z "$EDARCS_REPOSITORY" ] && EDARCS_REPOSITORY="" |
| 45 | |
45 | |
| 46 | # The local directory to store the repository (useful to ensure a |
46 | # The local directory to store the repository (useful to ensure a |
| 47 | # unique local name); relative to EDARCS_TOP_DIR |
47 | # unique local name); relative to EDARCS_TOP_DIR |
| 48 | [ -z "$EDARCS_LOCALREPO" ] && [ -n "$EDARCS_REPOSITORY" ] \ |
48 | [ -z "$EDARCS_LOCALREPO" ] && [ -n "$EDARCS_REPOSITORY" ] \ |
| 49 | && EDARCS_LOCALREPO="`basename $EDARCS_REPOSITORY`" |
49 | && EDARCS_LOCALREPO=${EDARCS_REPOSITORY%/} \ |
|
|
50 | && EDARCS_LOCALREPO=${EDARCS_LOCALREPO##*/} |
| 50 | |
51 | |
| 51 | # EDARCS_CLEAN: set this to something to get a clean copy when updating |
52 | # EDARCS_CLEAN: set this to something to get a clean copy when updating |
| 52 | # (removes the working directory, then uses $EDARCS_GET_CMD to |
53 | # (removes the working directory, then uses $EDARCS_GET_CMD to |
| 53 | # re-download it.) |
54 | # re-download it.) |
| 54 | |
55 | |
| … | |
… | |
| 80 | export SANDBOX_WRITE="${SANDBOX_WRITE//:\/foobar:\/}" |
81 | export SANDBOX_WRITE="${SANDBOX_WRITE//:\/foobar:\/}" |
| 81 | fi |
82 | fi |
| 82 | |
83 | |
| 83 | # in case EDARCS_DARCS_DIR is a symlink to a dir, get the real |
84 | # in case EDARCS_DARCS_DIR is a symlink to a dir, get the real |
| 84 | # dir's path, otherwise addwrite() doesn't work. |
85 | # dir's path, otherwise addwrite() doesn't work. |
|
|
86 | pushd . |
| 85 | cd -P "$EDARCS_TOP_DIR" > /dev/null |
87 | cd -P "$EDARCS_TOP_DIR" > /dev/null |
| 86 | EDARCS_TOP_DIR="`/bin/pwd`" |
88 | EDARCS_TOP_DIR="`/bin/pwd`" |
| 87 | |
89 | |
| 88 | # disable the sandbox for this dir |
90 | # disable the sandbox for this dir |
| 89 | addwrite "$EDARCS_TOP_DIR" |
91 | addwrite "$EDARCS_TOP_DIR" |
| … | |
… | |
| 107 | elif [ "${mode}" == "update" ]; then |
109 | elif [ "${mode}" == "update" ]; then |
| 108 | einfo "Running $cmdupdate" |
110 | einfo "Running $cmdupdate" |
| 109 | eval $cmdupdate || die "darcs update command failed" |
111 | eval $cmdupdate || die "darcs update command failed" |
| 110 | fi |
112 | fi |
| 111 | |
113 | |
|
|
114 | popd |
| 112 | } |
115 | } |
| 113 | |
116 | |
| 114 | |
117 | |
| 115 | darcs_src_unpack() { |
118 | darcs_src_unpack() { |
|
|
119 | local EDARCS_SHOPT |
| 116 | |
120 | |
| 117 | debug-print-function $FUNCNAME $* |
121 | debug-print-function $FUNCNAME $* |
| 118 | |
122 | |
| 119 | debug-print "$FUNCNAME: init: |
123 | debug-print "$FUNCNAME: init: |
| 120 | EDARCS_DARCS_CMD=$EDARCS_DARCS_CMD |
124 | EDARCS_DARCS_CMD=$EDARCS_DARCS_CMD |
| … | |
… | |
| 134 | |
138 | |
| 135 | # probably redundant, but best to make sure |
139 | # probably redundant, but best to make sure |
| 136 | # Use ${WORKDIR}/${P} rather than ${S} so user can point ${S} to something inside. |
140 | # Use ${WORKDIR}/${P} rather than ${S} so user can point ${S} to something inside. |
| 137 | mkdir -p "${WORKDIR}/${P}" |
141 | mkdir -p "${WORKDIR}/${P}" |
| 138 | |
142 | |
|
|
143 | EDARCS_SHOPT=$(shopt -p dotglob) |
| 139 | shopt -s dotglob # get any dotfiles too. |
144 | shopt -s dotglob # get any dotfiles too. |
| 140 | cp -Rf "$EDARCS_TOP_DIR/$EDARCS_LOCALREPO"/* "${WORKDIR}/${P}" |
145 | cp -Rf "$EDARCS_TOP_DIR/$EDARCS_LOCALREPO"/* "${WORKDIR}/${P}" |
|
|
146 | eval ${EDARCS_SHOPT} # reset shopt |
| 141 | |
147 | |
| 142 | einfo "Darcs repository contents are now in ${WORKDIR}/${P}" |
148 | einfo "Darcs repository contents are now in ${WORKDIR}/${P}" |
| 143 | |
149 | |
| 144 | } |
150 | } |
| 145 | |
151 | |