From db7f0584b1c3b0679391f60680ab83839c1943d1 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Fri, 11 Nov 2016 11:03:00 -0600 Subject: [PATCH] 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 --- net-misc/dhcpcd/dhcpcd-9999.ebuild | 74 ++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 9 deletions(-) diff --git a/net-misc/dhcpcd/dhcpcd-9999.ebuild b/net-misc/dhcpcd/dhcpcd-9999.ebuild index 0b616f0955c5..f6264d2986fd 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." -- 2.26.2