From 8ae5f8657b2bdf841bdf114b49839700c2ee924f Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 28 Sep 2018 14:22:24 -0400 Subject: [PATCH] change the dist name to 'openstack-heat' We are updating all Python projects to publish artifacts to PyPI. The name "heat" is already taken there by another project, and they have rejected our request to claim the name. We therefore need to change the dist name used to package heat. We have some other projects publishing using an "openstack-" prefix, so I propose using the name "openstack-heat". This will not change the imports or anything else about how the code works, just how it is packaged. Add a grenade plugin for upgrading between the packages with different names so that we can clean up the old version of the code and avoid discovering the heat plugins multiple times in different locations. Change-Id: I59b55cffd9e648f842eb286b936f09c5b55a76db Signed-off-by: Doug Hellmann --- devstack/upgrade/from-rocky/upgrade-heat | 55 +++++++++++++++++++ heat/version.py | 2 +- .../change-dist-name-288024b5d6668c01.yaml | 7 +++ setup.cfg | 2 +- tox.ini | 2 +- 5 files changed, 65 insertions(+), 3 deletions(-) create mode 100755 devstack/upgrade/from-rocky/upgrade-heat create mode 100644 releasenotes/notes/change-dist-name-288024b5d6668c01.yaml diff --git a/devstack/upgrade/from-rocky/upgrade-heat b/devstack/upgrade/from-rocky/upgrade-heat new file mode 100755 index 0000000000..e7ebce4b05 --- /dev/null +++ b/devstack/upgrade/from-rocky/upgrade-heat @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# ``upgrade-heat`` + +function configure_heat_upgrade { + local xtrace + xtrace=$(set +o | grep xtrace) + set -o xtrace + + # The dist name for heat changed in rocky from "heat" to + # "openstack-heat". Having the metadata for both packages + # installed causes our plugins to be listed twice, so we need to + # remove the old one before devstack installs the new one. + # Using pip to uninstall the old code doesn't seem to work, + # so this script works a bit more aggressively. These steps + # should not be necessary for deployments using standard + # system packages from distributions. + + local python_interpreter="python" + if python3_enabled; then + python_interpreter="python3" + fi + + local sys_path=$($python_interpreter -c 'import sys; print(" ".join(sys.path))') + local sys_path_dir + local egg_link + local easy_file + for sys_path_dir in $sys_path; do + # Installing something in editable mode creates an "egg link" + # file that points to the location of the source files and + # metadata. When we do the upgrades for projects that preserve + # their name, the existing file is modified to point to the + # new location. In this case, heat's name is changing so we + # end up with a new file using the new name and the old one is + # untouched. We need to remove it ourselves. + egg_link="$sys_path_dir/heat.egg-link" + if [ -e "$egg_link" ]; then + sudo rm -f "$egg_link" + fi + # Installing a directory in editable mode adds the directory + # to the .pth file that setuptools manages. When we do the + # upgrades for projects that preserve their name, the old + # entry is automatically replaced with the new one. In this + # case, heat's name is changing, so setuptools doesn't figure + # out that it should remove the old entry, and we have to do + # it ourselves. + easy_file=$sys_path_dir/easy-install.pth + if [ -f $easy_file ]; then + sudo sed --in-place '/old\/heat/d' $easy_file + fi + done + + ## reset to previous state + $xtrace +} diff --git a/heat/version.py b/heat/version.py index a8cd2d7dcf..13078b4400 100644 --- a/heat/version.py +++ b/heat/version.py @@ -14,4 +14,4 @@ import pbr.version -version_info = pbr.version.VersionInfo('heat') +version_info = pbr.version.VersionInfo('openstack-heat') diff --git a/releasenotes/notes/change-dist-name-288024b5d6668c01.yaml b/releasenotes/notes/change-dist-name-288024b5d6668c01.yaml new file mode 100644 index 0000000000..8925ce3697 --- /dev/null +++ b/releasenotes/notes/change-dist-name-288024b5d6668c01.yaml @@ -0,0 +1,7 @@ +--- +upgrade: + - | + The distribution name has been changed from "heat" to + "openstack-heat" so that we can publish packages to pypi.org. This + may have an effect on downstream package builds if they rely on + asking setuptools to determine the package name. diff --git a/setup.cfg b/setup.cfg index 21078c38f0..8a9935cfb6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [metadata] -name = heat +name = openstack-heat summary = OpenStack Orchestration description-file = README.rst diff --git a/tox.ini b/tox.ini index 4323011dc6..10f5174469 100644 --- a/tox.ini +++ b/tox.ini @@ -118,7 +118,7 @@ max-complexity=20 [doc8] ignore = D001 -ignore-path = .venv,.git,.tox,.tmp,*heat/locale*,*lib/python*,heat.egg*,doc/build,releasenotes/* +ignore-path = .venv,.git,.tox,.tmp,*heat/locale*,*lib/python*,openstack_heat.egg*,doc/build,releasenotes/* [hacking] import_exceptions = heat.common.i18n