aboutsummaryrefslogtreecommitdiff
path: root/paludis/repositories/e/ebuild/0/builtin_initrm.bash
blob: cb7e45e39110b5eecba45aea1c3a02d482b1e8a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
# vim: set sw=4 sts=4 et :

# Copyright (c) 2006, 2007, 2008 Ciaran McCreesh
#
# This file is part of the Paludis package manager. Paludis is free software;
# you can redistribute it and/or modify it under the terms of the GNU General
# Public License, version 2, as published by the Free Software Foundation.
#
# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA  02111-1307  USA

builtin_initrm()
{
    local a
    for a in PALUDIS_NON_EMPTY_VARIABLES ${PALUDIS_NON_EMPTY_VARIABLES} ; do
        [[ "${a#build:}" != "${a}" ]] && continue
        [[ -z "${!a}" ]] && die "\$${a} unset or empty"
        declare -r ${a}="${!a}"
    done

    for a in ${PALUDIS_DIRECTORY_VARIABLES} ; do
        [[ "${a#build:}" != "${a}" ]] && continue
        [[ -d "${!a}" ]] || die "\$${a} (\"${!a}\") not a directory"
    done

    for a in ${PALUDIS_DIRECTORY_IF_EXISTS_VARIABLES} ; do
        [[ "${a#build:}" != "${a}" ]] && continue
        [[ -e "${!a}" ]] && [[ ! -d "${!a}" ]] && \
            die "\$${a} (\"${!a}\") exists but is not a directory"
    done

    for a in PALUDIS_TMPDIR ; do
        if ! [[ -d "${!a}" ]] ; then
            PALUDIS_EXTRA_DIE_MESSAGE="
!!! '${!a}' should be a directory, but does not exist. For,
!!! security reasons, Paludis will not try to create this directory
!!! automatically. Please create it by hand and give it appropriate
!!! permissions. Typically you should use:
!!!     mkdir ${!a}
!!!     chgrp ${PALUDIS_REDUCED_GID} ${!a}
!!!     chmod g+rwx ${!a}
!!!     chmod +s ${!a}
!!! although other values may be more appropriate for your system.
"
            die "\$${a} (\"${!a}\") not a directory"
        fi
    done

    if [[ -e "${PALUDIS_TMPDIR}/${CATEGORY}-${PF}-uninstall" ]] ; then
        if type -p chflags &>/dev/null; then
            chflags -R 0 "${PALUDIS_TMPDIR}/${CATEGORY}-${PF}-uninstall" || die "Couldn't remove flags from workdir"
        fi
        rm -fr "${PALUDIS_TMPDIR}/${CATEGORY}-${PF}-uninstall" || die "Couldn't remove previous work"
    fi

    export T="${PALUDIS_TMPDIR}/${CATEGORY}-${PF}-uninstall/temp/"
    mkdir -p "${T}" || die "Couldn't create \$T (\"${T}\")"
    declare -r T="${T}"
    export HOME="${T}"
    export TMPDIR="${T}"
}

ebuild_f_initrm()
{
    if hasq "initrm" ${SKIP_FUNCTIONS} ; then
        ebuild_section "Skipping builtin_initrm (SKIP_FUNCTIONS)"
    else
        ebuild_section "Starting builtin_initrm"
        builtin_initrm
        ebuild_section "Done builtin_initrm"
    fi
}