Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: gettext: refactor and split in multiple packages #79171

Draft
wants to merge 1 commit into
base: staging
Choose a base branch
from

Conversation

lsix
Copy link
Member

@lsix lsix commented Feb 3, 2020

Motivation for this change

This PR solves #73288

Following upstream recommendations, gettext is split into 3 distinct
packages:

  • gettext-runtime
  • gettext-tools
  • libtextstyle

See https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=PACKAGING;h=f4bae4561ec70a9de2532502b5c2358bb976036c;hb=55b8fe9a2f12b22eb3ee6baf973e03e60b3a9915

Given that for each sub-package we use sourceRoot, the patches do not
apply directly when fetch from upstream git and have to be editted to
strip the top level dir.

For the time being, gettext is turned into an alias to
gettext-runtime to ease transition.

A tree-wide update could be tried to replace all occurances of a gettext dependency with gettext-runtime if required by review.

I am also very open to discussions on how I did implement the 3 packages that share 1 source tarball.

If we are too close to the last staging changes before release-20.03, I have no problem to postpone this MR (cc @FRidh ).

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Ensured that relevant documentation is up to date
  • Fits CONTRIBUTING.md.

nixos/doc/manual/release-notes/rl-2003.xml Outdated Show resolved Hide resolved
nixos/doc/manual/release-notes/rl-2003.xml Outdated Show resolved Hide resolved
pkgs/development/libraries/gettext-runtime/default.nix Outdated Show resolved Hide resolved
pkgs/development/libraries/gettext-runtime/default.nix Outdated Show resolved Hide resolved
pkgs/development/tools/gettext-tools/default.nix Outdated Show resolved Hide resolved
pkgs/development/tools/gettext-tools/default.nix Outdated Show resolved Hide resolved
pkgs/development/tools/gettext-tools/default.nix Outdated Show resolved Hide resolved
pkgs/development/tools/gettext-tools/default.nix Outdated Show resolved Hide resolved
pkgs/development/tools/gettext-tools/default.nix Outdated Show resolved Hide resolved
@lsix
Copy link
Member Author

lsix commented Feb 6, 2020

@jtojnar thanks for the review

I am so ashamed of the number of of typos I did let through…

I am rebuilding everything to test at the moment. I’ll push when I have checked that it builds properly.

I have also ported some modifications you suggested from gettext-tools to gettext-runtime (like drop trying to drop CFLAGS=-D_FORTIFY_SOURCE=0 for darwin). hydra will let us know if this is a mistake. If necessary it will be easily to reintroduce.

@lsix lsix force-pushed the refactor-gettext-0.20.1 branch 2 times, most recently from f64049c to ddea13a Compare February 6, 2020 09:51
@lsix lsix requested a review from jtojnar February 6, 2020 10:26
@ofborg ofborg bot requested a review from 7c6f434c February 10, 2020 13:03
@lsix lsix force-pushed the refactor-gettext-0.20.1 branch 2 times, most recently from 04e0ae9 to f764d7a Compare February 10, 2020 19:55
The <package>gettext</package> has been split into 3 components:
<package>gettext-runtime</package>, <package>gettext-tools</package>
and <package>libtextstyle</package>. As a convenience, <package>gettext</package>
now points to <package>gettext-runtime</package>.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
now points to <package>gettext-runtime</package>.
now points to <package>gettext</package>.

@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
patches = [
(substituteAll {
src = ./fix-test-paths.patch;
inherit coreutils gettext glibcLocales;
inherit coreutils gettext-tools glibcLocales;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
inherit coreutils gettext-tools glibcLocales;
inherit coreutils glibcLocales;
gettext = gettext-tools;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bash does not support dashes in variable names.

@@ -35,14 +35,14 @@ index 0a0a28f1..16fd51fe 100755
EOF
mkdir -p ${DIR}/files/de/share/de/LC_MESSAGES
-msgfmt --output-file ${DIR}/files/de/share/de/LC_MESSAGES/helloworld.mo de.po
+@gettext@/bin/msgfmt --output-file ${DIR}/files/de/share/de/LC_MESSAGES/helloworld.mo de.po
+@gettext-tools@/bin/msgfmt --output-file ${DIR}/files/de/share/de/LC_MESSAGES/helloworld.mo de.po
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
+@gettext-tools@/bin/msgfmt --output-file ${DIR}/files/de/share/de/LC_MESSAGES/helloworld.mo de.po
+@gettext@/bin/msgfmt --output-file ${DIR}/files/de/share/de/LC_MESSAGES/helloworld.mo de.po

cat > fr.po <<EOF
msgid "Hello world"
msgstr "Bonjour le monde"
EOF
mkdir -p ${DIR}/files/fr/share/fr/LC_MESSAGES
-msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
+@gettext@/bin/msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
+@gettext-tools@/bin/msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
+@gettext-tools@/bin/msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po
+@gettext@/bin/msgfmt --output-file ${DIR}/files/fr/share/fr/LC_MESSAGES/helloworld.mo fr.po

@@ -105,10 +105,10 @@ stdenv.mkDerivation rec {
]);

nativeBuildInputs = [
meson ninja pkgconfig perl python3 gettext gtk-doc docbook_xsl docbook_xml_dtd_45
meson ninja pkgconfig perl python3 gettext-tools gtk-doc docbook_xsl docbook_xml_dtd_45
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you make all the alias fixes into a separate commit so it is easier to review?

libtextstyle = callPackage ../development/libraries/libtextstyle { };

# Ease transition between one-package gettext to split packages (tools - runtime)
gettext = gettext-runtime;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the most common use case.

Suggested change
gettext = gettext-runtime;
gettext = gettext-tools;

@jtojnar
Copy link
Contributor

jtojnar commented Feb 10, 2020

I would actually suggest going with gettext = gettext-tools; and letting Hydra tell us what is broken. And then based on that add the runtime where needed. And finally resolve the alias everywhere.

Following upstream recommendations, gettext is split into 3 distinct
packages:
- gettext-runtime
- gettext-tools
- libtextstyle

See https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=PACKAGING;h=f4bae4561ec70a9de2532502b5c2358bb976036c;hb=55b8fe9a2f12b22eb3ee6baf973e03e60b3a9915

Given that for each sub-package we use `sourceRoot`, the patches do not
apply directly when fetch from upstream git and have to be editted to
strip the top level dir.

For the time being, `gettext` is turned into an alias to
`gettext-runtime` to ease transition.
@lsix
Copy link
Member Author

lsix commented Feb 13, 2020

@jtojnar I am a but busy at the moment, I’ll come back to this MR probably next week and try to make progress on it.

Thanks for your feedbacks, they are really valuable!

@stale
Copy link

stale bot commented Aug 11, 2020

Hello, I'm a bot and I thank you in the name of the community for your contributions.

Nixpkgs is a busy repository, and unfortunately sometimes PRs get left behind for too long. Nevertheless, we'd like to help committers reach the PRs that are still important. This PR has had no activity for 180 days, and so I marked it as stale, but you can rest assured it will never be closed by a non-human.

If this is still important to you and you'd like to remove the stale label, we ask that you leave a comment. Your comment can be as simple as "still important to me". But there's a bit more you can do:

If you received an approval by an unprivileged maintainer and you are just waiting for a merge, you can @ mention someone with merge permissions and ask them to help. You might be able to find someone relevant by using Git blame on the relevant files, or via GitHub's web interface. You can see if someone's a member of the nixpkgs-committers team, by hovering with the mouse over their username on the web interface, or by searching them directly on the list.

If your PR wasn't reviewed at all, it might help to find someone who's perhaps a user of the package or module you are changing, or alternatively, ask once more for a review by the maintainer of the package/module this is about. If you don't know any, you can use Git blame on the relevant files, or GitHub's web interface to find someone who touched the relevant files in the past.

If your PR has had reviews and nevertheless got stale, make sure you've responded to all of the reviewer's requests / questions. Usually when PR authors show responsibility and dedication, reviewers (privileged or not) show dedication as well. If you've pushed a change, it's possible the reviewer wasn't notified about your push via email, so you can always officially request them for a review, or just @ mention them and say you've addressed their comments.

Lastly, you can always ask for help at our Discourse Forum, or more specifically, at this thread or at #nixos' IRC channel.

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Aug 11, 2020
@infinisil
Copy link
Member

Still interested in this @lsix and @jtojnar?

@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Aug 24, 2020
@jtojnar
Copy link
Contributor

jtojnar commented Aug 24, 2020

Yes, we definitely still want this but I do not think I will be able to finish this for 20.09.

@lsix
Copy link
Member Author

lsix commented Aug 24, 2020

Yes, we still want this, but I have not had much time nor build resources to dedicate to it 😭

@FRidh FRidh modified the milestones: 20.09, 21.03 Aug 24, 2020
@ryantm ryantm marked this pull request as draft October 23, 2020 03:02
@jtojnar jtojnar modified the milestones: 21.05, 21.11 May 11, 2021
@stale
Copy link

stale bot commented Nov 9, 2021

I marked this as stale due to inactivity. → More info

@stale stale bot added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Nov 9, 2021
@Artturin Artturin modified the milestones: 21.11, 23.05 Dec 31, 2022
@stale stale bot removed the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Dec 31, 2022
@Artturin Artturin removed this from the 23.05 milestone Jan 9, 2023
@wegank wegank added the 2.status: stale https://github.com/NixOS/nixpkgs/blob/master/.github/STALE-BOT.md label Mar 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Staging
  
Needs review
Development

Successfully merging this pull request may close these issues.

None yet

8 participants