Scalable Distributed SCM

Edit Package mercurial
https://www.mercurial-scm.org/

Mercurial is a fast, lightweight source control management system
designed for efficient handling of very large distributed projects.

Refresh
Refresh
Source Files (show merged sources derived from linked package)
Comments 10

Sean Baggaley's avatar

Mercurial has been updating its build system to be more modern, and with the upcoming 7.0 release these changes will become breaking. Basically all this requires is to use %pyproject_wheel/install. See home:DrinkyBird:test/mercurial which is 6.9.2 that I've updated for the new build system.

Unfortunately, 7.0's further build improvements also introduce a dependency on setuptools_scm >= 8.1, which is newer than the 7.1 version of that package shipped in Leap 15. As it currently is, Mercurial 7.0 will break the Leap 15 builds, see mercurial-7.0-test which builds a commit from the default branch of the mercurial-devel repository.

I might be fast but I'm still a relative novice at packaging, so I'm not sure what should be done about this upcoming breakage.


Lukas Müller's avatar

I would prefer not to break Leap support if possible, but also, this is primarily the devel repository for Tumbleweed. If the package cannot be updated without breaking Leap support, then, at least in my opinion, breaking support is unfortunately necessary.

People requiring a very recent Mercurial version could branch this package and add devel:languages:python:backports as a source repository, where the dependency should be fulfilled. I guess it should build then.


Sean Baggaley's avatar

I added devel:languages:python:backports as a source to my test project for 15.6 and the Mercurial 7.0 test package does build with it. I discussed a bit in #mercurial about this and it seems unlikely this requirement will change on their side, so I guess breaking Leap 15 support will have to happen. Since the build changes work with the current version I will probably submit those ahead of time, then everything will be ready for when 7.0 releases.


Lukas Müller's avatar

Ok, thanks!


Sean Baggaley's avatar

Mercurial 7.0 has released and I've let the Leap 15 builds break as discussed.


Matej Cepl's avatar

setuptools_scm in my experience can be (and most of the time, should be) replaced by some work with sed and hard-coding %{version} to pyproject.toml (or setup.*).


Sean Baggaley's avatar

That also makes sense. There is a pregenerated __version__.py in the source tarballs anyway, so it's annoying setuptools_scm is required just for that...


Matej Cepl's avatar

@DrinkyBird @expeehaa Why we don’t have 7.0.1 in Factory? Actually, … scrap it, it is just about vendored module. Wait! We haven’t unbundled this? Why we are still using vendored modules instead of the system python-zstandard?


Sean Baggaley's avatar

Hm? 7.0.1 is in Factory.

$ podman run opensuse/tumbleweed:latest zypper if mercurial | grep Version   
Version        : 7.0.1-1.1

The python-zstandard is vendored by the Mercurial developers themselves, and isn't intended to be replaced by packagers. To quote the README:

Mercurial ships a copy of the python-zstandard sources. This is used to provide support for zstd compression and decompression functionality. The module is not intended to be replaced by the plain python-zstandard nor is it intended to use a system zstd library. Patches can result in hard to diagnose errors and are explicitly discouraged as unsupported configuration.

The package changelog is just the official one verbatim.


Matej Cepl's avatar

Oh, dear.

openSUSE Build Service is sponsored by