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

[help] porting brian on MIPS and POWER, or dropping support



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 <etienne.mollier@mailoo.org>
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 to: