ports/61840: Port sysutils/cdrdao might corrupt package database
Heiner
h.eichmann at gmx.de
Sat Jan 24 17:10:20 UTC 2004
>Number: 61840
>Category: ports
>Synopsis: Port sysutils/cdrdao might corrupt package database
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Jan 24 09:10:17 PST 2004
>Closed-Date:
>Last-Modified:
>Originator: Heiner Eichmann <h.eichmann at gmx.de>
>Release: FreeBSD 4.9-STABLE i386
>Organization:
Sirius Cybernetics Corp.
>Environment:
=46reeBSD 7of9.unimatrix-zero.borg 4.9-STABLE FreeBSD 4.9-STABLE #0: Tue De=
c 30=20
09:19:53 CET 2003 =A0 =A0=20
root at 7of9.unimatrix-zero.borg:/usr/obj/usr/src/sys/MYKERNEL =A0i386
>Description:
The port cdrdao might corrupt the package database. See How-To-Repeat secti=
on.=20
The reason is the dynamic calculation of the dependencies. If gnomelibs is=
=20
not installed during installation of cdrdao but installed lateron, all port=
s=20
depending on cdrdao also depend on gnome--, which is not necessarily=20
installed!
>How-To-Repeat:
1. Make sure, that pkgdb -F reports no error.
2. pkg_deinstall -f the ports gnomelibs, cdrdao, gnome-- and k3b, if they a=
re=20
installed.
3. portinstall gnomelibs, cdrdao and k3b in this order. Note that gnome-- i=
s=20
installed automatically by cdrdao.
4. pkgdb -F reports no error. Everything is fine.
5. repeat step 2
6. portinstall cdrdao, gnomelibs and k3b in this order. Note that gnome-- i=
s=20
NOT installed automatically by cdrdao
7. pkgdb -F reports a missing dependency (k3b -> gnome--). The package=20
database is corrupt!
>Fix:
There are two obvious fixes:
1. Follow the instructions in http://www.freebsd.org/gnome/docs/porting.htm=
l.=20
Note, that the example of dynamic dependencies
=2Eif ${HAVE_GNOME:Mgnomepanel}!=3D""
USE_GNOME+=3D gnomeprefix gnomepanel
CONFIGURE_ARGS+=3D --with-gnome
PKGNAMESUFFIX=3D -gnome
PLIST_SUB=3D DATADIR=3D"share/gnome"
=2Eelse
CONFIGURE_ARGS+=3D --without-gnome
PLIST_SUB=3D DATADIR=3D"share"
=2Eendif
does NOT contain any LIB_DEPENDS!! The current Makefile of cdrdao contains =
two=20
of them:
=2Eif ${HAVE_GNOME:Mgnomelibs} !=3D ""
USE_GNOME=3D gnomelibs
LIB_DEPENDS+=3D gtkmm.2:${PORTSDIR}/x11-toolkits/gtk--
LIB_DEPENDS+=3D gnomemm-1.2.10:${PORTSDIR}/x11-toolkits/gnome--
CONFIGURE_ARGS=3D --with-gtkmm-prefix=3D${X11BASE}
PKGNAMESUFFIX?=3D -gnome
PLIST_SUB=3D GNOME=3D""
MAN1+=3D gcdmaster.1
=2Eelse
CONFIGURE_ARGS=3D --with-gtkmm-prefix=3D${NONEXISTENT}
PLIST_SUB=3D GNOME=3D"@comment "
_WITHOUT_GNOME=3D yes
=2Eendif
They cause the problem. Converting them into USE_GNOME requires a change of=
=20
bsd.gnome.mk as well but fixes the problem
2. A better fix is to follow the cvsup example. Here two ports exist (cvsup=
=20
and cvsup-withoutgui), where the second points to the first. On cdrdao I=20
recommend to create a port cdrdao, which depends on the gnome stuff only, i=
f=20
the environment variable WITH_GNOME is set. A second port cdrdao-gnome sets=
=20
it and points to cdrdao. Then all dependending ports, which do not need gui=
=20
stuff, point to cdrdao and the user can decide, which one he needs.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list