original build RPMs from git repo, now support building from SRPM
Signed-off-by: Wang Yong wangyong0117@qq.com --- tests/rpmbuild-pkg | 73 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 16 deletions(-)
diff --git a/tests/rpmbuild-pkg b/tests/rpmbuild-pkg index 256e836bf..282d473fd 100755 --- a/tests/rpmbuild-pkg +++ b/tests/rpmbuild-pkg @@ -1,6 +1,8 @@ #!/bin/bash # - upstream_repo # - compat_os +# - repo_name +# - repo_addr
. $LKP_SRC/lib/debug.sh . $LKP_SRC/lib/upload.sh @@ -8,9 +10,38 @@ : "${compat_os:=budding-openeuler}"
[ -n "$upstream_repo" ] || die "upstream_repo is empty" -package_name=${upstream_repo##*/} -rpm_dest="/initrd/rpmbuild-pkg/${os}-${os_version}/${compat_os}/${os_arch}/Packages" -src_rpm_dest="/initrd/rpmbuild-pkg/${os}-${os_version}/${compat_os}/source/Packages" + +dest_dir="/initrd/rpmbuild-pkg/${os}-${os_version}/${compat_os}" + +from_git() +{ + package_name=${upstream_repo##*/} + rpm_dest="${dest_dir}/${os_arch}/Packages" + src_rpm_dest="${dest_dir}/source/Packages" + + init_workspace + download_upstream_repo +} + +from_srpm() +{ + [ -n "$repo_name" ] || die "repo_name is empty" + [ -n "$repo_addr" ] || die "repo_addr is empty" + + rpm_dest="${dest_dir}/${repo_name}/${os_arch}/Packages" + src_rpm_dest="${dest_dir}/${repo_name}/source/Packages" + + install_srpm +} + +check_flow() +{ + if [ -n "$repo_name" ]; then + from_srpm + else + from_git + fi +}
init_workspace() { @@ -20,30 +51,41 @@ init_workspace()
download_upstream_repo() { - git clone "git://$GIT_SERVER/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://$GIT_SERVER/openeuler/${upstream_repo}" - cd $package_name || exit + git clone "git://${GIT_SERVER}/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://${GIT_SERVER}/openeuler/${upstream_repo}" + cd "$package_name" || exit filelist=$(git ls-files) + for pkgfile in ${filelist[@]} do local dir="SOURCES" - echo $pkgfile | egrep ".spec$" && dir="SPECS" + + echo "$pkgfile" | grep -E "\.spec$" && dir="SPECS" mv "$pkgfile" "${HOME}/rpmbuild/${dir}/" done }
-build_rpm() +install_srpm() { - local spec_file=${HOME}/rpmbuild/SPECS/$package_name.spec - - # HTTP is proxy cache friendly - sed -i 's/^(Source[^ ]*:[ \t]*)https/\1http/g' `grep http -rl $spec_file` + rpm -i "${repo_addr}/${upstream_repo}" >/dev/null || die "failed to install source rpm: ${repo_addr}/${upstream_repo}" +}
+build_rpm() +{ + local spec_dir="${HOME}/rpmbuild/SPECS" + [ -n "$package_name" ] && + { + # HTTP is proxy cache friendly + sed -i 's/^(Source[^ ]*:[ \t]*)https/\1http/g' "$(grep http -rl "$spec_dir/${package_name}.spec")" + } # Install build depends - yum-builddep -y $spec_file || exit + yum-builddep -y "$spec_dir"/*.spec || die "failed to solve dependencies" # Download tar.gz to default path ${HOME}/rpmbuild/SOURCE - spectool -g -R $spec_file || exit + [ -n "$package_name" ] && + { + spectool -g -R "$spec_dir/${package_name}.spec" || die "failed to download source file" + } # Building rpm or srpm packages - rpmbuild -ba $spec_file || exit + rpmbuild -ba "$spec_dir"/*.spec || die "failed to build rpms" }
show_rpm_files() @@ -71,7 +113,6 @@ upload_rpm_pkg() done }
-init_workspace -download_upstream_repo +check_flow build_rpm upload_rpm_pkg
On Wed, Mar 24, 2021 at 05:02:45PM +0800, Wang Yong wrote:
original build RPMs from git repo, now support building from SRPM
Signed-off-by: Wang Yong wangyong0117@qq.com
tests/rpmbuild-pkg | 73 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 16 deletions(-)
diff --git a/tests/rpmbuild-pkg b/tests/rpmbuild-pkg index 256e836bf..282d473fd 100755 --- a/tests/rpmbuild-pkg +++ b/tests/rpmbuild-pkg @@ -1,6 +1,8 @@ #!/bin/bash # - upstream_repo # - compat_os +# - repo_name +# - repo_addr
. $LKP_SRC/lib/debug.sh . $LKP_SRC/lib/upload.sh @@ -8,9 +10,38 @@ : "${compat_os:=budding-openeuler}"
[ -n "$upstream_repo" ] || die "upstream_repo is empty" -package_name=${upstream_repo##*/} -rpm_dest="/initrd/rpmbuild-pkg/${os}-${os_version}/${compat_os}/${os_arch}/Packages" -src_rpm_dest="/initrd/rpmbuild-pkg/${os}-${os_version}/${compat_os}/source/Packages"
+dest_dir="/initrd/rpmbuild-pkg/${os}-${os_version}/${compat_os}"
+from_git() +{
- package_name=${upstream_repo##*/}
- rpm_dest="${dest_dir}/${os_arch}/Packages"
- src_rpm_dest="${dest_dir}/source/Packages"
- init_workspace
- download_upstream_repo
+}
+from_srpm() +{
- [ -n "$repo_name" ] || die "repo_name is empty"
- [ -n "$repo_addr" ] || die "repo_addr is empty"
- rpm_dest="${dest_dir}/${repo_name}/${os_arch}/Packages"
- src_rpm_dest="${dest_dir}/${repo_name}/source/Packages"
- install_srpm
+}
+check_flow() +{
- if [ -n "$repo_name" ]; then
from_srpm
- else
from_git
- fi
+}
init_workspace() { @@ -20,30 +51,41 @@ init_workspace()
download_upstream_repo() {
- git clone "git://$GIT_SERVER/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://$GIT_SERVER/openeuler/${upstream_repo}"
- cd $package_name || exit
- git clone "git://${GIT_SERVER}/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://${GIT_SERVER}/openeuler/${upstream_repo}"
too long line, maybe you can use '' to wrap line. Thanks, Liushaofei
- cd "$package_name" || exit filelist=$(git ls-files)
- for pkgfile in ${filelist[@]} do local dir="SOURCES"
echo $pkgfile | egrep "\.spec$" && dir="SPECS"
mv "$pkgfile" "${HOME}/rpmbuild/${dir}/" doneecho "$pkgfile" | grep -E "\\.spec$" && dir="SPECS"
}
-build_rpm() +install_srpm() {
- local spec_file=${HOME}/rpmbuild/SPECS/$package_name.spec
- # HTTP is proxy cache friendly
- sed -i 's/^(Source[^ ]*:[ \t]*)https/\1http/g' `grep http -rl $spec_file`
- rpm -i "${repo_addr}/${upstream_repo}" >/dev/null || die "failed to install source rpm: ${repo_addr}/${upstream_repo}"
+}
+build_rpm() +{
- local spec_dir="${HOME}/rpmbuild/SPECS"
- [ -n "$package_name" ] &&
{
# HTTP is proxy cache friendly
sed -i 's/^\(Source[^ ]*:[ \t]*\)https/\1http/g' "$(grep http -rl "$spec_dir/${package_name}.spec")"
# Install build depends}
- yum-builddep -y $spec_file || exit
- yum-builddep -y "$spec_dir"/*.spec || die "failed to solve dependencies" # Download tar.gz to default path ${HOME}/rpmbuild/SOURCE
- spectool -g -R $spec_file || exit
- [ -n "$package_name" ] &&
{
spectool -g -R "$spec_dir/${package_name}.spec" || die "failed to download source file"
# Building rpm or srpm packages}
- rpmbuild -ba $spec_file || exit
- rpmbuild -ba "$spec_dir"/*.spec || die "failed to build rpms"
}
show_rpm_files() @@ -71,7 +113,6 @@ upload_rpm_pkg() done }
-init_workspace -download_upstream_repo +check_flow build_rpm upload_rpm_pkg -- 2.23.0
download_upstream_repo() {
- git clone "git://$GIT_SERVER/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://$GIT_SERVER/openeuler/${upstream_repo}"
- cd $package_name || exit
- git clone "git://${GIT_SERVER}/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://${GIT_SERVER}/openeuler/${upstream_repo}"
too long line, maybe you can use '\' to wrap line.
can define a variable for the repo url
Thanks, Luan Shengde
Thanks, Liushaofei
- cd "$package_name" || exit filelist=$(git ls-files)
- for pkgfile in ${filelist[@]} do local dir="SOURCES"
echo $pkgfile | egrep "\.spec$" && dir="SPECS"
mv "$pkgfile" "${HOME}/rpmbuild/${dir}/" doneecho "$pkgfile" | grep -E "\\.spec$" && dir="SPECS"
}
-build_rpm() +install_srpm() {
- local spec_file=${HOME}/rpmbuild/SPECS/$package_name.spec
- # HTTP is proxy cache friendly
- sed -i 's/^(Source[^ ]*:[ \t]*)https/\1http/g' `grep http -rl $spec_file`
- rpm -i "${repo_addr}/${upstream_repo}" >/dev/null || die "failed to install source rpm: ${repo_addr}/${upstream_repo}"
+}
+build_rpm() +{
- local spec_dir="${HOME}/rpmbuild/SPECS"
- [ -n "$package_name" ] &&
{
# HTTP is proxy cache friendly
sed -i 's/^\(Source[^ ]*:[ \t]*\)https/\1http/g' "$(grep http -rl "$spec_dir/${package_name}.spec")"
# Install build depends}
- yum-builddep -y $spec_file || exit
- yum-builddep -y "$spec_dir"/*.spec || die "failed to solve dependencies" # Download tar.gz to default path ${HOME}/rpmbuild/SOURCE
- spectool -g -R $spec_file || exit
- [ -n "$package_name" ] &&
{
spectool -g -R "$spec_dir/${package_name}.spec" || die "failed to download source file"
# Building rpm or srpm packages}
- rpmbuild -ba $spec_file || exit
- rpmbuild -ba "$spec_dir"/*.spec || die "failed to build rpms"
}
show_rpm_files() @@ -71,7 +113,6 @@ upload_rpm_pkg() done }
-init_workspace -download_upstream_repo +check_flow build_rpm upload_rpm_pkg -- 2.23.0
On Wed, Mar 24, 2021 at 05:27:27PM +0800, Luan Shengde wrote:
download_upstream_repo() {
- git clone "git://$GIT_SERVER/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://$GIT_SERVER/openeuler/${upstream_repo}"
- cd $package_name || exit
- git clone "git://${GIT_SERVER}/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://${GIT_SERVER}/openeuler/${upstream_repo}"
too long line, maybe you can use '\' to wrap line.
can define a variable for the repo url
ok
Thanks, Yong
On Wed, Mar 24, 2021 at 05:24:26PM +0800, Liu Shaofei wrote:
On Wed, Mar 24, 2021 at 05:02:45PM +0800, Wang Yong wrote:
- git clone "git://$GIT_SERVER/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://$GIT_SERVER/openeuler/${upstream_repo}"
- cd $package_name || exit
- git clone "git://${GIT_SERVER}/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://${GIT_SERVER}/openeuler/${upstream_repo}"
too long line, maybe you can use '\' to wrap line.
ok
Thanks, Yong
- package_name=${upstream_repo##*/}
- rpm_dest="${dest_dir}/${os_arch}/Packages"
- src_rpm_dest="${dest_dir}/source/Packages"
- init_workspace
- download_upstream_repo
+}
+from_srpm() +{
- [ -n "$repo_name" ] || die "repo_name is empty"
- [ -n "$repo_addr" ] || die "repo_addr is empty"
- rpm_dest="${dest_dir}/${repo_name}/${os_arch}/Packages"
- src_rpm_dest="${dest_dir}/${repo_name}/source/Packages"
- install_srpm
+}
+check_flow() +{
- if [ -n "$repo_name" ]; then
from_srpm
- else
from_git
- fi
case only one else and only one line command, you can use: [[ -n "$repo_name" ]] && from_srpm || from_git
Thanks, Luan Shengde
+}
init_workspace() { @@ -20,30 +51,41 @@ init_workspace()
download_upstream_repo() {
- git clone "git://$GIT_SERVER/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://$GIT_SERVER/openeuler/${upstream_repo}"
- cd $package_name || exit
- git clone "git://${GIT_SERVER}/openeuler/${upstream_repo}" || die "clone git repo ${package_name} failed: git://${GIT_SERVER}/openeuler/${upstream_repo}"
- cd "$package_name" || exit filelist=$(git ls-files)
- for pkgfile in ${filelist[@]} do local dir="SOURCES"
echo $pkgfile | egrep "\.spec$" && dir="SPECS"
mv "$pkgfile" "${HOME}/rpmbuild/${dir}/" doneecho "$pkgfile" | grep -E "\\.spec$" && dir="SPECS"
}
-build_rpm() +install_srpm() {
- local spec_file=${HOME}/rpmbuild/SPECS/$package_name.spec
- # HTTP is proxy cache friendly
- sed -i 's/^(Source[^ ]*:[ \t]*)https/\1http/g' `grep http -rl $spec_file`
- rpm -i "${repo_addr}/${upstream_repo}" >/dev/null || die "failed to install source rpm: ${repo_addr}/${upstream_repo}"
+}
+build_rpm() +{
- local spec_dir="${HOME}/rpmbuild/SPECS"
- [ -n "$package_name" ] &&
{
# HTTP is proxy cache friendly
sed -i 's/^\(Source[^ ]*:[ \t]*\)https/\1http/g' "$(grep http -rl "$spec_dir/${package_name}.spec")"
# Install build depends}
- yum-builddep -y $spec_file || exit
- yum-builddep -y "$spec_dir"/*.spec || die "failed to solve dependencies" # Download tar.gz to default path ${HOME}/rpmbuild/SOURCE
- spectool -g -R $spec_file || exit
- [ -n "$package_name" ] &&
{
spectool -g -R "$spec_dir/${package_name}.spec" || die "failed to download source file"
# Building rpm or srpm packages}
- rpmbuild -ba $spec_file || exit
- rpmbuild -ba "$spec_dir"/*.spec || die "failed to build rpms"
}
show_rpm_files() @@ -71,7 +113,6 @@ upload_rpm_pkg() done }
-init_workspace -download_upstream_repo +check_flow build_rpm upload_rpm_pkg -- 2.23.0
On Wed, Mar 24, 2021 at 05:25:40PM +0800, Luan Shengde wrote:
- package_name=${upstream_repo##*/}
- rpm_dest="${dest_dir}/${os_arch}/Packages"
- src_rpm_dest="${dest_dir}/source/Packages"
- init_workspace
- download_upstream_repo
+}
+from_srpm() +{
- [ -n "$repo_name" ] || die "repo_name is empty"
- [ -n "$repo_addr" ] || die "repo_addr is empty"
- rpm_dest="${dest_dir}/${repo_name}/${os_arch}/Packages"
- src_rpm_dest="${dest_dir}/${repo_name}/source/Packages"
- install_srpm
+}
+check_flow() +{
- if [ -n "$repo_name" ]; then
from_srpm
- else
from_git
- fi
case only one else and only one line command, you can use: [[ -n "$repo_name" ]] && from_srpm || from_git
ok
Thanks, Yong