[pacman-dev] [PATCH 7/7] makepkg: create package from stripped debug symbols

Allan McRae allan at archlinux.org
Sun Sep 23 10:44:35 EDT 2012


Signed-off-by: Allan McRae <allan at archlinux.org>
---
 doc/PKGBUILD.5.txt     |  2 ++
 doc/makepkg.conf.5.txt |  3 ++-
 scripts/makepkg.sh.in  | 25 +++++++++++++++++++++++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
index 113e2c4..178519b 100644
--- a/doc/PKGBUILD.5.txt
+++ b/doc/PKGBUILD.5.txt
@@ -277,6 +277,8 @@ A normal sync or upgrade will not use its value.
 	*debug*;;
 		Add the user-specified debug flags (DEBUG_CFLAGS, DEBUG_CXXFLAGS) to
 		their counterpart buildflags as specified in linkman:makepkg.conf[5].
+		When used in combination with the `strip' option, a separate package
+		containing the debug symbols is created.
 
 build() Function
 ----------------
diff --git a/doc/makepkg.conf.5.txt b/doc/makepkg.conf.5.txt
index cf7026c..cca4121 100644
--- a/doc/makepkg.conf.5.txt
+++ b/doc/makepkg.conf.5.txt
@@ -175,7 +175,8 @@ Options
 
 	*debug*;;
 		Add the user-specified debug flags as specified in DEBUG_CFLAGS and
-		DEBUG_CXXFLAGS to their counterpart buildflags.
+		DEBUG_CXXFLAGS to their counterpart buildflags. Creates a separate
+		package containing the debug symbols with used with `strip'.
 
 **INTEGRITY_CHECK=(**check1 ...**)**::
 	File integrity checks to use. Multiple checks may be specified; this
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index e247cad..e48de31 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1861,6 +1861,28 @@ create_package() {
 	fi
 }
 
+create_debug_package() {
+	# check if a debug package was requested
+	if ! check_option "debug" "y" || ! check_option "strip" "y"; then
+		return
+	fi
+
+	pkgdir="${pkgdir}-debug"
+
+	# check if we have any debug symbols to package
+	if dir_is_empty "$pkgdir/usr/lib/debug"; then
+		return
+	fi
+
+	depends=("$pkgname=$(get_full_version)")
+	pkgdesc="Detached debugging symbols for $pkgname"
+	pkgname=$pkgname-debug
+
+	unset groups optdepends provides conflicts replaces backup install changelog
+
+	create_package
+}
+
 create_signature() {
 	if [[ $SIGNPKG != 'y' ]]; then
 		return
@@ -2321,6 +2343,7 @@ run_split_packaging() {
 		run_package $pkgname
 		tidy_install
 		create_package
+		create_debug_package
 		restore_package_variables
 		pkgdir="${pkgdir%/*}"
 	done
@@ -2741,6 +2764,7 @@ if (( INFAKEROOT )); then
 		fi
 		tidy_install
 		create_package
+		create_debug_package
 		pkgdir="${pkgdir%/*}"
 	else
 		run_split_packaging
@@ -2879,6 +2903,7 @@ else
 			fi
 			tidy_install
 			create_package
+			create_debug_package
 			pkgdir="${pkgdir%/*}"
 		else
 			run_split_packaging
-- 
1.7.12.1



More information about the pacman-dev mailing list