python/cpython-source-deps

Source for packages that the cpython build process depends on

29

stars

20

commits

Aug 27, 2026

updated

README

cpython-source-deps
===================

Source for packages that the CPython build process depends on.

It is currently expected that this will only be useful on Windows,
and in any case you should never need to clone this repository
unless you are updating its contents.

.. contents::

Updating Source Dependencies
----------------------------

The procedure for updating the different source dependencies are similar.  Below
is an example for updating SQLite::


1. Fork and clone this repository.

2. Checkout a new branch off the ``sqlite`` branch. Assuming this repo is set
   as your ``upstream``::

      git checkout -b <branch-name>-sqlite upstream/sqlite

3. Download SQLite source from `sqlite.org <https://www.sqlite.org>`_.

4. Unzip it to the branch checked out in step 2.

5. Commit and push the changes.

6. Create the PR, with ``sqlite`` as the base branch.

Once the PR has been merged, tag the commit as
``sqlite-<full version to be used in CPython's PCbuild/get_externals.bat>``.

For updating each project to be updated, follow the above instructions with
appropriate substitutions.  For ``sqlite``, ``bzip2``, ``xz``, ``zlib``, and
``zstd``, that's it!

For ``openssl``, ``tcl``/``tk``, and ``libffi``, builds of each should also be
checked into `cpython-bin-deps <https://github.com/python/cpython-bin-deps/>`_
for use in the CPython Windows build.  Each one has a ``prepare_<name>.bat``
script in the ``cpython`` ``PCbuild`` directory that will take care of building
the project.  Note, though, that builds checked into ``cpython-bin-deps`` need
to be signed by the release signing key, so it is generally up to a member of
the release management team to create those builds.


Download links
--------------

- ``bzip2``: https://www.sourceware.org/bzip2/downloads.html
- ``libffi`` : https://github.com/libffi/libffi
- ``mpdecimal`` : https://www.bytereef.org/mpdecimal/download.html
- ``openssl``: https://www.openssl.org/source/
- ``sqlite``: https://www.sqlite.org/download.html
- ``tcl``/``tk``: https://tcl.tk/software/tcltk/download.html
- ``xz``: https://github.com/tukaani-project/xz
- ``zlib``: https://zlib.net/
- ``zstd``: https://github.com/facebook/zstd

Tagging the commit
------------------

Using the ``sqlite`` branch as an example::

   git checkout -b sqlite-tag upstream/sqlite
   git tag sqlite-3.21.0.0  # replace 3.21.0.0 with the correct version.
   git push --tags upstream

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

zware

10 commits

zooba

6 commits

emmatyping

1 commits

python/cpython-source-deps

Source for packages that the cpython build process depends on

29

stars

20

commits

Aug 27, 2026

updated

README

cpython-source-deps
===================

Source for packages that the CPython build process depends on.

It is currently expected that this will only be useful on Windows,
and in any case you should never need to clone this repository
unless you are updating its contents.

.. contents::

Updating Source Dependencies
----------------------------

The procedure for updating the different source dependencies are similar.  Below
is an example for updating SQLite::


1. Fork and clone this repository.

2. Checkout a new branch off the ``sqlite`` branch. Assuming this repo is set
   as your ``upstream``::

      git checkout -b <branch-name>-sqlite upstream/sqlite

3. Download SQLite source from `sqlite.org <https://www.sqlite.org>`_.

4. Unzip it to the branch checked out in step 2.

5. Commit and push the changes.

6. Create the PR, with ``sqlite`` as the base branch.

Once the PR has been merged, tag the commit as
``sqlite-<full version to be used in CPython's PCbuild/get_externals.bat>``.

For updating each project to be updated, follow the above instructions with
appropriate substitutions.  For ``sqlite``, ``bzip2``, ``xz``, ``zlib``, and
``zstd``, that's it!

For ``openssl``, ``tcl``/``tk``, and ``libffi``, builds of each should also be
checked into `cpython-bin-deps <https://github.com/python/cpython-bin-deps/>`_
for use in the CPython Windows build.  Each one has a ``prepare_<name>.bat``
script in the ``cpython`` ``PCbuild`` directory that will take care of building
the project.  Note, though, that builds checked into ``cpython-bin-deps`` need
to be signed by the release signing key, so it is generally up to a member of
the release management team to create those builds.


Download links
--------------

- ``bzip2``: https://www.sourceware.org/bzip2/downloads.html
- ``libffi`` : https://github.com/libffi/libffi
- ``mpdecimal`` : https://www.bytereef.org/mpdecimal/download.html
- ``openssl``: https://www.openssl.org/source/
- ``sqlite``: https://www.sqlite.org/download.html
- ``tcl``/``tk``: https://tcl.tk/software/tcltk/download.html
- ``xz``: https://github.com/tukaani-project/xz
- ``zlib``: https://zlib.net/
- ``zstd``: https://github.com/facebook/zstd

Tagging the commit
------------------

Using the ``sqlite`` branch as an example::

   git checkout -b sqlite-tag upstream/sqlite
   git tag sqlite-3.21.0.0  # replace 3.21.0.0 with the correct version.
   git push --tags upstream

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

zware

10 commits

zooba

6 commits

emmatyping

1 commits