commit:     56e6e1b83e5f1b39393aa6b9caae2b500ee49786
Author:     Okamura Kazuya <gentoo-guru <AT> danceylove <DOT> net>
AuthorDate: Thu Jul  6 16:16:00 2023 +0000
Commit:     Okamura Kazuya <trakrailysurely <AT> danceylove <DOT> net>
CommitDate: Thu Jul  6 16:16:00 2023 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=56e6e1b8

dev-libs/lsquic: new package, add 3.2.0

Signed-off-by: Okamura Kazuya <gentoo-guru <AT> danceylove.net>

 .../files/lsquic-disable-build-deps-libs.patch     |  57 ++++++++
 .../files/lsquic-link-boringssl-static-libs.patch  | 152 +++++++++++++++++++++
 dev-libs/lsquic/lsquic-3.2.0.ebuild                |  54 ++++++++
 dev-libs/lsquic/metadata.xml                       |  11 ++
 4 files changed, 274 insertions(+)

diff --git a/dev-libs/lsquic/files/lsquic-disable-build-deps-libs.patch 
b/dev-libs/lsquic/files/lsquic-disable-build-deps-libs.patch
new file mode 100644
index 000000000..1f8f2ce97
--- /dev/null
+++ b/dev-libs/lsquic/files/lsquic-disable-build-deps-libs.patch
@@ -0,0 +1,57 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 984f38f..4c7b181 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -268,7 +268,7 @@ ELSE()
+     MESSAGE(STATUS "zlib not found")
+ ENDIF()
+ 
+-SET(LIBS lsquic ${BORINGSSL_LIB_ssl} ${BORINGSSL_LIB_crypto} ${ZLIB_LIB} 
${LIBS})
++SET(LIBS lsquic ls-hpack ls-qpack ${BORINGSSL_LIB_ssl} 
${BORINGSSL_LIB_crypto} ${ZLIB_LIB} ${LIBS})
+ 
+ IF (LSQUIC_BIN)
+     FIND_PATH(EVENT_INCLUDE_DIR NAMES event2/event.h)
+diff --git a/src/liblsquic/CMakeLists.txt b/src/liblsquic/CMakeLists.txt
+index fe6307e..be9a432 100644
+--- a/src/liblsquic/CMakeLists.txt
++++ b/src/liblsquic/CMakeLists.txt
+@@ -1,6 +1,5 @@
+ # Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc.  See LICENSE.
+ SET(lsquic_STAT_SRCS
+-    ls-qpack/lsqpack.c
+     lsquic_adaptive_cc.c
+     lsquic_alarmset.c
+     lsquic_arr.c
+@@ -91,18 +90,13 @@ IF(NOT MSVC)
+     IF (HAS_NO_IMPLICIT_FALLTHROUGH)
+         SET(QPACK_FLAGS "${QPACK_FLAGS} -Wno-implicit-fallthrough")
+     ENDIF()
+-set_source_files_properties(ls-qpack/lsqpack.c PROPERTIES COMPILE_FLAGS 
${QPACK_FLAGS})
+ ENDIF()
+ 
+-include_directories(ls-qpack)
+-
+ IF(PROJECT_NAME STREQUAL "openlitespeed")
+     INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/spdy)
+ ELSE()
+-    INCLUDE_DIRECTORIES(../lshpack)
+     SET(lsquic_STAT_SRCS ${lsquic_STAT_SRCS}
+         lsquic_xxhash.c
+-        ../lshpack/lshpack.c
+     )
+ ENDIF()
+ 
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index fab22d3..06c39b3 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -17,9 +17,6 @@ ELSE()
+     ENDIF()
+ ENDIF()
+ 
+-include_directories(../src/liblsquic/ls-qpack)
+-INCLUDE_DIRECTORIES(../src/lshpack)
+-
+ SET(TESTS
+     ack
+     ackgen_gquic_be

diff --git a/dev-libs/lsquic/files/lsquic-link-boringssl-static-libs.patch 
b/dev-libs/lsquic/files/lsquic-link-boringssl-static-libs.patch
new file mode 100644
index 000000000..868accf29
--- /dev/null
+++ b/dev-libs/lsquic/files/lsquic-link-boringssl-static-libs.patch
@@ -0,0 +1,152 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4c7b181..723a075 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -152,77 +152,6 @@ ELSE()
+     ENDIF()
+ ENDIF()
+ 
+-IF (NOT DEFINED BORINGSSL_INCLUDE AND DEFINED BORINGSSL_DIR)
+-    FIND_PATH(BORINGSSL_INCLUDE NAMES openssl/ssl.h
+-                PATHS ${BORINGSSL_DIR}/include
+-                NO_DEFAULT_PATH)
+-ENDIF()
+-# This must be done before adding other include directories to take
+-# precedence over header files from other SSL installs.
+-
+-IF (BORINGSSL_INCLUDE)
+-    MESSAGE(STATUS "BoringSSL include directory ${BORINGSSL_INCLUDE}")
+-    INCLUDE_DIRECTORIES(${BORINGSSL_INCLUDE})
+-ELSE()
+-    MESSAGE(FATAL_ERROR "BoringSSL headers not found")
+-ENDIF()
+-
+-IF (NOT DEFINED BORINGSSL_LIB AND DEFINED BORINGSSL_DIR)
+-    FOREACH(LIB_NAME ssl crypto)
+-        IF (CMAKE_SYSTEM_NAME STREQUAL Windows)
+-            FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME}
+-                NAMES ${LIB_NAME}
+-                PATHS ${BORINGSSL_DIR}/${LIB_NAME}
+-              PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo
+-                NO_DEFAULT_PATH)
+-        ELSE()
+-            FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME}
+-                NAMES lib${LIB_NAME}${LIB_SUFFIX}
+-                PATHS ${BORINGSSL_DIR}/${LIB_NAME}
+-                NO_DEFAULT_PATH)
+-        ENDIF()
+-        IF(BORINGSSL_LIB_${LIB_NAME})
+-            MESSAGE(STATUS "Found ${LIB_NAME} library: 
${BORINGSSL_LIB_${LIB_NAME}}")
+-        ELSE()
+-            MESSAGE(STATUS "${LIB_NAME} library not found")
+-        ENDIF()
+-    ENDFOREACH()
+-
+-ELSE()
+-
+-
+-    FOREACH(LIB_NAME ssl crypto)
+-        # If BORINGSSL_LIB is defined, try find each lib. Otherwise, user 
should define BORINGSSL_LIB_ssl,
+-        # BORINGSSL_LIB_crypto and so on explicitly. For example, including 
boringssl and lsquic both via
+-        # add_subdirectory:
+-        #   add_subdirectory(third_party/boringssl)
+-        #   set(BORINGSSL_LIB_ssl ssl)
+-        #   set(BORINGSSL_LIB_crypto crypto)
+-        #   add_subdirectory(third_party/lsquic)
+-        IF (DEFINED BORINGSSL_LIB)
+-            IF (CMAKE_SYSTEM_NAME STREQUAL Windows)
+-                FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME}
+-                    NAMES ${LIB_NAME}
+-                    PATHS ${BORINGSSL_LIB}
+-                    PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo
+-                    NO_DEFAULT_PATH)
+-            ELSE()
+-                FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME}
+-                    NAMES lib${LIB_NAME}${LIB_SUFFIX}
+-                    PATHS ${BORINGSSL_LIB}
+-                    PATH_SUFFIXES ${LIB_NAME}
+-                    NO_DEFAULT_PATH)
+-            ENDIF()
+-        ENDIF()
+-        IF(BORINGSSL_LIB_${LIB_NAME})
+-            MESSAGE(STATUS "Found ${LIB_NAME} library: 
${BORINGSSL_LIB_${LIB_NAME}}")
+-        ELSE()
+-            MESSAGE(FATAL_ERROR "BORINGSSL_LIB_${LIB_NAME} library not found")
+-        ENDIF()
+-    ENDFOREACH()
+-
+-ENDIF()
+-
+ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
+ INCLUDE_DIRECTORIES(include)
+ IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL 
"Darwin")
+@@ -268,7 +197,7 @@ ELSE()
+     MESSAGE(STATUS "zlib not found")
+ ENDIF()
+ 
+-SET(LIBS lsquic ls-hpack ls-qpack ${BORINGSSL_LIB_ssl} 
${BORINGSSL_LIB_crypto} ${ZLIB_LIB} ${LIBS})
++SET(LIBS lsquic ls-hpack ls-qpack ssl crypto ${ZLIB_LIB} ${LIBS})
+ 
+ IF (LSQUIC_BIN)
+     FIND_PATH(EVENT_INCLUDE_DIR NAMES event2/event.h)
+diff --git a/src/liblsquic/CMakeLists.txt b/src/liblsquic/CMakeLists.txt
+index be9a432..0bc806d 100644
+--- a/src/liblsquic/CMakeLists.txt
++++ b/src/liblsquic/CMakeLists.txt
+@@ -1,4 +1,7 @@
+ # Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc.  See LICENSE.
++
++add_subdirectory(boringssl)
++
+ SET(lsquic_STAT_SRCS
+     lsquic_adaptive_cc.c
+     lsquic_alarmset.c
+@@ -83,6 +86,8 @@ SET(lsquic_STAT_SRCS
+     lsquic_version.c
+ )
+ 
++include_directories(boringssl/include)
++
+ IF(NOT MSVC)
+     SET(QPACK_FLAGS "-Wno-uninitialized")
+     INCLUDE(CheckCCompilerFlag)
+@@ -119,7 +124,7 @@ endif()
+ 
+ IF(LSQUIC_SHARED_LIB)
+   add_library(lsquic SHARED ${lsquic_STAT_SRCS})
+-  TARGET_LINK_LIBRARIES(lsquic PRIVATE ${BORINGSSL_LIB_ssl} 
${BORINGSSL_LIB_crypto} ${ZLIB_LIB})
++  TARGET_LINK_LIBRARIES(lsquic PRIVATE ssl crypto ${ZLIB_LIB})
+   IF(MSVC)
+     SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DLSQUIC_EXPORTS")
+   TARGET_LINK_LIBRARIES(lsquic PRIVATE ws2_32.lib)
+diff --git a/src/liblsquic/boringssl/CMakeLists.txt 
b/src/liblsquic/boringssl/CMakeLists.txt
+index aac5f0d..37cbfa3 100644
+--- a/src/liblsquic/boringssl/CMakeLists.txt
++++ b/src/liblsquic/boringssl/CMakeLists.txt
+@@ -3,6 +3,8 @@ cmake_minimum_required(VERSION 3.10)
+ # Defer enabling C and CXX languages.
+ project(BoringSSL NONE)
+ 
++set(BUILD_SHARED_LIBS OFF)
++
+ # Don't install BoringSSL to system directories by default; it has no stable
+ # ABI. Instead, default to an "install" directory under the source.
+ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+@@ -36,7 +38,7 @@ if(CMAKE_VERSION VERSION_LESS "3.14")
+ endif()
+ 
+ # Wrap the CMake install function so we can disable it.
+-set(INSTALL_ENABLED 1)
++set(INSTALL_ENABLED 0)
+ function(install_if_enabled)
+   if(INSTALL_ENABLED)
+     install(${ARGV})
+@@ -139,7 +141,7 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
+ if(CMAKE_COMPILER_IS_GNUCXX OR CLANG)
+   # Note clang-cl is odd and sets both CLANG and MSVC. We base our 
configuration
+   # primarily on our normal Clang one.
+-  set(C_CXX_FLAGS "-Werror -Wformat=2 -Wsign-compare 
-Wmissing-field-initializers -Wwrite-strings -Wvla -Wshadow -Wtype-limits")
++  set(C_CXX_FLAGS "-Wformat=2 -Wsign-compare -Wmissing-field-initializers 
-Wwrite-strings -Wvla -Wshadow -Wtype-limits")
+   if(MSVC)
+     # clang-cl sets different default warnings than clang. It also treats 
-Wall
+     # as -Weverything, to match MSVC. Instead -W3 is the alias for -Wall.

diff --git a/dev-libs/lsquic/lsquic-3.2.0.ebuild 
b/dev-libs/lsquic/lsquic-3.2.0.ebuild
new file mode 100644
index 000000000..01894c125
--- /dev/null
+++ b/dev-libs/lsquic/lsquic-3.2.0.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake git-r3
+
+DESCRIPTION="LiteSpeed QUIC (LSQUIC) Library"
+HOMEPAGE="https://github.com/litespeedtech/lsquic/";
+
+# LSQUIC
+EGIT_LSQUIC_REPO_URI="https://github.com/litespeedtech/lsquic/";
+EGIT_LSQUIC_COMMIT="3bbf683f25ab84826951350c57ae226c88c54422"
+EGIT_LSQUIC_CHECKOUT_DIR="${WORKDIR}/${P}/"
+
+# BoringSSL
+EGIT_BORINGSSL_REPO_URI="https://github.com/google/boringssl";
+EGIT_BORINGSSL_BRANCH="fips-20230428"
+EGIT_BORINGSSL_CHECKOUT_DIR="${WORKDIR}/${P}/src/liblsquic/boringssl"
+
+EGIT_SUBMODULES=()
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="bin static-libs test"
+
+DEPEND="
+       dev-libs/ls-qpack:=[static-libs=]
+       dev-libs/ls-hpack:=[static-libs=]
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-disable-build-deps-libs.patch
+       "${FILESDIR}"/${PN}-link-boringssl-static-libs.patch
+)
+
+src_unpack() {
+       # Checkout LSQUIC Sources
+       git-r3_fetch ${EGIT_LSQUIC_REPO_URI} ${EGIT_LSQUIC_COMMIT}
+       git-r3_checkout ${EGIT_LSQUIC_REPO_URI} ${EGIT_LSQUIC_CHECKOUT_DIR}
+       # Checkout BoringSSL Sources
+       git-r3_fetch ${EGIT_BORINGSSL_REPO_URI} ${EGIT_BORINGSSL_BRANCH}
+       git-r3_checkout ${EGIT_BORINGSSL_REPO_URI} 
${EGIT_BORINGSSL_CHECKOUT_DIR}
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DLSQUIC_SHARED_LIB=$(usex !static-libs)
+               -DLSQUIC_TESTS=$(usex test)
+               -DLSQUIC_BIN=$(usex bin)
+       )
+       cmake_src_configure
+}

diff --git a/dev-libs/lsquic/metadata.xml b/dev-libs/lsquic/metadata.xml
new file mode 100644
index 000000000..5813d666a
--- /dev/null
+++ b/dev-libs/lsquic/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+  <maintainer type="person">
+    <email>trakrailysur...@danceylove.net</email>
+    <name>Okamura Kazuya</name>
+  </maintainer>
+  <upstream>
+    <remote-id type="github">litespeedtech/lsquic</remote-id>
+  </upstream>
+</pkgmetadata>

Reply via email to