diff --git a/languages b/languages index 6f33e66..1847953 100644 --- a/languages +++ b/languages @@ -112,7 +112,7 @@ sq sr sr@ije sr@ijekavian -sr@ijekavianlatin +sr@ijekavianlatin1 sr@latin sv ta diff --git a/macros.mingw64 b/macros.mingw64 index 0dbdeda..68d3623 100644 --- a/macros.mingw64 +++ b/macros.mingw64 @@ -61,9 +61,12 @@ %_mingw64_find_lang /usr/lib/rpm/mingw64-find-lang.sh %{buildroot} %_mingw64_debug_install_post \ - /usr/lib/rpm/mingw64-find-debuginfo.sh %{_builddir}\ + /usr/lib/rpm/mingw64-find-debuginfo.sh %{_builddir} 1\ %{nil} +# disable default debug package +%debug_package %{nil} + # Template for debug sub-package. %_mingw64_debug_package(n:) \ %package %{-n:-n %{-n*}-}debug \ @@ -74,9 +77,9 @@ BuildArch: noarch \ This package provides debug information for package %{name}.\ Debug information is useful when developing applications that use this\ package or when debugging this package.\ -%files %{-n:-n %{-n*}-}debug -f %_builddir/mingw64-debugfiles.list\ +%files %{-n:-n %{-n*}-}debug -f %{_builddir}/mingw64-debugfiles.list\ %defattr(-,root,root)\ - +%{nil} %_mingw64_env HOST_CC=gcc; export HOST_CC; \ PKG_CONFIG_PATH="%{_mingw64_libdir}/pkgconfig:%{_mingw64_datadir}/pkgconfig"; export PKG_CONFIG_PATH; \ @@ -196,3 +199,5 @@ package or when debugging this package.\ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \\\ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER +%_mingw64_cmake_install %{_mingw64_env} ; \ + make VERBOSE=1 DESTDIR=%{buildroot} install/fast diff --git a/mingw64-filesystem.spec b/mingw64-filesystem.spec index 3f6fbc0..c2ea116 100644 --- a/mingw64-filesystem.spec +++ b/mingw64-filesystem.spec @@ -18,7 +18,7 @@ %define debug_package %{nil} Name: mingw64-filesystem -Version: 20150401 +Version: 20170717 Release: 0 Summary: MinGW base filesystem and environment License: GPL-2.0+ @@ -39,6 +39,7 @@ Source11: languages.man Provides: mingw64(dbghelp.dll) Provides: mingw64(mpr.dll) Provides: mingw64(userenv.dll) +Provides: mingw64(uxtheme.dll) Requires: mingw64-cross-breakpad-tools Requires: rpm BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -98,10 +99,11 @@ mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/bin mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/include mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/include/sys mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/lib +mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/lib/cmake mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share -mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/aclocal +mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/pkgconfig mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/var mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw%{_localstatedir}/lib mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw%{_localstatedir}/lib/rpm-state @@ -138,7 +140,7 @@ done < %{SOURCE10} while read LANG ; do mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/man/$LANG for sec in 1 2 3 4 5 6 7 8 9 n; do - mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/man/$LANG/man$sec + mkdir -p %{buildroot}%{_prefix}/x86_64-w64-mingw32/sys-root/mingw/share/man/$LANG/man$sec done done < %{SOURCE11} @@ -152,5 +154,6 @@ done < %{SOURCE11} %{_libexecdir}/mingw64-scripts %{_prefix}/x86_64-w64-mingw32/ %{_libexecdir}/rpm/mingw64-* +%dir %{_prefix}/x86_64-w64-mingw32/sys-root/mingw/lib/cmake %changelog diff --git a/mingw64-find-debuginfo.sh b/mingw64-find-debuginfo.sh index f87515e..43ba770 100644 --- a/mingw64-find-debuginfo.sh +++ b/mingw64-find-debuginfo.sh @@ -9,7 +9,23 @@ if [ -n "$1" ]; then BUILDDIR="$1" fi -SYMBOL_DIR="/usr/$host/sys-root/mingw/symbols" +# generate separate debuginfo and debugsource or single debug package combining both +if [ -n "$2" ]; then + SINGLE_DEBUG_PACKAGE=1 +else + SINGLE_DEBUG_PACKAGE=0 +fi + +SOURCEFILE="$BUILDDIR/$target-debugsources.list" +> "$SOURCEFILE" +> $SOURCEFILE.tmp + +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" for f in `find $RPM_BUILD_ROOT -type f -name "*.exe" -or -name "*.dll"` do @@ -26,7 +42,13 @@ do echo extracting debug info from $f # breakpad symbols - "$host-gen_sym_files" "$f" "$RPM_BUILD_ROOT$SYMBOL_DIR" + 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 "$host-objcopy" --only-keep-debug "$f" "$f.debug" || : pushd `dirname $f` @@ -47,3 +69,40 @@ find $RPM_BUILD_ROOT -type f \ 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} +if [ ! -e "$destdir" ]; then + mkdir -p "$destdir" +fi + +for f in `cat $SOURCEFILE.tmp | sort | uniq` +do + if ! test -f "$f"; then + echo "excluded not present file '$f" + continue + fi + o=`echo $f | sed "s,$BUILDDIR,$destdir,g"` + p=`dirname $o` + if [ ! -e "$p" ]; then + mkdir -p "$p" + fi + echo copying $f to $o + cp $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 + +# add package source directory to list of files +if [ -e "$RPM_BUILD_ROOT/$DEBUGSOURCE_DIR" ]; then + echo "%dir $SOURCE_DIR" >> $SOURCEFILE + echo "$DEBUGSOURCE_DIR" >> $SOURCEFILE +fi + +if test "$SINGLE_DEBUG_PACKAGE" -eq 1; then + cat $SOURCEFILE >> $BUILDDIR/$target-debugfiles.list + rm $SOURCEFILE* +fi diff --git a/mingw64-find-lang.sh b/mingw64-find-lang.sh index 418257d..a39e01b 100644 --- a/mingw64-find-lang.sh +++ b/mingw64-find-lang.sh @@ -12,7 +12,7 @@ #work based on this file. # 2015-07-03 Ralf Habacker -# * adapted to mingw32 +# * adapted to mingw64 # 2004-06-20 Arkadiusz Miƛkiewicz # * merge PLD changes, kde, all-name (mkochano,pascalek@PLD) # 1999-10-19 Artur Frysiak @@ -125,7 +125,7 @@ rm -f $MO_NAME_NEW # remove languages we do not yet support - but give out statistics find "$TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/" -maxdepth 1 -type d | sed 's:'"$TOP_DIR"/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/'::; /^$/d' | while read dir; do - if ! rpm -ql mingw32-filesystem | egrep -q "/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/$dir"$; then + if ! rpm -ql mingw64-filesystem | egrep -q "/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/$dir"$; then find $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/$dir -name *.mo | sed 's:'"$TOP_DIR"'::' | while read file; do echo -n "removing translation $file: " msgunfmt "$TOP_DIR/$file" | msgfmt --statistics -o /dev/null - @@ -134,7 +134,7 @@ find "$TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/locale/" -maxdepth 1 fi done find $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/help/ -maxdepth 1 -type d | sed 's:'"$TOP_DIR"/usr/x86_64-w64-mingw32/sys-root/mingw/share/help/'::; /^$/d' | while read dir; do - if ! rpm -ql mingw32-filesystem | egrep -q "/share/help/$dir"$; then + if ! rpm -ql mingw64-filesystem | egrep -q "/share/help/$dir"$; then echo "removing help translation /share/help/$dir" rm -rf $TOP_DIR/usr/x86_64-w64-mingw32/sys-root/mingw/share/help/$dir fi