public inbox for cygwin-apps@cygwin.com
 help / color / mirror / Atom feed
From: James Morris <jamesmorris2@gmail.com>
To: cygwin-apps@cygwin.com
Subject: Re: [ITP] git-filter-repo 2.34.0
Date: Tue, 8 Mar 2022 15:42:13 -0500	[thread overview]
Message-ID: <CANvYiEf=+WdFw5yL3JDMuN6BYtFWahQddF6rFuG24QXC8B2h9Q@mail.gmail.com> (raw)
In-Reply-To: <20220308092804.vbhtazpcg4yl7dck@lucy.dinwoodie.org>

Hi Adam,

Thanks for the feedback!

> - You've patched the shebang from `/usr/bin/env python3` to
>   `/usr/bin/python3`.  To what end?  /usr/bin/env is part of coreutils
>   for Cygwin, so there shouldn't be any risk that it won't be installed.
>   If someone has their own compiled python3 in /usr/local/bin, they'd
>   probably expect that to be used, so I don't think I'd change the
>   shebang unless there's some clear and specific reason for doing so.

I am trying to prevent exactly what you described. git-filter-repo
needs Python >=3.5 to function and we know that `/usr/bin/python3` is
the correct version. Suppose a user installed Python 3.3 at
`/usr/local/bin/python3`, now git-filter-repo will run with the wrong
Python version and most likely break. This is what other distributions
do when they distribute Python scripts and I'm fairly sure Debian
explicitly calls this out in its policy.

> - You're changing the shebang with both a patch file and with a line in
>   src_compile; you don't need to do both!  I suspect this is an artefact
>   of how Cygport packages the source files, but AIUI the canonical way
>   to do this sort of patching with Cygport is to drop the sed line from
>   your .cygport file and just keep the patch file that gets generated.

Yeah the patch file was automatically generated when I ran `cygport
all` and I wasn't sure what to do with it. To me it seems silly to
have a patch just to change the shebang line when `sed` works fine.
I'll try removing `sed` to see what happens.

> - You've set the category as both Devel and Python.  IMO (I've not
>   checked what the general consensus on this is) this shouldn't be in
>   Python: it's a tool that happens to use Python, but I'd expect the
>   Python category to be for things that are specifically useful to
>   people doing Python dev, so things like libraries that can be usefully
>   imported in a Python module, or tools for debugging Python scripts.  I
>   think this should only be in the Devel category.

Yeah I initially didn't have it in the Python category, but then I
thought about how other tools like bzr and mercurial are there so it
seemed appropriate. Granted I didn't check if they also provided
Python libraries, but I thought it made sense to put git-filter-repo
in the Python category to maybe warn users that installing it would
pull in Python.

> - That said, I think ideally you'd also be packaging git_filter_repo.py,
>   which does provide a Python library that users can import.  At that
>   point, this would unambiguously belong in both categories.

I wasn't sure how to go about this since I didn't know if that would
mean making a bunch of 'python3*-git-filter-repo' packages.
Do you think I should make it importable, remove it from the Python
category, or just leave it as is?

> - You're installing the main script into /usr/bin.  I think the
>   executable should probably be installed into /usr/libexec/git-core,
>   along with other Git executables.  This is what `git --exec-path`
>   returns, and matches what's described in INSTALL.md.  More generally,
>   I think you should be emulating one of the installation mechanisms in
>   INSTALL.md, either using the provided makefile, or following the
>   described steps in the "Manual Installation" section of that doc.

Since git-filter-repo is a third-party command like git-lfs, I am of
the opinion that it should go in `/usr/bin` rather than git's private
`libexec`. That's also how Debian, Gentoo, Arch, and Homebrew package
it. Also I believe my cygport file does pretty much follow the manual
installation instructions except for the part about installing
git_filter_repo.py (for the reasons I stated above). I would like to
use the Makefile, however it has a number of things that make it
difficult to work with in this context and from what I've seen
basically none of the other packagers use it and instead opt to do the
installation manually like I have.

> - Currently Cygport can't run the test suite.  Ideally it'd be able to;
>   it seems unlikely that there would be Cygwin-specific regressions in
>   this code, but it's not out of the question, and given upstream
>   provide a test suite, it seems a shame to not use it.

I'll add that in. The package does currently report some errors with
git 2.35 and it has been reported upstream (not by me)
https://github.com/newren/git-filter-repo/issues/344.

I look forward to getting this in Cygwin!

-James

  reply	other threads:[~2022-03-08 20:42 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-08  0:11 James Morris
2022-03-08  9:28 ` Adam Dinwoodie
2022-03-08 20:42   ` James Morris [this message]
2022-03-11 21:54     ` Adam Dinwoodie
2022-03-12 12:59       ` Jon Turney
2022-03-10 20:52 ` Marco Atzeri
2022-03-11 13:37   ` Jon Turney
2022-04-08 10:26     ` Jon Turney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CANvYiEf=+WdFw5yL3JDMuN6BYtFWahQddF6rFuG24QXC8B2h9Q@mail.gmail.com' \
    --to=jamesmorris2@gmail.com \
    --cc=cygwin-apps@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).