diff --git a/mingw-objdump-srcfiles b/mingw-objdump-srcfiles new file mode 100644 index 0000000..cd04cb5 --- /dev/null +++ b/mingw-objdump-srcfiles @@ -0,0 +1,29 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2022 Jan Engelhardt +# SPDX-FileCopyrightText: 2022 Ralf Habacker +# SPDX-License-Identifier: GPL-2.0-or-later + +# get source filenames from dwarf debug sections + +gawk ' +BEGIN { state = 0 } + +state == 1 && $2 ~ /DW_AT_name/ { + atname = $NF +} + +state == 1 && $2 ~ /DW_AT_comp_dir/ { + atdir = $NF + if (atdir != "" && atname != "") { + print atdir "/" atname + state = 0 + } +} + +state == 0 && $0 ~ /DW_TAG_compile_unit/ { + state = 1 + atdir = "" + atname = "" +} +' diff --git a/mingw64-filesystem.changes b/mingw64-filesystem.changes index 964cf13..307aefe 100644 --- a/mingw64-filesystem.changes +++ b/mingw64-filesystem.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Thu Jul 28 15:22:52 UTC 2022 - Ralf Habacker + +- Update to 20220805 +- Fix for generating the source file list for the debug package (boo#1201107). + * Added the script 'mingw-objdump-srcfiles' to determine the + source files used by the package in question. + * The gawk script is based on a perl script from jengelh, which was + not adopted due to an additional runtime dependency. + * With this change, *.sym files are no longer included in generated + debug packages. + * The now obsolete runtime dependency to mingw64-cross-breakpad-tools + has been removed +- Exclude 'mlang.dll' from automatic runtime library detection required + for win_iconv package +- Fix spelling in *.changes + ------------------------------------------------------------------- Thu Jul 28 09:03:20 UTC 2022 - Ralf Habacker @@ -17,7 +34,7 @@ Wed Jul 20 07:11:15 UTC 2022 - Ralf Habacker - Update to 20220801 - Fetch real used shared library name from import libraries to avoid - file name generation errors, for example with mingw32-glib2 + file name generation errors, for example with mingw64-glib2 - Scan all archives for shared library names as packages may not use the default import library extension diff --git a/mingw64-filesystem.spec b/mingw64-filesystem.spec index b62ac9c..2b1b745 100644 --- a/mingw64-filesystem.spec +++ b/mingw64-filesystem.spec @@ -31,7 +31,7 @@ %define _rpmmacrodir %{_sysconfdir}/rpm %endif Name: mingw64-filesystem -Version: 20220801 +Version: 20220805 Release: 0 Summary: MinGW base filesystem and environment License: GPL-2.0-or-later @@ -53,6 +53,9 @@ Source12: mingw64-cmake.prov Source13: mingw64-cmake.attr Source14: macros.mingw64-cmake Source15: mingw64-filesystem-rpmlintrc +Source16: mingw-objdump-srcfiles +# add excluded system libraries to mingw64-find-requires.sh +# TODO: The following provides could be removed after all packages has been rebuild Provides: mingw64(bcrypt.dll) Provides: mingw64(dbghelp.dll) Provides: mingw64(mpr.dll) @@ -200,6 +203,8 @@ while read LANG ; do done done < %{SOURCE11} +install -m 0755 %{SOURCE16} %{buildroot}%{_bindir}/x86_64-w64-mingw32-objdump-srcfiles + %files %defattr(-,root,root,-) %doc COPYING @@ -218,6 +223,7 @@ done < %{SOURCE11} %{_rpmconfigdir}/mingw64-cmake.prov %{_fileattrsdir}/mingw64-cmake.attr %{_bindir}/mingw64-* +%{_bindir}/x86_64-w64-mingw32-* %{_libexecdir}/mingw64-scripts %{_prefix}/x86_64-w64-mingw32/ %{_rpmconfigdir}/mingw64-* diff --git a/mingw64-find-debuginfo.sh b/mingw64-find-debuginfo.sh index 07d4808..07b6535 100644 --- a/mingw64-find-debuginfo.sh +++ b/mingw64-find-debuginfo.sh @@ -23,7 +23,6 @@ SOURCEFILE="$BUILDDIR/$target-debugsources.list" srcdir=`realpath $PWD` ROOT_DIR="/usr/$host/sys-root/mingw" -SYMBOL_DIR="${ROOT_DIR}/symbols" SOURCE_DIR="${ROOT_DIR}/src" DEBUGSOURCE_DIR="${SOURCE_DIR}/debug" @@ -41,14 +40,8 @@ do echo extracting debug info from $f - # breakpad symbols - symfile=`"$host-gen_sym_files" "$f" "$RPM_BUILD_ROOT$SYMBOL_DIR"` - echo $symfile - # grep all listed source files belonging to this package into temporary source file list - cat $symfile | grep "FILE" | cut -d' ' -f3 | grep $srcdir >> $SOURCEFILE.tmp - # remap file path in symbol file to src debug location - # we remap all files to make finding src files from other packages possible - sed -i "s,$BUILDDIR,$DEBUGSOURCE_DIR,g" $symfile + # grep all listed source files belonging to this package into temporary source file list. + "$host-objdump" -Wi "$f" | "$host-objdump-srcfiles" | grep $srcdir >>"$SOURCEFILE.tmp" "$host-objcopy" --only-keep-debug "$f" "$f.debug" || : pushd `dirname $f` @@ -67,10 +60,6 @@ find $RPM_BUILD_ROOT -type f \ | sort \ | sed -n -e "s#^$RPM_BUILD_ROOT##p" >"$BUILDDIR/$target-debugfiles.list" -if [ -e "$RPM_BUILD_ROOT/$SYMBOL_DIR" ]; then - echo "$SYMBOL_DIR" >>"$BUILDDIR/$target-debugfiles.list" -fi - echo creating debugsource file structure destdir=${RPM_BUILD_ROOT}${DEBUGSOURCE_DIR} @@ -91,9 +80,6 @@ do fi echo copying $f to $o install -m 644 $f $o - # create debugsource.list - # we do not add each single file, see below - # echo $o | sed "s,${RPM_BUILD_ROOT},,g" >> $SOURCEFILE done rm $SOURCEFILE.tmp diff --git a/mingw64-find-requires.sh b/mingw64-find-requires.sh index bf2eb8e..94c54a5 100644 --- a/mingw64-find-requires.sh +++ b/mingw64-find-requires.sh @@ -31,16 +31,24 @@ filelist=`sed "s/['\"]/\\\&/g"` libs_to_exclude+=" advapi32 + bcrypt cfgmgr32 comctl32 comdlg32 crypt32 + d2d1 + d3d11 + d3d12 d3d8 d3d9 + dbghelp + dcomp ddraw dnsapi dsound dwmapi + dwrite + dxgi dxva2 evr gdi32 @@ -53,6 +61,8 @@ libs_to_exclude+=" ksuser mf mfplat + mlang + mpr mpr mscms mscoree @@ -62,8 +72,10 @@ libs_to_exclude+=" msvcr90 msvcrt mswsock + ncrypt netapi32 odbc32 + odbccp32 ole32 oleacc oleaut32 @@ -75,14 +87,17 @@ libs_to_exclude+=" shell32 shlwapi user32 + userenv usp10 + uxtheme version + winhttp wininet winmm wldap32 ws2_32 wsock32 - winhttp + wtsapi32 " exclude_pattern=""