diff --git a/sysutils/iocage/Makefile b/sysutils/iocage/Makefile index a851cb6c04e8..2adc4505e3c5 100644 --- a/sysutils/iocage/Makefile +++ b/sysutils/iocage/Makefile @@ -1,58 +1,57 @@ PORTNAME= iocage -PORTVERSION= 1.8 -PORTREVISION= 2 +PORTVERSION= 1.10 CATEGORIES= sysutils python PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} MAINTAINER= grembo@FreeBSD.org COMMENT= FreeBSD jail manager written in Python3 WWW= https://github.com/freebsd/iocage LICENSE= BSD2CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}netifaces>0:net/py-netifaces@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}click>=6.7:devel/py-click@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}six>=1.15.0:devel/py-six@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}coloredlogs>0:devel/py-coloredlogs@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}texttable>=0.8.7:textproc/py-texttable@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}requests>=2.11.1:www/py-requests@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dnspython>0:dns/py-dnspython@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}gitpython>0:devel/py-gitpython@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}jsonschema>0:devel/py-jsonschema@${PY_FLAVOR} TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libzfs>=1.0.2:filesystems/py-libzfs@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}mock>0:devel/py-mock@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytest4>0:devel/py-pytest4@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytest4-cov>0:devel/py-pytest4-cov@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytest-pep8>0:devel/py-pytest-pep8@${PY_FLAVOR} USES= python USE_GITHUB= yes GH_ACCOUNT= freebsd USE_PYTHON= autoplist distutils CONFLICTS= py*-iocage py*-iocage-devel NO_ARCH= yes PLIST_FILES= ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib-${PORTVERSION}-py${PYTHON_VER}.egg-info/PKG-INFO \ ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib-${PORTVERSION}-py${PYTHON_VER}.egg-info/SOURCES.txt \ ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib-${PORTVERSION}-py${PYTHON_VER}.egg-info/dependency_links.txt \ ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib-${PORTVERSION}-py${PYTHON_VER}.egg-info/entry_points.txt \ ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib-${PORTVERSION}-py${PYTHON_VER}.egg-info/requires.txt \ ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib-${PORTVERSION}-py${PYTHON_VER}.egg-info/top_level.txt \ ${PYTHONPREFIX_SITELIBDIR}/${PORTNAME}_lib/plugin_manifest.json OPTIONS_DEFAULT= GIT OPTIONS_RADIO= GIT_PACKAGE OPTIONS_RADIO_GIT_PACKAGE= GIT GIT_LITE GIT_DESC= depend on devel/git GIT_LITE_DESC= depend on lite flavor of devel/git (bare minimum git experience) GIT_RUN_DEPENDS=git:devel/git GIT_LITE_RUN_DEPENDS=git:devel/git@lite do-test: @cd ${WRKSRC} && ${PYTHON_CMD} -m pytest .include diff --git a/sysutils/iocage/distinfo b/sysutils/iocage/distinfo index 9db12abf93a0..e3c2da99c3c3 100644 --- a/sysutils/iocage/distinfo +++ b/sysutils/iocage/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1726817130 -SHA256 (freebsd-iocage-1.8_GH0.tar.gz) = 5fa7259ba1f48693d5ce5e3ce6f3bf2c06a4872e1a83497dff62949133353934 -SIZE (freebsd-iocage-1.8_GH0.tar.gz) = 758358 +TIMESTAMP = 1734695580 +SHA256 (freebsd-iocage-1.10_GH0.tar.gz) = 4e53137b1c91d964a560c38945acfb4a59e2c57162ebc9302b8b90639a1a71b5 +SIZE (freebsd-iocage-1.10_GH0.tar.gz) = 815548 diff --git a/sysutils/iocage/files/patch-iocage__lib_ioc__fetch.py b/sysutils/iocage/files/patch-iocage__lib_ioc__fetch.py deleted file mode 100644 index d5697b9205af..000000000000 --- a/sysutils/iocage/files/patch-iocage__lib_ioc__fetch.py +++ /dev/null @@ -1,41 +0,0 @@ ---- iocage_lib/ioc_fetch.py.orig 2024-09-20 06:45:27 UTC -+++ iocage_lib/ioc_fetch.py -@@ -47,6 +47,29 @@ import iocage_lib.ioc_start - from iocage_lib.pools import Pool - from iocage_lib.dataset import Dataset - -+# taken from tarfile.tar_filter (and _get_filtered_attrs) -+# basically the same, but **without**: -+# - Clear high mode bits (setuid, setgid, sticky) and -+# group/other write bits (S_IWGRP | S_IWOTH). -+def untar_release_filter(member, dest_path): -+ new_attrs = {} -+ name = member.name -+ dest_path = os.path.realpath(dest_path) -+ # Strip leading / (tar's directory separator) from filenames. -+ # Include os.sep (target OS directory separator) as well. -+ if name.startswith(('/', os.sep)): -+ name = new_attrs['name'] = member.path.lstrip('/' + os.sep) -+ if os.path.isabs(name): -+ # Path is absolute even after stripping. -+ # For example, 'C:/foo' on Windows. -+ raise tarfile.AbsolutePathError(member) -+ # Ensure we stay in the destination -+ target_path = os.path.realpath(os.path.join(dest_path, name)) -+ if os.path.commonpath([target_path, dest_path]) != dest_path: -+ raise tarfile.OutsideDestinationError(member, target_path) -+ if new_attrs: -+ return member.replace(**new_attrs, deep=False) -+ return member - - class IOCFetch: - -@@ -817,7 +840,7 @@ class IOCFetch: - # removing them first. - member = self.__fetch_extract_remove__(f) - member = self.__fetch_check_members__(member) -- f.extractall(dest, members=member) -+ f.extractall(dest, members=member, filter=untar_release_filter) - - def fetch_update(self, cli=False, uuid=None): - """This calls 'freebsd-update' to update the fetched RELEASE.""" diff --git a/sysutils/iocage/files/patch-iocage__lib_ioc__plugin.py b/sysutils/iocage/files/patch-iocage__lib_ioc__plugin.py deleted file mode 100644 index be9ee84d1e3f..000000000000 --- a/sysutils/iocage/files/patch-iocage__lib_ioc__plugin.py +++ /dev/null @@ -1,22 +0,0 @@ ---- iocage_lib/ioc_plugin.py.orig 2024-09-20 06:45:27 UTC -+++ iocage_lib/ioc_plugin.py -@@ -61,7 +61,10 @@ from iocage_lib.dataset import Dataset - GIT_LOCK = threading.Lock() - RE_PLUGIN_VERSION = re.compile(r'"path":"([/\.\+,\d\w-]*)\.txz"') - -+# deliberately crash if tarfile doesn't have required filter -+tarfile.tar_filter - -+ - class IOCPlugin(object): - - """ -@@ -157,7 +160,7 @@ class IOCPlugin(object): - shutil.copyfileobj(r.raw, f) - - with tarfile.open(packagesite_txz_path) as p_file: -- p_file.extractall(path=tmpdir) -+ p_file.extractall(path=tmpdir, filter='data') - - packagesite_path = os.path.join(tmpdir, 'packagesite.yaml') - if not os.path.exists(packagesite_path):