# # Copyright:: Chef Software Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # We use the version in util-linux, and only build the libuuid subdirectory # # expeditor/ignore: deprecated 2021-04 name "libzmq" default_version "4.0.7" license "LGPL-3.0" license_file "COPYING" license_file "COPYING.LESSER" skip_transitive_dependency_licensing true version "4.2.2" do source md5: "52499909b29604c1e47a86f1cb6a9115" dependency "libsodium" end version "4.1.4" do source md5: "a611ecc93fffeb6d058c0e6edf4ad4fb" dependency "libsodium" end # Last stable version for "4.0.x" version "4.0.7" do source sha256: "e00b2967e074990d0538361cc79084a0a92892df2c6e7585da34e4c61ee47b03" dependency "libsodium" end version "4.0.5" do source md5: "73c39f5eb01b9d7eaf74a5d899f1d03d" dependency "libsodium" end version "4.0.4" do source md5: "f3c3defbb5ef6cc000ca65e529fdab3b" dependency "libsodium" end relative_path "zeromq-#{version}" if version.satisfies?(">= 4.2.0") source url: "https://github.com/zeromq/libzmq/releases/download/v#{version}/zeromq-#{version}.tar.gz" else source url: "http://download.zeromq.org/zeromq-#{version}.tar.gz" end build do env = with_standard_compiler_flags(with_embedded_path) if aix? # In tcp_connector.hpp the `open` method was getting redefined to open64 because the compiler's `_LARGE_FILES` flag # is set. We renamed `open` to `openn` to keep it from getting redefined during compilation. # reference: https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/com.ibm.aix.genprogc/writing_programsa_access.htm # reference: https://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.basetrf1/open.htm patch source: "zeromq-aix-4.2.2-LARGE_FILES.patch", plevel: 0, env: env # When trying to run libzmq and request a socket we were seeing failures (resulting in core dumps) around the use of mutexes. # We eventually narrowed this down to the `atomic_counter.hpp`. This class has a bunch of overrides to support atomic # operations using system or compiler native features. As a fallback it would use a mutex to perform atomic operations but # we were seeing that mutex never be initialized. So we added support for the built-in AIX atomic operations fetch_and_add. patch source: "zeromq-aix-4.2.2-atomic-counter-fetch_and_add.patch", plevel: 0, env: env end # If we were building with CMake this would be the default # and newer versions of libzmq use this as the default. env["CPPFLAGS"] = "#{env["CPPFLAGS"]} -DFD_SETSIZE=1024" if windows? # Some test files use inet_pton which is not readily available on windows. if version.satisfies?(">= 4") && version.satisfies?("< 4.1") && windows? patch source: "zeromq-4.0.11_mingw_inet_pton.patch", env: env end config_command = [ "--with-libsodium", "--without-documentation", "--disable-dependency-tracking", ] configure(*config_command, env: env) make "-j #{workers}", env: env make "-j #{workers} install", env: env end