forked from pool/obs-service-tar_scm
osc copypac from project:openSUSE:Tools:Unstable package:obs-service-tar_scm revision:7
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Tools/obs-service-tar_scm?expand=0&rev=1
This commit is contained in:
commit
7555208076
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
5
obs-service-tar_scm.changes
Normal file
5
obs-service-tar_scm.changes
Normal file
@ -0,0 +1,5 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 3 10:31:32 UTC 2010 - adrian@suse.de
|
||||
|
||||
- initial version to checkout/update svn or git repos and create a tar
|
||||
|
35
obs-service-tar_scm.spec
Normal file
35
obs-service-tar_scm.spec
Normal file
@ -0,0 +1,35 @@
|
||||
|
||||
Name: obs-service-tar_scm
|
||||
License: GPL v2 or later
|
||||
Group: Development/Tools/Building
|
||||
Summary: An OBS source service: checkout or update a tar ball from svn/git/cvs
|
||||
Version: 0.1
|
||||
Release: 1
|
||||
Source: tar_scm
|
||||
Source1: tar_scm.service
|
||||
Requires: subversion git cvs
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildArch: noarch
|
||||
|
||||
%description
|
||||
This is a source service for openSUSE Build Service.
|
||||
|
||||
It supports downloading src.rpms and extracting
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -D -T 0 -n .
|
||||
|
||||
%build
|
||||
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/lib/obs/service
|
||||
install -m 0755 %{SOURCE0} $RPM_BUILD_ROOT/usr/lib/obs/service
|
||||
install -m 0644 %{SOURCE1} $RPM_BUILD_ROOT/usr/lib/obs/service
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%dir /usr/lib/obs
|
||||
/usr/lib/obs/service
|
||||
|
178
tar_scm
Normal file
178
tar_scm
Normal file
@ -0,0 +1,178 @@
|
||||
#!/bin/bash
|
||||
|
||||
# A simple script to checkout or update a svn or git repo as source service
|
||||
|
||||
# defaults
|
||||
MYSCM=""
|
||||
MYURL=""
|
||||
MYVERSION=""
|
||||
MYPREFIX=""
|
||||
MYFILENAME=""
|
||||
MYREVISION=""
|
||||
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
*-scm)
|
||||
MYSCM="$2"
|
||||
shift
|
||||
;;
|
||||
*-url)
|
||||
MYURL="$2"
|
||||
shift
|
||||
;;
|
||||
*-subdir)
|
||||
MYSUBDIR="$2"
|
||||
shift
|
||||
;;
|
||||
*-revision)
|
||||
MYREVISION="$2"
|
||||
shift
|
||||
;;
|
||||
*-version)
|
||||
MYVERSION="$2"
|
||||
shift
|
||||
;;
|
||||
*-versionprefix)
|
||||
MYPREFIX="$2"
|
||||
shift
|
||||
;;
|
||||
*-filename)
|
||||
MYFILENAME="${2#/}"
|
||||
shift
|
||||
;;
|
||||
*-outdir)
|
||||
MYOUTDIR="$2"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo Unknown parameter $1.
|
||||
echo 'Usage: tar_scm --scm $SCM --url $URL --outdir $OUT'
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
FILE="$FILENAME"
|
||||
VERSION="$MYVERSION"
|
||||
|
||||
if [ -z "$MYSCM" ]; then
|
||||
echo "ERROR: no scm is given via --scm parameter (git/svn)!"
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$MYURL" ]; then
|
||||
echo "ERROR: no checkout URL is given via --url parameter!"
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$MYOUTDIR" ]; then
|
||||
echo "ERROR: no output directory is given via --outdir parameter!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$MYOUTDIR"
|
||||
|
||||
if [ -z "$FILE" -a "$MYSCM" == "git" ]; then
|
||||
FILE="${MYURL%/}"
|
||||
FILE="${FILE##*/}"
|
||||
FILE="${FILE%.git}"
|
||||
fi
|
||||
if [ -z "$FILE" -a "$MYSCM" == "svn" ]; then
|
||||
FILE="${MYURL%/}"
|
||||
FILE="${FILE##*/}"
|
||||
fi
|
||||
|
||||
existing_tar=$(echo _service:tar_scm:${FILE}-*.tar*)
|
||||
if [ -e "$existing_tar" ]; then
|
||||
UNCOMPRESS="cat"
|
||||
if [ "${existing_tar%.tar.gz}" != "$existing_tar" ]; then
|
||||
UNCOMPRESS="gunzip -c"
|
||||
elif [ "${existing_tar%.tar.bz2}" != "$existing_tar" ]; then
|
||||
UNCOMPRESS="bunzip2 -c"
|
||||
elif [ "${existing_tar%.tar.xz}" != "$existing_tar" ]; then
|
||||
UNCOMPRESS="xz -dc"
|
||||
fi
|
||||
if $UNCOMPRESS "$existing_tar" | tar xf -; then
|
||||
TAR_DIRECTORY=`find * -maxdepth 0 -a -type d`
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$MYSCM" == "svn" ]; then
|
||||
if [ -z "$SUBDIR" -a -d "$TAR_DIRECTORY" ]; then
|
||||
# update existing content for speed/bandwidth reasons
|
||||
cd "$TAR_DIRECTORY"
|
||||
OLDVERSION=`LC_ALL=C svn info | sed -n 's,^Last Changed Rev: \(.*\),\1,p'`
|
||||
if [ -n "$MYREVISION" ]; then
|
||||
svn up -r"$MYREVISION" || exit 1
|
||||
else
|
||||
svn up || exit 1
|
||||
fi
|
||||
NEWVERSION=`LC_ALL=C svn info | sed -n 's,^Last Changed Rev: \(.*\),\1,p'`
|
||||
cd -
|
||||
if [ "$OLDVERSION" == "$NEWVERSION" ]; then
|
||||
# cleanup and skip
|
||||
rm -rf "$TAR_DIRECTORY"
|
||||
exit 0
|
||||
fi
|
||||
mv "$TAR_DIRECTORY" "${FILE}" || exit 1
|
||||
else
|
||||
# new checkout
|
||||
if [ -n "$MYREVISION" ]; then
|
||||
svn co -r"$MYREVISION" "$MYURL" "${FILE}" || exit 1
|
||||
else
|
||||
svn co "$MYURL" "${FILE}" || exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -z "$VERSION" ]; then
|
||||
cd "$FILE"
|
||||
[ -n "$MYPREFIX" ] && MYPREFIX="$MYPREFIX.rev"
|
||||
VERSION=$MYPREFIX`LC_ALL=C svn info | sed -n 's,^Last Changed Rev: \(.*\),\1,p'`
|
||||
cd -
|
||||
fi
|
||||
elif [ "$MYSCM" == "git" ]; then
|
||||
if [ -z "$SUBDIR" -a -d "$TAR_DIRECTORY" ]; then
|
||||
# update existing content for speed/bandwidth reasons
|
||||
cd "$TAR_DIRECTORY"
|
||||
OLDVERSION=`git show --pretty=%at | head -n 1`
|
||||
git pull || exit 1
|
||||
if [ -n "$MYREVISION" ]; then
|
||||
git checkout "$MYREVISION" || exit 1
|
||||
fi
|
||||
NEWVERSION=`git show --pretty=%at | head -n 1`
|
||||
cd -
|
||||
if [ "$OLDVERSION" == "$NEWVERSION" ]; then
|
||||
# cleanup and skip
|
||||
rm -rf "$TAR_DIRECTORY"
|
||||
exit 0
|
||||
fi
|
||||
mv "$TAR_DIRECTORY" "${FILE}" || exit 1
|
||||
else
|
||||
# new checkout
|
||||
git clone "$MYURL" "${FILE}" || exit 1
|
||||
if [ -n "$MYREVISION" ]; then
|
||||
cd "$FILE"
|
||||
git checkout "$MYREVISION" || exit 1
|
||||
cd -
|
||||
fi
|
||||
fi
|
||||
if [ -z "$VERSION" ]; then
|
||||
cd "$FILE"
|
||||
[ -n "$MYPREFIX" ] && MYPREFIX="$MYPREFIX."
|
||||
VERSION=$MYPREFIX`git show --pretty=%at | head -n 1`
|
||||
cd -
|
||||
fi
|
||||
else
|
||||
echo "ERROR: unknown scm $MYSCM"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -e "$FILE/$SUBDIR" ]; then
|
||||
echo "Directory does not exist: $FILE/$SUBDIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mv "$FILE/$SUBDIR" "${FILE}-${VERSION}" || exit 1
|
||||
|
||||
tar cf "$MYOUTDIR/${FILE}-${VERSION}.tar" "${FILE}-${VERSION}" || exit 1
|
||||
rm -rf "${FILE}-${VERSION}"
|
||||
|
||||
exit 0
|
30
tar_scm.service
Normal file
30
tar_scm.service
Normal file
@ -0,0 +1,30 @@
|
||||
<service name="tar_scm">
|
||||
<summary>Create a tar ball from SCM repository</summary>
|
||||
<description>This service uses a scm client to checkout or update from a given repository. Supported are svn, cvs and git.</description>
|
||||
<parameter name="scm">
|
||||
<description>Used SCM</description>
|
||||
<allowedvalue>svn</allowedvalue>
|
||||
<allowedvalue>git</allowedvalue>
|
||||
<required/>
|
||||
</parameter>
|
||||
<parameter name="url">
|
||||
<description>Checkout url</description>
|
||||
<required/>
|
||||
</parameter>
|
||||
<parameter name="subdir">
|
||||
<description>package just a sub directory</description>
|
||||
</parameter>
|
||||
<parameter name="versionprefix">
|
||||
<description>specify a base version as prefix.</description>
|
||||
</parameter>
|
||||
<parameter name="revision">
|
||||
<description>specify a revision</description>
|
||||
</parameter>
|
||||
<parameter name="filename">
|
||||
<description>base file name to be created</description>
|
||||
</parameter>
|
||||
<parameter name="version">
|
||||
<description>version to be used in tar</description>
|
||||
</parameter>
|
||||
</service>
|
||||
|
Loading…
Reference in New Issue
Block a user