Re: Get rados to build, and run, with the current Cython version.

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

 



On Sat, Feb 27, 2016 at 12:35 PM, Willem Jan Withagen <wjw@xxxxxxxxxxx> wrote:
>
> I'm running into a rather blocking issue with testing on FreeBSD due
> to the cythonifying of rados. (would have prefered an option to not use
> cython... )
>
> One of the first tests after all unittests is:
>         ceph-disk/run-tox.sh
>
> It runs at the end:  bash -x tests/ceph-disk.sh
>
> Which tries to execute:
> DEBUG:ceph_disk.main:Cluster uuid is cddc1351-dcf1-11e5-8cd4-1c6f6582ec12
> INFO:ceph_disk.main:Running command: ../ceph-osd --cluster=ceph
> --show-config-value=fsid
> DEBUG:ceph_disk.main:Cluster name is ceph
> DEBUG:ceph_disk.main:OSD uuid is ceac49dd-dcf1-11e5-8cd4-1c6f6582ec12
> DEBUG:ceph_disk.main:Allocating OSD id...
> INFO:ceph_disk.main:Running command: ../ceph --cluster ceph --name
> client.bootstrap-osd --keyring test-ceph-disk/bootstrap-osd/ceph.
> keyring osd create --concise ceac49dd-dcf1-11e5-8cd4-1c6f6582ec12
> Traceback (most recent call last):
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/.tox/py27/bin/ceph-disk",
> line 9, in <module>
>     load_entry_point('ceph-disk', 'console_scripts', 'ceph-disk')()
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/ceph_disk/main.py", line
> 4601, in run
>     main(sys.argv[1:])
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/ceph_disk/main.py", line
> 4553, in main
>     args.func(args)
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/ceph_disk/main.py", line
> 3061, in main_activate
>     init=args.mark_init,
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/ceph_disk/main.py", line
> 2882, in activate_dir
>     (osd_id, cluster) = activate(path, activate_key_template, init)
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/ceph_disk/main.py", line
> 2974, in activate
>     keyring=keyring,
>   File "/usr/srcs/Ceph/work/ceph/src/ceph-disk/ceph_disk/main.py", line
> 925, in allocate_osd_id
>     raise Error('ceph osd create failed', e, e.output)
> Error: Error: ceph osd create failed: Command '../ceph' returned
> non-zero exit status 1: *** DEVELOPER MODE: setting PATH, PYTHONPAT
> H and LD_LIBRARY_PATH ***
> Traceback (most recent call last):
>   File "../ceph", line 108, in <module>
>     import rados
>   File "rados.pyx", line 363, in init rados
> (/usr/srcs/Ceph/work/ceph/src/build/rados.c:48031)
> NameError: name 'errno' is not defined
>
> Now I've changed some code at File "rados.pyx", line 363 because FreeBSD
> does not have ENODATA, and in includes/compat.h it is defined to be
> ENOATTR with a define. Otherwise it would not even compile.
>
> But the cython translation/compilation does not pick up on this?
> ENOATTR is just another define in /usr/include/errno.h so it should find
> it. But it does not.
>
> What is the way forward here?

The ENODATA->ENOATTR mapping from compat.h is going to be completely
invisible to the python/cython code.  Looking at the pre-cython python
code, it appears that that was unconditionally using errno.ENODATA,
which presumably exists in the standard python library even when
compiled on freebsd.  I guess the Cython errno.pyd is silently
dropping ENODATA when it's not found in the header.

You could try using "hasattr(errno, 'ENODATA')" as a conditional check
for whether the NoData python exception should be raised from ENODATA
or ENOATTR.  I don't know if there is a nicer compile time check you
can do for freebsd from the cython code.

All that said, the NameError you're seeing there doesn't seem to be
anything to do with specific error codes, it's as if it's not finding
the errno module at all.  You mention you've modified that file, so it
would probably be useful to link to your branch.

John
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux