Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doesn't work on BSD #21

Open
amiramix opened this issue Mar 19, 2016 · 2 comments
Open

Doesn't work on BSD #21

amiramix opened this issue Mar 19, 2016 · 2 comments
Assignees

Comments

@amiramix
Copy link

Trying to start n2o:

g@crayon2:~/work/n2o/samples % ./mad repl
Configuration: [{n2o,[{port,8000},
                      {app,review},
                      {upload,"./apps/review/priv/static/"},
                      {search,"/Users/5HT/depot/synrc/synrc.com/apps/*/doc/web/*.htm"},
                      {route,routes},
                      {mq,n2o_mq},
                      {formatter,bert},
                      {log_modules,config},
                      {log_level,config},
                      {log_backend,n2o_log},
                      {session,n2o_session},
                      {origin,<<"*">>},
                      {bridge,n2o_cowboy},
                      {pickler,n2o_pickle},
                      {erroring,n2o_error},
                      {event,pickle}]},
                {kvs,[{dba,store_mnesia},
                      {schema,[kvs_user,kvs_acl,kvs_feed,kvs_subscription]}]}]
Applications: [kernel,stdlib,fs,ranch,crypto,compiler,syntax_tools,mnesia,
               inets,gproc,kvs,cowlib,cowboy,n2o,review,active,erlydtl,jsone,
               mad,nitro,rest,sh]
Erlang/OTP 18 [erts-7.2.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.2.1  (abort with ^G)
1> 
=INFO REPORT==== 19-Mar-2016::12:51:11 ===
    application: fs
    exited: {{shutdown,
                 {failed_to_start_child,fs_server,
                     {badarg,
                         [{erlang,open_port,
                              [{spawn_executable,"deps/fs/priv/kqueue"},
                               [stream,exit_status,
                                {line,16384},
                                {args,"/usr/home/g/work/n2o/samples"},
                                {cd,"/usr/home/g/work/n2o/samples"}]],
                              []},
                          {kqueue,start_port,2,
                              [{file,
                                   "/usr/home/g/work/n2o/samples/deps/fs/src/sys/kqueue.erl"},
                               {line,11}]},
                          {fs_server,init,1,
                              [{file,
                                   "/usr/home/g/work/n2o/samples/deps/fs/src/fs_server.erl"},
                               {line,11}]},
                          {gen_server,init_it,6,
                              [{file,"gen_server.erl"},{line,328}]},
                          {proc_lib,init_p_do_apply,3,
                              [{file,"proc_lib.erl"},{line,240}]}]}}},
             {fs_app,start,[normal,[]]}}
    type: temporary
Nonexistent: []

               Apps couldn't be loaded: [fs]

I modified c_src/bsd/main.c to return different error codes:

   if ((fd = open(argv[1], O_RDONLY)) == -1) return 1;
    EV_SET(&change, fd, EVFILT_VNODE , EV_ADD
                                     | EV_ENABLE
                                     | EV_DISABLE
                                     | EV_CLEAR
                                     | EV_DELETE
                                     | EV_EOF
                                     | EV_RECEIPT
                                     | EV_DISPATCH
                                     | EV_ONESHOT,
                                       NOTE_DELETE
                                     | NOTE_RENAME
                                     | NOTE_EXTEND
                                     | NOTE_ATTRIB
                                     | NOTE_LINK
                                     | NOTE_REVOKE
                                     | NOTE_WRITE, 0, 0);
    if ((kq = kqueue()) == -1) return 2;
    nev = kevent(kq, &change, 1, &event, 1, NULL);
    if (nev < 0) { return 3; } else if (nev > 0) { if (event.flags & EV_ERROR) { return 4; } }

Then:

g@crayon2:~/work/n2o/samples % ./deps/fs/priv/kqueue /usr/home/g/work/n2o/samples
g@crayon2:~/work/n2o/samples % echo $?
4

System is 10.2-RELEASE FreeBSD 10.2-RELEASE #0 r286666: Wed Aug 12 15:26:37 UTC

@kuon
Copy link

kuon commented Jun 16, 2016

More info in #17

@mylanconnolly
Copy link

I know it's been a while since the last comment, however I noticed that inotify-tools are in the Ports collection for FreeBSD.

I have installed the sysutils/inotify-tools port and it seems to function correctly. Is it possible to update to include support for FreeBSD? It shows up as {unix,freebsd} after running os:type().

If there's some other blocker (or it's unreliable on BSDs) I understand.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants