-
Notifications
You must be signed in to change notification settings - Fork 47
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
Goa: add support for Jam and h/o/g ? #354
Comments
I am going to take a look at your repository and will try to reproduce building and running the simple examples. I will report back any obstacles I encountered. Adding general support for |
In case it helps I sync'ed the Setup page so that it mentions the newly added "GE_HAVE..." defines mentionned above, and also did a "from scratch" build (fossil side only) in an empty directory like this:
It completed in a couple minutes without error, as pre-requirements were met : 1) the "jam" build tool and 2) genode/repos with headers and build-dir with expected contents It ended up building haiku.lib.so automatically by just mentionning "DeskCalc", since haiku.lib.so is a dependency of the latter, so I guess there's no need to use two build lines, one suffices in fact. |
This function allows for querying the underlying 'fd_path' of a given libc fd. So far it is only used by Haiku-on-Genode and the initial implementation was provided by Cedric. Issue genodelabs/genode-world#354.
Following your nice documentation I was able to build and run I started to look into your Jam* files and used (Commit 0fb4af8 adds your xattr-related function discussed in genodelabs/genode#4346 in an adapted form, including the caveats, we could upstream from my point of view.) |
Agreed, apps could get precedence. I took a look at the api and src tarballs of SDL (since that library might more or less mirror our haiku library situation): I see Goa has this script, presumably used by the "goa extract-abi-symbols" command : https://github.com/genodelabs/goa/blob/9919605309011e71c5b306b46f35f250078d8333/share/goa/abi/abi_symbols#L4 Anyway, Today's news: I've started pushing new commit for haiku.lib.so: |
This is indeed used to create the list of
With this it extracts the symbols for all |
I'll spend a day this week and give this approach a try (assembling by hand) with (The symbols files should be curated anyway as they initially contain all found symbols and this is sometimes undesirable.)
… and if that works we could focus on other applications as well (icon-o-matic would be nice to have). |
Unfortately I did not manage to spend as much time as I originally planned last week. That being said, I produced a bash script that assembles the required depot archives and more closely looked into the Jamfiles and how the actual build-system (or rather the rules used by the these files) is provided by the Jamrules. I have not yet looked at the vanilla Jamfiles used by Haiku but I assume the rules are somewhat similar. So my basic idea for now is to provide the necessary hooks for |
If you didn't do so already, maybe use "jam t1" as an interim milestone, if you'd rather get a minimal use-case working in full before embarking on a whole-scale one. Running I just tried "jam t1" now and realize it was broken a couple commits ago though, it no longer links. To restore it one needs to edit To recap the big picture on the way Jam works, there is 1) a Re-using the Looking at the "Application Kit" jamfile again, I think a reduced Jamrules might need to provide a (re)implementation of:
Upstream-wise, Latest: |
Thanks for your explanation and thoughts.
That sounds reasonable. I used the 6ish target because that is what I already had at hand.
For the time being I deliberately did not address building haiku.lib.so but focused on what
Yeah, that is one of the reasons I started with the example application first - for the moment the HoG depot archives are a given and if the example application is built successfully I think it is easier to address HoG itself. At least for someone like me that hasn't used
|
In the latest commit : https://chiselapp.com/user/ttcoder/repository/genode-haiku/info/b566ab69ea97fc4c The "infrastructure" jam file, it might not be impossible(?) to use with little or no changes. The commit also includes an "example port" recipe Jamfile which could serve as inspiration (as I did below with Mandelbrot) for compiling in-tree apps. The example-port Jamfile in that commit is for Vision and is not completely trivial, as it involves downloading and unzipping an archive -- but here's a simplified variant for building Mandelbrot (it could also be DeskCalc) :
You may write that contents in "the_above_jamfile" inside misc-apps. Then to invoke it,
With that kind of simplified infrastructure, your work might be easier : the dependencies are laid bare, easier to spot since the files are smaller. And it is easier to customize them for Goa, since one can spot how they are directed with configuration variables :
Next I'll take a look at Icon-o-matic, so you might not hear from me for a while 😁 |
Icon-O-Matic wasn't all that hard, once I really got into it, it was fairly straightforward : Commits pushed today to chiselapp. Seems to work, but I'd need to gain a better understanding of the interface, and run it side by side with the original to compare behavior. Something to explore for the 24.05 dev cycle I guess. |
That's awesome ☺. (I haven't had the time in the last weeks to further work on this topic myself but I'll pick it up again probably after the release.) |
@ttcoder your screenshot made my day! It took me a white to identify what's visible in the upper-right corner of the Genode window. ;-) |
Picking up the discussion with @nfeske on the mailing-list, about taking advantage of Be apps on SculptOS : this might be done with new repos/ports/*.port files or (more likely!) with Goa projects.
If there's ever a wish to try this out, I've just pushed a few commits with simple apps:
By working on such 'easy' ports we would detect early issues and porting challenges in a relatively simple environment, before tackling more complex ports.
In the abstract, I guess Goa should perform these tasks:
In practice, there will be things to work out, to make haiku.lib.so work with standard SculptOS, like configuring it to not use xattr:
So that would mean building the lib and buliding the app by invoking these:
GE_XATTR_DISABLED=1 GE_DECORATIONS_AND_WM=1 jam -q -j2 haiku.lib.so
and
GE_XATTR_DISABLED=1 GE_DECORATIONS_AND_WM=1 jam -q -j2 DeskCalc
And in order to invoke that, one would need to build the "reference" Jam (rather than use ft-jam or lib-boost jam, which are not quite compatible). (we don't want to go again through troublesome debugging that occured when I suggested Norman use non-compatible Jam variants on Linux, I am still feeling guilty about that!)
Other possible issues:
If you ever tackle this, hit me with any question you have, I'll do my best to answer, and tweak my jamfiles as needed.
The text was updated successfully, but these errors were encountered: