From b7936f0abf349b83408caad463bea694d915a207 Mon Sep 17 00:00:00 2001 From: stackcoder Date: Tue, 16 Dec 2025 11:34:46 +0100 Subject: [PATCH 1/2] Add DevContainer and consolidate dependencies Add a VS Code DevContainer for a standardized development environment. Consolidate dependency management under Poetry, remove redundant requirements and duplicate package installs. --- .containerignore | 7 + .devcontainer/Containerfile | 15 ++ .devcontainer/devcontainer.json | 7 + .dockerignore | 56 ------ Makefile | 3 - platformio.ini | 2 +- requirements.pip | 316 -------------------------------- 7 files changed, 30 insertions(+), 376 deletions(-) create mode 100644 .containerignore create mode 100644 .devcontainer/Containerfile create mode 100644 .devcontainer/devcontainer.json delete mode 100644 .dockerignore delete mode 100644 requirements.pip diff --git a/.containerignore b/.containerignore new file mode 100644 index 0000000..7640a0f --- /dev/null +++ b/.containerignore @@ -0,0 +1,7 @@ +# Ignore everything +* + +# Expect +!poetry.lock +!poetry.toml +!pyproject.toml diff --git a/.devcontainer/Containerfile b/.devcontainer/Containerfile new file mode 100644 index 0000000..18bc2a0 --- /dev/null +++ b/.devcontainer/Containerfile @@ -0,0 +1,15 @@ +FROM docker.io/python:3.10-slim + +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + wget \ + unzip \ + make + +WORKDIR /app + +COPY poetry.lock poetry.toml pyproject.toml . +RUN pip install --no-cache-dir poetry && \ + poetry config virtualenvs.create false && \ + poetry install --no-root && \ + rm -rf ~/.cache diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..eee3639 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,7 @@ +{ + "name": "RFQuack", + "build": { + "dockerfile": "Containerfile", + "context": ".." + } +} \ No newline at end of file diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index b5c6865..0000000 --- a/.dockerignore +++ /dev/null @@ -1,56 +0,0 @@ -# Prerequisites -*.d - -# Compiled Object files -*.slo -*.lo -*.o -*.obj - -# Precompiled Headers -*.gch -*.pch - -# Compiled Dynamic libraries -*.so -*.dylib -*.dll - -# Fortran module files -*.mod -*.smod - -# Compiled Static libraries -*.lai -*.la -*.a -*.lib - -# Executables -*.exe -*.out -*.app - -# PlatformIO -.pio* -.piolibdeps -.clang_complete -.gcc-flags.json - -# Python -__pycache__/* -*.pyc - -# Protobuf -src/*.pb.c -src/*.pb.h - -# Secrets -src/client/configs/* -**/*credentials* - -# OS -.DS_Store -======= -!**/*credentials*.example -TODO diff --git a/Makefile b/Makefile index 4ca8852..f8825a7 100644 --- a/Makefile +++ b/Makefile @@ -100,6 +100,3 @@ proto-dev: ## Compile protobuf types (for dev purposes only, makes lots of assum lsd: ## Print list of serial USB devices connected pio device list - -gen-requirements: ## Generates requirements.pip - poetry export > requirements.pip diff --git a/platformio.ini b/platformio.ini index fb8d527..434eb84 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,7 +13,7 @@ default_envs = featheresp32 [env] lib_deps = - nanopb/Nanopb@0.4.6 + nanopb/Nanopb@0.4.9 vshymanskyy/TinyGSM@~0.6.0 256dpi/MQTT@2.4.7 SMFSW/Queue@1.6 diff --git a/requirements.pip b/requirements.pip deleted file mode 100644 index 4d9ed45..0000000 --- a/requirements.pip +++ /dev/null @@ -1,316 +0,0 @@ -aiofiles==22.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1142fa8e80dbae46bb6339573ad4c8c0841358f79c6eb50a493dceca14621bad \ - --hash=sha256:9107f1ca0b2a5553987a94a3c9959fe5b491fdf731389aa5b7b1bd0733e32de6 -ajsonrpc==1.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0fa2c1cf8e619d18ffee96043822032d6520eda65d3b712f9540a3a63e9cac25 \ - --hash=sha256:791bac18f0bf0dee109194644f151cf8b7ff529c4b8d6239ac48104a3251a19f -anyio==3.6.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421 \ - --hash=sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3 -appnope==0.1.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24 \ - --hash=sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e -asttokens==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1b28ed85e254b724439afc783d4bee767f780b936c3fe8b3275332f42cf5f561 \ - --hash=sha256:4aa76401a151c8cc572d906aad7aea2a841780834a19d780f4321c0fe1b54635 -async-timeout==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15 \ - --hash=sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c -backcall==0.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e \ - --hash=sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255 -beautifulsoup4==4.11.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30 \ - --hash=sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693 -bottle==0.12.23 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:683de3aa399fb26e87b274dbcf70b1a651385d459131716387abdc3792e04167 \ - --hash=sha256:9f1c363257c590bd34db5fad4693a7f06ff4217e9ad18337451de69c25137127 -certifi==2022.9.24 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14 \ - --hash=sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382 -chardet==5.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0368df2bfd78b5fc20572bb4e9bb7fb53e2c094f60ae9993339e8671d0afb8aa \ - --hash=sha256:d3e64f022d254183001eccc5db4040520c0f23b1a3f33d6413e099eb7f126557 -charset-normalizer==2.1.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845 \ - --hash=sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f -click==8.1.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ - --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 -colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ - --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coloredlogs==15.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934 \ - --hash=sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0 -decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ - --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 -executing==1.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc \ - --hash=sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107 -ghp-import==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619 \ - --hash=sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343 -google==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:143530122ee5130509ad5e989f0512f7cb218b2d4eddbafbad40fd10e8d8ccbe \ - --hash=sha256:889cf695f84e4ae2c55fbc0cfdaf4c1e729417fa52ab1db0485202ba173e4935 -h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ - --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -humanfriendly==10.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 \ - --hash=sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc -idna==3.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 -ifaddr==0.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:085e0305cfe6f16ab12d72e2024030f5d52674afad6911bb1eee207177b8a748 \ - --hash=sha256:cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4 -ipython==8.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:7c959e3dedbf7ed81f9b9d8833df252c430610e2a4a6464ec13cd20975ce20a5 \ - --hash=sha256:91ef03016bcf72dd17190f863476e7c799c6126ec7e8be97719d1bc9a78a59a4 -j2cli==0.3.10 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:6f6f643b3fa5c0f72fbe9f07e246f8e138052b9f689e14c7c64d582c59709ae4 \ - --hash=sha256:b005a40750b7b7c1c4c6e7209dc2bd6d10dee8a93a939d80884f2e2fb427d343 -jedi==0.18.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d \ - --hash=sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab -jinja2==3.1.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ - --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 -markdown==3.3.7 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874 \ - --hash=sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621 -markupsafe==2.1.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003 \ - --hash=sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88 \ - --hash=sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5 \ - --hash=sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7 \ - --hash=sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a \ - --hash=sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603 \ - --hash=sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1 \ - --hash=sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135 \ - --hash=sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247 \ - --hash=sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6 \ - --hash=sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601 \ - --hash=sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77 \ - --hash=sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02 \ - --hash=sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e \ - --hash=sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63 \ - --hash=sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f \ - --hash=sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980 \ - --hash=sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b \ - --hash=sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812 \ - --hash=sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff \ - --hash=sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96 \ - --hash=sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1 \ - --hash=sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925 \ - --hash=sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a \ - --hash=sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6 \ - --hash=sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e \ - --hash=sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f \ - --hash=sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4 \ - --hash=sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f \ - --hash=sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3 \ - --hash=sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c \ - --hash=sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a \ - --hash=sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417 \ - --hash=sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a \ - --hash=sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a \ - --hash=sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37 \ - --hash=sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452 \ - --hash=sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933 \ - --hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \ - --hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7 -marshmallow==3.19.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78 \ - --hash=sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b -matplotlib-inline==0.1.6 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311 \ - --hash=sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304 -mergedeep==1.3.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8 \ - --hash=sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307 -mkdocs-material-extensions==1.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:96ca979dae66d65c2099eefe189b49d5ac62f76afb59c38e069ffc7cf3c131ec \ - --hash=sha256:bcc2e5fc70c0ec50e59703ee6e639d87c7e664c0c441c014ea84461a90f1e902 -mkdocs-material==8.5.10 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:51760fa4c9ee3ca0b3a661ec9f9817ec312961bb84ff19e5b523fdc5256e1d6c \ - --hash=sha256:7623608f746c6d9ff68a8ef01f13eddf32fa2cae5e15badb251f26d1196bc8f1 -mkdocs==1.4.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5 \ - --hash=sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c -packaging==21.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 -paho-mqtt==1.6.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2a8291c81623aec00372b5a85558a372c747cbca8e9934dfe218638b8eefc26f -parso==0.8.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 \ - --hash=sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75 -pexpect==4.8.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937 \ - --hash=sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c -pickleshare==0.7.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca \ - --hash=sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56 -platformio==6.1.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:e111d7a86f676668e54c06cc9ebe986439b9d67692841c1792387cc6cb96513f -prompt-toolkit==3.0.32 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:24becda58d49ceac4dc26232eb179ef2b21f133fecda7eed6018d341766ed76e \ - --hash=sha256:e7f2129cba4ff3b3656bbdda0e74ee00d2f874a8bcdb9dd16f5fec7b3e173cae -protobuf==4.21.9 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2c9c2ed7466ad565f18668aa4731c535511c5d9a40c6da39524bccf43e441719 \ - --hash=sha256:48e2cd6b88c6ed3d5877a3ea40df79d08374088e89bedc32557348848dff250b \ - --hash=sha256:5b0834e61fb38f34ba8840d7dcb2e5a2f03de0c714e0293b3963b79db26de8ce \ - --hash=sha256:61f21493d96d2a77f9ca84fefa105872550ab5ef71d21c458eb80edcf4885a99 \ - --hash=sha256:6e0be9f09bf9b6cf497b27425487706fa48c6d1632ddd94dab1a5fe11a422392 \ - --hash=sha256:6e312e280fbe3c74ea9e080d9e6080b636798b5e3939242298b591064470b06b \ - --hash=sha256:7eb8f2cc41a34e9c956c256e3ac766cf4e1a4c9c925dc757a41a01be3e852965 \ - --hash=sha256:84ea107016244dfc1eecae7684f7ce13c788b9a644cd3fca5b77871366556444 \ - --hash=sha256:9227c14010acd9ae7702d6467b4625b6fe853175a6b150e539b21d2b2f2b409c \ - --hash=sha256:a419cc95fca8694804709b8c4f2326266d29659b126a93befe210f5bbc772536 \ - --hash=sha256:a7d0ea43949d45b836234f4ebb5ba0b22e7432d065394b532cdca8f98415e3cf \ - --hash=sha256:b5ab0b8918c136345ff045d4b3d5f719b505b7c8af45092d7f45e304f55e50a1 \ - --hash=sha256:e575c57dc8b5b2b2caa436c16d44ef6981f2235eb7179bfc847557886376d740 \ - --hash=sha256:f9eae277dd240ae19bb06ff4e2346e771252b0e619421965504bd1b1bba7c5fa -ptyprocess==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ - --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 -pure-eval==0.2.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350 \ - --hash=sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3 -pyelftools==0.29 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:519f38cf412f073b2d7393aa4682b0190fa901f7c3fa0bff2b82d537690c7fc1 \ - --hash=sha256:ec761596aafa16e282a31de188737e5485552469ac63b60cfcccf22263fd24ff -pygments==2.13.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1 \ - --hash=sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42 -pymdown-extensions==9.8 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1bd4a173095ef8c433b831af1f3cb13c10883be0c100ae613560668e594651f7 \ - --hash=sha256:8e62688a8b1128acd42fa823f3d429d22f4284b5e6dd4d3cd56721559a5a211b -pyparsing==3.0.9 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ - --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc -pyreadline3==3.4.1 ; sys_platform == "win32" and python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae \ - --hash=sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb -pyserial==3.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb \ - --hash=sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0 -python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -pyyaml-env-tag==0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb \ - --hash=sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069 -pyyaml==6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf \ - --hash=sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293 \ - --hash=sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b \ - --hash=sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57 \ - --hash=sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b \ - --hash=sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4 \ - --hash=sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07 \ - --hash=sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba \ - --hash=sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9 \ - --hash=sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287 \ - --hash=sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513 \ - --hash=sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0 \ - --hash=sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782 \ - --hash=sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0 \ - --hash=sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92 \ - --hash=sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f \ - --hash=sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2 \ - --hash=sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc \ - --hash=sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1 \ - --hash=sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c \ - --hash=sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86 \ - --hash=sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4 \ - --hash=sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c \ - --hash=sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34 \ - --hash=sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b \ - --hash=sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d \ - --hash=sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c \ - --hash=sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb \ - --hash=sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7 \ - --hash=sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737 \ - --hash=sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3 \ - --hash=sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d \ - --hash=sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358 \ - --hash=sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53 \ - --hash=sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78 \ - --hash=sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803 \ - --hash=sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a \ - --hash=sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f \ - --hash=sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174 \ - --hash=sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 -requests==2.28.1 ; python_version >= "3.10" and python_version < "4" \ - --hash=sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983 \ - --hash=sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349 -semantic-version==2.10.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c \ - --hash=sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177 -six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ - --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.3.2.post1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759 \ - --hash=sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d -stack-data==0.6.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:6c9a10eb5f342415fe085db551d673955611afb821551f554d91772415464315 \ - --hash=sha256:960cb054d6a1b2fdd9cbd529e365b3c163e8dabf1272e02cfe36b58403cff5c6 -starlette==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0efc058261bbcddeca93cad577efd36d0c8a317e44376bcfc0e097a2b3dc24a7 \ - --hash=sha256:b1b52305ee8f7cfc48cde383496f7c11ab897cd7112b33d998b1317dc8ef9027 -tabulate==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c \ - --hash=sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f -traitlets==5.5.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1201b2c9f76097195989cdf7f65db9897593b0dfd69e4ac96016661bb6f0d30f \ - --hash=sha256:b122f9ff2f2f6c1709dab289a05555be011c87828e911c0cf4074b85cb780a79 -urllib3==1.26.12 ; python_version >= "3.10" and python_version < "4" \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 -uvicorn==0.19.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:cc277f7e73435748e69e075a721841f7c4a95dba06d12a72fe9874acced16f6f \ - --hash=sha256:cf538f3018536edb1f4a826311137ab4944ed741d52aeb98846f52215de57f25 -watchdog==2.1.9 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412 \ - --hash=sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654 \ - --hash=sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306 \ - --hash=sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33 \ - --hash=sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd \ - --hash=sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7 \ - --hash=sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892 \ - --hash=sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609 \ - --hash=sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6 \ - --hash=sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1 \ - --hash=sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591 \ - --hash=sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d \ - --hash=sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d \ - --hash=sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c \ - --hash=sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3 \ - --hash=sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39 \ - --hash=sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213 \ - --hash=sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330 \ - --hash=sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428 \ - --hash=sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1 \ - --hash=sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846 \ - --hash=sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153 \ - --hash=sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3 \ - --hash=sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9 \ - --hash=sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658 -wcwidth==0.2.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784 \ - --hash=sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83 -wsproto==1.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065 \ - --hash=sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736 -zeroconf==0.39.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:701e4d697f89fe952aa9c13a512ed6bf472dcf4f0a6d275e71085604b3882295 \ - --hash=sha256:d60eae9e9c99d1a168ce9ff9de7e7398c23754a0c2004ded230f8d529c5260a0 From fc2fd484ffe3d8b47ad2044fa3292c53e6370e43 Mon Sep 17 00:00:00 2001 From: stackcoder Date: Tue, 16 Dec 2025 11:33:29 +0100 Subject: [PATCH 2/2] Cleanup build environment --- .github/workflows/build.yml | 6 +- Dockerfile | 17 ---- Makefile | 102 ------------------------ docker/deps/python/packages.sh | 4 - docker/deps/ubuntu-latest/packages.sh | 11 --- scripts/pio/main_cpp_j2.py | 2 +- {docker/project/src => src}/main.cpp.j2 | 0 7 files changed, 5 insertions(+), 137 deletions(-) delete mode 100644 Dockerfile delete mode 100644 Makefile delete mode 100644 docker/deps/python/packages.sh delete mode 100644 docker/deps/ubuntu-latest/packages.sh rename {docker/project/src => src}/main.cpp.j2 (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c85666b..ce0d1d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,6 +25,8 @@ jobs: python-version: ${{ matrix.python }} - name: Install deps run: | - /bin/sh docker/deps/python/packages.sh + pip install --no-cache-dir poetry + poetry config virtualenvs.create false + poetry install --no-root - name: Run PlatformIO - run: make clean build + run: pio run diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 2ec0319..0000000 --- a/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM python:3.10-slim -LABEL maintainer "RFQuack" - -ARG WORKDIR=/tmp/RFQuack -ARG OS=ubuntu-latest - -ENV WORKDIR=${WORKDIR} -ENV OS=${OS} - -VOLUME ${WORKDIR} - -WORKDIR ${WORKDIR} - -COPY . . - -RUN /bin/sh docker/deps/${OS}/packages.sh \ - && /bin/sh docker/deps/python/packages.sh diff --git a/Makefile b/Makefile deleted file mode 100644 index f8825a7..0000000 --- a/Makefile +++ /dev/null @@ -1,102 +0,0 @@ -# -# vim: noexpandtab -# -# RFQuack is a versatile RF-hacking tool that allows you to sniff, analyze, and -# transmit data over the air. Consider it as the modular version of the great -# -# Copyright (C) 2019 Trend Micro Incorporated -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin -# Street, Fifth Floor, Boston, MA 02110-1301, USA. -# - -# Note: make sure that client/ points to the root of https://github.com/rfquack/RFQuack-cli - -# Thanks to: https://gist.github.com/mpneuried/0594963ad38e68917ef189b4e6a269db - -# HELP -# This will output the help for each task -# -# Thanks to https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html - -.PHONY: help - -.DEFAULT_GOAL := help - -APP_PREFIX := rfquack -APP_NAME := rfquack -APP := $(APP_PREFIX)/$(APP_NAME) -RFQ_VOLUME := /tmp/RFQuack -SHELL := /bin/bash - -example_src := examples/RFQuack-esp32-CC1101-serial -tmp_build_dir := /tmp/build -pio_env := ESP32 - -help: ## This help. - @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) - -clean: ## Clean build environment - rm -f src/rfquack.pb.{h,c} src/main.cpp - rm -rf .pio - -docker-build-image: ## Build the container - docker build \ - --progress plain \ - -t $(APP) . - -docker-build-image-nc: ## Build the container without caching - docker build \ - --progress plain \ - --no-cache \ - -t $(APP) . - -docker-stop-container: ## Stop and remove a running container - docker stop $(APP_NAME) - docker rm $(APP_NAME) - -build-in-docker: ## Spawn a shell in Docker container - docker run \ - --rm -it \ - --volume ${PWD}:$(RFQ_VOLUME) $(APP) \ - make build - -flash-via-docker: ## Flash firmware image to $PORT - docker run \ - --rm -it \ - --volume ${PWD}:$(RFQ_VOLUME) \ - --device=${PORT}:/board $(APP) \ - make flash - -build: ## Build firmware image via PlatformIO - pio run - -flash: ## Flash firmware - pio run -t upload - -console: ## Serial console - pio device monitor - -proto-dev: ## Compile protobuf types (for dev purposes only, makes lots of assumptions) - pio pkg install \ - -f -l \ - nanopb/Nanopb - protoc \ - -I . \ - --plugin=protoc-gen-nanopb=.pio/libdeps/$(pio_env)/Nanopb/generator/protoc-gen-nanopb \ - --nanopb_out=. \ - --python_out=client/rfquack \ - src/rfquack.proto - -lsd: ## Print list of serial USB devices connected - pio device list diff --git a/docker/deps/python/packages.sh b/docker/deps/python/packages.sh deleted file mode 100644 index 6aec374..0000000 --- a/docker/deps/python/packages.sh +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/sh - -pip install -U pip -pip install -r requirements.pip \ No newline at end of file diff --git a/docker/deps/ubuntu-latest/packages.sh b/docker/deps/ubuntu-latest/packages.sh deleted file mode 100644 index 9c52baf..0000000 --- a/docker/deps/ubuntu-latest/packages.sh +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/sh - -apt-get update \ - && apt-get install -y --no-install-recommends \ - git \ - wget \ - unzip \ - make \ - protobuf-compiler \ - && apt-get purge -y --auto-remove \ - && rm -rf /var/lib/apt/lists/* \ No newline at end of file diff --git a/scripts/pio/main_cpp_j2.py b/scripts/pio/main_cpp_j2.py index dd2a89f..a8e9328 100644 --- a/scripts/pio/main_cpp_j2.py +++ b/scripts/pio/main_cpp_j2.py @@ -10,7 +10,7 @@ project_dir = env.subst("$PROJECT_DIR") src_dir = os.path.join(project_dir, "src") build_env = os.path.join(project_dir, "build.env") -main_cpp_j2 = os.path.join(project_dir, "docker", "project", "src", "main.cpp.j2") +main_cpp_j2 = os.path.join(project_dir, "src", "main.cpp.j2") main_cpp = os.path.join(src_dir, "main.cpp") try: diff --git a/docker/project/src/main.cpp.j2 b/src/main.cpp.j2 similarity index 100% rename from docker/project/src/main.cpp.j2 rename to src/main.cpp.j2