Bug#771249: Hacking pkg-grub/grub.git to allow po/* updates (Re: Bug#771249: Translation update)

Ian Campbell ijc at debian.org
Sun Dec 7 12:22:54 UTC 2014


Colin, since the below has a significant impact on the packaging git
workflow I won't take it any further without your input...

On Thu, 2014-11-27 at 19:06 -0400, David Prévot wrote:
> Please consider updating translations of grub2, as already provided by
> translators since upstream released 2.02~beta2.

Sadly applying this patch is not as easy as it might seem, due to
Tedious Packaging VCS Reasons(tm) :-/

The pkg-grub git tree[0] uses git-dpm on-top of the upstream grub.git
tree, which does not include po/*.po, but those files are included in
the upstream tarball release (i.e. in our orig.tar.xz).

This unfortunately means that it is not possible to update po/* simply
using the normal git-dpm mechanisms.

I've attempted to workaround this as follows:

Create a new "upstream-po" branch, based on origin/upstream but with the
upstream released po files included (autogenerated stuff is direct from
linguas.sh):
        
        $ git checkout -b upstream-po origin/upstream
        $ cp ../grub2-2.02~beta2/po/*.po po/
        $ cp ../grub2-2.02~beta2/po/LINGUAS po
        $ (
        autogenerated="en at quot en at hebrew de at hebrew en at cyrillic en at greek en at arabic en at piglatin de_CH"
        for x in $autogenerated; do
            git rm po/$x.po
        done
        )
        # Remove po/*.po and po/LINGUAS from .gitignore
        $ git commit -a
        
Now rebase master onto this:

        $ git checkout -b master-po origin/master
        $ git-dpm record-new-upstream ../grub2_2.02~beta2.orig.tar.xz upstream-po
        $ git-dpm rebase-patched
        $ git-dpm dch "Update git-dpm baseline to include upstream po files."

This results in a source package which differs only in the git-dpm noise
in debian/patches (hash changes) plus the changelog and debian/.git-dpm
as expected.

From here we can using the usual git-dpm checkout-patched/update-patches
routine to add an update-linguas.patch, which contains the result of
running linguas.sh.

I've pushed the results to /people/ijc/{upstream,master}-po in the
packaging git tree.

These branches do not include the followup patch from this bug to force
*.gmo to actually be updated, and I've not actually built binaries based
on it yet.

If we go ahead with this approach I'd suggest that upstream and
upstream-po ought to remain distinct in the packaging git tree, with the
former tracking pristine upstream and the latter adding the po files,
but to have a single master which is based on upstream-po (i.e. what is
currently called people/ijc/master-po).

It's possible this could also be solved with a second subcomponent
orig.tar containing an updated po subdirectory, or by debian/rules
machinery to update po/* from e.g. debian/upstream-po/* or something.
I've not tried either of those approaches, not sure if they are actually
realistic. I'll investigate them if you think it would be better.

Cheers,
Ian.

[0] http://anonscm.debian.org/cgit/pkg-grub/grub.git/



More information about the Pkg-grub-devel mailing list