mesonbuild / meson

The Meson Build System
http://mesonbuild.com
Apache License 2.0
5.48k stars 1.59k forks source link

import('python').find_installation('python3').get_install_dir() adds an extra 'local' to the path #10459

Closed jameswestman closed 1 year ago

jameswestman commented 2 years ago

Describe the bug Meson is installing my Python project to the wrong location. Specifically, import('python').find_installation('python3').get_install_dir() is returning a wrong location with an extra 'local' path segment.

To Reproduce meson.build:

project('meson_bug',
          version: '0.1.0',
)

message(import('python').find_installation('python3').get_install_dir())

No other files are necessary to demonstrate the bug. Just run meson _build. The message() line prints Message: /usr/local/local/lib/python3.10/site-packages/.

Expected behavior The message line should print something like /usr/local/lib/python3.10/site-packages/.

system parameters

tristan957 commented 2 years ago

This is the output of the introspection command in the Python module.

{
  "variables": {
    "prefix": "/usr",
    "exec_prefix": "/usr",
    "py_version": "3.10.4",
    "py_version_short": "3.10",
    "py_version_nodot": "310",
    "installed_base": "/usr",
    "base": "/usr",
    "installed_platbase": "/usr",
    "platbase": "/usr",
    "projectbase": "/usr/bin",
    "platlibdir": "lib64",
    "abiflags": "",
    "py_version_nodot_plat": "",
    "ABIFLAGS": "",
    "AC_APPLE_UNIVERSAL_BUILD": 0,
    "AIX_BUILDDATE": 0,
    "AIX_GENUINE_CPLUSPLUS": 0,
    "ALIGNOF_LONG": 8,
    "ALIGNOF_SIZE_T": 8,
    "ALT_SOABI": 0,
    "ANDROID_API_LEVEL": 0,
    "AR": "ar",
    "ARFLAGS": "rcs",
    "BASECFLAGS": "-Wno-unused-result -Wsign-compare",
    "BASECPPFLAGS": "-IObjects -IInclude -IPython",
    "BASEMODLIBS": "",
    "BINDIR": "/usr/bin",
    "BINLIBDEST": "/usr/lib64/python3.10",
    "BLDLIBRARY": "-L. -lpython3.10",
    "BLDSHARED": "gcc -shared -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g",
    "BUILDEXE": "",
    "BUILDPYTHON": "python",
    "BUILD_GNU_TYPE": "x86_64-redhat-linux-gnu",
    "BYTESTR_DEPS": "\\",
    "CC": "gcc",
    "CCSHARED": "-fPIC",
    "CFLAGS": "-Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv",
    "CFLAGSFORSHARED": "-fPIC",
    "CFLAGS_ALIASING": "",
    "CONFIGFILES": "configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in",
    "CONFIGURE_CFLAGS": "-O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv",
    "CONFIGURE_CFLAGS_NODIST": "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden",
    "CONFIGURE_CPPFLAGS": "",
    "CONFIGURE_LDFLAGS": "-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g",
    "CONFIGURE_LDFLAGS_NODIST": "-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/Python-3.10.4/.package_note-python3.10-3.10.4-1.fc36.x86_64.ld -g  -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g",
    "CONFIG_ARGS": "'--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-platlibdir=lib64' '--enable-ipv6' '--enable-shared' '--with-computed-gotos=yes' '--with-dbmliborder=gdbm:ndbm:bdb' '--with-system-expat' '--with-system-ffi' '--with-system-libmpdec' '--enable-loadable-sqlite-extensions' '--with-dtrace' '--with-lto' '--with-ssl-default-suites=openssl' '--without-static-libpython' '--with-wheel-pkg-dir=/usr/share/python-wheels' '--with-valgrind' '--without-ensurepip' '--enable-optimizations' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CC=gcc' 'CFLAGS= -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv ' 'LDFLAGS= -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g ' 'CPPFLAGS=' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'",
    "CONFINCLUDEDIR": "/usr/include",
    "CONFINCLUDEPY": "/usr/include/python3.10",
    "COREPYTHONPATH": "",
    "COVERAGE_INFO": "/builddir/build/BUILD/Python-3.10.4/build/optimized/coverage.info",
    "COVERAGE_REPORT": "/builddir/build/BUILD/Python-3.10.4/build/optimized/lcov-report",
    "COVERAGE_REPORT_OPTIONS": "--no-branch-coverage --title \"CPython lcov report\"",
    "CPPFLAGS": "-IObjects -IInclude -IPython -I. -I/builddir/build/BUILD/Python-3.10.4/Include",
    "CXX": "g++",
    "DESTDIRS": "/usr /usr/lib64 /usr/lib64/python3.10 /usr/lib64/python3.10/lib-dynload",
    "DESTLIB": "/usr/lib64/python3.10",
    "DESTPATH": "",
    "DESTSHARED": "/usr/lib64/python3.10/lib-dynload",
    "DFLAGS": "",
    "DIRMODE": 755,
    "DIST": "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Include Lib Misc Ext-dummy",
    "DISTDIRS": "Include Lib Misc Ext-dummy",
    "DISTFILES": "README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in",
    "DLINCLDIR": ".",
    "DLLLIBRARY": "",
    "DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754": 0,
    "DOUBLE_IS_BIG_ENDIAN_IEEE754": 0,
    "DOUBLE_IS_LITTLE_ENDIAN_IEEE754": 1,
    "DTRACE": "/usr/bin/dtrace",
    "DTRACE_DEPS": "\\",
    "DTRACE_HEADERS": "Include/pydtrace_probes.h",
    "DTRACE_OBJS": "Python/pydtrace.o",
    "DYNLOADFILE": "dynload_shlib.o",
    "ENABLE_IPV6": 1,
    "ENSUREPIP": "no",
    "EXE": "",
    "EXEMODE": 755,
    "EXPERIMENTAL_ISOLATED_SUBINTERPRETERS": 0,
    "EXPORTSFROM": "",
    "EXPORTSYMS": "",
    "EXTRATESTOPTS": "",
    "EXT_SUFFIX": ".cpython-310-x86_64-linux-gnu.so",
    "FILEMODE": 644,
    "FLOAT_WORDS_BIGENDIAN": 0,
    "FLOCK_NEEDS_LIBBSD": 0,
    "GETPGRP_HAVE_ARG": 0,
    "GITBRANCH": "",
    "GITTAG": "",
    "GITVERSION": "",
    "GNULD": "yes",
    "HAVE_ACCEPT4": 1,
    "HAVE_ACOSH": 1,
    "HAVE_ADDRINFO": 1,
    "HAVE_ALARM": 1,
    "HAVE_ALIGNED_REQUIRED": 0,
    "HAVE_ALLOCA_H": 1,
    "HAVE_ALTZONE": 0,
    "HAVE_ASINH": 1,
    "HAVE_ASM_TYPES_H": 1,
    "HAVE_ATANH": 1,
    "HAVE_BIND_TEXTDOMAIN_CODESET": 1,
    "HAVE_BLUETOOTH_BLUETOOTH_H": 1,
    "HAVE_BLUETOOTH_H": 0,
    "HAVE_BROKEN_MBSTOWCS": 0,
    "HAVE_BROKEN_NICE": 0,
    "HAVE_BROKEN_PIPE_BUF": 0,
    "HAVE_BROKEN_POLL": 0,
    "HAVE_BROKEN_POSIX_SEMAPHORES": 0,
    "HAVE_BROKEN_PTHREAD_SIGMASK": 0,
    "HAVE_BROKEN_SEM_GETVALUE": 0,
    "HAVE_BROKEN_UNSETENV": 0,
    "HAVE_BUILTIN_ATOMIC": 1,
    "HAVE_CHFLAGS": 0,
    "HAVE_CHOWN": 1,
    "HAVE_CHROOT": 1,
    "HAVE_CLOCK": 1,
    "HAVE_CLOCK_GETRES": 1,
    "HAVE_CLOCK_GETTIME": 1,
    "HAVE_CLOCK_SETTIME": 1,
    "HAVE_CLOSE_RANGE": 1,
    "HAVE_COMPUTED_GOTOS": 1,
    "HAVE_CONFSTR": 1,
    "HAVE_CONIO_H": 0,
    "HAVE_COPYSIGN": 1,
    "HAVE_COPY_FILE_RANGE": 1,
    "HAVE_CRYPT_H": 1,
    "HAVE_CRYPT_R": 1,
    "HAVE_CTERMID": 1,
    "HAVE_CTERMID_R": 0,
    "HAVE_CURSES_FILTER": 1,
    "HAVE_CURSES_H": 1,
    "HAVE_CURSES_HAS_KEY": 1,
    "HAVE_CURSES_IMMEDOK": 1,
    "HAVE_CURSES_IS_PAD": 1,
    "HAVE_CURSES_IS_TERM_RESIZED": 1,
    "HAVE_CURSES_RESIZETERM": 1,
    "HAVE_CURSES_RESIZE_TERM": 1,
    "HAVE_CURSES_SYNCOK": 1,
    "HAVE_CURSES_TYPEAHEAD": 1,
    "HAVE_CURSES_USE_ENV": 1,
    "HAVE_CURSES_WCHGAT": 1,
    "HAVE_DECL_ISFINITE": 1,
    "HAVE_DECL_ISINF": 1,
    "HAVE_DECL_ISNAN": 1,
    "HAVE_DECL_RTLD_DEEPBIND": 1,
    "HAVE_DECL_RTLD_GLOBAL": 1,
    "HAVE_DECL_RTLD_LAZY": 1,
    "HAVE_DECL_RTLD_LOCAL": 1,
    "HAVE_DECL_RTLD_MEMBER": 0,
    "HAVE_DECL_RTLD_NODELETE": 1,
    "HAVE_DECL_RTLD_NOLOAD": 1,
    "HAVE_DECL_RTLD_NOW": 1,
    "HAVE_DECL_TZNAME": 0,
    "HAVE_DEVICE_MACROS": 1,
    "HAVE_DEV_PTC": 0,
    "HAVE_DEV_PTMX": 1,
    "HAVE_DIRECT_H": 0,
    "HAVE_DIRENT_D_TYPE": 1,
    "HAVE_DIRENT_H": 1,
    "HAVE_DIRFD": 1,
    "HAVE_DLFCN_H": 1,
    "HAVE_DLOPEN": 1,
    "HAVE_DUP2": 1,
    "HAVE_DUP3": 1,
    "HAVE_DYLD_SHARED_CACHE_CONTAINS_PATH": 0,
    "HAVE_DYNAMIC_LOADING": 1,
    "HAVE_ENDIAN_H": 1,
    "HAVE_EPOLL": 1,
    "HAVE_EPOLL_CREATE1": 1,
    "HAVE_ERF": 1,
    "HAVE_ERFC": 1,
    "HAVE_ERRNO_H": 1,
    "HAVE_EVENTFD": 1,
    "HAVE_EXECV": 1,
    "HAVE_EXPLICIT_BZERO": 1,
    "HAVE_EXPLICIT_MEMSET": 0,
    "HAVE_EXPM1": 1,
    "HAVE_FACCESSAT": 1,
    "HAVE_FCHDIR": 1,
    "HAVE_FCHMOD": 1,
    "HAVE_FCHMODAT": 1,
    "HAVE_FCHOWN": 1,
    "HAVE_FCHOWNAT": 1,
    "HAVE_FCNTL_H": 1,
    "HAVE_FDATASYNC": 1,
    "HAVE_FDOPENDIR": 1,
    "HAVE_FDWALK": 0,
    "HAVE_FEXECVE": 1,
    "HAVE_FINITE": 1,
    "HAVE_FLOCK": 1,
    "HAVE_FORK": 1,
    "HAVE_FORKPTY": 1,
    "HAVE_FPATHCONF": 1,
    "HAVE_FSEEK64": 0,
    "HAVE_FSEEKO": 1,
    "HAVE_FSTATAT": 1,
    "HAVE_FSTATVFS": 1,
    "HAVE_FSYNC": 1,
    "HAVE_FTELL64": 0,
    "HAVE_FTELLO": 1,
    "HAVE_FTIME": 1,
    "HAVE_FTRUNCATE": 1,
    "HAVE_FUTIMENS": 1,
    "HAVE_FUTIMES": 1,
    "HAVE_FUTIMESAT": 1,
    "HAVE_GAI_STRERROR": 1,
    "HAVE_GAMMA": 1,
    "HAVE_GCC_ASM_FOR_MC68881": 0,
    "HAVE_GCC_ASM_FOR_X64": 1,
    "HAVE_GCC_ASM_FOR_X87": 1,
    "HAVE_GCC_UINT128_T": 1,
    "HAVE_GETADDRINFO": 1,
    "HAVE_GETC_UNLOCKED": 1,
    "HAVE_GETENTROPY": 1,
    "HAVE_GETGRGID_R": 1,
    "HAVE_GETGRNAM_R": 1,
    "HAVE_GETGROUPLIST": 1,
    "HAVE_GETGROUPS": 1,
    "HAVE_GETHOSTBYNAME": 0,
    "HAVE_GETHOSTBYNAME_R": 1,
    "HAVE_GETHOSTBYNAME_R_3_ARG": 0,
    "HAVE_GETHOSTBYNAME_R_5_ARG": 0,
    "HAVE_GETHOSTBYNAME_R_6_ARG": 1,
    "HAVE_GETITIMER": 1,
    "HAVE_GETLOADAVG": 1,
    "HAVE_GETLOGIN": 1,
    "HAVE_GETNAMEINFO": 1,
    "HAVE_GETPAGESIZE": 1,
    "HAVE_GETPEERNAME": 1,
    "HAVE_GETPGID": 1,
    "HAVE_GETPGRP": 1,
    "HAVE_GETPID": 1,
    "HAVE_GETPRIORITY": 1,
    "HAVE_GETPWENT": 1,
    "HAVE_GETPWNAM_R": 1,
    "HAVE_GETPWUID_R": 1,
    "HAVE_GETRANDOM": 1,
    "HAVE_GETRANDOM_SYSCALL": 1,
    "HAVE_GETRESGID": 1,
    "HAVE_GETRESUID": 1,
    "HAVE_GETSID": 1,
    "HAVE_GETSPENT": 1,
    "HAVE_GETSPNAM": 1,
    "HAVE_GETWD": 1,
    "HAVE_GLIBC_MEMMOVE_BUG": 0,
    "HAVE_GRP_H": 1,
    "HAVE_HSTRERROR": 1,
    "HAVE_HTOLE64": 1,
    "HAVE_HYPOT": 1,
    "HAVE_IEEEFP_H": 0,
    "HAVE_IF_NAMEINDEX": 1,
    "HAVE_INET_ATON": 1,
    "HAVE_INET_PTON": 1,
    "HAVE_INITGROUPS": 1,
    "HAVE_INTTYPES_H": 1,
    "HAVE_IO_H": 0,
    "HAVE_IPA_PURE_CONST_BUG": 0,
    "HAVE_KILL": 1,
    "HAVE_KILLPG": 1,
    "HAVE_KQUEUE": 0,
    "HAVE_LANGINFO_H": 1,
    "HAVE_LARGEFILE_SUPPORT": 0,
    "HAVE_LCHFLAGS": 0,
    "HAVE_LCHMOD": 0,
    "HAVE_LCHOWN": 1,
    "HAVE_LGAMMA": 1,
    "HAVE_LIBDL": 1,
    "HAVE_LIBDLD": 0,
    "HAVE_LIBIEEE": 0,
    "HAVE_LIBINTL_H": 1,
    "HAVE_LIBREADLINE": 1,
    "HAVE_LIBRESOLV": 0,
    "HAVE_LIBSENDFILE": 0,
    "HAVE_LIBUTIL_H": 0,
    "HAVE_LIBUUID": 1,
    "HAVE_LINK": 1,
    "HAVE_LINKAT": 1,
    "HAVE_LINUX_AUXVEC_H": 1,
    "HAVE_LINUX_CAN_BCM_H": 1,
    "HAVE_LINUX_CAN_H": 1,
    "HAVE_LINUX_CAN_J1939_H": 1,
    "HAVE_LINUX_CAN_RAW_FD_FRAMES": 1,
    "HAVE_LINUX_CAN_RAW_H": 1,
    "HAVE_LINUX_CAN_RAW_JOIN_FILTERS": 1,
    "HAVE_LINUX_MEMFD_H": 1,
    "HAVE_LINUX_NETLINK_H": 1,
    "HAVE_LINUX_QRTR_H": 1,
    "HAVE_LINUX_RANDOM_H": 1,
    "HAVE_LINUX_TIPC_H": 1,
    "HAVE_LINUX_VM_SOCKETS_H": 1,
    "HAVE_LINUX_WAIT_H": 1,
    "HAVE_LOCKF": 1,
    "HAVE_LOG1P": 1,
    "HAVE_LOG2": 1,
    "HAVE_LONG_DOUBLE": 1,
    "HAVE_LSTAT": 1,
    "HAVE_LUTIMES": 1,
    "HAVE_MADVISE": 1,
    "HAVE_MAKEDEV": 1,
    "HAVE_MBRTOWC": 1,
    "HAVE_MEMFD_CREATE": 1,
    "HAVE_MEMRCHR": 1,
    "HAVE_MINIX_CONFIG_H": 0,
    "HAVE_MKDIRAT": 1,
    "HAVE_MKFIFO": 1,
    "HAVE_MKFIFOAT": 1,
    "HAVE_MKNOD": 1,
    "HAVE_MKNODAT": 1,
    "HAVE_MKTIME": 1,
    "HAVE_MMAP": 1,
    "HAVE_MREMAP": 1,
    "HAVE_NCURSES_H": 1,
    "HAVE_NDIR_H": 0,
    "HAVE_NETPACKET_PACKET_H": 1,
    "HAVE_NET_IF_H": 1,
    "HAVE_NICE": 1,
    "HAVE_NON_UNICODE_WCHAR_T_REPRESENTATION": 0,
    "HAVE_OPENAT": 1,
    "HAVE_OPENPTY": 1,
    "HAVE_PATHCONF": 1,
    "HAVE_PAUSE": 1,
    "HAVE_PIPE2": 1,
    "HAVE_PLOCK": 0,
    "HAVE_POLL": 1,
    "HAVE_POLL_H": 1,
    "HAVE_POSIX_FADVISE": 1,
    "HAVE_POSIX_FALLOCATE": 1,
    "HAVE_POSIX_SPAWN": 1,
    "HAVE_POSIX_SPAWNP": 1,
    "HAVE_PREAD": 1,
    "HAVE_PREADV": 1,
    "HAVE_PREADV2": 1,
    "HAVE_PRLIMIT": 1,
    "HAVE_PROCESS_H": 0,
    "HAVE_PROTOTYPES": 1,
    "HAVE_PTHREAD_CONDATTR_SETCLOCK": 1,
    "HAVE_PTHREAD_DESTRUCTOR": 0,
    "HAVE_PTHREAD_GETCPUCLOCKID": 1,
    "HAVE_PTHREAD_H": 1,
    "HAVE_PTHREAD_INIT": 0,
    "HAVE_PTHREAD_KILL": 1,
    "HAVE_PTHREAD_SIGMASK": 1,
    "HAVE_PTY_H": 1,
    "HAVE_PWRITE": 1,
    "HAVE_PWRITEV": 1,
    "HAVE_PWRITEV2": 1,
    "HAVE_READLINK": 1,
    "HAVE_READLINKAT": 1,
    "HAVE_READV": 1,
    "HAVE_REALPATH": 1,
    "HAVE_RENAMEAT": 1,
    "HAVE_RL_APPEND_HISTORY": 1,
    "HAVE_RL_CATCH_SIGNAL": 1,
    "HAVE_RL_COMPLETION_APPEND_CHARACTER": 1,
    "HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK": 1,
    "HAVE_RL_COMPLETION_MATCHES": 1,
    "HAVE_RL_COMPLETION_SUPPRESS_APPEND": 1,
    "HAVE_RL_PRE_INPUT_HOOK": 1,
    "HAVE_RL_RESIZE_TERMINAL": 1,
    "HAVE_ROUND": 1,
    "HAVE_RTPSPAWN": 0,
    "HAVE_SCHED_GET_PRIORITY_MAX": 1,
    "HAVE_SCHED_H": 1,
    "HAVE_SCHED_RR_GET_INTERVAL": 1,
    "HAVE_SCHED_SETAFFINITY": 1,
    "HAVE_SCHED_SETPARAM": 1,
    "HAVE_SCHED_SETSCHEDULER": 1,
    "HAVE_SEM_CLOCKWAIT": 1,
    "HAVE_SEM_GETVALUE": 1,
    "HAVE_SEM_OPEN": 1,
    "HAVE_SEM_TIMEDWAIT": 1,
    "HAVE_SEM_UNLINK": 1,
    "HAVE_SENDFILE": 1,
    "HAVE_SETEGID": 1,
    "HAVE_SETEUID": 1,
    "HAVE_SETGID": 1,
    "HAVE_SETGROUPS": 1,
    "HAVE_SETHOSTNAME": 1,
    "HAVE_SETITIMER": 1,
    "HAVE_SETLOCALE": 1,
    "HAVE_SETPGID": 1,
    "HAVE_SETPGRP": 1,
    "HAVE_SETPRIORITY": 1,
    "HAVE_SETREGID": 1,
    "HAVE_SETRESGID": 1,
    "HAVE_SETRESUID": 1,
    "HAVE_SETREUID": 1,
    "HAVE_SETSID": 1,
    "HAVE_SETUID": 1,
    "HAVE_SETVBUF": 1,
    "HAVE_SHADOW_H": 1,
    "HAVE_SHM_OPEN": 1,
    "HAVE_SHM_UNLINK": 1,
    "HAVE_SIGACTION": 1,
    "HAVE_SIGALTSTACK": 1,
    "HAVE_SIGFILLSET": 1,
    "HAVE_SIGINFO_T_SI_BAND": 1,
    "HAVE_SIGINTERRUPT": 1,
    "HAVE_SIGNAL_H": 1,
    "HAVE_SIGPENDING": 1,
    "HAVE_SIGRELSE": 1,
    "HAVE_SIGTIMEDWAIT": 1,
    "HAVE_SIGWAIT": 1,
    "HAVE_SIGWAITINFO": 1,
    "HAVE_SNPRINTF": 1,
    "HAVE_SOCKADDR_ALG": 1,
    "HAVE_SOCKADDR_SA_LEN": 0,
    "HAVE_SOCKADDR_STORAGE": 1,
    "HAVE_SOCKETPAIR": 1,
    "HAVE_SPAWN_H": 1,
    "HAVE_SPLICE": 1,
    "HAVE_SSIZE_T": 1,
    "HAVE_STATVFS": 1,
    "HAVE_STAT_TV_NSEC": 1,
    "HAVE_STAT_TV_NSEC2": 0,
    "HAVE_STDARG_PROTOTYPES": 1,
    "HAVE_STDINT_H": 1,
    "HAVE_STDIO_H": 1,
    "HAVE_STDLIB_H": 1,
    "HAVE_STD_ATOMIC": 1,
    "HAVE_STRFTIME": 1,
    "HAVE_STRINGS_H": 1,
    "HAVE_STRING_H": 1,
    "HAVE_STRLCPY": 0,
    "HAVE_STROPTS_H": 0,
    "HAVE_STRSIGNAL": 1,
    "HAVE_STRUCT_PASSWD_PW_GECOS": 1,
    "HAVE_STRUCT_PASSWD_PW_PASSWD": 1,
    "HAVE_STRUCT_STAT_ST_BIRTHTIME": 0,
    "HAVE_STRUCT_STAT_ST_BLKSIZE": 1,
    "HAVE_STRUCT_STAT_ST_BLOCKS": 1,
    "HAVE_STRUCT_STAT_ST_FLAGS": 0,
    "HAVE_STRUCT_STAT_ST_GEN": 0,
    "HAVE_STRUCT_STAT_ST_RDEV": 1,
    "HAVE_STRUCT_TM_TM_ZONE": 1,
    "HAVE_SYMLINK": 1,
    "HAVE_SYMLINKAT": 1,
    "HAVE_SYNC": 1,
    "HAVE_SYSCONF": 1,
    "HAVE_SYSEXITS_H": 1,
    "HAVE_SYS_AUDIOIO_H": 0,
    "HAVE_SYS_AUXV_H": 1,
    "HAVE_SYS_BSDTTY_H": 0,
    "HAVE_SYS_DEVPOLL_H": 0,
    "HAVE_SYS_DIR_H": 0,
    "HAVE_SYS_ENDIAN_H": 0,
    "HAVE_SYS_EPOLL_H": 1,
    "HAVE_SYS_EVENTFD_H": 1,
    "HAVE_SYS_EVENT_H": 0,
    "HAVE_SYS_FILE_H": 1,
    "HAVE_SYS_IOCTL_H": 1,
    "HAVE_SYS_KERN_CONTROL_H": 0,
    "HAVE_SYS_LOADAVG_H": 0,
    "HAVE_SYS_LOCK_H": 0,
    "HAVE_SYS_MEMFD_H": 0,
    "HAVE_SYS_MKDEV_H": 0,
    "HAVE_SYS_MMAN_H": 1,
    "HAVE_SYS_MODEM_H": 0,
    "HAVE_SYS_NDIR_H": 0,
    "HAVE_SYS_PARAM_H": 1,
    "HAVE_SYS_POLL_H": 1,
    "HAVE_SYS_RANDOM_H": 1,
    "HAVE_SYS_RESOURCE_H": 1,
    "HAVE_SYS_SELECT_H": 1,
    "HAVE_SYS_SENDFILE_H": 1,
    "HAVE_SYS_SOCKET_H": 1,
    "HAVE_SYS_STATVFS_H": 1,
    "HAVE_SYS_STAT_H": 1,
    "HAVE_SYS_SYSCALL_H": 1,
    "HAVE_SYS_SYSMACROS_H": 1,
    "HAVE_SYS_SYS_DOMAIN_H": 0,
    "HAVE_SYS_TERMIO_H": 0,
    "HAVE_SYS_TIMES_H": 1,
    "HAVE_SYS_TIME_H": 1,
    "HAVE_SYS_TYPES_H": 1,
    "HAVE_SYS_UIO_H": 1,
    "HAVE_SYS_UN_H": 1,
    "HAVE_SYS_UTSNAME_H": 1,
    "HAVE_SYS_WAIT_H": 1,
    "HAVE_SYS_XATTR_H": 1,
    "HAVE_TCGETPGRP": 1,
    "HAVE_TCSETPGRP": 1,
    "HAVE_TEMPNAM": 1,
    "HAVE_TERMIOS_H": 1,
    "HAVE_TERM_H": 1,
    "HAVE_TGAMMA": 1,
    "HAVE_TIMEGM": 1,
    "HAVE_TIMES": 1,
    "HAVE_TMPFILE": 1,
    "HAVE_TMPNAM": 1,
    "HAVE_TMPNAM_R": 1,
    "HAVE_TM_ZONE": 1,
    "HAVE_TRUNCATE": 1,
    "HAVE_TZNAME": 0,
    "HAVE_UCS4_TCL": 0,
    "HAVE_UNAME": 1,
    "HAVE_UNISTD_H": 1,
    "HAVE_UNLINKAT": 1,
    "HAVE_USABLE_WCHAR_T": 0,
    "HAVE_UTIL_H": 0,
    "HAVE_UTIMENSAT": 1,
    "HAVE_UTIMES": 1,
    "HAVE_UTIME_H": 1,
    "HAVE_UUID_CREATE": 0,
    "HAVE_UUID_ENC_BE": 0,
    "HAVE_UUID_GENERATE_TIME_SAFE": 1,
    "HAVE_UUID_H": 0,
    "HAVE_UUID_UUID_H": 1,
    "HAVE_VFORK": 1,
    "HAVE_WAIT3": 1,
    "HAVE_WAIT4": 1,
    "HAVE_WAITID": 1,
    "HAVE_WAITPID": 1,
    "HAVE_WCHAR_H": 1,
    "HAVE_WCSCOLL": 1,
    "HAVE_WCSFTIME": 1,
    "HAVE_WCSXFRM": 1,
    "HAVE_WMEMCMP": 1,
    "HAVE_WORKING_TZSET": 1,
    "HAVE_WRITEV": 1,
    "HAVE_ZLIB_COPY": 1,
    "HAVE__GETPTY": 0,
    "HOST_GNU_TYPE": "x86_64-redhat-linux-gnu",
    "INCLDIRSTOMAKE": "/usr/include /usr/include /usr/include/python3.10 /usr/include/python3.10",
    "INCLUDEDIR": "/usr/include",
    "INCLUDEPY": "/usr/include/python3.10",
    "INSTALL": "/usr/bin/install -c",
    "INSTALL_DATA": "/usr/bin/install -c -m 644",
    "INSTALL_PROGRAM": "/usr/bin/install -c",
    "INSTALL_SCRIPT": "/usr/bin/install -c",
    "INSTALL_SHARED": "/usr/bin/install -c -m 755",
    "INSTSONAME": "libpython3.10.so.1.0",
    "IO_H": "Modules/_io/_iomodule.h",
    "IO_OBJS": "\\",
    "LDCXXSHARED": "g++ -shared",
    "LDFLAGS": "-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g",
    "LDLIBRARY": "libpython3.10.so",
    "LDLIBRARYDIR": "",
    "LDSHARED": "gcc -shared -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g",
    "LDVERSION": "3.10",
    "LIBC": "",
    "LIBDEST": "/usr/lib64/python3.10",
    "LIBDIR": "/usr/lib64",
    "LIBFFI_INCLUDEDIR": "",
    "LIBM": "-lm",
    "LIBOBJDIR": "Python/",
    "LIBOBJS": "",
    "LIBPC": "/usr/lib64/pkgconfig",
    "LIBPL": "/usr/lib64/python3.10/config-3.10-x86_64-linux-gnu",
    "LIBPYTHON": "",
    "LIBRARY": "libpython3.10.a",
    "LIBRARY_DEPS": "libpython3.10.so libpython3.so",
    "LIBRARY_OBJS": "\\",
    "LIBRARY_OBJS_OMIT_FROZEN": "\\",
    "LIBS": "-lcrypt -ldl  -lm",
    "LIBSUBDIRS": "asyncio \\",
    "LINKCC": "gcc",
    "LINKFORSHARED": "-Xlinker -export-dynamic",
    "LIPO_32BIT_FLAGS": "",
    "LIPO_INTEL64_FLAGS": "",
    "LLVM_PROF_ERR": "no",
    "LLVM_PROF_FILE": "",
    "LLVM_PROF_MERGER": "true",
    "LN": "ln",
    "LOCALMODLIBS": "",
    "MACHDEP": "linux",
    "MACHDEP_OBJS": "",
    "MACHDESTLIB": "/usr/lib64/python3.10",
    "MACOSX_DEPLOYMENT_TARGET": "",
    "MAINCC": "gcc",
    "MAJOR_IN_MKDEV": 0,
    "MAJOR_IN_SYSMACROS": 1,
    "MAKESETUP": "/builddir/build/BUILD/Python-3.10.4/Modules/makesetup",
    "MANDIR": "/usr/share/man",
    "MKDIR_P": "/usr/bin/mkdir -p",
    "MODBUILT_NAMES": "posix  errno  pwd  _sre  _codecs  _weakref  _functools  _operator  _collections  _abc  itertools  atexit  _signal  _stat  time  _thread  _locale  _io  faulthandler  _tracemalloc  _symtable  xxsubtype",
    "MODDISABLED_NAMES": "",
    "MODLIBS": "",
    "MODOBJS": "Modules/posixmodule.o  Modules/errnomodule.o  Modules/pwdmodule.o  Modules/_sre.o  Modules/_codecsmodule.o  Modules/_weakref.o  Modules/_functoolsmodule.o  Modules/_operator.o  Modules/_collectionsmodule.o  Modules/_abc.o  Modules/itertoolsmodule.o  Modules/atexitmodule.o  Modules/signalmodule.o  Modules/_stat.o  Modules/timemodule.o  Modules/_threadmodule.o  Modules/_localemodule.o  Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o  Modules/faulthandler.o  Modules/_tracemalloc.o  Modules/symtablemodule.o  Modules/xxsubtype.o",
    "MODULE_OBJS": "\\",
    "MULTIARCH": "x86_64-linux-gnu",
    "MULTIARCH_CPPFLAGS": "-DMULTIARCH=\\\"x86_64-linux-gnu\\\"",
    "MVWDELCH_IS_EXPRESSION": 1,
    "NO_AS_NEEDED": "-Wl,--no-as-needed",
    "OBJECT_OBJS": "\\",
    "OPENSSL_INCLUDES": "",
    "OPENSSL_LDFLAGS": "",
    "OPENSSL_LIBS": "-lssl -lcrypto",
    "OPENSSL_RPATH": "",
    "OPT": "-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv",
    "OTHER_LIBTOOL_OPT": "",
    "PACKAGE_BUGREPORT": 0,
    "PACKAGE_NAME": 0,
    "PACKAGE_STRING": 0,
    "PACKAGE_TARNAME": 0,
    "PACKAGE_URL": 0,
    "PACKAGE_VERSION": 0,
    "PARSER_HEADERS": "\\",
    "PARSER_OBJS": "\\ \\ Parser/myreadline.o Parser/tokenizer.o",
    "PEGEN_HEADERS": "\\",
    "PEGEN_OBJS": "\\",
    "PGO_PROF_GEN_FLAG": "-fprofile-generate",
    "PGO_PROF_USE_FLAG": "-fprofile-use -fprofile-correction",
    "PLATLIBDIR": "lib64",
    "POBJS": "\\",
    "POSIX_SEMAPHORES_NOT_ENABLED": 0,
    "PROFILE_TASK": "-m test --pgo --timeout=1200",
    "PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT": 1,
    "PTHREAD_SYSTEM_SCHED_SUPPORTED": 1,
    "PY3LIBRARY": "libpython3.so",
    "PYLONG_BITS_IN_DIGIT": 0,
    "PYTHON": "python",
    "PYTHONFRAMEWORK": "",
    "PYTHONFRAMEWORKDIR": "no-framework",
    "PYTHONFRAMEWORKINSTALLDIR": "",
    "PYTHONFRAMEWORKPREFIX": "",
    "PYTHONPATH": "",
    "PYTHON_FOR_BUILD": "./python -E",
    "PYTHON_FOR_REGEN": "",
    "PYTHON_HEADERS": "\\",
    "PYTHON_OBJS": "\\",
    "PY_BUILTIN_HASHLIB_HASHES": "\"md5,sha1,sha256,sha512,sha3,blake2\"",
    "PY_BUILTIN_MODULE_CFLAGS": "-Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -fprofile-use -fprofile-correction -I/builddir/build/BUILD/Python-3.10.4/Include/internal -IObjects -IInclude -IPython -I. -I/builddir/build/BUILD/Python-3.10.4/Include -fPIC -DPy_BUILD_CORE_BUILTIN",
    "PY_CFLAGS": "-Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv",
    "PY_CFLAGS_NODIST": "-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -fprofile-use -fprofile-correction -I/builddir/build/BUILD/Python-3.10.4/Include/internal",
    "PY_COERCE_C_LOCALE": 1,
    "PY_CORE_CFLAGS": "-Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -fprofile-use -fprofile-correction -I/builddir/build/BUILD/Python-3.10.4/Include/internal -IObjects -IInclude -IPython -I. -I/builddir/build/BUILD/Python-3.10.4/Include -fPIC -DPy_BUILD_CORE",
    "PY_CORE_LDFLAGS": "-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/Python-3.10.4/.package_note-python3.10-3.10.4-1.fc36.x86_64.ld -g  -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/Python-3.10.4/.package_note-python3.10-3.10.4-1.fc36.x86_64.ld -g",
    "PY_CPPFLAGS": "-IObjects -IInclude -IPython -I. -I/builddir/build/BUILD/Python-3.10.4/Include",
    "PY_ENABLE_SHARED": 1,
    "PY_FORMAT_SIZE_T": "\"z\"",
    "PY_LDFLAGS": "-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g  -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now    -Wl,--build-id=sha1  -g",
    "PY_LDFLAGS_NODIST": "-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/Python-3.10.4/.package_note-python3.10-3.10.4-1.fc36.x86_64.ld -g  -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/Python-3.10.4/.package_note-python3.10-3.10.4-1.fc36.x86_64.ld -g",
    "PY_SSL_DEFAULT_CIPHERS": 2,
    "PY_SSL_DEFAULT_CIPHER_STRING": 0,
    "PY_STDMODULE_CFLAGS": "-Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -O2  -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS  -fstack-protector-strong   -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fno-semantic-interposition -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -g -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv  -fprofile-use -fprofile-correction -I/builddir/build/BUILD/Python-3.10.4/Include/internal -IObjects -IInclude -IPython -I. -I/builddir/build/BUILD/Python-3.10.4/Include -fPIC",
    "Py_DEBUG": 0,
    "Py_ENABLE_SHARED": 1,
    "Py_HASH_ALGORITHM": 0,
    "Py_TRACE_REFS": 0,
    "QUICKTESTOPTS": "-x test_subprocess test_io test_lib2to3 \\",
    "READELF": "readelf",
    "RESSRCDIR": "Mac/Resources/framework",
    "RETSIGTYPE": "void",
    "RUNSHARED": "LD_LIBRARY_PATH=/builddir/build/BUILD/Python-3.10.4/build/optimized",
    "SCRIPTDIR": "/usr/lib64",
    "SETPGRP_HAVE_ARG": 0,
    "SHELL": "/bin/sh",
    "SHLIBS": "-lcrypt -ldl  -lm",
    "SHLIB_SUFFIX": ".so",
    "SHM_NEEDS_LIBRT": 0,
    "SIGNED_RIGHT_SHIFT_ZERO_FILLS": 0,
    "SITEPATH": "",
    "SIZEOF_DOUBLE": 8,
    "SIZEOF_FLOAT": 4,
    "SIZEOF_FPOS_T": 16,
    "SIZEOF_INT": 4,
    "SIZEOF_LONG": 8,
    "SIZEOF_LONG_DOUBLE": 16,
    "SIZEOF_LONG_LONG": 8,
    "SIZEOF_OFF_T": 8,
    "SIZEOF_PID_T": 4,
    "SIZEOF_PTHREAD_KEY_T": 4,
    "SIZEOF_PTHREAD_T": 8,
    "SIZEOF_SHORT": 2,
    "SIZEOF_SIZE_T": 8,
    "SIZEOF_TIME_T": 8,
    "SIZEOF_UINTPTR_T": 8,
    "SIZEOF_VOID_P": 8,
    "SIZEOF_WCHAR_T": 4,
    "SIZEOF__BOOL": 1,
    "SOABI": "cpython-310-x86_64-linux-gnu",
    "SRCDIRS": "Parser Objects Python Modules Modules/_io Programs",
    "SRC_GDB_HOOKS": "/builddir/build/BUILD/Python-3.10.4/Tools/gdb/libpython.py",
    "STATIC_LIBPYTHON": 0,
    "STDC_HEADERS": 1,
    "STRICT_SYSV_CURSES": "/* Don't use ncurses extensions */",
    "STRIPFLAG": "-s",
    "SUBDIRS": "",
    "SUBDIRSTOO": "Include Lib Misc",
    "SYSLIBS": "-lm",
    "SYS_SELECT_WITH_SYS_TIME": 1,
    "TCLTK_INCLUDES": "",
    "TCLTK_LIBS": "-ltk8.6 -ltkstub8.6 -ltcl8.6 -ltclstub8.6",
    "TESTOPTS": "",
    "TESTPATH": "",
    "TESTPYTHON": "LD_LIBRARY_PATH=/builddir/build/BUILD/Python-3.10.4/build/optimized ./python",
    "TESTPYTHONOPTS": "",
    "TESTRUNNER": "LD_LIBRARY_PATH=/builddir/build/BUILD/Python-3.10.4/build/optimized ./python /builddir/build/BUILD/Python-3.10.4/Tools/scripts/run_tests.py",
    "TESTSUBDIRS": "ctypes/test \\",
    "TESTTIMEOUT": 1200,
    "TEST_MODULES": "yes",
    "THREAD_STACK_SIZE": 0,
    "TIMEMODULE_LIB": 0,
    "TIME_WITH_SYS_TIME": 1,
    "TM_IN_SYS_TIME": 0,
    "TZPATH": "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo",
    "UNICODE_DEPS": "\\",
    "UNIVERSALSDK": "",
    "UPDATE_FILE": "/builddir/build/BUILD/Python-3.10.4/Tools/scripts/update_file.py",
    "USE_COMPUTED_GOTOS": 1,
    "VERSION": "3.10",
    "VPATH": "/builddir/build/BUILD/Python-3.10.4",
    "WHEEL_PKG_DIR": "/usr/share/python-wheels",
    "WINDOW_HAS_FLAGS": 1,
    "WITH_DECIMAL_CONTEXTVAR": 1,
    "WITH_DOC_STRINGS": 1,
    "WITH_DTRACE": 1,
    "WITH_DYLD": 0,
    "WITH_EDITLINE": 0,
    "WITH_LIBINTL": 0,
    "WITH_NEXT_FRAMEWORK": 0,
    "WITH_PYMALLOC": 1,
    "WITH_VALGRIND": 1,
    "X87_DOUBLE_ROUNDING": 0,
    "XMLLIBSUBDIRS": "xml xml/dom xml/etree xml/parsers xml/sax",
    "abs_builddir": "/builddir/build/BUILD/Python-3.10.4/build/optimized",
    "abs_srcdir": "/builddir/build/BUILD/Python-3.10.4",
    "datarootdir": "/usr/share",
    "srcdir": "/usr/lib64/python3.10/config-3.10-x86_64-linux-gnu",
    "SO": ".cpython-310-x86_64-linux-gnu.so",
    "userbase": "/home/tpartin/.local",
    "base_prefix": "/usr"
  },
  "paths": {
    "stdlib": "/usr/lib64/python3.10",
    "platstdlib": "/usr/lib64/python3.10",
    "purelib": "/usr/local/lib/python3.10/site-packages",
    "platlib": "/usr/local/lib64/python3.10/site-packages",
    "include": "/usr/include/python3.10",
    "platinclude": "/usr/include/python3.10",
    "scripts": "/usr/local/bin",
    "data": "/usr/local"
  },
  "sysconfig_paths": {
    "stdlib": "/usr/lib64/python3.10",
    "platstdlib": "/usr/lib64/python3.10",
    "purelib": "/usr/local/lib/python3.10/site-packages",
    "platlib": "/usr/local/lib64/python3.10/site-packages",
    "include": "/usr/include/python3.10",
    "platinclude": "/usr/include/python3.10",
    "scripts": "/usr/local/bin",
    "data": "/usr/local"
  },
  "install_paths": {
    "stdlib": "/lib64/python3.10",
    "platstdlib": "/lib64/python3.10",
    "purelib": "/local/lib/python3.10/site-packages",
    "platlib": "/local/lib64/python3.10/site-packages",
    "include": "/include/python3.10",
    "platinclude": "/usr/include/python3.10",
    "scripts": "/local/bin",
    "data": "/local"
  },
  "version": "3.10",
  "platform": "linux-x86_64",
  "is_pypy": false,
  "is_venv": false,
  "link_libpython": false
}
tristan957 commented 2 years ago

@eli-schwartz @xclaesse the issue here seems to be that the prefix is defaulting to /usr/local and the purelib and platlib install paths seem to be /local/..., so the paths get appended as /usr/local/local/.... It isn't clear if the purelib and platlib paths are right to me.

On Ubuntu 18:

$ python3 -c "import sysconfig; print(sysconfig.get_paths(vars={'base': '', 'platbase': '', 'installed_base': ''}))"
{'stdlib': '/lib/python3.6', 'platstdlib': '/lib/python3.6', 'purelib': '/lib/python3.6/site-packages', 'platlib': '/lib/python3.6/site-packages', 'include': '/include/python3.6m', 'platinclude': '/usr/include/python3.6m', 'scripts': '/bin', 'data': '.'}

On Fedora 36:

$ python3 -c "import sysconfig; print(sysconfig.get_paths(vars={'base': '', 'platbase': '', 'installed_base': ''}))"
{'stdlib': '/lib64/python3.10', 'platstdlib': '/lib64/python3.10', 'purelib': '/local/lib/python3.10/site-packages', 'platlib': '/local/lib64/python3.10/site-packages', 'include': '/include/python3.10', 'platinclude': '/usr/include/python3.10', 'scripts': '/local/bin', 'data': '/local'}

On Fedora 35:

$ python3 -c "import sysconfig; print(sysconfig.get_paths(vars={'base': '', 'platbase': '', 'installed_base': ''}))"
{'stdlib': '/lib64/python3.10', 'platstdlib': '/lib64/python3.10', 'purelib': '/lib/python3.10/site-packages', 'platlib': '/lib64/python3.10/site-packages', 'include': '/include/python3.10', 'platinclude': '/usr/include/python3.10', 'scripts': '/bin', 'data': '.'}

@jameswestman I think this is a Fedora issue. One of these is not like the others.

eli-schwartz commented 2 years ago

I'm going to hazard a wild guess that continued inconsistent patching by a dozen different distros has once again broken our heuristics, given it changes depending on the version of Fedora.

The emergency solution of last recourse here, is to define the option -Dpython.install_env=prefix (default value) to "system", which will avoid trying to fit the python installation directories into your chosen --prefix.

The proper solution will be to try to figure out what, exactly, we are supposed to do in a situation where Fedora is plainly trying to tell us that even when we configure with --prefix=/usr, python files should be installed into /usr/local because they want pip install to default to that. Yippee.

tristan957 commented 2 years ago

I think we should bring this up with Fedora to be honest. Tried opening a discussion on bugzilla, but unsuccessful trying to create an account.

tristan957 commented 2 years ago

@bonzini any chance you can report this on the RedHat Bugzilla? I have been trying to create an account, but have been unsuccessful.

tristan957 commented 2 years ago

I filed this downstream at https://bugzilla.redhat.com/show_bug.cgi?id=2097183. I'll post here with any updates.

marcusmueller commented 2 years ago

As a datapoint, this is also on fedora36, it also fails if you specify meson setup --prefix=/tmp/foobar (i.e., install_sources installs to /tmp/foobar/local/lib/python3.10/site-packages/ ).

stewartadam commented 1 year ago

Possibly the same/similar issue on MacOS with python3 installed via brew, I see a duplicate /opt/homebrew prefix when using python.get_install_dir(): /opt/homebrew/opt/homebrew/lib/python3.10/site-packages/ where the expected/correct value for brew'd python3 to find the modules is /opt/homebrew/lib/python3.10/site-packages/.

python3 -c "import sysconfig; print(sysconfig.get_paths(vars={'base': '', 'platbase': '', 'installed_base': ''}))"
{'stdlib': '/lib/python3.10', 'platstdlib': '/lib/python3.10', 'purelib': '/opt/homebrew/lib/python3.10/site-packages', 'platlib': '/opt/homebrew/lib/python3.10/site-packages', 'include': '/include/python3.10', 'platinclude': '/opt/homebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/include/python3.10', 'scripts': '/opt/homebrew/bin', 'data': '/opt/homebrew'}

edit: diving into this a bit, it looks like:

  1. brew patches default prefix from /usr/local -> /opt/homebrew in the meson bottle
  2. brew patches python sysconfig to inject homebrew dirs for purelib and platlib without setting them relative to base/platbase/installed_base so of course when we append the paths provided by sysconfig to the prefix, we get /opt/homebrew/opt/homebrew/...

I'll submit a bug against homebrew (https://github.com/Homebrew/homebrew-core/issues/120032), hopefully they can inject their own base vars and let purelib/platlib get constructed based on those.

ret2libc commented 1 year ago

Is there a workaround in meson we can apply in the meantime? I'm having the same problem in a project I work on, on MacOS.

tristan957 commented 1 year ago

Presumably, Meson could use the purelib / platlib directly if they are absolute paths. I'll let @eli-schwartz decide if it is worth a PR.

stewartadam commented 1 year ago

Is there a workaround in meson we can apply in the meantime? I'm having the same problem in a project I work on, on MacOS.

python.install_env defaults to prefix, but setting it to auto instead should be closer to what we want (just be aware it does potentially install files outside of the prefix).

Unfortunately, there's (I think) still a bug with that because instead of using the system folders for purelib/platlib, meson concats sys.prefix with purelib/platlib: https://github.com/mesonbuild/meson/blob/ded57707c8196eda2fcf7ea507e7e2b38f9a7d19/mesonbuild/modules/python.py#L486 So this still results in invalid paths on MacOS because purelib/platlib are absolute paths. Using .get_path('purelib') directly works though.

stewartadam commented 1 year ago

@ret2libc my currently implemented workaround is is to avoid using python.install_sources() in meson.build and directly and add an option in meson_options.txt:

option('python_detection_workaround', type : 'boolean', value : false,
       description : 'If enabled, ignores meson-detected python.get_install_dir() ' +
                     'and uses the python installation\'s purelib instead. ' +
                     'See: https://github.com/mesonbuild/meson/issues/10459#issuecomment-1376843163')

then in meson.build:

meson_purelib = python.get_install_dir()
system_purelib = python.get_path('purelib')
pylib = meson_purelib # by default

# if workaround was enabled then we ignore meson and install to the system python's purelib
python_detection_workaround = get_option('python_detection_workaround')

if python_detection_workaround
  pylib = system_purelib
endif
pymoduledir = join_paths(pylib, meson.project_name())
install_subdir('mypymodule', install_dir: pymoduledir)

Caveat being this is fine because my module is pure python so I don't need platlib. This approach defaults to meson's values and will preserves compatibility if this gets fixed in a later release, but for now I can instruct my MacOS users to set meson setup -Dpython_detection_workaround=true to workaround the issue.

hroncok commented 1 year ago

See https://docs.fedoraproject.org/en-US/fedora/f36/release-notes/developers/Development_Python/#sect-install_scheme for Fedora.

tristan957 commented 1 year ago

This was fixed in Fedora 37 and still works in Fedora 38. Closing since this was a Fedora issue the whole time.

tristan957 commented 1 year ago

Presumably, Meson could use the purelib / platlib directly if they are absolute paths. I'll let @eli-schwartz decide if it is worth a PR.

This is still a potential possibility however for future issues.

eli-schwartz commented 1 year ago

The conflict between CPython and distro install schemes and the selection methods of adapting to magic environment variables serves to highlight a big problem with how install schemes are designed.

Namely that they weren't, really, designed. And they're being retrofitted for purposes that they don't do a good job of handling.

There's plans to redesign sysconfig in a future version of CPython, which is specifically intended to provide a future-proof way to do stuff like this.

marcusmueller commented 1 year ago

Fine with closing it, by the way – had to migrate away from meson for this reason before F37 already, hope to revisit once development time resurfaces.

robtaylor commented 1 year ago

I'm getting this issue still on macosx With prefix set to $HOME/.local:

Installing crlcore/src/pyCRL/Constant.cpython-311-darwin.so to /Users/roberttaylor/.local/opt/homebrew/lib/python3.11/site-packages/coriolis
Installing crlcore/src/pyCRL/CRL.cpython-311-darwin.so to /Users/roberttaylor/.local/opt/homebrew/lib/python3.11/site-packages/
Installing /Users/roberttaylor/coriolis/crlcore/python/__init__.py to /Users/roberttaylor/.local/opt/homebrew/lib/python3.11/site-packages/coriolis
tristan957 commented 1 year ago

I wonder if https://github.com/mesonbuild/meson/issues/12113 is related.

robtaylor commented 11 months ago

It certainly looks similar...

joanmarie commented 6 months ago

I'm seeing it in Ubuntu (at least in 23.10). I tried installing the following gnome modules:

All three wind up with stuff going into /usr/local/local. It seems similar to the Fedora 36 issue:

$ python3 -c "import sysconfig; print(sysconfig.get_paths(vars={'base': '', 'platbase': '', 'installed_base': ''}))"
{'stdlib': '/lib/python3.11', 'platstdlib': '/lib/python3.11', 'purelib': '/local/lib/python3.11/dist-packages', 'platlib': '/local/lib/python3.11/dist-packages', 'include': '/include/python3.11', 'platinclude': '/usr/include/python3.11', 'scripts': '/local/bin', 'data': '/local'}

All other distros (so far) seem to not have this problem.

I'll look for and/or file a downstream issue.

Update: Just filed https://bugs.launchpad.net/ubuntu/+source/python3.11/+bug/2052443

robtaylor commented 6 months ago

I've already made patches and justified the solution here. Could a maintainer please revisit?

On Mon, 5 Feb 2024 at 14:13, joanmarie @.***> wrote:

I'm seeing it in Ubuntu (at least in 23.10). I tried installing the following gnome modules:

  • Orca (which I maintain)
  • Accerciser
  • Secrets

All three wind up with stuff going into /usr/local/local. It seems similar to the Fedora 36 issue:

$ python3 -c "import sysconfig; print(sysconfig.get_paths(vars={'base': '', 'platbase': '', 'installed_base': ''}))" {'stdlib': '/lib/python3.11', 'platstdlib': '/lib/python3.11', 'purelib': '/local/lib/python3.11/dist-packages', 'platlib': '/local/lib/python3.11/dist-packages', 'include': '/include/python3.11', 'platinclude': '/usr/include/python3.11', 'scripts': '/local/bin', 'data': '/local'}

All other distros (so far) seem to not have this problem.

I'll look for and/or file a downstream issue.

— Reply to this email directly, view it on GitHub https://github.com/mesonbuild/meson/issues/10459#issuecomment-1927101114, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAB4O4GKQBUL22UPKEPXSVTYSDSI7AVCNFSM5X2XXJKKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOJSG4YTAMJRGE2A . You are receiving this because you commented.Message ID: @.***>

tristan957 commented 6 months ago

Please revisit what?

robtaylor commented 6 months ago

The solution and PR discussed in #12113

tristan957 commented 6 months ago

I have asked a Homebrew maintainer to take a look at that issue.

robtaylor commented 6 months ago

It's kind of not a homebrew issue per se - python_info.py:get_install_paths is trying to install in system library locations, and that causes the problem. That could be the issue on ubuntu as well - fundamentally its a sysconfig issue.

One general work around could be to just always install to posix-prefix?

On Fri, 9 Feb 2024 at 14:31, Tristan Partin @.***> wrote:

I have asked a Homebrew maintainer to take a look at that issue.

— Reply to this email directly, view it on GitHub https://github.com/mesonbuild/meson/issues/10459#issuecomment-1936037648, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAB4O4HU3OQ7SLZ6KZD65A3YSYXMDAVCNFSM5X2XXJKKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOJTGYYDGNZWGQ4A . You are receiving this because you commented.Message ID: @.***>

eli-schwartz commented 6 months ago

It's kind of not a homebrew issue per se - python_info.py:get_install_paths is trying to install in system library locations, and that causes the problem.

You mean because meson is a build system for system software, right?

That could be the issue on ubuntu as well - fundamentally its a sysconfig issue.

One general work around could be to just always install to posix-prefix?

At least on Linux, that's the default...

Debian folds, mutilates, and spindles theirs via third party patching, so we special case this by checking their system library location as "deb_system".

robtaylor commented 6 months ago

Installing in system locations should be done by the system packaging mechanism. sure if meson wants to grow the ability to do that, that would make sense, but right now it can’t - hence the issues being faced.

On Fri, 9 Feb 2024 at 15:04, Eli Schwartz @.***> wrote:

It's kind of not a homebrew issue per se - python_info.py:get_install_paths is trying to install in system library locations, and that causes the problem.

You mean because meson is a build system for system software, right?

That could be the issue on ubuntu as well - fundamentally its a sysconfig issue.

One general work around could be to just always install to posix-prefix?

At least on Linux, that's the default...

Debian folds, mutilates, and spindles theirs via third party patching, so we special case this by checking their system library location as "deb_system".

— Reply to this email directly, view it on GitHub https://github.com/mesonbuild/meson/issues/10459#issuecomment-1936091012, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAB4O4ANVF6W7SVDTJGIMV3YSY3HNAVCNFSM5X2XXJKKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOJTGYYDSMJQGEZA . You are receiving this because you commented.Message ID: @.***>

tristan957 commented 6 months ago

The issue being faced sounds like a broken Homebrew build.

robtaylor commented 6 months ago

Nope, its purely that python_info.py is choosing osx_framework_library scheme, and installing to that location isn't something that is expected behaviour - its OSX system installed libraries only.

eli-schwartz commented 6 months ago

Installing in system locations should be done by the system packaging mechanism. sure if meson wants to grow the ability to do that, that would make sense, but right now it can’t - hence the issues being faced.

That's not how system packaging works.

Build systems have the ability to be configured with a --prefix option. This use case is fundamental to real build systems, and meson unconditionally supports this use case for generic language support encompassing C, C++, Fortran, Rust, Swift, Java, D, Vala, and numerous others, on top of data files, executable scripts, configuration files, and a wide range of other types of build system artifacts.

This is all 100% configurable to suit a wide range of use cases. The builtin defaults are designed for the common case.

...

Python is a special case here because python doesn't have a usability story for defining or selecting installation locations. There is work ongoing to make this better but no timeframe for solving it as far as I'm aware.

The defaults which meson selects are intended to integrate with the rest of meson's configuration schema, which for example works well with --prefix=/usr and --prefix="$HOME/.local, and on systems that patched python to look in /usr/local it works there too. It works for --prefix=/opt/myapp too, which is also a thing that some people do.

Due to the ever-changing and undocumented chaos that is a dozen vendors each patching python in incompatible ways, sometimes this miscalculates, and we may have to add more bizarroland hacks, but it's important to document what the expected behavior is in such cases and why the hack is correct.

Probably it was a mistake to ever trust sysconfig. It's not a standard if no one follows it.

eli-schwartz commented 6 months ago

If you need to override the builtin detection you can use -Dprefix=/usr -Dpython.platlibdir=/usr/path/to/site-packages -Dpython.purelibdir=/usr/path/to/site-packages

robtaylor commented 6 months ago

well, indeed, and agreed - the issue seems to me that sysconfig doesn't distinguish between locations that are system installed (i.e. part of the operating system), and places where installs should go

robtaylor commented 6 months ago

homebrew is at fault here as well, as sysconfig.get_preferred_scheme("prefix") shouldn't ever return a system install (i.e. non-prefix install) location, as I raised here https://github.com/orgs/Homebrew/discussions/4858

robtaylor commented 6 months ago

If you need to override the builtin detection you can use -Dprefix=/usr -Dpython.platlibdir=/usr/path/to/site-packages -Dpython.purelibdir=/usr/path/to/site-packages

The issue on mac is that you always have this issue, thanks to the above issue, and no-one at any level seems to want to fix it....

eli-schwartz commented 6 months ago

Aside: this ticket was originally reported about Fedora and now Ubuntu is being mentioned.

Then we pivot to macOS?

A solution for macOS definitely won't actually close this fedora ticket. Unfortunately I'm not immediately aware what the solution for fedora should be at all -- my understanding is that fedora's modifications to sysconfig don't involve schemes at all, they just modified the existing schemes to point at /usr/local with no recourse.

I have no idea what's up with Ubuntu as last I checked, it was fine because we used deb_system.

eli-schwartz commented 6 months ago

I'm not sure what this has to do with "deb_system isn't a prefix scheme" but as I feared, this conversation isn't looking likely to come to a conclusion about what is going on, let alone how to solve it, so I'm going to retire from the ticket for now.

robtaylor commented 6 months ago

if only this was actually followed by macos.. https://packaging.python.org/en/latest/specifications/externally-managed-environments/#marking-an-interpreter-as-using-an-external-package-manager

@tristan957 this might help with unravelling the ubuntu/fedora issues: https://packaging.python.org/en/latest/specifications/externally-managed-environments/#implementation-notes

robtaylor commented 6 months ago

relevant PEP668 discussion: https://discuss.python.org/t/pep-668-marking-python-base-environments-as-externally-managed/10302/111?u=pradyunsg @eli-schwartz I agree, this is very frustrating!

tristan957 commented 6 months ago

The Fedora issue has been fixed for a while

eli-schwartz commented 6 months ago

Ugh, no. Sorry. Ignoring the technically correct answer as suggested during discussion, victim blaming, and then threatening users for utilizing their system to acquire software that isn't available as a wheel is not acceptable and that PEP is the worst thing to happen to Python in a decade. It's almost as bad as the python 2 -> 3 migration pain points. It's only less bad because it doesn't affect Windows users.

You don't solve a technical problem by training users to add a flag to pip.conf acknowledging that they agree their concerns aren't valuable to others and they should not ask for help achieving their goals.

And with that, I'm taking a break from thinking about the woes of the python ecosystem for at least a week. Unsubscribed, do not @ me, suffer your self inflicted issues in silence for all I care, G.O.O.D.B.Y.E.

robtaylor commented 6 months ago

@eli-schwartz was that directed at me?.... I've certainly not intended to ignore any technicallty correct answer, victim blame or threaten users so quite confused at your response.

tristan957 commented 6 months ago

I think Eli is just done with any python packaging issues for a bit :). Don't blame yourself! Like I said, I have reached out to my homebrew contact. I'll see what he says on Monday.

robtaylor commented 6 months ago

Thanks @tristan957 that's appreciated. Having spent a while on this, I totally get his frustration...

robtaylor commented 6 months ago

also my apologies for hijacking! I initially confused which ticket I saw the activity on.

tristan957 commented 6 months ago

No problem. Yes, Python packaging is one of the worst aspects about it. Leaves much to be desired :(.