[MacPorts] #25721: peekabot: inconvenient upgrade from 0.7.1 to 0.7.2
MacPorts
noreply at macports.org
Sat Jul 17 21:49:37 PDT 2010
#25721: peekabot: inconvenient upgrade from 0.7.1 to 0.7.2
-------------------------------------+--------------------------------------
Reporter: ryandesign@… | Owner: staffan@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 1.9.1
Keywords: | Port: peekabot
-------------------------------------+--------------------------------------
I encountered some inconveniences while updating peekabot from 0.7.1 to
0.7.2.
The first problem is that peekabot used to use xercesc but now uses
xercesc3, but those two ports cannot be installed at the same time because
they conflict with one another (because they install files of the same
names) so the user must manually deactivate the one before activating the
other.
{{{
$ port installed peekabot
The following ports are currently installed:
peekabot @0.7.1_0 (active)
$ port outdated peekabot
The following installed ports are outdated:
peekabot 0.7.1_0 < 0.7.2_0
$ port upgrade peekabot
---> Computing dependencies for peekabot-serverError: Unable to exec
port: Can't install xercesc3 because conflicting ports are installed:
xercesc
To report a bug, see <http://guide.macports.org/#project.tickets>
$ port dependents xercesc
peekabot depends on xercesc
$ port deactivate xercesc
---> Deactivating xercesc
$ port upgrade peekabot
---> Computing dependencies for peekabot-server
---> Dependencies to be installed: xercesc3
---> Activating xercesc3 @3.1.1_0
---> Cleaning xercesc3
}}}
This is not really peekabot's problem except that it is unfortunate that
this dependency had to be changed while the xercesc ports were
incompatible with one another. Resolving that incompatibility is a matter
for xercesc's maintainers and a separate ticket.
The second issue is solely peekabot's, though. peekabot 0.7.1 contained
both the client and server, while peekabot 0.7.2 contains nothing and
instead declares dependencies on new ports peekabot-client and peekabot-
server which taken together install the same files the previous monolithic
peekabot installed. And therein lies the problem: MacPorts will build,
install and try to activate the port's new dependencies while the old port
is still active, resulting in a conflict.
{{{
---> Fetching peekabot-server
---> Attempting to fetch peekabot-0.7.2.tar.bz2 from
http://downloads.sourceforge.net/peekabot
---> Verifying checksum(s) for peekabot-server
---> Extracting peekabot-server
---> Applying patches to peekabot-server
---> Configuring peekabot-server
---> Building peekabot-server
---> Staging peekabot-server into destroot
---> Installing peekabot-server @0.7.2_0
---> Activating peekabot-server @0.7.2_0
Error: Target org.macports.activate returned: Image error:
/mp/bin/obj2pbmf is being used by the active peekabot port. Please
deactivate this port first, or use 'port -f activate peekabot-server' to
force the activation.
Log for peekabot-server is at: /mp/var/macports/logs
/_Volumes_data_macports_ports_science_peekabot-server/main.log
Error: Problem while installing peekabot-server
To report a bug, see <http://guide.macports.org/#project.tickets>
}}}
Again the user will have to manually intervene to set things right.
{{{
$ port deactivate peekabot
---> Deactivating peekabot
$ port upgrade peekabot
---> Computing dependencies for peekabot-client
---> Fetching peekabot-client
---> Verifying checksum(s) for peekabot-client
---> Extracting peekabot-client
---> Applying patches to peekabot-client
---> Configuring peekabot-client
---> Building peekabot-client
---> Staging peekabot-client into destroot
---> Installing peekabot-client @0.7.2_0
---> Activating peekabot-client @0.7.2_0
---> Cleaning peekabot-client
---> Computing dependencies for peekabot
---> Dependencies to be installed: peekabot-server
---> Activating peekabot-server @0.7.2_0
---> Cleaning peekabot-server
---> Fetching peekabot
---> Verifying checksum(s) for peekabot
---> Extracting peekabot
---> Configuring peekabot
---> Building peekabot
---> Staging peekabot into destroot
---> Computing dependencies for peekabot
---> Installing peekabot @0.7.2_0
---> Activating peekabot @0.7.2_0
---> Cleaning peekabot
}}}
If you had made the peekabot port "`replaced_by peekabot-client`" or
"`replaced_by peekabot-server`" MacPorts would have deactivated the old
peekabot port before attempting to activate the new port, since
"replaced_by" indicates to MacPorts the likelihood that the new port will
contain the same files as the old port. But you said in #25309 that you
did not wish to replace the old peekabot by either the new client or
server port since you could not be sure whether the user wanted the client
or the server, and that it was reasonable for the user to want to install
either the client or the server without installing the other.
There is a mechanism proposed in the new libpng12 portfile attached to
#23125 (look at the "`pre-activate`" block at the end of
[attachment:ticket:23125:libpng-1.4.1-libpng12.diff
libpng-1.4.1-libpng12.diff]) which could be added to the new peekabot-
client and peekabot-server ports to ensure an old existing monolithic
peekabot port is deactivated in time. The method is a bit messy but it is
the only remaining solution that occurs to me now. I will see if I can
make you a patch.
--
Ticket URL: <http://trac.macports.org/ticket/25721>
MacPorts <http://www.macports.org/>
Ports system for Mac OS
More information about the macports-tickets
mailing list