--- dhcpcd-9999.ebuild 2016-04-12 16:49:03.000000000 +0100 +++ dhcpcd-9999.ebuild 2016-11-08 23:08:03.768984902 +0000 @@ -79,21 +79,77 @@ 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="${ROOT}"/var/lib/dhcpcd old_files= + + local old_old_duid="${ROOT}"/var/lib/dhcpcd/dhcpcd.duid + local old_duid="${ROOT}"/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="${ROOT}"/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 "${ROOT}/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."