Skip to content

Commit 7e7eb27

Browse files
committed
gitian: create debug packages for linux/windows
The -debug tarballs/zips contain detached debugging symbols. To use them, place in the same dir as the target binary, and invoke gdb as usual. Also, because the debug symbols add a substantial space requirement, the build dirs are now deleted when they're no longer needed.
1 parent ad38204 commit 7e7eb27

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

contrib/gitian-descriptors/gitian-linux.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,12 @@ files: []
2626
script: |
2727
WRAP_DIR=$HOME/wrapped
2828
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
29-
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests LDFLAGS=-static-libstdc++"
29+
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests"
3030
FAKETIME_HOST_PROGS=""
31-
FAKETIME_PROGS="date ar ranlib nm strip"
31+
FAKETIME_PROGS="date ar ranlib nm strip objcopy"
32+
HOST_CFLAGS="-O2 -g"
33+
HOST_CXXFLAGS="-O2 -g"
34+
HOST_LDFLAGS=-static-libstdc++
3235
3336
export QT_RCC_TEST=1
3437
export GZIP="-9n"
@@ -95,20 +98,26 @@ script: |
9598
mkdir -p ${INSTALLPATH}
9699
tar --strip-components=1 -xf ../$SOURCEDIST
97100
98-
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
101+
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" LDFLAGS="${HOST_LDFLAGS}"
99102
make ${MAKEOPTS}
100103
make ${MAKEOPTS} -C src check-security
101104
make ${MAKEOPTS} -C src check-symbols
102-
make install-strip DESTDIR=${INSTALLPATH}
105+
make install DESTDIR=${INSTALLPATH}
103106
cd installed
104107
find . -name "lib*.la" -delete
105108
find . -name "lib*.a" -delete
106109
rm -rf ${DISTNAME}/lib/pkgconfig
107-
find ${DISTNAME} | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
110+
find ${DISTNAME}/bin -type f -executable -exec objcopy --only-keep-debug {} {}.dbg \; -exec strip -s {} \; -exec objcopy --add-gnu-debuglink={}.dbg {} \;
111+
find ${DISTNAME}/lib -type f -exec objcopy --only-keep-debug {} {}.dbg \; -exec strip -s {} \; -exec objcopy --add-gnu-debuglink={}.dbg {} \;
112+
find ${DISTNAME} -not -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
113+
find ${DISTNAME} -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}-debug.tar.gz
108114
cd ../../
115+
rm -rf distsrc-${i}
109116
done
110117
mkdir -p $OUTDIR/src
111118
mv $SOURCEDIST $OUTDIR/src
119+
mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.tar.gz ${OUTDIR}/${DISTNAME}-linux64-debug.tar.gz
120+
mv ${OUTDIR}/${DISTNAME}-i686-*-debug.tar.gz ${OUTDIR}/${DISTNAME}-linux32-debug.tar.gz
112121
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-linux64.tar.gz
113122
mv ${OUTDIR}/${DISTNAME}-i686-*.tar.gz ${OUTDIR}/${DISTNAME}-linux32.tar.gz
114123

contrib/gitian-descriptors/gitian-win.yml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ script: |
3030
WRAP_DIR=$HOME/wrapped
3131
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
3232
CONFIGFLAGS="--enable-reduce-exports --disable-gui-tests"
33-
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip"
33+
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip objcopy"
3434
FAKETIME_PROGS="date makensis zip"
35+
HOST_CFLAGS="-O2 -g"
36+
HOST_CXXFLAGS="-O2 -g"
3537
3638
export QT_RCC_TEST=1
3739
export GZIP="-9n"
@@ -125,22 +127,28 @@ script: |
125127
mkdir -p ${INSTALLPATH}
126128
tar --strip-components=1 -xf ../$SOURCEDIST
127129
128-
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
130+
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}"
129131
make ${MAKEOPTS}
130132
make ${MAKEOPTS} -C src check-security
131133
make deploy
132-
make install-strip DESTDIR=${INSTALLPATH}
134+
make install DESTDIR=${INSTALLPATH}
133135
cp -f bitcoin-*setup*.exe $OUTDIR/
134136
cd installed
135137
mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/
136138
find . -name "lib*.la" -delete
137139
find . -name "lib*.a" -delete
138140
rm -rf ${DISTNAME}/lib/pkgconfig
139-
find ${DISTNAME} -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
140-
cd ../..
141+
find ${DISTNAME}/bin -type f -executable -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \;
142+
find ${DISTNAME}/lib -type f -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \;
143+
find ${DISTNAME} -not -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
144+
find ${DISTNAME} -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}-debug.zip
145+
cd ../../
146+
rm -rf distsrc-${i}
141147
done
142148
cd $OUTDIR
143149
rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe
144150
find . -name "*-setup-unsigned.exe" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz
151+
mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip
152+
mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip
145153
mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip
146154
mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip

0 commit comments

Comments
 (0)