summary refs log tree commit diff
path: root/gnu/packages/high-availability.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/high-availability.scm')
-rw-r--r--gnu/packages/high-availability.scm53
1 files changed, 52 insertions, 1 deletions
diff --git a/gnu/packages/high-availability.scm b/gnu/packages/high-availability.scm
index 108ea553ef..35bb28786b 100644
--- a/gnu/packages/high-availability.scm
+++ b/gnu/packages/high-availability.scm
@@ -1,4 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -34,8 +36,10 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages hardware)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages lua)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages nss)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages rsync)
@@ -45,13 +49,60 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages)
   #:use-module (guix build-system gnu)
-  #:use-module (guix gexp)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module ((guix licenses)
                 #:prefix license:))
 
+(define-public haproxy
+  (package
+    (name "haproxy")
+    (version "2.7.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.haproxy.org/download/"
+                           (version-major+minor version)
+                           "/src/haproxy-" version ".tar.gz"))
+       (sha256
+        (base32 "0kxpvrn6iaxhw2f2hrxblns6pnxmrds3vvs9h6nwbkrzvdykagqk"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list
+      #:tests? #f  ; there are only regression tests, using varnishtest
+      #:make-flags
+      #~(list "LUA_LIB_NAME=lua"
+              "TARGET=linux-glibc"
+              "USE_LUA=1"
+              "USE_OPENSSL=1"
+              "USE_PCRE2=1"
+              "USE_PCRE2_JIT=1"
+              "USE_PROMEX=1"
+              "USE_ZLIB=1"
+              (string-append "CC=" #$(cc-for-target))
+              (string-append "DOCDIR=" #$output "/share/" #$name)
+              (string-append "LUA_INC=" #$(this-package-input "lua") "/include")
+              (string-append "LUA_LIB=" #$(this-package-input "lua") "/lib")
+              (string-append "PREFIX=" #$output))
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure))))
+    (inputs
+     (list lua openssl pcre2 zlib))
+    (home-page "https://www.haproxy.org/")
+    (synopsis "Reliable, high performance TCP/HTTP load balancer")
+    (description "HAProxy offers @acronym{HA, high availability}, load
+balancing, and proxying for TCP and HTTP-based applications.  It is particularly
+suited to Web sites crawling under very high loads while needing persistence or
+Layer 7 processing.  Supporting tens of thousands of connections is clearly
+realistic with today's hardware.")
+    (license (list license:gpl2+
+                   license:lgpl2.1
+                   license:lgpl2.1+))))
+
 (define-public libqb
   (package
     (name "libqb")