From 4abb5719ff31dcd0c2d78f00a5a6f213634c0c5f Mon Sep 17 00:00:00 2001 From: lyn1001 Date: Sat, 5 Sep 2020 18:43:43 +0800 Subject: [PATCH] fix build fail --- rubygem-httpclient.spec | 13 +-- rubygem-httpclient.spec~ | 73 +++++++++++++++++ spec_prep_plus.sh | 168 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 249 insertions(+), 5 deletions(-) create mode 100644 rubygem-httpclient.spec~ create mode 100755 spec_prep_plus.sh diff --git a/rubygem-httpclient.spec b/rubygem-httpclient.spec index 6998022..6355d54 100644 --- a/rubygem-httpclient.spec +++ b/rubygem-httpclient.spec @@ -1,17 +1,16 @@ +%bcond_with bootstrap %global gem_name httpclient %global rubyabi 1.8 Summary: HTTP Client interface for ruby Name: rubygem-%{gem_name} Version: 2.8.0 -Release: 1 +Release: 2 License: (Ruby or BSD) and Public Domain URL: https://github.com/nahi/httpclient Source0: https://rubygems.org/downloads/%{gem_name}-%{version}.gem Requires: ruby(release) -BuildRequires: rubygem(minitest) -BuildRequires: rubygems-devel rubygem(http-cookie) +BuildRequires: rubygem(minitest) rubygems-devel rubygem(http-cookie) BuildArch: noarch -%if 0%{?el7} || 0%{?el6} Provides: rubygem(%{gem_name}) = %{version} %endif %description @@ -21,7 +20,6 @@ an interface to HTTP Client for the ruby language Summary: Documentation for %{name} Requires: %{name} = %{version}-%{release} BuildArch: noarch - %description doc Documentation for %{name} @@ -48,11 +46,13 @@ done find %{buildroot}/%{gem_instdir} -type f -perm /g+wx -exec chmod -v g-w {} \; find %{buildroot}/%{gem_instdir} -type f ! -perm /go+r -exec chmod -v go+r {} \; +%if %{with bootstrap} %check pushd %{buildroot}%{gem_instdir} rm -f test/test_auth.rb ruby -Ilib -e 'Dir.glob "./test/test_*.rb", &method(:require)' popd +%endif %files %dir %{gem_instdir} @@ -68,5 +68,8 @@ popd %doc %{gem_instdir}/test %changelog +* Sat Sep 5 2020 liyanan - 2.8.0-2 +- fix build fail + * Thu Aug 20 2020 tuShenmei - 2.8.0-1 - package init diff --git a/rubygem-httpclient.spec~ b/rubygem-httpclient.spec~ new file mode 100644 index 0000000..ca391f4 --- /dev/null +++ b/rubygem-httpclient.spec~ @@ -0,0 +1,73 @@ +%bcond_with bootstrap +%global gem_name httpclient +%global rubyabi 1.8 +Summary: HTTP Client interface for ruby +Name: rubygem-%{gem_name} +Version: 2.8.0 +Release: 1 +License: (Ruby or BSD) and Public Domain +URL: https://github.com/nahi/httpclient +Source0: https://rubygems.org/downloads/%{gem_name}-%{version}.gem +Requires: ruby(release) +BuildRequires: rubygem(minitest) +BuildRequires: rubygems-devel rubygem(http-cookie) +BuildArch: noarch +%if 0%{?el7} || 0%{?el6} +Provides: rubygem(%{gem_name}) = %{version} +%endif +%description +an interface to HTTP Client for the ruby language + +%package doc +Summary: Documentation for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +%description doc +Documentation for %{name} + +%prep +gem unpack %{SOURCE0} +%setup -q -D -T -n %{gem_name}-%{version} +gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec + +%build +gem build %{gem_name}.gemspec +%gem_install + +%install +mkdir -p %{buildroot}%{gem_dir} +cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/ +find %{buildroot}/%{gem_instdir} -type f -name "*~" -delete +rm -rf %{buildroot}%{gem_instdir}/.yardoc +for file in `find %{buildroot}/%{gem_instdir} -type f -perm /a+x`; do + [ -z "`head -n 1 $file | grep \"^#!/\"`" ] && chmod -v 644 $file +done +for file in `find %{buildroot}/%{gem_instdir} -type f ! -perm /a+x -name "*.rb"`; do + [ ! -z "`head -n 1 $file | grep \"^#!/\"`" ] && chmod -v 755 $file +done +find %{buildroot}/%{gem_instdir} -type f -perm /g+wx -exec chmod -v g-w {} \; +find %{buildroot}/%{gem_instdir} -type f ! -perm /go+r -exec chmod -v go+r {} \; + +%check +pushd %{buildroot}%{gem_instdir} +rm -f test/test_auth.rb +ruby -Ilib -e 'Dir.glob "./test/test_*.rb", &method(:require)' +popd + +%files +%dir %{gem_instdir} +%{gem_instdir}/bin/ +%{gem_instdir}/lib/ +%doc %{gem_instdir}/sample +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%doc %{gem_docdir} +%doc %{gem_instdir}/README.md +%doc %{gem_instdir}/test + +%changelog +* Thu Aug 20 2020 tuShenmei - 2.8.0-1 +- package init diff --git a/spec_prep_plus.sh b/spec_prep_plus.sh new file mode 100755 index 0000000..473cec6 --- /dev/null +++ b/spec_prep_plus.sh @@ -0,0 +1,168 @@ +changelog_update(){ +# changelog replace +sed -i '/^%changelog/,$d' $file +date=`date +"%a %b %_d %Y"` +name='liyanan' +email='liyanan32@huawei.com' +changelog="%changelog\n* $date $name <$email> - ${version}-$release\n- fix build fail" +echo -e $changelog >> $file #sed -n '/^%changelog/,$p' $file +echo "Hint: changelog updated" +} + + +single_merge(){ +awk -v key="$1" -v max_len=80 -F : \ +'BEGIN {\ +tmp="";\ +} \ +{\ + if( key == $1 ){\ + if( NF > 2){\ + oofs=FS;FS="#"; + bbb=sub(/[[:alnum:] ]+:/,"",$0);\ + aaa=$bbb; + FS=oofs; + }\ + else{\ + $1=""; \ + aaa=$0;\ + }\ + + tmp1=tmp aaa + gsub(" +"," ",tmp1);\ + #print FNR tmp1 + if(length(tmp1) > max_len){\ + gsub(" +"," ",tmp);\ + printf "%-20s%s\n",key ":",tmp;\ + tmp="";\ + }\ + tmp=tmp aaa;\ + }\ + else {\ + if( length(tmp) != 0){\ + gsub(" +"," ",tmp);\ + printf "%-20s%s\n",key ":",tmp;\ + tmp="";\ + }\ + print $0;\ + }\ + +}' +} + +headers_merge(){ + cat $file | single_merge "BuildRequires" | single_merge "Requires" > .$file + mv -f .$file $file + echo "Hint: Tags merged" +} + +delete_comment(){ + sed -i '/^#.*/d' $file + echo "Hint: commentline deleted" +} +delete_blank(){ + sed -i 's/[[:blank:]]\{1,\}$//g' $file + echo "Hint: tail-blank deleted " +} + +insert_enter(){ + sed -i '/^$/d' $file + sed -i '/^%package.*/i\ ' $file + sed -i '/^%pre.*/i\ ' $file + sed -i '/^%post.*/i\ ' $file + sed -i '/^%build.*/i\ ' $file + sed -i '/^%install.*/i\ ' $file + sed -i '/^%check*/i\ ' $file + sed -i '/^%files.*/i\ ' $file + sed -i '/^%changelog.*/i\ ' $file + echo "Hint: insert newline before stages" +} + +increase_release(){ + # release +1 + sed -i "/^Release.*$/s/${release_oo}/${release}/" $file + # delete Group Tags + sed -i '/^Group.*/d' $file + echo "Hint: release ++" +} + +header_align() { +awk '{ +if ($0 ~ /^[A-Z][[:alnum:]]*: / ) { +va=""; +for(i=2;i<=NF;i++){ va=va" "$i}; +printf("%-20s%s\n",$1,va); +} +else print $0; +}' $file > .$file +mv -f .$file $file +echo "Hint: header_align done" +} + +#################### main +main(){ + +file_o=$1 +file=${file_o}.cp +sed -i 's/\t/ /g' $1 +#sed -i 's/%package\s\+javadoc$/%package help/g' $1 +#sed -i '/%description\s\+javadoc$/i\Provides: %{name}-javadoc = %{version}-%{release}' $1 +#sed -i '/%description\s\+javadoc$/i\Obsoletes: %{name}-javadoc < %{version}-%{release}' $1 +#sed -i 's/%description\s\+javadoc$/%description help/g' $1 +#sed -i 's/%files\s\+javadoc/%files help/g' $1 +#sed -i 's/%package\s\+doc$/%package help/g' $1 +#sed -i '/%description\s\+doc$/i\Provides: %{name}-doc = %{version}-%{release}' $1 +#sed -i '/%description\s\+doc$/i\Obsoletes: %{name}-doc < %{version}-%{release}' $1 +#sed -i 's/%description\s\+doc$/%description help/g' $1 +#sed -i 's/%files\s\+doc$/%files help/g' $1 +#echo 'mv javadoc or doc to help succeed!!!!!!!' +sed -i "1i %bcond_with bootstrap" $1 +sed -i "%check/i\'%if %{with bootstrap}'" $1 + + +cp -f $file_o $file + +# got verison release +version=`cat $file |grep '^Version' | awk '{print $2}'` +release_oo=`cat $file |grep '^Release' | awk '{print $2}'` +release_o=`echo $release_oo | sed 's/%{.*}//'` +release=$((release_o+1)) +release=1 + +#marcos_expand keep this bug ... +delete_comment +changelog_update +increase_release +header_align +headers_merge +insert_enter +delete_blank + +#let's play +#read -p "Hint: exec vimdiff $file $file_o ? enter [yes/no]: " ans +#vimdiff $file $file_o +#read -p "Hint: do mv -b -f $file $file_o ? enter [yes/no]: " ans +#if [[ $ans =~ [Yy]([Ee][Ss])? ]];then + mv -b -f $file $file_o + echo "Hint: $file_o updated" +#else +# rm -f $file +# echo "Hint: $file deleted. Not my bad :P " +#fi +echo "From SONG: Enjoy your spec working !" +} + +banner(){ +cat <