Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Borg: Migrate to Python 3.12 #6444

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

mreid-tt
Copy link
Contributor

@mreid-tt mreid-tt commented Feb 6, 2025

Description

This PR includes the following:

  1. Update borgmatic to v1.9.10
  2. Migrate to Python 3.12

Fixes #

Checklist

  • Build rule all-supported completed successfully
  • New installation of package completed successfully
  • Package upgrade completed successfully (Manually install the package again)
  • Package functionality was tested
  • Any needed documentation is updated/created

Type of change

  • Package update

@mreid-tt mreid-tt self-assigned this Feb 6, 2025
@mreid-tt mreid-tt mentioned this pull request Feb 6, 2025
6 tasks
@mreid-tt
Copy link
Contributor Author

mreid-tt commented Feb 6, 2025

Install and update seem to be successful on DSM 6:

Install Log
2025/02/06 10:13:43	install borgbackup 1.4.0-16 Begin preinst
2025/02/06 10:13:43	Begin initialize_variables
2025/02/06 10:13:43	End initialize_variables
2025/02/06 10:13:43	===> Step preinst. STATUS=INSTALL USER= GROUP= SHARE_PATH=
2025/02/06 10:13:43	install borgbackup 1.4.0-16 End preinst ret=[0]
2025/02/06 10:13:43	install borgbackup 1.4.0-16 Begin /bin/rm -rf /volume1/@appstore/borgbackup
2025/02/06 10:13:43	install borgbackup 1.4.0-16 End /bin/rm -rf /volume1/@appstore/borgbackup ret=[0]
2025/02/06 10:13:43	install borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/package /volume1/@appstore/borgbackup
2025/02/06 10:13:43	install borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/package /volume1/@appstore/borgbackup ret=[0]
2025/02/06 10:13:43	install borgbackup 1.4.0-16 Begin /bin/rm -rf /var/packages/borgbackup
2025/02/06 10:13:43	install borgbackup 1.4.0-16 End /bin/rm -rf /var/packages/borgbackup ret=[0]
2025/02/06 10:13:44	install borgbackup 1.4.0-16 Begin /bin/mkdir -p /var/packages/borgbackup
2025/02/06 10:13:44	install borgbackup 1.4.0-16 End /bin/mkdir -p /var/packages/borgbackup ret=[0]
2025/02/06 10:13:44	install borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/INFO /var/packages/borgbackup/INFO
2025/02/06 10:13:44	install borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/INFO /var/packages/borgbackup/INFO ret=[0]
2025/02/06 10:13:44	install borgbackup 1.4.0-16 Begin /bin/rm -rf /var/packages/borgbackup/scripts
2025/02/06 10:13:44	install borgbackup 1.4.0-16 End /bin/rm -rf /var/packages/borgbackup/scripts ret=[0]
2025/02/06 10:13:44	install borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/scripts /var/packages/borgbackup/scripts
2025/02/06 10:13:44	install borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/scripts /var/packages/borgbackup/scripts ret=[0]
2025/02/06 10:13:44	install borgbackup 1.4.0-16 Begin /bin/rm -rf /var/packages/borgbackup/conf
2025/02/06 10:13:44	install borgbackup 1.4.0-16 End /bin/rm -rf /var/packages/borgbackup/conf ret=[0]
2025/02/06 10:13:44	install borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/conf /var/packages/borgbackup/conf
2025/02/06 10:13:44	install borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/conf /var/packages/borgbackup/conf ret=[0]
2025/02/06 10:13:47	install borgbackup 1.4.0-16 Begin postinst
2025/02/06 10:13:47	Begin initialize_variables
2025/02/06 10:13:47	End initialize_variables
2025/02/06 10:13:47	===> Step postinst. STATUS=INSTALL USER= GROUP= SHARE_PATH=
2025/02/06 10:13:47	Begin save_wizard_variables
2025/02/06 10:13:47	End save_wizard_variables
2025/02/06 10:13:47	Begin service_postinst
2025/02/06 10:13:47	Python 3.12.8
2025/02/06 10:13:51	Default pip version 24.3.1
2025/02/06 10:14:18	Install packages from wheels
2025/02/06 10:14:18	Install packages from wheels [/volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt]
2025/02/06 10:14:21	Looking in links: /volume1/@appstore/borgbackup/share/wheelhouse
2025/02/06 10:14:23	Collecting appdirs==1.4.4 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 1))
2025/02/06 10:14:23	  Downloading appdirs-1.4.4-py2.py3-none-any.whl.metadata (9.0 kB)
2025/02/06 10:14:26	Collecting arrow==1.3.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 2))
2025/02/06 10:14:26	  Downloading arrow-1.3.0-py3-none-any.whl.metadata (7.5 kB)
2025/02/06 10:14:28	Collecting attrs==25.1.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 3))
2025/02/06 10:14:28	  Downloading attrs-25.1.0-py3-none-any.whl.metadata (10 kB)
2025/02/06 10:14:30	Processing /volume1/@appstore/borgbackup/share/wheelhouse/borgbackup-1.4.0-cp312-cp312-linux_x86_64.whl (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 4))
2025/02/06 10:14:31	Collecting borgmatic==1.9.8 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 5))
2025/02/06 10:14:31	  Downloading borgmatic-1.9.8-py3-none-any.whl.metadata (9.0 kB)
2025/02/06 10:14:33	Collecting charset-normalizer==3.4.1 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 6))
2025/02/06 10:14:33	  Downloading charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)
2025/02/06 10:14:34	Processing /volume1/@appstore/borgbackup/share/wheelhouse/docopt-0.6.2-py2.py3-none-any.whl (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 7))
2025/02/06 10:14:35	Collecting emborg==1.41 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 8))
2025/02/06 10:14:35	  Downloading emborg-1.41-py3-none-any.whl.metadata (3.2 kB)
2025/02/06 10:14:37	Collecting idna==3.10 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 9))
2025/02/06 10:14:37	  Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
2025/02/06 10:14:39	Collecting inform==1.33 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 10))
2025/02/06 10:14:39	  Downloading inform-1.33-py3-none-any.whl.metadata (11 kB)
2025/02/06 10:14:40	Collecting jsonschema-specifications==2024.10.1 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 11))
2025/02/06 10:14:40	  Downloading jsonschema_specifications-2024.10.1-py3-none-any.whl.metadata (3.0 kB)
2025/02/06 10:14:42	Collecting jsonschema==4.23.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 12))
2025/02/06 10:14:42	  Downloading jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB)
2025/02/06 10:14:43	Processing /volume1/@appstore/borgbackup/share/wheelhouse/llfuse-1.5.1-cp312-cp312-linux_x86_64.whl (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 13))
2025/02/06 10:14:45	Collecting msgpack==1.1.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 14))
2025/02/06 10:14:45	  Downloading msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.4 kB)
2025/02/06 10:14:46	Collecting nestedtext==3.7 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 15))
2025/02/06 10:14:46	  Downloading nestedtext-3.7-py3-none-any.whl.metadata (9.3 kB)
2025/02/06 10:14:48	Collecting packaging==24.2 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 16))
2025/02/06 10:14:48	  Downloading packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
2025/02/06 10:14:49	Collecting python-dateutil==2.9.0.post0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 17))
2025/02/06 10:14:49	  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2025/02/06 10:14:50	Collecting quantiphy==2.20 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 18))
2025/02/06 10:14:50	  Downloading quantiphy-2.20-py3-none-any.whl.metadata (7.7 kB)
2025/02/06 10:14:53	Collecting referencing==0.36.2 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 19))
2025/02/06 10:14:53	  Downloading referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)
2025/02/06 10:14:55	Collecting requests==2.32.3 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 20))
2025/02/06 10:14:55	  Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
2025/02/06 10:14:59	Collecting rpds-py==0.22.3 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 21))
2025/02/06 10:14:59	  Downloading rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)
2025/02/06 10:15:01	Collecting ruamel.yaml.clib==0.2.12 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 22))
2025/02/06 10:15:01	  Downloading ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.7 kB)
2025/02/06 10:15:03	Collecting ruamel.yaml==0.18.10 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 23))
2025/02/06 10:15:04	  Downloading ruamel.yaml-0.18.10-py3-none-any.whl.metadata (23 kB)
2025/02/06 10:15:05	Collecting types-python-dateutil==2.9.0.20241206 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 24))
2025/02/06 10:15:05	  Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl.metadata (2.1 kB)
2025/02/06 10:15:07	Collecting typing_extensions==4.12.2 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 25))
2025/02/06 10:15:07	  Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
2025/02/06 10:15:08	Collecting urllib3==2.3.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 26))
2025/02/06 10:15:08	  Downloading urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)
2025/02/06 10:15:10	Collecting six (from inform==1.33->-r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 10))
2025/02/06 10:15:10	  Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
2025/02/06 10:15:12	Collecting certifi>=2017.4.17 (from requests==2.32.3->-r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 20))
2025/02/06 10:15:12	  Downloading certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)
2025/02/06 10:15:13	Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
2025/02/06 10:15:13	Downloading arrow-1.3.0-py3-none-any.whl (66 kB)
2025/02/06 10:15:14	Downloading attrs-25.1.0-py3-none-any.whl (63 kB)
2025/02/06 10:15:14	Downloading borgmatic-1.9.8-py3-none-any.whl (194 kB)
2025/02/06 10:15:15	Downloading charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (145 kB)
2025/02/06 10:15:16	Downloading emborg-1.41-py3-none-any.whl (79 kB)
2025/02/06 10:15:16	Downloading idna-3.10-py3-none-any.whl (70 kB)
2025/02/06 10:15:17	Downloading inform-1.33-py3-none-any.whl (41 kB)
2025/02/06 10:15:17	Downloading jsonschema_specifications-2024.10.1-py3-none-any.whl (18 kB)
2025/02/06 10:15:18	Downloading jsonschema-4.23.0-py3-none-any.whl (88 kB)
2025/02/06 10:15:18	Downloading msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (401 kB)
2025/02/06 10:15:19	Downloading nestedtext-3.7-py3-none-any.whl (28 kB)
2025/02/06 10:15:19	Downloading packaging-24.2-py3-none-any.whl (65 kB)
2025/02/06 10:15:20	Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2025/02/06 10:15:20	Downloading quantiphy-2.20-py3-none-any.whl (41 kB)
2025/02/06 10:15:21	Downloading referencing-0.36.2-py3-none-any.whl (26 kB)
2025/02/06 10:15:21	Downloading requests-2.32.3-py3-none-any.whl (64 kB)
2025/02/06 10:15:22	Downloading rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (385 kB)
2025/02/06 10:15:23	Downloading ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (754 kB)
2025/02/06 10:15:23	   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 754.1/754.1 kB 1.0 MB/s eta 0:00:00
2025/02/06 10:15:23	Downloading ruamel.yaml-0.18.10-py3-none-any.whl (117 kB)
2025/02/06 10:15:24	Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl (14 kB)
2025/02/06 10:15:25	Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
2025/02/06 10:15:25	Downloading urllib3-2.3.0-py3-none-any.whl (128 kB)
2025/02/06 10:15:26	Downloading certifi-2025.1.31-py3-none-any.whl (166 kB)
2025/02/06 10:15:27	Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
2025/02/06 10:15:28	Installing collected packages: docopt, appdirs, urllib3, typing_extensions, types-python-dateutil, six, ruamel.yaml.clib, rpds-py, quantiphy, packaging, msgpack, llfuse, idna, charset-normalizer, certifi, attrs, ruamel.yaml, requests, referencing, python-dateutil, borgbackup, jsonschema-specifications, arrow, jsonschema, inform, nestedtext, borgmatic, emborg
2025/02/06 10:15:32	  Attempting uninstall: six
2025/02/06 10:15:32	    Found existing installation: six 1.17.0
2025/02/06 10:15:32	    Not uninstalling six at /volume1/@appstore/python312/lib/python3.12/site-packages, outside environment /volume1/@appstore/borgbackup/env
2025/02/06 10:15:32	    Can't uninstall 'six'. No files were found to uninstall.
2025/02/06 10:15:38	  Attempting uninstall: certifi
2025/02/06 10:15:38	    Found existing installation: certifi 2024.12.14
2025/02/06 10:15:38	    Not uninstalling certifi at /volume1/@appstore/python312/lib/python3.12/site-packages, outside environment /volume1/@appstore/borgbackup/env
2025/02/06 10:15:38	    Can't uninstall 'certifi'. No files were found to uninstall.
2025/02/06 10:15:53	Successfully installed appdirs-1.4.4 arrow-1.3.0 attrs-25.1.0 borgbackup-1.4.0 borgmatic-1.9.8 certifi-2025.1.31 charset-normalizer-3.4.1 docopt-0.6.2 emborg-1.41 idna-3.10 inform-1.33 jsonschema-4.23.0 jsonschema-specifications-2024.10.1 llfuse-1.5.1 msgpack-1.1.0 nestedtext-3.7 packaging-24.2 python-dateutil-2.9.0.post0 quantiphy-2.20 referencing-0.36.2 requests-2.32.3 rpds-py-0.22.3 ruamel.yaml-0.18.10 ruamel.yaml.clib-0.2.12 six-1.17.0 types-python-dateutil-2.9.0.20241206 typing_extensions-4.12.2 urllib3-2.3.0
2025/02/06 10:15:54	Installed modules:
2025/02/06 10:15:56	appdirs==1.4.4
2025/02/06 10:15:56	arrow==1.3.0
2025/02/06 10:15:56	attrs==25.1.0
2025/02/06 10:15:56	borgbackup==1.4.0
2025/02/06 10:15:56	borgmatic==1.9.8
2025/02/06 10:15:56	certifi==2025.1.31
2025/02/06 10:15:56	charset-normalizer==3.4.1
2025/02/06 10:15:56	distlib==0.3.9
2025/02/06 10:15:56	docopt==0.6.2
2025/02/06 10:15:56	emborg==1.41
2025/02/06 10:15:56	filelock==3.17.0
2025/02/06 10:15:56	idna==3.10
2025/02/06 10:15:56	inform==1.33
2025/02/06 10:15:56	jsonschema==4.23.0
2025/02/06 10:15:56	jsonschema-specifications==2024.10.1
2025/02/06 10:15:56	llfuse==1.5.1
2025/02/06 10:15:56	msgpack==1.1.0
2025/02/06 10:15:56	nestedtext==3.7
2025/02/06 10:15:56	packaging==24.2
2025/02/06 10:15:56	platformdirs==4.3.6
2025/02/06 10:15:56	python-dateutil==2.9.0.post0
2025/02/06 10:15:56	quantiphy==2.20
2025/02/06 10:15:56	referencing==0.36.2
2025/02/06 10:15:56	requests==2.32.3
2025/02/06 10:15:56	rpds-py==0.22.3
2025/02/06 10:15:56	ruamel.yaml==0.18.10
2025/02/06 10:15:56	ruamel.yaml.clib==0.2.12
2025/02/06 10:15:56	setuptools==75.8.0
2025/02/06 10:15:56	six==1.17.0
2025/02/06 10:15:56	types-python-dateutil==2.9.0.20241206
2025/02/06 10:15:56	typing_extensions==4.12.2
2025/02/06 10:15:56	urllib3==2.3.0
2025/02/06 10:15:56	virtualenv==20.29.1
2025/02/06 10:15:56	wheel==0.45.1
2025/02/06 10:15:56	End service_postinst
2025/02/06 10:15:56	install borgbackup 1.4.0-16 End postinst ret=[0]
2025/02/06 10:15:56	install borgbackup 1.4.0-16 Begin /bin/rm -rf /volume1/@tmp/pkginstall
2025/02/06 10:15:56	install borgbackup 1.4.0-16 End /bin/rm -rf /volume1/@tmp/pkginstall ret=[0]
2025/02/06 10:15:59	install borgbackup 1.4.0-16 Begin start-stop-status start
2025/02/06 10:15:59	install borgbackup 1.4.0-16 End start-stop-status start ret=[0]
Upgrade Log
2025/02/06 10:30:14	upgrade borgbackup 1.4.0-16 Begin start-stop-status stop
2025/02/06 10:30:14	upgrade borgbackup 1.4.0-16 End start-stop-status stop ret=[0]
2025/02/06 10:30:15	upgrade borgbackup 1.4.0-16 Begin preupgrade
2025/02/06 10:30:15	Begin initialize_variables
2025/02/06 10:30:15	End initialize_variables
2025/02/06 10:30:15	===> Step preupgrade. STATUS=UPGRADE USER= GROUP= SHARE_PATH=
2025/02/06 10:30:15	upgrade borgbackup 1.4.0-16 End preupgrade ret=[0]
2025/02/06 10:30:15	upgrade borgbackup 1.4.0-16 Begin preuninst
2025/02/06 10:30:15	Begin initialize_variables
2025/02/06 10:30:15	End initialize_variables
2025/02/06 10:30:15	===> Step preuninst. STATUS=UPGRADE USER= GROUP= SHARE_PATH=
2025/02/06 10:30:15	upgrade borgbackup 1.4.0-16 End preuninst ret=[0]
2025/02/06 10:30:16	upgrade borgbackup 1.4.0-16 Begin /bin/rm -rf /volume1/@appstore/borgbackup
2025/02/06 10:30:16	upgrade borgbackup 1.4.0-16 End /bin/rm -rf /volume1/@appstore/borgbackup ret=[0]
2025/02/06 10:30:17	upgrade borgbackup 1.4.0-16 Begin postuninst
2025/02/06 10:30:17	Begin initialize_variables
2025/02/06 10:30:17	End initialize_variables
2025/02/06 10:30:17	===> Step postuninst. STATUS=UPGRADE USER= GROUP= SHARE_PATH=
2025/02/06 10:30:17	upgrade borgbackup 1.4.0-16 End postuninst ret=[0]
2025/02/06 10:30:18	upgrade borgbackup 1.4.0-16 Begin preinst
2025/02/06 10:30:18	Begin initialize_variables
2025/02/06 10:30:18	End initialize_variables
2025/02/06 10:30:18	===> Step preinst. STATUS=UPGRADE USER= GROUP= SHARE_PATH=
2025/02/06 10:30:18	upgrade borgbackup 1.4.0-16 End preinst ret=[0]
2025/02/06 10:30:18	upgrade borgbackup 1.4.0-16 Begin /bin/rm -rf /volume1/@appstore/borgbackup
2025/02/06 10:30:18	upgrade borgbackup 1.4.0-16 End /bin/rm -rf /volume1/@appstore/borgbackup ret=[0]
2025/02/06 10:30:18	upgrade borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/package /volume1/@appstore/borgbackup
2025/02/06 10:30:18	upgrade borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/package /volume1/@appstore/borgbackup ret=[0]
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 Begin /bin/mkdir -p /var/packages/borgbackup
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 End /bin/mkdir -p /var/packages/borgbackup ret=[0]
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/INFO /var/packages/borgbackup/INFO
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/INFO /var/packages/borgbackup/INFO ret=[0]
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 Begin /bin/rm -rf /var/packages/borgbackup/scripts
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 End /bin/rm -rf /var/packages/borgbackup/scripts ret=[0]
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/scripts /var/packages/borgbackup/scripts
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/scripts /var/packages/borgbackup/scripts ret=[0]
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 Begin /bin/rm -rf /var/packages/borgbackup/conf
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 End /bin/rm -rf /var/packages/borgbackup/conf ret=[0]
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 Begin /bin/mv -f /volume1/@tmp/pkginstall/conf /var/packages/borgbackup/conf
2025/02/06 10:30:19	upgrade borgbackup 1.4.0-16 End /bin/mv -f /volume1/@tmp/pkginstall/conf /var/packages/borgbackup/conf ret=[0]
2025/02/06 10:30:22	upgrade borgbackup 1.4.0-16 Begin postinst
2025/02/06 10:30:22	Begin initialize_variables
2025/02/06 10:30:22	End initialize_variables
2025/02/06 10:30:22	===> Step postinst. STATUS=UPGRADE USER= GROUP= SHARE_PATH=
2025/02/06 10:30:22	Begin save_wizard_variables
2025/02/06 10:30:22	End save_wizard_variables
2025/02/06 10:30:22	Begin service_postinst
2025/02/06 10:30:22	Python 3.12.8
2025/02/06 10:30:23	Default pip version 24.3.1
2025/02/06 10:30:40	Install packages from wheels
2025/02/06 10:30:40	Install packages from wheels [/volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt]
2025/02/06 10:30:42	Looking in links: /volume1/@appstore/borgbackup/share/wheelhouse
2025/02/06 10:30:43	Collecting appdirs==1.4.4 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 1))
2025/02/06 10:30:43	  Downloading appdirs-1.4.4-py2.py3-none-any.whl.metadata (9.0 kB)
2025/02/06 10:30:44	Collecting arrow==1.3.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 2))
2025/02/06 10:30:44	  Downloading arrow-1.3.0-py3-none-any.whl.metadata (7.5 kB)
2025/02/06 10:30:45	Collecting attrs==25.1.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 3))
2025/02/06 10:30:46	  Downloading attrs-25.1.0-py3-none-any.whl.metadata (10 kB)
2025/02/06 10:30:47	Processing /volume1/@appstore/borgbackup/share/wheelhouse/borgbackup-1.4.0-cp312-cp312-linux_x86_64.whl (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 4))
2025/02/06 10:30:48	Collecting borgmatic==1.9.8 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 5))
2025/02/06 10:30:48	  Downloading borgmatic-1.9.8-py3-none-any.whl.metadata (9.0 kB)
2025/02/06 10:30:50	Collecting charset-normalizer==3.4.1 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 6))
2025/02/06 10:30:50	  Downloading charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)
2025/02/06 10:30:51	Processing /volume1/@appstore/borgbackup/share/wheelhouse/docopt-0.6.2-py2.py3-none-any.whl (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 7))
2025/02/06 10:30:52	Collecting emborg==1.41 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 8))
2025/02/06 10:30:52	  Downloading emborg-1.41-py3-none-any.whl.metadata (3.2 kB)
2025/02/06 10:30:53	Collecting idna==3.10 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 9))
2025/02/06 10:30:53	  Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
2025/02/06 10:30:55	Collecting inform==1.33 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 10))
2025/02/06 10:30:55	  Downloading inform-1.33-py3-none-any.whl.metadata (11 kB)
2025/02/06 10:30:57	Collecting jsonschema-specifications==2024.10.1 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 11))
2025/02/06 10:30:57	  Downloading jsonschema_specifications-2024.10.1-py3-none-any.whl.metadata (3.0 kB)
2025/02/06 10:30:58	Collecting jsonschema==4.23.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 12))
2025/02/06 10:30:58	  Downloading jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB)
2025/02/06 10:30:59	Processing /volume1/@appstore/borgbackup/share/wheelhouse/llfuse-1.5.1-cp312-cp312-linux_x86_64.whl (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 13))
2025/02/06 10:31:00	Collecting msgpack==1.1.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 14))
2025/02/06 10:31:00	  Downloading msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.4 kB)
2025/02/06 10:31:01	Collecting nestedtext==3.7 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 15))
2025/02/06 10:31:02	  Downloading nestedtext-3.7-py3-none-any.whl.metadata (9.3 kB)
2025/02/06 10:31:03	Collecting packaging==24.2 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 16))
2025/02/06 10:31:03	  Downloading packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
2025/02/06 10:31:04	Collecting python-dateutil==2.9.0.post0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 17))
2025/02/06 10:31:04	  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2025/02/06 10:31:05	Collecting quantiphy==2.20 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 18))
2025/02/06 10:31:05	  Downloading quantiphy-2.20-py3-none-any.whl.metadata (7.7 kB)
2025/02/06 10:31:07	Collecting referencing==0.36.2 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 19))
2025/02/06 10:31:07	  Downloading referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)
2025/02/06 10:31:08	Collecting requests==2.32.3 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 20))
2025/02/06 10:31:08	  Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
2025/02/06 10:31:12	Collecting rpds-py==0.22.3 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 21))
2025/02/06 10:31:12	  Downloading rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)
2025/02/06 10:31:13	Collecting ruamel.yaml.clib==0.2.12 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 22))
2025/02/06 10:31:14	  Downloading ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.7 kB)
2025/02/06 10:31:16	Collecting ruamel.yaml==0.18.10 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 23))
2025/02/06 10:31:16	  Downloading ruamel.yaml-0.18.10-py3-none-any.whl.metadata (23 kB)
2025/02/06 10:31:18	Collecting types-python-dateutil==2.9.0.20241206 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 24))
2025/02/06 10:31:18	  Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl.metadata (2.1 kB)
2025/02/06 10:31:19	Collecting typing_extensions==4.12.2 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 25))
2025/02/06 10:31:19	  Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
2025/02/06 10:31:20	Collecting urllib3==2.3.0 (from -r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 26))
2025/02/06 10:31:21	  Downloading urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)
2025/02/06 10:31:22	Collecting six (from inform==1.33->-r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 10))
2025/02/06 10:31:22	  Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
2025/02/06 10:31:24	Collecting certifi>=2017.4.17 (from requests==2.32.3->-r /volume1/@appstore/borgbackup/share/wheelhouse/requirements.txt (line 20))
2025/02/06 10:31:24	  Downloading certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)
2025/02/06 10:31:25	Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
2025/02/06 10:31:26	Downloading arrow-1.3.0-py3-none-any.whl (66 kB)
2025/02/06 10:31:26	Downloading attrs-25.1.0-py3-none-any.whl (63 kB)
2025/02/06 10:31:27	Downloading borgmatic-1.9.8-py3-none-any.whl (194 kB)
2025/02/06 10:31:28	Downloading charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (145 kB)
2025/02/06 10:31:29	Downloading emborg-1.41-py3-none-any.whl (79 kB)
2025/02/06 10:31:29	Downloading idna-3.10-py3-none-any.whl (70 kB)
2025/02/06 10:31:30	Downloading inform-1.33-py3-none-any.whl (41 kB)
2025/02/06 10:31:30	Downloading jsonschema_specifications-2024.10.1-py3-none-any.whl (18 kB)
2025/02/06 10:31:31	Downloading jsonschema-4.23.0-py3-none-any.whl (88 kB)
2025/02/06 10:31:31	Downloading msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (401 kB)
2025/02/06 10:31:32	Downloading nestedtext-3.7-py3-none-any.whl (28 kB)
2025/02/06 10:31:33	Downloading packaging-24.2-py3-none-any.whl (65 kB)
2025/02/06 10:31:33	Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2025/02/06 10:31:34	Downloading quantiphy-2.20-py3-none-any.whl (41 kB)
2025/02/06 10:31:35	Downloading referencing-0.36.2-py3-none-any.whl (26 kB)
2025/02/06 10:31:35	Downloading requests-2.32.3-py3-none-any.whl (64 kB)
2025/02/06 10:31:36	Downloading rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (385 kB)
2025/02/06 10:31:37	Downloading ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (754 kB)
2025/02/06 10:31:37	   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 754.1/754.1 kB 1.1 MB/s eta 0:00:00
2025/02/06 10:31:37	Downloading ruamel.yaml-0.18.10-py3-none-any.whl (117 kB)
2025/02/06 10:31:38	Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl (14 kB)
2025/02/06 10:31:39	Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
2025/02/06 10:31:39	Downloading urllib3-2.3.0-py3-none-any.whl (128 kB)
2025/02/06 10:31:40	Downloading certifi-2025.1.31-py3-none-any.whl (166 kB)
2025/02/06 10:31:41	Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
2025/02/06 10:31:42	Installing collected packages: docopt, appdirs, urllib3, typing_extensions, types-python-dateutil, six, ruamel.yaml.clib, rpds-py, quantiphy, packaging, msgpack, llfuse, idna, charset-normalizer, certifi, attrs, ruamel.yaml, requests, referencing, python-dateutil, borgbackup, jsonschema-specifications, arrow, jsonschema, inform, nestedtext, borgmatic, emborg
2025/02/06 10:31:45	  Attempting uninstall: six
2025/02/06 10:31:45	    Found existing installation: six 1.17.0
2025/02/06 10:31:45	    Not uninstalling six at /volume1/@appstore/python312/lib/python3.12/site-packages, outside environment /volume1/@appstore/borgbackup/env
2025/02/06 10:31:45	    Can't uninstall 'six'. No files were found to uninstall.
2025/02/06 10:31:51	  Attempting uninstall: certifi
2025/02/06 10:31:51	    Found existing installation: certifi 2024.12.14
2025/02/06 10:31:51	    Not uninstalling certifi at /volume1/@appstore/python312/lib/python3.12/site-packages, outside environment /volume1/@appstore/borgbackup/env
2025/02/06 10:31:51	    Can't uninstall 'certifi'. No files were found to uninstall.
2025/02/06 10:32:05	Successfully installed appdirs-1.4.4 arrow-1.3.0 attrs-25.1.0 borgbackup-1.4.0 borgmatic-1.9.8 certifi-2025.1.31 charset-normalizer-3.4.1 docopt-0.6.2 emborg-1.41 idna-3.10 inform-1.33 jsonschema-4.23.0 jsonschema-specifications-2024.10.1 llfuse-1.5.1 msgpack-1.1.0 nestedtext-3.7 packaging-24.2 python-dateutil-2.9.0.post0 quantiphy-2.20 referencing-0.36.2 requests-2.32.3 rpds-py-0.22.3 ruamel.yaml-0.18.10 ruamel.yaml.clib-0.2.12 six-1.17.0 types-python-dateutil-2.9.0.20241206 typing_extensions-4.12.2 urllib3-2.3.0
2025/02/06 10:32:05	Installed modules:
2025/02/06 10:32:07	appdirs==1.4.4
2025/02/06 10:32:07	arrow==1.3.0
2025/02/06 10:32:07	attrs==25.1.0
2025/02/06 10:32:07	borgbackup==1.4.0
2025/02/06 10:32:07	borgmatic==1.9.8
2025/02/06 10:32:07	certifi==2025.1.31
2025/02/06 10:32:07	charset-normalizer==3.4.1
2025/02/06 10:32:07	distlib==0.3.9
2025/02/06 10:32:07	docopt==0.6.2
2025/02/06 10:32:07	emborg==1.41
2025/02/06 10:32:07	filelock==3.17.0
2025/02/06 10:32:07	idna==3.10
2025/02/06 10:32:07	inform==1.33
2025/02/06 10:32:07	jsonschema==4.23.0
2025/02/06 10:32:07	jsonschema-specifications==2024.10.1
2025/02/06 10:32:07	llfuse==1.5.1
2025/02/06 10:32:07	msgpack==1.1.0
2025/02/06 10:32:07	nestedtext==3.7
2025/02/06 10:32:07	packaging==24.2
2025/02/06 10:32:07	platformdirs==4.3.6
2025/02/06 10:32:07	python-dateutil==2.9.0.post0
2025/02/06 10:32:07	quantiphy==2.20
2025/02/06 10:32:07	referencing==0.36.2
2025/02/06 10:32:07	requests==2.32.3
2025/02/06 10:32:07	rpds-py==0.22.3
2025/02/06 10:32:07	ruamel.yaml==0.18.10
2025/02/06 10:32:07	ruamel.yaml.clib==0.2.12
2025/02/06 10:32:07	setuptools==75.8.0
2025/02/06 10:32:07	six==1.17.0
2025/02/06 10:32:07	types-python-dateutil==2.9.0.20241206
2025/02/06 10:32:07	typing_extensions==4.12.2
2025/02/06 10:32:07	urllib3==2.3.0
2025/02/06 10:32:07	virtualenv==20.29.1
2025/02/06 10:32:07	wheel==0.45.1
2025/02/06 10:32:07	End service_postinst
2025/02/06 10:32:07	upgrade borgbackup 1.4.0-16 End postinst ret=[0]
2025/02/06 10:32:07	upgrade borgbackup 1.4.0-16 Begin postupgrade
2025/02/06 10:32:07	Begin initialize_variables
2025/02/06 10:32:07	End initialize_variables
2025/02/06 10:32:07	===> Step postupgrade. STATUS=UPGRADE USER= GROUP= SHARE_PATH=
2025/02/06 10:32:09	upgrade borgbackup 1.4.0-16 End postupgrade ret=[0]
2025/02/06 10:32:11	upgrade borgbackup 1.4.0-16 Begin start-stop-status start
2025/02/06 10:32:11	upgrade borgbackup 1.4.0-16 End start-stop-status start ret=[0]
2025/02/06 10:32:11	upgrade borgbackup 1.4.0-16 Begin /bin/rm -rf /volume1/@tmp/pkginstall
2025/02/06 10:32:11	upgrade borgbackup 1.4.0-16 End /bin/rm -rf /volume1/@tmp/pkginstall ret=[0]

There already appears to be a version 1.4.0-16 published
@mreid-tt
Copy link
Contributor Author

mreid-tt commented Feb 7, 2025

Hey @th0ma7, I’d appreciate your thoughts on the comments in the Makefile:

# Requirements file generation
# - first create borgbackup wheel defined in src/requirements-crossenv.txt
# cd src
# /spksrc/native/python311/work-native/install/usr/local/bin/python3 -m venv borg-env
# . borg-env/bin/activate
# pip install ../work-x64-6.1/install/var/packages/borgbackup/target/share/wheelhouse/borgbackup*.whl borgmatic emborg llfuse
# pip freeze > requirements.txt
# deactivate
# # evaluate which dependencies are cross wheels:
# find env/lib/python3.10/site-packages/ -name WHEEL -exec grep -iH pure {} \; | grep false
# # finally divide requirements into *-crossenv.txt and *-pure.txt

The current approach seems quite dependent on an existing build environment and might reinforce what's already in the repo instead of building directly from source. I’d like to suggest the following revision, which aligns with how I approached this PR:

# # Generate requirements file
# 
# # 1. Create a new virtual environment for Borg
# python3 -m venv borg-env
# . borg-env/bin/activate
# 
# # 2. Install core components from source
# pip install borgbackup borgmatic emborg llfuse
# 
# # 3. Freeze installed packages to requirements.txt
# pip freeze > requirements.txt
# deactivate
# 
# # 4. Identify non-pure (platform-specific) wheels
# find ./borg-env/lib/python3.12/site-packages/ -name WHEEL -exec grep -iH pure {} \; | grep false
# 
# # 5. Split requirements into *-crossenv.txt (platform-specific) and *-pure.txt (pure Python)

@hgy59
Copy link
Contributor

hgy59 commented Feb 7, 2025

@mreid-tt you can create the requirements files with native python only in the spksrc environment.

I use a script generate_requirements.sh that can be run in the src folder (or any sub folder) to create requirement files for the given wheels.

The output of this script is three files

  • generated_requirements_all.txt
  • generated_requirements_crossenv.txt
  • generated_requirements_pure.txt

When using native/python* only, you have to install additional dependencies into the dev environment (most python packages do not have such dependencies)

for borgbackup (with llfuse) install once (before running the script):

sudo apt-get update
sudo apt-get install liblz4-dev libzstd-dev libxxhash-dev acl-dev libfuse-dev

running for borg package using native/python312:

generate_requirements.sh "borgbackup borgmatic emborg llfuse" 312

creates the following files:

generated_requirements_all.txt
generated_requirements_crossenv.txt
generated_requirements_pure.txt

generate_requirements.sh is available as gist https://gist.github.com/hgy59/6676a55ea8b0b0264af7f23850f5e7c8

I use this script mainly for Homeassistant, which comes with a tree structure of requirement files for the many wheels.

@mreid-tt
Copy link
Contributor Author

mreid-tt commented Feb 7, 2025

@hgy59, thanks for sharing your script again and including the prerequisites. I realized I had forgotten to mention installing those as well, which I needed to do in my setup.

Your script is definitely easier to run, but as I mentioned earlier, I don’t have a local environment due to running on an ARM-based architecture, which isn’t compatible with spksrc. Because of that, many of the paths in your script aren’t available to me. That’s why I’ve resorted to running things manually — either in a VM or directly on my NAS. Typically (like with FlexGet and SABnzbd), I’d use a 'venv' on my NAS to simulate a similar environment. However, with Borg, since a compiler is required, I had to use an Ubuntu VM.

Interestingly, the output from my method matches the output of your script exactly, so I’m not entirely sure why you mentioned this can only be done in the spksrc environment. Here’s the raw log for reference:

Build Log
mreid@ubuntu-vm:~$ cd Documents/
mreid@ubuntu-vm:~/Documents$ python3 -m venv borg-env
mreid@ubuntu-vm:~/Documents$ . borg-env/bin/activate
(borg-env) mreid@ubuntu-vm:~/Documents$ pip install borgbackup borgmatic emborg llfuse
Collecting borgbackup
  Using cached borgbackup-1.4.0-cp312-cp312-linux_aarch64.whl
Collecting borgmatic
  Downloading borgmatic-1.9.9-py3-none-any.whl.metadata (9.0 kB)
Collecting emborg
  Using cached emborg-1.41-py3-none-any.whl.metadata (3.2 kB)
Collecting llfuse
  Using cached llfuse-1.5.1-cp312-cp312-linux_aarch64.whl
Collecting msgpack<=1.1.0,>=1.0.3 (from borgbackup)
  Using cached msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (8.4 kB)
Collecting packaging (from borgbackup)
  Using cached packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
Collecting jsonschema (from borgmatic)
  Using cached jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB)
Collecting requests (from borgmatic)
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting ruamel.yaml>0.15.0 (from borgmatic)
  Using cached ruamel.yaml-0.18.10-py3-none-any.whl.metadata (23 kB)
Collecting appdirs (from emborg)
  Using cached appdirs-1.4.4-py2.py3-none-any.whl.metadata (9.0 kB)
Collecting arrow (from emborg)
  Using cached arrow-1.3.0-py3-none-any.whl.metadata (7.5 kB)
Collecting docopt (from emborg)
  Using cached docopt-0.6.2-py2.py3-none-any.whl
Collecting inform>=1.31 (from emborg)
  Using cached inform-1.33-py3-none-any.whl.metadata (11 kB)
Collecting nestedtext (from emborg)
  Using cached nestedtext-3.7-py3-none-any.whl.metadata (9.3 kB)
Collecting quantiphy (from emborg)
  Using cached quantiphy-2.20-py3-none-any.whl.metadata (7.7 kB)
Collecting six (from inform>=1.31->emborg)
  Using cached six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting ruamel.yaml.clib>=0.2.7 (from ruamel.yaml>0.15.0->borgmatic)
  Using cached ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl.metadata (2.7 kB)
Collecting python-dateutil>=2.7.0 (from arrow->emborg)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting types-python-dateutil>=2.8.10 (from arrow->emborg)
  Using cached types_python_dateutil-2.9.0.20241206-py3-none-any.whl.metadata (2.1 kB)
Collecting attrs>=22.2.0 (from jsonschema->borgmatic)
  Using cached attrs-25.1.0-py3-none-any.whl.metadata (10 kB)
Collecting jsonschema-specifications>=2023.03.6 (from jsonschema->borgmatic)
  Using cached jsonschema_specifications-2024.10.1-py3-none-any.whl.metadata (3.0 kB)
Collecting referencing>=0.28.4 (from jsonschema->borgmatic)
  Using cached referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)
Collecting rpds-py>=0.7.1 (from jsonschema->borgmatic)
  Using cached rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (4.2 kB)
Collecting charset-normalizer<4,>=2 (from requests->borgmatic)
  Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (35 kB)
Collecting idna<4,>=2.5 (from requests->borgmatic)
  Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests->borgmatic)
  Using cached urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests->borgmatic)
  Using cached certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)
Collecting typing-extensions>=4.4.0 (from referencing>=0.28.4->jsonschema->borgmatic)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Downloading borgmatic-1.9.9-py3-none-any.whl (194 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 194.6/194.6 kB 1.2 MB/s eta 0:00:00
Using cached emborg-1.41-py3-none-any.whl (79 kB)
Using cached inform-1.33-py3-none-any.whl (41 kB)
Using cached msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (392 kB)
Using cached ruamel.yaml-0.18.10-py3-none-any.whl (117 kB)
Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Using cached arrow-1.3.0-py3-none-any.whl (66 kB)
Using cached jsonschema-4.23.0-py3-none-any.whl (88 kB)
Using cached nestedtext-3.7-py3-none-any.whl (28 kB)
Using cached packaging-24.2-py3-none-any.whl (65 kB)
Using cached quantiphy-2.20-py3-none-any.whl (41 kB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Using cached attrs-25.1.0-py3-none-any.whl (63 kB)
Using cached certifi-2025.1.31-py3-none-any.whl (166 kB)
Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (140 kB)
Using cached idna-3.10-py3-none-any.whl (70 kB)
Using cached jsonschema_specifications-2024.10.1-py3-none-any.whl (18 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached referencing-0.36.2-py3-none-any.whl (26 kB)
Using cached rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (384 kB)
Using cached ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl (647 kB)
Using cached six-1.17.0-py2.py3-none-any.whl (11 kB)
Using cached types_python_dateutil-2.9.0.20241206-py3-none-any.whl (14 kB)
Using cached urllib3-2.3.0-py3-none-any.whl (128 kB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Installing collected packages: docopt, appdirs, urllib3, typing-extensions, types-python-dateutil, six, ruamel.yaml.clib, rpds-py, quantiphy, packaging, msgpack, llfuse, idna, charset-normalizer, certifi, attrs, ruamel.yaml, requests, referencing, python-dateutil, borgbackup, jsonschema-specifications, arrow, jsonschema, inform, nestedtext, borgmatic, emborg
Successfully installed appdirs-1.4.4 arrow-1.3.0 attrs-25.1.0 borgbackup-1.4.0 borgmatic-1.9.9 certifi-2025.1.31 charset-normalizer-3.4.1 docopt-0.6.2 emborg-1.41 idna-3.10 inform-1.33 jsonschema-4.23.0 jsonschema-specifications-2024.10.1 llfuse-1.5.1 msgpack-1.1.0 nestedtext-3.7 packaging-24.2 python-dateutil-2.9.0.post0 quantiphy-2.20 referencing-0.36.2 requests-2.32.3 rpds-py-0.22.3 ruamel.yaml-0.18.10 ruamel.yaml.clib-0.2.12 six-1.17.0 types-python-dateutil-2.9.0.20241206 typing-extensions-4.12.2 urllib3-2.3.0
(borg-env) mreid@ubuntu-vm:~/Documents$ pip freeze
appdirs==1.4.4
arrow==1.3.0
attrs==25.1.0
borgbackup==1.4.0
borgmatic==1.9.9
certifi==2025.1.31
charset-normalizer==3.4.1
docopt==0.6.2
emborg==1.41
idna==3.10
inform==1.33
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
llfuse==1.5.1
msgpack==1.1.0
nestedtext==3.7
packaging==24.2
python-dateutil==2.9.0.post0
quantiphy==2.20
referencing==0.36.2
requests==2.32.3
rpds-py==0.22.3
ruamel.yaml==0.18.10
ruamel.yaml.clib==0.2.12
six==1.17.0
types-python-dateutil==2.9.0.20241206
typing_extensions==4.12.2
urllib3==2.3.0
(borg-env) mreid@ubuntu-vm:~/Documents$ find ./borg-env/lib/python3.12/site-packages/ -name WHEEL -exec grep -iH pure {} \; | grep false
./borg-env/lib/python3.12/site-packages/charset_normalizer-3.4.1.dist-info/WHEEL:Root-Is-Purelib: false
./borg-env/lib/python3.12/site-packages/rpds_py-0.22.3.dist-info/WHEEL:Root-Is-Purelib: false
./borg-env/lib/python3.12/site-packages/ruamel.yaml.clib-0.2.12.dist-info/WHEEL:Root-Is-Purelib: false
./borg-env/lib/python3.12/site-packages/msgpack-1.1.0.dist-info/WHEEL:Root-Is-Purelib: false
./borg-env/lib/python3.12/site-packages/llfuse-1.5.1.dist-info/WHEEL:Root-Is-Purelib: false
./borg-env/lib/python3.12/site-packages/borgbackup-1.4.0.dist-info/WHEEL:Root-Is-Purelib: false
(borg-env) mreid@ubuntu-vm:~/Documents$ 

I’d appreciate hearing your thoughts on this.

@hgy59
Copy link
Contributor

hgy59 commented Feb 7, 2025

this can only be done in the spksrc environment

The script uses python from ../../../native/python* (and it runs make for native python on demand), this is why it runs in spksrc context only.

Some wheels have python version dependent dependencies. With the native python variant it is easy to have parallel 311, 312 and 313 installations available.

@th0ma7
Copy link
Contributor

th0ma7 commented Feb 7, 2025

Sort of thinking out loud here.... in theory one could create a crossenv definition file specific for instance to borgbackup. Then when testing your build you comment out all your wheels and manually invoke make WHEEL_NAME="borgbackup" WHEEL_VERSION="x.y" crossenv-<arch>-<tcversion> ... If your crossent requirement definition is in the proper python3*/crossenv it would install that and produce a resulting wheel listing...

Maybe one could even pass along the REQUIREMENT="file" as well (I'd need to revisit the code to confirm). This way we could create a requirement definition file for each of our python apps, located within its own directory and simply update that as needed, testing it from crossenv, adjusting our final src/requirements files to match the versions and voila!

@hgy59
Copy link
Contributor

hgy59 commented Feb 7, 2025

Maybe one could even pass along the REQUIREMENT="file" as well (I'd need to revisit the code to confirm). This way we could create a requirement definition file for each of our python apps, located within its own directory and simply update that as needed, testing it from crossenv, adjusting our final src/requirements files to match the versions and voila!

interesting thoughts...
For the update of the requirements I like to avoid a crossenv and use temp env on the host.
This is much faster than building the spk/python3* and the crossenv

@th0ma7
Copy link
Contributor

th0ma7 commented Feb 7, 2025

Indeed faster, but testing from crossenv/cross would be a direct replication of the end result. Although this could also be true from crossenv/build where pip would use pre-built wheels, thus as fast as what you're using.

@mreid-tt
Copy link
Contributor Author

mreid-tt commented Feb 8, 2025

Hey @hgy59, I was able to use your script method by setting up a basic local environment in my VM, and it worked perfectly. This seems like a consistent approach for updating requirements in Python builds. However, I’ll still need to use GitHub for other builds, as the toolchains don't support ARM architectures.

I've attached the build log below for your reference.

Build Log
mreid@ubuntu-vm:~$ sudo apt update
[sudo] password for mreid: 
Hit:1 http://ports.ubuntu.com/ubuntu-ports noble InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease
Hit:3 http://ports.ubuntu.com/ubuntu-ports noble-backports InRelease
Hit:4 http://ports.ubuntu.com/ubuntu-ports noble-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
10 packages can be upgraded. Run 'apt list --upgradable' to see them.
mreid@ubuntu-vm:~$ cd Documents/
mreid@ubuntu-vm:~/Documents$ git clone https://github.com/SynoCommunity/spksrc.git
Cloning into 'spksrc'...
remote: Enumerating objects: 57047, done.
remote: Counting objects: 100% (2305/2305), done.
remote: Compressing objects: 100% (817/817), done.
remote: Total 57047 (delta 1627), reused 1519 (delta 1485), pack-reused 54742 (from 4)
Receiving objects: 100% (57047/57047), 71.48 MiB | 22.54 MiB/s, done.
Resolving deltas: 100% (27113/27113), done.
mreid@ubuntu-vm:~/Documents$ sudo apt-get install liblz4-dev libzstd-dev libxxhash-dev acl-dev libfuse-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'libacl1-dev' instead of 'acl-dev'
The following packages were automatically installed and are no longer required:
  linux-headers-6.8.0-50 linux-headers-6.8.0-50-generic
  linux-image-6.8.0-50-generic linux-modules-6.8.0-50-generic
  linux-modules-extra-6.8.0-50-generic linux-tools-6.8.0-50
  linux-tools-6.8.0-50-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libattr1-dev libfuse2t64 libpcre2-16-0 libpcre2-dev libpcre2-posix3
  libselinux1-dev libsepol-dev
The following NEW packages will be installed:
  libacl1-dev libattr1-dev libfuse-dev libfuse2t64 liblz4-dev libpcre2-16-0
  libpcre2-dev libpcre2-posix3 libselinux1-dev libsepol-dev libxxhash-dev
  libzstd-dev
0 upgraded, 12 newly installed, 0 to remove and 10 not upgraded.
Need to get 3,146 kB of archives.
After this operation, 14.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ports.ubuntu.com/ubuntu-ports noble/universe arm64 libfuse2t64 arm64 2.9.9-8.1build1 [89.9 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports noble/main arm64 libsepol-dev arm64 3.5-2build1 [395 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libpcre2-16-0 arm64 10.42-4ubuntu2.1 [196 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libpcre2-posix3 arm64 10.42-4ubuntu2.1 [6,604 B]
Get:5 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libpcre2-dev arm64 10.42-4ubuntu2.1 [680 kB]
Get:6 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libselinux1-dev arm64 3.5-2ubuntu2.1 [172 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports noble/universe arm64 libfuse-dev arm64 2.9.9-8.1build1 [992 kB]
Get:8 http://ports.ubuntu.com/ubuntu-ports noble/main arm64 libxxhash-dev arm64 0.8.2-2build1 [80.6 kB]
Get:9 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libzstd-dev arm64 1.5.5+dfsg2-2build1.1 [344 kB]
Get:10 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libattr1-dev arm64 1:2.5.2-1build1.1 [23.3 kB]
Get:11 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 libacl1-dev arm64 2.3.2-1build1.1 [78.8 kB]
Get:12 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 liblz4-dev arm64 1.9.4-1build1.1 [89.5 kB]
Fetched 3,146 kB in 3s (1,098 kB/s)                  
Selecting previously unselected package libfuse2t64:arm64.
(Reading database ... 296518 files and directories currently installed.)
Preparing to unpack .../00-libfuse2t64_2.9.9-8.1build1_arm64.deb ...
Unpacking libfuse2t64:arm64 (2.9.9-8.1build1) ...
Selecting previously unselected package libsepol-dev:arm64.
Preparing to unpack .../01-libsepol-dev_3.5-2build1_arm64.deb ...
Unpacking libsepol-dev:arm64 (3.5-2build1) ...
Selecting previously unselected package libpcre2-16-0:arm64.
Preparing to unpack .../02-libpcre2-16-0_10.42-4ubuntu2.1_arm64.deb ...
Unpacking libpcre2-16-0:arm64 (10.42-4ubuntu2.1) ...
Selecting previously unselected package libpcre2-posix3:arm64.
Preparing to unpack .../03-libpcre2-posix3_10.42-4ubuntu2.1_arm64.deb ...
Unpacking libpcre2-posix3:arm64 (10.42-4ubuntu2.1) ...
Selecting previously unselected package libpcre2-dev:arm64.
Preparing to unpack .../04-libpcre2-dev_10.42-4ubuntu2.1_arm64.deb ...
Unpacking libpcre2-dev:arm64 (10.42-4ubuntu2.1) ...
Selecting previously unselected package libselinux1-dev:arm64.
Preparing to unpack .../05-libselinux1-dev_3.5-2ubuntu2.1_arm64.deb ...
Unpacking libselinux1-dev:arm64 (3.5-2ubuntu2.1) ...
Selecting previously unselected package libfuse-dev:arm64.
Preparing to unpack .../06-libfuse-dev_2.9.9-8.1build1_arm64.deb ...
Unpacking libfuse-dev:arm64 (2.9.9-8.1build1) ...
Selecting previously unselected package libxxhash-dev:arm64.
Preparing to unpack .../07-libxxhash-dev_0.8.2-2build1_arm64.deb ...
Unpacking libxxhash-dev:arm64 (0.8.2-2build1) ...
Selecting previously unselected package libzstd-dev:arm64.
Preparing to unpack .../08-libzstd-dev_1.5.5+dfsg2-2build1.1_arm64.deb ...
Unpacking libzstd-dev:arm64 (1.5.5+dfsg2-2build1.1) ...
Selecting previously unselected package libattr1-dev:arm64.
Preparing to unpack .../09-libattr1-dev_1%3a2.5.2-1build1.1_arm64.deb ...
Unpacking libattr1-dev:arm64 (1:2.5.2-1build1.1) ...
Selecting previously unselected package libacl1-dev:arm64.
Preparing to unpack .../10-libacl1-dev_2.3.2-1build1.1_arm64.deb ...
Unpacking libacl1-dev:arm64 (2.3.2-1build1.1) ...
Selecting previously unselected package liblz4-dev:arm64.
Preparing to unpack .../11-liblz4-dev_1.9.4-1build1.1_arm64.deb ...
Unpacking liblz4-dev:arm64 (1.9.4-1build1.1) ...
Setting up libzstd-dev:arm64 (1.5.5+dfsg2-2build1.1) ...
Setting up libattr1-dev:arm64 (1:2.5.2-1build1.1) ...
Setting up libpcre2-16-0:arm64 (10.42-4ubuntu2.1) ...
Setting up liblz4-dev:arm64 (1.9.4-1build1.1) ...
Setting up libsepol-dev:arm64 (3.5-2build1) ...
Setting up libxxhash-dev:arm64 (0.8.2-2build1) ...
Setting up libpcre2-posix3:arm64 (10.42-4ubuntu2.1) ...
Setting up libfuse2t64:arm64 (2.9.9-8.1build1) ...
Setting up libacl1-dev:arm64 (2.3.2-1build1.1) ...
Setting up libpcre2-dev:arm64 (10.42-4ubuntu2.1) ...
Setting up libselinux1-dev:arm64 (3.5-2ubuntu2.1) ...
Setting up libfuse-dev:arm64 (2.9.9-8.1build1) ...
Processing triggers for libc-bin (2.39-0ubuntu8.4) ...
Processing triggers for man-db (2.12.0-4build2) ...
Scanning processes...                                                           
Scanning linux images...                                                        

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.
mreid@ubuntu-vm:~/Documents$ cd spksrc/
mreid@ubuntu-vm:~/Documents/spksrc$ cd spk/borgbackup/
mreid@ubuntu-vm:~/Documents/spksrc/spk/borgbackup$ curl https://gist.githubusercontent.com/hgy59/6676a55ea8b0b0264af7f23850f5e7c8/raw/8d0a3912069c746d1a1fb1d23ca9d650e2ec331d/generate_requirements.sh > generate_requirements.sh 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2118  100  2118    0     0   9393      0 --:--:-- --:--:-- --:--:--  9371
mreid@ubuntu-vm:~/Documents/spksrc/spk/borgbackup$ sudo chmod +x generate_requirements.sh 
mreid@ubuntu-vm:~/Documents/spksrc/spk/borgbackup$ ./generate_requirements.sh "borgbackup borgmatic emborg llfuse" 312
build native python in [../../native/python312].
make: Entering directory '/home/mreid/Documents/spksrc/native/python312'

[---snip---]

make[1]: Leaving directory '/home/mreid/Documents/spksrc/native/python312/work-native/Python-3.12.8'
===>  Installing pip
--2025-02-07 11:20:13--  https://bootstrap.pypa.io/get-pip.py
Resolving bootstrap.pypa.io (bootstrap.pypa.io)... 151.101.0.175, 151.101.64.175, 151.101.128.175, ...
Connecting to bootstrap.pypa.io (bootstrap.pypa.io)|151.101.0.175|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2300183 (2.2M) [text/x-python]
Saving to: ‘get-pip.py’

get-pip.py          100%[===================>]   2.19M  6.07MB/s    in 0.4s    

2025-02-07 11:20:14 (6.07 MB/s) - ‘get-pip.py’ saved [2300183/2300183]

Collecting pip==24.3.1
  Using cached pip-24.3.1-py3-none-any.whl.metadata (3.7 kB)
Using cached pip-24.3.1-py3-none-any.whl (1.8 MB)
Installing collected packages: pip
Successfully installed pip-24.3.1
===>  Installing setuptools, wheel, cffi and crossenv
Collecting setuptools==75.8.0
  Using cached setuptools-75.8.0-py3-none-any.whl.metadata (6.7 kB)
Collecting setuptools-rust==1.10.2
  Downloading setuptools_rust-1.10.2-py3-none-any.whl.metadata (9.2 kB)
Collecting maturin==1.8.1
  Downloading maturin-1.8.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl.metadata (16 kB)
Collecting wheel==0.45.1
  Downloading wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
Collecting cffi==1.17.1
  Using cached cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (1.5 kB)
Collecting crossenv==1.5.0
  Downloading crossenv-1.5.0-py3-none-any.whl.metadata (8.6 kB)
Collecting semantic-version<3,>=2.8.2 (from setuptools-rust==1.10.2)
  Downloading semantic_version-2.10.0-py2.py3-none-any.whl.metadata (9.7 kB)
Collecting pycparser (from cffi==1.17.1)
  Using cached pycparser-2.22-py3-none-any.whl.metadata (943 bytes)
Using cached setuptools-75.8.0-py3-none-any.whl (1.2 MB)
Downloading setuptools_rust-1.10.2-py3-none-any.whl (26 kB)
Downloading maturin-1.8.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl (7.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.4/7.4 MB 19.4 MB/s eta 0:00:00
Downloading wheel-0.45.1-py3-none-any.whl (72 kB)
Using cached cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (478 kB)
Downloading crossenv-1.5.0-py3-none-any.whl (30 kB)
Downloading semantic_version-2.10.0-py2.py3-none-any.whl (15 kB)
Using cached pycparser-2.22-py3-none-any.whl (117 kB)
Installing collected packages: wheel, setuptools, semantic-version, pycparser, maturin, crossenv, setuptools-rust, cffi
Successfully installed cffi-1.17.1 crossenv-1.5.0 maturin-1.8.1 pycparser-2.22 semantic-version-2.10.0 setuptools-75.8.0 setuptools-rust-1.10.2 wheel-0.45.1
find /home/mreid/Documents/spksrc/native/python312/work-native/install//usr/local// \! -type d -printf '%P\n' | sed 's?^target/??g' | sort | \
  diff /home/mreid/Documents/spksrc/native/python312/work-native/python312.plist.tmp -  | grep '>' | sed 's?> ??g' > /home/mreid/Documents/spksrc/native/python312/work-native/python312.plist
===>  Correcting pkg-config file lib/pkgconfig/python-3.12-embed.pc
===>  Correcting pkg-config file lib/pkgconfig/python-3.12.pc
===>  Correcting pkg-config file lib/pkgconfig/python3-embed.pc
===>  Correcting pkg-config file lib/pkgconfig/python3.pc
make: Leaving directory '/home/mreid/Documents/spksrc/native/python312'
python = /home/mreid/Documents/spksrc/native/python312/work-native/install/usr/local/bin/python3.12
create virtual env [_env]
install package [borgbackup borgmatic emborg llfuse]
Collecting borgbackup
  Downloading borgbackup-1.4.0.tar.gz (3.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 11.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting borgmatic
  Downloading borgmatic-1.9.9-py3-none-any.whl.metadata (9.0 kB)
Collecting emborg
  Downloading emborg-1.41-py3-none-any.whl.metadata (3.2 kB)
Collecting llfuse
  Downloading llfuse-1.5.1.tar.gz (959 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 959.6/959.6 kB 41.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting msgpack<=1.1.0,>=1.0.3 (from borgbackup)
  Using cached msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (8.4 kB)
Collecting packaging (from borgbackup)
  Using cached packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
Collecting jsonschema (from borgmatic)
  Using cached jsonschema-4.23.0-py3-none-any.whl.metadata (7.9 kB)
Collecting requests (from borgmatic)
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting ruamel.yaml>0.15.0 (from borgmatic)
  Downloading ruamel.yaml-0.18.10-py3-none-any.whl.metadata (23 kB)
Collecting appdirs (from emborg)
  Downloading appdirs-1.4.4-py2.py3-none-any.whl.metadata (9.0 kB)
Collecting arrow (from emborg)
  Downloading arrow-1.3.0-py3-none-any.whl.metadata (7.5 kB)
Collecting docopt (from emborg)
  Downloading docopt-0.6.2.tar.gz (25 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting inform>=1.31 (from emborg)
  Downloading inform-1.33-py3-none-any.whl.metadata (11 kB)
Collecting nestedtext (from emborg)
  Downloading nestedtext-3.7-py3-none-any.whl.metadata (9.3 kB)
Collecting quantiphy (from emborg)
  Downloading quantiphy-2.20-py3-none-any.whl.metadata (7.7 kB)
Collecting six (from inform>=1.31->emborg)
  Using cached six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting ruamel.yaml.clib>=0.2.7 (from ruamel.yaml>0.15.0->borgmatic)
  Downloading ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl.metadata (2.7 kB)
Collecting python-dateutil>=2.7.0 (from arrow->emborg)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting types-python-dateutil>=2.8.10 (from arrow->emborg)
  Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl.metadata (2.1 kB)
Collecting attrs>=22.2.0 (from jsonschema->borgmatic)
  Downloading attrs-25.1.0-py3-none-any.whl.metadata (10 kB)
Collecting jsonschema-specifications>=2023.03.6 (from jsonschema->borgmatic)
  Using cached jsonschema_specifications-2024.10.1-py3-none-any.whl.metadata (3.0 kB)
Collecting referencing>=0.28.4 (from jsonschema->borgmatic)
  Downloading referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)
Collecting rpds-py>=0.7.1 (from jsonschema->borgmatic)
  Downloading rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (4.2 kB)
Collecting charset-normalizer<4,>=2 (from requests->borgmatic)
  Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (35 kB)
Collecting idna<4,>=2.5 (from requests->borgmatic)
  Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests->borgmatic)
  Using cached urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests->borgmatic)
  Downloading certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)
Collecting typing-extensions>=4.4.0 (from referencing>=0.28.4->jsonschema->borgmatic)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Downloading borgmatic-1.9.9-py3-none-any.whl (194 kB)
Downloading emborg-1.41-py3-none-any.whl (79 kB)
Downloading inform-1.33-py3-none-any.whl (41 kB)
Using cached msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (392 kB)
Downloading ruamel.yaml-0.18.10-py3-none-any.whl (117 kB)
Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Downloading arrow-1.3.0-py3-none-any.whl (66 kB)
Using cached jsonschema-4.23.0-py3-none-any.whl (88 kB)
Downloading nestedtext-3.7-py3-none-any.whl (28 kB)
Using cached packaging-24.2-py3-none-any.whl (65 kB)
Downloading quantiphy-2.20-py3-none-any.whl (41 kB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Downloading attrs-25.1.0-py3-none-any.whl (63 kB)
Downloading certifi-2025.1.31-py3-none-any.whl (166 kB)
Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (140 kB)
Using cached idna-3.10-py3-none-any.whl (70 kB)
Using cached jsonschema_specifications-2024.10.1-py3-none-any.whl (18 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading referencing-0.36.2-py3-none-any.whl (26 kB)
Downloading rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (384 kB)
Downloading ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl (647 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 647.4/647.4 kB 34.7 MB/s eta 0:00:00
Using cached six-1.17.0-py2.py3-none-any.whl (11 kB)
Downloading types_python_dateutil-2.9.0.20241206-py3-none-any.whl (14 kB)
Using cached urllib3-2.3.0-py3-none-any.whl (128 kB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Building wheels for collected packages: borgbackup, llfuse, docopt
  Building wheel for borgbackup (pyproject.toml) ... done
  Created wheel for borgbackup: filename=borgbackup-1.4.0-cp312-cp312-linux_aarch64.whl size=3784897 sha256=3d20eef07402c894ce65f75fa9b77680b7adb839a3755ff3461a495cd6525b8e
  Stored in directory: /home/mreid/.cache/pip/wheels/8d/bc/90/75c20f255a5e63e6e7d74107fc1c8a9f0ffe225d9bb1c88d49
  Building wheel for llfuse (pyproject.toml) ... done
  Created wheel for llfuse: filename=llfuse-1.5.1-cp312-cp312-linux_aarch64.whl size=1338694 sha256=c43128cee88179cb20dc549c5c3561377e3bf23aa4f21979b3682d452468ed52
  Stored in directory: /home/mreid/.cache/pip/wheels/32/ca/63/812ad0f979232c1c97f62a32b7e76cd75a7e539520d6c49601
  Building wheel for docopt (pyproject.toml) ... done
  Created wheel for docopt: filename=docopt-0.6.2-py2.py3-none-any.whl size=13749 sha256=006b5a6db5120e8c0d26f1d5b8beac26176a37f232c1de2c53d0f530e596907c
  Stored in directory: /home/mreid/.cache/pip/wheels/1a/bf/a1/4cee4f7678c68c5875ca89eaccf460593539805c3906722228
Successfully built borgbackup llfuse docopt
Installing collected packages: docopt, appdirs, urllib3, typing-extensions, types-python-dateutil, six, ruamel.yaml.clib, rpds-py, quantiphy, packaging, msgpack, llfuse, idna, charset-normalizer, certifi, attrs, ruamel.yaml, requests, referencing, python-dateutil, borgbackup, jsonschema-specifications, arrow, jsonschema, inform, nestedtext, borgmatic, emborg
Successfully installed appdirs-1.4.4 arrow-1.3.0 attrs-25.1.0 borgbackup-1.4.0 borgmatic-1.9.9 certifi-2025.1.31 charset-normalizer-3.4.1 docopt-0.6.2 emborg-1.41 idna-3.10 inform-1.33 jsonschema-4.23.0 jsonschema-specifications-2024.10.1 llfuse-1.5.1 msgpack-1.1.0 nestedtext-3.7 packaging-24.2 python-dateutil-2.9.0.post0 quantiphy-2.20 referencing-0.36.2 requests-2.32.3 rpds-py-0.22.3 ruamel.yaml-0.18.10 ruamel.yaml.clib-0.2.12 six-1.17.0 types-python-dateutil-2.9.0.20241206 typing-extensions-4.12.2 urllib3-2.3.0

[notice] A new release of pip is available: 24.3.1 -> 25.0
[notice] To update, run: pip install --upgrade pip
create requirements files...
cleanup...
done.
mreid@ubuntu-vm:~/Documents/spksrc/spk/borgbackup$ 

Based on this success, the Makefile instructions could potentially be updated as follows:

# # Generate Requirements File
# 
# # 1. Set up the development environment
# # If you don't have an spksrc environment set up, run the following in your target folder:
# git clone https://github.com/SynoCommunity/spksrc.git
# 
# # 2. Install required dependencies for Borg
# sudo apt-get update
# sudo apt-get install build-essential liblz4-dev libzstd-dev libxxhash-dev acl-dev libfuse-dev
# 
# # 3. Prepare the requirements generation script
# cd spksrc/spk/borgbackup/
# curl -O https://gist.githubusercontent.com/hgy59/6676a55ea8b0b0264af7f23850f5e7c8/raw/8d0a3912069c746d1a1fb1d23ca9d650e2ec331d/generate_requirements.sh
# sudo chmod +x generate_requirements.sh
# 
# # 4. Generate the requirements file
# ./generate_requirements.sh "borgbackup borgmatic emborg llfuse" 312
# 
# # 5. Post-generation
# # The script will create three files (pure, cross, and combined) for the Borg deployment
# # with Python 3.12. Use the pure and cross requirement files as the base for your PR.

Let me know if you have any thoughts on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants