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/.gitignore b/.gitignore index 3a846ad..a79b177 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,9 @@ yaml-0.1.3.tar.gz /yaml-0.1.5.tar.gz /yaml-0.1.6.tar.gz /yaml-0.1.7.tar.gz +/yaml-0.2.1.tar.gz +/libyaml-0.2.2.tar.gz +/dist-0.2.3.tar.gz +/dist-0.2.4.tar.gz +/0.2.5.tar.gz +/yaml-0.2.5.tar.gz diff --git a/libyaml.spec b/libyaml.spec index 2835732..5bf1f66 100644 --- a/libyaml.spec +++ b/libyaml.spec @@ -1,17 +1,32 @@ -%define tarballname yaml +%global with_mingw 0 -#====================================================================# +%if 0%{?fedora} +%global with_mingw 1 +%endif Name: libyaml -Version: 0.1.7 -Release: 1%{?dist} +Version: 0.2.5 +Release: 17%{?dist} Summary: YAML 1.1 parser and emitter written in C -Group: System Environment/Libraries +# SPDX License: MIT -URL: http://pyyaml.org/ -Source0: http://pyyaml.org/download/libyaml/%{tarballname}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +URL: https://github.com/yaml/libyaml +Source0: https://github.com/yaml/libyaml/releases/download/%{version}/yaml-%{version}.tar.gz + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: doxygen +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 @@ -21,27 +36,63 @@ emitter written in C. %package devel Summary: Development files for LibYAML applications -Group: Development/Libraries -Requires: libyaml = %{version}-%{release}, pkgconfig +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 %{tarballname}-%{version} +%setup -q -n yaml-%{version} %build +%define _configure ../configure +mkdir build +pushd build %configure -make %{?_smp_mflags} +%make_build all html +popd +%if %{with_mingw} +%mingw_configure +%mingw_make_build +%endif %install -rm -rf %{buildroot} -make DESTDIR=%{buildroot} INSTALL="install -p" 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 '[]') @@ -50,36 +101,152 @@ echo "INPUT($soname)" > %{buildroot}%{_libdir}/libyaml.so %check +pushd build make check +popd - -%clean -rm -rf %{buildroot} - - -%post -p /sbin/ldconfig - - -%postun -p /sbin/ldconfig +%ldconfig_scriptlets %files -%defattr(-,root,root,-) -%{!?_licensedir:%global license %%doc} -%license LICENSE -%doc README +%license License +%doc ReadMe.md %{_libdir}/%{name}*.so.* %files devel -%defattr(-,root,root,-) %doc doc/html %{_libdir}/%{name}*.so %{_libdir}/pkgconfig/yaml-0.1.pc %{_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 + +* Tue Jan 26 2021 Fedora Release Engineering - 0.2.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Dec 1 2020 John Eckersberg - 0.2.5-4 +- Add BuildRequires for make + (re: https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot) + +* Tue Jul 28 2020 Fedora Release Engineering - 0.2.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Tom Stellard - 0.2.5-2 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Tue Jun 2 2020 John Eckersberg - 0.2.5-1 +- New upstream release (rhbz#1842769) + +* Sun Apr 19 2020 John Eckersberg - 0.2.4-1 +- New upstream release (rhbz#1825622) +- Fixes document end before directive (rhbz#1824226) + +* Mon Apr 13 2020 John Eckersberg - 0.2.3-1 +- New upstream release (rhbz#1823108) + +* Wed Jan 29 2020 Fedora Release Engineering - 0.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 0.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Mar 26 2019 John Eckersberg - 0.2.2-1 +- New upstream release (rhbz#1692750) + +* Tue Feb 5 2019 John Eckersberg - 0.2.1-5 +- Add patch: Revert removing of open_ended after top level plain scalar (rhbz#1672670) + +* Tue Feb 5 2019 John Eckersberg - 0.2.1-4 +- Add patch: Don't emit document-end marker at the end of stream (rhbz#1672670) + +* Fri Feb 01 2019 Fedora Release Engineering - 0.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Aug 7 2018 Jens Petersen - 0.2.1-2 +- rebuild against fixed binutils to fix missing symbols (#1613350) + +* Mon Jul 16 2018 John Eckersberg - 0.2.1-1 +- New upstream release 0.2.1 (rhbz#1598611) + +* Mon Jul 16 2018 John Eckersberg - 0.1.7-8 +- Add BuildRequires for gcc + See: https://fedoraproject.org/wiki/Changes/Remove_GCC_from_BuildRoot + +* Fri Jul 13 2018 Fedora Release Engineering - 0.1.7-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 0.1.7-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 0.1.7-5 +- Switch to %%ldconfig_scriptlets + +* Thu Aug 03 2017 Fedora Release Engineering - 0.1.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.1.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 0.1.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Mon Aug 29 2016 John Eckersberg - 0.1.7-1 - New upstream release 0.1.7 (RHBZ#1371154) 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/sources b/sources index 0bce782..b65aae2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -1abf45bd3a96374fa55ca63b32f9f2f9 yaml-0.1.7.tar.gz +SHA512 (yaml-0.2.5.tar.gz) = dadd7d8e0d88b5ebab005e5d521d56d541580198aa497370966b98c904586e642a1cd4f3881094eb57624f218d50db77417bbfd0ffdce50340f011e35e8c4c02 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