In pkg_deinstall, in get_beforedeinstall_command, there's a line:
commands.each { |cmd| cmd.sub!(/^[;\s]+/, '') if !cmd.nil }
I'm kinda out of my area here, but I'm pretty sure that method should be
"nil?", not "nil". As it stands, portupgrade fails to upgrade anything if
BEFOREDEINSTALL in pkgtools.conf returns anything. (The example in the .conf
file's comments returns a command for all packages, although it frequently is
an empty string.)
I've seen a couple of references to this by searching on Google, but I'm not
aware of anybody having fixed it. The primary symptom is that portupgrade will
build but during the deinstall will stop working on that package with no clear
error message, and the reason given in the "why the upgrades failed" summary is
"undefined method `nil' for "":String". I've seen people asking about this on
freebsd-questions and freebsd-ruby, but haven't really searched that hard. (I
cc'd the people I saw asking about it.)
I'm sending this to [email protected] because that's what's listed as the
maintainer for portupgrade; let me know if there's somewhere else it should go.
I don't subscribe to the ruby list, and I apologize if this has been discussed
here before.
Please copy me on all replies, since I'm not on the list.
Thanks,
joelh