I am using xsbt-web-plugin v4.0.1. After starting the sbt console, the tomcat:start command works fine. However I don't know how to run tomcat:stop. When I press Ctrl-C, I exit out of console, but I think tomcat continues to run in background. When I press Ctrl-D, I see the message waiting for server to shutdown and then sbt exists. Either case, I am forced to start sbt console again.
I have added following 2 lines in build.sbt
fork in run := true
connectInput in run := true
and this line in my global.sbt
cancelable in Global := true
How can I start and stop container without exiting sbt?
After running tomcat:start, you can run tomcat:stop (or any other sbt command) at any time.
The tomcat:start command does not block further interaction with the sbt prompt. It can be misleading to see the output of the container mixed in with that of the sbt prompt.
The fork in run, connectInput in run, and cancelable in Global settings are not needed to be able to use tomcat:start and tomcat:stop.
Related
So i have a C program that i made a while back that im going to remake in qt with additional features.
Typically how i ran the program is I open the terminal, navigate to the project folder, and use the command
$ sudo nice --10 ./myprogram
That is not the case anymore, since i am using qt-creator i now just simply click the 'run' button and the program starts. My program works best when it has elevated scheduler priority hence the nice --10.
How do i modify my qt-creator project to run my program with the sudo nice --10 command?
To do that go to
Tools-> Options-> Environment -> System Tab under the terminal option write "/usr/bin/xterm sudo nice --10"
Also if you have not done it already go to Projects -> Build & Run -> Run and check the box Run in terminal.
I never tried, but in the config of your project you can add a user defined executable to be executed.
Maybe creator allows for a shellscript, than you can simply put your sudo nice --10 in a shellscript, or you write a little program which gets a program path as parameter and starts it with the elevated scheduler priority (guess there is a user api in linux for that...)
We are creating a filesystem image in BitBake and one of the packages requires that its post install script be executed on the device, after the image itself has been installed on the device, and not while the rootfs image is being generated by the build server.
Looking at the package with "opkg status ", it says that the package has been successfully installed -- "install ok installed". However, none of the side effects have been performed, and simply running the .postinst file from /var/lib/opkg/info/.postinst works and reports no errors.
How do I get this to work? It seems that the package is being "installed" in the rootfs image with the incorrect status.
Please see Dev manual section Post-Installation Scripts: With recent Yocto (>=2.7) you can use pkg_postinst_ontarget_${PN}() when you know your script should always run on target during first boot, and never during rootfs generation.
On older Yocto version you can just do what pkg_postinst_ontarget_${PN} does manually in your function pkg_postinst_${PN}():
if [ -n "$D" ]; then
echo "Delaying until first boot"
exit 1
fi
# actual post install script here
$D will be defined during rootfs generation so the postinstall script will fail. This means the script will be run again during first boot on target.
The best option is still fixing the postinstall script so that it works during rootfs generation -- sometimes this isn't possible of course.
I want to run several sbt-commands within sbt interactive mode, i.e. without leaving the sbt "shell"?
(Note:
Some questions answer how to pass argument to sbt-commands using sbt in the standard shell. Not what I wnat here)
Example: I am in sbt interactive shell, and I want to run "test:compile", then "test"
I know test will call required compilation, but in this example I want to run the compilation of all sub-projects, before any test is started.
To run commands sequentially within the sbt shell, use ; to chain commands:
> ;test:compile ;test
Note however that running the test task will compile your sources if necessary without you having to explicitly running the compile task.
I cannot fork my sbt process using sbt run &. When I do so, I return to bash console, and I get a PID, but soon, the process stops.
In my build.sbt I have added the line Keys.fork in run := true but that doesn't do anything.
What is that?
I don't believe you need to restrict to run. Try just
fork := true
This question is an obscure problem - sorry for the length. I'm trying to deploy an app to Heroku. The app runs Rserve - a daemon of the R language, for running statistical reports. This should in principle be no more difficult than getting any daemon, such as memcached, to run in Heroku.
In Mac OSX I just start the daemon in the command line and forget it - all works fine. I'm interfacing with Rserve from node.js, using https://github.com/albertosantini/node-rio (not a factor here though).
But in deploying to Heroku, not having much luck. I'm using a multipack of R and node. Installation runs fine, all build steps exit okay, R starts fine.
Now comes the job of starting the Rserve daemon on the worker dyno.
My procfile looks like this:
web: node server.js
worker: R CMD Rserve --no-save
When I run it, I get the following error in the logs (scroll to end of block):
Rserv started in daemon mode.
heroku[worker.1]: State changed from starting to crashed
The Rserve() config docs are here: http://www.rforge.net/Rserve/doc.html I am not expert at configuring it but perhaps there is something in there that I should be doing for it to work in this environment?
An oddity is that you can run this without error from the Heroku run console, but (see below), it does not seem to actually be running when I try to access it from node.js:
heroku run R CMD Rserve
[Previously saved workspace restored]
Rserv started in daemon mode.
>
In node.js (heroku run node), I try testing it thus:
var rio = require('rio');
rio.evaluate("pi / 2 * 2");
which gives the error "Rserve call failed".
This leads me to think something is fundamentally wrong with what I am trying to do or how I am trying to do it.
Rserve runs as a daemon by default, so use a script to execute it so it runs "in process".
E.g.
# example R script for executing Rserve
require('Rserve')
# get the port from environment (heroku)
port <- Sys.getenv('PORT')
# run Rserve in process
run.Rserve(debug = FALSE, port, args = NULL, config.file = "rserve.conf")
And then your Procfile will have an entry as follows:
rserve: R -f rserve.r --gui-none --no-save
So I tried a dozen ways to get it started on a worker dyno, but all would crash. I never got to the bottom of all environment issues - I am not very expert at Unix. However... I did get it work by spawning a child process to run Rserve at the end of my server.js initialization script on my web dyno. It works.
childProcess.exec('R CMD Rserve --no-save', function (error, stdout, stderr) {});
My plan is to implement it this way in the worker process and use Web Workers to communicate between the separate environments.