diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/libyaml.spec b/libyaml.spec index d1a601e..5bf1f66 100644 --- a/libyaml.spec +++ b/libyaml.spec @@ -1,8 +1,15 @@ +%global with_mingw 0 + +%if 0%{?fedora} +%global with_mingw 1 +%endif + Name: libyaml Version: 0.2.5 -Release: 6%{?dist} +Release: 17%{?dist} Summary: YAML 1.1 parser and emitter written in C +# SPDX License: MIT URL: https://github.com/yaml/libyaml Source0: https://github.com/yaml/libyaml/releases/download/%{version}/yaml-%{version}.tar.gz @@ -14,6 +21,13 @@ BuildRequires: gcc BuildRequires: libtool BuildRequires: make +%if %{with_mingw} +BuildRequires: mingw32-filesystem >= 95 +BuildRequires: mingw32-gcc-c++ +BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw64-gcc-c++ +%endif + %description YAML is a data serialization format designed for human readability and interaction with scripting languages. LibYAML is a YAML parser and @@ -24,23 +38,61 @@ emitter written in C. Summary: Development files for LibYAML applications Requires: libyaml%{?_isa} = %{version}-%{release}, pkgconfig +# docs contain files generated by doxygen which are licensed as follows: +# dynsections.js and menu.js are GPL-2.0-or-later +# jquery.js is MIT +License: GPL-2.0-or-later AND MIT %description devel The %{name}-devel package contains libraries and header files for developing applications that use LibYAML. +%if %{with_mingw} +%package -n mingw32-libyaml +Summary: MinGW YAML 1.1 parser and emitter written in C +BuildArch: noarch + +%description -n mingw32-libyaml +YAML is a data serialization format designed for human readability and +interaction with scripting languages. LibYAML is a YAML parser and +emitter written in C. + +%package -n mingw64-libyaml +Summary: MinGW YAML 1.1 parser and emitter written in C +BuildArch: noarch + +%description -n mingw64-libyaml +YAML is a data serialization format designed for human readability and +interaction with scripting languages. LibYAML is a YAML parser and +emitter written in C. +%endif %prep %setup -q -n yaml-%{version} %build +%define _configure ../configure +mkdir build +pushd build %configure %make_build all html +popd +%if %{with_mingw} +%mingw_configure +%mingw_make_build +%endif %install +pushd build %make_install +popd + +%if %{with_mingw} +%mingw_make_install +%endif + rm -f %{buildroot}%{_libdir}/*.{la,a} soname=$(readelf -d %{buildroot}%{_libdir}/libyaml.so | awk '$2 == "(SONAME)" {print $NF}' | tr -d '[]') @@ -49,8 +101,9 @@ echo "INPUT($soname)" > %{buildroot}%{_libdir}/libyaml.so %check +pushd build make check - +popd %ldconfig_scriptlets @@ -68,7 +121,59 @@ make check %{_includedir}/yaml.h +%if %{with_mingw} +%files -n mingw32-libyaml +%license License +%{mingw32_bindir}/libyaml-0-2.dll +%{mingw32_includedir}/yaml.h +%{mingw32_libdir}/libyaml.a +%{mingw32_libdir}/libyaml.dll.a +%{mingw32_libdir}/pkgconfig/yaml-0.1.pc + +%files -n mingw64-libyaml +%license License +%{mingw64_bindir}/libyaml-0-2.dll +%{mingw64_includedir}/yaml.h +%{mingw64_libdir}/libyaml.a +%{mingw64_libdir}/libyaml.dll.a +%{mingw64_libdir}/pkgconfig/yaml-0.1.pc +%endif + + %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 0.2.5-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 17 2025 Fedora Release Engineering - 0.2.5-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jul 18 2024 Fedora Release Engineering - 0.2.5-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu Jan 25 2024 Fedora Release Engineering - 0.2.5-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 0.2.5-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 26 2023 Marc-André Lureau - 0.2.5-12 +- Add MinGW packages. + +* Thu Jul 20 2023 Fedora Release Engineering - 0.2.5-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed May 17 2023 Karolina Surma - 0.2.5-10 +- Review the license tag according to the SPDX standard, declare the docs license + +* Thu Jan 19 2023 Fedora Release Engineering - 0.2.5-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Fedora Release Engineering - 0.2.5-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 0.2.5-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Thu Jul 22 2021 Fedora Release Engineering - 0.2.5-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild diff --git a/plan.fmf b/plan.fmf new file mode 100644 index 0000000..e6427de --- /dev/null +++ b/plan.fmf @@ -0,0 +1,4 @@ +discover: + how: fmf +execute: + how: tmt diff --git a/tests/smoke/main.fmf b/tests/smoke/main.fmf new file mode 100644 index 0000000..0331d09 --- /dev/null +++ b/tests/smoke/main.fmf @@ -0,0 +1,12 @@ +summary: Run examples +description: | + Runs simple examples which already caused problems while fixing CVE. + run-parser is taken from the source +component: + - libyaml +test: ./runtest.sh +framework: beakerlib +require: + - libyaml-devel + - gcc +duration: 5m diff --git a/tests/smoke/regression_1033990.yaml b/tests/smoke/regression_1033990.yaml new file mode 100644 index 0000000..6f25454 --- /dev/null +++ b/tests/smoke/regression_1033990.yaml @@ -0,0 +1,4 @@ +%YAML 1.1 +--- +{Backoff: 1} +... diff --git a/tests/smoke/regression_1063866.yaml b/tests/smoke/regression_1063866.yaml new file mode 100644 index 0000000..68f23a0 --- /dev/null +++ b/tests/smoke/regression_1063866.yaml @@ -0,0 +1,6 @@ +%YAML 1.1 +--- # Indented Block + name: John Smith + age: 33 +--- # Inline Block +{name: John Smith, age: 33} diff --git a/tests/smoke/run-parser.c b/tests/smoke/run-parser.c new file mode 100644 index 0000000..1303112 --- /dev/null +++ b/tests/smoke/run-parser.c @@ -0,0 +1,63 @@ +#include + +#include +#include + +#ifdef NDEBUG +#undef NDEBUG +#endif +#include + +int +main(int argc, char *argv[]) +{ + int number; + + if (argc < 2) { + printf("Usage: %s file1.yaml ...\n", argv[0]); + return 0; + } + + for (number = 1; number < argc; number ++) + { + FILE *file; + yaml_parser_t parser; + yaml_event_t event; + int done = 0; + int count = 0; + int error = 0; + + printf("[%d] Parsing '%s': ", number, argv[number]); + fflush(stdout); + + file = fopen(argv[number], "rb"); + assert(file); + + assert(yaml_parser_initialize(&parser)); + + yaml_parser_set_input_file(&parser, file); + + while (!done) + { + if (!yaml_parser_parse(&parser, &event)) { + error = 1; + break; + } + + done = (event.type == YAML_STREAM_END_EVENT); + + yaml_event_delete(&event); + + count ++; + } + + yaml_parser_delete(&parser); + + assert(!fclose(file)); + + printf("%s (%d events)\n", (error ? "FAILURE" : "SUCCESS"), count); + } + + return 0; +} + diff --git a/tests/smoke/runtest.sh b/tests/smoke/runtest.sh new file mode 100755 index 0000000..e1540ed --- /dev/null +++ b/tests/smoke/runtest.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/libyaml/Sanity/smoke +# Description: What the test does +# Author: Lukas Zachar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2014 Red Hat, Inc. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartTest + rlRun "gcc -O2 -Wall -W -g run-parser.c -lyaml -o run-parser" + rlRun "./run-parser regression_1063866.yaml" + rlRun "./run-parser regression_1033990.yaml" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd