Created attachment 257399 [details] New port for xmake-io/xmake which has nothing to do with devel/xmake, only name is similar. Xmake can be used to directly build source code (like with Make or Ninja), or it can generate project source files like CMake or Meson. It also has a built-in package management system to help users integrate C/C++ dependencies.
*** Bug 284725 has been marked as a duplicate of this bug. ***
Thank you for your submission. Here are some items to check: - use DISTVERSION over PORTVERSION if possible - please clear PORTREVISION; it should only be bumped if needed for the ports tree - plese unbundle the various dependencies you bundle, such as luajit, pdcurses, lz4, and so on. We already have them packaged. Ports should not bundle dependencies. - instead of post-configure, set MAKEFILE=makefile in the port - please add a WWW field - GH_ACCOUNT can be omitted as it is identical to the port name - please add yourself as the maintainer. We do not accept new ports without a commitment to maintain them. - if your configure script is a GNU configure script, set GNU_CONFIGURE=yes instead of HAS_CONFIGURE=yes - DISTVERSIONPREFIX goes before DISTVERSION. Check with portlint or portclippy.
Comment on attachment 257399 [details] New port for xmake-io/xmake which has nothing to do with devel/xmake, only name is similar. From 826d4363ef443ca4e461e902f60c84fa79aaebdf Mon Sep 17 00:00:00 2001 From: Huan Zhou <pericycle.cc@gmail.com> Date: Sun, 9 Feb 2025 13:53:01 +0800 Subject: [PATCH 2/2] New port: xmake-io: A cross-platform build utility based on Lua --- devel/xmake-io/Makefile | 29 +++++++++++++++++++++++++++++ devel/xmake-io/distinfo | 17 +++++++++++++++++ devel/xmake-io/pkg-descr | 4 ++++ 3 files changed, 50 insertions(+) create mode 100644 devel/xmake-io/Makefile create mode 100644 devel/xmake-io/distinfo create mode 100644 devel/xmake-io/pkg-descr diff --git a/devel/xmake-io/Makefile b/devel/xmake-io/Makefile new file mode 100644 index 000000000000..64fe0dbb2dbe --- /dev/null +++ b/devel/xmake-io/Makefile @@ -0,0 +1,29 @@ +PORTNAME= xmake-io +DISTVERSIONPREFIX= v +DISTVERSION= 2.9.8 +CATEGORIES= devel +WWW= https://xmake.io/ +USES= gmake tar:tgz + +MAINTAINER= pericycle.cc@gmail.com +COMMENT= A cross-platform build utility based on Lua + +LICENSE= APACHE20 +LICENSE_FILE= ${WRKSRC}/LICENSE.md +PLIST_FILES= bin/xmake bin/xrepo + +USE_GITHUB= yes +GH_PROJECT= xmake +GH_TUPLE= tboox:tbox:914bd30:tbox/core/src/tbox/tbox \ + xmake-io:xmake-core-luajit:7cdc078:xmake_core_luajit/core/src/luajit/luajit \ + xmake-io:xmake-core-sv:b3363a3:xmake_core_sv/core/src/sv/sv \ + xmake-io:xmake-core-pdcurses:5c62af0:pdcurse/core/src/pdcurses/pdcurses \ + xmake-io:xmake-core-lua-cjson:ddcecf3:xmake_core_lua_cjson/core/src/lua-cjson/lua-cjson \ + xmake-io:xmake-core-lua:1ab3208:xmake_core_lua/core/src/lua/lua \ + xmake-io:xmake-core-lz4:ebb370c:xmake_core_lz4/core/src/lz4/lz4 + + +HAS_CONFIGURE= yes +MAKEFILE= makefile + +.include <bsd.port.mk> diff --git a/devel/xmake-io/distinfo b/devel/xmake-io/distinfo new file mode 100644 index 000000000000..9453d6517c49 --- /dev/null +++ b/devel/xmake-io/distinfo @@ -0,0 +1,17 @@ +TIMESTAMP = 1739049288 +SHA256 (xmake-io-xmake-v2.9.8_GH0.tar.gz) = e5a45ec7e48d0b0da46ae1729ce64a23341328102083fb0eb66296a4e36835b3 +SIZE (xmake-io-xmake-v2.9.8_GH0.tar.gz) = 2382364 +SHA256 (tboox-tbox-914bd30_GH0.tar.gz) = 6caa1c839a2af8faaf8e412cf8c41d08b3704d772785d85df50134c37b343793 +SIZE (tboox-tbox-914bd30_GH0.tar.gz) = 863997 +SHA256 (xmake-io-xmake-core-luajit-7cdc078_GH0.tar.gz) = 82c518ab37117ba2dabf06d2a8bf363eab6a8b88508fa91b4e116bf8d3c83c83 +SIZE (xmake-io-xmake-core-luajit-7cdc078_GH0.tar.gz) = 1495704 +SHA256 (xmake-io-xmake-core-sv-b3363a3_GH0.tar.gz) = cb5a51596a88296dfa4c53535656f5ba582c15a68fdd6f63a3621f6b9526496e +SIZE (xmake-io-xmake-core-sv-b3363a3_GH0.tar.gz) = 25879 +SHA256 (xmake-io-xmake-core-pdcurses-5c62af0_GH0.tar.gz) = b1183fcbe03ed1856a959015c65e4423dfae63468ef942f86d1c7d7aef0a0ad3 +SIZE (xmake-io-xmake-core-pdcurses-5c62af0_GH0.tar.gz) = 364822 +SHA256 (xmake-io-xmake-core-lua-cjson-ddcecf3_GH0.tar.gz) = 7a491b76f7f5104f1399b66295d4b1652ca07c33458cb52a3bc89b05d2382ebf +SIZE (xmake-io-xmake-core-lua-cjson-ddcecf3_GH0.tar.gz) = 67613 +SHA256 (xmake-io-xmake-core-lua-1ab3208_GH0.tar.gz) = dc4845fd4454896d714c41b6791f8df386f13336907d5ddb5500c9fc60053a3b +SIZE (xmake-io-xmake-core-lua-1ab3208_GH0.tar.gz) = 463003 +SHA256 (xmake-io-xmake-core-lz4-ebb370c_GH0.tar.gz) = 6d2d47dc895571c0db1417613387f409b5d74d0deec0fc77a5999ad3ac36f0e5 +SIZE (xmake-io-xmake-core-lz4-ebb370c_GH0.tar.gz) = 387241 diff --git a/devel/xmake-io/pkg-descr b/devel/xmake-io/pkg-descr new file mode 100644 index 000000000000..64dbd2192de6 --- /dev/null +++ b/devel/xmake-io/pkg-descr @@ -0,0 +1,4 @@ +What is Xmake? +- Xmake is a cross-platform build utility based on the Lua scripting language. +- Xmake is very lightweight and has no dependencies outside of the standard library. +- Uses the xmake.lua file to maintain project builds with a simple and readable syntax. -- 2.48.1
(In reply to Huan Zhou from comment #3) Remaining issues: - unbundle the dependencies - for the dependencies you cannot unbundle, use the full git hash or a tag, not an abbreviated git hash - please fix the order of variables in the file. You can use the portclippy utility for this purpose. Please use the "Add an attachment" function to upload new versions of the patch. Do not submit new versions as comments.
Created attachment 257480 [details] Update patch for new port xmake-io (In reply to Robert Clausecker from comment #5) thanks for your review and i'm really sorry for the stupid mistake i made(send the patch as comment twice T^T) i've test all of the bundle dependency and all of them is required so i keep them all with full hash.
(In reply to Huan Zhou from comment #6) > i've test all of the bundle dependency and all of them is required so i keep them all with full hash. Yes, the dependencies are most likely all required and I'm not asking you to get rid of them, merely to unbundle them. Unbundling means that instead of using the bundled dependencies, you use the versions of the dependencies we ship. This may require edits to the code or the build system. It's your job as the porter to figure out how to unbundle dependencies. So for example, instead of bundling your own copy of pdcurses, make it so it uses the port devel/pdcurses, which we already have. Do that with all dependencies we already package. The only dependencies we do not already package are tbox and libsv, but these ones too should probably be unbundled. Ideally submit separate ports for tbox and libsv, and then make this port depend on these ports. I cannot accept this port without unbundling the dependencies, except if there is a very good technical reason why they cannot be unbundled.
(In reply to Robert Clausecker from comment #7) ok i'll figure it out how to unbundle it.
(In reply to Robert Clausecker from comment #7) the xmake its configure script has --external option to use system's utils for build, but tbox/sv's missing will lead to build failure, and i manually install the tbox(as example, probably same as sv). `configure && make install` but it's does not generate pkg-config file so though make install the tbox, when compile xmake it's configure script still not detect(the xmake configure script use pkg-config to detect the external dependency) so the build process end up with undefine symbol: tb_xxx(missing tbox) ... im not sure how to do next. T^T
(In reply to Huan Zhou from comment #9) We don't have tbox and sv packaged, so for now it's ok if you bundle them. Check if you can unbundle them in the future though.
(In reply to Robert Clausecker from comment #10) https://github.com/xmake-io/xmake/blob/5b1f1123af7afc503d5634ae08b07f018931d799/core/xmake.sh#L36 the external option use whether use dependency all from system or all from its submodule, i'll test if can use part of it's submodule to build.
If you like, I can try to assist you with packaging tbox and sv. It should be possible to fix the xmake build by manually giving it the right paths and libraries to include through LDFLAGS and LIBS.
Created attachment 257526 [details] sample port for tbox. (In reply to Robert Clausecker from comment #12) here's a demo for libtbox i worked today. great if you can help me with it <3
(In reply to Huan Zhou from comment #13) I'll go ahead and do ports for sv and tbox. I'll let you know when they're done. May take a day or two.
(In reply to Robert Clausecker from comment #14) ok, thanks! <3
Created attachment 257527 [details] devel/sv: new port New port for sv. This one installs pkg-config files. Unfortunately I couldn't get it to build with autotools, so cmake will be needed to build xmake-io.
Created attachment 257528 [details] devel/tbox: new port Very straightforward. Unfortunately this one does not install a pkg-config file. You may have to add USES=localbase and perhaps copy-edit the port to make this work.
Created attachment 257548 [details] new port for sv using autoconf. (In reply to Robert Clausecker from comment #16) the autoconf works fine, i modify a little bit, but tbox still now work as expects.
(In reply to Huan Zhou from comment #18) i mean autotools.
(In reply to Huan Zhou from comment #18) Thanks. I kind of forgot about libtool... Will change the port according to your patch with some extra changes.
(In reply to Robert Clausecker from comment #20) btw, a little bit of offtopic, do you know how to host a pkg site for another arch? for example, i mainly working on riscv but i found there is no pkg mirror for riscv, even i can't install pkg from itself, so im consider hosting a pkg repo for it but idk how to host and upload ports to the site... would be great if useful information provide <3
(In reply to Huan Zhou from comment #21) You can host your own pkg repository, it's quite easy. I do it too for armv7 at http://fuz.su/pkg Use poudriere to build the desired packages. Then upload the package directory build by poudriere to a web server. Then optionally sign the packages using pkg-repo(8). Then add a configuration file to your client installation (place it in /usr/local/etc/pkg/repos, you can find a sample at http://fuz.su/pkg/fuz.conf). Then run pkg-update(8) to fetch the new package lists. That's all!
(In reply to Robert Clausecker from comment #22) great, thanks for the information.
(In reply to Robert Clausecker from comment #22) i've successfully host it lol http://bsd.per1cycle.org/
(In reply to Huan Zhou from comment #24) Nice!
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=3907eefc3849f9a83befb2fde2e8ad89b4ee4cd8 commit 3907eefc3849f9a83befb2fde2e8ad89b4ee4cd8 Author: Robert Clausecker <fuz@FreeBSD.org> AuthorDate: 2025-02-14 14:20:53 +0000 Commit: Robert Clausecker <fuz@FreeBSD.org> CommitDate: 2025-02-18 14:16:19 +0000 devel/sv: Semantic versioning in c99 This is free and unencumbered software released into the public domain. This package installs a C language library implementing semantic versioning for the C language. WWW: https://github.com/uael/sv/ This port also builds with cmake, but as it is a prerequisite for an upcoming port of the xmake build system, I did not want to make the dependency chain longer than it needs to be. PR: 284724 Co-authored-by: Huan Zhou <pericycle.cc@gmail.com> devel/Makefile | 1 + devel/sv/Makefile (new) | 24 ++++++++++++++++++++++++ devel/sv/distinfo (new) | 3 +++ devel/sv/pkg-descr (new) | 3 +++ devel/sv/pkg-plist (new) | 7 +++++++ 5 files changed, 38 insertions(+)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=b86453d829e4684894973583f58f1a66d8fb80e1 commit b86453d829e4684894973583f58f1a66d8fb80e1 Author: Robert Clausecker <fuz@FreeBSD.org> AuthorDate: 2025-02-14 14:38:48 +0000 Commit: Robert Clausecker <fuz@FreeBSD.org> CommitDate: 2025-02-18 14:16:19 +0000 devel/tbox: Glib-like multi-platform c library TBOX is a glib-like cross-platform C library that is simple to use yet powerful in nature. The project focuses on making C development easier and provides many modules (.e.g stream, coroutine, regex, container, algorithm ...), so that any developer can quickly pick it up and enjoy the productivity boost when developing in C language. WWW: https://docs.tboox.org/ PR: 284724 devel/Makefile | 1 + devel/tbox/Makefile (new) | 27 +++ devel/tbox/distinfo (new) | 3 + devel/tbox/pkg-descr (new) | 7 + devel/tbox/pkg-plist (new) | 421 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 459 insertions(+)
The dependencies have been committed. Feel free to continue working on the main port. I've assigned this one to myself so I can guide you through the remaining steps.
(In reply to Robert Clausecker from comment #28) ok, i'll keep on working on this port.
New progress: i've successfully modify to make it works, need some extra config args in tbox, referencing to debian xmake port. and also need a little bit patch, i'll upload patch later in the today.
Created attachment 258228 [details] Add tbox extra config args, fix missing module for xmake.
Created attachment 258229 [details] [New port]: devel/xmake-io: A cross-platform build utility
Created attachment 258240 [details] devel/xmake-io: updated patch for the new port (In reply to Huan Zhou from comment #32) Thank you for the update. I had to do some copy-editing to make the port work properly. Please let me know if this one works for you and if yes, approve for commit.
(In reply to Robert Clausecker from comment #33) no issue. Tested by Huan Zhou <pericycle.cc@gmail.com>
Great!
(In reply to Robert Clausecker from comment #35) btw another little bit off-topic here. im currently have 4 months(June 2025) before i graduate from college,and im interested in "Port virtual_oss to base" in freebsd summer of code projects, andi wonder if its proper to register for this year's gsoc? considering July& Augest im not a student anymore...?
(In reply to Huan Zhou from comment #36) I don't know if you'll be eligible, but I suppose it's likely. Come to channel #freebsd-soc on libera.chat if you have further questions.
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=2a288c93ba3e51a4460e893a00450e4fe66f9dd1 commit 2a288c93ba3e51a4460e893a00450e4fe66f9dd1 Author: Huan Zhou <pericycle.cc@gmail.com> AuthorDate: 2025-02-10 05:01:00 +0000 Commit: Robert Clausecker <fuz@FreeBSD.org> CommitDate: 2025-03-16 10:19:27 +0000 devel/xmake-io: Cross-platform build utility based on Lua What is Xmake? - Xmake is a cross-platform build utility based on the Lua scripting language - Xmake is very lightweight and has no dependencies outside of the standard library. - Uses the xmake.lua file to maintain project builds with a simple and readable syntax WWW: https://xmake.io/ PR: 284724 devel/Makefile | 1 + devel/xmake-io/Makefile (new) | 26 + devel/xmake-io/distinfo (new) | 17 + devel/xmake-io/files/patch-core_xmake.sh (new) | 13 + devel/xmake-io/pkg-descr (new) | 7 + devel/xmake-io/pkg-plist (new) | 1809 ++++++++++++++++++++++++ 6 files changed, 1873 insertions(+)
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=28c9bc9fb959fd49ad8c1e8fbae651404741fcd5 commit 28c9bc9fb959fd49ad8c1e8fbae651404741fcd5 Author: Huan Zhou <pericycle.cc@gmail.com> AuthorDate: 2025-03-03 02:08:07 +0000 Commit: Robert Clausecker <fuz@FreeBSD.org> CommitDate: 2025-03-16 10:19:27 +0000 devel/tbox: update tbox config, missing module of charset and hash for xmake Obtained from: https://github.com/xmake-io/xmake-package-debian-tbox/blob/b1a88c33152ff7ad4a209cef940d5f91971a6b21/debian/rules#L14C64-L14C73 Approved by: fuz (maintainer) PR: 284724 devel/tbox/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
Thank you for your contribution. Sorry for the slow commit.
(In reply to Robert Clausecker from comment #40) np, nice to see the commit :)