Accepting request 1218774 from X11:common:Factory
OBS-URL: https://build.opensuse.org/request/show/1218774 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/update-desktop-files?expand=0&rev=105
This commit is contained in:
commit
e6c0431484
@ -238,6 +238,24 @@ if [ -n "$FILE_DOCPATH" ] ; then
|
|||||||
fi
|
fi
|
||||||
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
|
# update Categories
|
||||||
#
|
#
|
||||||
@ -355,6 +373,123 @@ if [ "$COMMENT" != "no" ]; then
|
|||||||
fi
|
fi
|
||||||
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
|
if [ "$I18N" = "no" ]; then
|
||||||
#
|
#
|
||||||
# this file will not get translated
|
# this file will not get translated
|
||||||
|
67
suse_update_desktop_file_process_translations.py
Normal file
67
suse_update_desktop_file_process_translations.py
Normal 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)
|
@ -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>
|
Tue Dec 6 17:11:05 UTC 2022 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package update-desktop-files
|
# 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
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# 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
|
Source1: map-desktop-category.sh
|
||||||
Source2: macro
|
Source2: macro
|
||||||
Source4: brp-trim-translations.sh
|
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
|
# 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
|
# desktop-file-utils available to most packages that ship a .desktop file
|
||||||
# (since they already have a update-desktop-files BuildRequires).
|
# (since they already have a update-desktop-files BuildRequires).
|
||||||
Requires: desktop-file-utils
|
Requires: desktop-file-utils
|
||||||
|
Requires: desktop-translations-devel
|
||||||
|
Requires: gettext-tools
|
||||||
|
Requires: intltool
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -72,7 +76,7 @@ sed -e '/awk/d' < %SOURCE4 > brp-extract-translations
|
|||||||
|
|
||||||
%install
|
%install
|
||||||
mkdir -p $RPM_BUILD_ROOT%_rpmconfigdir
|
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 -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 %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
|
install -m0755 -D brp-extract-translations $RPM_BUILD_ROOT/usr/lib/rpm/brp-suse.d/brp-70-extract-translations
|
||||||
|
Loading…
Reference in New Issue
Block a user