#### Beyond Linux® From Scratch (systemd Edition) - Version r13.0-491

### Chapter 13. Programming

- Prev

  luajit-20260213

- Next

  NASM-3.01

- Up
- Home

# Mercurial-7.2.1

## Introduction to Mercurial

Mercurial is a distributed source control management tool similar to Git and Bazaar. Mercurial is written in Python and is used by projects such as Mozilla for Firefox and Thunderbird.

### Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

### Package Information

- Download (HTTP): https://www.mercurial-scm.org/release/mercurial-7.2.1.tar.gz

- Download MD5 sum: 1b7fd8be6664ba24e47c29f31dc1ac26

- Download size: 8.8 MB

- Estimated disk space required: 127 MB (with docs, add 2.5 GB for tests)

- Estimated build time: 0.3 SBU (with docs; add 30 SBU for tests; both using parallelism=4)

### Mercurial Dependencies

#### Required

setuptools_scm-9.2.2

#### Optional

build-1.5.0, docutils-0.22.4 (required to build the documentation), git-2.53.0, OpenSSH-10.3p1 (runtime, to access ssh://... repositories), Pygments-2.20.0, rustc-1.95.0 (see `rust/README.rst` and `rust/rhg/README.md`), Subversion-1.14.5 (with Python bindings), uv_build-0.10.2 (for an alternate build method), Which-2.23 (used in one test), CVS, pyflakes, and re2

## Installation of Mercurial

Mercurial is built and installed in a single command as the `root` user:

    make PREFIX=/usr install

The documentation is built by the above command (in man and html formats), but only the manual pages are installed. If you wish to install the html documentation, issue as the `root` user:

    mkdir /usr/share/doc/mercurial-7.2.1 &&
    cp -R doc/html /usr/share/doc/mercurial-7.2.1

If you wish to run the tests, the rust sources have to be fixed for the most recent rust version:

    pushd rust                           &&
    cargo fix --workspace --allow-no-scm &&
    popd

There is also a problem with permissions in the build directory, since the above install command has created files owned by `root`, that one test tries to modify. To remedy this, issue, as the `root` user:

    chown -Rv username .

Where `username` should be replaced with the user name of the person running the tests. To run the test suite, issue:

    TESTFLAGS="-j<N> --with-hg /usr/bin/hg" make check

where `<N>` is an integer between one and the number of ( processor X threads ), inclusive (default is the total number of processors as returned by nproc). Tests may fail because some error messages have changed in Python or some deprecation warnings are printed that were not present when the test was designed. Also, some tests use a lot of memory, and may be killed by the kernel if the system is running low on memory.

In order to investigate any apparently failing tests, you may use the run-tests.py script in the `tests` directory. To see the almost forty switches, some of them very useful, issue tests/run-tests.py --help. Running the following commands, you will execute only the tests that failed before:

    pushd tests  &&
      ./run-tests.py --with-hg /usr/bin/hg --retest
    popd

An interesting switch is `--time`, which will generate a table of all the executed tests and their respective start, end, user, system and real times once the tests are complete. Note that these switches may be used with make check by including them in the `TESTFLAGS` environment variable.

After installation, two very quick and simple tests should run correctly. The first one needs some configuration:

    cat >> ~/.hgrc << "EOF"
    [ui]
    username = <user_name> <user@mail>
    EOF

where you must replace <user_name> and <user@mail> (mail is optional and can be omitted, but if you keep it, you should also keep the angle brackets “<>”). With the user identity defined, run hg debuginstall and several lines will be displayed, the last one reading "no problems detected". Another quick and simple test is just hg, which should output basic commands that can be used with hg.

## Configuring Mercurial

### Config Files

`/etc/mercurial/hgrc` and `~/.hgrc`

The great majority of extensions are disabled by default. Run hg help extensions if you need to enable any, e.g. when investigating test failures. This will output a list of enabled and disabled extensions, as well as more information such as how to enable or disable extensions using configuration files.

If you have installed make-ca-1.16.1 and want Mercurial to use the certificates, as the `root` user, issue:

    install -v -d -m755 /etc/mercurial &&
    cat > /etc/mercurial/hgrc << "EOF"
    [web]
    cacerts = /etc/pki/tls/certs/ca-bundle.crt
    EOF

## Contents

Installed Programs: hg
Installed Libraries: several internal modules under /usr/lib/python3.14/site-packages/mercurial
Installed Directories: /etc/mercurial, /usr/lib/python3.14/site-packages/hgdemandimport, /usr/lib/python3.14/site-packages/hgext, /usr/lib/python3.14/site-packages/hgext3rd, /usr/lib/python3.14/site-packages/mercurial, /usr/lib/python3.14/site-packages/mercurial-7.2.1.dist-info, and /usr/share/doc/mercurial-7.2.1

### Short Descriptions

hg | is the mercurial version control system

- Prev

  luajit-20260213

- Next

  NASM-3.01

- Up
- Home