[Screeninvader] Janosh on Darwin
Amir Hassan
amir at viel-zu.org
Fri Apr 3 04:31:45 CEST 2015
Thanks a lot for you effort but i can't even try to merge this because in
lua_script.cpp there are windows line endings. :)
https://github.com/kallaballa/Janosh/pull/22/files
On Wed, 01 Apr 2015 12:07:16 +0200, Jay Vaughan <seclorum at icloud.com>
wrote:
> I’ve spent the last day or so working on getting Janosh built and
> running on Darwin.
>
> The branch is available here:
> https://github.com/seclorum/Janosh/tree/janosh-on-darwin
>
> What was needed to be done:
>
> 0. The codebase had to be prepared for compilation with clang++ on
> Darwin - it is still built with g++ on Linux, however. So the Makefile
> was updated to accommodate this requirement, also so that on OSX, the
> dependencies for Janosh can be administered with homebrew. pkg-config
> is used to find these dependencies - probably a bit more work should be
> done on using pkg-config by the build system. Probably, also,
> build_dependencies.sh should be replaced with platform tools for the job.
>
> 1. The method of embedding Lua byte code into the janosh binary changed
> - its no longer using objcopy, but rather luajit-compiled byte code is
> generated with the build system, and linked with the rest of the Janosh
> build objects. This required a change to the way the bytecode was
> located and loaded by lua_script.cpp.
>
> 2. Amirs’ customization of easylogging++ was moved out of the
> easylogging++.h header and into the logger.cpp module - which means that
> we can safely upgrade easylogging in the future. I also upgraded the
> existing easylogging++.h to the latest version - Janosh was previously
> using v9.45 (old) and so we upgraded to v9.80. This was needed so that
> we could get bug fixes and upgrades from the Easylogging folks, which
> fixed compiling/using it with clang.
>
> 3. Minor, but util.cpp was updated with Darwin-specific options for
> grabbing argv[]’s. This is not correct yet, but is a sufficient
> workaround to get things built - the Darwin implementation doesn’t allow
> the args[] to be grabbed for other pids, but since this is a debug-only
> feature, it shouldn’t impact anything - I made an issue to track this,
> and if I figure out a way to get the args-per-pid on Darwin, I’ll add to
> it.
>
> 4. Janosh has a dependency on lua-lanes, which was previously being
> built/installed manually (by Amir) on his system, due to a patch
> required to work around bugs on 64bit OS’s. This bug is long fixed in
> the new version of lanes, so now custom/tweaked version of lua-lanes is
> required - its possible to just install it from the latest sources and
> it should now just work fine. Probably build_dependencies.sh should be
> updated to include this step, so that it doesn’t get missed.
>
> 5. I added testLuaScript.lua to the project, to test the onboard Lua
> module loading and limited functionality - this came from Amir and per
> him, if it runs, then Janosh’ Lua functionality should be working. I’ve
> added a dump of _G (Lua global table) to the script so that the presence
> of the loaded Lua bytecode can be confirmed easily enough - probably
> this should be expanded to be a ‘standard test’ for the onboard Lua VM
> at some point.
>
> 6. I’ve run all of this (in the janosh-on-darwin branch) on both Linux
> and Darwin systems - and it appears that the Linux version works just
> fine - i.e. its possible to merge this branch now and it should not
> impact further upstream work which depends on Janosh. It would be good
> to merge this to master soon, as I perceive that more work is being done
> on Janosh concurrently. I have *not* yet managed to confirm that this
> is working properly on Darwin at the moment, because of a crash loading
> the lua-lanes module - this may be a side-effect of hacking around with
> building the previous version of lanes, with the patch, on my system - I
> will do a fresh install of lua-lanes and then test Janosh again today.
> But please Amir, consider merging the work so far on janosh-on-darwin so
> that we don’t get further out of sync with regards to changes to Janosh
> that you are doing further upstream to support ScreenInvader - I believe
> that it should now not be in a state that will impact running Janosh on
> Linux any more.
>
> If you want to test Janosh on Darwin for me, it would be great. You
> need to:
>
> 1. Install the dependencies with homebrew.
> 2. Install lua-lanes from source (no patch required, just the current
> version).
> 3. Run the build_dependencies.sh script in the Janosh repo, to set up
> the lua components required.
> 4. Build Janosh (normal way: make -j, etc.)
> 5. Test the produced ./janosh binary: “./janosh -d & ; ./janosh -f
> testLuaScript.lua” and observe output equivalent to that which occurs
> when you do all of the above on Linux.
>
> If you notice anything, let me know and I’ll fix it. I’d like to get
> Janosh building/functioning equivalently on Linux and Darwin as soon as
> possible, so I can move on to using Janosh for .. other things ..
>
> ;
> --
> Jay Vaughan
> seclorum at icloud.com
More information about the Screeninvader
mailing list