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