Repository: JuliaPackaging/Yggdrasil
Pull request #10789: QuickFIX build script
Author: login: AlexKlo
Created: 2025-03-20T14:59:19Z | Merged: 2025-03-28T11:53:10Z



Diff:
diff --git a/Q/quickfix/build_tarballs.jl b/Q/quickfix/build_tarballs.jl
new file mode 100644
index 00000000000..43b0c8cf77b
--- /dev/null
+++ b/Q/quickfix/build_tarballs.jl
@@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j${nproc} install
+
+install_license ${WORKSPACE}/srcdir/quickfix/LICENSE
+"""
+
+platforms = vcat(libjulia_platforms.(julia_versions)...)
+platforms = filter(!Sys.iswindows, platforms)
+
+# The products that we will ensure are always built
+products = [
+    LibraryProduct("libquickfix", :libquickfix),
+]
+
+# Dependencies that must be installed before this package can be built
+dependencies = [
+    Dependency("OpenSSL_jll"; compat="3.0.16"),
+]
+
+# Build the tarballs, and possibly a `build.jl` as well.
+build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat="1.8", preferred_gcc_version=v"9")
diff --git a/Q/quickfix/bundled/patches/fix_typos.patch b/Q/quickfix/bundled/patches/fix_typos.patch
new file mode 100644
index 00000000000..808203ca8bd
--- /dev/null
+++ b/Q/quickfix/bundled/patches/fix_typos.patch
@@ -0,0 +1,78 @@
+diff --git a/src/C++/SSLSocketInitiator.cpp b/src/C++/SSLSocketInitiator.cpp
+index 0855529a..bfcbe01c 100644
+--- a/src/C++/SSLSocketInitiator.cpp
++++ b/src/C++/SSLSocketInitiator.cpp
+@@ -281,7 +281,7 @@ bool SSLSocketInitiator::onPoll() {
+ 
+ void SSLSocketInitiator::onStop() {}
+ 
+-void SSLSocketInitiator::doConnect(const SessionID &sessionID, const Dictionary &dictionary) {
++void SSLSocketInitiator::doConnect(const SessionID &sessionID, const Dictionary &d) {
+   try {
+ 
+     Session *session = Session::lookupSession(sessionID);
+@@ -291,7 +291,7 @@ void SSLSocketInitiator::doConnect(const SessionID &sessionID, const Dictionary
+ 
+     Log *log = session->getLog();
+ 
+-    HostDetails host = m_hostDetailsProvider.getHost(sessionID, dictionary);
++    HostDetails host = m_hostDetailsProvider.getHost(sessionID, d);
+     if (d.has(RECONNECT_INTERVAL)) // ReconnectInterval in [SESSION]
+     {
+       m_reconnectInterval = d.getInt(RECONNECT_INTERVAL);
+diff --git a/src/C++/SocketInitiator.h b/src/C++/SocketInitiator.h
+index 2f3c376e..00e25ebd 100644
+--- a/src/C++/SocketInitiator.h
++++ b/src/C++/SocketInitiator.h
+@@ -58,8 +58,6 @@ private:
+   void onError(SocketConnector &);
+   void onTimeout(SocketConnector &);
+ 
+-  SessionSettings m_settings;
+-
+   HostDetailsProvider m_hostDetailsProvider;
+   SocketConnector m_connector;
+   SocketConnections m_pendingConnections;
+diff --git a/src/C++/ThreadedSSLSocketInitiator.cpp b/src/C++/ThreadedSSLSocketInitiator.cpp
+index f07533d2..aa1881da 100644
+--- a/src/C++/ThreadedSSLSocketInitiator.cpp
++++ b/src/C++/ThreadedSSLSocketInitiator.cpp
+@@ -203,7 +203,7 @@ void ThreadedSSLSocketInitiator::onInitialize(const SessionSettings &s) EXCEPT(R
+   std::string errStr;
+ 
+   /* set up the application context */
+-  if ((m_ctx = createSSLContext(false, m_settings, errStr)) == 0) {
++  if ((m_ctx = createSSLContext(false, s, errStr)) == 0) {
+     throw RuntimeError(errStr);
+   }
+ 
+@@ -220,7 +220,7 @@ void ThreadedSSLSocketInitiator::onInitialize(const SessionSettings &s) EXCEPT(R
+   } else if (!loadSSLCert(
+                  m_ctx,
+                  false,
+-                 m_settings,
++                 s,
+                  getLog(),
+                  ThreadedSSLSocketInitiator::passwordHandleCB,
+                  this,
+@@ -230,7 +230,7 @@ void ThreadedSSLSocketInitiator::onInitialize(const SessionSettings &s) EXCEPT(R
+   }
+ 
+   int verifyLevel;
+-  if (!loadCAInfo(m_ctx, false, m_settings, getLog(), errStr, verifyLevel)) {
++  if (!loadCAInfo(m_ctx, false, s, getLog(), errStr, verifyLevel)) {
+     ssl_term();
+     throw RuntimeError(errStr);
+   }
+diff --git a/src/C++/ThreadedSocketInitiator.h b/src/C++/ThreadedSocketInitiator.h
+index c9640c14..d9e2fbeb 100644
+--- a/src/C++/ThreadedSocketInitiator.h
++++ b/src/C++/ThreadedSocketInitiator.h
+@@ -62,7 +62,6 @@ private:
+   void lock() { Locker l(m_mutex); }
+   static THREAD_PROC socketThread(void *p);
+ 
+-  SessionSettings m_settings;
+   HostDetailsProvider m_hostDetailsProvider;
+   time_t m_lastConnect;
+   int m_reconnectInterval;


Reviews:
user: login: imciner2
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-20T17:38:42Z
user: login: giordano
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-20T17:57:19Z
user: login: AlexKlo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T18:28:11Z
user: login: AlexKlo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-20T18:35:15Z
user: login: giordano
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-27T13:03:17Z
user: login: AlexKlo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:12:09Z
user: login: giordano
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-27T13:14:18Z
user: login: giordano
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-27T13:14:47Z
user: login: AlexKlo
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-27T13:34:33Z
user: login: giordano
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-28T10:46:49Z
user: login: giordano
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-28T11:40:05Z

Review comments:
diff_hunk: @@ -0,0 +1,72 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+# needed for libjulia_platforms and julia_versions
+include("../../L/libjulia/common.jl")
+
+#filter julia versions to include only Julia >= 1.8 for LTS
path: Q/quickfix/build_tarballs.jl
user: login: imciner2
body: Why did you choose 1.8 for LTS here? The current LTS release is 1.10, but we can also support older ones if you would like (at least update the comment though).
created_at: 2025-03-20T17:30:49Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,72 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+# needed for libjulia_platforms and julia_versions
+include("../../L/libjulia/common.jl")
+
+#filter julia versions to include only Julia >= 1.8 for LTS
+julia_versions = filter(v-> v >= v"1.8", julia_versions)
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j 4 install
path: Q/quickfix/build_tarballs.jl
user: login: imciner2
body: ```suggestion
make -j${nproc} install
```
created_at: 2025-03-20T17:32:47Z
author_association: MEMBER
path: Q/quickfix/bundled/patches/fix_typos.patch
user: login: imciner2
body: Have you submitted this upstream to get it fixed in the next release?
created_at: 2025-03-20T17:38:27Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,72 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+# needed for libjulia_platforms and julia_versions
+include("../../L/libjulia/common.jl")
+
+#filter julia versions to include only Julia >= 1.8 for LTS
path: Q/quickfix/build_tarballs.jl
user: login: giordano
body: > but we can also support older ones if you would like

We could, but we'd also have loads more builds :smiling_face_with_tear: 
created_at: 2025-03-20T17:57:19Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,72 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+# needed for libjulia_platforms and julia_versions
+include("../../L/libjulia/common.jl")
+
+#filter julia versions to include only Julia >= 1.8 for LTS
path: Q/quickfix/build_tarballs.jl
user: login: AlexKlo
body: Specifying LTS here is a typo
created_at: 2025-03-20T18:28:11Z
author_association: CONTRIBUTOR
path: Q/quickfix/bundled/patches/fix_typos.patch
user: login: AlexKlo
body: This is a [bug fix](https://github.com/quickfix/quickfix/pull/625) that hasn’t been merged yet
created_at: 2025-03-20T18:35:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j1 install
path: Q/quickfix/build_tarballs.jl
user: login: giordano
body: ```suggestion
make -j${nproc} install
```
created_at: 2025-03-27T13:03:16Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j1 install
path: Q/quickfix/build_tarballs.jl
user: login: AlexKlo
body: I had random build failures when using `j${nproc}`:
https://buildkite.com/julialang/yggdrasil/builds/18848
https://buildkite.com/julialang/yggdrasil/builds/18847

with errors like that:
```
[08:51:48] In file included from /workspace/srcdir/quickfix/include/quickfix/DataDictionary.h:30,
--
  | [08:51:48]                  from /workspace/srcdir/quickfix/include/quickfix/Message.h:29,
  | [08:51:48]                  from /workspace/srcdir/quickfix/include/quickfix/Application.h:25,
  | [08:51:48]                  from /workspace/srcdir/quickfix/examples/ordermatch/Application.h:31,
  | [08:51:48]                  from /workspace/srcdir/quickfix/examples/ordermatch/ordermatch.cpp:26:
  | [08:51:48] /workspace/srcdir/quickfix/include/quickfix/Exceptions.h:25:10: fatal error: Utility.h: No such file or directory
  | [08:51:48]    25 \| #include "Utility.h"
```

or like that:
```
[09:54:46] In file included from /workspace/srcdir/quickfix/examples/ordermatch/ordermatch.cpp:26:
--
  | [09:54:46] In file included from /workspace/srcdir/quickfix/examples/ordermatch/Application.h:32:
  | [09:54:46] /workspace/srcdir/quickfix/include/quickfix/MessageCracker.h:34:10: fatal error: 'fix50sp2/MessageCracker.h' file not found
  | [09:54:46]    34 \| #include "fix50sp2/MessageCracker.h"
  | [09:54:46]       \|
```

created_at: 2025-03-27T13:12:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j1 install
path: Q/quickfix/build_tarballs.jl
user: login: giordano
body: https://github.com/JuliaPackaging/Yggdrasil/pull/10789#issuecomment-2757924418
created_at: 2025-03-27T13:14:18Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j1 install
path: Q/quickfix/build_tarballs.jl
user: login: giordano
body: I have no idea how to repeat for the 1000th time on this repo that there filesystem issues in the build machine.
created_at: 2025-03-27T13:14:47Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j1 install
path: Q/quickfix/build_tarballs.jl
user: login: AlexKlo
body: Will you merge the PR with the latest results?
created_at: 2025-03-27T13:34:33Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j${nproc} install
+
+install_license ${WORKSPACE}/srcdir/quickfix/LICENSE
+"""
+
+platforms = vcat(libjulia_platforms.(julia_versions)...)
+platforms = filter(!Sys.iswindows, platforms)
+
+# The products that we will ensure are always built
+products = [
+    LibraryProduct("libquickfix", :libquickfix),
+]
+
+# Dependencies that must be installed before this package can be built
+dependencies = [
+    Dependency("OpenSSL_jll"),
path: Q/quickfix/build_tarballs.jl
user: login: giordano
body: ```suggestion
    Dependency("OpenSSL_jll"; compat="3.0.16"),
```
created_at: 2025-03-28T10:46:49Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,67 @@
+# Note that this script can accept some limited command-line arguments, run
+# `julia build_tarballs.jl --help` to see a usage message.
+using BinaryBuilder, Pkg
+
+name = "quickfix"
+version = v"1.16.0"
+
+# Collection of sources required to build CMake
+sources = [
+    GitSource("https://github.com/quickfix/quickfix.git", "92c85ca63fc260d16e24e0ece419ecdec9ffe868"),
+    ArchiveSource("https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.15.sdk.tar.xz",
+    "2408d07df7f324d3beea818585a6d990ba99587c218a3969f924dfcc4de93b62"),
+    DirectorySource("./bundled")
+]
+
+include("../../L/libjulia/common.jl")
+julia_versions = [v"1.8", v"1.9", v"1.10", v"1.11"]
+
+# Bash recipe for building across all platforms
+script = raw"""
+cd ${WORKSPACE}/srcdir/quickfix
+
+if [[ "${target}" == x86_64-apple-darwin* ]]; then
+    # Install a newer SDK which supports `shared_timed_mutex` and `std::filesystem`
+    pushd $WORKSPACE/srcdir/MacOSX10.*.sdk
+    rm -rf /opt/${target}/${target}/sys-root/System
+    cp -ra usr/* "/opt/${target}/${target}/sys-root/usr/."
+    cp -ra System "/opt/${target}/${target}/sys-root/."
+    export MACOSX_DEPLOYMENT_TARGET=10.15
+    popd
+fi
+
+for f in ${WORKSPACE}/srcdir/patches/*.patch; do
+    atomic_patch -p1 ${f}
+done
+
+mkdir build && cd build
+
+cmake \
+    -DCMAKE_INSTALL_PREFIX=$prefix \
+    -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DHAVE_SSL=ON \
+    -DHAVE_GETTIMEOFDAY=ON \
+    -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" \
+    ..
+
+make -j1 install
path: Q/quickfix/build_tarballs.jl
user: login: giordano
body: Maybe there are race conditions in the build system after all, the failure rate here is way higher than whatever we usually have for filesystem issues.
created_at: 2025-03-28T11:40:05Z
author_association: MEMBER

PR comments:
user: login: AlexKlo
created_at: 2025-03-21T06:33:11Z
body: @imciner2 @giordano 
I tested some configurations locally, and the builds completed successfully. However, they are failing randomly here. What could be the reason?
author_association: CONTRIBUTOR
user: login: imciner2
created_at: 2025-03-21T10:01:03Z
body: It seems there is a problem with include paths:
```
[06:17:21] In file included from /workspace/srcdir/quickfix/examples/executor/C++/Application.cpp:26:
[06:17:21] In file included from /workspace/srcdir/quickfix/examples/executor/C++/Application.h:25:
[06:17:21] In file included from /workspace/srcdir/quickfix/include/quickfix/Application.h:25:
[06:17:21] In file included from /workspace/srcdir/quickfix/include/quickfix/Message.h:29:
[06:17:21] In file included from /workspace/srcdir/quickfix/include/quickfix/DataDictionary.h:30:
[06:17:21] /workspace/srcdir/quickfix/include/quickfix/Exceptions.h:25:10: fatal error: 'Utility.h' file not found
[06:17:21]    25 | #include "Utility.h"
[06:17:21]       |          ^~~~~~~~~~~
```

So for some reason, it isn't finding this header where it expects.
author_association: MEMBER
user: login: AlexKlo
created_at: 2025-03-27T12:43:20Z
body: @imciner2 @giordano 
I finally made it! For some reason, when building with multiple processes, some files get lost, so I had to set `make -j1`.
author_association: CONTRIBUTOR
user: login: giordano
created_at: 2025-03-27T12:50:10Z
body: That's not the issue, `make -j1` has literally no effect (besides making the entire build unnecessarily slow) when the [command that failed](https://buildkite.com/julialang/yggdrasil/builds/18937#0195d729-60ba-4c91-b445-43d60e9e2905/6-17495) was a previous one.  There are file system issues.  Restarting all the builds only makes it very likely to have the same issue _again_.
author_association: MEMBER
user: login: AlexKlo
created_at: 2025-03-28T08:00:45Z
body: @giordano 
Shall we merge it? 
author_association: CONTRIBUTOR