It would perhaps be useful to add optional --old-confdir and
--new-confdir parameters to pg_upgrade. If these parameters are absent
then pg_upgrade would work as it does now and assume that the config
files are in the datadir.
The reason for this suggestion is that packages for Ubuntu (and I
suppose Debian and possibly others) place the config files in a
different directory than the data files.
The Ubuntu packaging, for example, puts all the configuration files in
/etc/postgresql/VERSION/main/.
If I set the data-directories to /var/lib/postgresql/VERSION/main then
pg_upgrade complains about missing config files.
If I set the data directories to /etc/postgresql/VERSION/main/ then
pg_upgrade complains that the "base" subdirectory is missing.
Temporarily symlinking postgresql.conf and pg_hba.conf from the config
directory to the data directory allowed the upgrade to run successfully
but is a bit more kludgey and non-obvious.
Cheers,
Steve