Hi,

I've got the following:

$ gem install stompserver

Portfile:
startupitem.create              yes
startupitem.name                rb-stompserver
startupitem.logevents   yes
startupitem.logfile             /var/log/stompserver.log
startupitem.pidfile             auto /var/log/stompserver.pid

# startupitem.executable  "ruby
${prefix}/lib/ruby/gems/1.8/bin/stompserver --working_dir=/var"
# startupitem.executable  "/opt/local/bin/ruby
${prefix}/lib/ruby/gems/1.8/bin/stompserver --working_dir=/var"
# startupitem.executable  "/opt/local/bin/ruby
${prefix}/lib/ruby/gems/1.8/bin/stompserver --working_dir /var"
startupitem.executable  "${prefix}/lib/ruby/gems/1.8/bin/stompserver
--working_dir /var"

which creates the attached plist file. But for the life of me it just
won't start.

$ sudo port uninstall rb-stompserver && sudo port clean --dist
rb-stompserver && sudo port install stompserver
$ sudo port load rb-stompserver
$ cat /var/log/stompserver.log:

2009-11-08 19:22:39 rb-stompserver: Unable to launch process
/opt/local/lib/ruby/gems/1.8/bin/stompserver --working_dir /var.
2009-11-08 19:23:09 rb-stompserver: error while starting
2009-11-08 19:23:09 rb-stompserver: Starting process
2009-11-08 19:23:09 rb-stompserver: Unable to launch process
/opt/local/lib/ruby/gems/1.8/bin/stompserver --working_dir /var.
2009-11-08 19:23:39 rb-stompserver: error while starting
2009-11-08 19:23:39 rb-stompserver: Starting process
2009-11-08 19:23:39 rb-stompserver: Unable to launch process
/opt/local/lib/ruby/gems/1.8/bin/stompserver --working_dir /var.
2009-11-08 19:24:09 rb-stompserver: error while starting
2009-11-08 19:24:09 rb-stompserver: Starting process
2009-11-08 19:24:09 rb-stompserver: Unable to launch process
/opt/local/lib/ruby/gems/1.8/bin/stompserver --working_dir /var.

You get the picture.
Such error message corresponds to forking execvp() call in the Daemondo C code:

http://svn.macosforge.org/repository/macports/branches/images-and-archives/base/src/programs/daemondo/main.c

main.c, line 514:
pid_t
Exec(const char* const argv[], int sync)
{
    if (!argv || !argv[0] || !*argv[0])
        return -1;

    pid_t pid = fork();
    switch (pid)
    {
    case 0:
        // In the child process
        {
            // Child process has no stdin, but shares stdout and stderr with us
            // Is that the right behavior?
            int nullfd = 0;
            if ((nullfd = open("/dev/null", O_RDONLY)) == -1)
                _exit(1);
            dup2(nullfd, STDIN_FILENO);

            // Launch the child
            execvp(argv[0], (char* const*)argv); // <------------- xml
params are put here from the plist

            // We get here only if the exec fails.
            LogMessage("Unable to launch process %s.\n", argv[0]); //
<-----------  execvp() fails ???
            _exit(1);
        }
        break;


But it just doesn't make any sense to me. I can see no reason why the
ruby script should fall through and error out here. Have tried
prefixing with / without ruby binary eg 'ruby <script>'. Tried
swapping out the '=' param for a space. Made sure there were no quote
marks nor any other special shell manipulation. The same command of
course will run in a terminal. Nothing seems to change : (

Please help.


dreamcat4
dreamc...@gmail.com

Attachment: org.macports.rb-stompserver.plist
Description: Binary data

_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users

Reply via email to