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>