diff --git a/1.18.1.tar.gz b/1.18.1.tar.gz new file mode 100644 index 0000000..a835f93 Binary files /dev/null and b/1.18.1.tar.gz differ diff --git a/Count-CPUs-optimization.patch b/Count-CPUs-optimization.patch new file mode 100644 index 0000000..6d62bd3 --- /dev/null +++ b/Count-CPUs-optimization.patch @@ -0,0 +1,36 @@ +From 4c95895113d549b5b3b84fe1282fb13d9f5823a0 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Fri, 29 May 2020 17:22:35 +0200 +Subject: [PATCH 1/2] journal.sh: Count CPUs optimization + +--- + src/journal.sh | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +diff --git a/src/journal.sh b/src/journal.sh +index f7f2fbd..74dc525 100644 +--- a/src/journal.sh ++++ b/src/journal.sh +@@ -872,15 +872,10 @@ __INTERNAL_CreateHeader(){ + local line size + # CPU info + if [ -f "/proc/cpuinfo" ]; then +- local count=0 +- local type="unknown" +- local cpu_regex="^model\sname.*: (.*)$" +- while read -r line; do +- if [[ "$line" =~ $cpu_regex ]]; then +- type="${BASH_REMATCH[1]}" +- let count++ +- fi +- done < "/proc/cpuinfo" ++ local cpu_regex count type ++ cpu_regex="^model\sname.*: (.*)$" ++ count=$(grep -cE "$cpu_regex" /proc/cpuinfo) ++ type="$(grep -E -m 1 "$cpu_regex" /proc/cpuinfo | sed -r "s/$cpu_regex/\1/")" + __INTERNAL_WriteToMetafile hw_cpu -- "$count x $type" + __INTERNAL_LogText " CPUs : $count x $type" 2> /dev/null + fi +-- +2.25.4 + diff --git a/beakerlib-tmpfiles.conf b/beakerlib-tmpfiles.conf new file mode 100644 index 0000000..39ad78b --- /dev/null +++ b/beakerlib-tmpfiles.conf @@ -0,0 +1 @@ +x /var/tmp/beakerlib-* diff --git a/beakerlib.spec b/beakerlib.spec new file mode 100644 index 0000000..2f8bccb --- /dev/null +++ b/beakerlib.spec @@ -0,0 +1,83 @@ +Name: beakerlib +Summary: A shell-level integration testing library +Version: 1.18.1 +Release: 1 +License: GPLv2 +BuildArch: noarch +URL: https://github.com/%{name}/%{name} +Autoreq: 0 +Requires: nfs-utils +Requires: /bin/bash +Requires: /bin/sh +Recommends: /usr/bin/python3 +Recommends: /usr/bin/perl +Requires: grep sed iproute coreutils tar gzip +Requires: util-linux which dnf-utils +Requires: /usr/bin/bc /usr/bin/time +Requires: (wget or curl) +Suggests: wget +Recommends: python3-lxml +Recommends: /usr/bin/xmllint +Conflicts: beakerlib-redhat < 1-30 + +BuildRequires: /usr/bin/pod2man perl-generators util-linux + +Source0: https://github.com/beakerlib/beakerlib/archive/%{version}.tar.gz +Source1: %{name}-tmpfiles.conf + +Patch0: bugzilla-links.patch +Patch1: python3.patch +Patch2: Count-CPUs-optimization.patch +Patch3: enahanced-library-search.patch + +%package_help + +%prep +%autosetup -p1 -n %{name}-%{version} + +%build +make build + +%install +%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} +%{!?_tmpfilesdir: %global _tmpfilesdir %{_prefix}/lib/tmpfiles.d/} +rm -rf $RPM_BUILD_ROOT +make PKGDOCDIR=%{_pkgdocdir} DESTDIR=$RPM_BUILD_ROOT install +mkdir -p $RPM_BUILD_ROOT/%{_tmpfilesdir} +install -m 0644 %{SOURCE1} $RPM_BUILD_ROOT/%{_tmpfilesdir}/%{name}.conf + +%description +The BeakerLib project means to provide a library of various helpers, which +could be used when writing operating system level integration tests. + +%files +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}/xslt-templates +%{_datadir}/%{name}/dictionary.vim +%{_datadir}/%{name}/*.sh +%{_datadir}/%{name}/xslt-templates/* +%{_bindir}/%{name}-* +%config %{_tmpfilesdir}/%{name}.conf + +%package vim-syntax +Summary: Files for syntax highlighting BeakerLib tests in VIM editor +Requires: vim-common +BuildRequires: vim-common + +%description vim-syntax +Files for syntax highlighting BeakerLib tests in VIM editor + +%files vim-syntax +%{_datadir}/vim/vimfiles/after/ftdetect/beakerlib.vim +%{_datadir}/vim/vimfiles/after/syntax/beakerlib.vim + +%files help +%{_mandir}/man1/%{name}*1* +%dir %{_pkgdocdir} +%dir %{_pkgdocdir}/examples +%dir %{_pkgdocdir}/examples/* +%doc %{_pkgdocdir}/* + +%changelog +* Sat Aug 1 2020 zhangxingliang - 1.18.1-1 +- Package init diff --git a/beakerlib.yaml b/beakerlib.yaml new file mode 100644 index 0000000..45d6b25 --- /dev/null +++ b/beakerlib.yaml @@ -0,0 +1,4 @@ +version_control: github +src_repo: beakerlib/beakerlib +tag_prefix: ^ +seperator: . diff --git a/bugzilla-links.patch b/bugzilla-links.patch new file mode 100644 index 0000000..0053eb3 --- /dev/null +++ b/bugzilla-links.patch @@ -0,0 +1,19 @@ +diff --git a/src/beakerlib.sh b/src/beakerlib.sh +index 3355fa4..ceafc44 100644 +--- a/src/beakerlib.sh ++++ b/src/beakerlib.sh +@@ -274,10 +274,14 @@ https://github.com/beakerlib/beakerlib/wiki/man + + =item Issues list + ++https://bugzilla.redhat.com/buglist.cgi?component=beakerlib&&order=bug_status%2Cassigned_to%2Cpriority ++ + https://github.com/beakerlib/beakerlib/issues + + =item Reporting issues + ++https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=beakerlib ++ + https://github.com/beakerlib/beakerlib/issues/new + + =back diff --git a/enahanced-library-search.patch b/enahanced-library-search.patch new file mode 100644 index 0000000..b8ae6cb --- /dev/null +++ b/enahanced-library-search.patch @@ -0,0 +1,122 @@ +From 6caca72e63add35ef066cca1dbeae6857ec34b2b Mon Sep 17 00:00:00 2001 +From: Dalibor Pospisil +Date: Mon, 8 Jun 2020 17:11:51 +0200 +Subject: [PATCH 2/2] enahanced library search + +--- + src/libraries.sh | 71 ++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 56 insertions(+), 15 deletions(-) + +diff --git a/src/libraries.sh b/src/libraries.sh +index 2ccc02e..b40b513 100644 +--- a/src/libraries.sh ++++ b/src/libraries.sh +@@ -98,7 +98,7 @@ __INTERNAL_rlLibraryTraverseUpwards() { + while [ "$DIRECTORY" != "/" ] + do + DIRECTORY="$( dirname $DIRECTORY )" +- if [ -d "$DIRECTORY/$COMPONENT" ] ++ if [[ -d "$DIRECTORY/$COMPONENT" || -d "$DIRECTORY/libs/$COMPONENT/$LIBRARY" ]] + then + + local CANDIDATE="$DIRECTORY/$COMPONENT/Library/$LIBRARY/lib.sh" +@@ -114,6 +114,14 @@ __INTERNAL_rlLibraryTraverseUpwards() { + LIBFILE="$CANDIDATE" + break + fi ++ ++ local CANDIDATE="$DIRECTORY/libs/$COMPONENT/$LIBRARY/lib.sh" ++ if [ -f "$CANDIDATE" ] ++ then ++ LIBFILE="$CANDIDATE" ++ break ++ fi ++ + fi + done + } +@@ -139,6 +147,20 @@ __INTERNAL_rlLibrarySearchInRoot(){ + return + fi + ++ local CANDIDATE="$BEAKERLIB_LIBRARY_PATH/$COMPONENT/$LIBRARY/lib.sh" ++ if [ -f "$CANDIDATE" ] ++ then ++ LIBFILE="$CANDIDATE" ++ return ++ fi ++ ++ local CANDIDATE="$BEAKERLIB_LIBRARY_PATH/libs/$COMPONENT/$LIBRARY/lib.sh" ++ if [ -f "$CANDIDATE" ] ++ then ++ LIBFILE="$CANDIDATE" ++ return ++ fi ++ + rlLogDebug "rlImport: Library not found in $BEAKERLIB_LIBRARY_PATH" + } + +@@ -151,16 +173,20 @@ __INTERNAL_rlLibrarySearch() { + + if [ -n "$BEAKERLIB_LIBRARY_PATH" ] + then +- rlLogDebug "rlImport: BEAKERLIB_LIBRARY_PATH is set: trying to search in it" +- +- __INTERNAL_rlLibrarySearchInRoot "$COMPONENT" "$LIBRARY" "$BEAKERLIB_LIBRARY_PATH" +- if [ -n "$LIBFILE" ] +- then +- local VERSION="$(__INTERNAL_extractLibraryVersion "$LIBFILE" "$COMPONENT/$LIBRARY")" +- VERSION=${VERSION:+", version '$VERSION'"} +- rlLogInfo "rlImport: Found '$COMPONENT/$LIBRARY'$VERSION in BEAKERLIB_LIBRARY_PATH" +- return +- fi ++ rlLogDebug "rlImport: BEAKERLIB_LIBRARY_PATH='$BEAKERLIB_LIBRARY_PATH'" ++ local paths=( ${BEAKERLIB_LIBRARY_PATH//:/ } ) ++ while [[ -n "$paths" ]]; do ++ rlLogDebug "$FUNCNAME(): trying $paths component of BEAKERLIB_LIBRARY_PATH" ++ __INTERNAL_rlLibrarySearchInRoot "$COMPONENT" "$LIBRARY" "$paths" ++ if [ -n "$LIBFILE" ] ++ then ++ local VERSION="$(__INTERNAL_extractLibraryVersion "$LIBFILE" "$COMPONENT/$LIBRARY")" ++ VERSION=${VERSION:+", version '$VERSION'"} ++ rlLogInfo "rlImport: Found '$COMPONENT/$LIBRARY'$VERSION in BEAKERLIB_LIBRARY_PATH" ++ return ++ fi ++ paths=( "${paths[@]:1}" ) ++ done + else + rlLogDebug "rlImport: No BEAKERLIB_LIBRARY_PATH set: trying default" + fi +@@ -213,10 +239,25 @@ The library search mechanism is based on Beaker test hierarchy system, i.e.: + + /component/type/test-name/test-file + +-When test-file calls rlImport with 'foo/bar' parameter, the directory path +-is traversed upwards, and a check for presence of the test /foo/Library/bar/ +-will be performed. This means this function needs to be called from +-the test hierarchy, not e.g. the /tmp directory. ++When test-file calls rlImport with 'foo/bar' parameter, the libraries are searched ++in following locations: ++these are the possible path prefixes ++ ++ - colon-separated paths from $BEAKERLIB_LIBRARY_PATH ++ - /mnt/tests ++ - /usr/share/beakerlib-libraries ++ ++the next component of the path is one of the following: ++ ++ - /foo/Library/bar ++ - /*/foo/Library/bar ++ - /libs/foo/bar ++ ++the directory path is then constructed as prefix/path/lib.sh ++If the library is still not found an upwards directory traversal is used, and a ++check for presence of the library in /foo/Library/bar/ or libs/foo/bar/ is to be ++performed. This means this function needs to be called from the test hierarchy, ++not e.g. the /tmp directory. + + Once library is found, it is sourced and a verifier function is called. + The verifier function is cunstructed by composing the library prefix and +-- +2.25.4 + diff --git a/python3.patch b/python3.patch new file mode 100644 index 0000000..6e75a92 --- /dev/null +++ b/python3.patch @@ -0,0 +1,57 @@ +diff -ur beakerlib-1.18.old/src/python/journal-compare.py beakerlib-1.18.new/src/python/journal-compare.py +--- beakerlib-1.18.old/src/python/journal-compare.py 2019-04-04 11:20:55.000000000 +0200 ++++ beakerlib-1.18.new/src/python/journal-compare.py 2019-04-04 11:20:23.000000000 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material + # is made available to anyone wishing to use, modify, copy, or +diff -ur beakerlib-1.18.old/src/python/journalling.py beakerlib-1.18.new/src/python/journalling.py +--- beakerlib-1.18.old/src/python/journalling.py 2019-04-04 11:20:55.000000000 +0200 ++++ beakerlib-1.18.new/src/python/journalling.py 2019-04-04 11:20:27.000000000 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Authors: Jakub Heger + # Dalibor Pospisil +diff -ur beakerlib-1.18.old/src/python/rlMemAvg.py beakerlib-1.18.new/src/python/rlMemAvg.py +--- beakerlib-1.18.old/src/python/rlMemAvg.py 2019-04-04 11:20:55.000000000 +0200 ++++ beakerlib-1.18.new/src/python/rlMemAvg.py 2019-04-04 11:20:30.000000000 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Authors: Petr Muller + # +diff -ur beakerlib-1.18.old/src/python/rlMemPeak.py beakerlib-1.18.new/src/python/rlMemPeak.py +--- beakerlib-1.18.old/src/python/rlMemPeak.py 2019-04-04 11:20:55.000000000 +0200 ++++ beakerlib-1.18.new/src/python/rlMemPeak.py 2019-04-04 11:20:33.000000000 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Authors: Petr Muller + # +diff -ur beakerlib-1.18.old/src/python/testwatcher.py beakerlib-1.18.new/src/python/testwatcher.py +--- beakerlib-1.18.old/src/python/testwatcher.py 2019-04-04 11:20:55.000000000 +0200 ++++ beakerlib-1.18.new/src/python/testwatcher.py 2019-04-04 11:20:36.000000000 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # Authors: Jiri Jaburek + # +diff -ur beakerlib-1.18.old/src/journal.sh beakerlib-1.18.new/src/journal.sh +--- beakerlib-1.18.old/src/journal.sh ++++ beakerlib-1.18.new/src/journal.sh +@@ -299,7 +299,7 @@ rlJournalEnd(){ + __INTERNAL_JournalXMLCreate() { + local res=0 + [[ "$BEAKERLIB_JOURNAL" == "0" ]] || { +- if which python &> /dev/null; then ++ if which python3 &> /dev/null; then + $__INTERNAL_JOURNALIST $__INTERNAL_XSLT --metafile \ + "$__INTERNAL_BEAKERLIB_METAFILE" --journal "$__INTERNAL_BEAKERLIB_JOURNAL" + res=$?