Comments (16)
I see. For me personally a limitation of having a single version of the package where an upgrade to a widely used one (boost for example) can break multiple independent packages (when some deprecated API gets removed for example) brings the vcpkg to a "hobby" level and I don't see myself using it in the commercial production environment. I also encountered this issue which was an educating read, but I digress.
I just thought that disable treating warnings as errors may also resolve the problem without any patches, just pass -DCOMMSDSL_NO_WARN_AS_ERR=ON to the cmake configuration of the commsdsl project.
from commsdsl.
Hi Mathis,
Adding support for various package managers (including vcpkg) is one of my future goals. However, I didn't have a chance to use them in my line of work yet and to learn / practice their configurations. It would be great if you help.
As for your question, the COMMS_INSTALL_DIR
variable is there to provide a path to the externally built and installed comms_champion project. That's where the find_package will look for LibCommsConfig.cmake
file. Sorry, but I'm not aware of the way how vcpkg is building things (or where it installs the built package) and managing their dependencies. Any suggestions on how to improve the existing logic are welcome.
from commsdsl.
Hi Alex,
I'll work a bit on the integration and check if we have to improve the existing logic. I will keep you updated.
from commsdsl.
microsoft/vcpkg#14195 will integrate comms and commsdsl.
comms without the plugins/gui support
from commsdsl.
Hi Alex,
so currently the build fails on the vcpkg CI
Compiler Info:
config-x64-linux-dbg-out.log
Build error:
install-x64-linux-dbg-out.log
It will fail on linux but not on windows.
Do you have some knowledge of that?
from commsdsl.
Hi Mathis,
It looks like it's a problem with stand-alone boost. Someone has reported it to me at cc.demo1.commsdsl project. However it was resolved when boost provided by ubuntu was used. Google also gave me this link. It looks like libreoffice encountered the same problem and had to patch their boost.
I think the proper solution would be patching boost in vcpkg, but I can try to pass "-Wno-undef" to command line arguments when compiled with gcc as a workaround. I think I'll put it in "develop" branch soon and will release it in a week or two.
from commsdsl.
Hi Alex,
thanks for the info.
I can make a patch directly in the port definition of commsdsl in vcpkg without modifying the underlying code base.
from commsdsl.
Hi Mathis,
Please take a look at current fix to "develop" branch here. You can drop the MSVC line and leave only the GNU one.
Also note that I'm currently working on fixes to both "comms_champion" and "commsdsl" projects to allow builds with "/W4" warning level (currently it's building with default "/W3"). I hope to heave a release ready in about one week time. Maybe it's worth to wait rather than prepare a patch.
I suppose if you prepare patch to the commsdsl project, it's going to be applicable only for v3.5.2 release right? If I do v3.5.3 the patch is not going to be applied automatically, is it not? How is all the versions management is performed in vcpkg?
from commsdsl.
Hi Alex,
Each project is organized in so called "ports". Each port has currently a fixed project version. (more than one version is currently under development, but not released. So currently we only have one version of each library)
At the current vcpkg development stage, one will have to provide a update to the port file to update the project.
Each port can have multiple patches as git diffs. If one patch isn't needed in the next project version, the patch can simply be deleted.
from commsdsl.
So, if I understand you correctly the vcpkg has "always live at head" philosophy. I simplifies many things, but what's the expected workflow when new version of some package compiles fine (as the result merged to ports), but contains some bug and the clients that use that package want a previous version? What happens when newest version deprecates and removes some functionality? What happens to the dependent packages that still use old API?
from commsdsl.
Not always on head. Always on a specified version of that library. At each upgrade you will check if the applied patches are still needed. If not, you will remove them.
If you want to upgrade a library and other dependent libraries are breaking with the upgrade. You have to fix the breaking libraries in your upgrade pull request, too.
from commsdsl.
yes, the single version is indeed a limitation currently. But the multiversioned ports are under development:
https://github.com/strega-nil/vcpkg/blob/git-registries/docs/specifications/registries-2.md
microsoft/vcpkg#14153
So thats a step in the right direction for commercial use.
from commsdsl.
I also took a closer look at your pull request (at comms branch) and I introduced some extra fixes to the CMakeLists.txt files that could help to avoid the patches in the next version. I'll appreciate it if you could review and test my work (on "develop" branch for now) against your vcpkg local copy. I don't know when I'll be able to allocate the time and dive deeper into the vcpkg and test it myself.
from commsdsl.
awesome!
looks good to me. I'll test it tomorrow on my local repo.
from commsdsl.
the comms champ and commsdsl is now merged into the vcpkg master branch.
install command for commschamp:
vcpkg install comms
install command for commsdsl:
vcpkg install commsdsl
if you want both libs - just run vcpkg install commsdsl
it will install all necessary dependencies.
from commsdsl.
That's awesome!
Thanks Mathis for your contribution.
from commsdsl.
Related Issues (20)
- Question: List without length and message size HOT 2
- ICD generation HOT 7
- Missing copyright holder in license HOT 5
- ASN.1 Parsing/Serialization HOT 2
- Adding constexpr to static const functions HOT 2
- Bit Order in `<bitfield>` and `<set>` HOT 4
- `optional` field with `cond` depending on another `optional` field. HOT 7
- Field Extension Support in Lists with termSuffix HOT 4
- Need Help HOT 21
- Creating Frame with `id` that is less than one byte HOT 3
- Can a (serial) protocol with character escaping be realized using the custom code feature? HOT 2
- Schema name cannot start with a capital HOT 4
- Select variant based on value in the transport frame HOT 1
- noexcept error with gcc 9 HOT 5
- Unexpected max serialisation length HOT 4
- Dead links in the Readme HOT 1
- error when using COMMSDSL_NO_TESTS HOT 2
- Undefined behaviour on "out of range" values of ID layer. HOT 4
- "Unexpected max serialisation length" on variable length field inside variant HOT 6
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 commsdsl.