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

Problem: Out-of-date zproject #85

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

BHare1985
Copy link

@BHare1985 BHare1985 commented Apr 5, 2024

Solution: Update zproject

The initial commit represents the unedited output obtained by running gsl project.xml without any pruning. Subsequent commits will gradually prune unnecessary parts and make necessary additions or removals.

During my investigation of #84, I discovered that zproject needed to be regenerated. The specific fix for the drafts that fail to compile relates to .if project.stable (see here). However, currently, CMake is not functioning as expected. Therefore, I will debug why zproject isn't performing its job correctly and why the .git solution works whereas defaulting drafts=on doesn't.

This situation serves as a valuable test for zproject, assessing its effectiveness in updating older projects. While it builds successfully on my Debian trixie WSL when using autotools, it encounters issues with cmake.

The objective of this PR is to bring this repository up to date, stress test zproject, gain insights into filemq and its community requirements/desires, and enhance zproject to better meet the needs of both new and established projects within zeromq.

As a first step, I am sharing the output of the updated zproject, which I will document and welcome feedback on each step. I believe this PR is not yet ready for merging and will therefore remain in a draft state.

Here is a todo list based on the output what I think needs done:

  • Ensure build works w/ Debian autotools
  • Ensure build works w/ Ubuntu stable and testing
  • Ensure build works w/ Mac-OS (need help)
  • Ensure CMake build works on Windows and Debian/Ubuntu
  • Ensure Visual Studio projects build with VS2022
  • all .h and .c skeletons
  • ./valgrind.supp
  • ruby's Rakefile and spec_helper
  • .travis.yml
  • deleting version.sh
  • doc/filemq.txt
GSL/4.1.5 Copyright (c) 1996-2016 iMatix Corporation
              GSL Developers 2016-2017
gsl/4 I: Processing project.xml...
gsl/4 M: W: Current year '2024' is not listed in any license tag / Copyright line!
gsl/4 M: W: Do you want to Ctrl+Break now, edit your license.xml and regenerate the project?
gsl/4 M: NOT regenerating an existing src/filemq_server.c skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing src/filemq_client.c skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing src/filemq_selftest.c skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing include/filemq.h skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing include/fmq_msg.h skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing src/fmq_msg.c skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing include/fmq_server.h skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing src/fmq_server.c skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing include/fmq_client.h skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing src/fmq_client.c skeleton file; but you probably should not care
gsl/4 M: NOT regenerating an existing .gitignore file; you might want to move yours out of the way and re-generate the project again to get updated settings
gsl/4 M: Generating initial .gitattributes file
gsl/4 M: Generating initial .editorconfig file
gsl/4 M: NOT regenerating an existing src/.valgrind.supp file; you might want to move yours out of the way and re-generate the project again to get updated settings
gsl/4 M: Building Cucumber integration with cucumber-c (cucumber)
gsl/4 M: Building Native shared library for Android (android)
gsl/4 M: Building Cygwin build system (cygwin)
gsl/4 M: Building packaging for Debian (debian)
gsl/4 M: Building Delphi binding (delphi)
gsl/4 M: Building packaging for Docker (docker)
gsl/4 M: Building Github Actions scripts (gh_actions)
gsl/4 M: Generating skeleton .github/workflows/CI.yaml script
gsl/4 M: GHA: CLANG-FORMAT: implementation: cmake
gsl/4 M: GHA: CLANG-FORMAT: require-good: 0 (default from allow_failed)
gsl/4 M: Building GYP build system (project.gyp) (gyp)
gsl/4 M: Building Native library for iOS (ios)
gsl/4 M: Building Java JNI binding (java)
gsl/4 M: Building MSVC builds for Java JNI binding (java-msvc)
gsl/4 M: Building pipeline CI script for jenkins (jenkins)
gsl/4 M: Building Mingw32 build system (mingw32)
gsl/4 M: Building Node.js binding (nodejs)
gsl/4 M: Building Packaging for NuGet (nuget)
gsl/4 M: Building service for Open Build Service (obs)
gsl/4 M: Generating skeleton .obs/workflows.yml configuration
gsl/4 M: See: https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.scm_ci_workflow_integration.html
gsl/4 M: Building Python binding (python)
gsl/4 M: Building Python CFFI binding (python_cffi)
gsl/4 M: Building Lua FFI binding (lua_ffi)
gsl/4 M: Building QML binding (qml)
gsl/4 M: Building Qt binding (qt)
gsl/4 M: Building packaging for RedHat (redhat)
gsl/4 M: Building Raspberry Pi cross build system (rpi)
gsl/4 M: Building Ruby binding (ruby)
gsl/4 M: NOT regenerating an existing bindings/ruby/Rakefile file; you might want to move yours out of the way and re-generate the project again to get updated settings
gsl/4 M: NOT regenerating an existing bindings/ruby/spec/spec_helper.rb file; you might want to move yours out of the way and re-generate the project again to get updated settings
gsl/4 M: Building Travis CI scripts (travis)
gsl/4 M: NOT regenerating an existing .travis.yml file; you might want to move yours out of the way and re-generate the project again to get updated settings
gsl/4 M: Building packaging for Vagrant (vagrant)
gsl/4 M: Building Microsoft Visual Studio 2008 (vs2008)
gsl/4 M: Building Microsoft Visual Studio 2010 (vs2010)
gsl/4 M: Building Microsoft Visual Studio 2012 (vs2012)
gsl/4 M: Building Microsoft Visual Studio 2013 (vs2013)
gsl/4 M: Building Microsoft Visual Studio 2015 (vs2015)
gsl/4 M: Building Microsoft Visual Studio 2017 (vs2017)
gsl/4 M: Building Microsoft Visual Studio 2019 (vs2019)
gsl/4 M: Building GNU build system (autotools)
gsl/4 M: WARNING: Your workspace has a 'version.sh' - note that zproject no longer generates this, and its presence may confuse your builds; you may want to remove it (or bump manually for project version '2.0.0')

gsl/4 M: Please remember to use 'src/selftest-ro/' to store SCM-tracked selftest fixtures, and 'src/selftest-rw/' for files your selftest might create
gsl/4 M: Do not forget to manually update and SCM-track the doc/filemq.adoc project overview document
gsl/4 M: WARNING: a doc/filemq.txt exists - this may be an old name for this MAN7 page! (review and perhaps 'git mv doc/filemq.txt doc/filemq.adoc')
gsl/4 M: Building CMake build system (cmake)

Solution: Update zproject
@BHare1985 BHare1985 marked this pull request as draft April 5, 2024 16:25
"failed to parse FILEMQ_VERSION_${which} from filemq.h"
)
endif()
set(FILEMQ_${which}_VERSION ${CMAKE_MATCH_1})
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe the new zproject's approach to this problem is much more elegant so this should be removed

Comment on lines -111 to -120
########################################################################
# LIBSODIUM dependency
########################################################################
find_package(libsodium)
IF (LIBSODIUM_FOUND)
include_directories(${LIBSODIUM_INCLUDE_DIRS})
list(APPEND MORE_LIBRARIES ${LIBSODIUM_LIBRARIES})
add_definitions(-DHAVE_LIBSODIUM)
list(APPEND OPTIONAL_LIBRARIES ${LIBSODIUM_LIBRARIES})
ENDIF (LIBSODIUM_FOUND)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really don't think filemq uses CURVE authentication in it's current state so I think dropping the libsodium dependency is reasonable. The current tests do not depend on it, so it is assumed not needed unless someone implements CURVE via libzmq

Only easy logic regenerations were done, a PR will be submitted later to add in the additional logic from zproto
@BHare1985
Copy link
Author

All src files were regenerated either via zproject or zproto. Zproto has a lot of logic changes that I omitted and will submit as a separate PR at a later date

Additionally the ruby bindings, but there were no changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant