diff --git a/.circleci/config.yml b/.circleci/config.yml index dfa68e9b..f78d6bab 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -105,6 +105,19 @@ jobs: DIRNAME: python313 SYN_MASTER_REF: synapse-3xx + build_314: + executor: amd64 + steps: + - docker_build: + DIRNAME: python314 + + test_314: + executor: amd64 + steps: + - docker_test: + DIRNAME: python314 + SYN_MASTER_REF: synapse-3xx + workflows: build-and-test: jobs: @@ -115,4 +128,8 @@ workflows: - build_313 - test_313: requires: - - build_313 \ No newline at end of file + - build_313 + - build_314 + - test_314: + requires: + - build_314 diff --git a/python314/Dockerfile b/python314/Dockerfile new file mode 100644 index 00000000..309462ec --- /dev/null +++ b/python314/Dockerfile @@ -0,0 +1,51 @@ +FROM python:3.14.0-slim-bookworm + +LABEL maintainer="vEpiphyte " + +ENV DEBIAN_FRONTEND="noninteractive" +ENV PYTHONUNBUFFERED=1 + +COPY pandoc.deb.sha256 pandoc.deb.sha256 +# COPY requirements requirements +# COPY python314/rmlist.txt rmlist.txt + +# Install dependencies, Python 3.14, and setup environment +RUN set -ex \ + && apt-get clean \ + && apt-get update \ + && apt-get -y upgrade \ + && apt-get install -y libffi-dev \ + && apt-get install -y locales curl tini nano build-essential \ + # Upgrade pip + && python -m pip install --upgrade pip \ + # Install pandoc + && curl -L -o pandoc-amd64.deb https://github.com/jgm/pandoc/releases/download/3.1.9/pandoc-3.1.9-1-amd64.deb \ + && sha256sum --check pandoc.deb.sha256 \ + && dpkg -i pandoc-amd64.deb \ + # Configure locales + && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ + && locale-gen en_US.UTF-8 \ + && dpkg-reconfigure locales \ + && /usr/sbin/update-locale LANG=en_US.UTF-8 \ + # Install our packages + # && mv requirements/requirements_314.txt requirements/requirements_specific.txt \ + # && pip install -U pip setuptools \ + # && pip install --no-cache-dir --no-deps -r requirements/requirements.txt \ + # Setup synuser + && groupadd -g 999 synuser \ + && useradd -r --home-dir=/home/synuser -u 999 -g synuser --shell /bin/bash synuser \ + && mkdir -p /home/synuser \ + && chown synuser:synuser /home/synuser \ + # Cleanup + #&& rm -rf requirements \ + #&& apt-get remove -y --purge curl build-essential \ + && apt-get remove -y --allow-remove-essential --purge e2fsprogs \ + && apt-get autoremove -y --purge \ + && apt-get clean && apt-get purge \ + && rm -rf /var/lib/apt/lists/* \ + && rm pandoc.deb.sha256 \ + && rm pandoc-amd64.deb + # && while read path; do if [ -e $path ]; then echo "Removing ${path}" && rm -rf $path; else echo "! Path not present: ${path}"; exit 1; fi done < rmlist.txt \ + # && rm rmlist.txt + +ENV LANG="en_US.UTF-8" LANGUAGE="en_US.UTF-8" LC_ALL="en_US.UTF-8" diff --git a/requirements/requirements_314.txt b/requirements/requirements_314.txt new file mode 100644 index 00000000..926a68cc --- /dev/null +++ b/requirements/requirements_314.txt @@ -0,0 +1,2 @@ +# 3.14+ support for a mainline dependency +vcrpy==7.0.0 diff --git a/requirements/requirements_dep.txt b/requirements/requirements_dep.txt index fdbdd4e0..e9fe1ee4 100644 --- a/requirements/requirements_dep.txt +++ b/requirements/requirements_dep.txt @@ -93,7 +93,7 @@ rfc3339-validator==0.1.4 rfc3986-validator==0.1.1 ################################### # referencing -> rpds-py -rpds-py==0.24.0 +rpds-py==0.28.0 ################################### # stix2-validator -> simplejson simplejson==3.20.1 diff --git a/requirements/requirements_synapse.txt b/requirements/requirements_synapse.txt index e4fa553e..4bf712e7 100644 --- a/requirements/requirements_synapse.txt +++ b/requirements/requirements_synapse.txt @@ -1,31 +1,35 @@ -# Required packages for synapse -tornado==6.5.2 -aiohttp==3.12.15 -aiohttp-socks==0.10.1 -aiosmtplib==3.0.2 -pyOpenSSL==24.2.1 -cryptography==43.0.3 -msgpack==1.1.0 -xxhash==3.5.0 -lmdb==1.7.3 -regex==2025.7.34 -PyYAML==6.0.2 -prompt-toolkit==3.0.51 -Pygments==2.19.2 +pyOpenSSL>=24.0.0,<24.3.0 +msgpack>=1.0.5,<1.2.0 +xxhash>=1.4.4,<3.6.0 +lmdb>=1.7.0,<1.8.0 +tornado>=6.2.0,<7.0.0 +regex>=2022.9.11 +PyYAML>=5.4,<6.1.0 +aiohttp>=3.10.0,<4.0 +aiohttp-socks>=0.9.0,<0.11.0 +aiosmtplib>=3.0.0,<3.1.0 +prompt_toolkit>=3.0.29,<3.1.0 lark==1.2.2 -packaging==24.2 -fastjsonschema==2.21.1 -stix2-validator==3.2.0 -base58==2.1.1 -python-bitcoinlib==0.12.2 -typing-extensions==4.14.1 -scalecodec==1.2.9 -cbor2==5.6.5 +Pygments>=2.7.4,<2.20.0 +fastjsonschema>=2.20.0,<2.22.0 +packaging>=20.0,<25.0 +stix2-validator>=3.2.0,<4.0.0 +vcrpy>=7.0.0,<8.0.0 +base58>=2.1.0,<2.2.0 +python-bitcoinlib>=0.11.0,<0.13.0 +pycryptodome>=3.11.0,<3.24.0 +typing-extensions>=3.7.4,<5.0.0 # synapse.vendor.xrpl req +scalecodec>=1.0.2,<1.3.0 # synapse.vendor.substrateinterface req +cbor2>=5.4.1,<5.7.0 bech32==1.2.0 -oauthlib==3.3.1 -pycryptodome==3.23.0 -idna==3.10 -python-dateutil==2.9.0.post0 -pytz==2025.2 -beautifulsoup4==4.13.4 -vtx-yyjson==4.3.0 +oauthlib>=3.2.1,<4.0.0 +idna>=3.6,<3.11 +python-dateutil>=2.8,<3.0 +pytz>=2023.3,<2025.3 +beautifulsoup4[html5lib]>=4.11.1,<5.0.0 +# Cryptography is a pyopenssl dependency which has now has a maximum version +# pin. Cryptography also vendors a copy of OpenSSL, so it needs to be able to +# have a minimum version bumped in the event of a OpenSSL vulnerability that +# needs to be patched. +cryptography>=43.0.1,<44.0.0 +vtx-yyjson>=4.3.0,<5.0.0 diff --git a/test/synapse_test.sh b/test/synapse_test.sh index 6b843b2b..ea023efc 100644 --- a/test/synapse_test.sh +++ b/test/synapse_test.sh @@ -9,6 +9,8 @@ cd ./synapse cp -v /opt/test/pytest.ini . which python3 which python +python -m pip install -r requirements.txt +python -m pip install -r requirements_dev.txt python -m pip install pytest pytest-cov SYN_VENDOR_TEST=1 python3 -m pytest # pytest -v -s --disable-warnings --durations 6 --maxfail 6