Skip to content

[3.11] gh-95957: Add instructions for Tcl/Tk and OpenSSL on RHEL/CentOS 7 (GH-95964) #96022

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

Merged
merged 1 commit into from
Aug 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions Doc/whatsnew/3.11.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1632,16 +1632,23 @@ Build Changes

* Build dependencies, compiler flags, and linker flags for most stdlib
extension modules are now detected by :program:`configure`. libffi, libnsl,
libsqlite3, zlib, bzip2, liblzma, libcrypt, Tcl/Tk libs, and uuid flags
are detected by ``pkg-config`` (when available).
libsqlite3, zlib, bzip2, liblzma, libcrypt, Tcl/Tk, and uuid flags
are detected by ``pkg-config`` (when available). :mod:`tkinter` now
requires ``pkg-config`` command to detect development settings for Tcl/Tk
headers and libraries.
(Contributed by Christian Heimes and Erlend Egeberg Aasland in
:issue:`45847`, :issue:`45747`, and :issue:`45763`.)

.. note::
Use the environment variables ``TCLTK_CFLAGS`` and ``TCLTK_LIBS`` to
manually specify the location of Tcl/Tk headers and libraries.
The :program:`configure` options ``--with-tcltk-includes`` and
``--with-tcltk-libs`` have been removed.
Use the environment variables :envvar:`TCLTK_CFLAGS` and
:envvar:`TCLTK_LIBS` to manually specify the location of Tcl/Tk headers
and libraries. The :program:`configure` options ``--with-tcltk-includes``
and ``--with-tcltk-libs`` have been removed.

On RHEL 7 and CentOS 7 the development packages do not provide ``tcl.pc``
and ``tk.pc``, use :envvar:`TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5"`.
The directory ``Misc/rhel7`` contains ``.pc`` files and instructions
how to build Python with RHEL 7's and CentOS 7's Tcl/Tk and OpenSSL.

* CPython now has :pep:`11` tier 3 support for cross compiling to WebAssembly
platform ``wasm32-unknown-emscripten`` (Python in the browser). The effort
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
What's New 3.11 now has instructions for how to provide compiler and
linker flags for Tcl/Tk and OpenSSL on RHEL 7 and CentOS 7.
19 changes: 19 additions & 0 deletions Misc/rhel7/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# pkg-config overrides for RHEL 7 and CentOS 7

RHEL 7 and CentOS 7 do not provide pkg-config `.pc` files for Tcl/Tk. The
OpenSSL 1.1.1 pkg-config file is named `openssl11.pc` and not picked up
by Python's `configure` script.

To build Python with system Tcl/Tk libs and OpenSSL 1.1 package, first
install the developer packages and the `pkgconfig` package with `pkg-config`
command.
Comment on lines +3 to +9
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
RHEL 7 and CentOS 7 do not provide pkg-config `.pc` files for Tcl/Tk. The
OpenSSL 1.1.1 pkg-config file is named `openssl11.pc` and not picked up
by Python's `configure` script.
To build Python with system Tcl/Tk libs and OpenSSL 1.1 package, first
install the developer packages and the `pkgconfig` package with `pkg-config`
command.
RHEL 7 and CentOS 7 do not provide pkg-config `.pc` files for Tcl/Tk. The
OpenSSL 1.1.1 pkg-config file is named `openssl11.pc` and not picked up
by Python's `configure` script.
To build Python with system Tcl/Tk libs and OpenSSL 1.1 package, first
install the developer packages and the `pkgconfig` package with `pkg-config`
command.


```shell
sudo yum install pkgconfig 'tcl-devel >= 8.5.12' 'tk-devel >= 8.5.12' openssl11-devel
```

The run `configure` with `PKG_CONFIG_PATH` environment variable.

```shell
PKG_CONFIG_PATH=Misc/rhel7 ./configure -C
```
3 changes: 3 additions & 0 deletions Misc/rhel7/openssl.pc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Name: OpenSSL
Version: 1.1.1k
Requires: libssl11 libcrypto11
4 changes: 4 additions & 0 deletions Misc/rhel7/tcl.pc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Name: Tool Command Language
Version: 8.5.12
Libs: -ltcl8.5 -ltclstub8.5
# Libs.private: -ldl -lz -lpthread -lm
5 changes: 5 additions & 0 deletions Misc/rhel7/tk.pc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Name: The Tk Toolkit
Version: 8.5.12
Requires: tcl >= 8.5.12
Libs: -ltk8.5 -ltkstub8.5
# Libs.private: -lXft -lfontconfig -lfreetype -lfontconfig -lX11