On 22/04/2021 21:54, Eli Schwartz wrote:
On 4/21/21 11:43 AM, morganamilo wrote:
Sometimes non debug flags still generate debug symbols. So always remap them.
The purpose of debug prefix mapping is to point to the sources we install, which in this case we do not install -- and oftentimes we will strip.
What problem is this patch trying to solve?
diff --git a/scripts/libmakepkg/buildenv/debugflags.sh.in b/scripts/libmakepkg/buildenv/debugflags.sh.in index 60913080..52ff4750 100644 --- a/scripts/libmakepkg/buildenv/debugflags.sh.in +++ b/scripts/libmakepkg/buildenv/debugflags.sh.in @@ -30,9 +30,6 @@ buildenv_functions+=('buildenv_debugflags')
buildenv_debugflags() { if check_option "debug" "y"; then - DEBUG_CFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" - DEBUG_CXXFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" - DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}" CFLAGS+=" $DEBUG_CFLAGS" CXXFLAGS+=" $DEBUG_CXXFLAGS" RUSTFLAGS+=" $DEBUG_RUSTFLAGS" diff --git a/scripts/libmakepkg/buildenv/flags.sh.in b/scripts/libmakepkg/buildenv/flags.sh.in new file mode 100644 index 00000000..d41556d3 --- /dev/null +++ b/scripts/libmakepkg/buildenv/flags.sh.in @@ -0,0 +1,34 @@ +#!/usr/bin/bash +# +# debugflags.sh - Specify default flags for building a package +# +# Copyright (c) 2012-2021 Pacman Development Team <pacman-dev@archlinux.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +[[ -n "$LIBMAKEPKG_BUILDENV_FLAGS_SH" ]] && return +LIBMAKEPKG_BUILDENV_FLAGS_SH=1 + +LIBRARY=${LIBRARY:-'@libmakepkgdir@'} + +source "$LIBRARY/util/option.sh" + +buildenv_functions+=('buildenv_flags') + +buildenv_flags() { + CFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" + CXXFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}" + RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}" +} diff --git a/scripts/libmakepkg/buildenv/meson.build b/scripts/libmakepkg/buildenv/meson.build index b72d91c0..a69accb7 100644 --- a/scripts/libmakepkg/buildenv/meson.build +++ b/scripts/libmakepkg/buildenv/meson.build @@ -4,6 +4,7 @@ sources = [ 'buildflags.sh.in', 'compiler.sh.in', 'debugflags.sh.in', + 'flags.sh.in', 'lto.sh.in', 'makeflags.sh.in', ]
Rust emits some debugging info even in release mode. This info includes the paths where the files were built. So you end up with "WARNING: Package contains reference to $srcdir`". Plus if you're not building in a chroot then the package will contain your homedir and hence username which can be a privacy issue.