Building serialosc on arch linux

Hi, I am trying to build serialosc on arch linux.

I’ve been using serialosc 1.2 for a long time on my own. I’ve changed systems from debian to arch linux and I am in the process or rebuilding my setup. I was able to build and install libmonome just fine but serialosc has been giving me trouble all morning.

Here’s my output from running ./waf configure

|> ./waf configure
Setting top to                           : /home/dylan/build/serialosc 
Setting out to                           : /home/dylan/build/serialosc/build 

Checking for 'gcc' (C compiler)          : /usr/bin/gcc 

Checking for working poll()              : yes 
Checking for libudev                     : yes 
Checking for libmonome                   : yes 
Checking for liblo                       : yes 
Checking for function strdup             : yes 
Checking for function _strdup            : not found 
Checking for function strndup            : yes 
Checking for function strcasecmp         : yes 
Checking for header unistd.h             : yes 
Checking for header dns_sd.h             : yes 
Checking for library dl                  : yes 

'configure' finished successfully (0.741s)

Here’s what I get when I run ./waf afterwards

|> ./waf
Waf: Entering directory `/home/dylan/build/serialosc/build'
Traceback (most recent call last):
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Scripting.py", line 103, in waf_entry_point
    run_commands()
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Scripting.py", line 164, in run_commands
    ctx=run_command(cmd_name)
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Scripting.py", line 155, in run_command
    ctx.execute()
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Scripting.py", line 366, in execute
    return execute_method(self)
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Build.py", line 104, in execute
    self.execute_build()
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Build.py", line 107, in execute_build
    self.recurse([self.run_dir])
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Context.py", line 133, in recurse
    user_function(self)
  File "/home/dylan/build/serialosc/wscript", line 239, in build
    bld.recurse("third-party")
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Context.py", line 133, in recurse
    user_function(self)
  File "/home/dylan/build/serialosc/third-party/wscript", line 54, in build
    build_uv(ctx)
  File "/home/dylan/build/serialosc/third-party/wscript", line 6, in build_uv
    from_gyp = ctx.target_from_gyp('libuv/uv.gyp', 'libuv')
  File "/home/dylan/build/serialosc/.waf3-1.8.5-3fc7b0f5070c04bfd3f2489448471a84/waflib/Configure.py", line 183, in fun
    return f(*k,**kw)
  File "/home/dylan/build/serialosc/waftools/gyp_wrapper.py", line 80, in target_from_gyp
    gyp = parse_gyp_file(n.abspath())
AttributeError: 'NoneType' object has no attribute 'abspath'

Any help would be appreciated!!!

Also, any other arch users out here?

oh, that’s my bad. hit it with a

$ git submodule init
$ git submodule update

and it should build ok. i’ve added a message during ./waf configure if the submodules aren’t checked out.

and yeah, i use arch. serialosc is primarily developed on arch, in fact. :slight_smile:

@wrl
Oh cool! I’m glad I’m not the only one.

I actually just got it working right before I saw your reply.

Since you develop the thing on arch I’m sure you’ll not need this list, but just in case there is anyone else out there, here are some of the hurdles I had to jump:

  • After installing libmonome, it will be placed in /usr/local/lib. Arch will want it to be in /usr/lib.

  • After cloning the serialosc repo, also clone the libuv repo

cd serialosc/third-party
git clone https://github.com/libuv/libuv
  • Finally, get your user into the group uucp. This is the group that Arch uses to grant special permission to usb ports and the like to regular users. With out this step you’ll have to run serialoscd with sudo.
2 Likes

you shouldn’t need to clone libuv manually, it’s set up as a submodule. you could actually clone it like so to do both the clone and submodule init steps at the same time:

$ git clone --recursive http://github.com/monome/serialosc

i should update the AUR package now that AUR4 is a thing, actually.

By the way how do you like to run serialosc on your setup? I’m thinking of making a systemd unit file for the purpose.

1 Like

I’m installing serialosc on Arch (armv7 cpu), and it seems to install just fine. However when I run serialoscd, i get

Segmentation fault (core dumped)

Any ideas?

Edit: Running directly seems to work!

./build/bin/serialosc-device /dev/ttyUSB0

oh yeah i don’t know why I didn’t mention this yet but there are actually AUR packages for libmonome and serialosc.

https://aur.archlinux.org/packages/libmonome-git/
https://aur.archlinux.org/packages/serialosc-git

are you having luck with hotplugging?
can you connect/disconnet monome and it works after?
or do you have to rerun serialoscd?

Yesterday i built libmonome and serialosc from github on the latest Raspbian on an RPi1 and i have now that exact same situation; serialoscd segfaults while running directly serialosc-device works.
This makes workarounds possible but it would be easier to have serialoscd working.
How can we debug that ? Did someone find out if the problem lies with serialosc or with something in the host system’s config ?

1 Like

Hello,

To those with experience with serialosc and libmonome on Arch:

I’ve been trying to get serialosc and libmonome set up. Building libmonome seemed to go smoothly. However when I went to configure serialosc, it would not configure unless I moved the libmonome files from /usr/local/lib64 to /usr/local/lib. Then serialosc built as normal. Not positive if this is related to my issue…

Now when I run serialoscd, it starts fine. When I plug in my grid I get the following error:
/usr/local/bin/serialosc-device: error while loading shared libraries: libmonome.so.1: cannot open shared object file: No such file or directory

I’ve tried moving the libmonome files back to lib64, and various combinations of moving the symbolic links and the other files to either lib and lib64. No luck…

Are there other files somewhere I can’t find that are in the wrong location? I looked around as much as I could on my computer where serialosc is running smoothly, as well as this computer. Any other ideas?

And I don’t believe this makes a difference but I am on Parabola (a fsf endorsed distro based on Arch) and not Arch.

Thanks

Sounds like some of the ideas above could be potential solutions. I’ll try it out and see if any of them do the trick.

Well, I have everything half working. When I try to use my arc (newest edition) I get this error:

serialosc-devic : …/src/common/ipc.c:224: sosc_ipc_msg_to_buf: Assertion ‘avail >= 0’ failed.

My monome grid of the same era works fine.

@Andrew_Sblendorio, could you try building serialosc from this branch: https://github.com/artfwo/serialosc/tree/waddress-of-packed-member and see if the problem with the arc persists? Thanks!

1 Like

That seems to have worked perfectly! Thanks!!!

As an aside, I had an issue with similar symptoms when I first got my arc and grid and I was on Windows 7. The grid worked fine and the arc would not work. Now I have a second arc and grid set of an older generation, and those work fine on windows.

I guess what I’m getting at is I wonder if this fix would help get the newest arc working on windows. From what I remember I was not the only one with this issue.

1 Like

Just found this to be true while installing fresh on xubuntu 64-bit.

Kept getting this error:
/usr/local/bin/serialosc-device: error while loading shared libraries: libmonome.so.1: cannot open shared object file: No such file or directory

1 Like

@Andrew_Sblendorio you can try the pre-compiled Ubuntu packages instead. They’re specifically created to avoid most pitfalls with installing software from sources on Linux.

When I build serialosc: an error states task in ‘LIBUV’ failed. libuv is installed but in case there was something wrong with that file I reinstalled libuv from git. When building libuv, this is the output for the command makepkg -si in libuv-git: http://ix.io/1WJU.

From what I understand it looks like the resolver might be returning invalid responses? If you can see it halfway down the text it says:

 - not okay - 118 getaddrinfo_fail

 - not okay 119 getaddr_fail_sync.

xyzzy.xyzzy.xyzzy. is an invalid domain that is used to test a getaddrinfo failure. It doesn’t fail on my system, I believe? The domain name resolves to “something”, when it shouldn’t I think.

This is possibly because the DNS server I have is creating a domain name where one doesn’t exist…Maybe, systemd is providing network name resolution to local apps on my system? Or, it could also be an upstream DNS server issue?

I’m thinking I could try to use a different resolver. 8.8.8.8 or 1.1.1.1 perhaps. I haven’t figured out yet how to do that when building serialosc?

At this point, it seems quite likely that libuv isn’t the issue.

…And thats about as far as I’ve got. I would like to know what people think to these issues have they been hit by anyone else? hopefully overcome?

As you can hopefully tell I’m not entirely confident as to whats going on :slight_smile:

serialosc source repo has a libuv submodule that’s bumped to a version which is known to work, is there a specific reason you’re installing libuv system-wide?

No reason Im going system wide. My main goal is to get serialosc installed. My post is just trying to stop the serialosc build from aborting with an error mentioning LIBUV…

shall I uninstall libuv and try serialosc ?..Im pretty confident I’ll get the same error because my first attempt would have definitely been without looking into libuv

so what exactly is the error message when you’re trying to build serialosc with the bundled libuv?