Comments (5)
Is it possible to build without the use of those submodules pointing to 3rd party?
Not all of them, no. As several of them have WZ-specific patches, are configured specifically for WZ, or are things where all builds should be using the same versions (glad, glm, inih, quickjs-wz, etc).
from warzone2100.
Looks like you need to init git submodules.
See: https://github.com/Warzone2100/warzone2100?tab=readme-ov-file#how-to-build
from warzone2100.
Neglected to mention, I wish to not use anything from 3rd party thus the use of "-D BUILD_SHARED_LIBS=OFF"
As I have SQLite3, utf8proc and all the other build deps installed. Is it possible to build without the use of those submodules pointing to 3rd party?
from warzone2100.
Is there a clear document or list of when the third party modules are customized, brought in because a version must be used by all players, or is just brought in for convenience? I browsed a bit before previously but didn't yet see an easier way besides just scrolling through all of the commits to look for such changes.
I've noticed a growing trend of programs I looked at pulling in their own copies of 3rd party code when it isn't customized and is not there just because an outdated library is in use until modifying code to use the newer version properly.
On FreeBSD we normally prefer the non-customized libraries be non-bundled since build time is normally reduced when the library is not rebuilt for every program using it, any patching effort can take place in one location instead of being manually repeated for each program, and tracking/updating security issues is easier when all consumers don't have to be individually checked/reviewed.
Not a complaint by any means as I have usually noticed warzone2100 is more up to date on libraries rather than less and review has helped me find more up to date copies than what my system currently offered so its not like they have been left on old/outdated/buggy versions for years (at lest among my searches). I'd still prefer to unbundle as much as possible when viable for the reasons stated above.
from warzone2100.
Is there a clear document or list of when the third party modules are customized, brought in because a version must be used by all players, or is just brought in for convenience? I browsed a bit before previously but didn't yet see an easier way besides just scrolling through all of the commits to look for such changes.
There is no such document, however generally-speaking: if we rely on a library, we don’t need to customize it, it isn’t header-only, and we can relatively easily support multiple versions, it won’t be in the 3rdparty
submodules and we will use the normal processes to find and link to a system install. (The main exception to this is miniupnpc, but as noted below the buildsystem will automatically link to system miniupnpc - if available - over the in-tree version.)
Theoretically, you could be able to use “system” versions of:
- SQLiteCpp (although we will only test with the version we bundle, which we usually keep up-to-date)
- date (although this is header-only)
- miniupnpc
- this is already explicitly supported by the CMake buildsystem - just ensure you have the proper library installed and it should be used automatically instead of the in-tree version, see:
Lines 859 to 863 in 2a60e34
- this is already explicitly supported by the CMake buildsystem - just ensure you have the proper library installed and it should be used automatically instead of the in-tree version, see:
And some things you should definitely always use the bundled versions of are:
- EmbeddedJSONSignature (this was essentially written for this project, but was packaged as a submodule in case there might be other uses for it)
- basis_universal (we really want to use the latest bits for this)
- glad (this is specifically customized for WZ)
- glm (various versions have had bugs or changed behavior - we test with the version of this we bundle, which is usually far more up to date than most packages)
- inih (has WZ modifications)
- launchinfo (another set of code written for this project, but packaged as a submodule for possible additional use)
- quickjs-wz (this is heavily customized for WZ, and the exact same bits must be used)
nlohmann::json could theoretically be some system version of this header-only lib, although we’re using the absolute latest, expect additional files present like the fwd headers, and may rely on new changes / features as new versions are released.
I've noticed a growing trend of programs I looked at pulling in their own copies of 3rd party code when it isn't customized and is not there just because an outdated library is in use until modifying code to use the newer version properly.
We do largely try to avoid this (and there is, of course, a long list of dependencies that must be pre-installed beyond anything in 3rdparty), but there have been cases where we’ve had to make customizations or rely on specific behavior - or where we actually want to rely on having a specific version (usually the latest version, which many distros may take their time on shipping).
On FreeBSD we normally prefer the non-customized libraries be non-bundled since build time is normally reduced when the library is not rebuilt for every program using it, any patching effort can take place in one location instead of being manually repeated for each program, and tracking/updating security issues is easier when all consumers don't have to be individually checked/reviewed.
Not a complaint by any means as I have usually noticed warzone2100 is more up to date on libraries rather than less and review has helped me find more up to date copies than what my system currently offered so its not like they have been left on old/outdated/buggy versions for years (at lest among my searches). I'd still prefer to unbundle as much as possible when viable for the reasons stated above.
I can absolutely appreciate this, and I think we’ve strived to have a good balance of this. The main thing I’d currently recommend is using system miniupnpc, which - assuming FreeBSD ships it and you have it installed - WZ’s buildsystem should automatically use for you.
from warzone2100.
Related Issues (20)
- warzone2100 4.4.2 fail to start on Ubuntu 24.04 HOT 3
- THAILAND HOT 1
- Fog of War Exploit: Right Click
- Unable to initiate map change vote as spectator host
- Warzone has crashed by loading a saved game on a M3 Pro MacBook HOT 2
- Do not retreat to repair towards stuff outside scroll limits
- [Modding] Add GENERIC Structure types
- [Modding] Add ability to make components/structures unavailable
- Connections are stuck on game load screen with no way of kicking lagged player
- Crash on kick when host spectates
- Buff to both the SuperTransport + Transport or cost reduction
- Request to add Howitzer Cyborg in multiplayer. HOT 1
- Request to add Pepperpot / MGL Cyborg in multiplayer.
- Build failure HOT 3
- Invalid templates can exist in production in certain edge-cases
- Warzone doesn't install
- Build menu tab jumping
- Skirmish replay desyncs sometimes when autosaves happen
- Spectator Stats never show negative oil HOT 1
- Sort unit weapons and buildings alphabetically in the menues
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from warzone2100.