Commit bc6a8db7 authored by Yuri Fil's avatar Yuri Fil

Merge branch 'master' of git.eter:/people/lav/packages/etersoft-build-utils

parents f68de8a6 4fbab460
......@@ -14,6 +14,7 @@ install:
$(MAKE) -C po install
mkdir -p $(DESTDIR)$(bindir)
mkdir -p $(DESTDIR)$(sysconfdir)/eterbuild/apt $(DESTDIR)$(sysconfdir)/rpm
mkdir -p $(DESTDIR)$(sysconfdir)/bashrc.d/
mkdir -p $(DESTDIR)$(pkgdatadir)/functions/
mkdir -p $(DESTDIR)$(pkgdatadir)/pkgrepl $(DESTDIR)$(pkgdatadir)/grprepl/
install -m 755 bin/* $(DESTDIR)$(bindir)
......@@ -21,6 +22,7 @@ install:
install -m 644 etc/rpm/* $(DESTDIR)$(sysconfdir)/rpm/
install -m 644 etc/config $(DESTDIR)$(sysconfdir)/eterbuild/
install -m 644 etc/repos $(DESTDIR)$(sysconfdir)/eterbuild/
install -m 644 etc/bashrc.d/* $(DESTDIR)$(sysconfdir)/bashrc.d/
install -m 644 share/eterbuild/pkgrepl/pkgrepl.* $(DESTDIR)$(pkgdatadir)/pkgrepl/
install -m 644 share/eterbuild/grprepl/grprepl.* $(DESTDIR)$(pkgdatadir)/grprepl/
install -m 644 share/eterbuild/eterbuild $(DESTDIR)$(pkgdatadir)/
......
etersoft-build-utils-1.7.6: 05 Feb 2010
- add bashrc.d aliases apti, apts, aptw, finds
- rpmgp: fix src.rpm import, allow to use several files
- set package related variables after pack_srpm, add full filepath to LISTBUILT
- introduce querypackage and build_rpms_name_by_srpm, use it in all cases
- convert repo to utf8
- rpmgs: add real source support (for Source-svn, Source-url commented lines)
- rpmbph: do not add rpm-build-compat buildreq to backported specs
- rpmbs: do log task number
- gpush: do ginit if no remote aliases
etersoft-build-utils-1.7.5: 22 Jan 2010
- rpmbs/rpmbsh: add -l option for lazy-cleanup after build
- rpmgs: check dir with the same as package name firstly
......
rpmgp -b - apt-get build-dep,
lib, %files:
Исправить ситуацию для 27.5.1 (MINOR - 1, MAJOR 27.5 должно быть), почему стирается %revision
# Source-git: http://git.altlinux.org/people/lav/packages/rpm-build-fonts.git
# Source-md5: 792f3012eae343bc04314b868f6fd1b9
Если пакет начинается с lib, добавлять перед %files:
%post -p %post_ldconfig
%postun -p %postun_ldconfig
backports
для backports
- upload.SS rpmbs -u ??
Что-то пишет пакет в upload.SS при простом rpmbs -u ??
http://git.altlinux.org/people/kharpost/packages/gitalt-tasker.git?p=gitalt-tasker.git;a=blob;f=gitalt-tasker/git-task;h=81e0261813a9fe2be230fb0c47b4ff4efd9a2675;hb=bfcc80b9af49b8ea0629db80d4c2f29a024d574e
korinf
не раобтает указание целевого каталога в korinf
:
gear
# etersoft-build-utils repack DIR - DIR NAME-VERSION
# etersoft-build-utils remove DIR/FILE [DIR/FILE] -
Добавить поддержку в спеке служебного комментария для автоматической перепаковки исходников:
Учитывать gear
# etersoft-build-utils repack DIR - упаковать DIR в архив с названием NAME-VERSION
# etersoft-build-utils remove DIR/FILE [DIR/FILE] - удалить указанные каталоги и файлы и упаковать
:
Удаление пакета из Сизифа:
ssh git.alt task new
ssh git.alt task add del PACKAGE
ssh git.alt task run
......@@ -27,13 +31,13 @@ task #9430: added #1: delete package python-module-pyclamav from sisyphus
task #9430: queued, result will be emailed to lav@altlinux.org
:
сделать раскрытие версии и имени пакета:
fonts-ttf-%fname-1.04-alt1.src.rpm
apt-cache list-extras
BuildArch: noarch
Нужно убирать BuildArch: noarch при бэкпортировании
Нужно добавлять устаревшие ныне секции при бэкпортировании
todo rebuild:
......@@ -44,61 +48,61 @@ exec time rpmbuild --target="\$target" $nodeps -bs "\$@"
!!
, ,
( ). , ,
.
Изменить порядок поиска замен, чтобы он происходил без базовой версии, а замены от предыдущей версии
действовали на следующие (тогда нужно вводить понятие порядка версий). Таким образом, файл с общими заменами не нужен,
а при поиске нужно искать с текущей версии до меньших.
Req ( )
Нужно сделать замену требований к пакетам только для Req (и уж точно не для )
:
ALT -
pkgrepl.rpm - ,
pkgrepl.pclinux -
pkgrepl.pclinux.2007 -
, ( ALT)
файлы с заменой:
пакет ALT - пакет замены
pkgrepl.rpm - базовый, используется всегда
pkgrepl.pclinux - для конкретной системы
pkgrepl.pclinux.2007 - для конкретной версии системы
записываем, откуда (из ALT) на что в другой системе менять
%homedir tmp ?
%homedir в определении tmp не работает?
rpm -bE rpm --showrc ?
Реализовать rpm -bE через rpm --showrc ?
=== ===
=== Текущая разработка ===
ݣ ( , ).
( ,
). , , ݣ .
Есть ещё пакеты с версией в виде даты (именно версией, а не релизом). Их
тоже желательно не забыть (в том числе в части, касающейся
макроподстановок). Но это, кажется, ещё более сложная задача.
=== 1.7 ===
- %changelog rpmcs
-
- rpmbph src.rpm ( hasher):
--init-root, .in, rpm -i src.rpm, rpmbph ( hasher), .out { }
hasher ??
- ,
- / ?
=== Версия 1.7 ===
- Не трогать часть файла после %changelog при rpmcs
- добавить сборки раскидавшихся зависимостей на Иксы в одну
- rpmbph для src.rpm (через hasher):
--init-root, .in, rpm -i src.rpm, rpmbph (не собирающий в hasher), .out { команды в скобках }
чтобы спек исправлял прямо в hasher при сборке??
- подготовить текст новости, порекламировать
- обновить/сделать страницу с описанием проекта?
=== 1.8 ===
+ how to use --build-args= for hsh? - myhsh rpm
- ?
- , ޣ (diff )
- .pot
- pot - echog ( message)
=== Версия 1.8 ===
+ how to use --build-args= for hsh? - проброс параметров в myhsh как параметров для rpm
- Сделать нормальную документацию?
- получение спеков из других проектов, с отчётом об обновлении (diff между)
- исправить формирование .pot
- исправить способ создания pot -и echog (заметить на message)
=== 2.0 ===
- /etc/rpm/*functions
- LICENSE INSTALL
- TODO:
( -- )
- -i -u
- ( )?
=== Версия 2.0 ===
- удалить файл /etc/rpm/*functions
- доделать проверку на качество лицензии в LICENSE и содержимое INSTALL
- TODO: добавить возможность указания запускаемой команды
(разделяя строку параметров на до -- и после)
- -i -u требуют именно такого порядка использования
- перейти на общую обработку всех команд (одним скриптом)?
Unpackaged:
awk '
on { if (/^ +\//) print $0; else on=0 }
/^warning: Installed \(but unpackaged\)/ { on=1; print $0 }
' <"$LOG_FILE"
            on { if (/^ +\//) print $0; else on=0 }
            /^warning: Installed \(but unpackaged\)/ { on=1; print $0 }
        ' <"$LOG_FILE"
----
......@@ -111,14 +115,14 @@ $ echo $a
line3
> >>:) 3. ,
> >>:) 3. Было бы здорово, чтобы скрипты сначала проверяли
> >>
> >> ,
> >> , apt.conf
> >> .
> >>передаваемые им аргументы, а потом начинали печатать
> >> служебную информацию, как то какой apt.conf они будут
> >> использовать.
> >
> > .
> >Не понял проблемы.
>
> rpmgs --help :)
> Попробуйте написать rpmgs --help :)
# - short-circuit -bc -bi :(
# - short-circuit работает только с -bc и -bi на других платформах :(
......@@ -5,8 +5,10 @@
load_mod git
if [ "$1" = "-h" ] ; then
echo "gpull [args] - do git pull --rebase"
echo "Use: gpull without parameters"
echo "gpull - do git pull --rebase"
echo "Use: gpull [GEAR] [branch]"
echo " gpull without parameters or with branch name"
echo " gpull git.eter - for pull from git.eter gear repo"
exit 1
fi
......
......@@ -8,7 +8,7 @@ test -r "$1" && fatal "Do not need any files in params"
if [ "$1" = "-h" ] ; then
echo "gpush - publish current project repo remote git repo"
echo "Use: gpush [-f|--force] [-a|--all] [project name] [target branch]"
echo "Use: gpush [-f|--force] [-a|--all] [GEAR] [project name] [target branch]"
exit 1
fi
......@@ -68,6 +68,11 @@ push_to_remote()
git push --tags $GHOST:packages/$PROJECTNAME.git $TARGETBRANCH
}
# if remote list is empty, do ginit
if [ -z "$(get_remote_git_list)" ] ; then
ginit $GIRARHOST
fi
for i in `( echo $GIRARHOST; get_remote_git_list ) | uniq` ; do
push_to_remote $i
done
......
......@@ -33,11 +33,12 @@ phelp()
echog "$Descr"
echog "$Usage"
echog "Options:"
echog " -c - start from compile stage"
echog " -i - install and package"
echog " -p - packaging installed files into package"
echog " -i - skip build, but do install and package"
echog " -r - find build requires"
echog " -R - find build requires with -bi"
echog "Ext. options:"
echog " -c - start from compile stage"
echog " -p - packaging installed files into package"
}
while getopts :hciprR opt; do
......
......@@ -30,7 +30,8 @@ echo "Converting spec $SPECNAME to $MDISTR..."
# Set buildreq
if [ "$VENDOR" = "alt" ] ; then
BUILDREQ="BuildRequires: rpm-build-compat >= 0.95"
#BUILDREQ="BuildRequires: rpm-build-compat >= 0.95"
BUILDREQ=
# Change release according to alt policy with extensions
# General rule: alwars alt(N-1).MM.(N)
set_release $SPECNAME $(get_txtrelease $SPECNAME)$(decrement_release $BASERELEASE).$MDISTR.$BASERELEASE
......@@ -261,11 +262,11 @@ phelp()
echo "Use rpmbph -$CURRENTBRANCHNAME for backport to ALT $CURRENTBRANCHNAME and so on"
echog "Options:"
echog " -r - remote build"
# echog " -m - send result via e-mail"
echog " -u/-U - sign and upload after build"
echog " -u - sign and upload after build"
echog " -n - do not build in hasher (use first in the list)"
echog " -i - install built packages in test hasher"
echog " -v - more verbose"
# echog " -m - send result via e-mail"
}
......@@ -312,11 +313,11 @@ fi
[ -n "$NOBUILD" ] && BUILDCOMMAND="$ETERBUILDBIN/rpmbs --rmsource --rmspec"
[ -z "$BUILDCOMMAND" ] && BUILDCOMMAND="$ETERBUILDBIN/rpmbsh $GIRARHOST"
if [ "$VENDOR" = "alt" ] ; then
# run inside gear repo, just create backported spec
# set SPECDIR from LISTNAMES if empty
[ -n "$SPECDIR" ] || set_specdir $LISTNAMES
if is_gear $SPECDIR ; then
# set SPECDIR from LISTNAMES if empty
[ -n "$SPECDIR" ] || set_specdir $LISTNAMES
# if run for ALT inside gear repo, just create backported spec
if [ "$VENDOR" = "alt" ] && is_gear $SPECDIR ; then
[ -f "$LISTNAMES" ] || fatal "Run with one spec inside gear repo"
USEBRANCH=$MDISTR
SPEC=$LISTNAMES
......@@ -367,11 +368,10 @@ if [ "$VENDOR" = "alt" ] ; then
#git checkout $CURBRANCH
fatal "Commit error. You are still in $MDISTR branch with modified and uncommitted spec"
fi
[ -n "$NOBUILD" ] && BUILDCOMMAND="$ETERBUILDBIN/rpmbs"
[ -n "$NOBUILD" ] && BUILDCOMMAND="$ETERBUILDBIN/rpmbs $GIRARHOST"
$BUILDCOMMAND $LISTRPMARGS $REMOTEBUILD $DISTRARG $SPEC || { git checkout $CURBRANCH ; fatal "Can't build" ; }
git checkout $CURBRANCH
exit $?
fi
fi
unset MENV MENVARG
......
......@@ -41,16 +41,17 @@ phelp()
echog "$Descr"
echog "$Usage"
echog "Options:"
echog " -s - sign package(s) and move it to upload dir (ETERDESTSRPM)"
echog " -u - sign and run gear build task after build"
echog " -a TASK - sign package(s), push/upload it and add to task TASK"
echog " -l - lazy cleanup (clean before build, not after)"
echog "Ext. options:"
echog " -c - only sign package(s) with checking"
echog " -u - sign package(s), upload it and run build"
echog " -a TASK - sign package(s), update it and add to task TASK"
# echog " -U - sign package(s) and upload it to Incoming (updates)"
# echog " -d - remove package(s) from SRPMS and Incoming"
echog " -l - lazy cleanup (before build, not after)"
echog " -s - sign package(s) and move it to upload dir (ETERDESTSRPM)"
echog " -n - do not check with sisyphus_check before upload"
echog " -o - create nosrc.rpm package"
echog " -z - create src.rpm with compatible gzip compression"
# echog " -U - sign package(s) and upload it to Incoming (updates)"
# echog " -d - remove package(s) from SRPMS and Incoming"
}
while getopts :hscuUdnoa:z opt; do
......@@ -112,9 +113,9 @@ extract_tarball_to_dest()
cd $TDIR
cat "$1" | rpm2cpio | cpio -i "*.tar*"
#cp -fv *.tar* $2
local TARNAME=$(rpm -q -p --queryformat "%{NAME}-%{VERSION}" $1)
local TARNAME=$(querypackage $1 "" "%{NAME}-%{VERSION}")
# FIXME: hack to replace alt release to eter
local TARGETTARNAME=$(rpm -q -p --queryformat "%{NAME}-%{VERSION}-%{RELEASE}" $1 | sed -e "s/-alt/-eter/g")
local TARGETTARNAME=$(querypackage $1 "" "%{NAME}-%{VERSION}-%{RELEASE}" | sed -e "s/-alt/-eter/g")
copy_tarball_to_tar_bz2 $TARNAME*.tar* $2/$TARGETTARNAME.tar.bz2
cd -
make_md5sum $2 $TARGETTARNAME.tar.bz2
......@@ -183,11 +184,13 @@ if [ -n "$UPLOADNOW" ] && is_gear $SPECDIR ; then
echo
echo "Run build $BASENAME at $GIRARHOST"
if [ -n "$TASKNUMBER" ] ; then
ssh $GIRARHOST task add $TASKNUMBER repo $BASENAME $TAG
ssh $GIRARHOST task add $TASKNUMBER repo $BASENAME $TAG 2>&1 | tee $RPMDIR/uploaded.log.tmp
else
ssh $GIRARHOST build -b $BINARYREPO $BASENAME $TAG
ssh $GIRARHOST build -b $BINARYREPO $BASENAME $TAG 2>&1 | tee $RPMDIR/uploaded.log.tmp
fi
echo "run task $BASENAME with tag $TAG at $GIRARHOST (in $BINARYREPO) at `date "+%c"`" >>$RPMDIR/uploaded.log
cat $RPMDIR/uploaded.log.tmp | head -n2 | tail -n1 >> $RPMDIR/uploaded.log
echo "run $TASKNUMBER task $BASENAME with tag $TAG at $GIRARHOST (in $BINARYREPO) at `date "+%c"`" >>$RPMDIR/uploaded.log
rm -f $RPMDIR/uploaded.log.tmp
exit
fi
......@@ -302,24 +305,28 @@ done
if [ -n "$TASKNUMBER" ] ; then
echo "Add $TASKLIST to task $TASKNUMBER"
[ -n "$VERBOSE" ] && echo "...with command ssh $GIRARHOST task add $TASKNUMBER $TASKLIST"
ssh $GIRARHOST task add $TASKNUMBER $TASKLIST
ssh $GIRARHOST task add $TASKNUMBER $TASKLIST 2>&1 | tee $RPMDIR/uploaded.log.tmp
else
echo "Create task for $TASKLIST"
[ -n "$VERBOSE" ] && echo "...with command ssh $GIRARHOST build -b $BINARYREPO $TASKLIST"
ssh $GIRARHOST build -b $BINARYREPO $TASKLIST
ssh $GIRARHOST build -b $BINARYREPO $TASKLIST 2>&1 | tee $RPMDIR/uploaded.log.tmp
fi
cat $RPMDIR/uploaded.log.tmp | head -n2 | tail -n1 >> $RPMDIR/uploaded.log
for i in $LISTBUILT ; do
# FIXME: more general way
LOGFILE="$LOGDIR/`basename $i .src.rpm`$MENVARG.log"
echo >>$LOGFILE
date >>$LOGFILE
echo "uploaded">>$LOGFILE
TEXTADD="run build src.rpm"
TEXTADD="run $TASKNUMBER build src.rpm"
[ -z "$TASKNUMBER" ] || TEXTADD="add src.rpm to task $TASKNUMBER"
echo "$(basename $i) $TEXTADD at $GIRARHOST ($MENV) at `date "+%c"`" >>$RPMDIR/uploaded.log
done
rm -f $RPMDIR/uploaded.log.tmp
echog "Removing buildroot after upload..."
for i in $LISTNAMES ; do
if [ -z ${i/*.src.rpm/} ] ; then
......
......@@ -31,13 +31,14 @@ phelp()
echog "$Descr"
echog "$Usage"
echog "Options:"
echog " -r - remote build"
echog " -t - make temporary commit before build (rpmbb like behavior)"
echog " -u - sign and upload after build"
echog " -s - sign and and copy to upload dir (ETERDESTSRPM) after build"
echog " -i - install built packages in test hasher"
echog " -l - lazy cleanup (before build, not after)"
echog " -r - remote build (on $BUILDSERVER host)"
echog " -u - sign and run gear build task after build"
echog " -i - install built packages in test hasher (via loginhsh -t)"
echog "Ext. options:"
echog " -c - build without stuff (previous built packages)"
echog " -s - sign and and copy to upload dir (ETERDESTSRPM) after build"
echog " -t - make temporary commit before build (rpmbb like behavior)"
echog " -l - lazy cleanup (clean before build, not after)"
}
while getopts :hrulsimt opt; do
......
......@@ -11,8 +11,11 @@
# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common
load_mod rpm web
BUGZILLAURL="https://bugzilla.altlinux.org"
PRODUCT=Sisyphus
which xdg-open 2>/dev/null >/dev/null && BROWSER=xdg-open
show_bugs()
{
......@@ -28,25 +31,28 @@ show_bugs()
show_bugbyid()
{
URL="https://bugzilla.altlinux.org/show_bug.cgi?id=$1"
# TEXT=1
show_bugs $URL
local URLSHOWBUG="$BUGZILLAURL/show_bug.cgi?id=$1"
show_bugs "$URLSHOWBUG"
}
#parse_cmd_pre "$@"
if [ "$1" = "-h" ]; then
echog "rpmbugs [-t] spec | bug number | package name | -qf command | /path/to/file - open bugs in BROWSER"
echog "rpmbugs - open bugs in BROWSER"
echog "rpmbugs [-t] spec | bug number | package name | -qf command_name | /path/to/file"
echog "Options:"
echog " -t - list in text console"
exit 0
fi
if [ "${1}" = "-n" ] ; then
if [ "$1" = "-n" ] ; then
shift
NEWBUG=1
fi
if [ "${1}" = "-t" ] ; then
if [ "$1" = "-t" ] ; then
shift
TEXT=1
which links >/dev/null && BROWSER=links
......@@ -55,40 +61,36 @@ fi
test -z "$DISPLAY" && TEXT=1
SPECLIST=$@
if [ "${1}" = "-qf" ]
if [ "$1" = "-qf" ]
then
shift
SPECLIST=$1
if [ -e $SPECLIST ] ; then
SPECLIST=`rpm -qf --queryformat "%{NAME} " $SPECLIST`
else
SPECLIST=`rpmqf $SPECLIST`
SPECLIST=$(rpmqf "$1")
if [ -e "$1" ] ; then
SPECLIST=$(querypackage $SPECLIST NAME)
fi
fi
# if param is number
if [ -z `echo ${1} | sed -e "s/[0-9]*//"` ] ; then
show_bugbyid $1
exit 0
show_bugbyid "$1"
exit
fi
for i in $SPECLIST
do
for i in $SPECLIST ; do
if [ -f $i ]
then
if [ -z ${i/*rpm/} ]
then
# it is rpm package
PKGNAME=`rpm -qp --queryformat "%{NAME}" $i`
PKGNAME=$(querypackage $i NAME)
else
PKGNAME=$(eval_spec $i | get_var "Name")
test -z ${PKGNAME} && fatal "Cannot get package name"
fi
else
PKGNAME=`rpm -q --queryformat "%{NAME}" $i` || PKGNAME=$i
# yes, DD=$(false) || DD=other works
PKGNAME=$(querypackage $i NAME) || PKGNAME=$i
fi
PRODUCT=Sisyphus
URL="https://bugzilla.altlinux.org/buglist.cgi?product=$PRODUCT&component=$PKGNAME&component_type=equals&simple=1"
if [ -n "$NEWBUG" ] ; then
fatal "Do not realized yet. Welcome to developing!"
......@@ -100,7 +102,8 @@ do
#altbug --pkg "$PKGNAME" --subj "$SUMMARY"
show_bugbyid $ID
else
show_bugs $URL | grep "@"
local URLBUGLIST="$BUGZILLAURL/buglist.cgi?product=$PRODUCT&component=$PKGNAME&component_type=equals&simple=1"
show_bugs "$URLBUGLIST" | grep "@"
fi
done
......@@ -99,6 +99,12 @@ do
fi
fi
# if there is no altlinux in changelog yet
if ! grep -v "Packager" $i | grep "@altlinux" ; then
echo "Add changelog with initial build"
add_changelog $i -e "- initial build for ALT Linux Sisyphus"
fi
echog "cleanup_spec for $i..."
cleanup_spec $i
......
......@@ -11,7 +11,7 @@
# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common
load_mod rpm repl git rpm
load_mod rpm repl git rpm web
# path to ALT Linux's repositories
REPOSITORY="files/SRPMS obsolete orphaned"
......@@ -119,7 +119,7 @@ check_system()
check_name $NAME
if [ "$DOWNLOADALL" ] ; then
for i in $NLIST ; do
wget -c $URL/$i
download_url $URL/$i
done
fi
}
......@@ -299,7 +299,7 @@ if [ -n "$CHECKONLINE" ] ; then
PKGNAME=$(get_pkgname_from_filename $SRCRPM)
else
PKGNAME=$1
SRCRPM=`rpm -q $PKGNAME --queryformat "%{SOURCERPM}\n" | tail -n 1`
SRCRPM=$(querypackage $PKGNAME "" "%{SOURCERPM}\n" | tail -n 1)
fi
fi
......@@ -375,12 +375,7 @@ then
# it is src.rpm package
SRCRPM=$1
else
if [ -z "${1/*rpm/}" ] ; then
# it is rpm package (locale placed?)
SRCRPM=`rpm -qp $1 --queryformat "%{SOURCERPM}\n"`
else
SRCRPM=`rpm -q $1 --queryformat "%{SOURCERPM}\n"`
fi
SRCRPM=$(querypackage $1 "" "%{SOURCERPM}\n")
fi
test -z "$SRCRPM" && fatal "Cannon find package for $1"
echog "Try to download $SRCRPM"
......
......@@ -14,26 +14,26 @@
# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common
load_mod rpm tarball
load_mod rpm tarball web
WEXT=""
GETSOURCE=""
LOADLIST="0"
#############################
Usage="Usage: $name [-a -r ] spec ... | spec new_version"
Usage="Usage: $name [-a -r ] spec [new_version]"
function mygetopts()
{
name=${0##*/}
Descr="$name - get sources for spec"
Descr="$name - get sources by spec / repository"
phelp()
{
echog "$Descr"
echog "$Usage"
echog "You can run rpmgs file.spec new_version for set new version and download it"
echog "You can run 'rpmgs file.spec new_version' for set new version and download it"
echog "Options:"
echog " -a - get all source (not only 0)"
echog " -a - get all source (not only Source|Source0)"
echog " -f - force download (remove source before download)"
}
......@@ -41,7 +41,7 @@ while getopts :haf opt; do
case $opt in
h) phelp; exit 0;;
a) LOADLIST=" 0 1 2 3 4 5 6 7 8" ;;
f) FORCEDOWNLOAD=1 ;;
f) FORCEDOWNLOAD=-f ;;
+?) echog "$name: options should not be preceded by a '+'." 1>&2; exit 2;;
?) echog "$name: $OPTARG: bad option. Use -h for help." 1>&2 ; exit 2;;
esac
......@@ -54,19 +54,12 @@ LISTRPMARGS=$@
}
get_tarball()
{
# use wget with try=1 and timeout = 30 sec
wget -c -t 1 -T 30 "$1"
}
get_archive()
{
#TODO: check for gz
URL=${GETSOURCE/.tar.bz2/}
[ "$URL" = "$GETSOURCE" ] && URL=${GETSOURCE/.tar/}
get_tarball "$URL.$1" || return
download_url "$URL.$1" || return
WEXT=`basename "$URL"`
test -f "$WEXT.$1" || return
[ "$1" = "tar.bz2" ] || echog -n "Converting to $WEXT.tar..."
......@@ -76,7 +69,7 @@ get_archive1()
{
#TODO: check for gz
URL=${GETSOURCE/.bz2/}
get_tarball "$URL$1" || return
download_url "$URL$1" || return
WEXT=`basename "$URL"`
test -f "$WEXT" || return
echog -n "Converting to $WEXT.bz2..."
......@@ -86,12 +79,14 @@ get_archive1()
get_tarbz2()
{
get_archive tar.bz2
bunzip -t $WEXT.tar.bz2
return $?
}
get_bz2()
{
get_archive1 .bz2
bunzip -t $WEXT.bz2
return $?
}
......@@ -186,6 +181,47 @@ function get_source()
GETSOURCE=$(eval_spec $1 | get_var "$2")
}
# param: spec name number (f.i., url for Source-url)
function source_ext()
{
local GETSOURCEEXT=
# %define SourceUrl ftp://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/last/sources/tarball/%name-%version.tar.gz
#GETSOURCEURL=$(eval_spec $1 | grep -i "^%define ${2}Url${3} " | head -n 1 | sed -e "s/ *\$//g" | sed -e "s/^%define[ \t].*[ \t]//g")
if grep -q "# Source$3-$2:" "$1" ; then
local TMPSPEC=$1.tmpurl
local NEWSOURCE=$(grep "# Source$3-$2:" "$1" | sed -e "s/.*$2:[ \t]*//g")
test -n "$NEWSOURCE" || fatal "Can't extract URL from $Source$3-$2"
cat $1 | sed -e "s|^Summary:.*|Summary: $NEWSOURCE|g" > $TMPSPEC
GETSOURCEEXT=$(eval_spec "$TMPSPEC" | get_var "Summary")
rm -f "$TMPSPEC"
fi
echo "$GETSOURCEEXT"
test -n "$GETSOURCEEXT"
}
# Source-svn: http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/Collection/
function get_source_svn()
{
GETSOURCESVN=$(source_ext "$1" svn "$2")
#if [ -n "$GETSOURCESVN" ] ; then
# warning "Source-svn is not supported yet"
# ( cd $SPECDIR ; git svn clone $GETSOURCESVN .)
#fi
#test -n "$GETSOURCESVN"
}
# Source-git: http://git.altlinux.org/people/lav/packages/rpm-build-fonts.git
# Source-url: ftp://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/last/sources/tarball/%name-%version.tar.gz
# Get real Url from comment
function get_source_url()
{
GETSOURCEURL=$(source_ext "$1" url "$2")
}
function print_error()
{
echog "You have no spec files as arg"
......@@ -253,27 +289,51 @@ do
fi
mkdir -p $RPMSOURCEDIR/ && pushd $RPMSOURCEDIR/ || fatal "Can't create/chdir..."
echog "Try to load $GETSOURCE for $i"
#if is_gear $SPECDIR && [ -n "${GETSOURCE/*.tar/}" ] ; then
# warning "It is recommended to use .tar tarballs for sources in gear"
# get_tarball "$GETSOURCE"
if [ -n "${GETSOURCE/*.bz2/}" ] && ! is_gear $SPECDIR ; then
warning "It is recommended to use .bz2 tarballs for sources in rpm"
get_tarball "$GETSOURCE"
elif [ -n "${GETSOURCE/*.tar.bz2/}" ] && ! is_gear $SPECDIR ; then
warning "It is not tarball (possible single file)..."
get_bz2 || get_gz || get_raw || fatal "Error: Cannot retrieve $GETSOURCE"
get_source_url $SPECDIR/$i $nn || get_source_svn $SPECDIR/$i $nn
if [ -n "${GETSOURCESVN}" ] ; then
is_gear $SPECDIR || fatal "Source-svn works only with gear repo"
elif is_gear $SPECDIR; then
echog "Try to load ${GETSOURCEURL:-$GETSOURCE} for $i"
if [ -n "${GETSOURCE/*.tar/}" ] ; then
warning "It is recommended to use .tar tarballs for sources in gear"
fi
if [ -n "${GETSOURCEURL}" ] ; then
# UpUrl for gear
download_url "$GETSOURCEURL"
# FIXME: gear-update can use any tarball
copy_tarball_to_tar $(basename "$GETSOURCEURL") $FTB
else
if [ -z "${GETSOURCE/*.tar/}" ] && is_gear $SPECDIR; then
echo "Get tarball for gear"
FORGEAR=1
if [ -z "${GETSOURCE/*.tar/}" ] ; then
# try to load and convert
get_tarbz2 || get_targz || get_tgz || get_7z || get_zip || get_tbz2 || get_tbz || get_tar || get_rar || dir_name || fatal "Cannot retrieve $GETSOURCE"
else
download_url "$GETSOURCE"
fi
get_tarbz2 || get_targz || get_tgz || get_7z || get_zip || get_tbz2 || get_tbz || get_tar || get_rar || dir_name || fatal "Error: Cannot retrieve $GETSOURCE"
#echo "Get tarball $FTB for gear"
#FORGEAR=1
fi
else
[ -z "${GETSOURCEURL}" ] || fatal "Source git works only with gear repo"
echog "Try to load ${GETSOURCEURL:-$GETSOURCE} for $i"
if [ -n "${GETSOURCE/*.bz2/}" ] ; then
warning "It is recommended to use .bz2 tarballs for sources in rpm"
fi
if [ -n "${GETSOURCEURL}" ] ; then
# UpUrl for rpm
download_url "$GETSOURCEURL"
copy_tarball_to_tar_bz2 $(basename "$GETSOURCEURL") $FTB
elif [ -z "${GETSOURCE/*.tar.bz2/}" ] ; then
download_url "$GETSOURCE"
elif [ -n "${GETSOURCE/*.bz2/}" ] ; then
get_tarbz2 || get_targz || get_tgz || get_7z || get_zip || get_tbz2 || get_tbz || get_tar || get_rar || dir_name || fatal "Cannot retrieve $GETSOURCE"
#echog -n "Compressing to $WEXT.tar.bz2..."
test -f $WEXT.tar.bz2 || bzipit $WEXT.tar || fatal "Cannot bzip $WEXT.tar"
elif [ -n "${GETSOURCE/*.tar.bz2/}" ] ; then
warning "It is not tarball (possible single file)..."
get_bz2 || get_gz || get_raw || fatal "Cannot retrieve $GETSOURCE"
fi
if [ -z "$FORGEAR" ] ; then
echog -n "Compressing to $WEXT.tar.bz2..."
test -f $WEXT.tar.bz2 || bzipit $WEXT.tar || fatal "Error: Cannot bzip $WEXT.tar"
fi
echo "DONE"
......@@ -286,17 +346,32 @@ do
CURVER=$(get_version $i)
CURREL=$(get_release $i)
EGEARME=""
is_gear && EGEARME="import in git"
add_changelog_helper "- new version ($CURVER) $EGEARME" $i || echog "Changelog entry for $CURVER-$CURREL already exists"
is_gear && EGEARME=" import in git"
add_changelog_helper "- new version ($CURVER)$EGEARME" $i || echog "Changelog entry for $CURVER-$CURREL already exists"
fi
if [ -n "$GSSETVERSION" ] && is_gear ; then
if [ -n "$GSSETVERSION" ] || [ -n "$FORCEDOWNLOAD" ]; then
if [ -n "${GETSOURCESVN}" ] ; then
# clone svn repo to current dir
# FIXME: need to clone in git root dir
GITROOT=.
[ $(basename `pwd`) = ".gear" ] && GITROOT=../
git svn clone $GETSOURCESVN $GITROOT
echo "Run svn rebase from $GETSOURCESVN"
git svn rebase
elif is_gear ; then
CURNAME=$BASENAME
test -d "$CURNAME" || CURNAME=$(get_tarballname $i)
test -d "$CURNAME" || CURNAME=$(get_tarballname "$i")
[ -d "$CURNAME" ] || CREATEFLAG=-c
# mkdir -p "$CURNAME" && git add "$CURNAME"
#fi
echo "Commit tarball $RPMSOURCEDIR/$FTB to git subdir '$CURNAME'..."
gear-update "$RPMSOURCEDIR/$FTB" "$CURNAME" && rm -f "$RPMSOURCEDIR/$FTB"
gear-update $FORCEDOWNLOAD $CREATEFLAG "$RPMSOURCEDIR/$FTB" "$CURNAME" || fatal "can't import tarball $CURNAME"
rm -f "$RPMSOURCEDIR/$FTB"
git commit -m "just import $(basename $RPMSOURCEDIR/$FTB) with rpmgs script"
fi
else
is_gear && echo "Run without version. Skip tarball commiting."
is_gear && echo "Skip tarball committing (run with version or with -f)."
fi
done
......
......@@ -16,6 +16,9 @@ load_mod spec rpm etersoft
if [ "$1" = "-h" ]; then
echog "rpmpub - Etersoft specific script for publish gear repo to target ftp dir"
echog "Usage: rpmpub [-r PROJECTVERSION ] [SPEC] [TARGETDIR]"
echog "Options:"
echog " -r PROJECTVERSION - set other project version (PROJECTVERSION/sources)"
echog " TARGETDIR - copy signed src.rpm package to TARGETDIR"
echog "You can set default target dir in UPLOADDIR variable in config file"
exit 0
fi
......@@ -41,7 +44,7 @@ if [ ! -r $SPECNAME ] ; then
fatal "Spec $SPECNAME does not found in the current dir"
fi
#ETERDESTSRPM=/var/ftp/pub/Etersoft/CIFS@Etersoft/$VERSION/sources
#Example: ETERDESTSRPM=/var/ftp/pub/Etersoft/CIFS@Etersoft/$VERSION/sources
ETERDESTSRPM=$1
if [ -z "$ETERDESTSRPM" ] ; then
ETERDESTSRPM=$(get_etersoft_srpm_path $SPECNAME "$ALPHA")
......
......@@ -9,7 +9,7 @@
# TODO not -i only, we need any key
if [ "$1" = "-h" ]; then
echo "rpmqf - the same as rpm -qf"
echo "rpmqf - the same as rpm -qf, but use which for search command place"
exit 0
fi
......@@ -45,4 +45,4 @@ real_file()
real_file "$1"
rpm -qf $ARG "$FULLFILEPATH"
rpmquery -f $ARG "$FULLFILEPATH"
......@@ -31,7 +31,9 @@ test -n "$GSSETRELEASE" || GSSETRELEASE=alt1
export GSSETRELEASE
if [ "$1" = "-h" ]; then
echo "rpmrb spec [vermajor][.verminor] [rel] - update spec to vermajor.verminor version, build %rel release"
echog "rpmrb - update spec to vermajor.verminor version, build %rel release"
echog "Usage: rpmrb spec [vermajor][.verminor] [rel]"
echog "Example: rpmrb name.spec 22.6 alt2"
exit 0
fi
......
......@@ -31,7 +31,7 @@ make_testingbox()
}
Usage="Usage: $name [-M24 -M40]"
Usage="Usage: $name [-M24 -M40] [-s]"
function mygetopts()
{
name=${0##*/}
......@@ -43,7 +43,7 @@ phelp()
echog "$Usage"
echog "Options:"
echog " -s - get all unmets"
echog " -M40 - test for distro ALT Linux 4.0"
echog " -$CURRENTBRANCHNAME - test for distro ALT Linux $CURRENTBRANCHNAME"
}
SKIPTST=
......@@ -116,7 +116,7 @@ export LESS_PROGRAM=/dev/null
for i in $(echo $NEWPKGDIR/*.rpm) ; do
OLDPKGNAME=$(rpm -qp $i | sed -e "s|-[0-9].*||g")
# search in the our arch repo
PKGARCH=$(rpm -qp --queryformat "%{ARCH}" $i)
PKGARCH=$(querypackage $i ARCH)
OLDPKG=$(echo $SISYPHUSPATH/$PKGARCH/RPMS.*/$OLDPKGNAME-[0-9]*.rpm)
if [ ! -r "$OLDPKG" ] ; then
echo "Cannot find old package for $(basename $i), skipping"
......
......@@ -10,11 +10,7 @@
# load common functions, compatible with local and installed script
. `dirname $0`/../share/eterbuild/functions/common
which xdg-open 2>/dev/null >/dev/null && BROWSER=xdg-open
# (command from perl-libwww)
which GET &>/dev/null && GET=GET || GET=false
load_mod rpm web
#############################
......@@ -30,9 +26,10 @@ phelp()
echog "$Usage"
echog "Options:"
echog " -c - check URL"
echog " -f - print failed URL only"
echog " -p - open package page at sisyphus.ru"
echog " -s - open source dir in browser"
echog "Ext. options:"
echog " -f - print failed URL only"
}
while getopts :hcfsp opt; do
......@@ -78,7 +75,7 @@ get_pkginfo()
if [ -z ${i/*rpm/} ]
then
# it is rpm package
RPM_URL=`rpm -qp --queryformat "%{URL}" ${i}`
RPM_URL=$(querypackage ${i} URL)
SOURCE=
else
RPM_URL=$(eval_spec ${i} | get_var "Url")
......@@ -86,8 +83,8 @@ get_pkginfo()
fi
else
# will it package name
RPM_URL=`rpm -q --queryformat "%{URL}" ${i}`
SOURCE=`rpm -q --queryformat "%{SOURCE}" ${i}`
RPM_URL=$(querypackage ${i} URL)
SOURCE=$(querypackage ${i} SOURCE)
fi
}
......@@ -101,15 +98,15 @@ get_pagepkginfo()
if [ -z ${i/*rpm/} ]
then
# it is rpm package
PKGVERSION=`rpm -qp --queryformat "%{VERSION}" ${i}`
PKGNAME=`rpm -qp --queryformat "%{sourcerpm}" ${i} | sed -e "s|-$PKGVERSION.*||g"`
PKGVERSION=$(querypackage ${i} VERSION)
PKGNAME=$(querypackage ${i} sourcerpm | sed -e "s|-$PKGVERSION.*||g")
else
PKGNAME=$(eval_spec ${i} | get_var "Name")
fi
else
# installed package name
PKGVERSION=`rpm -q --queryformat "%{VERSION}" ${i}`
PKGNAME=`rpm -q --queryformat "%{sourcerpm}" ${i} | sed -e "s|-$PKGVERSION.*||g"`
PKGVERSION=$(querypackage ${i} VERSION})
PKGNAME=$(querypackage ${i} sourcerpm | sed -e "s|-$PKGVERSION.*||g")
fi
if [ -z "$PKGNAME" ] ; then
PKGNAME="$i"
......
alias apti='sudo apt-get install'
alias apts='apt-cache search'
alias aptw='apt-cache whatdepends'
alias finds='find -type f -print0 | xargs -r0 grep -in'
Name: etersoft-build-utils
Version: 1.7.5
Version: 1.7.6
Release: alt1
Summary: A set of build rpm utilities
......@@ -56,6 +56,7 @@ RECOMMENDED packages: gcc-c++ perl-libwww ccache elinks mutt hasher curl
%_datadir/eterbuild/
# for backward compatibility (will removed in 2.0)
%_sysconfdir/rpm/etersoft-build-functions
%attr(0755,root,root) %_sysconfdir/bashrc.d/*
%dir %_sysconfdir/eterbuild/
%dir %_sysconfdir/eterbuild/apt/
%config(noreplace) %_sysconfdir/eterbuild/apt/apt.conf.*
......@@ -64,6 +65,13 @@ RECOMMENDED packages: gcc-c++ perl-libwww ccache elinks mutt hasher curl
%config(noreplace) %_sysconfdir/eterbuild/repos
%changelog
* Fri Feb 05 2010 Vitaly Lipatov <lav@altlinux.ru> 1.7.6-alt1
- add bashrc.d aliases apti, apts, aptw, finds
- rpmgp: fix src.rpm import, allow to use several files
- rpmgs: add real source support (for Source-svn, Source-url commented lines)
- rpmbph: do not add rpm-build-compat buildreq to backported specs
- gpush: do ginit if no remote aliases
* Fri Jan 22 2010 Vitaly Lipatov <lav@altlinux.ru> 1.7.5-alt1
- rpmbs/rpmbsh: add -l option for lazy-cleanup after build
- rpmgp: add -m option for migrate spec to gear support
......
......@@ -65,7 +65,13 @@ build_rpms_name()
querypackage()
{
rpmquery -p --queryformat "%{$2}" $1
local FORMAT="%{$2}"
local INSTALLED="-p"
# if name empty, use third param as format string
[ -n "$2" ] || FORMAT="$3"
# if not file, drop -p for get from rpm base
[ -e "$1" ] || INSTALLED=""
rpmquery $INSTALLED --queryformat "$FORMAT" $1
}
build_rpms_name_by_srpm()
......
......@@ -45,6 +45,34 @@ copy_tarball_to_tar_bz2()
bzip -c "$SNAME" > "$TNAME"
return
fi
fatal "Can't repack $SNAME to tar.bz2"
return 1
}
copy_tarball_to_tar()
{
local SNAME=$1
local TNAME=$2
#echo SNAME: $SNAME
test -r "$SNAME" || return 1
# copying from tar.bz2
if [ ! ${SNAME/.tar.bz2/} = "$SNAME" ] ; then
bunzip -c "$SNAME" > "$TNAME"
return
fi
if [ ! ${SNAME/.tar.gz/} = "$SNAME" ] ; then
gunzip -c "$SNAME" > "$TNAME"
return
fi
# FIXME: matchs with .tarNNN
if [ ! ${SNAME/.tar/} = "$SNAME" ] ; then
cp -fv "$SNAME" "$TNAME"
return
fi
fatal "Can't repack $SNAME to tar"
return 1
}
......
#!/bin/bash
# 2010 Etersoft www.etersoft.ru
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain
which xdg-open 2>/dev/null >/dev/null && BROWSER=xdg-open
# (command from perl-libwww)
which GET &>/dev/null && GET=GET || GET=false
download_url()
{
# use wget with try=1 and timeout = 30 sec
wget -c -t 1 -T 30 "$1"
}
#!/bin/sh
. `dirname $0`/../share/eterbuild/functions/common
load_mod spec rpm
check()
{
[ "$2" != "$3" ] && echo "FATAL with '$1': result '$2' do not match with '$3'" || echo "OK for '$1' with '$2'"
}
print_spec()
{
echo "%define SourceUrl$1 $2"
}
check_url()
{
check "$1" "$(print_spec "$3" "$4" | grep -i "^%define ${2}Url${3} " | head -n 1 | sed -e "s/ *\$//g" | sed -e "s/^%define[ \t].*[ \t]//g")" $4
}
check_url 1 "Source" "" "http://ftp.ealtlinx.ru/dddd/dddd.tar.bz2"
check_url 2 "Source" "0" "http://ftp.ealtlinx.ru/dddd/dddd.tar.bz2"
check_url 3 "Source" "0" "http://ftp.ealtlinx.ru/dddd/dddd.tar.bz2 "
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment