Hi Michael, and people at ease with architecture ports,

The package brian[1] has a mechanism based on the GSL which does
some sort of compilation just-in-time.  The default set of build
flags works rather well on all flavors of amd64 architecture
with or without extensions, however not all of the specified
options by default are supported on all architectures.

[1] https://salsa.debian.org/med-team/brian/-/tree/master

The buildd logs[2] give a rather precise picture of the
situation with the existing package fortunately.  Architectures
affected by unrecognized build options are showing the following
symptom:

        Skipped: GSL support for numpy has not been implemented yet

[2] https://buildd.debian.org/status/package.php?p=brian

I introduced a patch to try addressing the issue on Debian's
official architectures and on riscv64; build issues different
symptoms on mips, with missing symbols, but reducing
optimization levels seemed to help moving forward.  With these
changes, I got the following results so far:

  * still FTBFS on ppc64el, I see the following build time test
    step; the issue looks like it might just be a matter of
    doing a small adjustment, but I don't know which one:

        ======================================================================
        ERROR: brian2.tests.test_GSL.test_GSL_stateupdater_basic
        ----------------------------------------------------------------------
        Traceback (most recent call last):
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/core/network.py",
 line 897, in before_run
            obj.before_run(run_namespace)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/input/spikegeneratorgroup.py",
 line 200, in before_run
            raise ValueError('Using a dt of %s, some neurons of '
        ValueError: Using a dt of <spikegeneratorgroup.dt: 100. * usecond>, 
some neurons of SpikeGeneratorGroup "spikegeneratorgroup" spike more than once 
during a time step.
        
        The above exception was the direct cause of the following exception:
        
        Traceback (most recent call last):
          File "/usr/lib/python3/dist-packages/nose/case.py", line 197, in 
runTest
            self.test(*self.arg)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/tests/test_GSL.py",
 line 19, in wrapped
            func()
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/tests/test_GSL.py",
 line 57, in test_GSL_stateupdater_basic
            net.run(100*ms)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/core/base.py",
 line 278, in device_override_decorated_function
            return func(*args, **kwds)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/units/fundamentalunits.py",
 line 2434, in new_f
            result = f(*args, **kwds)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/core/network.py",
 line 1008, in run
            self.before_run(namespace)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/core/base.py",
 line 278, in device_override_decorated_function
            return func(*args, **kwds)
          File 
"/tmp/autopkgtest.t0d9nq/build.nMH/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/core/network.py",
 line 899, in before_run
            raise BrianObjectException("An error occurred when preparing an 
object.", obj) from ex
        brian2.core.base.BrianObjectException: Error encountered with object 
named "spikegeneratorgroup".
        Object was created here (most recent call only, full details in debug 
log):
          File "/usr/lib/python3/dist-packages/nose/case.py", line 197, in 
runTest
            self.test(*self.arg)

  * the test_GSL_stateupdater_basic works on on mips64el, but
    rereading the build, there are so many warnings about run
    time errors such as below, that I would be wary introducing
    the package on that architecture, so it'd be probably better
    to not lose much more time here:

        [...]
        WARNING    
/tmp/autopkgtest.Z9EqJI/build.QFw/src/debian/tmp/usr/lib/python3.9/dist-packages/brian2/units/fundamentalunits.py:2186:
 RuntimeWarning: invalid value encountered in square
          deviations = np.nansum((np.log10(floatreps) - 1)**2, axis=0)
         [py.warnings]
        WARNING    
/usr/lib/python3/dist-packages/numpy/lib/nanfunctions.py:102: RuntimeWarning: 
invalid value encountered in isnan
          mask = np.isnan(a)
         [py.warnings]
        [...]

  * I curiously couldn't locate mipsel builds in my backups, but
    from what I recall I got results very similar to mips64el.

  * the riscv64 build goes through!  (yay! :)

I feel it might be possible to get the software working as
intended on at least ppc64el, but time is running out with the
freeze, and brian is still out of Testing to day.  I'm pinging
in case you might have an idea, but if not, I consider filing a
request for removal on these architectures by tomorrow.

Have a nice day,  :)
-- 
Étienne Mollier <[email protected]>
Fingerprint:  8f91 b227 c7d6 f2b1 948c  8236 793c f67e 8f0d 11da
Sent from /dev/pts/2, please excuse my verbosity.

Attachment: signature.asc
Description: PGP signature

Reply via email to