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

Building handy tools and applications #881

Closed
tonytheodore opened this Issue Sep 23, 2015 · 2 comments

Comments

Projects
None yet
2 participants
@tonytheodore
Copy link
Member

tonytheodore commented Sep 23, 2015

Following on from #808, #812, and #813 it is indeed very handy to have a source for tools that are outside the scope of mxe. As an example, I've always turned a blind eye to ffmpeg.exe that we build since it's great to have a static and recent version on hand.

Some sort of sibling or downstream project (mxe-exe?) could be more liberal in what packages it accepts, and would allow the core mxe to be stricter about focussing on libs and headers. We could also possibly use it as place to gather build recipes and examples.

Any thoughts?

@starius

This comment has been minimized.

Copy link
Member

starius commented Sep 23, 2015

Maybe name mxe-apps is better than mxe-exe?

Sister project mxe-exe is fine, though for me it is more convenient to have all packages in one place. Having some packages in other repo some kind of synchronization between them is required. Maybe adding executable packages to MXE in disabled state is better. Without BUILD_APPS option enabled, these packages do not present. Or something like this.

Technical issue: how to use MXE from mxe-exe? I like the idea of Makefile and xxx.mk per package. Can it be used in mxe-exe without copy-paste from MXE? Ideally, it should work transparently as if mxe-exe's packages are MXE packages. Dependencies should work. For example, building qbittorrent in mxe-exe should cause building qt in MXE.

Another proposal. Add "plugins" for MXE. It would work as follows: a user sets MXE variable MXE_PLUGINS to "/path/to/mxe-exe;/path/to/other/plugin" and has all packages from those paths as a part of MXE.

PS. #813 has two libs (lzma and ucl) and one executable (upx), which can be considered as a part of a compiler chain. Many people apply it after stripping a binary to make it even smaller.

PS 2. I have one more candidate package keepassx: 6c561c5

@tonytheodore

This comment has been minimized.

Copy link
Member Author

tonytheodore commented Oct 5, 2015

Maybe name mxe-apps is better than mxe-exe?

Agreed, apps is a pretty universal term these days and it conveys the idea well.

it is more convenient to have all packages in one place.

Indeed, but I'd like to convey the idea that these aren't particularly supported. Maybe having them in a separate place will actually cause more work (issue tracker, repo, etc.) but it's hard to say.

Technical issue: how to use MXE from mxe-exe?

It's the old library vs framework debate - does one include MXE from their code and execute it, or does MXE include your code and execute it? I was mostly thinking of the former with some sort of git submodule approach to keep things synced, however ...

Another proposal. Add "plugins" for MXE.

I really like this idea, I do something similar in my settings.mk. It covers almost everything I can imagine about customising or extending MXE for normal users and we don't have to pre-empt use cases very much. I might implement my optional native tools this way to see how it works.

Maybe something like an opt directory at the top level, under that we can have apps, native etc. The *.mk files in here should be self-contained with their website metadata and package maintainer field (either gh user or email) and not have an entry in index.html. Updates can be made directory aware with $(PKG)_MAKEFILE := $(lastword $(MAKEFILE_LIST)) - I can see this working.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.