Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
etersoft-build-utils
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
korinf
etersoft-build-utils
Commits
2b641add
Commit
2b641add
authored
Dec 16, 2015
by
Vitaly Lipatov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rpmbph: use rpmbps for spec conversion
parent
a7e99be2
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
317 deletions
+5
-317
rpmbph
bin/rpmbph
+5
-317
No files found.
bin/rpmbph
View file @
2b641add
...
@@ -12,321 +12,9 @@
...
@@ -12,321 +12,9 @@
load_mod repl rpm git buildsrpm spec
load_mod repl rpm git buildsrpm spec
altspec_to_local
()
{
local
i
local
TXTRELEASE
local
SPECNAME
SPECNAME
=
$1
BASERELEASE
=
$(
get_numrelease
$SPECNAME
)
RELEASE
=
$(
get_release
$SPECNAME
)
BUILDNAME
=
$(
get_name
$SPECNAME
)
ADDFIXCOMMAND
=
ADDREQUIRES
=
echo
"Converting spec
$(
basename
$SPECNAME
)
to
$DISTRVERSION
(
$MDISTR
)..."
# Set buildreq
if
[
"
$PKGVENDOR
"
=
"alt"
]
;
then
# FIXME: needed for some backport level...
#BUILDREQ="BuildRequires: rpm-build-compat >= 0.95"
BUILDREQ
=
# FIXME: use separate macro list
# FIXME: check for all rpm-build-compat macro list
if
grep
-q
"
\(
_cupslibdir
\|
_sudoers
\)
"
$SPECNAME
;
then
BUILDREQ
=
"BuildRequires: rpm-build-compat >= 1.7.25"
elif
grep
-q
_sharedstatedir
$SPECNAME
;
then
BUILDREQ
=
"BuildRequires: rpm-build-compat >= 1.7.24"
elif
grep
-q
configure32
$SPECNAME
;
then
BUILDREQ
=
"BuildRequires: rpm-build-compat >= 1.9.0"
fi
# drop unsuported technologies
case
$DISTRVERSION
in
4.0|4.1|5.1|p5|p6
)
# these systems doesn't support systemd
subst
"s|^install.*%_unitdir.*|# removed install to _unitdir by rpmbph|g"
$SPECNAME
subst
"s|^%_unitdir.*|# removed pack _unitdir by rpmbph|g"
$SPECNAME
;;
esac
# Change release according to alt policy with extensions
# General rule: alwars alt(N-1).MM.(N)
docmd set_release
$SPECNAME
$(
get_txtrelease
$SPECNAME
)$(
decrement_release
$BASERELEASE
)
.
$MDISTR
.
$BASERELEASE
ADDDEF
=
""
CLEANTEXT
=
""
# due new libtool, affected on ALT Linux
if
echo
"
$MDISTR
"
| egrep
-q
"M24|M30|M40|M41|M50"
;
then
ADDFIXCOMMAND
=
"
$ADDFIXCOMMAND
%undefine __libtoolize"
fi
else
# All non ALT Linux distros
docmd
$ETERBUILDBIN
/rpmcs
--skip-reqs
$SPECNAME
BUILDREQ
=
"BuildRequires:"
if
[
$(
basename
$SPECNAME
)
!=
"eepm.spec"
]
;
then
if
!
grep
-q
"BuildRequires:.*rpm-build-altlinux-compat"
$SPECNAME
;
then
# Need our compat package and disable strong patch checking
BUILDREQ
=
"
$BUILDREQ
rpm-build-altlinux-compat >= 0.95"
fi
fi
# hack against very straight patch command
FIXPATCHFUZZ
=
"%define _default_patch_fuzz 3"
# see install in Korinf, need concatenate
BUILDREQ
=
"
$BUILDREQ
make gcc
\n
$FIXPATCHFUZZ
"
if
build32on64
;
then
[
"
$DISTRNAME
"
=
"Debian"
]
&&
BUILDREQ
=
"
$BUILDREQ
ia32-libs"
&&
ADDREQUIRES
=
"
$ADDREQUIRES
ia32-libs"
[
"
$DISTRNAME
"
=
"Ubuntu"
]
&&
!
version_more_version
$DISTRVERSION
12.04
&&
BUILDREQ
=
"
$BUILDREQ
ia32-libs"
&&
ADDREQUIRES
=
"
$ADDREQUIRES
ia32-libs"
[
"
$DISTRNAME
"
=
"CentOS"
]
&&
version_more_version
$DISTRVERSION
6
&&
BUILDREQ
=
"
$BUILDREQ
glibc-devel.i686"
[
"
$DISTRNAME
"
=
"Scientific"
]
&&
version_more_version
$DISTRVERSION
6
&&
BUILDREQ
=
"
$BUILDREQ
glibc-devel.i686"
[
"
$DISTRNAME
"
=
"SLED"
]
&&
version_more_version
$DISTRVERSION
11
&&
BUILDREQ
=
"
$BUILDREQ
glibc-devel-32bit gcc-32bit"
[
"
$DISTRNAME
"
=
"SUSE"
]
&&
version_more_version
$DISTRVERSION
11
&&
BUILDREQ
=
"
$BUILDREQ
glibc-devel-32bit gcc-32bit"
fi
# Hack for allow repack on x86_64 packages with ExclusiveArch: %{ix586}
[
"
$SYSARCH
"
=
"x86_64"
]
&&
subst
"s|^ExclusiveArch:.*||g"
$SPECNAME
[
-z
"
$BUILDCOMMAND
"
]
&&
BUILDCOMMAND
=
$ETERBUILDBIN
/rpmbb
TXTRELEASE
=
$(
get_txtrelease
$SPECNAME
)
# HACK: Override release with KORINFTARGETRELEASE if set
[
-z
"
$KORINFTARGETRELEASE
"
]
||
TXTRELEASE
=
$KORINFTARGETRELEASE
docmd set_release
$SPECNAME
$TXTRELEASE$BASERELEASE$PKGVENDOR
test
-z
"
$VERBOSE
"
||
echo
"Build package with release
$TXTRELEASE
"
ADDDEF
=
"%defattr(-, root, root)"
CLEANTEXT
=
""
fi
# FIXME 05.05.2012: it is needed now?
if
[
"
$PKGVENDOR
"
=
"mdv"
]
||
[
"
$PKGVENDOR
"
=
"pclinux"
]
||
[
"
$PKGVENDOR
"
=
"rosa"
]
;
then
# due new libtool, affected on Mandriva 2009.0
test
-z
"
$VERBOSE
"
||
echo
"Disable libtoolize"
# FIXME
#RECONFT="%define _disable_libtoolize 1"
ADDFIXCOMMAND
=
"
$ADDFIXCOMMAND
%define __libtoolize true"
fi
# Do not add BuildReq if already exist
cat
$SPECNAME
|
grep
rpm-build-compat &>/dev/null
&&
BUILDREQ
=
""
# fix readlink -m, introduced by new libtool and missed in RHEL4 (replace with readlink -f)
if
[
"
$DISTRNAME
/
$DISTRVERSION
"
=
"ASPLinux/11.2"
]
;
then
test
-z
"
$VERBOSE
"
||
echo
"Add subst readlink -m"
ADDFIXCOMMAND
=
"
$ADDFIXCOMMAND
%__subst 's|readlink -m|readlink -f|g' libtool ltmain.sh"
fi
# fix readlink -mv, introduced by new libtool and missed in FreeBSD (replace with realpath)
if
[
"
$PKGVENDOR
"
=
"freebsd"
]
;
then
test
-z
"
$VERBOSE
"
||
echo
"Add subst readlink -mv"
ADDFIXCOMMAND
=
"
$ADDFIXCOMMAND
%__subst 's|readlink -mv|realpath|g' libtool configure ltmain.sh"
fi
#if build32on64 ; then
# test -z "$VERBOSE" || echo "Add remove_optflags -m64"
# ADDFIXCOMMAND="$ADDFIXCOMMAND
#%remove_optflags -m64"
#fi
# fix mktemp using for MCBC
if
[
"
$PKGVENDOR
"
=
"mcbc"
]
;
then
test
-z
"
$VERBOSE
"
||
echo
"Add subst mktemp -dt"
ADDFIXCOMMAND
=
"
$ADDFIXCOMMAND
%__subst 's|mktemp -dt|mktemp -d|g' configure ; %__subst 's|readlink -mv|ls -1|g' configure ltmain.sh"
fi
# Too old problem
TOCHANGELOG
=
if
[
"
$MDISTR
"
=
"M23"
]
;
then
if
grep
"%configure"
$SPECNAME
>
/dev/null
&&
!
grep
"^autoreconf"
$i
>
/dev/null
&&
!
grep
"^%__autoreconf"
$i
>
/dev/null
;
then
ADDFIXCOMMAND
=
"
$ADDFIXCOMMAND
%__autoreconf"
TOCHANGELOG
=
"add __autoreconf macros in build section for fix so name problem (by script)"
fi
fi
LISTBUILDDEP
=
`
print_buildreq
$SPECNAME
`
LISTREQDEP
=
"
`
print_pkgreq
$SPECNAME
`
$ADDREQUIRES
"
LISTDEP
=
`
echo
$LISTBUILDDEP
$LISTREQDEP
| xargs
-n1
echo
|
sort
-u
`
LISTGROUP
=
`
eval_spec
$SPECNAME
|
grep
"^Group"
|
sed
-e
"s|^.*:||g"
| xargs
-n1
echo
|
sort
-u
`
# Build replacement rules for spec
ALLREPLRULES
=
""
[
-n
"
$VERBOSE
"
]
&&
echo
"Checking req names for
$LISTDEP
"
if
[
-n
"
$VERBOSE
"
]
;
then
echo
-n
"Use replacement file: "
print_pkgrepl_list
echo
fi
local
pkgrepl_list
=
$(
print_pkgrepl_list
)
for
i
in
$LISTDEP
;
do
tolocal_anyrepl
$i
$pkgrepl_list
||
continue
#NRL="s!\(.*Req.*\)$REPLRULE1\( |,|\$\)!\1$REPLRULE2\2!g"
NRL
=
"s!(.*Req.*)
$ALTPKGNAME
( |,|
\$
)!
\1
$TARGETPKGNAME
\2
!g"
[
-n
"
$VERBOSE
"
]
&&
echo
"Use req rule
$NRL
"
ALLREPLRULES
=
"
$ALLREPLRULES
$NRL
;"
done
# Build replacement rules for spec
[
-n
"
$VERBOSE
"
]
&&
echo
"Checking group names for
$LISTGROUP
"
ALLGRPREPLRULES
=
""
grprepl_list
=
$(
print_grprepl_list
)
for
i
in
$LISTGROUP
;
do
tolocal_anyrepl
$i
$grprepl_list
||
continue
#NRL="s!\(Group.*\)$REPLRULE1\( |,|\$\)!\1$REPLRULE2\2!g"
NRL
=
"s!(Group.*)
$ALTPKGNAME
( |,|
\$
)!
\1
$TARGETPKGNAME
\2
!g"
[
-n
"
$VERBOSE
"
]
&&
echo
"Use group name rule
$NRL
"
ALLGRPREPLRULES
=
"
$ALLGRPREPLRULES
$NRL
;"
done
#echo GRP: $LISTGROUP, ALLGRPREPLRULES: $ALLGRPREPLRULES
# add %defattr to files sections
# FIXME: добавляет ненужные пустые строки
function
awk_e1
()
{
[
-n
"
$ADDDEF
"
]
&&
awk
'BEGIN{desk=0}{print;if(/^%files/){printf("%s\n", text)}}'
text
=
"
$ADDDEF
"
||
cat
}
# add clean before %files
function
awk_e2
()
{
[
-n
"
$CLEANTEXT
"
]
&&
awk
'BEGIN{desk=0}{if(/^%files/&&desk==0){printf("%s\n\n", text);desk++};print}'
text
=
"
$CLEANTEXT
"
||
cat
}
# add rpm-build-compat buildreq
function
awk_e3
()
{
[
-n
"
$BUILDREQ
"
]
&&
awk
'BEGIN{desk=0}{if(/^%description/&&desk==0){printf("%s\n\n", text);desk++};print}'
text
=
"
$BUILDREQ
"
||
cat
}
# add commands in build section
function
awk_section_build
()
{
[
-n
"
$ADDFIXCOMMAND
"
]
&&
awk
'BEGIN{desk=0}{print;if(/^%build/&&desk==0){printf("%s\n", text);desk++}}'
text
=
"
$ADDFIXCOMMAND
"
||
cat
}
# apply replacement rules
repl_reqs
()
{
local
PREGE
PREGE
=
"perl -p -e"
[
-n
"
$ALLREPLRULES
"
]
&&
$PREGE
"
$ALLREPLRULES
"
||
cat
}
# apply replacement rules
repl_groups
()
{
local
PREGE
PREGE
=
"perl -p -e"
[
-n
"
$ALLGRPREPLRULES
"
]
&&
$PREGE
"
$ALLGRPREPLRULES
"
||
cat
}
if
[
-n
"
$VERBOSE
"
]
;
then
echo
"Requires rules:
$ALLREPLRULES
"
echo
"Group rules:
$ALLGRPREPLRULES
"
fi
# apply all rules, awk excludes, remove empty tag lines
mv
$SPECNAME
$SPECNAME
.old
&&
cat
$SPECNAME
.old |
\
repl_reqs | repl_groups |
\
awk_e1 | awk_e2 | awk_e3 | awk_section_build |
\
sed
-e
"s|^BuildRequires: *
\$
||g"
|
\
sed
-e
"s|^BuildPreReq: *
\$
||g"
|
\
sed
-e
"s|^Requires: *
\$
||g"
|
\
sed
-e
"s|^Conflicts: *
\$
||g"
|
\
sed
-e
"s|^Provides: *
\$
||g"
|
\
sed
-e
"s|^Obsoletes: *
\$
||g"
|
\
cat
>
$SPECNAME
# Some system does mismatch for Patch: and %patch0, Patch0: and %patch
subst
"s|^Patch0:|Patch:|g"
$SPECNAME
subst
"s|^%patch0 |%patch |g"
$SPECNAME
if
[
"
$PKGVENDOR
"
!=
"alt"
]
;
then
# Due possible using %release in Source: and Patch: names
subst
"s|^
\(
Source.*
\)
%release|
\1
$RELEASE
|g"
$SPECNAME
subst
"s|^
\(
Patch.*
\)
%release|
\1
$RELEASE
|g"
$SPECNAME
if
!
grep
-q
"%setup *-q"
$SPECNAME
;
then
subst
"s|^%setup |%setup -q |g"
$SPECNAME
subst
"s|^%setup
$|
%setup -q|g"
$SPECNAME
fi
# obsoletes since Slackware/13 (rpm 4.10)
subst
"s|^BuildPreReq:|BuildRequires:|g"
$SPECNAME
subst
"s|^PreReq:|Requires:|g"
$SPECNAME
# not supported anywhere exclude ALT
subst
"s|^BuildRequires(pre):|BuildRequires:|g"
$SPECNAME
fi
# Auto*=yes,nomingw32 works only since ALT 4.1
if
[
"
$PKGVENDOR
"
=
"alt"
]
;
then
if
echo
"
$MDISTR
"
| egrep
-q
"M24|M30|M40"
;
then
subst
"s|^
\(
Auto[RP].*
\)
,nomingw32|
\1
|g"
$SPECNAME
subst
"s|^
\(
Auto[RP].*
\)
, nomingw32|
\1
|g"
$SPECNAME
fi
else
# for systems with (d)ash as sh (f.i., Ubuntu)
remove_bashism
$SPECNAME
fi
if
[
"
$DISTRNAME
/
$DISTRVERSION
"
=
"CentOS/5"
]
;
then
test
-z
"
$VERBOSE
"
||
echo
"Remove egg-info from file list"
subst
"s|.*
\.
egg-info.*||g"
$SPECNAME
fi
#TODO:
#%if %{undefined buildroot}
#BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
#%endif
#TODO:
#%clean section
rm
-f
$SPECNAME
.old
if
[
"
$PKGVENDOR
"
=
"alt"
]
;
then
subst
"1i#"
$SPECNAME
# use old compress method for the src.rpm on ALT 4.0 and 4.1
if
[
"
$DISTRVERSION
"
=
"4.0"
]
||
[
"
$DISTRVERSION
"
=
"4.1"
]
;
then
export
USE_LEGACY_COMPRESSION
=
1
fi
subst
"1i# This spec is backported to
$DISTRNAME
$DISTRVERSION
automatically by rpmbph script. Do not edit it."
$SPECNAME
ENTRY
=
"- backport to
$DISTRNAME
$DISTRVERSION
(by rpmbph script)"
DISTRARG
=
"-
$MDISTR
"
else
subst
"1i# This spec is autoported from ALT Linux Sisyphus to
$DISTRNAME
$DISTRVERSION
automatically by rpmbph script. Do not edit it."
$SPECNAME
ENTRY
=
"- autoport to
$DISTRNAME
$DISTRVERSION
(by rpmbph script)"
export
USE_VENDOR
=
$RPMVENDOR
export
USE_LEGACY_COMPRESSION
=
1
DISTRARG
=
""
fi
test
-s
"
$SPECNAME
"
||
fatal
"
$SPECNAME
is empty"
test
-n
"
$TOCHANGELOG
"
&&
ENTRY
=
`
echo
-e
"
$ENTRY
\n
-
$TOCHANGELOG
"
`
add_changelog
$SPECNAME
-e
"
$ENTRY
"
}
#############################
#############################
# FIXME: CURRENTBRANCHNAME??
Usage
=
"Usage:
$name
[-r -u -U -n -i -m -v -q] [-
$CURRENTBRANCHNAME
] [-b REPONAME] spec..."
Usage
=
"Usage:
$name
[-r -u -U -n -i -m -v -q] [-
$CURRENTBRANCHNAME
] [-b REPONAME] spec..."
function
mygetopts
()
function
mygetopts
()
{
{
...
@@ -387,6 +75,7 @@ mygetopts $LISTARGS
...
@@ -387,6 +75,7 @@ mygetopts $LISTARGS
test
-z
"
$LISTNAMES
"
&&
fatal
"file not found in '
$@
'"
test
-z
"
$LISTNAMES
"
&&
fatal
"file not found in '
$@
'"
if
[
"
$PKGVENDOR
"
=
"alt"
]
;
then
if
[
"
$PKGVENDOR
"
=
"alt"
]
;
then
# FIXME: where we was detected MENV?
MDISTR
=
$MENV
MDISTR
=
$MENV
[
-n
"
$BINARYREPONAME
"
]
&&
MDISTR
=
$(
get_altdistr_mod
$BINARYREPONAME
)
[
-n
"
$BINARYREPONAME
"
]
&&
MDISTR
=
$(
get_altdistr_mod
$BINARYREPONAME
)
[
"
$MDISTR
"
=
"SS"
]
&&
fatal
"It makes no sense to backport to Sisyphus (You need to try with -b
$EXAMPLEALTDISTRVERSION
)."
[
"
$MDISTR
"
=
"SS"
]
&&
fatal
"It makes no sense to backport to Sisyphus (You need to try with -b
$EXAMPLEALTDISTRVERSION
)."
...
@@ -443,7 +132,7 @@ if [ "$PKGVENDOR" = "alt" ] && is_gear $SPECDIR ; then
...
@@ -443,7 +132,7 @@ if [ "$PKGVENDOR" = "alt" ] && is_gear $SPECDIR ; then
# Only one spec supported
# Only one spec supported
cp
-f
$LISTNAMES
$BPSPEC
cp
-f
$LISTNAMES
$BPSPEC
altspec_to_local
$BPSPEC
docmd
$ETERBUILDBIN
/rpmbps
-b
$BINARYREPONAME
$BPSPEC
docmd git checkout
$USEBRANCH
||
fatal
"Can't checkout branch
$USEBRANCH
. Use
$BPSPEC
manually or remove it."
docmd git checkout
$USEBRANCH
||
fatal
"Can't checkout branch
$USEBRANCH
. Use
$BPSPEC
manually or remove it."
# TODO: check result message for merge?
# TODO: check result message for merge?
...
@@ -458,9 +147,8 @@ if [ "$PKGVENDOR" = "alt" ] && is_gear $SPECDIR ; then
...
@@ -458,9 +147,8 @@ if [ "$PKGVENDOR" = "alt" ] && is_gear $SPECDIR ; then
docmd git add
$SPEC
docmd git add
$SPEC
if
!
git_commit_ignore_nothing
-a
-m
"backported to
$USEBRANCH
as
$(
get_version
$SPEC
)
-
$(
get_release
$SPEC
)
(with rpmbph script)"
;
then
if
!
git_commit_ignore_nothing
-a
-m
"backported to
$USEBRANCH
as
$(
get_version
$SPEC
)
-
$(
get_release
$SPEC
)
(with rpmbph script)"
;
then
#git checkout $CURBRANCH
#git checkout $CURBRANCH
fatal
"Commit error. You are still in
$
MDISTR
branch with modified and uncommitted spec file."
fatal
"Commit error. You are still in
$
CURBRANCH
branch with modified and uncommitted spec file."
fi
fi
[
-n
"
$NOBUILD
"
]
&&
BUILDCOMMAND
=
"
$ETERBUILDBIN
/rpmbs
$GIRARHOST
"
docmd
$BUILDCOMMAND
$LISTRPMARGS
$UPLOADARG
$DISTRARG
$SPEC
||
{
git checkout
$CURBRANCH
;
fatal
"Can't build"
;
}
docmd
$BUILDCOMMAND
$LISTRPMARGS
$UPLOADARG
$DISTRARG
$SPEC
||
{
git checkout
$CURBRANCH
;
fatal
"Can't build"
;
}
docmd git checkout
$CURBRANCH
docmd git checkout
$CURBRANCH
exit
$?
exit
$?
...
@@ -485,7 +173,7 @@ for i in $LISTBUILT ; do
...
@@ -485,7 +173,7 @@ for i in $LISTBUILT ; do
SPECNAME
=
$RPMTOPDIR
/SPECS/
$(
spec_by_srpm
$i
)
SPECNAME
=
$RPMTOPDIR
/SPECS/
$(
spec_by_srpm
$i
)
test
-f
"
$SPECNAME
"
||
fatal
"Spec
$SPECNAME
is not found"
test
-f
"
$SPECNAME
"
||
fatal
"Spec
$SPECNAME
is not found"
docmd
altspec_to_local
$SPECNAME
docmd
$ETERBUILDBIN
/rpmbps
-b
$BINARYREPONAME
$SPECNAME
docmd
$BUILDCOMMAND
$LISTRPMARGS
$UPLOADARG
$DISTRARG
$SPECNAME
||
fatal
"Can't build"
docmd
$BUILDCOMMAND
$LISTRPMARGS
$UPLOADARG
$DISTRARG
$SPECNAME
||
fatal
"Can't build"
uni_rpmrm
$SPECNAME
||
true
uni_rpmrm
$SPECNAME
||
true
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment