Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-glean for openSUSE:Factory checked in at 2021-08-29 21:34:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-glean (Old) and /work/SRC/openSUSE:Factory/.python-glean.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-glean" Sun Aug 29 21:34:00 2021 rev:9 rq:914856 version:1.19.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-glean/python-glean.changes 2021-02-07 15:24:14.666214620 +0100 +++ /work/SRC/openSUSE:Factory/.python-glean.new.1899/python-glean.changes 2021-08-29 21:34:14.390700371 +0200 @@ -1,0 +2,13 @@ +Wed Aug 25 10:08:30 UTC 2021 - John Paul Adrian Glaubitz <[email protected]> + +- Update to 1.19.0 + * Fix a typo in a log message + * Do not require external mock on Python 3 + * Add Python 3.6 to supported versions + * Allow disabling DHCP fallback + * Override NetworkManager to wait for udev-settle + * Reduce metadata read/parsing overhead + * Run glean fewer times in glean.sh +- Update homepage in URL field + +------------------------------------------------------------------- Old: ---- glean-1.18.2.tar.gz New: ---- glean-1.19.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-glean.spec ++++++ --- /var/tmp/diff_new_pack.yV85rs/_old 2021-08-29 21:34:14.846701003 +0200 +++ /var/tmp/diff_new_pack.yV85rs/_new 2021-08-29 21:34:14.846701003 +0200 @@ -18,12 +18,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-glean -Version: 1.18.2 +Version: 1.19.0 Release: 0 Summary: Program to write static config from config-drive License: Apache-2.0 Group: Development/Languages/Python -URL: https://www.openstack.org/ +URL: https://opendev.org/opendev/glean Source: https://files.pythonhosted.org/packages/source/g/glean/glean-%{version}.tar.gz BuildRequires: %{python_module pbr} BuildRequires: %{python_module setuptools} ++++++ glean-1.18.2.tar.gz -> glean-1.19.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/.zuul.yaml new/glean-1.19.0/.zuul.yaml --- old/glean-1.18.2/.zuul.yaml 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/.zuul.yaml 2021-04-27 05:42:24.000000000 +0200 @@ -2,6 +2,7 @@ templates: - openstack-python-jobs-no-constraints - openstack-python35-jobs-no-constraints + - openstack-python36-jobs-no-constraints check: jobs: - opendev-buildset-registry diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/ChangeLog new/glean-1.19.0/ChangeLog --- old/glean-1.18.2/ChangeLog 2021-01-08 18:35:07.000000000 +0100 +++ new/glean-1.19.0/ChangeLog 2021-04-27 05:42:52.000000000 +0200 @@ -1,6 +1,17 @@ CHANGES ======= +1.19.0 +------ + +* Fix a typo in a log message +* Do not require external mock on Python 3 +* Add Python 3.6 to supported versions +* Allow disabling DHCP fallback +* Override NetworkManager to wait for udev-settle +* Reduce metadata read/parsing overhead +* Run glean fewer times in glean.sh + 1.18.2 ------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/PKG-INFO new/glean-1.19.0/PKG-INFO --- old/glean-1.18.2/PKG-INFO 2021-01-08 18:35:08.050836600 +0100 +++ new/glean-1.19.0/PKG-INFO 2021-04-27 05:42:52.349374300 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: glean -Version: 1.18.2 +Version: 1.19.0 Summary: Simple program to write static config from config-drive Home-page: http://www.openstack.org/ Author: OpenStack @@ -144,3 +144,4 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/cmd.py new/glean-1.19.0/glean/cmd.py --- old/glean-1.18.2/glean/cmd.py 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/cmd.py 2021-04-27 05:42:24.000000000 +0200 @@ -310,6 +310,11 @@ if interface['type'] == 'manual': files_to_write.update( _write_rh_manual(interface_name, interface, args)) + + if args.no_dhcp_fallback: + log.debug('DHCP fallback disabled') + return files_to_write + for mac, iname in sorted( sys_interfaces.items(), key=lambda x: x[1]): if _exists_rh_interface(iname, args.distro): @@ -569,6 +574,9 @@ # We have a config drive config, move on log.debug("%s configured via config-drive" % mac) continue + if args.no_dhcp_fallback: + log.debug('DHCP fallback disabled') + continue interface = {'type': 'ipv4_dhcp', 'mac_address': mac} files_struct = _write_networkd_interface( iname, [interface], args, files_struct) @@ -731,7 +739,7 @@ _enable_gentoo_interface(interface_name) -def write_gentoo_interfaces(interfaces, sys_interfaces): +def write_gentoo_interfaces(interfaces, sys_interfaces, args): files_to_write = dict() gen_intfs = {} # Sort the interfaces by id so that we'll have consistent output order @@ -774,6 +782,10 @@ _write_gentoo_interface(interface_name, interfs)) _setup_gentoo_network_init(interface_name, interfs) + if args.no_dhcp_fallback: + log.debug('DHCP fallback disabled') + return files_to_write + for mac, iname in sorted( sys_interfaces.items(), key=lambda x: x[1]): if _exists_gentoo_interface(iname): @@ -812,7 +824,7 @@ return result -def write_debian_interfaces(interfaces, sys_interfaces): +def write_debian_interfaces(interfaces, sys_interfaces, args): eni_path = '/etc/network/interfaces' eni_d_path = eni_path + '.d' files_to_write = dict() @@ -924,6 +936,10 @@ sys_interfaces) files_to_write[iface_path] = result + if args.no_dhcp_fallback: + log.debug('DHCP fallback disabled') + return files_to_write + # Configure any interfaces not mentioned in the config drive data for DHCP. for mac, iname in sorted( sys_interfaces.items(), key=lambda x: x[1]): @@ -1069,14 +1085,14 @@ if args.distro in ('debian', 'ubuntu'): files_to_write.update( - write_debian_interfaces(interfaces, sys_interfaces)) + write_debian_interfaces(interfaces, sys_interfaces, args)) elif args.distro in ('redhat', 'centos', 'fedora') or \ _is_suse(args.distro): files_to_write.update( write_redhat_interfaces(interfaces, sys_interfaces, args)) elif args.distro in 'gentoo': files_to_write.update( - write_gentoo_interfaces(interfaces, sys_interfaces) + write_gentoo_interfaces(interfaces, sys_interfaces, args) ) elif args.distro in 'networkd': files_to_write.update( @@ -1344,13 +1360,13 @@ log.debug("Did not find vendor_data or network_info in config-drive") if not network_info: - log.debug("Found no network_info in config-drive! " - "Asusming DHCP interfaces") + log.debug("Found no network_info in config-drive! " + "Assuming DHCP interfaces") return network_info -def write_network_info_from_config_drive(args): +def write_network_info_from_config_drive(args, meta_data): """Write network info from config-drive. If there is no meta_data.json in config-drive, it means that there @@ -1363,13 +1379,6 @@ Returns False on any issue, which will cause the writing of DHCP network files. """ - - config_drive = os.path.join(args.root, 'mnt/config') - meta_data_path = '%s/openstack/latest/meta_data.json' % config_drive - meta_data = {} - if os.path.exists(meta_data_path): - meta_data = json.load(open(meta_data_path)) - network_info = get_network_info(args) dns = {} @@ -1388,20 +1397,15 @@ write_static_network_info(interfaces, sys_interfaces, dns, args) -def write_ssh_keys(args): +def write_ssh_keys(args, meta_data): """Write ssh-keys from config-drive. - If there is no meta_data.json in config-drive, it means that there - is no config drive mounted- which means we do nothing. - """ + If there is no 'public_keys' key in meta_data.json in + config-drive, it means that there is no config drive mounted- + which means we do nothing. - config_drive = os.path.join(args.root, 'mnt/config') + """ ssh_path = os.path.join(args.root, 'root/.ssh') - meta_data_path = '%s/openstack/latest/meta_data.json' % config_drive - if not os.path.exists(meta_data_path): - return 0 - - meta_data = json.load(open(meta_data_path)) if 'public_keys' not in meta_data: return 0 @@ -1432,16 +1436,10 @@ finish_files(files_to_write, args) -def set_hostname_from_config_drive(args): +def set_hostname_from_config_drive(args, meta_data): if args.noop: return - config_drive = os.path.join(args.root, 'mnt/config') - meta_data_path = '%s/openstack/latest/meta_data.json' % config_drive - if not os.path.exists(meta_data_path): - return - - meta_data = json.load(open(meta_data_path)) if 'name' not in meta_data: return @@ -1540,6 +1538,9 @@ parser.add_argument( '--debug', dest='debug', action='store_true', help="Enable debugging output") + parser.add_argument( + "--no-dhcp-fallback", action="store_true", + help="Do not fall back to DHCP") args = parser.parse_args(argv) if args.debug: @@ -1553,12 +1554,21 @@ "with" if args.use_nm else "without") with systemlock.Lock('/tmp/glean.lock'): + config_drive = os.path.join(args.root, 'mnt/config') + meta_data_path = '%s/openstack/latest/meta_data.json' % config_drive + if not os.path.exists(meta_data_path): + log.debug("No meta_data.json found") + meta_data = {} + else: + meta_data = json.load(open(meta_data_path)) + log.debug("metadata loaded from: %s" % meta_data_path) + if args.ssh: - write_ssh_keys(args) + write_ssh_keys(args, meta_data) if args.hostname: - set_hostname_from_config_drive(args) + set_hostname_from_config_drive(args, meta_data) if args.interface != 'lo' and not args.skip: - write_network_info_from_config_drive(args) + write_network_info_from_config_drive(args, meta_data) log.debug("Done!") return 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/glean-networkd.service new/glean-1.19.0/glean/init/glean-networkd.service --- old/glean-1.18.2/glean/init/glean-networkd.service 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/init/glean-networkd.service 2021-04-27 05:42:24.000000000 +0200 @@ -6,7 +6,7 @@ [Service] Type=oneshot User=root -ExecStart=%%GLEANSH_PATH%%/glean.sh --distro networkd +ExecStart=%%GLEANSH_PATH%%/glean.sh --distro networkd %%EXTRA_ARGS%% RemainAfterExit=true [Install] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/[email protected] new/glean-1.19.0/glean/init/[email protected] --- old/glean-1.18.2/glean/init/[email protected] 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/init/[email protected] 2021-04-27 05:42:24.000000000 +0200 @@ -13,7 +13,7 @@ Type=oneshot User=root Environment="ARGS=--interface %I" -ExecStart=%%GLEANSH_PATH%%/glean.sh --use-nm --debug $ARGS +ExecStart=%%GLEANSH_PATH%%/glean.sh --use-nm --debug $ARGS %%EXTRA_ARGS%% RemainAfterExit=true StandardOutput=journal+console diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/glean.conf new/glean-1.19.0/glean/init/glean.conf --- old/glean-1.18.2/glean/init/glean.conf 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/init/glean.conf 2021-04-27 05:42:24.000000000 +0200 @@ -11,4 +11,4 @@ task -exec /usr/local/bin/glean.sh +exec /usr/local/bin/glean.sh %%EXTRA_ARGS%% diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/glean.init new/glean-1.19.0/glean/init/glean.init --- old/glean-1.18.2/glean/init/glean.init 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/init/glean.init 2021-04-27 05:42:24.000000000 +0200 @@ -18,7 +18,7 @@ case "$1" in start) - $SCRIPT_NAME + $SCRIPT_NAME %%EXTRA_ARGS%% ;; stop) ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/glean.sh new/glean-1.19.0/glean/init/glean.sh --- old/glean-1.18.2/glean/init/glean.sh 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/init/glean.sh 2021-04-27 05:42:24.000000000 +0200 @@ -29,8 +29,12 @@ CONFIG_DRIVE_LABEL="CONFIG-2" fi -# Test to see if config-drive exists. If not, skip and assume DHCP networking -# will work because sanity +# If the config drive exists we update the ssh keys, hostname and network +# interfaces. Otherwise we only update network interfaces with a dhcp +# fallback. +# +# Note we want to run as few glean processes as possible to cut down on +# runtime in resource constrained environments. if [ -n "$CONFIG_DRIVE_LABEL" ]; then # Mount config drive mkdir -p /mnt/config @@ -43,7 +47,7 @@ else mount -o mode=0700 "${BLOCKDEV}" /mnt/config || true fi - glean --ssh --skip-network --hostname + glean --ssh --hostname $@ +else + glean $@ fi - -glean $@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/[email protected] new/glean-1.19.0/glean/init/[email protected] --- old/glean-1.18.2/glean/init/[email protected] 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/init/[email protected] 2021-04-27 05:42:24.000000000 +0200 @@ -15,7 +15,7 @@ Type=oneshot User=root Environment="ARGS=--interface %I" -ExecStartPre=%%GLEANSH_PATH%%/glean.sh ${ARGS} +ExecStartPre=%%GLEANSH_PATH%%/glean.sh ${ARGS} %%EXTRA_ARGS%% ExecStart=/sbin/ifup %I RemainAfterExit=true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/init/nm-udev-settle.override new/glean-1.19.0/glean/init/nm-udev-settle.override --- old/glean-1.18.2/glean/init/nm-udev-settle.override 1970-01-01 01:00:00.000000000 +0100 +++ new/glean-1.19.0/glean/init/nm-udev-settle.override 2021-04-27 05:42:24.000000000 +0200 @@ -0,0 +1,3 @@ +[Unit] +After=systemd-udev-settle.service +Wants=systemd-udev-settle.service diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/install.py new/glean-1.19.0/glean/install.py --- old/glean-1.18.2/glean/install.py 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/install.py 2021-04-27 05:42:24.000000000 +0200 @@ -85,9 +85,21 @@ action="store_true") parser.add_argument("-q", "--quiet", help="Be very quiet", action="store_true") + # NOTE(dtantsur): there may be two reasons to disable the fallback: + # 1) Remote edge deployments where DHCP (if present at all) is likely + # incorrect and should not be used. + # 2) Co-existing with another tool that handles DHCP differently (IPv6, + # SLAAC) or does a more sophisticated configuration (like NetworkManager + # or, in case of ironic-python-agent, dhcp-all-interfaces, which is **not** + # recommended, but is done nonetheless, mostly for legacy reasons). + parser.add_argument("--no-dhcp-fallback", action="store_true", + help="Do not fall back to DHCP. If this is on, " + "something else must configure networking or " + "it will be left unconfigured.") args = parser.parse_args() p = _find_gleansh_path() + extra_args = '--no-dhcp-fallback' if args.no_dhcp_fallback else '' if args.quiet: logging.basicConfig(level=logging.ERROR) @@ -98,7 +110,8 @@ if os.path.exists('/etc/gentoo-release'): log.info('installing openrc services') install('glean.openrc', '/etc/init.d/glean', - replacements={'GLEANSH_PATH': p}) + replacements={'GLEANSH_PATH': p, + 'EXTRA_ARGS': extra_args}) # Needs to check for the presence of systemd and systemctl # as apparently some packages may stage systemd init files # when systemd is not present. @@ -118,7 +131,8 @@ 'glean-networkd.service', '/lib/systemd/system/glean.service', mode='0644', - replacements={'GLEANSH_PATH': p}) + replacements={'GLEANSH_PATH': p, + 'EXTRA_ARGS': extra_args}) subprocess.call(['systemctl', 'enable', 'glean.service']) else: log.info("Installing %s NetworkManager support" % @@ -131,7 +145,8 @@ service_file, '/usr/lib/systemd/system/[email protected]', mode='0644', - replacements={'GLEANSH_PATH': p}) + replacements={'GLEANSH_PATH': p, + 'EXTRA_ARGS': extra_args}) install( 'glean-udev.rules', '/etc/udev/rules.d/99-glean.rules', @@ -142,14 +157,33 @@ install('nm-no-resolv-handling.conf', '/etc/NetworkManager/conf.d/nm-no-resolv-handling.conf', mode='0644') + + # NetworkManager has a "after" network-pre, and + # glean@<interface> services have a "before". However, if + # udev has not yet triggered and started the glean + # service, which it seems can be quite common in a slow + # environment like a binary-translated nested-vm, systemd + # may think it is fine to start NetworkManager because + # network-pre has been reached with no blockers. Thus we + # override NetworkManager to wait for udev-settle, which + # should ensure the glean service has started; which will + # block network-pre until it finishes writing out the + # configs. + install( + 'nm-udev-settle.override', + '/etc/systemd/system/NetworkManager.service.d/override.conf', + mode='0644') + elif os.path.exists('/etc/init'): log.info("Installing upstart services") - install('glean.conf', '/etc/init/glean.conf') + install('glean.conf', '/etc/init/glean.conf', + replacements={'EXTRA_ARGS': extra_args}) elif os.path.exists('/sbin/rc-update'): subprocess.call(['rc-update', 'add', 'glean', 'boot']) else: log.info("Installing sysv services") - install('glean.init', '/etc/init.d/glean') + install('glean.init', '/etc/init.d/glean', + replacements={'EXTRA_ARGS': extra_args}) os.system('update-rc.d glean defaults') if __name__ == '__main__': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean/tests/test_glean.py new/glean-1.19.0/glean/tests/test_glean.py --- old/glean-1.18.2/glean/tests/test_glean.py 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/glean/tests/test_glean.py 2021-04-27 05:42:24.000000000 +0200 @@ -17,8 +17,11 @@ import functools import json import os +try: + from unittest import mock +except ImportError: + import mock -import mock from oslotest import base from testscenarios import load_tests_apply_scenarios as load_tests # noqa diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean.egg-info/PKG-INFO new/glean-1.19.0/glean.egg-info/PKG-INFO --- old/glean-1.18.2/glean.egg-info/PKG-INFO 2021-01-08 18:35:07.000000000 +0100 +++ new/glean-1.19.0/glean.egg-info/PKG-INFO 2021-04-27 05:42:52.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: glean -Version: 1.18.2 +Version: 1.19.0 Summary: Simple program to write static config from config-drive Home-page: http://www.openstack.org/ Author: OpenStack @@ -144,3 +144,4 @@ Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean.egg-info/SOURCES.txt new/glean-1.19.0/glean.egg-info/SOURCES.txt --- old/glean-1.18.2/glean.egg-info/SOURCES.txt 2021-01-08 18:35:08.000000000 +0100 +++ new/glean-1.19.0/glean.egg-info/SOURCES.txt 2021-04-27 05:42:52.000000000 +0200 @@ -41,6 +41,7 @@ glean/init/glean.sh glean/init/[email protected] glean/init/nm-no-resolv-handling.conf +glean/init/nm-udev-settle.override glean/tests/__init__.py glean/tests/test_glean.py glean/tests/fixtures/README.rst diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/glean.egg-info/pbr.json new/glean-1.19.0/glean.egg-info/pbr.json --- old/glean-1.18.2/glean.egg-info/pbr.json 2021-01-08 18:35:07.000000000 +0100 +++ new/glean-1.19.0/glean.egg-info/pbr.json 2021-04-27 05:42:52.000000000 +0200 @@ -1 +1 @@ -{"git_version": "8dc38e4", "is_release": true} \ No newline at end of file +{"git_version": "4ffa21d", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/setup.cfg new/glean-1.19.0/setup.cfg --- old/glean-1.18.2/setup.cfg 2021-01-08 18:35:08.050836600 +0100 +++ new/glean-1.19.0/setup.cfg 2021-04-27 05:42:52.349374300 +0200 @@ -17,6 +17,7 @@ Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 Programming Language :: Python :: 3.5 + Programming Language :: Python :: 3.6 [entry_points] console_scripts = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/test-requirements.txt new/glean-1.19.0/test-requirements.txt --- old/glean-1.18.2/test-requirements.txt 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/test-requirements.txt 2021-04-27 05:42:24.000000000 +0200 @@ -5,7 +5,7 @@ hacking>=0.9.2,<0.10 coverage>=3.6 -mock>=1.0 +mock>=1.0;python_version=='2.7' python-subunit sphinx!=1.6.6,!=1.6.7,<2.0.0;python_version=='2.7' sphinx!=1.6.6,!=1.6.7,!=2.1.0;python_version>='3.4' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/glean-1.18.2/tox.ini new/glean-1.19.0/tox.ini --- old/glean-1.18.2/tox.ini 2021-01-08 18:34:05.000000000 +0100 +++ new/glean-1.19.0/tox.ini 2021-04-27 05:42:24.000000000 +0200 @@ -1,6 +1,6 @@ [tox] minversion = 1.6 -envlist = py35,py27,pypy,pep8 +envlist = py36,py35,py27,pypy,pep8 skipsdist = True [testenv]
