[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#610448: python-apt for Hurd



Alle giovedì 20 gennaio 2011, Julian Andres Klode ha scritto:
> On Mi, 2011-01-19 at 01:50 +0100, Pino Toscano wrote:
> > Hi,
> > 
> > Alle martedì 18 gennaio 2011, Svante Signell ha scritto:
> > > I managed to compile 0.7.100.1 from source with the exception of
> > > two failed tests, see below. Removing these tests (as a
> > > workaround) made the package to be created. Installing that
> > > package made
> > > apt-listchanges functional (as far as I can see). Looks like
> > > there is a problem with file/directory locking, is it lacking
> > > somehow in the Hurd?
> > 
> > Yes, the file locking implementation is quit suboptimal (known
> > issue, it affects other software as well), and in this current
> > case it cannot cope with a new lock set over an existing one
> > (which is allowed and should succeed).
> 
> So, is there a way to get it work? I don't see how the file is
> already locked.

The actual locking function is in apt/apt-pkg/contrib/fileutl.cc, called 
GetLock() [*].
All start from python-apt/apt/cache.py, Cache.update():
- the first lock is easy:
  - the explicit apt_pkg.get_lock() call, implemented in
    python-apt/python/apt_pkgmodule.cc, GetLock()
  - GetLock() calls GetLock[*]
- the second lock is more hidden:
  - some lines down in Cache.update(), there is a call to
    self._cache.update(), implemented in python-apt/python/cache.cc,
    PkgCacheUpdate()
  - in PkgCacheUpdate() there's a call to ListUpdate(), implemented in
    apt/apt-pkg/algorithms.cc
  - in ListUpdate() a pkgAcquire object is created (using the empty
    constructor), and its Setup() method (implemented in
    apt/apt-pkg/acquire.cc) is called
  - in pkgAcquire::Setup(), there's a call to GetLock[*]

> > Samuel Thibault (hurd-i386 buildd maintainer) tried to build
> > python-apt with 'nocheck' in DEB_BUILD_OPTIONS, but it does not
> > honors this option; if implemented, Samuel could build it
> > disabling the test suite. Could you please fix it?
> 
> After Squeeze. But I'd like to fix the problem without disabling
> tests on hurd. In the meantime, try rebuilding with Debug::NoLocking
> set to true in apt.conf.

With the above configuration for apt, the build succeeds (and all the 
tests pass for py2.5, py2.6 an py3.1).

Anyway, attached there is a patch to respect "nocheck" in 
DEB_BUILD_OPTIONS (recommended by the policy).

-- 
Pino Toscano
--- a/debian/rules
+++ b/debian/rules
@@ -29,9 +29,13 @@
 	dh_compress -X.js -X_static/* -X _sources/* -X_sources/*/* -X.inv
 
 override_dh_auto_test:
+ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
 	set -e; for python in $(shell pyversions -r); do \
 		$$python tests/test_all.py -q; \
 	done;
+else
+	echo "tests disabled"
+endif
 
 override_dh_python2:
 	dh_python2 -N python-apt-common

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: