From owner-svn-ports-head@freebsd.org Thu Sep 19 00:21:11 2019 Return-Path: Delivered-To: svn-ports-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 90794EAE0D; Thu, 19 Sep 2019 00:21:11 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46Ycvq3L7Lz3xHY; Thu, 19 Sep 2019 00:21:11 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 56DFB50B5; Thu, 19 Sep 2019 00:21:11 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x8J0LB0u004135; Thu, 19 Sep 2019 00:21:11 GMT (envelope-from grembo@FreeBSD.org) Received: (from grembo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x8J0LARn004132; Thu, 19 Sep 2019 00:21:10 GMT (envelope-from grembo@FreeBSD.org) Message-Id: <201909190021.x8J0LARn004132@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: grembo set sender to grembo@FreeBSD.org using -f From: Michael Gmelin Date: Thu, 19 Sep 2019 00:21:10 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r512299 - in head/sysutils/iocage: . files X-SVN-Group: ports-head X-SVN-Commit-Author: grembo X-SVN-Commit-Paths: in head/sysutils/iocage: . files X-SVN-Commit-Revision: 512299 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Sep 2019 00:21:11 -0000 Author: grembo Date: Thu Sep 19 00:21:10 2019 New Revision: 512299 URL: https://svnweb.freebsd.org/changeset/ports/512299 Log: Fix `iocage upgrade' for 11.3-RELEASE and upcoming 12.1-RELEASE[0] Also: - Fix dependencies when upgrading <12 jails running on a 12-RELEASE jailhost (depend on `merge' from devel/rcs57). - Fix to unbreak updating multiple jails at once[1]. - Patch to `setup.py' to make `make check-plist' pass[2]. - Move `NO_ARCH' to make portlint happy See: [0]https://github.com/iocage/iocage/pull/1027 and https://github.com/iocage/iocage/commit/f66d9f0724daa03dc08cebc3f30b04abc7e97f82 [1]https://github.com/iocage/iocage/commit/47d7c28ad2db76eaba797921555bbf68a476eb9b#diff-134cbca4d064a61a693d1199494d24df [2]https://github.com/iocage/iocage/issues/1043 PR: 240177 Approved by: araujo (maintainer timeout) Added: head/sysutils/iocage/files/patch-iocage_lib-ioc_upgrade.py (contents, props changed) head/sysutils/iocage/files/patch-setup.py (contents, props changed) Modified: head/sysutils/iocage/Makefile Modified: head/sysutils/iocage/Makefile ============================================================================== --- head/sysutils/iocage/Makefile Thu Sep 19 00:08:47 2019 (r512298) +++ head/sysutils/iocage/Makefile Thu Sep 19 00:21:10 2019 (r512299) @@ -2,6 +2,7 @@ PORTNAME= iocage PORTVERSION= 1.1 +PORTREVISION= 1 CATEGORIES= sysutils python PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -22,12 +23,14 @@ RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}netifaces>0:net/py ${PYTHON_PKGNAMEPREFIX}requests>=2.11.1:www/py-requests@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}libzfs>=1.0.2:devel/py-libzfs@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}dulwich>0:devel/dulwich@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}dnspython>0:dns/py-dnspython@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}dnspython>0:dns/py-dnspython@${PY_FLAVOR} \ + merge:devel/rcs57 -NO_ARCH= yes USES= python:3.6+ USE_GITHUB= yes USE_PYTHON= autoplist distutils + +NO_ARCH= yes CONFLICTS= py27-iocage-[0-9]* Added: head/sysutils/iocage/files/patch-iocage_lib-ioc_upgrade.py ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/iocage/files/patch-iocage_lib-ioc_upgrade.py Thu Sep 19 00:21:10 2019 (r512299) @@ -0,0 +1,105 @@ +This patch can most likely be removed when updating to iocage 1.2, +See +https://github.com/iocage/iocage/pull/1027 and +https://github.com/iocage/iocage/commit/f66d9f0724daa03dc08cebc3f30b04abc7e97f82 +--- iocage_lib/ioc_upgrade.py.orig 2019-01-25 21:32:55 UTC ++++ iocage_lib/ioc_upgrade.py +@@ -24,6 +24,7 @@ + """iocage upgrade module""" + import datetime + import fileinput ++import hashlib + import os + import pathlib + import subprocess as su +@@ -80,9 +81,12 @@ class IOCUpgrade(iocage_lib.ioc_json.IOCZFS): + } + + self.callback = callback +- # Work around for https://github.com/freebsd/freebsd/commit/bffa924f +- os.environ['UNAME_r'] = self.jail_release + ++ # symbolic link created on fetch by freebsd-update ++ bd_hash = hashlib.sha256((self.path + '\n').encode('utf-8')).hexdigest() ++ self.freebsd_install_link = os.path.join(self.path, ++ 'var/db/freebsd-update', bd_hash + '-install') ++ + def upgrade_jail(self): + tmp_dataset = self.zfs_get_dataset_name('/tmp') + tmp_val = self.zfs_get_property(tmp_dataset, 'exec') +@@ -142,44 +146,26 @@ class IOCUpgrade(iocage_lib.ioc_json.IOCZFS): + callback=self.callback + ) + else: +- try: +- iocage_lib.ioc_exec.InteractiveExec( +- fetch_cmd, +- self.path.replace('/root', ''), +- uuid=self.uuid, +- unjailed=True +- ) +- except iocage_lib.ioc_exceptions.CommandFailed: +- self.__rollback_jail__() +- msg = f'Upgrade failed! Rolling back jail' ++ iocage_lib.ioc_exec.InteractiveExec( ++ fetch_cmd, ++ self.path.replace('/root', ''), ++ uuid=self.uuid, ++ unjailed=True ++ ) ++ ++ if not os.path.islink(self.freebsd_install_link): ++ msg = f'Upgrade failed, nothing to install after fetch!' + iocage_lib.ioc_common.logit( + { +- "level": "EXCEPTION", +- "message": msg ++ 'level': 'EXCEPTION', ++ 'message': msg + }, + _callback=self.callback, + silent=self.silent + ) + +- if not self.interactive: +- while not self.__upgrade_install__(tmp.name): +- pass +- else: +- # FreeBSD update loops 3 times +- for _ in range(3): +- try: +- self.__upgrade_install__(tmp.name) +- except iocage_lib.ioc_exceptions.CommandFailed: +- self.__rollback_jail__() +- msg = f'Upgrade failed! Rolling back jail' +- iocage_lib.ioc_common.logit( +- { +- 'level': 'EXCEPTION', +- 'message': msg +- }, +- _callback=self.callback, +- silent=self.silent +- ) ++ while os.path.islink(self.freebsd_install_link): ++ self.__upgrade_install__(tmp.name) + + new_release = iocage_lib.ioc_common.get_jail_freebsd_version( + self.path, +@@ -353,16 +339,10 @@ class IOCUpgrade(iocage_lib.ioc_json.IOCZFS): + unjailed=True, + callback=self.callback, + ) as _exec: +- update_output = iocage_lib.ioc_common.consume_and_log( ++ iocage_lib.ioc_common.consume_and_log( + _exec, + callback=self.callback + ) +- +- for i in update_output: +- if i == 'No updates are available to install.': +- return True +- +- return False + else: + iocage_lib.ioc_exec.InteractiveExec( + install_cmd, Added: head/sysutils/iocage/files/patch-setup.py ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/iocage/files/patch-setup.py Thu Sep 19 00:21:10 2019 (r512299) @@ -0,0 +1,50 @@ +See https://github.com/iocage/iocage/issues/1043 +--- setup.py.orig 2019-01-25 21:32:55 UTC ++++ setup.py +@@ -43,26 +43,26 @@ if sys.version_info < (3, 6): + + VERSION = '1.1' + +-setup( +- name='iocage_lib', +- version=VERSION, +- description='A jail manager that uses ZFS.', +- author='iocage Contributors', +- author_email='https://groups.google.com/forum/#!forum/iocage', +- url='https://github.com/iocage/iocage', +- packages=find_packages(), +- include_package_data=True, +- install_requires=[ +- 'dulwich>=0.18.6', +- 'netifaces>=0.10.8', +- 'dnspython>=1.15.0', +- 'libzfs' +- ], +- setup_requires=['pytest-runner'], +- entry_points={'console_scripts': ['iocage = iocage_lib:cli']}, +- data_files=_data, +- tests_require=['pytest', 'pytest-cov', 'pytest-pep8'] +-) ++#setup( ++# name='iocage_lib', ++# version=VERSION, ++# description='A jail manager that uses ZFS.', ++# author='iocage Contributors', ++# author_email='https://groups.google.com/forum/#!forum/iocage', ++# url='https://github.com/iocage/iocage', ++# packages=find_packages(), ++# include_package_data=True, ++# install_requires=[ ++# 'dulwich>=0.18.6', ++# 'netifaces>=0.10.8', ++# 'dnspython>=1.15.0', ++# 'libzfs' ++# ], ++# setup_requires=['pytest-runner'], ++# entry_points={'console_scripts': ['iocage = iocage_lib:cli']}, ++# data_files=_data, ++# tests_require=['pytest', 'pytest-cov', 'pytest-pep8'] ++#) + + setup( + name='iocage_cli',