Packages
hackney
2.0.0-beta.1
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
do_quic.sh
#!/bin/sh
#
# Build hackney QUIC NIF
# Supports: Linux, macOS (amd64/arm64), FreeBSD, NetBSD, OpenBSD, Solaris
#
# Environment variables:
# HACKNEY_QUIC_BUILDOPTS - Additional build options (e.g., -j4)
#
set -e
# Check if QUIC dependencies are available (lsquic + BoringSSL in c_src/)
if [ ! -d "c_src/lsquic" ] || [ ! -d "c_src/boringssl" ]; then
echo "ERROR: QUIC dependencies not found (c_src/lsquic or c_src/boringssl missing)"
echo "The lsquic and boringssl libraries should be vendored in c_src/"
exit 1
fi
# Check if cmake was configured
if [ ! -d "_build/cmake" ]; then
echo "CMake not configured. Run do_cmake.sh first."
exit 1
fi
cd _build/cmake
# Find cmake
if type cmake3 > /dev/null 2>&1 ; then
CMAKE=cmake3
else
CMAKE=cmake
fi
# Detect number of CPU cores for parallel build
# Works on: Linux, macOS, FreeBSD, NetBSD, OpenBSD, Solaris
get_cores() {
# Try sysctl first (macOS, FreeBSD, NetBSD, OpenBSD)
CORES=$(sysctl -n hw.ncpu 2>/dev/null) && [ -n "$CORES" ] && echo "$CORES" && return
# Try nproc (Linux, some BSDs)
CORES=$(nproc 2>/dev/null) && [ -n "$CORES" ] && echo "$CORES" && return
# Try /proc/cpuinfo (Linux)
if [ -f /proc/cpuinfo ]; then
CORES=$(grep -c '^processor' /proc/cpuinfo 2>/dev/null)
[ -n "$CORES" ] && echo "$CORES" && return
fi
# Try getconf (POSIX, Solaris)
CORES=$(getconf _NPROCESSORS_ONLN 2>/dev/null) && [ -n "$CORES" ] && echo "$CORES" && return
# Try psrinfo (Solaris)
CORES=$(psrinfo 2>/dev/null | wc -l) && [ -n "$CORES" ] && [ "$CORES" -gt 0 ] && echo "$CORES" && return
# Fallback
echo "4"
}
# Build
case "$@" in
*-j*)
# User specified parallelism
echo "Building hackney QUIC NIF..."
${CMAKE} --build . -- "$@" || exit 1
;;
*)
CORES=$(get_cores)
echo "Building hackney QUIC NIF with $CORES parallel jobs..."
${CMAKE} --build . -- -j${CORES} $@ || exit 1
;;
esac
echo "Build done."
# Verify output
if [ -f "../../priv/hackney_quic.so" ] || [ -f "../../priv/hackney_quic.dylib" ]; then
echo "NIF built successfully: priv/hackney_quic.*"
else
echo "Warning: NIF output not found in priv/"
fi