tis-wapt-python311-relocatable
Paquet d'installation silencieuse pour tis-wapt-python311-relocatable
3.11.15-37
Les paquets PREPROD sont des paquets construits via LUTI.
Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.
- package: tis-wapt-python311-relocatable
- version: 3.11.15-37
- maintainer: sfonteneau
- locale: all
- target_os: linux
- architecture: x64
- signature_date:
- size: 72.61 Mo
package : tis-wapt-python311-relocatable
version : 3.11.15-37
architecture : x64
section : base
priority : optional
name :
categories :
maintainer : sfonteneau
description : Package for tis-wapt-python311-relocatable
depends :
conflicts :
maturity : PREPROD
locale : all
target_os : linux
min_wapt_version : 2.0
sources :
installed_size :
impacted_process :
description_fr : Paquet pour tis-wapt-python311-relocatable
description_pl : Pakiet dla tis-wapt-python311-relocatable
description_de : Paket für tis-wapt-python311-relocatable
description_es : Paquete para tis-wapt-python311-relocatable
description_pt : Pacote para tis-wapt-python311-relocatable
description_it : Pacchetto per tis-wapt-python311-relocatable
description_nl : Pakket voor tis-wapt-python311-relocatable
description_ru : Пакет для tis-wapt-python311-relocatable
audit_schedule :
editor :
keywords :
licence :
homepage :
package_uuid : c64dbd23-05ba-4025-bf29-10c4fd14f0b2
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version :
max_os_version :
icon_sha256sum : b55b23fa81945c6cd4c2f4f114188aa9f8f3d0c3cbb9fb353b2803ffbb67b43b
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-06-25T13:29:44.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature : VlYgg4w468id9LHhgehkQMIoWQnwz6hMqakZf4bCE+RJhiZGUYBTxz+Q19hiZnfpq5KkHjrllqC/deZSbcEftZaeivWyD7A3SUnsFVG2j05Vr0oSPriFMD9l2L+zflzhbgdV8XgzI1PwfDVbpPmwt0G+g/cXbYoNkDLPbeDv2dx7RRX/umRt7906WeF0FodyQIy/0z1I6MApfe4bhsV+a3xKzqhKx9kYpSEnop37NW9RRuz9IYFabgQBFHq5x4R2HdtsM0po/49Rl3J8a5Z8P6i3Fp87BmePdQ7S/7y5qLPZC0+g5UC/rrMtEq6+lq0e8dSBuB5YZBvnqmF+/A4kCw==
# -*- coding: utf-8 -*-
from setuphelpers import *
import glob
import tarfile
def install():
mkdirs('/opt/wapt/')
f= glob.glob('*.tar.gz')[0]
python_version = control.get_software_version()
with tarfile.open(f, 'r:gz') as tar:
tar.extractall(path='/opt/wapt')
# run('cd /opt/wapt/ ; tar -xzf %s' % makepath(basedir,f))
def audit():
python_version = run('/opt/wapt/bin/python3 -V').split(' ')[1].strip()
if Version(python_version) != control.get_software_version():
print('version install : %s' % python_version)
return "ERROR"
else:
return "OK"
# -*- coding: utf-8 -*-
from setupdevhelpers import *
from waptutils import CustomZipFile
from waptutils import create_recursive_zip
import distro
import platform
import tarfile
import json
import subprocess
import datetime
import sys
sys.path.append('.')
from get_cots import download_cots, get_cots_version, get_cots_filename
python_name_file = str(platform.system().lower() + '_' + platform.machine().lower() + '_' .strip('_'))
download_directory = r'c:\tranquilit'
def update_package():
if platform.system() =='Linux':
update_package_linux()
return
elif platform.system() =='Windows':
update_package_windows()
return
elif platform.system() == 'Darwin':
update_package_macos()
else:
print('non supported os')
raise()
def update_package_linux():
#Download and extract python source
python_version_from_control = control.version.split('-')[0]
python_version_from_sbom = get_cots_version('Python')
if python_version_from_control !=python_version_from_sbom:
raise Exception('Different version in sbom and in control file, please check')
python_version = python_version_from_sbom
unix_python_dir='/opt/wapt'
print("[UTC %s] start building chroot env" % datetime.datetime.utcnow())
if type_debian():
subprocess.run('bash step1_prepare_debian_chroot.sh %s' % unix_python_dir, shell=True, stderr=sys.stdout, stdout=open('/root/compile_python.log','w'), check=True)
elif type_redhat():
subprocess.run('bash step1_prepare_redhat_chroot.sh %s' % unix_python_dir, shell=True, stderr=sys.stdout, stdout=open('/root/compile_python.log','w'), check=True)
print("[UTC %s] start downloading cots" % datetime.datetime.utcnow())
download_cots(download_directory=r'/root/python_build_chroot/root/')
print("[UTC %s] start compiling python" % datetime.datetime.utcnow())
filecopyto('step2_compile_python_in_chroot.sh','/root/python_build_chroot/root/')
filecopyto('fix_python_ssl_3.5.7_support.patch','/root/python_build_chroot/root/')
subprocess.run('chroot /root/python_build_chroot /bin/bash /root/step2_compile_python_in_chroot.sh %s' % unix_python_dir, shell=True, stderr=sys.stdout, stdout=open('/root/compile_python.log','a'), check=True)
print("[UTC %s] targzipping python distrib" % datetime.datetime.utcnow())
run('tar -zcf %s/python-%s.tar.gz -C /root/python_build_chroot/%s .' % (basedir, python_name_file, unix_python_dir))
if params:
commit_count = params.get("commit_count",0)
else:
val = subprocess.check_output('git rev-list --count HEAD', shell=True)
commit_count = int(val)
control.version = "%s-%s" % (Version(python_version), commit_count)
control.save_control_to_wapt()
def print_utc(message):
print("[UTC %s] %s" % (datetime.datetime.utcnow(), message))
def update_package_windows():
#Download and extract python source
python_version_from_control = control.version.split('-')[0]
python_version_from_sbom = get_cots_version('Python')
if python_version_from_control !=python_version_from_sbom:
raise Exception('Different version in sbom and in control file, please check')
python_version = python_version_from_sbom
print_utc("start building")
#remove linux specific files from include dir
remove_file('*.sh')
print_utc("start downloading cots")
download_cots(download_directory=basedir)
unzip_with_7zip(f'Python-{python_version}.tgz',f'Python-{python_version}-tar')
unzip_with_7zip(rf'Python-{python_version}-tar\Python-{python_version}.tar','.')
remove_tree(f'Python-{python_version}-tar')
remove_file(f'Python-{python_version}.tgz')
#Download and extract openssl source
openssl_version =get_cots_version('openssl')
unzip_with_7zip(rf'openssl-{openssl_version}.tar.gz',rf'openssl-{openssl_version}-tar')
unzip_with_7zip(rf'openssl-{openssl_version}-tar\openssl-{openssl_version}.tar','.')
remove_tree(rf'openssl-{openssl_version}-tar')
remove_file(rf'openssl-{openssl_version}.tar.gz')
if not isfile(r'C:\Program Files\NASM\nasm.exe'):
error(r'C:\Program Files\NASM\nasm.exe not found')
print_utc("running get_external.bat")
filecopyto('get_externals.bat',rf'Python-{python_version}\PCbuild\get_externals.bat')
run(rf'Python-{python_version}\PCbuild\get_externals.bat',timeout=5000)
data_custom = r"""## -*- mode: perl; -*-
## Personal configuration targets
my %targets = (
"VC-WIN32-rtt" => {
inherit_from => [ "VC-WIN32" ],
cflags => sub{my $v=pop; $v=~ s/\/MD/\/MT/ig; return $v},
lflags => "/nologo /release",
},
"VC-WIN64A-rtt" => {
inherit_from => [ "VC-WIN64A" ],
cflags => sub{my $v=pop; $v=~ s/\/MD/\/MT/ig; return $v},
lflags => "/nologo /release",
},
);"""
with open(rf'openssl-{openssl_version}\Configurations\60-custom.conf','w') as f:
f.write(data_custom)
add_to_system_path(r'C:\Program Files\NASM')
print_utc("compiling openssl")
run(rf'cd openssl-{openssl_version} & set path=C:\Program Files\NASM;%path% &"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars32.bat" &"C:\Strawberry\perl\bin\perl.exe" configure VC-WIN32-rtt & nmake',timeout=7200)
name_openssl_folder = glob.glob(rf'Python-{python_version}\externals\openssl-bin-*')[0].split('\\')[-1]
shutil.move(rf'Python-{python_version}\externals\{name_openssl_folder}\win32',rf'Python-{python_version}\externals\{name_openssl_folder}\win32old')
shutil.move(rf'openssl-{openssl_version}',rf'Python-{python_version}\externals\{name_openssl_folder}\win32')
filecopyto(rf'Python-{python_version}\externals\{name_openssl_folder}\win32old\include\applink.c',rf'Python-{python_version}\externals\{name_openssl_folder}\win32\include\applink.c')
with open(makepath(f'Python-{python_version}','PCbuild','openssl.props'), 'r') as f:
data=f.read()
data = data.replace(r"<_DLLSuffix>-1_1</_DLLSuffix>",r"<_DLLSuffix>-3</_DLLSuffix>")
with open(makepath(f'Python-{python_version}','PCbuild','openssl.props'), 'w') as f:
f.write(data)
#Disable VENV_REDIRECT, only for x86
for vcxproj in ['venvlauncher.vcxproj','venvwlauncher.vcxproj']:
with open(makepath(f'Python-{python_version}','PCbuild',vcxproj), 'r') as f:
data=f.read()
data = data.replace(r";VENV_REDIRECT;",r";")
with open(makepath(f'Python-{python_version}','PCbuild',vcxproj), 'w') as f:
f.write(data)
print_utc("compiling python")
run(rf'"C:\Program Files\Git\usr\bin\patch.exe" {basedir}\Python-{python_version}\Modules\_ssl.c < {basedir}\fix_python_ssl_3.5.7_support.patch')
run(rf'Python-{python_version}\PCbuild\build.bat -p Win32 -t Rebuild',timeout=5000)
run(rf'"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\msbuild.exe" "%s\Python-{python_version}\Tools\msi\make_zip.proj" /t:Build /p:OutputPath="%s"' % (basedir,basedir))
print_utc("packaging python")
name_generate = glob.glob('*.zip')[0]
os.rename(name_generate,f'Python-%s-x86.zip' % python_name_file)
remove_tree(f'Python-{python_version}')
#remove_tree(f'openssl-{openssl_version}')
remove_file('*.tar.gz')
remove_file('*.tar.xz')
remove_file('*.tar.bz2')
commit_count = params.get("commit_count",0)
control.version = "%s-%s" % (Version(python_version), commit_count)
control.save_control_to_wapt()
def update_package_macos():
unix_python_dir = '/opt/python311'
#Download and extract python source
python_version_from_control = control.version.split('-')[0]
python_version_from_sbom = get_cots_version('Python')
if python_version_from_control !=python_version_from_sbom:
raise Exception('Different version in sbom and in control file, please check')
python_version = python_version_from_sbom
print("[UTC %s] start downloading cots" % datetime.datetime.utcnow())
download_cots(download_directory=r'/var/root/')
if get_host_architecture() in ('arm','arm64'):
wget('http://srvtemplates.ad.tranquil.it/binary_cache/pkg-config_macos_arm64',target='/usr/local/bin/pkg-config', connect_timeout=60, resume=True, sha256='669b796e5df67f8de12eff2eb354c0d7e188bb2ed3285bc02b3510f21858d647')
else:
# should precompile pkg-config for macos intel
wget('http://srvtemplates.ad.tranquil.it/binary_cache/pkg-config_macos_intel',target='/usr/local/bin/pkg-config', connect_timeout=60, resume=True, sha256='669b796e5df67f8de12eff2eb354c0d7e188bb2ed3285bc02b3510f21858d647')
print("[UTC %s] start compiling python" % datetime.datetime.utcnow())
filecopyto('step2_compile_python_macos.sh','/var/root/')
filecopyto('fix_python_ssl_3.5.7_support.patch','/var/root/')
filecopyto('gpatch','/var/root/')
run('chmod 755 /var/root/gpatch')
subprocess.run('/bin/bash step2_compile_python_macos.sh %s' % unix_python_dir, shell=True, stderr=sys.stdout, stdout=open('/var/root/compile_python.log','a'), check=True)
# should it be done for *.dylib also?
# should add more glob.glob for lib version evolution
for filename in glob.glob(os.path.join('opt','python311','lib') + "/**/*.so",recursive=True):
cmd = '/usr/bin/install_name_tool -rpath /opt/python311/lib/ /opt/wapt/lib/ %s' % filename
print("Updating rpath : %s " % cmd)
try:
run(cmd)
except:
print('error while changing rpath on %s ' % filename)
print(subprocess.check_output('/opt/wapt/bin/python3 %s ' % os.path.join(basedir,'fix_dylib_macos.py'),shell=True))
print("[UTC %s] targzipping python distrib" % datetime.datetime.utcnow())
run('tar -zcf %s/python-%s.tar.gz -C /opt/python311 .' % (basedir, python_name_file))
if params:
commit_count = params.get("commit_count",0)
else:
val = subprocess.check_output('git rev-list --count HEAD', shell=True)
commit_count = int(val)
control.version = "%s-%s" % (Version(python_version), commit_count)
control.save_control_to_wapt()
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
2583c6e7ecd74b316c54dfa1273148ebc197dcc19d87ddb918c0003468b92fce : WAPT/control
b55b23fa81945c6cd4c2f4f114188aa9f8f3d0c3cbb9fb353b2803ffbb67b43b : WAPT/icon.png
3abc78fd9135b020a7c610d3082bb81c496372e817fa4f53d0dca7cbb622f10c : WAPT/wapt.psproj
02518a680e8f358e65b4d4c38020564e2e4ef86123346f428920b46b16b3a723 : dnf_centos7.conf
4553c4e5f199da0db4dd2b41fc932b36b1d3e59bcc6bb958b41940f63c3d4627 : fix_dylib_macos.py
1db59e9e807643d738cfaedbbea52a45cfd6545868635a4dbcbba48f06ead003 : fix_python_ssl_3.5.7_support.patch
f8b1554394dcefc950d8fc3411b0da482008abc897f98447464f4042022c18de : get_cots.py
f15bcf8175b6d2eb621e58a30dcdecfbcb094e8d25e2c1c8bbe0268f28484c25 : luti.json
a7ce2bf02e16854e28d281796caccd9c9b7e8dcb015014ee9da7a549ab18804c : patch_p11_attr.patch
091744868f4dde876359125408870db4e96f53ff9f3803fc19eb26e5fc1edc29 : python-linux_x86_64.tar.gz
5e88de91515010a3691ca1916783f1d3cc79cc972c3fa2f7c9ce0cffdb48ceca : python_sbom.cdx.json
3b3faa17c95af406d9d5d736f4ca74ac71a4a27730d03d4a027a0640b7bdc2a6 : setup.py
3d568ba9f54ba6713727065c2bc63e4e15cdb5134f0cdda8df93a1139d6405e6 : step1_prepare_debian_chroot.sh
81de376778c27bf89795c9aa6dd51e506f1a75883343b6fa51f4cc58ba2fba26 : step1_prepare_redhat_chroot.sh
fd9715213915a17ba66f601d048c2c364b7c343c701791a625c80e7aee39040c : step2_compile_python_in_chroot.sh
73777a18d68543edaa5518690cf486075d8af6b78c56973bc3b1269b22713a8e : step2_compile_python_macos.sh
271e738376274355c9594ffdc24eb0cb8ec10915eb88bc81e48c370c0333c51b : update_package.py