-
Notifications
You must be signed in to change notification settings - Fork 62
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
Integration Candidate: 2020-05-27 #101
Conversation
Added header guard Removed local parameter hiding global
Major rewrite - Fix #2: Added 64-bit support Added big endian payload options (use when LE selected to write BE fields) Fix #3: Added checksum calculation/overide Added the rest of the override possible fields (for error checking) Fix #48: Added standard type options (more clear/consistant sizing) Fix #80: Added cFS Version 2 header support Added protocol options Added raw message generation support Added test script Added debug and thirtytwo build options
cFS Header Version 2 (includes CCSDS Extended header) support and major update
@skliper getting some ground system build errors in nasa/cFS#96 |
@astrogeco should be fixed. |
FYI - This fails to compile on a CentOS 6.9 system:
|
Does it work with -std=gnu99 for the host? |
It needs |
What makes you think that? Looks to me like the issue is still open at #95, doesn't matter to me if we go with gnu99, add all the flags, or rewrite the functions. I haven't heard from any stakeholders on the matter, and nobody has marked it as a project priority so I'm not prioritizing it. If you want to do it on your personal time go for it. |
Well, the fact that we are merging this version into "master" even though it doesn't really work cross platform, which is the reason I recommended against using these endian conversion functions in the first place. I would think "the code builds on RHEL 6" is a project priority since many folks still use this OS. Furthermore, I thought there was a coding standards document that said the code should be constrained to ISO standard C (some version, we choose 9899:1999) and these functions are not within that standard. I'm happy to implement the cross platform/generic solution in #95, but on on my personal time - sorry. Probably wouldn't take much time at all though. Very trivial to do it in standards-compliant way. |
There is an internal code standard constraining ISO standard C that we aren't compliant with because we use c99 (it requires c89). Not clear to me why we don't just change the host to gnu99, which is at least a standard, vs custom re-implementations of the same functions. I'd change that one line for free. |
Is this in the branch standard? |
GNU99 isn't a standard. It is C99 with GNU extensions. Extensions aren't standard. Even if you change that one line It also makes no relevance to this issue because these endian conversion functions aren't even part of GNU extensions, they are BSD extensions. Many organization coding standards do make provisions to use newer versions of ISO standards where relevant, not limited to the revision at the time of writing. It is unfortunate if GSFC did not include such a provision, but I expect someday (maybe when c89 is 40 years obsolete not just 30 years obsolete?) that GSFC will refresh their internal standards add some sort of clause to the ISO C requirement to acknowledge the existence of newer ISO C revisions and allow their use, at which point we will be compliant. C99 includes some important code safety items, which is why we (internally) justified using it instead of the older C89. Organizations which still insist on the obsolete c89 are doing themselves a major disservice. However, in no event would I expect any coding standard document to permit use of compiler-specific extensions, such as gnu99. A newer revision of ISO C is a very different thing than a vendor compiler extension. |
Yup. Note that's the flight software standard, doesn't say anything about ground software. |
Well said (referring to the full comment). I'm still not convince it isn't fine to just use the gnu extensions for ground software. If you want to use a host compiler that doesn't support it feel free to custom implement. Not sure why we'd do that in the framework, seems like a waste. |
Two reasons to not apply gnu99 here:
Specifying In the amount of time we've discussed it I probably could've implemented the #95 which would be plain ISO C and not rely on any of these extensions. |
I wonder if the solution to all of this is to provide and support a single standard development environment using a VM or container solution. |
This is basically what we are doing with CI - Ubuntu 18.04 + scripted installs. Really depends on what the open source leadership wants to claim we support for building the ground tools. |
Kind of but not exactly, I'll consider that done once we are able to run the same environment on a local machine as on CI |
Describe the contribution
Testing performed
https://github.com/nasa/cFS/pull/96/checks
Expected behavior changes
PR #92 - Default behavior is the same except adds checksum and doesn't actually require fields. Adds all the packet fields, overrides, more supported data types, etc.
System(s) tested on
Ubuntu:Bionic
Additional context
Part of nasa/cFS#96
Contributor Info - All information REQUIRED for consideration of pull request
Jacob Hageman, NASA-GSFC