summaryrefslogtreecommitdiff
blob: b1b8eebaefda67f7b1d1c5b8fa250e776f10f68a (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
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

DESCRIPTION="Make /etc/resolv.conf a symlink to a runtime-writable location"
HOMEPAGE="https://wiki.gentoo.org/wiki/No_homepage"
SRC_URI=""
S=${WORKDIR}

LICENSE="public-domain"
SLOT="0"
KEYWORDS="~amd64 ~riscv ~x86"
IUSE="+symlink"

pkg_preinst() {
	if use symlink; then
		if [[ -f ${EROOT}/etc/resolv.conf && ! -L ${EROOT}/etc/resolv.conf ]]
		then # migrate existing resolv.conf
			if [[ "$(head -n 1 "${EROOT}"/etc/resolv.conf)" \
					!= "# Generated by "* ]]; then

				eerror "${EROOT}/etc/resolv.conf seems not to be autogenerated."
				eerror "Aborting build to avoid removing user data. If that file is supposed"
				eerror "to be autogenerated, please remove it manually. Otherwise, please"
				eerror "set USE=-symlink to avoid installing resolv.conf symlink."

				die "${EROOT}/etc/resolv.conf not autogenerated"
			else
				ebegin "Moving ${EROOT}/etc/resolv.conf to ${EROOT}/var/run/"
				mv "${EROOT}"/etc/resolv.conf "${EROOT}"/var/run/
				eend ${?} || die
			fi
		fi
	fi
}

src_install() {
	# XXX: /run should be more correct, when it's supported by baselayout

	use symlink && dosym ../var/run/resolv.conf /etc/resolv.conf
}

pkg_postrm() {
	# Don't leave the user with no resolv.conf
	if [[ ! -e ${EROOT}/etc/resolv.conf && -f ${EROOT}/var/run/resolv.conf ]]
	then
		ebegin "Moving ${EROOT}/var/run/resolv.conf to ${EROOT}/etc/"
		mv "${EROOT}"/var/run/resolv.conf "${EROOT}"/etc/
		eend ${?} || die
	fi
}