From c59814f0dc83632a94e5142924708cb2e3cec5e4 Mon Sep 17 00:00:00 2001 From: YellowJacketLinux Date: Thu, 27 Apr 2023 07:29:58 -0700 Subject: [PATCH] links and dep chain to build it --- SOURCES/libevent-2.1.12-libressl.patch | 13 ++ SOURCES/yjl-lfs-macros-11.3 | 3 + SPECS/CMake.spec | 89 +++++++++++++ SPECS/brotli.spec | 165 +++++++++++++++++++++++++ SPECS/libevent.spec | 113 +++++++++++++++++ SPECS/libuv.spec | 71 +++++++++++ SPECS/links.spec | 68 ++++++++++ SPECS/nghttp2.spec | 71 +++++++++++ 8 files changed, 593 insertions(+) create mode 100644 SOURCES/libevent-2.1.12-libressl.patch create mode 100644 SPECS/CMake.spec create mode 100644 SPECS/brotli.spec create mode 100644 SPECS/libevent.spec create mode 100644 SPECS/libuv.spec create mode 100644 SPECS/links.spec create mode 100644 SPECS/nghttp2.spec diff --git a/SOURCES/libevent-2.1.12-libressl.patch b/SOURCES/libevent-2.1.12-libressl.patch new file mode 100644 index 0000000..c0298e5 --- /dev/null +++ b/SOURCES/libevent-2.1.12-libressl.patch @@ -0,0 +1,13 @@ +diff -ur libevent-2.1.12-stable.orig/openssl-compat.h libevent-2.1.12-stable/openssl-compat.h +--- libevent-2.1.12-stable.orig/openssl-compat.h 2020-07-05 05:01:34.000000000 -0700 ++++ libevent-2.1.12-stable/openssl-compat.h 2023-04-27 05:16:39.182136717 -0700 +@@ -40,7 +40,8 @@ + #endif /* (OPENSSL_VERSION_NUMBER < 0x10100000L) || \ + (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20700000L) */ + +-#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L ++#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L && \ ++ LIBRESSL_VERSION_NUMBER < 0x30500000L + #define BIO_get_init(b) (b)->init + #endif + diff --git a/SOURCES/yjl-lfs-macros-11.3 b/SOURCES/yjl-lfs-macros-11.3 index c041fdd..ef2ef91 100644 --- a/SOURCES/yjl-lfs-macros-11.3 +++ b/SOURCES/yjl-lfs-macros-11.3 @@ -8,4 +8,7 @@ # Many (most?) distros use /{,usr/}sbin for install-info %insinfo %{_bindir}/install-info +# Most distros use OpenSSL for the OpenSSL API +%libresslAPI true + ####### End Yellow Jacket GNU/Linux Specific Macros diff --git a/SPECS/CMake.spec b/SPECS/CMake.spec new file mode 100644 index 0000000..c767117 --- /dev/null +++ b/SPECS/CMake.spec @@ -0,0 +1,89 @@ +%global cmakev 3.26 + +Name: CMake +Version: %{cmakev}.3 +Release: %{?repo}0.rc1%{?dist} +Summary: Tools to build and test software + +Group: Development/Utilities +License: BSD-3-Clause +URL: https://cmake.org/ +Source0: https://github.com/Kitware/CMake/releases/download/v%{version}/cmake-%{version}.tar.gz + +BuildRequires: expat-devel +BuildRequires: gmp-devel +BuildRequires: libacl-devel +BuildRequires: libarchive-devel +BuildRequires: libattr-devel +BuildRequires: libbz2-devel +BuildRequires: libcurl-devel +BuildRequires: libffi-devel +BuildRequires: libgnutls-devel +BuildRequires: libhogweed-devel +BuildRequires: liblzma-devel +BuildRequires: libnettle-devel +BuildRequires: libp11-kit-devel +BuildRequires: libressl-devel +BuildRequires: libstdc++-devel +BuildRequires: libtasn1-devel +BuildRequires: libunistring-devel +BuildRequires: libuv-devel +BuildRequires: libxml2-devel +BuildRequires: libzstd-devel +BuildRequires: ncurses-devel +BuildRequires: nghttp2-devel +BuildRequires: zlib-devel + +#Requires: + +%description +CMake is used to control the software compilation process using simple +platform and compiler independent configuration files, and generate +native makefiles and workspaces that can be used in the compiler +environment of your choice. + + +%prep +%setup -n cmake-%{version} +sed -i '/"lib64"/s/64//' Modules/GNUInstallDirs.cmake + +%build +./bootstrap --prefix=%{_prefix} \ + --system-libs \ + --mandir=%{_mandir} \ + --no-system-jsoncpp \ + --no-system-librhash +make %{?_smp_mflags} + + +%install +make install DESTDIR=%{buildroot} + +rm -rf %{buildroot}%{_prefix}/doc + +mkdir -p rpmdoc/cmlibrhash +cp -p Utilities/cmlibrhash/COPYING rpmdoc/cmlibrhash/ +mkdir -p rpmdoc/cmsys +cp -p Source/kwsys/Copyright.txt rpmdoc/cmsys/ + + +%files +%defattr(-,root,root,-) +%attr(0755,root,root) %{_bindir}/ccmake +%attr(0755,root,root) %{_bindir}/cmake +%attr(0755,root,root) %{_bindir}/cpack +%attr(0755,root,root) %{_bindir}/ctest +%attr(0644,root,root) %{_datadir}/aclocal/cmake.m4 +%attr(0644,root,root) %{_datadir}/bash-completion/completions/cmake +%attr(0644,root,root) %{_datadir}/bash-completion/completions/cpack +%attr(0644,root,root) %{_datadir}/bash-completion/completions/ctest +%{_datadir}/cmake-%{cmakev} +%attr(0644,root,root) %{_datadir}/emacs/site-lisp/cmake-mode.el +%attr(0644,root,root) %{_datadir}/vim/vimfiles/indent/cmake.vim +%attr(0644,root,root) %{_datadir}/vim/vimfiles/syntax/cmake.vim +%license Copyright.txt Licenses +%doc Copyright.txt rpmdoc/cmlibrhash rpmdoc/cmsys + +%changelog +Wed Apr 26 2023 Michael A. Peters - 3.26.3-0.rc1 +- Initial spec file for YJL (RPM bootstrapping LFS/BLFS 11.3) diff --git a/SPECS/brotli.spec b/SPECS/brotli.spec new file mode 100644 index 0000000..dedd51c --- /dev/null +++ b/SPECS/brotli.spec @@ -0,0 +1,165 @@ +%if 0%{!?__pip3:1} == 1 +%global __pip3 %{_bindir}/pip3 +%endif + +Name: brotli +Version: 1.0.9 +Release: %{?repo}0.rc1%{?dist} +Summary: lossless compression algorithm + +Group: System Environment/Utilities +License: MIT +URL: https://github.com/google/brotli +Source0: https://github.com/google/brotli/archive/v%{version}/brotli-%{version}.tar.gz + +BuildRequires: %{_bindir}/cmake +BuildRequires: python3-devel +BuildRequires: %{__pip3} +Requires: %{name}-libs = %{version}-%{release} + +%description +Brotli is a generic-purpose lossless compression algorithm that +compresses data using a combination of a modern variant of the LZ77 +algorithm, Huffman coding and 2nd order context modeling, with a +compression ratio comparable to the best currently available general- +purpose compression methods. It is similar in speed with deflate but +offers more dense compression. + +The specification of the Brotli Compressed Data Format is defined in +RFC 7932. + +%package libs +Group: System Environment/Libraries +Summary: %{name} shared libraries + +%description libs +This package contains the libbrotlicommon, libbrotlidec, and libbrotlienc +shared libraries. + +%package devel +Group: Development/Libraries +Summary: %{name} development files +Requires: %{name}-libs = %{version}-%{release} + +%description devel +This package contains the headers files needed to compile software +that links against the libbrotlicommon, libbrotlidec, and libbrotlienc +libraries. + +%package static +Group: Development/Libraries +Summary: %{name} static libraries +Requires: %{name}-devel = %{version}-%{release} + +%description static +This package contains the libbrotlicommon-, libbrotlidec-, and +libbrotlienc-static.a static libraries. + +%package -n python3-%{name} +Group: System Environment/Libraries +Summary: Python3 PIP module +Requires: %{name}-libs = %{version}-%{release} +%if 0%{?python3_ABI:1} == 1 +Requires: %{python3_ABI} +%endif + +%description -n python3-%{name} +This package contains the Python3 bindings for %{name} + +%prep +%setup -q +sed -i 's@-R..libdir.@@' scripts/*.pc.in + +%build +mkdir out +cd out +%{_bindir}/cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + .. +make %{?_smp_mflags} +cd .. +%{__pip3} wheel -w dist --no-build-isolation --no-deps $PWD + +%install +cd out +make install DESTDIR=%{buildroot} +cd .. +pip3 install --no-index \ + --find-links dist \ + --no-cache-dir \ + --no-user \ + --target=%{buildroot}%{python3_sitelib} \ + Brotli + +install -m755 -d %{buildroot}%{_mandir}/man1 +install -m755 -d %{buildroot}%{_mandir}/man3 +install -m644 docs/brotli.1 %{buildroot}%{_mandir}/man1/ +install -m644 docs/constants.h.3 %{buildroot}%{_mandir}/man3/brotli-constants.h.3 +install -m644 docs/decode.h.3 %{buildroot}%{_mandir}/man3/brotli-decode.h.3 +install -m644 docs/encode.h.3 %{buildroot}%{_mandir}/man3/brotli-encode.h.3 +install -m644 docs/types.h.3 %{buildroot}%{_mandir}/man3/brotli-types.h.3 + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%attr(0755,root,root) %{_bindir}/brotli +%attr(0644,root,root) %{_mandir}/man1/brotli.1* +%license LICENSE +%doc LICENSE README + +%files libs +%defattr(-,root,root,-) +%attr(0755,root,root) %{_libdir}/libbrotlicommon.so.1.0.9 +%{_libdir}/libbrotlicommon.so.1 +%attr(0755,root,root) %{_libdir}/libbrotlidec.so.1.0.9 +%{_libdir}/libbrotlidec.so.1 +%attr(0755,root,root) %{_libdir}/libbrotlienc.so.1.0.9 +%{_libdir}/libbrotlienc.so.1 +%license LICENSE +%doc LICENSE README + +%files devel +%defattr(-,root,root,-) +%dir %{_includedir}/%{name} +%attr(0644,root,root) %{_includedir}/%{name}/*.h +%{_libdir}/libbrotlicommon.so +%{_libdir}/libbrotlidec.so +%{_libdir}/libbrotlienc.so +%attr(0644,root,root) %{_mandir}/man3/brotli-constants.h.3* +%attr(0644,root,root) %{_mandir}/man3/brotli-decode.h.3* +%attr(0644,root,root) %{_mandir}/man3/brotli-encode.h.3* +%attr(0644,root,root) %{_mandir}/man3/brotli-types.h.3* +%attr(0644,root,root) %{_libdir}/pkgconfig/*.pc +%license LICENSE +%doc LICENSE README + +%files static +%defattr(-,root,root) +%attr(0644,root,root) %{_libdir}/libbrotlicommon-static.a +%attr(0644,root,root) %{_libdir}/libbrotlidec-static.a +%attr(0644,root,root) %{_libdir}/libbrotlienc-static.a +%license LICENSE +%doc LICENSE README + +%files -n python3-%{name} +%defattr(-,root,root,-) +%dir %{python3_sitelib}/Brotli-%{version}.dist-info +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/INSTALLER +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/LICENSE +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/METADATA +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/RECORD +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/REQUESTED +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/WHEEL +%attr(0644,root,root) %{python3_sitelib}/Brotli-%{version}.dist-info/top_level.txt +%attr(0644,root,root) %{python3_sitelib}/__pycache__/brotli.cpython-%{python3_nodots}.pyc +%attr(0755,root,root) %{python3_sitelib}/_brotli.cpython-%{python3_nodots}-%{python3_os_platform}.so +%attr(0644,root,root) %{python3_sitelib}/brotli.py +%license LICENSE +%doc LICENSE README + + +%changelog +* Thu Apr 27 2023 Michael A. Peters - 1.0.9-0.rc1 +- Initial spec file for YJL (RPM bootstrapping LFS/BLFS 11.3) diff --git a/SPECS/libevent.spec b/SPECS/libevent.spec new file mode 100644 index 0000000..d051268 --- /dev/null +++ b/SPECS/libevent.spec @@ -0,0 +1,113 @@ +%if 0%{?repo:1} == 1 +%if "%{repo}" == "1.core." +%global nodoxygen foo +%endif +%endif + +Name: libevent +Version: 2.1.12 +Release: %{?repo}0.rc1%{?dist} +Summary: An event notification library + +Group: System Environment/Libraries +License: BSD-3-Clause +URL: https://libevent.org/ +Source0: https://github.com/libevent/libevent/releases/download/release-%{version}-stable/libevent-%{version}-stable.tar.gz +# see https://github.com/libevent/libevent/pull/1227/files +Patch0: libevent-2.1.12-libressl.patch +%if 0%{?libresslAPI:1} == 1 +BuildRequires: libressl-devel +%else +BuildRequires: openssl-devel +%endif +%if 0%{!?nodoxygen:1} == 1 +BuildRequires: doxygen +%endif +#Requires: + +%description +The libevent API provides a mechanism to execute a callback function +when a specific event occurs on a file descriptor or after a timeout +has been reached. Furthermore, libevent also support callbacks due to +signals or regular timeouts. + +libevent is meant to replace the event loop found in event driven network +servers. An application just needs to call event_dispatch() and then +add or remove events dynamically without having to change the event loop. + +%package devel +Group: Development/Libraries +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} + +%description devel +This package contains the developer files needed to compile software +that links against %{name}. + +%prep +%setup -n %{name}-%{version}-stable +%patch 0 -p1 +%__sed -i 's/python/&3/' event_rpcgen.py + + +%build +%configure --disable-static +make %{?_smp_mflags} +%if 0%{!?nodoxygen:1} == 1 +doxygen Doxyfile +%endif + +%check +%if 0%{?runtests:1} == 1 +make check > %{name}-make.check.log 2>&1 +%else +echo "make test not run during package build." > %{name}-make.check.log +%endif + +%install +make install DESTDIR=%{buildroot} +%if 0%{!?nodoxygen:1} == 1 +mkdir -p rpmdoc/api +cp -v -R doxygen/html/* rpmdoc/api/ +%endif + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%attr(0755,root,root) %{_libdir}/libevent-2.1.so.7.0.1 +%{_libdir}/libevent-2.1.so.7 +%attr(0755,root,root) %{_libdir}/libevent_core-2.1.so.7.0.1 +%{_libdir}/libevent_core-2.1.so.7 +%attr(0755,root,root) %{_libdir}/libevent_extra-2.1.so.7.0.1 +%{_libdir}/libevent_extra-2.1.so.7 +%attr(0755,root,root) %{_libdir}/libevent_openssl-2.1.so.7.0.1 +%{_libdir}/libevent_openssl-2.1.so.7 +%attr(0755,root,root) %{_libdir}/libevent_pthreads-2.1.so.7.0.1 +%{_libdir}/libevent_pthreads-2.1.so.7 +%license LICENSE +%doc ChangeLog* LICENSE README.md +%doc %{name}-make.check.log + +%files devel +%defattr(-,root,root,-) +%attr(0755,root,root) %{_bindir}/event_rpcgen.py +%dir %{_includedir}/event2 +%attr(0644,root,root) %{_includedir}/event2/*.h +%attr(0644,root,root) %{_includedir}/*.h +%{_libdir}/libevent.so +%{_libdir}/libevent_core.so +%{_libdir}/libevent_extra.so +%{_libdir}/libevent_openssl.so +%{_libdir}/libevent_pthreads.so +%attr(0644,root,root) %{_libdir}/pkgconfig/*.pc +%license LICENSE +%doc ChangeLog* LICENSE README.md sample +%if 0%{!?nodoxygen:1} == 1 +%doc rpmdoc/api +%endif + +%changelog +* Thu Apr 27 Michael A. Peters - 2.1.12-0.rc1 +- Initial spec file for YJL (RPM bootstrapping LFS/BLFS 11.3) diff --git a/SPECS/libuv.spec b/SPECS/libuv.spec new file mode 100644 index 0000000..80c6d6c --- /dev/null +++ b/SPECS/libuv.spec @@ -0,0 +1,71 @@ +Name: libuv +Version: 1.44.2 +Release: %{?repo}0.rc1%{?dist} +Summary: asynchronous I/O library + +Group: System Environment/Libraries +License: MIT +URL: https://libuv.org/ +Source0: https://dist.libuv.org/dist/v%{version}/libuv-v%{version}.tar.gz + +#BuildRequires: +#Requires: + +%description +libuv is a multi-platform support library with a focus on asynchronous +I/O. It was primarily developed for use by Node.js, but it's also used +by Luvit, Julia, uvloop, and others. + +%package devel +Group: Development/Libraries +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} + +%description devel +This package includes the developer files needed to compile software +that links against the %{name} library. + + +%prep +%setup -n %{name}-v%{version} + + +%build +sh autogen.sh +%configure --disable-static +make %{?_smp_mflags} + + +%check +make check > %{name}-make.check.log 2>&1 + + +%install +make install DESTDIR=%{buildroot} + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%attr(0755,root,root) %{_libdir}/libuv.so.1.0.0 +%{_libdir}/libuv.so.1 +%license LICENSE LICENSE-docs +%doc AUTHORS LICENSE ChangeLog *.md +%doc %{name}-make.check.log + +%files devel +%defattr(-,root,root,-) +%attr(0644,root,root) %{_includedir}/uv.h +%dir %{_includedir}/uv +%attr(0644,root,root) %{_includedir}/uv/*.h +%{_libdir}/libuv.so +%attr(0644,root,root) %{_libdir}/pkgconfig/libuv.pc +%license LICENSE LICENSE-docs +%doc AUTHORS LICENSE LICENSE-docs ChangeLog *.md docs + + + +%changelog +* Wed Apr 26 2023 Michael A. Peters - 1.44.2-0.rc1 +- Initial spec file for YJL (RPM bootstrapping LFS/BLFS 11.3) diff --git a/SPECS/links.spec b/SPECS/links.spec new file mode 100644 index 0000000..2a9372c --- /dev/null +++ b/SPECS/links.spec @@ -0,0 +1,68 @@ +%if 0%{?repo:1} == 1 +%if "%{repo}" == "1.core." +%global nofullgui foo +%endif +%endif + + +Name: links +Version: 2.29 +Release: %{?repo}0.rc1%{?dist} +Summary: Console HTTP/2 Web Browser + +Group: Applications/Internet +License: GPL-2.0-or-later +URL: http://links.twibright.com/ +Source0: http://links.twibright.com/download/links-%{version}.tar.bz2 + +BuildRequires: brotli-devel +BuildRequires: libbz2-devel +BuildRequires: libevent-devel +BuildRequires: liblzma-devel +BuildRequires: libzstd-devel +BuildRequires: ncurses-devel +%if 0%{?libresslAPI:1} == 1 +BuildRequires: libressl-devel +%else +BuildRequires: openssl-devel +%endif +BuildRequires: GPM-devel +%if 0%{!?nofullgui:1} == 1 +BuildRequires: SVGAlib-devel +BuildRequires: DirectFB-devel +BuildRequires: libpng-devel > 1.2.18 +BuildRequires: libjpeg-turbo-devel +BuildRequires: librsvg-devel +BuildRequires: libtiff-devel +%endif +#Requires: + +%description +Links is a simple web browser that can run either in a console or in a graphical mode. + +%prep +%setup -q + + +%build +%configure +make %{?_smp_mflags} + + +%install +make install DESTDIR=%{buildroot} + + +%files +%defattr(-,root,root,-) +%attr(0755,root,root) %{_bindir}/links +%attr(0644,root,root) %{_mandir}/man1/links.1* +%license COPYING +%doc AUTHORS BRAILLE_HOWTO COPYING ChangeLog KEYS NEWS README SITES +%doc Links_logo.png doc/links_cal + + + +%changelog +* Thu Apr 27 2034 Michael A. Peters - 2.29-0.rc1 +- Initial spec file for YJL (RPM bootstrapping LFS/BLFS 11.3) diff --git a/SPECS/nghttp2.spec b/SPECS/nghttp2.spec new file mode 100644 index 0000000..0f52f41 --- /dev/null +++ b/SPECS/nghttp2.spec @@ -0,0 +1,71 @@ +Name: nghttp2 +Version: 1.52.0 +Release: %{?repo}0.rc1%{?dist} +Summary: HTTP/2 C Library + +Group: System Environment/Libraries +License: MIT +URL: https://nghttp2.org/ +Source0: https://github.com/nghttp2/nghttp2/releases/download/v1.52.0/nghttp2-%{version}.tar.xz + +#BuildRequires: libxml2-devel +#Requires: + +%description +nghttp2 is an implementation of HTTP/2 and its header compression +algorithm HPACK in C. + +The framing layer of HTTP/2 is implemented as a form of reusable C +library. On top of that, we have implemented HTTP/2 client, server and +proxy. We have also developed load test and benchmarking tool for HTTP/2. + +%package devel +Group: Development/Libraries +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} + +%description devel +This package provides the files needed to compile software that links +against the %{name} library. + +%prep +%setup -q + + +%build +%configure \ + --disable-static \ + --enable-lib-only +make %{?_smp_mflags} + + +%install +make install DESTDIR=%{buildroot} +rm -rf %{buildroot}%{_datadir}/doc/nghttp2 + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%attr(0755,root,root) %{_libdir}/libnghttp2.so.14.24.1 +%{_libdir}/libnghttp2.so.14 +%attr(0644,root,root) %{_mandir}/man1/*.1* +%dir %{_datadir}/nghttp2 +%attr(0755,root,root) %{_datadir}/nghttp2/fetch-ocsp-response +%license COPYING +%doc AUTHORS COPYING ChangeLog README.rst + +%files devel +%defattr(-,root,root,-) +%dir %{_includedir}/nghttp2 +%attr(0644,root,root) %{_includedir}/nghttp2/*.h +%{_libdir}/libnghttp2.so +%{_libdir}/pkgconfig/libnghttp2.pc +%license COPYING +%doc AUTHORS COPYING ChangeLog README.rst examples + + +%changelog +* Wed Apr 26 2023 Michael A. Peters - 1.52.0-0.rc1 +- Initial spec file for YJL (RPM bootstrapping LFS/BLFS 11.3)