Ana Guerrero 2024-10-29 13:31:52 +00:00 committed by Git OBS Bridge
commit e6c0431484
4 changed files with 215 additions and 2 deletions

View File

@ -238,6 +238,24 @@ if [ -n "$FILE_DOCPATH" ] ; then
fi
fi
#BEGIN Upstreaming help
DESKTOP_NAME=${APPLICATION##*/}
DESKTOP_PATH=${APPLICATION%$DESKTOP_NAME}
DESKTOP_NAME=${DESKTOP_NAME%.desktop}
if test -z "$DESKTOP_PATH" ; then
DESKTOP_PATH=$RPM_BUILD_ROOT/usr/share/applications/
fi
# Get rid ugly but common slash duplication
DESKTOP_PATH=${DESKTOP_PATH//\/\//\/}
# Set working directory always to $RPM_BUILD_DIR. It prevents placing
# the files inside BUILDROOT. And some packages are confused by new
# desktop files placed to its build directory.
SUDF_DIR=$RPM_BUILD_DIR
mkdir -p $SUDF_DIR/suse_update_desktop_file/update-desktop-files/$DESKTOP_NAME
cp -v "$FILE" $SUDF_DIR/suse_update_desktop_file/update-desktop-files/$DESKTOP_NAME/$DESKTOP_NAME-upstream.desktop
#END Upstreaming help
#
# update Categories
#
@ -355,6 +373,123 @@ if [ "$COMMENT" != "no" ]; then
fi
fi
#BEGIN Upstreaming help
GENERIC_CHANGES=false
TRANSLATION_CHANGES=false
shopt -s nullglob
cp -v "$FILE" $SUDF_DIR/suse_update_desktop_file/update-desktop-files/$DESKTOP_NAME/$DESKTOP_NAME-downstream-no-translation.desktop
# Insert translations from the downstream
ORIG_DIR=$PWD
cd $SUDF_DIR/suse_update_desktop_file/update-desktop-files/$DESKTOP_NAME
if [ "$I18N" != "no" ]; then
sed "s@^Name=@_&Name($DESKTOP_NAME.desktop): @;s@^GenericName=@_&GenericName($DESKTOP_NAME.desktop): @;s@^Comment=@_&Comment($DESKTOP_NAME.desktop): @;s@^Keywords=@_&Keywords($DESKTOP_NAME.desktop): @" $FILE >$DESKTOP_NAME-downstream-no-translation-desktop_translations.desktop
intltool-merge /usr/share/desktop-translations/desktop_translations $DESKTOP_NAME-downstream-no-translation-desktop_translations.desktop $DESKTOP_NAME-downstream-translated-raw.desktop -d -u
sed -i "s@^Name=Name($DESKTOP_NAME.desktop): @Name=@;s@^GenericName=GenericName($DESKTOP_NAME.desktop): @GenericName=@;s@^Comment=Comment($DESKTOP_NAME.desktop): @Comment=@;s@^Keywords=Keywords($DESKTOP_NAME.desktop): @Keywords=@" $DESKTOP_NAME-downstream-translated-raw.desktop
${0%.sh}_process_translations.py $DESKTOP_NAME
cp -a -v $DESKTOP_NAME-downstream-translated.desktop $FILE
if ! diff -u $DESKTOP_NAME-upstream.desktop $DESKTOP_NAME-downstream-translated.desktop >$DESKTOP_NAME-downstream-directly-translated.diff ; then
TRANSLATION_CHANGES=true
fi
sed -i "1,2s/$DESKTOP_NAME-\(upstream\|downstream-translated\).desktop/$DESKTOP_NAME.desktop/" $DESKTOP_NAME-downstream-directly-translated.diff
for DESKTOP in $DESKTOP_NAME-upstream $DESKTOP_NAME-downstream-no-translation ; do
sed "/\(Name\|GenericName\|Comment\|Keywords\)\[/d;s@^Name=@_Name=@;s@^GenericName=@_GenericName=@;s@^Comment=@_Comment=@;s@^Keywords=@_Keywords=@" $DESKTOP.desktop >$DESKTOP.desktop.in
done
if ! diff -u $DESKTOP_NAME-upstream.desktop.in $DESKTOP_NAME-downstream-no-translation.desktop.in >$DESKTOP_NAME-downstream-in-translated.diff ; then
GENERIC_CHANGES=true
fi
sed -i "1,2s/$DESKTOP_NAME-\(upstream\|downstream-no-translation\).desktop.in/$DESKTOP_NAME.desktop.in/" $DESKTOP_NAME-downstream-in-translated.diff
mkdir po
intltool-extract --type=gettext/ini $DESKTOP_NAME-downstream-no-translation-desktop_translations.desktop
xgettext --default-domain=$DESKTOP_NAME --add-comments --keyword=_ --keyword=N_ --keyword=U_ $DESKTOP_NAME-downstream-no-translation-desktop_translations.desktop.h -o po/$DESKTOP_NAME.pot
for PO in /usr/share/desktop-translations/desktop_translations/*.po ; do
LNG=${PO##*/}
LNG=${LNG%.po}
msgmerge $PO po/$DESKTOP_NAME.pot -o po/$LNG-pre.po
if test -f po/$LNG-pre.po ; then
msgattrib --no-obsolete po/$LNG-pre.po -o po/$LNG.po
fi
sed -i "s@\"\(Name\|GenericName\|Comment\|Keywords\)($DESKTOP_NAME.desktop): @\"@" po/$LNG.po
rm po/$LNG-pre.po
done
sed -i "s@\"\(Name\|GenericName\|Comment\|Keywords\)($DESKTOP_NAME.desktop): @\"@" po/$DESKTOP_NAME.pot
rm $DESKTOP_NAME-downstream-no-translation-desktop_translations.desktop $DESKTOP_NAME-downstream-no-translation-desktop_translations.desktop.h $DESKTOP_NAME-downstream-translated-raw.desktop
fi
# Generate output in the OTHER directory
cd ..
RPM_OTHER_DIR=${RPM_BUILD_DIR%/BUILD*}/OTHER
if test -f $RPM_OTHER_DIR/update-desktop-files.tar.gz ; then
X=r
else
X=c
fi
cd ..
tar ${X}f $RPM_OTHER_DIR/update-desktop-files.tar.gz update-desktop-files
EOF=EOF
cat <<EOF
========================= Deprecation notice ==============================
%suse_update_desktop_file is deprecated and will be removed in the future.
It provides SUSE specific changes that were never sent to the upstream.
there is a time to change this now.
Please follow
https://en.opensuse.org/openSUSE:Update-desktop-files_deprecation
Are there any generic changes to upstream: $GENERIC_CHANGES
Are there any translation changes to upstream: $TRANSLATION_CHANGES
Location of the upstreaming files during the build:
$SUDF_DIR/suse_update_desktop_file/$DESKTOP_NAME
- $DESKTOP_NAME-downstream-directly-translated.diff
- $DESKTOP_NAME-downstream-in-translated.diff
- $DESKTOP_NAME-downstream-no-translation.desktop
- $DESKTOP_NAME-downstream-no-translation.desktop.in
- $DESKTOP_NAME-downstream-translated.desktop
- $DESKTOP_NAME-upstream.desktop
- $DESKTOP_NAME-upstream.desktop.in
Customized helpers for you:
cd update-desktop-files/$DESKTOP_NAME/po
for PO in *.po ; do
if test -f ../../../po/\$PO ; then
msgcat --use-first \$PO ../../../po/\$PO -o ../../../po/\$PO.new
mv ../../../po/\$PO.new ../../../po/\$PO
else
cp -a \$PO ../../../po/\$PO
fi
done
Or swap arguments of msgcat according to the documentation:
msgcat --use-first ../../../po/\$PO \$PO -o ../../../po/\$PO.new
sed "/\(Name\|GenericName\|Comment\|Keywords\)\[/d;s@^Name=@_Name=@;s@^GenericName=@_GenericName=@;s@^Comment=@_Comment=@;s@^Keywords=@_Keywords=@" <$DESKTOP_NAME.desktop >$DESKTOP_NAME.desktop.in
patch <$DESKTOP_NAME-downstream-in-translated.diff
Source{number}: $DESKTOP_NAME.desktop.in
or
Source{number}: $DESKTOP_NAME.desktop
cp %{SOURCE{NUMBER}} .
%translate_suse_desktop $DESKTOP_NAME.desktop
install -D -m 0644 $DESKTOP_NAME.desktop %{buildroot}${DESKTOP_PATH#$RPM_BUILD_ROOT}$DESKTOP_NAME.desktop
osc add $DESKTOP_NAME.desktop.in
osc rm $DESKTOP_NAME.desktop
if ! diff $DESKTOP_NAME.desktop %{SOURCE{number}} ; then
cat <<EOF
A new version of desktop file exists. Please update $DESKTOP_NAME.desktop
rpm source from $PWD to get translations to older products.
$EOF
-===========================================================================
EOF
cd $ORIG_DIR
#END Upstreaming help
if [ "$I18N" = "no" ]; then
#
# this file will not get translated

View File

@ -0,0 +1,67 @@
#!/usr/bin/python3
import sys
file = sys.argv[1]
po_raw = open(file + '-downstream-translated-raw.desktop', 'r')
po_clean = open(file + '-downstream-translated.desktop', 'w')
lines = po_raw.readlines()
items = dict()
name_processing = False
genericname_processing = False
comment_processing = False
keywords_processing = False
for line in lines:
if ( name_processing and not (line.startswith("Name[") or\
line.startswith("Name="))) or\
( genericname_processing and not (line.startswith("GenericName[") or\
line.startswith("GenericName="))) or\
( comment_processing and not (line.startswith("Comment[") or\
line.startswith("Comment="))) or\
( keywords_processing and not (line.startswith("Keywords[") or\
line.startswith("Keywords="))):
name_processing = False
genericname_processing = False
comment_processing = False
keywords_processing = False
for item in sorted(items):
po_clean.write(items[item])
items = dict()
# Why lang = "AAAA"? Untranslated string is supposed to be first,
# but not all desktop files conform to this conventions. Expect it
# anywhere, but move it to the beginning of the list.
if line.startswith("Name["):
name_processing = True
lang = line[5:line.find(']')]
items[lang] = line
elif line.startswith("Name="):
name_processing = True
lang = "AAAA"
items[lang] = line
elif line.startswith("GenericName["):
genericname_processing = True
lang = line[12:line.find(']')]
items[lang] = line
elif line.startswith("GenericName="):
genericname_processing = True
lang = "AAAA"
items[lang] = line
elif line.startswith("Comment["):
comment_processing = True
lang = line[8:line.find(']')]
items[lang] = line
elif line.startswith("Comment="):
comment_processing = True
lang = "AAAA"
items[lang] = line
elif line.startswith("Keywords["):
keywords_processing = True
lang = line[9:line.find(']')]
items[lang] = line
elif line.startswith("Keywords="):
keywords_processing = True
lang = "AAAA"
items[lang] = line
else:
po_clean.write(line)

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Sat Oct 26 23:46:25 UTC 2024 - Stanislav Brabec <sbrabec@suse.com>
- Generate files that allow easy upstreaming. (boo#1158957)
- Embed SUSE translations to the desktop file
(add suse_update_desktop_file_process_translations.py).
-------------------------------------------------------------------
Tue Dec 6 17:11:05 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>

View File

@ -1,7 +1,7 @@
#
# spec file for package update-desktop-files
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -27,10 +27,14 @@ Source: suse_update_desktop_file.sh
Source1: map-desktop-category.sh
Source2: macro
Source4: brp-trim-translations.sh
Source5: suse_update_desktop_file_process_translations.py
# This is not true technically, but we do that to make the rpm macros from
# desktop-file-utils available to most packages that ship a .desktop file
# (since they already have a update-desktop-files BuildRequires).
Requires: desktop-file-utils
Requires: desktop-translations-devel
Requires: gettext-tools
Requires: intltool
BuildArch: noarch
%description
@ -72,7 +76,7 @@ sed -e '/awk/d' < %SOURCE4 > brp-extract-translations
%install
mkdir -p $RPM_BUILD_ROOT%_rpmconfigdir
install -m0755 %SOURCE0 %SOURCE1 $RPM_BUILD_ROOT%_rpmconfigdir
install -m0755 %SOURCE0 %SOURCE1 %SOURCE5 $RPM_BUILD_ROOT%_rpmconfigdir
install -m0644 -D %SOURCE2 $RPM_BUILD_ROOT%_rpmmacrodir/macros.%name
install -m0755 -D %SOURCE4 $RPM_BUILD_ROOT/usr/lib/rpm/brp-suse.d/brp-70-trim-translations
install -m0755 -D brp-extract-translations $RPM_BUILD_ROOT/usr/lib/rpm/brp-suse.d/brp-70-extract-translations