Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
ceph-test
pre_checkin.sh
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pre_checkin.sh of Package ceph-test
#!/bin/bash set -f function packages_files { local spec_file=$1 local exclude_pkg=$2 local in_files=false local result="" while IFS='' read -r line || [[ -n "$line" ]]; do case $line in "%files "*) pkg=`echo "$line" | sed 's/%files.* \(\w\+\)/\1/g'` if [[ $pkg == $exclude_pkg ]]; then in_files=false continue fi in_files=true continue ;; "%post"* | "%pre"* | "%preun"* | "%postun"*) in_files=false continue ;; esac result="" changed=true while [[ $in_files == true ]] && [[ $changed == true ]]; do changed=false case $line in "%if"* | "" | "%defattr"* | "%endif"* | "%else"* | "#"* | "%docdir"*) break ;; "%dir"*) break # for now we'll ignore %dir entries ;; "%changelog"*) break # for now we'll ignore %changelog entries ;; *) result=`echo "$line" | sed -e 's/%config \(.*\)/\1/g' \ -e 's/%config(.*) \(.*\)/\1/g' \ -e 's/%attr(.*) \(.*\)/\1/g' \ -e 's/%exclude \(.*\)/\1/g'` if [[ ! $line == $result ]]; then changed=true line=$result continue fi ;; esac # process path variables result=`echo "$result" | sed -e 's!%{_bindir}!/usr/bin!g' \ -e 's!%{_docdir}!/usr/share/doc/packages!g' \ -e 's!%{_sbindir}!/usr/sbin!g' \ -e 's!%{_libdir}!/usr/lib64!g' \ -e 's!%{_mandir}!/usr/share/man!g' \ -e 's!%{_sysconfdir}!/etc!g' \ -e 's!%{_includedir}!/usr/include!g' \ -e 's!%{_unitdir}!/usr/lib/systemd/system!g' \ -e 's!%{python_sitelib}!/usr/lib/python2.7/site-packages!g' \ -e 's!%{_datadir}!/usr/share!g' \ -e 's!%{python_sitearch}!/usr/lib64/python2.7/site-packages!g' \ -e 's!%{_javadir}!/usr/share/java!g' \ -e 's!%{_libexecdir}!/usr/lib!g' \ -e 's!%{_prefix}!/usr!g' \ -e 's!%{_localstatedir}!/var!g' \ -e 's!%{_tmpfilesdir}!/usr/lib/tmpfiles.d!g' \ -e 's!%{_udevrulesdir}!/usr/lib/udev/rules.d!g'` # sanity check if [[ "$result" == "%"* ]]; then echo "ERROR: unparsable file entry: $result" exit 1 fi echo "$result" done done < $spec_file } function get_package_summary { local spec_file=$1 local pkg_name=$2 local in_package=false while IFS='' read -r line || [[ -n "$line" ]]; do case $line in "%package "*) pkg=`echo "$line" | sed 's/%package.* \(\w\+\)/\1/g'` if [[ ! $pkg == $pkg_name ]]; then in_package=false else in_package=true fi ;; "%prep"* | "%build"* | "%install"*) in_package=false ;; "Summary:"*) if [[ $in_package == true ]]; then echo $line break fi ;; esac done < $spec_file } function get_package_requires { local spec_file=$1 local pkg_name=$2 local in_package=false while IFS='' read -r line || [[ -n "$line" ]]; do case $line in "%package "*) pkg=`echo "$line" | sed 's/%package.* \(\w\+\)/\1/g'` if [[ ! $pkg == $pkg_name ]]; then in_package=false else in_package=true fi ;; "%prep"* | "%build"* | "%install"*) in_package=false ;; "Requires:"*) if [[ $in_package == true ]]; then echo $line fi ;; esac done < $spec_file } function get_package_description { local spec_file=$1 local pkg_name=$2 local in_desc=false while IFS='' read -r line || [[ -n "$line" ]]; do case $line in "%description "*) pkg=`echo "$line" | sed 's/%description.* \(\w\+\)/\1/g'` if [[ ! $pkg == $pkg_name ]]; then in_desc=false else in_desc=true fi continue ;; "%prep"* | "%build"* | "%install"* | "%package"* | "%if"* | "%endif"*) in_desc=false continue ;; esac if [[ $in_desc == true ]]; then echo "$line" fi done < $spec_file } function transform_spec_file { local spec_file=$1 local include_pkg=$2 local rm_files=$3 local summary=$4 local description=$5 local requires=$6 local in_package=false local in_files=false local in_desc=false while IFS='' read -r line || [[ -n "$line" ]]; do case $line in "%bcond_with ceph_test_package"*) line="%bcond_without ceph_test_package" ;; "Name:"*) line="Name: $include_pkg" ;; "Summary:"*) if [[ $in_package == false ]]; then line="$summary" fi ;; "Source0:"*) line=`echo $line | sed 's/%{name}/ceph/g'` ;; "ExclusiveArch:"*) line=`echo $line | sed 's/s390\S*//g'` ;; "%setup -q") line="$line -n ceph-%version" ;; "Requires:"*) if [[ $in_package == false ]]; then line="" fi ;; "Requires(post):"*) if [[ $in_package == false ]]; then IFS='' for r in "$requires"; do echo "$r" done fi ;; "%description"*) if [[ $in_package == false ]]; then in_desc=true echo "$line" echo "$description" echo "" continue fi ;; "%package "*) #pkg=`echo "$line" | sed 's/%package.* \(\w\+\)/\1/g'` #if [[ $pkg == $include_pkg ]]; then # in_package=false #else in_package=true continue #fi in_desc=false ;; "%prep"* | "%build"* | "%install"*) in_package=false in_desc=false ;; "%files "*) pkg=`echo "$line" | sed 's/%files.* \(\w\+\)/\1/g'` if [[ $pkg == $include_pkg ]]; then in_files=false else in_files=true continue fi ;; "%changelog"*) in_files=false ;; "%clean"*) in_package=false IFS='' for rf in "$rm_files"; do echo "$rf" done echo "" echo "dirs=\`find %{buildroot} -type d -empty\`" echo "while [[ -n \$dirs ]]; do" echo " for d in \$dirs; do" echo " rm -rf \$d" echo " done" echo "dirs=\`find %{buildroot} -type d -empty\`" echo "done" echo "" ;; "#"* | "%"*) in_desc=false ;; esac if [[ $in_package == false ]] && [[ $in_files == false ]] && [[ $in_desc == false ]]; then echo $line else if [[ $line == "%if"* ]] || [[ $line == "%endif"* ]]; then echo $line fi fi done < $spec_file } function generate_rm_exclude_files { local exclude_list=$1 local buildroot=$2 for f in $exclude_list; do echo "rm -rf $buildroot$f" done } function insert_line_before { local FILE=$1 local line_to_insert=$2 local match_regex=$3 sed -i "/${match_regex}/i $line_to_insert" $FILE } function copy_changes_file { local dest_pkg=$1 cp ceph.changes ${dest_pkg}.changes } PACKAGE="ceph-test" SPEC_FILE="ceph.spec" files=`packages_files $SPEC_FILE $PACKAGE` if [[ "$?" == "1" ]]; then echo "ERROR: " echo $files exit 0 fi rm_files=`generate_rm_exclude_files "$files" "%{buildroot}"` summ=`get_package_summary $SPEC_FILE $PACKAGE` desc=`get_package_description $SPEC_FILE $PACKAGE` reqs=`get_package_requires $SPEC_FILE $PACKAGE` transform_spec_file $SPEC_FILE $PACKAGE "$rm_files" "$summ" "$desc" "$reqs" > $PACKAGE.spec insert_line_before "${PACKAGE}.spec" "Source98: README-ceph-test.txt" "^Source99:" insert_line_before "${PACKAGE}.spec" "Source97: ibs_constraints.sh" "^Source99:" copy_changes_file $PACKAGE
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor