summaryrefslogtreecommitdiff
path: root/net-misc
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2016-11-11 11:03:00 -0600
committerWilliam Hubbs <williamh@gentoo.org>2016-11-11 11:08:18 -0600
commitdb7f0584b1c3b0679391f60680ab83839c1943d1 (patch)
treef94f04c07cf55473d98b92d27d7d112ed1c098b5 /net-misc
parenta10bbf8edca89c3863d3fa90ecb160e628537f2a (diff)
downloadgentoo-db7f0584b1c3b0679391f60680ab83839c1943d1.tar.gz
gentoo-db7f0584b1c3b0679391f60680ab83839c1943d1.tar.xz
net-misc/dhcpcd: copy files to new locations for dhcpcd-7 for #599396
Note from WilliamH: The original patch was modified to use "${EROOT%/}"/ instead of "${ROOT}"/. Package-Manager: portage-2.3.0
Diffstat (limited to 'net-misc')
-rw-r--r--net-misc/dhcpcd/dhcpcd-9999.ebuild74
1 files changed, 65 insertions, 9 deletions
diff --git a/net-misc/dhcpcd/dhcpcd-9999.ebuild b/net-misc/dhcpcd/dhcpcd-9999.ebuild
index 0b616f0955c..f6264d2986f 100644
--- a/net-misc/dhcpcd/dhcpcd-9999.ebuild
+++ b/net-misc/dhcpcd/dhcpcd-9999.ebuild
@@ -79,21 +79,77 @@ src_install()
pkg_postinst()
{
- # Upgrade the duid file to the new format if needed
- local old_duid="${ROOT}"/var/lib/dhcpcd/dhcpcd.duid
- local new_duid="${ROOT}"/etc/dhcpcd.duid
- if [ -e "${old_duid}" ] && ! grep -q '..:..:..:..:..:..' "${old_duid}"; then
- sed -i -e 's/\(..\)/\1:/g; s/:$//g' "${old_duid}"
+ local dbdir="${EROOT%/}"/var/lib/dhcpcd old_files=
+
+ local old_old_duid="${EROOT%/}"/var/lib/dhcpcd/dhcpcd.duid
+ local old_duid="${EROOT%/}"/etc/dhcpcd.duid
+ local new_duid="${dbdir}"/duid
+ if [ -e "${old_old_duid}" ]; then
+ # Upgrade the duid file to the new format if needed
+ if ! grep -q '..:..:..:..:..:..' "${old_old_duid}"; then
+ sed -i -e 's/\(..\)/\1:/g; s/:$//g' "${old_old_duid}"
+ fi
+
+ # Move the duid to /etc, a more sensible location
+ if [ ! -e "${old_duid}" ]; then
+ cp -p "${old_old_duid}" "${new_duid}"
+ fi
+ old_files="${old_files} ${old_old_duid}"
+ fi
+
+ # dhcpcd-7 moves the files out of /etc
+ if [ -e "${old_duid}" ]; then
+ if [ ! -e "${new_duid}" ]; then
+ cp -p "${old_duid}" "${new_duid}"
+ fi
+ old_files="${old_files} ${old_duid}"
+ fi
+ local old_secret="${EROOT%/}"/etc/dhcpcd.secret
+ local new_secret="${dbdir}"/secret
+ if [ -e "${old_secret}" ]; then
+ if [ ! -e "${new_secret}" ]; then
+ cp -p "${old_secret}" "${new_secret}"
+ fi
+ old_files="${old_files} ${old_secret}"
fi
- # Move the duid to /etc, a more sensible location
- if [ -e "${old_duid}" -a ! -e "${new_duid}" ]; then
- cp -p "${old_duid}" "${new_duid}"
+ # dhcpcd-7 renames some files in /var/lib/dhcpcd
+ local old_rdm="${dbdir}"/dhcpcd-rdm.monotonic
+ local new_rdm="${dbdir}"/rdm_monotonic
+ if [ -e "${old_rdm}" ]; then
+ if [ ! -e "${new_rdm}" ]; then
+ cp -p "${old_rdm}" "${new_rdm}"
+ fi
+ old_files="${old_files} ${old_rdm}"
+ fi
+ local lease=
+ for lease in "${dbdir}"/dhcpcd-*.lease*; do
+ [ -f "$lease" ] || continue
+ old_files="${old_files} ${lease}"
+ local new_lease=$(basename "$lease" | sed -e "s/dhcpcd-//")
+ [ -e "${dbdir}/${new_lease}" ] && continue
+ cp "${lease}" "${dbdir}/${new_lease}"
+ done
+
+ # Warn about removing stale files
+ if [ -n "${old_files}" ]; then
+ elog
+ elog "dhcpcd-7 has copied dhcpcd.duid and dhcpcd.secret from"
+ elog "${EROOT%/}/etc to ${dbdir}"
+ elog "and copied leases in ${dbdir} to new files with the dhcpcd-"
+ elog "prefix dropped."
+ elog
+ elog "You should remove these files if you don't plan on reverting"
+ elog "to an older version:"
+ local old_file=
+ for old_file in ${old_files}; do
+ elog " ${old_file}"
+ done
fi
if [ -z "$REPLACING_VERSIONS" ]; then
elog
- elog "dhcpcd has zeroconf support active by default."
+ elog "dhcpcd has zeroconf support active by default."
elog "This means it will always obtain an IP address even if no"
elog "DHCP server can be contacted, which will break any existing"
elog "failover support you may have configured in your net configuration."