Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:iDesmI:jami
llhttp
llhttp.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File llhttp.spec of Package llhttp
# # spec file for package llhttp # # Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # # This package is rather exotic. The compiled library is a typical shared # library with a C API. However, it has only a tiny bit of C source code. Most # of the library is written in TypeScript, which is transpiled to C, via LLVM # IR, using llparse (https://github.com/nodejs/llparse)—all of which happens # within the NodeJS ecosystem. # # The package therefore “builds like” a NodeJS package, and to the extent they # are relevant we apply the NodeJS packaging guidelines. However, the result of # the build “installs like” a traditional C library package and has no NodeJS # dependencies, including bundled ones. # # Furthermore, the package is registered with npm as “llhttp”, but current # releases are not published there, so we use the GitHub archive as the # canonical source and use a custom bundler script based on # nodejs-packaging-bundler to fetch NodeJS build dependencies. # # Overall, we cherry-pick from the standard and NodeJS packaging guidelines as # each seems to best apply, understanding that this package does not fit well # into any of the usual patterns or templates. # # Note that there is now a “release” tarball, e.g. # https://github.com/nodejs/llhttp/archive/refs/tags/release/v%%{version}tar.gz, # that allows this package to be built without the NodeJS/TypeScript machinery. # However, the release archive lacks the original TypeScript source code for # the generated C code, which we would need to include in the source RPM as an # additional source even if we do not do the re-generation ourselves. Name: llhttp Version: 9.2.1 %global so_version 9.2 Release: 0 Summary: Port of http_parser to llparse # License of llhttp is (SPDX) MIT; nothing from the NodeJS dependency bundle is # installed, so its contents do not contribute to the license of the binary # RPMs, and we do not need a file llhttp-%%{version}-bundled-licenses.txt. License: MIT URL: https://github.com/nodejs/llhttp Source0: https://github.com/nodejs/llhttp/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz # Based closely on nodejs-packaging-bundler, except: # # - The GitHub source tarball specified in this spec file is used since the # current version is not typically published on npm # - No production dependency bundle is generated, since none is needed—and # therefore, no bundled licenses text file is generated either Source1: llhttp-packaging-bundler # Created with llhttp-packaging-bundler (Source1): Source2: llhttp-%{version}-nm-dev.tar.zst # While nothing in the dev bundle is installed, we still choose to audit for # null licenses at build time and to keep manually-approved exceptions in a # file. Source3: check-null-licenses Source4: audited-null-licenses.toml BuildRequires: zstd # For generating the C source “release” from TypeScript: BuildRequires: nodejs-devel BuildRequires: make # For compiling the C library BuildRequires: cmake BuildRequires: gcc # For tests BuildRequires: gcc-c++ # For check-null-licenses #BuildRequires: python3-devel #BuildRequires: python3-tomli %description This project is a port of http_parser to TypeScript. llparse is used to generate the output C source file, which could be compiled and linked with the embedder's program (like Node.js). %package devel Summary: Development files for llhttp Requires: %{name} = %{version} %description devel The llhttp-devel package contains libraries and header files for developing applications that use llhttp. %prep %autosetup # Remove build flags specifying ISA extensions not in the architectural # baseline from the test fixture setup. sed -r -i 's@([[:blank:]]*)(.*-m(sse4))@\1// \2@' test/fixtures/index.ts # We build the library that we install via release/CMakeLists.txt, but the # tests are built via Makefile targets. Don’t apply non-default optimization or # debug flags to the test executables. sed -r -i 's@ -[Og].\b@@g' Makefile # Set up bundled (dev) node modules required to generate the C sources from the # TypeScript sources. tar --zstd --extract --file='%{SOURCE2}' mkdir -p node_modules pushd node_modules ln -s ../node_modules_dev/* . ln -s ../node_modules_dev/.bin . popd # We run ts-node out of node_modules/.bin rather than using npx (which we will # not have available). sed -r -i 's@\bnpx[[:blank:]](ts-node)\b@node_modules/.bin/\1@' Makefile %build # Generate the C source “release” from TypeScript using the “node_modules_dev” # bundle. %make_build release RELEASE='%{version}' # To help prove that nothing from the bundled NodeJS dev dependencies is # included in the binary packages, remove the “node_modules” symlinks. rm -rvf node_modules cd release %cmake %cmake_build %install cd release %cmake_install #%%check ## Symlink the NodeJS bundle again so that we can test with Mocha #mkdir -p node_modules #pushd node_modules #ln -s ../node_modules_dev/* . #ln -s ../node_modules_dev/.bin . #popd ## Verify that no bundled dev dependency has a null license field, unless we ## already audited it by hand. This reduces the chance of accidentally including ## code with license problems in the source RPM. #python3 '%%{SOURCE3}' --exceptions '%%{SOURCE4}' --with dev node_modules_dev ## http-loose-request.c:7205:20: error: invalid conversion from 'void*' to ## 'const unsigned char*' [-fpermissive] ## 7205 | start = state->_span_pos0; ## | ~~~~~~~^~~~~~~~~~ ## | | ## | void* #export CXXFLAGS="${CXXFLAGS-} -fpermissive" #export CFLAGS="${CFLAGS-} -fpermissive" #export CLANG=gcc ## See scripts.test in package.json: #NODE_ENV=test node -r ts-node/register/type-check ./test/md-test.ts %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %license release/LICENSE-MIT %{_libdir}/libllhttp.so.%{so_version}{,.*} %files devel %doc release/README.md %{_includedir}/llhttp.h %{_libdir}/libllhttp.so %{_libdir}/pkgconfig/libllhttp.pc %{_libdir}/cmake/llhttp/ %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor