Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
db6cc6ac
Kaydet (Commit)
db6cc6ac
authored
Şub 24, 2017
tarafından
Andras Timar
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bin/pack-debug
Change-Id: I965f4d88416f3345c706d5e9e07acef3c55b7206
üst
3fc7a4ee
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
337 additions
and
0 deletions
+337
-0
pack-debug
bin/pack-debug
+337
-0
No files found.
bin/pack-debug
0 → 100755
Dosyayı görüntüle @
db6cc6ac
#!/bin/bash
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# create debuginfo and debugsource packages from LO rpm & deb files
# (generated by using --enable-symbols)
# build path
export
BUILD_PATH
=
$PWD
export
BUILD_LOG
=
$BUILD_PATH
/pack-debug.log
if
[
$#
-gt
0
]
then
for
i
in
"
$@
"
do
case
$i
in
--only-rpm
)
ONLY_RPM
=
1
;;
--only-deb
)
ONLY_DEB
=
1
;;
*
)
echo
"Usage: pack-debug [--only-rpm | --only-deb]"
&&
exit
1
;;
esac
done
fi
# set install dirname and product version
if
[
!
-f
config.log
]
;
then
echo
"config.log not found. Run this script from build root."
exit
1
;
fi
# create pack-debug.log file
echo
create debug packages
>
$BUILD_LOG
eval
$(
grep
^INSTALLDIRNAME config.log
)
eval
$(
grep
^PRODUCTVERSION config.log
)
# set package base name, eg. collaboraoffice5.3
DEBUGSRC_PACKAGENAME
=
$INSTALLDIRNAME$PRODUCTVERSION
#################################
# Function for re-build RPM files
#################################
function
repack_rpm
{
# set environment based on config.log
# for find-requires-x11.sh used by rpm __find_requires
eval
$(
grep
^PLATFORMID config.log
)
export
PLATFORMID
eval
$(
grep
^build_cpu config.log
)
export
build_cpu
####################################
echo
create RPM debug
source
package
####################################
DEBUGSRC
=
"
$(
find workdir
-name
${
DEBUGSRC_PACKAGENAME
}
.spec.log
)
"
# create spec file, based on the spec file of the brand package
cat
$DEBUGSRC
|
awk
'
/^Name:/ { print "Summary: Debug source for package "$2; print $0"-debugsource";next }
/^Group:/ { print $1" Development/Debug";next }
/^Brand module/ { print gensub("Brand module", "Source files", "");next }
/^%attr/ || /^Summary:/ { next }
{print}
END {
print "%defattr(-,root,root)"
}
'
>
${
DEBUGSRC
}
-debugsource
buildroot
=
$(
cat
$DEBUGSRC
-debugsource
|
awk
'/^BuildRoot/{print$2}'
)
topdir
=
$(
dirname
$(
dirname
$buildroot
))
mkdir
-p
$buildroot
$topdir
/RPMS/BUILD
$topdir
/RPMS/RPMS
rm
-rf
$buildroot
# create source file list
find
$BUILD_PATH
-name
'*[.][hc]xx'
-o
-name
'*[.][hc]'
|
grep
-Ev
'/(instdir|qa|DEBS)/'
|
# list all directories for complete rpm remove
awk
-v
home
=
$BUILD_PATH
'
{
split($0, a, home "/")
n=split(a[2], b, "/")
c=home
for(i=1;i<n;i++) {
c=c"/"b[i]
if(mem[c]!=1) print "%dir "c
mem[c]=1
}
print $0
}'
>>
${
DEBUGSRC
}
-debugsource
# start rpmbuild for debug source package
ln
-s
/
$buildroot
# debug build source package
rpmbuild
-bb
--define
"_unpackaged_files_terminate_build 0"
${
DEBUGSRC
}
-debugsource
--target
$build_cpu
--buildroot
=
$buildroot
###################################################################
echo
create rpm debug info packages by processing logged spec files
###################################################################
for
i
in
$BUILD_PATH
/workdir/installation/CollaboraOffice/rpm/logging/
*
/
*
.spec.log
do
# repackage only rpm packages with non-stripped so files
if
grep
-q
'^%attr.*[.]\(so\|bin\)\([.].*\)\?\"'
$i
then
echo
================
$i
================
pack
=
$(
cat
$i
|
awk
'/^Name/{print$2}'
)
buildroot
=
$(
cat
$i
|
awk
'/^BuildRoot/{print$2}'
)
topdir
=
$(
dirname
$(
dirname
$buildroot
))
rpmdir
=
$(
echo
$topdir
|
sed
's/_inprogress$//'
)
# create empty buildroot directory
rm
-rf
$buildroot
mkdir
-p
$buildroot
$topdir
/RPMS/BUILD
$topdir
/RPMS/RPMS
cd
$buildroot
echo
REBUILD:
$rpmdir
/RPMS/
${
pack
}
-[0-9]
*
.rpm
# extract rpm package
rpm2cpio
$rpmdir
/RPMS/
${
pack
}
-[0-9]
*
.rpm | cpio
-idmv
# create stripped libraries and linked debug info files
for
j
in
$(
cat
$i
|
awk
'/^%attr.*[.](so|bin)([.].*)?"$/{print$2}'
)
do
so
=
$(
echo
$j
|
tr
-d
'"'
)
cd
./
$(
dirname
$so
)
so
=
$(
basename
$so
)
objcopy
--only-keep-debug
$so
$so
.dbg
objcopy
--strip-debug
$so
objcopy
--add-gnu-debuglink
=
$so
.dbg
$so
cd
$buildroot
done
# copy files for double package generation (using hard links)
cp
-rl
$buildroot
$buildroot
.copy
# stripped package
rpmbuild
-bb
--define
"_unpackaged_files_terminate_build 0"
$i
--target
$build_cpu
--buildroot
=
$buildroot
rm
-rf
$buildroot
mv
$buildroot
.copy
$buildroot
mkdir
-p
$topdir
/RPMS/BUILD
$topdir
/RPMS/RPMS
# create spec file for the debug info package
cat
$i
|
awk
'
/^Name:/ { print "Summary: Debug information for package "$2; print $0"-debuginfo";next }
/^Group:/ { print $1" Development/Debug";next }
/^%attr.*[.](so|bin)([.].*)?"$/ { print substr($0, 1, length($0) - 1)".dbg\""; next }
/^%attr/ || /^Summary:/ { next }
{print}
'
>
${
i
}
-debuginfo
# create debug info package
rpmbuild
-bb
--define
"_unpackaged_files_terminate_build 0"
${
i
}
-debuginfo
--target
$build_cpu
--buildroot
=
$buildroot
fi
done
echo
Update RPM download tar.gz
mv
$topdir
/RPMS/RPMS/
*
/
*
.rpm
$rpmdir
/RPMS/
cd
$rpmdir
/..
TARGET_RPM
=
$(
ls
*
_download/
*
.tar.gz
)
TARGET_DEBUG
=
$(
echo
$TARGET_RPM
|
sed
's/.tar.gz$/-debug.tar.gz/'
)
SOURCE_RPM
=
$(
find
*
_rpm
-type
f |
grep
-v
debug
)
SOURCE_DEBUG
=
$(
find
*
_rpm
-type
f |
grep
-E
'(debug|readme|README)'
)
tar
c
$SOURCE_RPM
|
gzip
>
$TARGET_RPM
tar
c
$SOURCE_DEBUG
|
gzip
>
$TARGET_DEBUG
cd
$BUILD_PATH
rm
-rf
$topdir
}
#################################
# Function for re-build DEB files
#################################
function
repack_deb
{
####################################
echo
create DEB debug
source
package
####################################
DEBUGSRC
=
$BUILD_PATH
/workdir/installation/CollaboraOffice/deb/listfile/en-US/epm_gid_Module_Root_Brand.lst
echo
Base spec file:
$DEBUGSRC
# create spec file, based on the spec file of the brand package
cat
$DEBUGSRC
|
awk
'
/^%product/ { print gensub("Brand module", "Debug source package", "", $0) ;next }
/^%description/ { print gensub("Brand module", "Debug source package", "", $0) ;next }
/^[cdf] / { next }
{print}
'
>
${
DEBUGSRC
}
-debugsource
# create source file list
find
$BUILD_PATH
-name
'*[.][hc]xx'
-o
-name
'*[.][hc]'
|
grep
-Ev
'/(instdir|qa|DEBS)/'
|
# list all directories
awk
-v
home
=
$BUILD_PATH
'
{
split($0, a, home "/")
n=split(a[2], b, "/")
c=home
for(i=1;i<n;i++) {
c=c"/"b[i]
if(mem[c]!=1) print "d 755 root root "c" -"
mem[c]=1
}
print "f 644 root root "$0" "$0
}'
>>
${
DEBUGSRC
}
-debugsource
echo
Spec file of debug
source
package:
${
DEBUGSRC
}
-debugsource
# debug build source package
$BUILD_PATH
/workdir/UnpackedTarball/epm/epm
-f
deb
-g
${
INSTALLDIRNAME
}${
PRODUCTVERSION
}
-debugsource
${
DEBUGSRC
}
-debugsource
--output-dir
DEBS
-v
######################################################################
echo
create DEB debug info packages by processing logged EPM lst files
######################################################################
for
i
in
$BUILD_PATH
/workdir/installation/CollaboraOffice/deb/listfile/en-US/
*
.lst
do
# repackage only deb packages with non-stripped so files
if
grep
-q
'^f .*[.]\(so\|bin\)\([.].*\)\?$'
$i
then
echo
================
$i
================
TARGET_NAME
=
$INSTALLDIRNAME
"
$(
echo
$(
basename
$i
)
|
awk
'
/epm_gid_Module_Optional_Gnome.lst/{print"basis5.3-gnome-integration"}
/epm_gid_Module_Optional_Grfflt.lst/{print"basis5.3-graphicfilter"}
/epm_gid_Module_Optional_Kde.lst/{print"basis5.3-kde-integration"}
/epm_gid_Module_Optional_OGLTrans.lst/{print"basis5.3-ogltrans"}
/epm_gid_Module_Optional_PostgresqlSdbc.lst/{print"basis5.3-postgresql-sdbc"}
/epm_gid_Module_Pdfimport.lst/{print"basis5.3-extension-pdf-import"}
/epm_gid_Module_Prg_Base_Bin.lst/{print"basis5.3-base"}
/epm_gid_Module_Prg_Calc_Bin.lst/{print"basis5.3-calc"}
/epm_gid_Module_Prg_Impress_Bin.lst/{print"basis5.3-impress"}
/epm_gid_Module_Prg_Math_Bin.lst/{print"basis5.3-math"}
/epm_gid_Module_Prg_Wrt_Bin.lst/{print"basis5.3-writer"}
/epm_gid_Module_Pyuno.lst/{print"basis5.3-pyuno"}
/epm_gid_Module_Reportbuilder.lst/{print"basis5.3-extension-report-builder"}
/epm_gid_Module_Root_Brand.lst/{print"5.3"}
/epm_gid_Module_Root.lst/{print"basis5.3-core"}
/epm_gid_Module_Root_Ure_Hidden.lst/{print"5.3-ure"}
'
|
sed
s/5.3/
$PRODUCTVERSION
/g
)
"
echo
TARGET NAME:
$TARGET_NAME
# create stripped libraries and linked debug info files
for
j
in
$(
cat
$i
|
awk
'/^f .*[.](so|bin)([.].*)?$/{print$6}'
)
do
cd
$(
dirname
$j
)
so
=
$(
basename
$j
)
# remove old temporary files
rm
-f
$so
.copy
$so
.dbg
# keep original file
cp
$so
$so
.copy
objcopy
--only-keep-debug
$so
$so
.dbg
objcopy
--strip-debug
$so
objcopy
--add-gnu-debuglink
=
$so
.dbg
$so
cd
$BUILD_PATH
done
# create stripped package
$BUILD_PATH
/workdir/UnpackedTarball/epm/epm
-f
deb
-g
$TARGET_NAME
$i
--output-dir
DEBS
-v
# create spec file for the debug info package
cat
$i
|
awk
'
/^%product/ { print "%product Debug info package of "$0 ;next }
/^%description/ { print "%description Debug info package of "$0 ;next }
/^f .*[.](so|bin)([.].*)?$/ { print $1,$2,$3,$4,$5".dbg",$6".dbg"; next }
/^[cf] / { next }
{print}
'
>
${
i
}
-debuginfo
# create debug info package
$BUILD_PATH
/workdir/UnpackedTarball/epm/epm
-f
deb
-g
${
TARGET_NAME
}
-debuginfo
$i
-debuginfo
--output-dir
DEBS
-v
# restore original non stripped library files
for
j
in
$(
cat
$i
|
awk
'/^f .*[.](so|bin)([.].*)?$/{print$6}'
)
do
cd
$(
dirname
$j
)
so
=
$(
basename
$j
)
rm
$so
.dbg
# restore original file
mv
-f
$so
.copy
$so
cd
$BUILD_PATH
done
fi
done
echo
Update DEB download tar.gz
debdir
=
$(
ls
-d
$BUILD_PATH
/workdir/installation/CollaboraOffice/deb/install/
*
_deb
)
mv
$BUILD_PATH
/DEBS/
*
.deb
$debdir
/DEBS/
cd
$debdir
/..
TARGET_DEB
=
$(
ls
*
_download/
*
.tar.gz
)
TARGET_DEBUG
=
$(
echo
$TARGET_DEB
|
sed
's/.tar.gz$/-debug.tar.gz/'
)
SOURCE_DEB
=
$(
find
*
_deb
-type
f |
grep
-v
debug
)
SOURCE_DEBUG
=
$(
find
*
_deb
-type
f |
grep
-E
'(debug|readme|README)'
)
tar
c
$SOURCE_DEB
|
gzip
>
$TARGET_DEB
tar
c
$SOURCE_DEBUG
|
gzip
>
$TARGET_DEBUG
cd
$BUILD_PATH
rm
-rf
DEBS
}
# start deb re-build
test
-z
"
$ONLY_RPM
"
-a
"
$(
find workdir/installation/CollaboraOffice/deb/listfile
-name
'*.lst'
)
"
!=
""
&&
repack_deb
>
$BUILD_LOG
2>&1
||
\
echo
'Skip DEB debug package generation (--only-rpm or missing EPM lst files).'
# start rpm re-build
test
-z
"
$ONLY_DEB
"
-a
"
$(
find workdir
-name
'*spec.log'
)
"
!=
""
&&
repack_rpm
>>
$BUILD_LOG
2>&1
||
\
echo
'Skip RPM debug package generation (--only-deb or missing RPM spec files).'
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