1818 runs-on : ubuntu-latest
1919 matrix : linux
2020 arch : i386
21- tag_arch : x86_64
21+ tag_arch : i686
2222 release : xenial
2323 mirror : http://azure.archive.ubuntu.com/ubuntu
2424 # version: 1.5.6.7
@@ -34,3 +34,137 @@ jobs:
3434 with :
3535 submodules : ' recursive'
3636
37+ - name : Update and upgrade Ubuntu 24
38+ if : matrix.os.matrix == 'linux'
39+ run : |
40+ sudo apt update;
41+ sudo apt purge -y firefox lxd snapd;
42+ sudo apt install -y zram-config;
43+ sudo apt list --upgradable;
44+ sudo apt upgrade -y;
45+ sudo apt install -f
46+
47+ - name : Build source distribution with Ubuntu
48+ if : matrix.os.matrix == 'linux'
49+ run : |
50+ sudo apt install -y debootstrap qemu-user;
51+ pip install build;
52+ python -m build --sdist --outdir dist .
53+
54+ - name : Debootstrap Ubuntu ${{matrix.os.release}} ${{matrix.os.arch}}
55+ if : matrix.os.matrix == 'linux'
56+ run : |
57+ sudo debootstrap --no-merged-usr --verbose --include=sudo,wget,curl,gnupg,ca-certificates --arch=${{matrix.os.arch}} ${{matrix.os.release}} ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} ${{matrix.os.mirror}} || tail ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/debootstrap/debootstrap.log
58+
59+ - name : Update and Upgrade Ubuntu ${{matrix.os.release}}
60+ if : matrix.os.matrix == 'linux'
61+ run : |
62+ sudo mkdir -p ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/build_wheel
63+ sudo mount none ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/proc -t proc
64+ sudo mount none ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/dev/pts -t devpts
65+ sudo mount none ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/sys -t sysfs
66+ echo " deb [trusted=yes] http://packages.rusoft.ru/ppa/rusoft/python ubuntu-${{matrix.os.release}} main" > rusoft-python.list
67+ echo " deb [trusted=yes] http://packages.rusoft.ru/ppa/rusoft/backports ubuntu-${{matrix.os.release}} main" > rusoft-backports.list
68+ echo " deb [trusted=yes] http://packages.rusoft.ru/ppa/rusoft/packages ubuntu-${{matrix.os.release}} main" > rusoft-packages.list
69+ echo " deb [trusted=yes] http://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu ${{matrix.os.release}} main" > deadsnakes.list
70+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt update
71+ sudo cp -v ./*.list ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/etc/apt/sources.list.d
72+ false && sudo rm -fv ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/etc/apt/trusted.gpg.d/* && sudo rm -fv ./ubuntu-xenial-x86/etc/apt/trusted.gpg
73+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c 'cd /etc/apt/trusted.gpg.d && wget http://packages.rusoft.ru/apt/public.gpg -Orusoft.gpg'
74+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c 'cd /etc/apt/trusted.gpg.d && wget http://packages.rusoft.ru/apt/public-old.gpg -Orusoft-old.gpg'
75+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c 'apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys A2CE4BCCC50209DD || true'
76+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt update
77+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt upgrade -y
78+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt -fy install
79+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt upgrade -y
80+
81+
82+ - name : Pepare dev files
83+ if : matrix.os.matrix == 'linux'
84+ run : |
85+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt install -y libzstd-dev file
86+
87+ - name : Pepare for ${{matrix.os.pypkg}} ${{matrix.os.arch}}
88+ if : matrix.os.matrix == 'linux'
89+ run : |
90+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /usr/bin/apt install -y ${{matrix.os.pypkg}}-dev gcc pkg-config ${{matrix.os.pypkgadd}}
91+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c "wget ${{matrix.os.getpipurl}} -O get-pip.py && ${{matrix.os.pypkg}} get-pip.py || true"
92+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c "${{matrix.os.pypkg}} -m pip install -U 'setuptools<72.0'"
93+
94+ - name : Pepare source and build wheel for ${{matrix.os.pypkg}} ${{matrix.os.arch}}
95+ if : matrix.os.matrix == 'linux'
96+ run : |
97+ version=`cat version`
98+ sudo mkdir -p ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/build_wheel/
99+ sudo tar -xvf dist/zstd-$version.tar.gz -C ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/build_wheel/
100+ false && sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} env
101+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} pkg-config libzstd --modversion
102+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} echo GCC
103+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} gcc -v
104+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c "cd /build_wheel/zstd-$version/ && ZSTD_ASM=1 ZSTD_WARNINGS=1 _ZSTD_SMALL=1 LDFLAGS='-Wl,--as-needed -Wl,-s' ZSTD_BUILD_STRIP=1 _ZSTD_SPEED=0 _ZSTD_SPEEDMAX=0 _ZSTD_ASM_BMI2=1 ZSTD_THREADS=1 _ZSTD_EXTERNAL=0 ${{matrix.os.pypkg}} setup.py bdist_wheel"
105+
106+ - name : Test wheel for ${{matrix.os.pypkg}} ${{matrix.os.arch}}
107+ if : matrix.os.matrix == 'linux'
108+ run : |
109+ version=`cat version`
110+ false && sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} find /build_wheel/
111+ sudo cp -v glibc-check.sh ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/build_wheel/zstd-$version/
112+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c "cd /build_wheel/zstd-$version/ && echo LLH; ls -lh build/lib*/zstd.*.so; ldd build/lib*/zstd.*.so ; file build/lib*/zstd.*.so; bash ./glibc-check.sh build/lib*/zstd.*.so"
113+
114+ sudo chroot ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}} /bin/bash -c "cd /build_wheel/zstd-$version/ && ${{matrix.os.pypkg}} setup.py test"
115+
116+ - name : Pepare wheel for upload
117+ if : matrix.os.matrix == 'linux'
118+ run : |
119+ version=`cat version`
120+ sudo cp -v ./ubuntu-${{matrix.os.release}}-${{matrix.os.arch}}/build_wheel/zstd-$version/dist/* ./dist
121+ sudo ls -lh ./dist/*
122+ sudo mv -v ./dist/"zstd-$version-${{matrix.os.pyengine_tag}}-linux_${{matrix.os.tag_arch}}.whl" ./dist/"zstd-$version-${{matrix.os.pyengine_tag}}-${{matrix.os.libc_tag}}_${{matrix.os.tag_arch}}.whl"
123+
124+
125+ - name : Test for secrets access
126+ id : check_secrets
127+ # If a third party makes a pull request
128+ # this allows automated steps below to be skipped
129+ # and leave a clean PR CI run
130+ shell : bash
131+ run : |
132+ unset HAS_SECRET
133+ unset HAS_SECRET_TEST
134+ if [ -n "$SECRET" ]; then HAS_SECRET='true' ; fi
135+ if [ -n "$SECRET_TEST" ]; then HAS_SECRET_TEST='true' ; fi
136+ echo ::set-output name=HAS_SECRET::${HAS_SECRET}
137+ echo ::set-output name=HAS_SECRET_TEST::${HAS_SECRET_TEST}
138+ env :
139+ SECRET : " ${{ secrets.pypi_password }}"
140+ SECRET_TEST : " ${{ secrets.test_pypi_password }}"
141+
142+ - name : Install twine
143+ run : pip install 'twine<=6.0.1'
144+
145+ - name : Publish distribution to PyPI
146+ if : >
147+ startsWith(github.event.ref, 'refs/tags') &&
148+ steps.check_secrets.outputs.HAS_SECRET
149+ env :
150+ # If the PR/Push has secret access
151+ # and PYPI_PASSWORD is in GH Secrets for this repo
152+ # and this is a tag, publish to PyPI
153+ TWINE_REPOSITORY_URL : https://upload.pypi.org/legacy/
154+ TWINE_USERNAME : " ${{ secrets.pypi_username }}"
155+ TWINE_NON_INTERACTIVE : 1
156+ TWINE_PASSWORD : " ${{ secrets.pypi_password }}"
157+ run : twine upload --non-interactive --skip-existing --verbose 'dist/*'
158+
159+ - name : Publish distribution to Test PyPI
160+ if : steps.check_secrets.outputs.HAS_SECRET
161+ env :
162+ # If the PR/Push has secret access
163+ # and TEST_PYPI_PASSWORD is in GH Secrets for this repo
164+ # then publish each build to test PyPI
165+ TWINE_REPOSITORY_URL : https://test.pypi.org/legacy/
166+ TWINE_USERNAME : " ${{ secrets.test_pypi_username }}"
167+ TWINE_NON_INTERACTIVE : 1
168+ TWINE_PASSWORD : " ${{ secrets.test_pypi_password }}"
169+ run : twine upload --non-interactive --skip-existing --verbose 'dist/*'
170+
0 commit comments