Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Sep 2019 00:21:10 +0000 (UTC)
From:      Michael Gmelin <grembo@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r512299 - in head/sysutils/iocage: . files
Message-ID:  <201909190021.x8J0LARn004132@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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',



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909190021.x8J0LARn004132>