diff --git a/.gitignore b/.gitignore
index 0d20b64..2a45ed7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
*.pyc
+.vscode
diff --git a/catkin_virtualenv/README.md b/catkin_virtualenv/README.md
new file mode 100644
index 0000000..188d8c8
--- /dev/null
+++ b/catkin_virtualenv/README.md
@@ -0,0 +1,69 @@
+## How UV Works
+
+### Use Case
+
+The main case for including a `UV` option in `catkin_virtualenv` is for hosts where a large number of virtual environments are created and those virtual environments share a sizeable number of identical packages.
+
+`UV` benefits this use case by deduplicating packages installed into each virtual environment
+
+### How it works
+The deduplication feature of UV works by creating a single shared hardlink farm, we will call this the `cache`. Each time we attempt to install a pip package into a `venv` the following is performed
+
+1. `UV` checks if the package is available in the `cache`
+2. If the package is not available then the package is downloaded and placed in the `cache`
+3. The package is available in the `cache` at this point.
+4. Instead of copying the package from the `cache` into the `venv` the package is hardlinked into the `venv`
+5. Because packages are hardlinked there a no issues one might find with symlinks. They are identical to files created by installing directly into the `venv`
+
+##### Hardlinking
+
+```
+Every file on the Linux filesystem starts with a single hard link. The link is between the filename and the actual data stored on the filesystem. Creating an additional hard link to a file means a few different things.
+
+When changes are made to one filename, the other reflects those changes. The permissions, link count, ownership, timestamps, and file content are the exact same. If the original file is deleted, the data still exists under the secondary hard link. The data is only removed from your drive when all links to the data have been removed. If you find two files with identical properties but are unsure if they are hard-linked, use the ls -i command to view the inode number. Files that are hard-linked together share the same inode number.
+
+```
+
+Ref : [Red Hat Hardlinks](https://www.redhat.com/sysadmin/linking-linux-explained)
+
+### How do I use it
+
+Use of `UV` is currently opt-in.
+To use it modify your `catkin_generate_virtualenv` to resemble the following
+
+```
+catkin_generate_virtualenv(
+ INPUT_REQUIREMENTS requirements.in
+ USE_UV TRUE
+ UV_CACHE /tmp/testing/uv/cache
+)
+
+```
+
+#### Configuration
+
+ #TODO Document OPTIONS
+
+ `UV` aims to be identical in usage to`Pip`, however there are configration differences. We do not allow mixing of `PIP` arguments with `UV` arguments.
+
+**Allowed**
+ ```
+ catkin_generate_virtualenv(
+ INPUT_REQUIREMENTS requirements.in
+ USE_UV TRUE
+ UV_CACHE /tmp/testing/uv/cache
+ EXTRA_UV_ARGS ....
+)
+
+ ```
+
+**Not Allowed**
+```
+ catkin_generate_virtualenv(
+ INPUT_REQUIREMENTS requirements.in
+ USE_UV TRUE
+ UV_CACHE /tmp/testing/uv/cache
+ EXTRA_PIP_ARGS ....
+)
+
+```
\ No newline at end of file
diff --git a/catkin_virtualenv/cmake/catkin_generate_virtualenv.cmake b/catkin_virtualenv/cmake/catkin_generate_virtualenv.cmake
index 09c3015..f9443d8 100644
--- a/catkin_virtualenv/cmake/catkin_generate_virtualenv.cmake
+++ b/catkin_virtualenv/cmake/catkin_generate_virtualenv.cmake
@@ -17,8 +17,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
function(catkin_generate_virtualenv)
- set(oneValueArgs PYTHON_VERSION PYTHON_INTERPRETER USE_SYSTEM_PACKAGES ISOLATE_REQUIREMENTS INPUT_REQUIREMENTS CHECK_VENV)
- set(multiValueArgs EXTRA_PIP_ARGS)
+ set(oneValueArgs PYTHON_VERSION PYTHON_INTERPRETER USE_SYSTEM_PACKAGES ISOLATE_REQUIREMENTS INPUT_REQUIREMENTS CHECK_VENV USE_UV UV_CACHE)
+ set(multiValueArgs EXTRA_PIP_ARGS EXTRA_UV_ARGS)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
### Handle argument defaults and deprecations
@@ -32,19 +32,64 @@ function(catkin_generate_virtualenv)
set(ARG_PYTHON_INTERPRETER "python3")
endif()
- if(NOT DEFINED ARG_USE_SYSTEM_PACKAGES OR ARG_USE_SYSTEM_PACKAGES)
- message(STATUS "Using system site packages")
- set(venv_args "--use-system-packages")
+
+
+ if(DEFINED ARG_USE_UV)
+ message(STATUS "USING UV")
+ set(use_uv "--use-uv")
+
+ if( ARG_ISOLATE_REQUIREMENTS )
+ message( FATAL_ERROR "You can use ISOLATE_REQUIREMENTS in conjunction with USE_UV" )
+ endif()
+
+ if(NOT DEFINED ARG_USE_UV_CACHE OR ARG_USE_UV_CACHE)
+ message(STATUS "Using uv cache")
+ set(use_uv_cache "--uv-cache")
+ endif()
+
+ if(NOT DEFINED ARG_UV_CACHE )
+ message(STATUS "Setting uv cache location to default")
+ set(uv_cache "/tmp/testing/uv/cache")
+ else()
+ message(STATUS "Setting uv cache location")
+ set(uv_cache "${ARG_UV_CACHE}")
+ endif()
+
+ message(STATUS "Clearing Venv args")
+ set(venv_args "")
+
+ if (NOT DEFINED ARG_EXTRA_UV_ARGS)
+ message(STATUS "Setting Extra UV Args")
+ set(ARG_EXTRA_UV_ARGS "")
+ endif()
+
+ else()
+
+ message(STATUS "NOT USING UV")
+
+ if(NOT DEFINED ARG_USE_SYSTEM_PACKAGES OR ARG_USE_SYSTEM_PACKAGES)
+ message(STATUS "Using system site packages")
+ set(venv_args "--use-system-packages")
+ endif()
+
+ if (NOT DEFINED ARG_EXTRA_PIP_ARGS)
+ set(ARG_EXTRA_PIP_ARGS "-qq" "--retries 10" "--timeout 30")
+ endif()
+
+ message(STATUS "Clearing UV Args")
+ set(use_uv "")
+ set(use_uv_cache "")
+ set(uv_cache "")
endif()
+
if(ARG_ISOLATE_REQUIREMENTS)
message(STATUS "Only using requirements from this catkin package")
set(lock_args "${lock_args} --no-deps")
endif()
- if (NOT DEFINED ARG_EXTRA_PIP_ARGS)
- set(ARG_EXTRA_PIP_ARGS "-qq" "--retries 10" "--timeout 30")
- endif()
+
+
# Convert CMake list to ' '-separated list
string(REPLACE ";" "\ " processed_pip_args "${ARG_EXTRA_PIP_ARGS}")
@@ -92,10 +137,13 @@ function(catkin_generate_virtualenv)
endif()
endforeach()
+
+
+
add_custom_command(COMMENT "Generate virtualenv in ${CMAKE_BINARY_DIR}/${venv_dir}"
OUTPUT ${CMAKE_BINARY_DIR}/${venv_dir}/bin/python
COMMAND ${CATKIN_ENV} rosrun catkin_virtualenv venv_init ${venv_dir}
- --python ${ARG_PYTHON_INTERPRETER} ${venv_args} --extra-pip-args ${processed_pip_args}
+ --python ${ARG_PYTHON_INTERPRETER} ${venv_args} --extra-pip-args ${processed_pip_args} ${use_uv} ${use_uv_cache} ${uv_cache}
)
if(DEFINED ARG_INPUT_REQUIREMENTS AND NOT package_requirements STREQUAL "")
@@ -114,7 +162,7 @@ function(catkin_generate_virtualenv)
add_custom_command(COMMENT "Install requirements to ${CMAKE_BINARY_DIR}/${venv_dir}"
OUTPUT ${CMAKE_BINARY_DIR}/${venv_dir}/bin/activate
COMMAND ${CATKIN_ENV} rosrun catkin_virtualenv venv_install ${venv_dir}
- --requirements ${requirements_list} --extra-pip-args ${processed_pip_args}
+ --requirements ${requirements_list} --extra-pip-args ${processed_pip_args} ${use_uv} ${use_uv_cache} ${uv_cache}
DEPENDS
${CMAKE_BINARY_DIR}/${venv_dir}/bin/python
${package_requirements}
@@ -154,13 +202,25 @@ function(catkin_generate_virtualenv)
if(CATKIN_ENABLE_TESTING AND NOT package_requirements STREQUAL "" AND (NOT DEFINED ARG_CHECK_VENV OR ARG_CHECK_VENV))
file(MAKE_DIRECTORY ${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME})
- catkin_run_tests_target("venv_check" "${PROJECT_NAME}-requirements" "venv_check-${PROJECT_NAME}-requirements.xml"
- COMMAND "${CATKIN_ENV} rosrun catkin_virtualenv venv_check ${venv_dir} --requirements ${package_requirements} \
- --extra-pip-args \"${processed_pip_args}\" \
- --xunit-output ${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}/venv_check-${PROJECT_NAME}-requirements.xml"
- DEPENDENCIES ${PROJECT_NAME}_generate_virtualenv
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- )
+ if(NOT DEFINED ARG_USE_UV)
+ catkin_run_tests_target("venv_check" "${PROJECT_NAME}-requirements" "venv_check-${PROJECT_NAME}-requirements.xml"
+ COMMAND "${CATKIN_ENV} rosrun catkin_virtualenv venv_check ${venv_dir} --requirements ${package_requirements} \
+ --extra-pip-args \"${processed_pip_args}\" \
+ --xunit-output ${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}/venv_check-${PROJECT_NAME}-requirements.xml"
+ DEPENDENCIES ${PROJECT_NAME}_generate_virtualenv
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ else()
+ message(STATUS "PackReq: ${package_requirements}")
+
+ catkin_run_tests_target("venv_check" "${PROJECT_NAME}-requirements" "venv_check-${PROJECT_NAME}-requirements.xml"
+ COMMAND "${CATKIN_ENV} rosrun catkin_virtualenv venv_check ${venv_dir} --requirements ${package_requirements} \
+ --use-uv \
+ --xunit-output ${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}/venv_check-${PROJECT_NAME}-requirements.xml"
+ DEPENDENCIES ${PROJECT_NAME}_generate_virtualenv
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ endif()
endif()
install(DIRECTORY ${CMAKE_BINARY_DIR}/install/${venv_dir}
diff --git a/catkin_virtualenv/requirements.in b/catkin_virtualenv/requirements.in
index ed36f7f..2247f3b 100644
--- a/catkin_virtualenv/requirements.in
+++ b/catkin_virtualenv/requirements.in
@@ -1,4 +1,6 @@
catkin-pkg
nose
+mock
rospkg
setproctitle
+uv
diff --git a/catkin_virtualenv/scripts/venv_check b/catkin_virtualenv/scripts/venv_check
index 3eb07ee..bca3790 100755
--- a/catkin_virtualenv/scripts/venv_check
+++ b/catkin_virtualenv/scripts/venv_check
@@ -21,56 +21,48 @@
import argparse
import inspect
import sys
+import typing
import xml.etree.ElementTree as ET
from catkin_virtualenv import configure_logging
from catkin_virtualenv.venv import Virtualenv
+from catkin_virtualenv.uvvenv import UVVirtualEnv
+from catkin_virtualenv.cli import _parse_check_args, _build_sanitized_extra_args, diff_check
+logger = configure_logging()
-if __name__ == '__main__':
- logger = configure_logging()
- parser = argparse.ArgumentParser(description=Virtualenv.install.__doc__)
- parser.add_argument(
- 'venv', help="Path of virtualenv to manage.")
- parser.add_argument(
- '--requirements', required=True, help="Requirements to check.")
- parser.add_argument(
- '--extra-pip-args', default='""', type=str, help="Extra pip args for install.")
- parser.add_argument(
- '--xunit-output', help="Destination where to write xunit output.")
+def main(argv: typing.Union[typing.List[str], None] = None) -> None:
- args = parser.parse_args()
+ args = _parse_check_args(argv)
- extra_pip_args = args.extra_pip_args[1:-1]
+ extra_pip_args = _build_sanitized_extra_args(args, False)
- venv = Virtualenv(args.venv)
- diff = venv.check(
- requirements=args.requirements,
- extra_pip_args=[arg for arg in extra_pip_args.split(" ") if arg != ""],
- )
+ diff = []
+ if args.use_uv:
+ diff = []
+ venv = UVVirtualEnv(args.venv)
+ diff = venv.check(requirements=args.requirements, extra_uv_args=args.extra_uv_args)
+ else:
+ venv = Virtualenv(args.venv)
+ diff = venv.check(
+ requirements=args.requirements,
+ extra_pip_args=extra_pip_args,
+ )
+ check_xunit(args, diff)
- if args.xunit_output:
- testsuite = ET.Element('testsuite', name="venv_check", tests="1", failures="1" if diff else "0", errors="0")
- testcase = ET.SubElement(testsuite, 'testcase', name="check_locked", classname="catkin_virtualenv.Venv")
- if diff:
- failure = ET.SubElement(testcase, 'failure', message="{} is not fully locked".format(args.requirements))
- message = inspect.cleandoc("""
- Consider defining INPUT_REQUIREMENTS to have catkin_virtualenv generate a lock file for this package.
- See https://github.com/locusrobotics/catkin_virtualenv/blob/master/README.md#locking-dependencies.
- The following changes would fully lock {requirements}:
- """.format(requirements=args.requirements))
- message += '\n' + '\n'.join(diff)
- failure.text = message
- else:
- success = ET.SubElement(testcase, 'success', message="{} is fully locked".format(args.requirements))
+def check_xunit(args: argparse.Namespace, diff: typing.List[str]):
- tree = ET.ElementTree(testsuite)
- tree.write(args.xunit_output, encoding='utf-8', xml_declaration=True)
+ if args.xunit_output:
+ diff_check(args.xunit_output, args.requirements, diff)
else:
if diff:
- logger.error("{} is not fully locked, see diff:\n{}".format(args.requirements, '\n'.join(diff)))
+ logger.error("{} is not fully locked, see diff:\n{}".format(args.requirements, "\n".join(diff)))
sys.exit(1)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/catkin_virtualenv/scripts/venv_init b/catkin_virtualenv/scripts/venv_init
index 65420c0..e95a470 100755
--- a/catkin_virtualenv/scripts/venv_init
+++ b/catkin_virtualenv/scripts/venv_init
@@ -18,33 +18,31 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-import argparse
+import typing
from catkin_virtualenv import configure_logging
from catkin_virtualenv.venv import Virtualenv
+from catkin_virtualenv.cli import _parse_init_args, _build_sanitized_extra_args
+from catkin_virtualenv.uvvenv import UVVirtualEnv, PythonVersion
-if __name__ == '__main__':
+def main(argv: typing.Union[typing.List[str], None] = None) -> None:
configure_logging()
-
- parser = argparse.ArgumentParser(description=Virtualenv.initialize.__doc__)
- parser.add_argument(
- 'venv', help="Path where to initialize the virtualenv")
- parser.add_argument(
- '--python', default="python3", help="Build the virtualenv with which python version.")
- parser.add_argument(
- '--use-system-packages', action="store_true", help="Use system site packages.")
- parser.add_argument(
- '--extra-pip-args', default='""', type=str, help="Extra pip args for install.")
-
- args = parser.parse_args()
-
- extra_pip_args = args.extra_pip_args[1:-1]
-
- print(args.use_system_packages)
- venv = Virtualenv(args.venv)
- venv.initialize(
- python=args.python,
- use_system_packages=args.use_system_packages,
- extra_pip_args=[arg for arg in extra_pip_args.split(" ") if arg != ""],
- )
+ args = _parse_init_args(argv)
+
+ if not args.use_uv:
+ sanitized_extra_pip_args = _build_sanitized_extra_args(args, use_uv=False)
+ venv = Virtualenv(args.venv)
+ venv.initialize(
+ python=args.python,
+ use_system_packages=args.use_system_packages,
+ extra_pip_args=sanitized_extra_pip_args,
+ )
+ else:
+ sanitized_extra_uv_args = _build_sanitized_extra_args(args, use_uv=True)
+ uvvenv = UVVirtualEnv(args.venv, args.uv_cache)
+ uvvenv.initialize(python=PythonVersion(args.python), extra_pip_args=sanitized_extra_uv_args)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/catkin_virtualenv/scripts/venv_install b/catkin_virtualenv/scripts/venv_install
index 2b73ab3..568b89b 100755
--- a/catkin_virtualenv/scripts/venv_install
+++ b/catkin_virtualenv/scripts/venv_install
@@ -19,28 +19,30 @@
# along with this program. If not, see .
import argparse
+import typing
from catkin_virtualenv import configure_logging
+from catkin_virtualenv.cli import _parse_install_args, _build_sanitized_extra_args
from catkin_virtualenv.venv import Virtualenv
+from catkin_virtualenv.uvvenv import UVVirtualEnv, UvPackageInstallation
-if __name__ == '__main__':
+def main(argv: typing.Union[typing.List[str], None] = None) -> None:
configure_logging()
-
- parser = argparse.ArgumentParser(description=Virtualenv.install.__doc__)
- parser.add_argument(
- 'venv', help="Path of virtualenv to manage.")
- parser.add_argument(
- '--requirements', required=True, nargs='+', help="Requirements to sync to virtualenv.")
- parser.add_argument(
- '--extra-pip-args', default='""', type=str, help="Extra pip args for install.")
-
- args = parser.parse_args()
-
- extra_pip_args = args.extra_pip_args[1:-1]
-
- venv = Virtualenv(args.venv)
- venv.install(
- requirements=args.requirements,
- extra_pip_args=[arg for arg in extra_pip_args.split(" ") if arg != ""],
- )
+ args = _parse_install_args(argv)
+
+ if not args.use_uv:
+ sanitized_extra_pip_args = _build_sanitized_extra_args(args, use_uv=False)
+ venv = Virtualenv(args.venv)
+ venv.install(
+ requirements=args.requirements,
+ extra_pip_args=sanitized_extra_pip_args,
+ )
+ else:
+ sanitized_extra_uv_args = _build_sanitized_extra_args(args, use_uv=True)
+ uvvenv = UVVirtualEnv(args.venv, cache_dir=args.uv_cache)
+ uvvenv.install(UvPackageInstallation(args.requirements, extra_uv_args=sanitized_extra_uv_args))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/catkin_virtualenv/src/catkin_virtualenv/__init__.py b/catkin_virtualenv/src/catkin_virtualenv/__init__.py
index 0905a9e..fcb3e34 100644
--- a/catkin_virtualenv/src/catkin_virtualenv/__init__.py
+++ b/catkin_virtualenv/src/catkin_virtualenv/__init__.py
@@ -20,16 +20,18 @@
import logging
import subprocess
import rosgraph.roslogging
+import typing
+
logger = logging.getLogger(__name__)
def configure_logging():
- rosgraph.roslogging.configure_logging('catkin_virtualenv')
+ rosgraph.roslogging.configure_logging("catkin_virtualenv")
return logging.getLogger()
-def run_command(cmd, *args, **kwargs):
+def run_command(cmd: typing.List[str], *args, **kwargs) -> subprocess.CompletedProcess:
logger.info(" ".join(cmd))
if kwargs.pop("capture_output", False):
kwargs["stdout"] = subprocess.PIPE
diff --git a/catkin_virtualenv/src/catkin_virtualenv/cli.py b/catkin_virtualenv/src/catkin_virtualenv/cli.py
new file mode 100644
index 0000000..4f58bf8
--- /dev/null
+++ b/catkin_virtualenv/src/catkin_virtualenv/cli.py
@@ -0,0 +1,119 @@
+import argparse
+import typing
+
+from catkin_virtualenv.venv import Virtualenv
+import xml.etree.ElementTree as ET
+import inspect
+import pathlib
+
+EMPTY_TOKEN = '""'
+
+
+def diff_check(xunit_output: typing.Union[pathlib.Path, str], requirements: typing.Union[str, pathlib.Path], diff: str):
+
+ if not isinstance(xunit_output, pathlib.Path):
+ xunit_output = pathlib.Path(xunit_output)
+
+ if not isinstance(requirements, pathlib.Path):
+ requirements = pathlib.Path(requirements)
+
+ if xunit_output.exists() and not xunit_output.is_file():
+ raise RuntimeError(f"Xunit Output:{xunit_output} must be a regular file")
+
+ if requirements is None or not isinstance(requirements, pathlib.Path):
+ raise RuntimeError("Requirements must not be not none and must be a list")
+
+ if diff is None or not isinstance(diff, list):
+ raise RuntimeError("Diff must not be not none and must be a list")
+
+ testsuite = ET.Element("testsuite", name="venv_check", tests="1", failures="1" if diff else "0", errors="0")
+ testcase = ET.SubElement(testsuite, "testcase", name="check_locked", classname="catkin_virtualenv.Venv")
+ if diff:
+ failure = ET.SubElement(testcase, "failure", message="{} is not fully locked".format(requirements))
+ message = inspect.cleandoc(
+ """
+ Consider defining INPUT_REQUIREMENTS to have catkin_virtualenv generate a lock file for this package.
+ See https://github.com/locusrobotics/catkin_virtualenv/blob/master/README.md#locking-dependencies.
+ The following changes would fully lock {requirements}:
+ """.format(
+ requirements=requirements
+ )
+ )
+ message += "\n" + "\n".join(diff)
+ failure.text = message
+
+ else:
+ ET.SubElement(testcase, "success", message="{} is fully locked".format(requirements))
+
+ tree = ET.ElementTree(testsuite)
+ tree.write(str(xunit_output), encoding="utf-8", xml_declaration=True)
+
+
+def _build_sanitized_extra_args(args: argparse.Namespace, use_uv: bool) -> typing.List[str]:
+
+ if use_uv:
+ if args.extra_uv_args is None or args.extra_uv_args == EMPTY_TOKEN:
+ return []
+
+ extra_uv_args = args.extra_uv_args[1:-1]
+
+ return [arg for arg in extra_uv_args.split(" ") if arg != ""]
+
+ else:
+
+ if args.extra_pip_args is None or args.extra_pip_args == EMPTY_TOKEN:
+ return []
+
+ extra_pip_args = args.extra_pip_args[1:-1]
+
+ return [arg for arg in extra_pip_args.split(" ") if arg != ""]
+
+
+def _parse_init_args(argv: typing.Union[typing.List[str], None]) -> argparse.Namespace:
+ parser = argparse.ArgumentParser(description=Virtualenv.initialize.__doc__)
+ parser.add_argument("venv", help="Path where to initialize the virtualenv")
+ parser.add_argument("--python", default="python3", help="Build the virtualenv with which python version.")
+ parser.add_argument("--use-system-packages", action="store_true", help="Use system site packages.")
+ parser.add_argument("--use-uv", action="store_true", help="Use uv for deduplication.")
+ parser.add_argument("--uv-cache", default=None, help="Cache dir for UV.")
+ parser.add_argument("--extra-pip-args", default=EMPTY_TOKEN, type=str, help="Extra pip args for install.")
+ parser.add_argument("--extra-uv-args", default=EMPTY_TOKEN, type=str, help="Extra uv args for install.")
+
+ namespace = parser.parse_args(argv)
+
+ if namespace.use_system_packages and namespace.use_uv:
+ raise ValueError("Cannot set both '--use-system-packages' and '--use-uv' ")
+
+ if namespace.extra_pip_args != EMPTY_TOKEN and namespace.use_uv:
+ print(f"ExtraPipArgs:{namespace.extra_pip_args}")
+ raise ValueError(f"Cannot set both '--extra-pip-args' and '--use-uv' \n {namespace.extra_pip_args} ")
+
+ if namespace.extra_pip_args != EMPTY_TOKEN and namespace.extra_uv_args != EMPTY_TOKEN:
+ raise ValueError("Cannot set both '--extra-pip-args' and '--extra-uv-args' ")
+
+ return namespace
+
+
+def _parse_install_args(argv: typing.Union[typing.List[str], None]) -> argparse.Namespace:
+ parser = argparse.ArgumentParser(description=Virtualenv.install.__doc__)
+ parser.add_argument("venv", help="Path of virtualenv to manage.")
+ parser.add_argument("--use-uv", action="store_true", help="Use uv for deduplication.")
+ parser.add_argument("--uv-cache", default=None, help="Cache dir for UV.")
+ parser.add_argument("--requirements", required=True, nargs="+", help="Requirements to sync to virtualenv.")
+ parser.add_argument("--extra-pip-args", default='""', type=str, help="Extra pip args for install.")
+ parser.add_argument("--extra-uv-args", default='""', type=str, help="Extra uv args for install.")
+
+ return parser.parse_args(argv)
+
+
+def _parse_check_args(argv: typing.Union[typing.List[str], None]) -> argparse.Namespace:
+
+ parser = argparse.ArgumentParser(description=Virtualenv.install.__doc__)
+ parser.add_argument("venv", help="Path of virtualenv to manage.")
+ parser.add_argument("--use-uv", action="store_true", help="Use uv for deduplication.")
+ parser.add_argument("--requirements", required=True, help="Requirements to check.")
+ parser.add_argument("--extra-pip-args", default='""', type=str, help="Extra pip args for install.")
+ parser.add_argument("--extra-uv-args", default='""', type=str, help="Extra uv args for install.")
+ parser.add_argument("--xunit-output", help="Destination where to write xunit output.")
+
+ return parser.parse_args()
diff --git a/catkin_virtualenv/src/catkin_virtualenv/uvvenv.py b/catkin_virtualenv/src/catkin_virtualenv/uvvenv.py
new file mode 100644
index 0000000..e111a23
--- /dev/null
+++ b/catkin_virtualenv/src/catkin_virtualenv/uvvenv.py
@@ -0,0 +1,287 @@
+#!/usr/bin/env python
+# Software License Agreement (GPL)
+#
+# \file uvvenv.py
+# \authors Barrett Strausser
+# \copyright Copyright (c) (2017,), Locus Robotics, All rights reserved.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+from .venv import Virtualenv, _COMMENT_REGEX, _BYTECODE_REGEX
+import pathlib
+import typing
+import sys
+import re
+import shutil
+import dataclasses
+from distutils.spawn import find_executable
+import os
+import logging
+from . import run_command
+
+
+logger = logging.getLogger(__name__)
+
+
+@dataclasses.dataclass
+class PythonVersion:
+ version: str = "python3"
+
+ def __post_init__(self):
+
+ match = None
+ if self.version.startswith("python"):
+ ver = self.version.removeprefix("python")
+ if ver == "3":
+ match = True
+ else:
+ match = re.search("3\.[0-9]{1,3}", ver)
+
+ else:
+ match = re.search("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}", self.version)
+ if match is None:
+ raise ValueError("Not a python version or not a UV understood format")
+
+
+@dataclasses.dataclass
+class UVExecutable:
+ name: str
+
+
+@dataclasses.dataclass
+class UvPackageInstallation:
+ requirements: typing.List[pathlib.Path]
+ extra_pip_args: typing.List[str] = dataclasses.field(default_factory=lambda: [])
+ extra_uv_args: typing.List[str] = dataclasses.field(default_factory=lambda: [])
+
+
+def list_factory():
+ return []
+
+
+protected_paths = set([pathlib.Path("/"), pathlib.Path("/proc"), pathlib.Path("/sys")])
+
+
+def check_package_exists(venv_path: pathlib.Path, package_name: str, cache_dir: pathlib.Path = None) -> bool:
+ install_env = os.environ.copy()
+ install_env["VIRTUAL_ENV"] = str(venv_path).strip()
+ # "--cache-dir", str(cache_dir)
+ command = ["uv", "pip", "freeze"]
+ completed = run_command(command, check=True, capture_output=True, env=install_env)
+ return package_name in completed.stdout.decode()
+
+
+def check_package_importable():
+ pass
+
+
+def check_package_in_cache(cache_path: pathlib.Path, package_name: str) -> bool:
+ c1 = False
+ c2 = False
+ c3 = False
+
+ for filename in cache_path.glob("**/*"):
+ if filename.name == "CACHEDIR.TAG":
+ c1 = True
+ if filename.name == f"{package_name}.rkyv":
+ c2 = True
+ if filename.is_dir() and filename.name == package_name:
+ c3 = True
+ return c1 and c2 and c3
+
+
+class UVVirtualEnv(Virtualenv):
+ def __init__(self, path: typing.Union[str, pathlib.Path], cache_dir: typing.Union[str, pathlib.Path, None] = None):
+
+ self._cache_dir = None
+ if path is None or path == "":
+ raise RuntimeError("Path is empty")
+
+ if isinstance(path, str):
+ path = pathlib.Path(path)
+
+ self.path: pathlib.Path = path
+
+ if self.path in protected_paths:
+ raise RuntimeError(f"Cannot install into {self.path}")
+
+ self._uv_executable = find_executable("uv")
+ if self._uv_executable is None:
+ raise RuntimeError("UV must be installed")
+
+ self._venv_python: typing.Union[pathlib.Path, None] = None
+
+ if cache_dir is not None and cache_dir != "":
+ if isinstance(cache_dir, str):
+ cache_dir = pathlib.Path(cache_dir)
+ self._cache_dir = cache_dir
+
+ if self._cache_dir in protected_paths:
+ raise RuntimeError(f"Cannot cache into {self._cache_dir}")
+
+ def __eq__(self, other):
+ """Overrides the default implementation"""
+ if isinstance(other, UVVirtualEnv):
+ return self.path == other.path and self._cache_dir == other._cache_dir
+ return False
+
+ @property
+ def venv_python(self) -> pathlib.Path:
+ if not self._venv_python:
+ self._venv_python = pathlib.Path(self._venv_bin("python"))
+ return self.venv_python
+
+ def _sanitize_commands(self, cmd: typing.List[str]) -> typing.List[str]:
+ return [arg.strip() for arg in cmd if arg != "" and arg != None]
+
+ def _build_compile_command(self, requirements: typing.Union[str, pathlib.Path]):
+
+ if isinstance(requirements, pathlib.Path):
+ requirements = str(requirements)
+
+ return [
+ self._uv_executable,
+ "pip",
+ "compile",
+ "--no-header",
+ "--annotation-style",
+ "line",
+ requirements,
+ ]
+
+ def _set_venv_envar(self) -> dict[str, str]:
+ install_env = os.environ.copy()
+ install_env["VIRTUAL_ENV"] = self.path
+ print(self.path)
+ return install_env
+
+ # TODO remove pip args
+ def initialize(
+ self,
+ python: PythonVersion = PythonVersion("python3"),
+ extra_pip_args: typing.List[str] = list_factory(),
+ extra_uv_args: typing.List[str] = list_factory(),
+ clean=True,
+ ):
+ """Initialize a new uv virtualenv using the specified python version and extra arguments."""
+
+ """
+ This differs vrom the VirtualEnv class mainly in that the VirtualEnv class has to determine,
+ what python executable is being used and then whether/what pip is to be used inside that
+ particular python executable.
+
+ UV has only one binary. It does not require python to be installed an there is no separate
+ notion of pip. In other words, if UV is installed then you have everything you need to
+ create a venv
+
+ """
+
+ if clean:
+ try:
+ shutil.rmtree(self.path)
+ except OSError:
+ # Todo tighten up the handling
+ pass
+
+ # Todo run the actual command
+ # Evaluate whether we need preinstall
+ # The command needs to look like: uv venv /tmp/ve1 --python 3.10.12
+
+ cache_dir_arg = None
+ if self._cache_dir is not None:
+ cache_dir_arg = f"--cache-dir={self._cache_dir}"
+
+ command = (
+ [self._uv_executable, "venv", cache_dir_arg, str(self.path), "--python", python.version]
+ + extra_pip_args
+ + extra_uv_args
+ )
+ sanitized_command = self._sanitize_commands(command)
+ run_command(
+ sanitized_command,
+ check=True,
+ )
+
+ def install(self, installation: UvPackageInstallation):
+
+ cache_dir_arg = None
+ if self._cache_dir is not None:
+ cache_dir_arg = f"--cache-dir={self._cache_dir}"
+
+ command = (
+ [self._uv_executable, "pip", "install", cache_dir_arg, "--verbose"]
+ + installation.extra_pip_args
+ + installation.extra_uv_args
+ )
+
+ # https://github.com/astral-sh/uv?tab=readme-ov-file#python-discovery
+ #
+ install_env = self._set_venv_envar()
+ for requirements in installation.requirements:
+
+ sanitized_command = self._sanitize_commands(command + ["-r", str(requirements)])
+ run_command(sanitized_command, check=True, env=install_env)
+
+ def check(self, requirements: pathlib.Path, extra_uv_args: typing.List = None) -> typing.List[str]:
+ """Check if a set of requirements is completely locked."""
+ with open(requirements, "r") as f:
+ existing_requirements = f.read()
+
+ # Re-lock the requirements
+ command = self._build_compile_command(requirements)
+ # command += ["-o", "-"]
+
+ # TODO Check what UV supports
+ if False and extra_uv_args:
+ command += ["--pip-args", " ".join(extra_uv_args)]
+
+ install_env = self._set_venv_envar()
+ print(f"Running Command: {' '.join(command)}")
+ completed_process = run_command(command, check=False, capture_output=True, env=install_env)
+ if completed_process.returncode != 0:
+ raise RuntimeError(completed_process.stderr)
+ generated_requirements = completed_process.stdout.decode()
+ diff = self._diff_requirements(existing_requirements, generated_requirements)
+ return diff
+
+ def lock(
+ self,
+ package_name,
+ input_requirements: pathlib.Path,
+ no_overwrite: bool,
+ extra_pip_args: typing.List[str] = list_factory(),
+ test_output_requirements: pathlib.Path = None, # This is just here because of collect_requirements return value
+ ):
+ """
+ Create a frozen requirement set from a set of input specifications
+
+
+ Translates to CLI : uv pip compile requirements.in -o requirements.txt
+
+ """
+ output_requirements = self._get_output_requirements(package_name, input_requirements, no_overwrite)
+
+ command = self._build_compile_command(input_requirements)
+ if extra_pip_args:
+ command += ["--pip-args", " ".join(extra_pip_args)]
+
+ # TODO get rid of this once I understand the types of collect_requirements
+ output_requirements_path = output_requirements
+ if test_output_requirements is not None:
+ output_requirements_path = str(test_output_requirements)
+ command += ["-o", output_requirements_path]
+
+ run_command(command, check=True)
+
+ logger.info("Wrote new lock file to {}".format(output_requirements_path))
diff --git a/catkin_virtualenv/src/catkin_virtualenv/venv.py b/catkin_virtualenv/src/catkin_virtualenv/venv.py
index 2084b41..54ae5e6 100644
--- a/catkin_virtualenv/src/catkin_virtualenv/venv.py
+++ b/catkin_virtualenv/src/catkin_virtualenv/venv.py
@@ -25,7 +25,8 @@
import re
import shutil
import subprocess
-import tempfile
+import pathlib
+import typing
try:
from urllib.request import urlretrieve
@@ -116,17 +117,28 @@ def install(self, requirements, extra_pip_args):
for req in requirements:
run_command(command + ["-r", req], check=True)
- def check(self, requirements, extra_pip_args):
+ def check(self, requirements_in, extra_pip_args):
"""Check if a set of requirements is completely locked."""
- with open(requirements, "r") as f:
+ with open(requirements_in, "r") as f:
existing_requirements = f.read()
# Re-lock the requirements
- command = [self._venv_bin("pip-compile"), "--no-header", "--annotation-style", "line", requirements, "-o", "-"]
+ command = [
+ self._venv_bin("pip-compile"),
+ "--no-header",
+ "--annotation-style",
+ "line",
+ requirements_in,
+ "-o",
+ "-",
+ ]
if extra_pip_args:
command += ["--pip-args", " ".join(extra_pip_args)]
generated_requirements = run_command(command, check=True, capture_output=True).stdout.decode()
+ return self._diff_requirements(existing_requirements, generated_requirements)
+
+ def _diff_requirements(self, existing_requirements, generated_requirements) -> typing.List[str]:
def _format(content):
# Remove comments
@@ -140,11 +152,11 @@ def _format(content):
return content
# Compare against existing requirements
- diff = list(difflib.unified_diff(_format(existing_requirements), _format(generated_requirements)))
-
- return diff
+ existing_content = _format(existing_requirements)
+ generated_content = _format(generated_requirements)
+ return list(difflib.unified_diff(existing_content, generated_content))
- def lock(self, package_name, input_requirements, no_overwrite, extra_pip_args):
+ def _get_output_requirements(self, package_name, input_requirements, no_overwrite) -> pathlib.Path:
"""Create a frozen requirement set from a set of input specifications."""
try:
output_requirements = collect_requirements(package_name, no_deps=True)[0]
@@ -156,19 +168,22 @@ def lock(self, package_name, input_requirements, no_overwrite, extra_pip_args):
logger.info("Lock file already exists, not overwriting")
return
- pip_compile = self._venv_bin("pip-compile")
- command = [pip_compile, "--no-header", "--annotation-style", "line", input_requirements]
-
if os.path.normpath(input_requirements) == os.path.normpath(output_requirements):
raise RuntimeError(
"Trying to write locked requirements {} into a path specified as input: {}".format(
output_requirements, input_requirements
)
)
+ return output_requirements
+
+ def lock(self, package_name, input_requirements, no_overwrite, extra_pip_args):
+ output_requirements = self._get_output_requirements(package_name, input_requirements, no_overwrite)
if extra_pip_args:
command += ["--pip-args", " ".join(extra_pip_args)]
+ pip_compile = self._venv_bin("pip-compile")
+ command = [pip_compile, "--no-header", "--annotation-style", "line", input_requirements]
command += ["-o", output_requirements]
run_command(command, check=True)
diff --git a/catkin_virtualenv/test/test_catkin_uvvirtualenv.py b/catkin_virtualenv/test/test_catkin_uvvirtualenv.py
new file mode 100644
index 0000000..275f52a
--- /dev/null
+++ b/catkin_virtualenv/test/test_catkin_uvvirtualenv.py
@@ -0,0 +1,258 @@
+#!/usr/bin/env python
+# Software License Agreement (GPL)
+#
+# \file test_virtualenv_script
+# \authors Barrett Strausser
+# \copyright Copyright (c) (2017,), Locus Robotics, All rights reserved.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+import unittest
+
+from catkin_virtualenv.uvvenv import UVVirtualEnv, UvPackageInstallation, PythonVersion, check_package_in_cache
+from catkin_virtualenv import run_command
+import pathlib
+import mock
+import tempfile
+import uuid
+import shutil
+
+
+REQUIREMENTS_TXT = pathlib.Path(__file__).resolve().parent / "testdata" / "requirements.txt"
+REQUIREMENTS_IN = pathlib.Path(__file__).resolve().parent / "testdata" / "requirements.in"
+SECOND_REQUIREMENTS_TXT = pathlib.Path(__file__).resolve().parent / "testdata" / "second-requirements.txt"
+OTA_REQUIREMENTS_IN = pathlib.Path(__file__).resolve().parent / "testdata" / "ota-requirements.in"
+OTA_REQUIREMENTS_GOOD_TXT = pathlib.Path(__file__).resolve().parent / "testdata" / "ota-good-requirements.txt"
+OTA_REQUIREMENTS_BAD_TXT = pathlib.Path(__file__).resolve().parent / "testdata" / "ota-bad-requirements.txt"
+
+TMP_CATKIN_LOCUSVIRTUALENV = "catkin_locusvirtualenv"
+TMP_CATKIN_LOCUSVIRTUALENV_CACHE = "catkin_locusvirtualenv_cache_dir"
+
+EXISTING_REQUIREMENTS = "certifi==2022.12.7 # via requests\ncffi==1.15.1\ncharset-normalizer==3.1.0 # via requests\nidna==3.4 # via requests\npackaging==23.1\npycparser==2.21 # via cffi\nrequests==2.29.0\nurllib3==1.26.15 # via requests\n"
+GENERATED_REQUIREMENTS = "certifi==2022.12.7 # via requests\ncffi==1.15.1\ncharset-normalizer==3.1.0 # via requests\nidna==3.4 # via requests\npackaging==23.1\npycparser==2.21 # via cffi\nrequests==2.29.0\nurllib3==1.26.15 # via requests\n"
+BAD_GENERATED_REQUIREMENTS = "ncffi==1.15.1\ncharset-normalizer==3.1.0 # via requests\nidna==3.4 # via requests\npackaging==23.1\npycparser==2.21 # via cffi\nrequests==2.29.0\nurllib3==1.26.15 # via requests\n"
+
+
+class UVVirtualEnvTestCase(unittest.TestCase):
+ """
+ These test are not true unit tests.
+ Some tests require network access in order to download packages.
+ If network or package repositories are down, then tests may fail.
+
+ The tests also require disk access.
+ All tests use temporary files or directories for i/o.
+
+ """
+
+ def setUp(self) -> None:
+ self._venv_dir = pathlib.Path(tempfile.mkdtemp(suffix=TMP_CATKIN_LOCUSVIRTUALENV))
+ self._cache_path = pathlib.Path(tempfile.mkdtemp(suffix=TMP_CATKIN_LOCUSVIRTUALENV_CACHE))
+
+ self._first_venv_name = str(uuid.uuid4())
+ self._full_first_venv_path = self._venv_dir / self._first_venv_name
+ self._first_uv_venv = UVVirtualEnv(self._full_first_venv_path, self._cache_path)
+
+ self._second_venv_name = str(uuid.uuid4())
+ self._full_second_venv_path = self._venv_dir / self._second_venv_name
+ self._second_uv_venv = UVVirtualEnv(self._full_second_venv_path, self._cache_path)
+
+ if not REQUIREMENTS_TXT.exists():
+ raise RuntimeError("Requirements.txt not in expected location")
+
+ if not REQUIREMENTS_IN.exists():
+ raise RuntimeError("Requirements.in not in expected location")
+
+ if not SECOND_REQUIREMENTS_TXT.exists():
+ raise RuntimeError("Second-Requirements.txt not in expected location")
+
+ self._default_installation = UvPackageInstallation(requirements=[REQUIREMENTS_TXT])
+ self._second_installation = UvPackageInstallation(requirements=[SECOND_REQUIREMENTS_TXT])
+
+ return super().setUp()
+
+ def tearDown(self) -> None:
+
+ parent = pathlib.Path(self._venv_dir).parent
+ shutil.rmtree(self._venv_dir)
+
+ # The above will normally clean up directories
+ # Sometimes, mainly when debugging directories are leftover
+ # The below will clean up matching dir names
+ for file in parent.iterdir():
+ base_name = str(file.name)
+ c1 = file.is_dir()
+ c2 = TMP_CATKIN_LOCUSVIRTUALENV_CACHE in base_name
+ c3 = TMP_CATKIN_LOCUSVIRTUALENV in base_name
+ if c1 and (c2 or c3):
+ shutil.rmtree(file)
+
+ return super().tearDown()
+
+
+class TestUVVirtualenv(UVVirtualEnvTestCase):
+
+ def build_package_path(self, venv: UVVirtualEnv, package_name: str) -> pathlib.Path:
+
+ # TODO This is britle with respect to python version.
+ return venv.path / "lib/python3.10/site-packages" / package_name
+
+ def check_package_in_cache(self, package_name: str) -> bool:
+ """
+ Test that a given package is in the UV Cache
+ This will search the cache for the package name
+
+ """
+
+ self.assertTrue(check_package_in_cache(self._cache_path, package_name))
+
+ def test_sanity(self):
+ """
+ Test that we can create a UV Venv object
+ """
+ UVVirtualEnv(self._venv_dir)
+
+ def test_no_empty_paths(self):
+ """
+ Test that we must pass a valid path to create a UV Venv
+ """
+ with self.assertRaises(RuntimeError):
+ UVVirtualEnv("")
+
+ def test_no_null_paths(self):
+ """
+ Test that we must pass a valid path to create a UV Venv
+ """
+ with self.assertRaises(RuntimeError):
+ UVVirtualEnv(None)
+
+ def test_no_protected_paths(self):
+ """
+ Test that we must pass a valid path to create a UV Venv ( no special locations)
+ """
+ with self.assertRaises(RuntimeError):
+ UVVirtualEnv("/proc")
+
+ def test_equality_for_same_path(self):
+ """
+ Test that two Venvs are considered equal when based on the same path
+ """
+ self.assertEqual(UVVirtualEnv("/tmp/foo"), UVVirtualEnv("/tmp/foo"))
+
+ def test_inequality_for_same_path_but_different_cache(self):
+ """
+ Test that two Venvs are not considered equal when based on the same path but different cache
+ """
+ self.assertNotEqual(UVVirtualEnv("/tmp/foo", "/tmp/bar"), UVVirtualEnv("/tmp/foo", "/tmp/baz"))
+
+ def test_command_sanitization(self):
+ """
+ Test that command are sanitized.
+ Removes Nones and empty string
+ """
+
+ venv = UVVirtualEnv("/tmp/foo")
+ expected_result = ["foo", "bar", "baz"]
+ actual_result = venv._sanitize_commands(["foo", "bar", "", None, "", "baz"])
+ self.assertEqual(expected_result, actual_result)
+
+ def test_init(self):
+ """
+ Test that we can initialize a UV Venv given a valid path
+ This creates a UV Venv
+ """
+ self._first_uv_venv.initialize()
+ self.assertTrue(self._full_first_venv_path.exists)
+ python_executable_path = self._full_first_venv_path / "bin" / "python"
+ self.assertTrue(python_executable_path.exists())
+ self.assertTrue(python_executable_path.is_file())
+ self.assertTrue(python_executable_path.is_symlink())
+
+ def test_install(self):
+ """
+ Test that we can install packages into our venv.
+ Checks the path of the packages inside the Venv (not cache)
+ """
+ self._first_uv_venv.initialize()
+ self._first_uv_venv.install(self._default_installation)
+
+ self.assertTrue(self.build_package_path(self._first_uv_venv, "requests").exists())
+ self.assertFalse(self.build_package_path(self._first_uv_venv, "flask").exists())
+
+ def test_cache_is_populated(self):
+ """
+ Test that after we install that the package is inside the cache.
+ Checks the path of the packages inside the Cache (not venv)
+ """
+ self._first_uv_venv.initialize()
+ self._first_uv_venv.install(self._default_installation)
+ self.check_package_in_cache("requests")
+
+ def test_dual_install(self):
+ """
+ Test that we can create two different venvs
+ Checks the packages installed into the second do not affect the venv of the firsts (and vice versa)
+ """
+ self._first_uv_venv.initialize()
+ self._second_uv_venv.initialize()
+
+ self.assertNotEqual(self._first_uv_venv, self._second_uv_venv)
+
+ self._first_uv_venv.install(self._default_installation)
+ self._second_uv_venv.install(self._second_installation)
+
+ self.assertTrue(self.build_package_path(self._first_uv_venv, "requests").exists())
+ self.assertFalse(self.build_package_path(self._first_uv_venv, "flask").exists())
+
+ self.assertTrue(self.build_package_path(self._second_uv_venv, "flask").exists())
+ self.assertFalse(self.build_package_path(self._second_uv_venv, "requests").exists())
+
+ def test_can_check(self):
+ """
+ Test that we can lock the Venv
+ The mocked call to process_package will return a value that is not in our OTA_REQUIREMENTS_GOOD_TXT
+ """
+ self._first_uv_venv.initialize()
+ self._first_uv_venv.install(UvPackageInstallation(requirements=[OTA_REQUIREMENTS_GOOD_TXT]))
+ actual_good_diff = None
+ actual_bad_diff = None
+ with mock.patch("catkin_virtualenv.collect_requirements.process_package") as process_package_mock:
+ process_package_mock.return_value = (["pre-commit"], [])
+
+ actual_good_diff = self._first_uv_venv.check(OTA_REQUIREMENTS_GOOD_TXT)
+ actual_bad_diff = self._first_uv_venv.check(OTA_REQUIREMENTS_BAD_TXT)
+
+ self.assertIsNotNone(actual_good_diff)
+ self.assertEqual(len(actual_good_diff), 0)
+ self.assertGreater(len(actual_bad_diff), 0)
+
+ def test_diff_generation(self):
+ """
+ Test that our diff resolution works.
+ The calls to diff_requirements use pre-canned responses.
+ """
+ venv = UVVirtualEnv("/tmp/does/not/matter")
+ diff = venv._diff_requirements(EXISTING_REQUIREMENTS, GENERATED_REQUIREMENTS)
+ self.assertEqual(len(diff), 0)
+
+ bad_diff = venv._diff_requirements(EXISTING_REQUIREMENTS, BAD_GENERATED_REQUIREMENTS)
+ self.assertEqual(len(bad_diff), 11)
+
+ def test_python_version(self):
+ """
+ Test that we don't accept anything but python3 versions.
+ """
+ PythonVersion("python3")
+ PythonVersion("python3.10")
+ PythonVersion("3.10.12")
+ with self.assertRaises(ValueError):
+ PythonVersion("python2")
diff --git a/catkin_virtualenv/test/test_cli.py b/catkin_virtualenv/test/test_cli.py
new file mode 100644
index 0000000..40198f0
--- /dev/null
+++ b/catkin_virtualenv/test/test_cli.py
@@ -0,0 +1,150 @@
+from catkin_virtualenv.cli import (
+ _parse_init_args,
+ _build_sanitized_extra_args,
+ _parse_install_args,
+ diff_check,
+ _parse_check_args,
+)
+import unittest
+import tempfile
+import pathlib
+import shutil
+
+
+class TestBuildSanitizedExtraPipArgs(unittest.TestCase):
+
+ def test_parse_none(self):
+ args = _parse_init_args(["python3"])
+ result = _build_sanitized_extra_args(args, True)
+ self.assertEqual(result, [])
+
+ args = _parse_init_args(["python3"])
+ result = _build_sanitized_extra_args(args, False)
+ self.assertEqual(result, [])
+
+
+class TestInitArgs(unittest.TestCase):
+
+ def setUp(self) -> None:
+ self._venv_path = "/tmp/venv"
+ self._python_binary = "python3"
+ self._uv_cache = "/tmp/test/uv"
+ return super().setUp()
+
+ def test_parses_virtualenv_args(self):
+
+ args = _parse_init_args(
+ [
+ self._venv_path,
+ "--python",
+ self._python_binary,
+ ]
+ )
+ self.assertIsNotNone(args)
+ self.assertEqual(args.venv, self._venv_path)
+ self.assertEqual(args.python, self._python_binary)
+
+ def test_parses_virtualenv_system_packages(self):
+
+ args = _parse_init_args([self._venv_path, "--python", self._python_binary, "--use-system-packages"])
+ self.assertTrue(args.use_system_packages)
+
+ def test_no_uv(self):
+ args = _parse_init_args([self._python_binary])
+ self.assertFalse(args.use_uv)
+ self.assertIsNone(args.uv_cache)
+
+ def test_uv(self):
+
+ args = _parse_init_args(
+ [self._venv_path, "--python", self._python_binary, "--use-uv", "--uv-cache", self._uv_cache]
+ )
+ self.assertTrue(args.use_uv)
+ self.assertIsNotNone(args.uv_cache)
+ self.assertEqual(args.uv_cache, self._uv_cache)
+
+ def test_cannot_set_system_packages_and_uv(self):
+
+ with self.assertRaises(ValueError) as ve:
+ args = _parse_init_args(
+ [self._python_binary, "--use-system-packages", "--use-uv", "--uv-cache", self._uv_cache]
+ )
+
+ def test_cannot_set_pip_args_and_uv(self):
+
+ with self.assertRaises(ValueError) as ve:
+ args = _parse_init_args(
+ [
+ self._python_binary,
+ "--use-system-packages",
+ "--use-uv",
+ "--uv-cache",
+ self._uv_cache,
+ "--extra-pip-args",
+ "-qq 10",
+ ]
+ )
+
+
+class TestInstallArgs(unittest.TestCase):
+
+ def setUp(self) -> None:
+ self._venv_path = "/tmp/venv"
+ self._uv_cache = "/tmp/test/uv"
+ self._requirements = "/tmp/requirements.txt"
+ return super().setUp()
+
+ def test_parses_virtualenv_args(self):
+
+ args = _parse_install_args([self._venv_path, "--requirements", self._requirements])
+ self.assertIsNotNone(args)
+ self.assertEqual(args.venv, self._venv_path)
+
+ def test_no_uv(self):
+ args = _parse_install_args([self._venv_path, "--requirements", self._requirements])
+ self.assertFalse(args.use_uv)
+ self.assertIsNone(args.uv_cache)
+
+
+class TestCheckArgs(unittest.TestCase):
+
+ def setUp(self) -> None:
+ self._venv_path = "/tmp/venv"
+ self._requirements = "/tmp/requirements.txt"
+ return super().setUp()
+
+ def test_check_args(self):
+ _parse_check_args([self._venv_path, "--requirements", self._requirements])
+
+
+class TestDiffCheck(unittest.TestCase):
+
+ def setUp(self) -> None:
+ self._xunit_output = pathlib.Path(tempfile.mkdtemp()) / "xunit_output.xml"
+ return super().setUp()
+
+ def tearDown(self) -> None:
+ shutil.rmtree(self._xunit_output, ignore_errors=True)
+ return super().tearDown()
+
+ def test_diff(self):
+ diff_check(self._xunit_output, ["requests==2.2.2"], ["numpy==1.0.1"])
+
+ failure_found = False
+ numpy_found = False
+ requests_found = False
+ lines = []
+ with open(self._xunit_output, "r") as f:
+ lines = f.readlines()
+
+ for line in lines:
+ if 'failures="1"' in line:
+ failure_found = True
+ if "numpy==1.0.1" in line:
+ numpy_found = True
+ if "The following changes would fully lock ['requests==2.2.2']" in line:
+ requests_found = True
+
+ self.assertTrue(failure_found)
+ self.assertTrue(numpy_found)
+ self.assertTrue(requests_found)
diff --git a/catkin_virtualenv/test/testdata/diff-requirements.txt b/catkin_virtualenv/test/testdata/diff-requirements.txt
new file mode 100644
index 0000000..028eab1
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/diff-requirements.txt
@@ -0,0 +1 @@
+nats-py == 0.1.0
\ No newline at end of file
diff --git a/catkin_virtualenv/test/testdata/ota-bad-requirements.txt b/catkin_virtualenv/test/testdata/ota-bad-requirements.txt
new file mode 100644
index 0000000..82c1b07
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/ota-bad-requirements.txt
@@ -0,0 +1,3 @@
+aiohttp==3.9.3
+aiojobs==1.2.1
+redis==5.0.7 # Not included Causes Error
\ No newline at end of file
diff --git a/catkin_virtualenv/test/testdata/ota-good-requirements.txt b/catkin_virtualenv/test/testdata/ota-good-requirements.txt
new file mode 100644
index 0000000..790207d
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/ota-good-requirements.txt
@@ -0,0 +1,23 @@
+aiohttp==3.9.3
+aiojobs==1.2.1
+aiosignal==1.3.1 # via aiohttp
+async-timeout==4.0.3 # via aiohttp, aiojobs
+attrs==23.2.0 # via aiohttp
+certifi==2024.2.2 # via requests
+charset-normalizer==3.3.2 # via requests
+dataclasses==0.6
+deprecation==2.1.0 # via testcontainers
+docker==7.0.0 # via testcontainers
+frozenlist==1.4.1 # via aiohttp, aiosignal
+idna==3.6 # via requests, yarl
+jinja2==3.1.3
+markupsafe==2.1.5 # via jinja2
+mock==5.1.0
+multidict==6.0.5 # via aiohttp, yarl
+packaging==23.2 # via deprecation, docker
+requests==2.31.0 # via docker
+setproctitle==1.3.3
+testcontainers==3.7.1
+urllib3==2.2.1 # via docker, requests
+wrapt==1.16.0 # via testcontainers
+yarl==1.9.4 # via aiohttp
\ No newline at end of file
diff --git a/catkin_virtualenv/test/testdata/ota-requirements.in b/catkin_virtualenv/test/testdata/ota-requirements.in
new file mode 100644
index 0000000..2143b32
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/ota-requirements.in
@@ -0,0 +1,8 @@
+aiohttp
+aiojobs
+dataclasses
+requests
+Jinja2
+setproctitle
+testcontainers
+mock
\ No newline at end of file
diff --git a/catkin_virtualenv/test/testdata/requirements.in b/catkin_virtualenv/test/testdata/requirements.in
new file mode 100644
index 0000000..663bd1f
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/requirements.in
@@ -0,0 +1 @@
+requests
\ No newline at end of file
diff --git a/catkin_virtualenv/test/testdata/requirements.txt b/catkin_virtualenv/test/testdata/requirements.txt
new file mode 100644
index 0000000..43a6a5e
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/requirements.txt
@@ -0,0 +1,2 @@
+# This file cannot be changed without also changing the tests
+requests
\ No newline at end of file
diff --git a/catkin_virtualenv/test/testdata/second-requirements.txt b/catkin_virtualenv/test/testdata/second-requirements.txt
new file mode 100644
index 0000000..8ab6294
--- /dev/null
+++ b/catkin_virtualenv/test/testdata/second-requirements.txt
@@ -0,0 +1 @@
+flask
\ No newline at end of file
diff --git a/test_catkin_virtualenv_uv/CHANGELOG.rst b/test_catkin_virtualenv_uv/CHANGELOG.rst
new file mode 100644
index 0000000..30613a6
--- /dev/null
+++ b/test_catkin_virtualenv_uv/CHANGELOG.rst
@@ -0,0 +1,205 @@
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Changelog for package test_catkin_virtualenv
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+0.8.0 (2022-02-23)
+------------------
+
+0.9.0 (2023-02-22)
+------------------
+* 0.8.0
+* Update changelogs
+* Contributors: Gary Servin
+
+0.10.0 (2023-09-25)
+-------------------
+* Drop python2 and add Jammy support (#101)
+ * Updating pip and pip-tools
+ * Trying older version of pip and pip-tools
+ * Using slightly newer version of pip and piptools
+ * Ensuring we are using python3
+ * fix typo
+ * Updating catkin-pkg for Jammy support
+ * Remove test_virtualenv_python2
+ * Update requirements to fix build error
+ * Remove python3 direct reference from venv
+ * Update pip and pip-tools for 3.7+ compatibility
+ * Don't enumerate python versions
+ * Add compatibility notes
+ * Remove melodic test and python2 references
+ * Fix build error more
+ * Get rid of requests as a package for testing
+ * get_pip isn't versioned 3.6 onwards
+ * Fixup double pip-tools
+ * Revert "Get rid of requests as a package for testing"
+ This reverts commit 55e5b5889d1080303c52fb4e6671d5061498ac57.
+ * Try fix action
+ * Disable isolated tests
+ * Revert changes to match the dependencies
+ ---------
+ Co-authored-by: Kalpesh Lad
+ Co-authored-by: Gary Servin
+* 0.9.0
+* Update changelogs
+* 0.8.0
+* Update changelogs
+* Revert "Update changelogs"
+ This reverts commit 33618e7dec29a058931e5e7190456b4418140c78.
+* Update changelogs
+* Contributors: Gary Servin, Paul Bovbel
+
+0.11.0 (2024-02-02)
+-------------------
+* 0.10.0
+* Update changelogs
+* Drop python2 and add Jammy support (#101)
+ * Updating pip and pip-tools
+ * Trying older version of pip and pip-tools
+ * Using slightly newer version of pip and piptools
+ * Ensuring we are using python3
+ * fix typo
+ * Updating catkin-pkg for Jammy support
+ * Remove test_virtualenv_python2
+ * Update requirements to fix build error
+ * Remove python3 direct reference from venv
+ * Update pip and pip-tools for 3.7+ compatibility
+ * Don't enumerate python versions
+ * Add compatibility notes
+ * Remove melodic test and python2 references
+ * Fix build error more
+ * Get rid of requests as a package for testing
+ * get_pip isn't versioned 3.6 onwards
+ * Fixup double pip-tools
+ * Revert "Get rid of requests as a package for testing"
+ This reverts commit 55e5b5889d1080303c52fb4e6671d5061498ac57.
+ * Try fix action
+ * Disable isolated tests
+ * Revert changes to match the dependencies
+ ---------
+ Co-authored-by: Kalpesh Lad
+ Co-authored-by: Gary Servin
+* 0.9.0
+* Update changelogs
+* 0.8.0
+* Update changelogs
+* Revert "Update changelogs"
+ This reverts commit 33618e7dec29a058931e5e7190456b4418140c78.
+* Update changelogs
+* Contributors: Gary Servin, Paul Bovbel
+
+0.7.0 (2020-10-02)
+------------------
+
+0.6.1 (2020-08-24)
+------------------
+* Correct dependencies and autoformat (`#72 `_)
+ * Remove python-virtualenv dep
+ * Add python2-dev
+ * Lint
+* Contributors: Paul Bovbel
+
+0.6.0 (2020-07-14)
+------------------
+* Don't require catkin_package to be called before catkin_generate_virtualenv (`#67 `_)
+* Remove user specific paths (`#63 `_)
+ * Remove user specific paths
+ * Change working directory of venv_lock command
+ * Lock catkin_virtualenv base requirements
+ Co-authored-by: Paul Bovbel
+* RST-3172 Refactor catkin_virtualenv to allow locking dependencies (`#55 `_)
+ * Remove unused options
+ * Fix regex for comments
+ * Migrate scripts
+ * Remove old code
+ * Move common requirements to an export file
+ * Minor cleanup
+ * Remove requirement-parsing unit tests
+ * Fix logging config
+ * Fix test builds
+ * Generate lock files
+ * Fix tests
+ * Move dh-virtualenv functions into separate file
+ * Fix roslint
+ * Update docs
+ * Update requirements
+ * CMake comments
+ * Fix pip-args
+ * README fixup
+ * Correct ARG_LOCK_FILE handling
+ * Remove headers
+ * Use set comprehension
+ * Add migration doc
+ * Respin
+* Contributors: David V. Lu!!, Paul Bovbel
+
+0.5.0 (2019-06-21)
+------------------
+
+0.4.1 (2019-06-11)
+------------------
+
+0.4.0 (2019-03-18)
+------------------
+
+0.3.0 (2019-01-16)
+------------------
+* Python3 re-enable, add PYTHON_VERSION support (`#33 `_)
+ * replace PYTHON_VERSION_MAJOR with PYTHON_VERSION
+ * Simplify nose usage for python3
+ * Check for venv module directly rather than munging major version
+* Contributors: Paul Bovbel
+
+0.2.2 (2018-12-04)
+------------------
+* Merge repeated requirements (`#32 `_)
+* Contributors: Paul Bovbel
+
+0.2.1 (2018-06-04)
+------------------
+
+0.2.0 (2018-05-03)
+------------------
+
+0.1.6 (2018-01-10)
+------------------
+
+0.1.5 (2018-01-10)
+------------------
+* Drop strict requirements
+* Contributors: Paul Bovbel
+
+0.1.4 (2017-12-03)
+------------------
+* Fix cmake lint errors
+* Add XML schema, README badges, fix travis config for debian jessie, and remove legacy scripts
+* Merge pull request `#5 `_ from gavanderhoorn/manifest_fix
+ Remove stray 's' from test package manifests.
+* Remove stray 's' from test package manifests.
+* Contributors: Paul Bovbel, gavanderhoorn
+
+0.1.3 (2017-11-27)
+------------------
+
+0.1.2 (2017-11-23)
+------------------
+* Drop rosbash dependency and move python scripts into cmake directory
+* More tweaks to get nosetests working in python3
+* Contributors: Paul Bovbel
+
+0.1.1 (2017-11-22)
+------------------
+
+0.1.0 (2017-11-22)
+------------------
+* Fix trusty support
+* Contributors: Paul Bovbel
+
+0.0.1 (2017-11-22)
+------------------
+* Add license
+* Overhaul virtualenv generation and add Python 3 support (`#1 `_)
+ * Rewrite build_venv in python
+ * Use dh_virtualenv to do the heavy lifting; embed new version of dh_virtualenv internally
+ * Update CMake to generate virtualenv appropriately for install and devel space
+* Initial implementation
+* Contributors: Paul Bovbel
diff --git a/test_catkin_virtualenv_uv/CMakeLists.txt b/test_catkin_virtualenv_uv/CMakeLists.txt
new file mode 100644
index 0000000..b5bde5d
--- /dev/null
+++ b/test_catkin_virtualenv_uv/CMakeLists.txt
@@ -0,0 +1,35 @@
+cmake_minimum_required(VERSION 3.5.1)
+project(test_catkin_virtualenv_uv)
+
+find_package(catkin REQUIRED COMPONENTS catkin_virtualenv)
+
+catkin_generate_virtualenv(
+ INPUT_REQUIREMENTS requirements.in
+ USE_UV TRUE
+ UV_CACHE /tmp/testing/uv/cache
+)
+
+# Order with catkin_generate_virtualenv shouldn't matter
+catkin_package()
+
+install(FILES requirements.txt
+ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
+
+if(CATKIN_ENABLE_TESTING)
+ find_package(rostest REQUIRED)
+
+ catkin_install_python(
+ PROGRAMS
+ test/test_virtualenv_script_uv
+ DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
+
+ # Nose isn't supported for python 3.10
+ #catkin_add_nosetests(test
+ # DEPENDENCIES ${PROJECT_NAME}_generate_virtualenv
+ #)
+
+ add_rostest(test/virtualenv_script.test
+ DEPENDENCIES ${PROJECT_NAME}_generate_virtualenv
+ )
+
+endif()
diff --git a/test_catkin_virtualenv_uv/log b/test_catkin_virtualenv_uv/log
new file mode 100644
index 0000000..078ae52
--- /dev/null
+++ b/test_catkin_virtualenv_uv/log
@@ -0,0 +1,1508 @@
+--------------------------------------------------------------------------------
+Profile: default
+Extending: [explicit] /opt/locusrobotics/hotdog/dev/ros1
+Workspace: /home/bstrausser/locus_dev
+--------------------------------------------------------------------------------
+Build Space: [exists] /home/bstrausser/locus_dev/build
+Devel Space: [exists] /home/bstrausser/locus_dev/devel
+Install Space: [unused] /home/bstrausser/locus_dev/install
+Log Space: [missing] /home/bstrausser/locus_dev/logs
+Source Space: [exists] /home/bstrausser/locus_dev/src
+DESTDIR: [unused] None
+--------------------------------------------------------------------------------
+Devel Space Layout: linked
+Install Space Layout: None
+--------------------------------------------------------------------------------
+Additional CMake Args: -DCMAKE_CXX_FLAGS="-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS" -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
+Additional Make Args: None
+Additional catkin Make Args: None
+Internal Make Job Server: True
+Cache Job Environments: False
+--------------------------------------------------------------------------------
+Buildlisted Packages: None
+Skiplisted Packages: None
+--------------------------------------------------------------------------------
+Workspace configuration appears valid.
+
+NOTE: Forcing CMake to run for each package.
+--------------------------------------------------------------------------------
+[build] Found 9 packages in 0.0 seconds.
+[build] Updating package table.
+Starting >>> catkin_tools_prebuild
+Starting >> catkin_tools_prebuild:loadenv
+Output << catkin_tools_prebuild:loadenv /home/bstrausser/locus_dev/logs/catkin_tools_prebuild/build.loadenv.000.log
+Loading environment from: /home/bstrausser/locus_dev/devel/env.sh
+
+Finished << catkin_tools_prebuild:loadenv
+Starting >> catkin_tools_prebuild:mkdir
+Starting >> catkin_tools_prebuild:mkdir
+Starting >> catkin_tools_prebuild:cache-manifest
+Starting >> catkin_tools_prebuild:cmake
+Subprocess > catkin_tools_prebuild:cmake `cd /home/bstrausser/locus_dev/build/catkin_tools_prebuild; catkin build --get-env catkin_tools_prebuild | catkin env -si /usr/bin/cmake /home/bstrausser/locus_dev/build/catkin_tools_prebuild --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/bstrausser/locus_dev/devel/.private/catkin_tools_prebuild -DCMAKE_INSTALL_PREFIX=/home/bstrausser/locus_dev/install '-DCMAKE_CXX_FLAGS=-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS' -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON; cd -`
+[build 0.1 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
[build 0.2 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
[build 0.3 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
[build 0.4 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
[build 0.5 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
[build 0.6 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
[build 0.7 s] [0/3 complete] [1/16 jobs] [0 queued] [catkin_tools_prebuild:...
Output << catkin_tools_prebuild:cmake /home/bstrausser/locus_dev/logs/catkin_tools_prebuild/build.cmake.000.log
+Not searching for unused variables given on the command line.
+Re-run cmake no build system arguments
+-- The C compiler identification is GNU 11.4.0
+-- The CXX compiler identification is GNU 11.4.0
+-- Detecting C compiler ABI info
+-- Detecting C compiler ABI info - done
+-- Check for working C compiler: /usr/lib/ccache/cc - skipped
+-- Detecting C compile features
+-- Detecting C compile features - done
+-- Detecting CXX compiler ABI info
+-- Detecting CXX compiler ABI info - done
+-- Check for working CXX compiler: /usr/lib/ccache/c++ - skipped
+-- Detecting CXX compile features
+-- Detecting CXX compile features - done
+-- Using CATKIN_DEVEL_PREFIX: /home/bstrausser/locus_dev/devel/.private/catkin_tools_prebuild
+-- Using CMAKE_PREFIX_PATH: /opt/locusrobotics/hotdog/dev/ros1
+-- This workspace overlays: /opt/locusrobotics/hotdog/dev/ros1
+-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.10.12", minimum required is "3")
+-- Using PYTHON_EXECUTABLE: /usr/bin/python3
+-- Using Debian Python package layout
+-- Using empy: /usr/bin/empy
+-- Using CATKIN_ENABLE_TESTING: ON
+-- Call enable_testing()
+-- Using CATKIN_TEST_RESULTS_DIR: /home/bstrausser/locus_dev/build/catkin_tools_prebuild/test_results
+-- Forcing gtest/gmock from source, though one was otherwise available.
+-- Found gtest sources under '/usr/src/googletest': gtests will be built
+-- Found gmock sources under '/usr/src/googletest': gmock will be built
+-- Found Python: /usr/bin/python3.10 (found version "3.10.12") found components: Interpreter
+-- Found Threads: TRUE
+-- Using Python nosetests: /usr/bin/nosetests3
+-- catkin 0.10.0
+-- BUILD_SHARED_LIBS is on
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/bstrausser/locus_dev/build/catkin_tools_prebuild
+cd /home/bstrausser/locus_dev/build/catkin_tools_prebuild; catkin build --get-env catkin_tools_prebuild | catkin env -si /usr/bin/cmake /home/bstrausser/locus_dev/build/catkin_tools_prebuild --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/bstrausser/locus_dev/devel/.private/catkin_tools_prebuild -DCMAKE_INSTALL_PREFIX=/home/bstrausser/locus_dev/install '-DCMAKE_CXX_FLAGS=-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS' -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON; cd -
+
+Finished << catkin_tools_prebuild:cmake
+Starting >> catkin_tools_prebuild:make
+Subprocess > catkin_tools_prebuild:make `cd /home/bstrausser/locus_dev/build/catkin_tools_prebuild; catkin build --get-env catkin_tools_prebuild | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -`
+Output << catkin_tools_prebuild:make /home/bstrausser/locus_dev/logs/catkin_tools_prebuild/build.make.000.log
+/usr/bin/cmake -S/home/bstrausser/locus_dev/build/catkin_tools_prebuild -B/home/bstrausser/locus_dev/build/catkin_tools_prebuild --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/catkin_tools_prebuild/CMakeFiles /home/bstrausser/locus_dev/build/catkin_tools_prebuild//CMakeFiles/progress.marks
+/usr/bin/make -f CMakeFiles/Makefile2 all
+make[1]: Entering directory '/home/bstrausser/locus_dev/build/catkin_tools_prebuild'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/home/bstrausser/locus_dev/build/catkin_tools_prebuild'
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/catkin_tools_prebuild/CMakeFiles 0
+cd /home/bstrausser/locus_dev/build/catkin_tools_prebuild; catkin build --get-env catkin_tools_prebuild | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -
+
+Finished << catkin_tools_prebuild:make
+Starting >> catkin_tools_prebuild:symlink
+Output << catkin_tools_prebuild:symlink /home/bstrausser/locus_dev/logs/catkin_tools_prebuild/build.symlink.000.log
+Symlinking /home/bstrausser/locus_dev/devel/./setup.sh
+Symlinking /home/bstrausser/locus_dev/devel/./setup.bash
+Symlinking /home/bstrausser/locus_dev/devel/./env.sh
+Symlinking /home/bstrausser/locus_dev/devel/./local_setup.bash
+Symlinking /home/bstrausser/locus_dev/devel/./local_setup.zsh
+Symlinking /home/bstrausser/locus_dev/devel/./setup.zsh
+Symlinking /home/bstrausser/locus_dev/devel/./_setup_util.py
+Symlinking /home/bstrausser/locus_dev/devel/./local_setup.sh
+Symlinking /home/bstrausser/locus_dev/devel/lib/pkgconfig/catkin_tools_prebuild.pc
+Symlinking /home/bstrausser/locus_dev/devel/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig.cmake
+Symlinking /home/bstrausser/locus_dev/devel/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig-version.cmake
+
+Finished << catkin_tools_prebuild:symlink
+Finished <<< catkin_tools_prebuild [ 0.7 seconds ]
+Starting >>> catkin_virtualenv
+Starting >> catkin_virtualenv:loadenv
+Output << catkin_virtualenv:loadenv /home/bstrausser/locus_dev/logs/catkin_virtualenv/build.loadenv.000.log
+Loading environment from: /home/bstrausser/locus_dev/devel/env.sh
+
+Finished << catkin_virtualenv:loadenv
+Starting >> catkin_virtualenv:mkdir
+Starting >> catkin_virtualenv:mkdir
+Starting >> catkin_virtualenv:cache-manifest
+Starting >> catkin_virtualenv:cmake
+Subprocess > catkin_virtualenv:cmake `cd /home/bstrausser/locus_dev/build/catkin_virtualenv; catkin build --get-env catkin_virtualenv | catkin env -si /usr/bin/cmake /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/bstrausser/locus_dev/devel/.private/catkin_virtualenv -DCMAKE_INSTALL_PREFIX=/home/bstrausser/locus_dev/install '-DCMAKE_CXX_FLAGS=-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS' -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON; cd -`
+[build 0.8 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 0.9 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.0 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.1 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.2 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.3 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.4 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.5 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.6 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.7 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
[build 1.8 s] [1/3 complete] [1/16 jobs] [0 queued] [catkin_virtualenv:cmak...
Output << catkin_virtualenv:cmake /home/bstrausser/locus_dev/logs/catkin_virtualenv/build.cmake.000.log
+Not searching for unused variables given on the command line.
+Re-run cmake no build system arguments
+-- The C compiler identification is GNU 11.4.0
+-- The CXX compiler identification is GNU 11.4.0
+-- Detecting C compiler ABI info
+-- Detecting C compiler ABI info - done
+-- Check for working C compiler: /usr/lib/ccache/cc - skipped
+-- Detecting C compile features
+-- Detecting C compile features - done
+-- Detecting CXX compiler ABI info
+-- Detecting CXX compiler ABI info - done
+-- Check for working CXX compiler: /usr/lib/ccache/c++ - skipped
+-- Detecting CXX compile features
+-- Detecting CXX compile features - done
+-- Using CATKIN_DEVEL_PREFIX: /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv
+-- Using CMAKE_PREFIX_PATH: /home/bstrausser/locus_dev/devel;/opt/locusrobotics/hotdog/dev/ros1
+-- This workspace overlays: /home/bstrausser/locus_dev/devel;/opt/locusrobotics/hotdog/dev/ros1
+-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.10.12", minimum required is "3")
+-- Using PYTHON_EXECUTABLE: /usr/bin/python3
+-- Using Debian Python package layout
+-- Using empy: /usr/bin/empy
+-- Using CATKIN_ENABLE_TESTING: ON
+-- Call enable_testing()
+-- Using CATKIN_TEST_RESULTS_DIR: /home/bstrausser/locus_dev/build/catkin_virtualenv/test_results
+-- Forcing gtest/gmock from source, though one was otherwise available.
+-- Found gtest sources under '/usr/src/googletest': gtests will be built
+-- Found gmock sources under '/usr/src/googletest': gmock will be built
+-- Found Python: /usr/bin/python3.10 (found version "3.10.12") found components: Interpreter
+-- Found Threads: TRUE
+-- Using Python nosetests: /usr/bin/nosetests3
+-- catkin 0.10.0
+-- BUILD_SHARED_LIBS is on
+-- Installing devel-space wrapper /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/collect_requirements to /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv/lib/catkin_virtualenv
+-- Installing devel-space wrapper /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_init to /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv/lib/catkin_virtualenv
+-- Installing devel-space wrapper /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_check to /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv/lib/catkin_virtualenv
+-- Installing devel-space wrapper /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_lock to /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv/lib/catkin_virtualenv
+-- Installing devel-space wrapper /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_install to /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv/lib/catkin_virtualenv
+-- Installing devel-space wrapper /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_relocate to /home/bstrausser/locus_dev/devel/.private/catkin_virtualenv/lib/catkin_virtualenv
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/bstrausser/locus_dev/build/catkin_virtualenv
+cd /home/bstrausser/locus_dev/build/catkin_virtualenv; catkin build --get-env catkin_virtualenv | catkin env -si /usr/bin/cmake /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/bstrausser/locus_dev/devel/.private/catkin_virtualenv -DCMAKE_INSTALL_PREFIX=/home/bstrausser/locus_dev/install '-DCMAKE_CXX_FLAGS=-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS' -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON; cd -
+
+Finished << catkin_virtualenv:cmake
+Starting >> catkin_virtualenv:make
+Subprocess > catkin_virtualenv:make `cd /home/bstrausser/locus_dev/build/catkin_virtualenv; catkin build --get-env catkin_virtualenv | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -`
+Output << catkin_virtualenv:make /home/bstrausser/locus_dev/logs/catkin_virtualenv/build.make.000.log
+/usr/bin/cmake -S/home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv -B/home/bstrausser/locus_dev/build/catkin_virtualenv --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/catkin_virtualenv/CMakeFiles /home/bstrausser/locus_dev/build/catkin_virtualenv//CMakeFiles/progress.marks
+/usr/bin/make -f CMakeFiles/Makefile2 all
+make[1]: Entering directory '/home/bstrausser/locus_dev/build/catkin_virtualenv'
+make[1]: Nothing to be done for 'all'.
+make[1]: Leaving directory '/home/bstrausser/locus_dev/build/catkin_virtualenv'
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/catkin_virtualenv/CMakeFiles 0
+cd /home/bstrausser/locus_dev/build/catkin_virtualenv; catkin build --get-env catkin_virtualenv | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -
+
+Finished << catkin_virtualenv:make
+Starting >> catkin_virtualenv:symlink
+Output << catkin_virtualenv:symlink /home/bstrausser/locus_dev/logs/catkin_virtualenv/build.symlink.000.log
+Symlinking /home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/venv_relocate
+Symlinking /home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/venv_init
+Symlinking /home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/venv_check
+Symlinking /home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/venv_lock
+Symlinking /home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/venv_install
+Symlinking /home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/collect_requirements
+Symlinking /home/bstrausser/locus_dev/devel/lib/pkgconfig/catkin_virtualenv.pc
+Symlinking /home/bstrausser/locus_dev/devel/lib/python3/dist-packages/catkin_virtualenv/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/catkin_virtualenv/cmake/catkin_virtualenvConfig.cmake
+Symlinking /home/bstrausser/locus_dev/devel/share/catkin_virtualenv/cmake/catkin_virtualenv-extras.cmake
+Symlinking /home/bstrausser/locus_dev/devel/share/catkin_virtualenv/cmake/catkin_virtualenvConfig-version.cmake
+
+Finished << catkin_virtualenv:symlink
+Finished <<< catkin_virtualenv [ 1.2 seconds ]
+Starting >>> test_catkin_virtualenv_uv
+Starting >> test_catkin_virtualenv_uv:loadenv
+[build 1.9 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
Output << test_catkin_virtualenv_uv:loadenv /home/bstrausser/locus_dev/logs/test_catkin_virtualenv_uv/build.loadenv.000.log
+Loading environment from: /home/bstrausser/locus_dev/devel/env.sh
+
+Finished << test_catkin_virtualenv_uv:loadenv
+Starting >> test_catkin_virtualenv_uv:mkdir
+Starting >> test_catkin_virtualenv_uv:mkdir
+Starting >> test_catkin_virtualenv_uv:cache-manifest
+Starting >> test_catkin_virtualenv_uv:cmake
+Subprocess > test_catkin_virtualenv_uv:cmake `cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin build --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/cmake /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv -DCMAKE_INSTALL_PREFIX=/home/bstrausser/locus_dev/install '-DCMAKE_CXX_FLAGS=-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS' -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON; cd -`
+[build 2.0 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.1 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.2 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.3 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.4 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.5 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.6 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.7 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.8 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 2.9 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.0 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.1 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.2 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.3 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.4 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.5 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
Output << test_catkin_virtualenv_uv:cmake /home/bstrausser/locus_dev/logs/test_catkin_virtualenv_uv/build.cmake.000.log
+Not searching for unused variables given on the command line.
+Re-run cmake no build system arguments
+-- The C compiler identification is GNU 11.4.0
+-- The CXX compiler identification is GNU 11.4.0
+-- Detecting C compiler ABI info
+-- Detecting C compiler ABI info - done
+-- Check for working C compiler: /usr/lib/ccache/cc - skipped
+-- Detecting C compile features
+-- Detecting C compile features - done
+-- Detecting CXX compiler ABI info
+-- Detecting CXX compiler ABI info - done
+-- Check for working CXX compiler: /usr/lib/ccache/c++ - skipped
+-- Detecting CXX compile features
+-- Detecting CXX compile features - done
+-- Using CATKIN_DEVEL_PREFIX: /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv
+-- Using CMAKE_PREFIX_PATH: /home/bstrausser/locus_dev/devel;/opt/locusrobotics/hotdog/dev/ros1
+-- This workspace overlays: /home/bstrausser/locus_dev/devel;/opt/locusrobotics/hotdog/dev/ros1
+-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.10.12", minimum required is "3")
+-- Using PYTHON_EXECUTABLE: /usr/bin/python3
+-- Using Debian Python package layout
+-- Using empy: /usr/bin/empy
+-- Using CATKIN_ENABLE_TESTING: ON
+-- Call enable_testing()
+-- Using CATKIN_TEST_RESULTS_DIR: /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results
+-- Forcing gtest/gmock from source, though one was otherwise available.
+-- Found gtest sources under '/usr/src/googletest': gtests will be built
+-- Found gmock sources under '/usr/src/googletest': gmock will be built
+-- Found Python: /usr/bin/python3.10 (found version "3.10.12") found components: Interpreter
+-- Found Threads: TRUE
+-- Using Python nosetests: /usr/bin/nosetests3
+-- catkin 0.10.0
+-- BUILD_SHARED_LIBS is on
+-- USING UV
+-- Using uv cache
+-- Setting uv cache location
+-- Clearing Venv args
+-- Setting Extra UV Args
+-- PackReq: /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt
+-- Using virtualenv to run Python nosetests:
+-- Configuring done
+-- Generating done
+-- Build files have been written to: /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin build --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/cmake /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv -DCMAKE_INSTALL_PREFIX=/home/bstrausser/locus_dev/install '-DCMAKE_CXX_FLAGS=-g -O3 -fext-numeric-literals -march=haswell -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DBOOST_ALLOW_DEPRECATED_HEADERS' -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON; cd -
+
+Finished << test_catkin_virtualenv_uv:cmake
+Starting >> test_catkin_virtualenv_uv:make
+Subprocess > test_catkin_virtualenv_uv:make `cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin build --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -`
+[build 3.6 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.7 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.8 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 3.9 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.0 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.1 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.2 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.3 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.4 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.5 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.6 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.7 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.8 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 4.9 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.0 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.1 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.2 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.3 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.4 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.5 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.6 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.7 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.8 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
[build 5.9 s] [2/3 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv...
/usr/bin/cmake -S/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv -B/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv//CMakeFiles/progress.marks
+/usr/bin/make -f CMakeFiles/Makefile2 all
+make[1]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/build.make CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/depend
+make[2]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/DependInfo.cmake --color=
+make[2]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/build.make CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/build
+make[2]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[ 20%] [34m[1mGenerate virtualenv in /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/venv[0m
+catkin_generated/env_cached.sh rosrun catkin_virtualenv venv_init venv --python python3 --extra-pip-args \"\" --use-uv --uv-cache /tmp/testing/uv/cache
+[INFO] [catkin_virtualenv]: /home/bstrausser/.cargo/bin/uv venv --cache-dir=/tmp/testing/uv/cache venv --python python3
+Using Python 3.10.12 interpreter at: [36m/usr/bin/python3[39m
+Creating virtualenv at: [36mvenv[39m
+Activate with: [32msource venv/bin/activate[39m
+[ 40%] [34m[1mInstall requirements to /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/venv[0m
+catkin_generated/env_cached.sh rosrun catkin_virtualenv venv_install venv --requirements /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/requirements.txt /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt --extra-pip-args \"\" --use-uv --uv-cache /tmp/testing/uv/cache
+venv
+[INFO] [catkin_virtualenv]: /home/bstrausser/.cargo/bin/uv pip install --cache-dir=/tmp/testing/uv/cache --verbose -r /home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/requirements.txt
+[34mDEBUG[39m uv 0.2.17
+[34mDEBUG[39m Searching for Python interpreter in system toolchains
+[34mDEBUG[39m Found cpython 3.10.12 at `venv/bin/python3` (active virtual environment)
+[34mDEBUG[39m Using Python 3.10.12 environment at [36mvenv/bin/python3[39m
+[34mDEBUG[39m Acquired lock for `venv`
+[34mDEBUG[39m At least one requirement is not satisfied: six==1.16.0
+[34mDEBUG[39m Using request timeout of 30s
+[34mDEBUG[39m Solving with installed Python version: 3.10.12
+[34mDEBUG[39m Adding direct dependency: catkin-pkg==0.5.2
+[34mDEBUG[39m Adding direct dependency: distro==1.8.0
+[34mDEBUG[39m Adding direct dependency: docutils==0.19
+[34mDEBUG[39m Adding direct dependency: nose==1.3.7
+[34mDEBUG[39m Adding direct dependency: pyparsing==3.0.9
+[34mDEBUG[39m Adding direct dependency: python-dateutil==2.8.2
+[34mDEBUG[39m Adding direct dependency: pyyaml==6.0
+[34mDEBUG[39m Adding direct dependency: rospkg==1.5.0
+[34mDEBUG[39m Adding direct dependency: setproctitle==1.3.2
+[34mDEBUG[39m Adding direct dependency: six==1.16.0
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/catkin-pkg/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/catkin-pkg/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/docutils/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/docutils/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/distro/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/distro/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/pyparsing/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/pyparsing/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/python-dateutil/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/python-dateutil/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/nose/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/nose/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/rospkg/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/rospkg/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/six/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/six/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/setproctitle/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/setproctitle/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/pyyaml/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/pyyaml/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/docutils/
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl.metadata
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/pyyaml/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/nose/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/pyparsing/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/setproctitle/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/python-dateutil/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/catkin-pkg/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/six/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/rospkg/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/distro/
+[34mDEBUG[39m Searching for a compatible version of catkin-pkg (==0.5.2)
+[34mDEBUG[39m Selecting: catkin-pkg==0.5.2 (catkin_pkg-0.5.2-py3-none-any.whl)
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/15/d8/dd071918c040f50fa1cf80da16423af51ff8ce4a0f2399b7bf8de45ac3d9/nose-1.3.7-py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/02/25/6ba9f6bb50a3d4fbe22c1a02554dc670682a07c8701d1716d19ddea2c940/PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/62/15/91e07b85c6aa7feec86257c3e9966de1d6bb61844d133d2b939294bc2ccf/rospkg-1.5.0-py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/d7/52/a5395120c9a9a92837d7daf28c4fd26df50ed6e291244c70fef1a1caa5c2/catkin_pkg-0.5.2-py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/46/b6/d1a2fc143997d89dc2dd9b55646fddb702699624510d619e101c8e149bdf/setproctitle-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/f4/2c/c90a3adaf0ddb70afe193f5ebfb539612af57cffe677c3126be533df3098/distro-1.8.0-py3-none-any.whl.metadata
+[34mDEBUG[39m Adding transitive dependency for catkin-pkg==0.5.2: docutils*
+[34mDEBUG[39m Adding transitive dependency for catkin-pkg==0.5.2: python-dateutil*
+[34mDEBUG[39m Adding transitive dependency for catkin-pkg==0.5.2: pyparsing*
+[34mDEBUG[39m Adding transitive dependency for catkin-pkg==0.5.2: setuptools*
+[34mDEBUG[39m Searching for a compatible version of distro (==1.8.0)
+[34mDEBUG[39m Selecting: distro==1.8.0 (distro-1.8.0-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of docutils (==0.19)
+[34mDEBUG[39m Selecting: docutils==0.19 (docutils-0.19-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of nose (==1.3.7)
+[34mDEBUG[39m Selecting: nose==1.3.7 (nose-1.3.7-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of pyparsing (==3.0.9)
+[34mDEBUG[39m Selecting: pyparsing==3.0.9 (pyparsing-3.0.9-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of python-dateutil (==2.8.2)
+[34mDEBUG[39m Selecting: python-dateutil==2.8.2 (python_dateutil-2.8.2-py2.py3-none-any.whl)
+[34mDEBUG[39m Adding transitive dependency for python-dateutil==2.8.2: six>=1.5
+[34mDEBUG[39m Searching for a compatible version of pyyaml (==6.0)
+[34mDEBUG[39m Selecting: pyyaml==6.0 (PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl)
+[34mDEBUG[39m Searching for a compatible version of rospkg (==1.5.0)
+[34mDEBUG[39m Selecting: rospkg==1.5.0 (rospkg-1.5.0-py3-none-any.whl)
+[34mDEBUG[39m Adding transitive dependency for rospkg==1.5.0: catkin-pkg*
+[34mDEBUG[39m Adding transitive dependency for rospkg==1.5.0: pyyaml*
+[34mDEBUG[39m Adding transitive dependency for rospkg==1.5.0: distro{python_version >= '3.8'}>=1.4.0
+[34mDEBUG[39m Searching for a compatible version of distro{python_version >= '3.8'} (>=1.4.0)
+[34mDEBUG[39m Selecting: distro==1.9.0 (distro-1.9.0-py3-none-any.whl)
+[34mDEBUG[39m Adding transitive dependency for distro==1.9.0: distro==1.9.0
+[34mDEBUG[39m Adding transitive dependency for distro==1.9.0: distro{python_version >= '3.8'}==1.9.0
+[34mDEBUG[39m Searching for a compatible version of distro{python_version >= '3.8'} (>=1.4.0, <1.9.0 | >1.9.0)
+[34mDEBUG[39m Selecting: distro==1.8.0 (distro-1.8.0-py3-none-any.whl)
+[34mDEBUG[39m Adding transitive dependency for distro==1.8.0: distro==1.8.0
+[34mDEBUG[39m Adding transitive dependency for distro==1.8.0: distro{python_version >= '3.8'}==1.8.0
+[34mDEBUG[39m Searching for a compatible version of distro{python_version >= '3.8'} (==1.8.0)
+[34mDEBUG[39m Selecting: distro==1.8.0 (distro-1.8.0-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of setproctitle (==1.3.2)
+[34mDEBUG[39m Selecting: setproctitle==1.3.2 (setproctitle-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl)
+[34mDEBUG[39m Searching for a compatible version of six (==1.16.0)
+[34mDEBUG[39m Selecting: six==1.16.0 (six-1.16.0-py2.py3-none-any.whl)
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/setuptools/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/setuptools/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/setuptools/
+[34mDEBUG[39m Searching for a compatible version of setuptools (*)
+[34mDEBUG[39m Selecting: setuptools==70.1.1 (setuptools-70.1.1-py3-none-any.whl)
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/b3/7a/629889a5d76200287aa5483d753811bd247bbd1b03175186f759e0c7d3a7/setuptools-70.1.1-py3-none-any.whl.metadata
+[34mDEBUG[39m Tried 11 versions: catkin-pkg 1, distro 1, docutils 1, nose 1, pyparsing 1, python-dateutil 1, pyyaml 1, rospkg 1, setproctitle 1, setuptools 1, six 1
+[2mResolved [1m11 packages[0m in 148ms[0m
+[34mDEBUG[39m Requirement already cached: catkin-pkg==0.5.2
+[34mDEBUG[39m Requirement already cached: distro==1.8.0
+[34mDEBUG[39m Requirement already cached: docutils==0.19
+[34mDEBUG[39m Requirement already cached: nose==1.3.7
+[34mDEBUG[39m Requirement already cached: pyparsing==3.0.9
+[34mDEBUG[39m Requirement already cached: python-dateutil==2.8.2
+[34mDEBUG[39m Requirement already cached: pyyaml==6.0
+[34mDEBUG[39m Requirement already cached: rospkg==1.5.0
+[34mDEBUG[39m Requirement already cached: setproctitle==1.3.2
+[34mDEBUG[39m Requirement already cached: setuptools==70.1.1
+[34mDEBUG[39m Requirement already cached: six==1.16.0
+[2mInstalled [1m11 packages[0m in 3ms[0m
+ [32m+[39m [1mcatkin-pkg[0m[2m==0.5.2[0m
+ [32m+[39m [1mdistro[0m[2m==1.8.0[0m
+ [32m+[39m [1mdocutils[0m[2m==0.19[0m
+ [32m+[39m [1mnose[0m[2m==1.3.7[0m
+ [32m+[39m [1mpyparsing[0m[2m==3.0.9[0m
+ [32m+[39m [1mpython-dateutil[0m[2m==2.8.2[0m
+ [32m+[39m [1mpyyaml[0m[2m==6.0[0m
+ [32m+[39m [1mrospkg[0m[2m==1.5.0[0m
+ [32m+[39m [1msetproctitle[0m[2m==1.3.2[0m
+ [32m+[39m [1msetuptools[0m[2m==70.1.1[0m
+ [32m+[39m [1msix[0m[2m==1.16.0[0m
+[INFO] [catkin_virtualenv]: /home/bstrausser/.cargo/bin/uv pip install --cache-dir=/tmp/testing/uv/cache --verbose -r /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt
+[34mDEBUG[39m uv 0.2.17
+[34mDEBUG[39m Searching for Python interpreter in system toolchains
+[34mDEBUG[39m Found cpython 3.10.12 at `venv/bin/python3` (active virtual environment)
+[34mDEBUG[39m Using Python 3.10.12 environment at [36mvenv/bin/python3[39m
+[34mDEBUG[39m Acquired lock for `venv`
+[34mDEBUG[39m At least one requirement is not satisfied: urllib3==1.26.15
+[34mDEBUG[39m Using request timeout of 30s
+[34mDEBUG[39m Solving with installed Python version: 3.10.12
+[34mDEBUG[39m Adding direct dependency: certifi==2022.12.7
+[34mDEBUG[39m Adding direct dependency: cffi==1.15.1
+[34mDEBUG[39m Adding direct dependency: charset-normalizer==3.1.0
+[34mDEBUG[39m Adding direct dependency: idna==3.4
+[34mDEBUG[39m Adding direct dependency: packaging==23.1
+[34mDEBUG[39m Adding direct dependency: pycparser==2.21
+[34mDEBUG[39m Adding direct dependency: requests==2.29.0
+[34mDEBUG[39m Adding direct dependency: urllib3==1.26.15
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/certifi/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/certifi/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/pycparser/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/pycparser/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/idna/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/idna/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/packaging/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/packaging/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/urllib3/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/urllib3/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/cffi/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/cffi/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/requests/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/requests/
+[34mDEBUG[39m Found stale response for: https://pypi.org/simple/charset-normalizer/
+[34mDEBUG[39m Sending revalidation request for: https://pypi.org/simple/charset-normalizer/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/idna/
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl.metadata
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/requests/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/certifi/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/pycparser/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/charset-normalizer/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/urllib3/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/cffi/
+[34mDEBUG[39m Found not-modified response for: https://pypi.org/simple/packaging/
+[34mDEBUG[39m Searching for a compatible version of certifi (==2022.12.7)
+[34mDEBUG[39m Selecting: certifi==2022.12.7 (certifi-2022.12.7-py3-none-any.whl)
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/cf/e1/2aa539876d9ed0ddc95882451deb57cfd7aa8dbf0b8dbce68e045549ba56/requests-2.29.0-py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/cc/f6/21a66e524658bd1dd7b89ac9d1ee8f7823f2d9701a2fbc458ab9ede53c63/charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl.metadata
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/7b/f5/890a0baca17a61c1f92f72b81d3c31523c99bec609e60c292ea55b387ae8/urllib3-1.26.15-py2.py3-none-any.whl.metadata
+[34mDEBUG[39m Searching for a compatible version of cffi (==1.15.1)
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl.metadata
+[34mDEBUG[39m Selecting: cffi==1.15.1 (cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl)
+[34mDEBUG[39m Found fresh response for: https://files.pythonhosted.org/packages/88/89/c34caf63029fb7628ec2ebd5c88ae0c9bd17db98c812e4065a4d020ca41f/cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata
+[34mDEBUG[39m Adding transitive dependency for cffi==1.15.1: pycparser*
+[34mDEBUG[39m Searching for a compatible version of charset-normalizer (==3.1.0)
+[34mDEBUG[39m Selecting: charset-normalizer==3.1.0 (charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl)
+[34mDEBUG[39m Searching for a compatible version of idna (==3.4)
+[34mDEBUG[39m Selecting: idna==3.4 (idna-3.4-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of packaging (==23.1)
+[34mDEBUG[39m Selecting: packaging==23.1 (packaging-23.1-py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of pycparser (==2.21)
+[34mDEBUG[39m Selecting: pycparser==2.21 (pycparser-2.21-py2.py3-none-any.whl)
+[34mDEBUG[39m Searching for a compatible version of requests (==2.29.0)
+[34mDEBUG[39m Selecting: requests==2.29.0 (requests-2.29.0-py3-none-any.whl)
+[34mDEBUG[39m Adding transitive dependency for requests==2.29.0: charset-normalizer>=2, <4
+[34mDEBUG[39m Adding transitive dependency for requests==2.29.0: idna>=2.5, <4
+[34mDEBUG[39m Adding transitive dependency for requests==2.29.0: urllib3>=1.21.1, <1.27
+[34mDEBUG[39m Adding transitive dependency for requests==2.29.0: certifi>=2017.4.17
+[34mDEBUG[39m Searching for a compatible version of urllib3 (==1.26.15)
+[34mDEBUG[39m Selecting: urllib3==1.26.15 (urllib3-1.26.15-py2.py3-none-any.whl)
+[34mDEBUG[39m Tried 8 versions: certifi 1, cffi 1, charset-normalizer 1, idna 1, packaging 1, pycparser 1, requests 1, urllib3 1
+[2mResolved [1m8 packages[0m in 118ms[0m
+[34mDEBUG[39m Requirement already cached: certifi==2022.12.7
+[34mDEBUG[39m Requirement already cached: cffi==1.15.1
+[34mDEBUG[39m Requirement already cached: charset-normalizer==3.1.0
+[34mDEBUG[39m Requirement already cached: idna==3.4
+[34mDEBUG[39m Requirement already cached: packaging==23.1
+[34mDEBUG[39m Requirement already cached: pycparser==2.21
+[34mDEBUG[39m Requirement already cached: requests==2.29.0
+[34mDEBUG[39m Requirement already cached: urllib3==1.26.15
+[34mDEBUG[39m Unnecessary package: pyyaml==6.0
+[34mDEBUG[39m Unnecessary package: catkin-pkg==0.5.2
+[34mDEBUG[39m Unnecessary package: distro==1.8.0
+[34mDEBUG[39m Unnecessary package: docutils==0.19
+[34mDEBUG[39m Unnecessary package: nose==1.3.7
+[34mDEBUG[39m Unnecessary package: pyparsing==3.0.9
+[34mDEBUG[39m Unnecessary package: python-dateutil==2.8.2
+[34mDEBUG[39m Unnecessary package: rospkg==1.5.0
+[34mDEBUG[39m Unnecessary package: setproctitle==1.3.2
+[34mDEBUG[39m Unnecessary package: setuptools==70.1.1
+[34mDEBUG[39m Unnecessary package: six==1.16.0
+[2mInstalled [1m8 packages[0m in 2ms[0m
+ [32m+[39m [1mcertifi[0m[2m==2022.12.7[0m
+ [32m+[39m [1mcffi[0m[2m==1.15.1[0m
+ [32m+[39m [1mcharset-normalizer[0m[2m==3.1.0[0m
+ [32m+[39m [1midna[0m[2m==3.4[0m
+ [32m+[39m [1mpackaging[0m[2m==23.1[0m
+ [32m+[39m [1mpycparser[0m[2m==2.21[0m
+ [32m+[39m [1mrequests[0m[2m==2.29.0[0m
+ [32m+[39m [1murllib3[0m[2m==1.26.15[0m
+[ 60%] [34m[1mPrepare relocated virtualenvs for develspace and installspace[0m
+mkdir -p /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv && cp -r venv/* /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv
+mkdir -p install/venv && cp -r venv/* install/venv
+catkin_generated/env_cached.sh rosrun catkin_virtualenv venv_relocate /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv --target-dir /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv
+[INFO] [catkin_virtualenv]: grep -l -r -e ^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\) -e ^'''exec.*bin/\(python\|pypy\|ipy\|jython\) /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2man.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_test_changelog
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2odt_prepstyles.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_generate_changelog
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2latex.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2html.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rstpep2html.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2html5.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_package_version
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2xml.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2xetex.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2pseudoxml.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2odt.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_find_pkg
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_create_pkg
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2html4.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/normalizer
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/nosetests
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_prepare_release
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/catkin_tag_changelog
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/docutils
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/distro
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rst2s5.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/devel/\.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/python- /home/bstrausser/locus_dev/devel/.private/test_catkin_virtualenv_uv/share/test_catkin_virtualenv_uv/venv/bin/rosversion
+catkin_generated/env_cached.sh rosrun catkin_virtualenv venv_relocate install/venv --target-dir /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv
+[INFO] [catkin_virtualenv]: grep -l -r -e ^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\) -e ^'''exec.*bin/\(python\|pypy\|ipy\|jython\) install/venv/bin
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2latex.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2html5.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2html4.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2s5.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2odt_prepstyles.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rstpep2html.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2pseudoxml.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_prepare_release
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/distro
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2html.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_generate_changelog
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_create_pkg
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2xml.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rosversion
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2odt.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2xetex.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_package_version
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/docutils
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_tag_changelog
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/rst2man.py
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/nosetests
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/normalizer
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_test_changelog
+[INFO] [catkin_virtualenv]: sed -i s-^#!.*bin/\(env \)\?\(python\|pypy\|ipy\|jython\)\"\?-#!/home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python-;s-^'''exec'.*bin/\(python\|pypy\|ipy\|jython\)-'''exec' /home/bstrausser/locus_dev/install/share/test_catkin_virtualenv_uv/venv/bin/python- install/venv/bin/catkin_find_pkg
+[ 80%] [34m[1mPer-package virtualenv target[0m
+make[2]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target test_catkin_virtualenv_uv_generate_virtualenv
+make[1]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles 0
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin build --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make --jobserver-auth=3,4; cd -
+
+Finished << test_catkin_virtualenv_uv:make
+Starting >> test_catkin_virtualenv_uv:symlink
+Output << test_catkin_virtualenv_uv:symlink /home/bstrausser/locus_dev/logs/test_catkin_virtualenv_uv/build.symlink.000.log
+Symlinking /home/bstrausser/locus_dev/devel/lib/pkgconfig/test_catkin_virtualenv_uv.pc
+Symlinking /home/bstrausser/locus_dev/devel/lib/test_catkin_virtualenv_uv/test_virtualenv_script_uv
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib64
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/pyvenv.cfg
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/CACHEDIR.TAG
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2xetex.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate.fish
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2html.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_tag_changelog
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_test_changelog
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2html4.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2pseudoxml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2odt.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate.nu
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/python
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2latex.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_prepare_release
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2man.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_package_version
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2odt_prepstyles.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate.csh
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate_this.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate.ps1
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/normalizer
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/distro
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/docutils
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/python3.10
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate.bat
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/nosetests
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_find_pkg
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rstpep2html.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2xml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/deactivate.bat
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/python3
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/activate
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2html5.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rst2s5.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_generate_changelog
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/pydoc.bat
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/catkin_create_pkg
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/bin/rosversion
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/_cffi_backend.cpython-310-x86_64-linux-gnu.so
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/_virtualenv.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distutils-precedence.pth
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/_virtualenv.pth
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/zipp.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__main__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/macos.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/windows.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/api.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/android.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/platformdirs/unix.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_common.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/abc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/readers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/simple.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/context.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/backports/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/backports/tarfile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/recipes.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/more.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/more.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/recipes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/more_itertools/__init__.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_elffile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/metadata.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle-1.3.2.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle-1.3.2.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle-1.3.2.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle-1.3.2.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle-1.3.2.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle-1.3.2.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna-3.4.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna-3.4.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna-3.4.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna-3.4.dist-info/LICENSE.md
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna-3.4.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna-3.4.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests-2.29.0.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/unicode.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/results.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/helpers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/common.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/testing.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/exceptions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/actions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/core.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing/diagram/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/top_level.html
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/COPYING.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/dependency_links.html
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils-0.19.dist-info/SOURCES.html
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/_distutils_hack/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/_distutils_hack/override.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/DESCRIPTION.rst
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg-0.5.2.dist-info/metadata.json
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/LICENSE.BSD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/LICENSE.APACHE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging-23.1.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/commands.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/__main__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/selector.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/case.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/usage.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/proxy.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/inspector.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/failure.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/exc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/twistedtools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/suite.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/result.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/pyversion.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/importer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/loader.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/config.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/core.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/sphinx/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/sphinx/pluginopts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/capture.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/allmodules.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/cover.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/deprecated.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/multiprocess.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/collect.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/failuredetail.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/doctests.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/isolate.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/testid.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/errorclass.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/skip.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/builtin.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/manager.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/prof.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/debug.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/plugintest.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/base.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/xunit.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/logcapture.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/plugins/attrib.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/tools/nontrivial.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/tools/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/tools/trivial.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/ext/dtcompat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose/ext/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/DESCRIPTION.rst
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/nose-1.3.7.dist-info/metadata.json
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/constant.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/models.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/md__mypyc.cpython-310-x86_64-linux-gnu.so
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/md.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/md.cpython-310-x86_64-linux-gnu.so
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/legacy.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/api.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/cd.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/cli/normalizer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/cli/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer/assets/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg-1.5.0.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing-3.0.9.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing-3.0.9.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing-3.0.9.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing-3.0.9.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing-3.0.9.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pyparsing-3.0.9.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3-1.26.15.dist-info/LICENSE.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/charset_normalizer-3.1.0.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/_common.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/rrule.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/easter.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/tzwin.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/relativedelta.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/_version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/tz/_common.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/tz/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/tz/tz.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/tz/win.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/tz/_factories.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/zoneinfo/rebuild.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/zoneinfo/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/parser/_parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/parser/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/dateutil/parser/isoparser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/events.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/nodes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/cyaml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/emitter.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/_yaml.cpython-310-x86_64-linux-gnu.so
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/error.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/composer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/reader.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/dumper.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/scanner.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/serializer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/resolver.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/loader.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/constructor.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/representer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/yaml/tokens.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/modified.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/wheel.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/script.tmpl
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/launch.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/cli-arm64.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/installer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/unicode_utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_core_metadata.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/gui-32.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/windows_support.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/msvc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_path.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/sandbox.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_imp.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/dist.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/errors.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/monkey.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/gui-arm64.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/cli.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_normalization.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/glob.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_reqs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/archive_util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_itertools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/cli-32.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_entry_points.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/namespaces.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/extension.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/gui.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/package_index.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/script (dev).tmpl
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/logging.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/warnings.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/gui-64.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_importlib.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/cli-64.exe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/discovery.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/build_meta.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/depends.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/compat/py310.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/compat/py311.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/compat/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/compat/py39.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/register.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/install.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/dist_info.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/develop.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/alias.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/_requirestxt.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/build_py.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/build_clib.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/saveopts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/install_lib.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/build.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/editable_wheel.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/upload.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/sdist.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/egg_info.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/rotate.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/install_scripts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/easy_install.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/setopt.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/bdist_wheel.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/test.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/command/build_ext.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/extern/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/zipp.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_py39compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_text.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_meta.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_collections.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_metadata/_functools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_common.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_adapters.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/abc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/readers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/simple.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_legacy.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_itertools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/importlib_resources/_compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/wheel/util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/wheel/wheelfile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/wheel/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/wheel/macosx_libfile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/wheel/metadata.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/context.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/text/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/backports/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/backports/tarfile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.pyi
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_tokenizer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_elffile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/metadata.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_types.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_vendor/tomli/_re.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/expand.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/setupcfg.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/formats.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/error_reporting.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/config/_validate_pyproject/extra_validations.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/zosccompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/log.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/py39compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_log.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_macos_compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/dist.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/errors.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/debug.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_itertools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_modified.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_collections.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/_functools.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/config.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/core.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/compat/py38.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/compat/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools/_distutils/command/_framework_compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi-1.15.1.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/poolmanager.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/request.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/connectionpool.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/filepost.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/connection.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/response.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/fields.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/exceptions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/_collections.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/_version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/pyopenssl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/_appengine_environ.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/appengine.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/securetransport.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/socks.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/ntlmpool.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/_securetransport/bindings.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/_securetransport/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/contrib/_securetransport/low_level.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/packages/six.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/packages/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/packages/backports/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/packages/backports/makefile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/request.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/proxy.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/ssl_match_hostname.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/ssl_.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/ssltransport.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/wait.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/connection.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/queue.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/response.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/url.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/retry.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/urllib3/util/timeout.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro/__main__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro/distro.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/__main__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/nodes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/frontend.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/statemachine.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/examples.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/io.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/core.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/gl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/lt.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/ar.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/ja.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/fr.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/he.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/ca.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/de.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/sv.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/sk.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/eo.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/ru.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/en.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/da.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/lv.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/fi.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/fa.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/cs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/zh_cn.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/pt_br.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/nl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/pl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/af.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/it.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/ko.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/es.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/languages/zh_tw.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/urischemes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/code_analyzer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/punctuation_chars.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/smartquotes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/roman.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/error_reporting.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/math/math2html.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/math/unichar2tex.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/math/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/math/latex2mathml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/math/tex2unichar.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/utils/math/tex2mathml_extern.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/readers/doctree.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/readers/pep.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/readers/standalone.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/readers/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/commonmark_wrapper.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/recommonmark_wrapper.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/null.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/roles.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/states.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/tableparser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/gl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/lt.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/ar.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/ja.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/fr.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/he.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/ca.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/de.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/sv.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/sk.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/eo.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/ru.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/en.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/da.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/lv.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/fi.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/fa.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/cs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/zh_cn.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/pt_br.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/nl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/pl.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/af.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/it.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/ko.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/es.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/languages/zh_tw.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/references.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/body.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/parts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/admonitions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/tables.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/html.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/images.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/directives/misc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/mmlalias.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isocyr1.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/s5defs.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isomscr-wide.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isocyr2.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isoamsc.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isoamsb.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isogrk4-wide.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isogrk3.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isomopf-wide.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/xhtml1-symbol.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isopub.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/README.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/mmlextra.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isodia.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isoamsn.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isogrk1.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isoamso.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isomfrk.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isogrk4.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/mmlextra-wide.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isomopf.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/xhtml1-special.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isotech.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isogrk2.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isoamsr.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isolat1.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isoamsa.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isomscr.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/xhtml1-lat1.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isobox.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isonum.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isomfrk-wide.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/parsers/rst/include/isolat2.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/references.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/peps.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/frontmatter.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/writer_aux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/parts.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/components.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/misc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/transforms/universal.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/_html_base.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/docutils_xml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/manpage.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/pseudoxml.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/null.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/xetex/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/latex2e/default.tex
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/latex2e/docutils.sty
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/latex2e/titlepage.tex
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/latex2e/titlingpage.tex
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/latex2e/xelatex.tex
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/latex2e/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/README.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/medium-black/__base__
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/medium-black/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/big-white/framing.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/big-white/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/small-black/__base__
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/small-black/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/medium-white/framing.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/medium-white/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/framing.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/opera.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/slides.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/outline.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/s5-core.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/print.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/default/slides.js
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/big-black/framing.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/big-black/__base__
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/big-black/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/small-white/framing.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/s5_html/themes/small-white/pretty.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/odf_odt/styles.odt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/odf_odt/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/odf_odt/pygmentsformatter.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/pep_html/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/pep_html/template.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/pep_html/pep.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/tuftig.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/plain.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/math.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/minimal.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/template.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html5_polyglot/responsive.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html4css1/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html4css1/template.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/docutils/writers/html4css1/html4css1.css
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setproctitle/_setproctitle.cpython-310-x86_64-linux-gnu.so
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/uts46data.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/idnadata.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/codec.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/intranges.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/package_data.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/idna/core.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/distro.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/environment.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/rospack.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/common.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/stack.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/rosversion.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/manifest.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/rospkg/os_detect.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/recompiler.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/_embedding.h
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/backend_ctypes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/verifier.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/ffiplatform.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/parse_c_type.h
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/vengine_gen.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/vengine_cpy.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/cparser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/error.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/model.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/setuptools_ext.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/pkgconfig.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/lock.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/_cffi_include.h
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/cffi_opcode.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/api.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/_cffi_errors.h
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/cffi/commontypes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi/__main__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi/cacert.pem
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi/core.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/six-1.16.0.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/_tokenizer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/requirements.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/_manylinux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/py.typed
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/_parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/markers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/_elffile.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/_structures.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/_musllinux.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/specifiers.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/tags.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/packaging/metadata.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/certifi-2022.12.7.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/distro-1.8.0.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/python_setup.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/tool_detection.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cmake.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/changelog_generator.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/changelog_generator_vcs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/rospack.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/workspace_vcs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/group_dependency.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/workspaces.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/changelog.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/packages.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/terminal_color.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/group_membership.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/package_templates.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/metapackage.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/condition.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/topological_order.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/package_version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/package.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/templates/metapackage.cmake.in
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/templates/package.xml.in
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/templates/CMakeLists.txt.in
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/tag_changelog.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/generate_changelog.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/prepare_release.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/create_pkg.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/find_pkg.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/test_changelog.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/catkin_pkg/cli/package_version.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/_yaml/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/zip-safe
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/python_dateutil-2.8.2.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser-2.21.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/c_lexer.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/yacctab.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ast_transforms.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/c_parser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/lextab.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/plyparser.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/_c_ast.cfg
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/c_ast.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/c_generator.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/_build_tables.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/_ast_gen.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ply/ctokens.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ply/yacc.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ply/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ply/cpp.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ply/ygen.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/pycparser/ply/lex.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/certs.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/hooks.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/compat.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/help.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/models.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/__init__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/_internal_utils.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/packages.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/status_codes.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/api.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/__version__.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/structures.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/auth.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/exceptions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/cookies.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/sessions.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/requests/adapters.py
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/PyYAML-6.0.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/entry_points.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/top_level.txt
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/WHEEL
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/INSTALLER
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/METADATA
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/REQUESTED
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/RECORD
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/lib/python3.10/site-packages/setuptools-70.1.1.dist-info/LICENSE
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/venv/man/man1/nosetests.1
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/cmake/test_catkin_virtualenv_uvConfig.cmake
+Symlinking /home/bstrausser/locus_dev/devel/share/test_catkin_virtualenv_uv/cmake/test_catkin_virtualenv_uvConfig-version.cmake
+
+Finished << test_catkin_virtualenv_uv:symlink
+Finished <<< test_catkin_virtualenv_uv [ 4.1 seconds ]
+[build] Summary: All 3 packages succeeded!
+[build] Ignored: 7 packages were skipped or are skiplisted.
+[build] Warnings: 1 packages succeeded with warnings.
+[build] Abandoned: No packages were abandoned.
+[build] Failed: No packages failed.
+[build] Runtime: 6.0 seconds total.
+[build] Note: Workspace packages have changed, please re-source setup files to use them.
diff --git a/test_catkin_virtualenv_uv/package.xml b/test_catkin_virtualenv_uv/package.xml
new file mode 100644
index 0000000..ca03b3e
--- /dev/null
+++ b/test_catkin_virtualenv_uv/package.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ test_catkin_virtualenv_uv
+ 0.11.0
+ Basic catkin_virtualenv test.
+
+ Barrett Strausser
+ GPL
+ Barrett Strausser
+
+ catkin
+
+ catkin_virtualenv
+
+ rostest
+
+
+ requirements.txt
+
+
+
diff --git a/test_catkin_virtualenv_uv/requirements.in b/test_catkin_virtualenv_uv/requirements.in
new file mode 100644
index 0000000..85679eb
--- /dev/null
+++ b/test_catkin_virtualenv_uv/requirements.in
@@ -0,0 +1,2 @@
+requests>=2
+packaging
diff --git a/test_catkin_virtualenv_uv/requirements.txt b/test_catkin_virtualenv_uv/requirements.txt
new file mode 100644
index 0000000..a1624e7
--- /dev/null
+++ b/test_catkin_virtualenv_uv/requirements.txt
@@ -0,0 +1,8 @@
+certifi==2022.12.7 # via requests
+cffi==1.15.1 # via cryptography
+charset-normalizer==3.1.0 # via requests
+idna==3.4 # via requests
+packaging==23.1 # via -r requirements.in
+pycparser==2.21 # via cffi
+requests==2.29.0 # via -r requirements.in
+urllib3==1.26.15 # via requests
diff --git a/test_catkin_virtualenv_uv/test-log b/test_catkin_virtualenv_uv/test-log
new file mode 100644
index 0000000..6534273
--- /dev/null
+++ b/test_catkin_virtualenv_uv/test-log
@@ -0,0 +1,196 @@
+Starting >>> test_catkin_virtualenv_uv
+Starting >> test_catkin_virtualenv_uv:loadenv
+Starting >> test_catkin_virtualenv_uv:check
+Subprocess > test_catkin_virtualenv_uv:check `cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make cmake_check_build_system; cd -`
+Output << test_catkin_virtualenv_uv:check /home/bstrausser/locus_dev/logs/test_catkin_virtualenv_uv/test.check.000.log
+/usr/bin/cmake -S/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv -B/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv --check-build-system CMakeFiles/Makefile.cmake 0
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make cmake_check_build_system; cd -
+
+Finished << test_catkin_virtualenv_uv:check
+Starting >> test_catkin_virtualenv_uv:findtest
+Subprocess > test_catkin_virtualenv_uv:findtest `cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make -q run_tests; cd -`
+Starting >> test_catkin_virtualenv_uv:make
+Subprocess > test_catkin_virtualenv_uv:make `cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make run_tests; cd -`
+[test 0.1 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.2 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.3 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.4 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.5 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.6 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.7 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.8 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 0.9 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.0 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.1 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.2 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.3 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.4 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.5 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.6 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.7 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.8 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 1.9 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
[test 2.0 s] [0/1 complete] [1/16 jobs] [0 queued] [test_catkin_virtualenv_...
/usr/bin/cmake -S/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv -B/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/make -f CMakeFiles/Makefile2 run_tests
+make[1]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/cmake -S/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv -B/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv --check-build-system CMakeFiles/Makefile.cmake 0
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles 5
+/usr/bin/make -f CMakeFiles/Makefile2 CMakeFiles/run_tests.dir/all
+make[2]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/clean_test_results_test_catkin_virtualenv_uv.dir/build.make CMakeFiles/clean_test_results_test_catkin_virtualenv_uv.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/clean_test_results_test_catkin_virtualenv_uv.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/clean_test_results_test_catkin_virtualenv_uv.dir/build.make CMakeFiles/clean_test_results_test_catkin_virtualenv_uv.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/python3 /opt/locusrobotics/hotdog/dev/ros1/share/catkin/cmake/test/remove_test_results.py /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv
+Removing test result files from '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv'
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[ 0%] Built target clean_test_results_test_catkin_virtualenv_uv
+/usr/bin/make -f CMakeFiles/tests.dir/build.make CMakeFiles/tests.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/tests.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/tests.dir/build.make CMakeFiles/tests.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+make[3]: Nothing to be done for 'CMakeFiles/tests.dir/build'.
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[ 0%] Built target tests
+/usr/bin/make -f CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/build.make CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/build.make CMakeFiles/test_catkin_virtualenv_uv_generate_virtualenv.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[ 20%] [34m[1mPer-package virtualenv target[0m
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target test_catkin_virtualenv_uv_generate_virtualenv
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest_test_virtualenv_script.test.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest_test_virtualenv_script.test.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest_test_virtualenv_script.test.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest_test_virtualenv_script.test.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest_test_virtualenv_script.test.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+catkin_generated/env_cached.sh /usr/bin/python3 /opt/locusrobotics/hotdog/dev/ros1/share/catkin/cmake/test/run_tests.py /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/rostest-test_virtualenv_script.xml "/usr/bin/python3 /opt/locusrobotics/hotdog/dev/ros1/share/rostest/cmake/../../../bin/rostest --pkgdir=/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv --package=test_catkin_virtualenv_uv --results-filename test_virtualenv_script.xml --results-base-dir \"/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results\" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test "
+-- run_tests.py: execute commands
+ /usr/bin/python3 /opt/locusrobotics/hotdog/dev/ros1/share/rostest/cmake/../../../bin/rostest --pkgdir=/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv --package=test_catkin_virtualenv_uv --results-filename test_virtualenv_script.xml --results-base-dir "/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test
+... logging to /home/bstrausser/.ros/log/rostest-LOCLAP680-650315.log
+[INFO] [rostest]: rostest starting with options {{'text_mode': False, 'pkg_dir': '/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv', 'package': 'test_catkin_virtualenv_uv', 'results_filename': 'test_virtualenv_script.xml', 'results_base_dir': '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results', 'reuse_master': None, 'clear': None}}, args ['/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test']
+[ROSUNIT] Outputting test results to /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/rostest-test_virtualenv_script.xml
+[INFO] [rostest]: setup[/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test] run_id[cdb06eac-364e-11ef-ba32-1f9179c6d19f] starting
+[INFO] [rostest]: started roslaunch server http://LOCLAP680:42033/
+[INFO] [rostest]: _addRostestParent []
+[INFO] [rostest]: setup[/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test] run_id[cdb06eac-364e-11ef-ba32-1f9179c6d19f] done
+[INFO] [rostest]: Running test [virtualenv_script]
+[INFO] [rostest]: ROS_MASTER_URI=http://LOCLAP680:44861/
+[INFO] [rostest]: setting /run_id to cdb06eac-364e-11ef-ba32-1f9179c6d19f
+[INFO] [rostest]: running test virtualenv_script
+[INFO] [rostest]: process[virtualenv_script-1]: started with pid [650351]
+[INFO] [rostest]: [virtualenv_script-1] process has finished cleanly
+log file: /home/bstrausser/.ros/log/cdb06eac-364e-11ef-ba32-1f9179c6d19f/virtualenv_script-1*.log
+[INFO] [rostest]: test [virtualenv_script] finished
+[INFO] [rostest]: test [virtualenv_script] results are in [/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/rosunit-virtualenv_script.xml]
+[INFO] [rostest]: test [virtualenv_script] results summary: 0 errors, 0 failures, 5 tests
+[INFO] [rostest]: [ROSTEST] test [virtualenv_script] done
+[INFO] [rostest]: tearDown[/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test]
+[INFO] [rostest]: shutting down processing monitor...
+[INFO] [rostest]: ... shutting down processing monitor complete
+[INFO] [rostest]: rostest teardown /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/test/virtualenv_script.test complete
+[Testcase: testvirtualenv_script] ... ok
+[INFO] [rostest]: finally rostest parent tearDown []
+[INFO] [rostest]: calling pmon_shutdown
+[INFO] [rostest]: ... done calling pmon_shutdown
+
+[ROSTEST]-----------------------------------------------------------------------
+
+[test_catkin_virtualenv_uv.rosunit-virtualenv_script/test_cannot_import][passed]
+[test_catkin_virtualenv_uv.rosunit-virtualenv_script/test_check_returns][passed]
+[test_catkin_virtualenv_uv.rosunit-virtualenv_script/test_import][passed]
+[test_catkin_virtualenv_uv.rosunit-virtualenv_script/test_import_file_path][passed]
+[test_catkin_virtualenv_uv.rosunit-virtualenv_script/test_packages_exit_in_cache][passed]
+
+SUMMARY
+[32m * RESULT: SUCCESS[0m
+ * TESTS: 5
+ * ERRORS: 0
+ * FAILURES: 0
+
+rostest log file is in /home/bstrausser/.ros/log/rostest-LOCLAP680-650315.log
+-- run_tests.py: verify result "/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/rostest-test_virtualenv_script.xml"
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target _run_tests_test_catkin_virtualenv_uv_rostest_test_virtualenv_script.test
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+make[3]: Nothing to be done for 'CMakeFiles/_run_tests_test_catkin_virtualenv_uv_rostest.dir/build'.
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target _run_tests_test_catkin_virtualenv_uv_rostest
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check_test_catkin_virtualenv_uv-requirements.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check_test_catkin_virtualenv_uv-requirements.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check_test_catkin_virtualenv_uv-requirements.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check_test_catkin_virtualenv_uv-requirements.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check_test_catkin_virtualenv_uv-requirements.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+catkin_generated/env_cached.sh /usr/bin/python3 /opt/locusrobotics/hotdog/dev/ros1/share/catkin/cmake/test/run_tests.py /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/venv_check-test_catkin_virtualenv_uv-requirements.xml --working-dir /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv "/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/catkin_generated/env_cached.sh rosrun catkin_virtualenv venv_check venv --requirements /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt --use-uv --xunit-output /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/venv_check-test_catkin_virtualenv_uv-requirements.xml"
+-- run_tests.py: execute commands with working directory "/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv"
+ /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/catkin_generated/env_cached.sh rosrun catkin_virtualenv venv_check venv --requirements /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt --use-uv --xunit-output /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/venv_check-test_catkin_virtualenv_uv-requirements.xml
+venv
+Running Command: /home/bstrausser/.cargo/bin/uv pip compile --no-header --annotation-style line /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt
+[INFO] [catkin_virtualenv]: /home/bstrausser/.cargo/bin/uv pip compile --no-header --annotation-style line /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt
+Running Diff
+Traceback (most recent call last):
+ File "/home/bstrausser/locus_dev/devel/lib/catkin_virtualenv/venv_check", line 15, in
+ exec(compile(fh.read(), python_script, 'exec'), context)
+ File "/home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_check", line 68, in
+ main()
+ File "/home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_check", line 53, in main
+ check_xunit(args, diff)
+ File "/home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/scripts/venv_check", line 59, in check_xunit
+ diff_check(args.xunit_output, args.requirements, diff)
+ File "/home/bstrausser/locus_dev/src/catkin_virtualenv/catkin_virtualenv/src/catkin_virtualenv/cli.py", line 21, in diff_check
+ raise RuntimeError("Requirements must not be not none and must be a list")
+RuntimeError: Requirements must not be not none and must be a list
+-- run_tests.py: verify result "/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/venv_check-test_catkin_virtualenv_uv-requirements.xml"
+Cannot find results, writing failure results to '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/test_results/test_catkin_virtualenv_uv/MISSING-venv_check-test_catkin_virtualenv_uv-requirements.xml'
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target _run_tests_test_catkin_virtualenv_uv_venv_check_test_catkin_virtualenv_uv-requirements
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+make[3]: Nothing to be done for 'CMakeFiles/_run_tests_test_catkin_virtualenv_uv_venv_check.dir/build'.
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target _run_tests_test_catkin_virtualenv_uv_venv_check
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/_run_tests_test_catkin_virtualenv_uv.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/_run_tests_test_catkin_virtualenv_uv.dir/build.make CMakeFiles/_run_tests_test_catkin_virtualenv_uv.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+make[3]: Nothing to be done for 'CMakeFiles/_run_tests_test_catkin_virtualenv_uv.dir/build'.
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target _run_tests_test_catkin_virtualenv_uv
+/usr/bin/make -f CMakeFiles/run_tests.dir/build.make CMakeFiles/run_tests.dir/depend
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles/run_tests.dir/DependInfo.cmake --color=
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/make -f CMakeFiles/run_tests.dir/build.make CMakeFiles/run_tests.dir/build
+make[3]: Entering directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+make[3]: Nothing to be done for 'CMakeFiles/run_tests.dir/build'.
+make[3]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+[100%] Built target run_tests
+make[2]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+/usr/bin/cmake -E cmake_progress_start /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv/CMakeFiles 0
+make[1]: Leaving directory '/home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv'
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si /usr/bin/make run_tests; cd -
+
+Finished << test_catkin_virtualenv_uv:make
+Starting >> test_catkin_virtualenv_uv:results
+Subprocess > test_catkin_virtualenv_uv:results `cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si catkin_test_results --verbose; cd -`
+Full test results for 'test_results/test_catkin_virtualenv_uv/MISSING-venv_check-test_catkin_virtualenv_uv-requirements.xml'
+-------------------------------------------------
+
+
+
+
+
+
+-------------------------------------------------
+test_results/test_catkin_virtualenv_uv/MISSING-venv_check-test_catkin_virtualenv_uv-requirements.xml: 1 tests, 0 errors, 1 failures, 0 skipped
+Summary: 7 tests, 0 errors, 1 failures, 0 skipped
+cd /home/bstrausser/locus_dev/build/test_catkin_virtualenv_uv; catkin test --get-env test_catkin_virtualenv_uv | catkin env -si catkin_test_results --verbose; cd -
+
+Failed <<< test_catkin_virtualenv_uv [ 2.1 seconds ]
+[test] Summary: 0 of 1 packages succeeded.
+[test] Ignored: None.
+[test] Warnings: 1 packages succeeded with warnings.
+[test] Abandoned: No packages were abandoned.
+[test] Failed: 1 packages failed.
+[test] Runtime: 2.1 seconds total.
diff --git a/test_catkin_virtualenv_uv/test/test_virtualenv_library.py b/test_catkin_virtualenv_uv/test/test_virtualenv_library.py
new file mode 100644
index 0000000..f4ec29a
--- /dev/null
+++ b/test_catkin_virtualenv_uv/test/test_virtualenv_library.py
@@ -0,0 +1,28 @@
+# Software License Agreement (GPL)
+#
+# \file test_virtualenv_library.py
+# \authors Paul Bovbel
+# \copyright Copyright (c) (2017,), Locus Robotics, All rights reserved.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+import importlib
+import unittest
+
+from packaging import version
+
+
+class TestVirtualenv(unittest.TestCase):
+ def test_import(self):
+ requests = importlib.import_module("requests")
+ self.assertGreaterEqual(version.parse(requests.__version__), version.parse("2"))
diff --git a/test_catkin_virtualenv_uv/test/test_virtualenv_script_uv b/test_catkin_virtualenv_uv/test/test_virtualenv_script_uv
new file mode 100644
index 0000000..b33977d
--- /dev/null
+++ b/test_catkin_virtualenv_uv/test/test_virtualenv_script_uv
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+# Software License Agreement (GPL)
+#
+# \file test_virtualenv_script
+# \authors Paul Bovbel
+# \copyright Copyright (c) (2017,), Locus Robotics, All rights reserved.
+#
+# This program is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+import importlib
+import rostest
+import sys
+import unittest
+import os
+import pathlib
+
+from packaging import version
+
+from catkin_virtualenv.uvvenv import check_package_exists, check_package_in_cache, UVVirtualEnv
+
+
+class TestUVVirtualenv(unittest.TestCase):
+ """
+
+ These tests run on the virtualenv initalized and installed into by Catkin.
+ No manipulation of the venv should be performed in the tests.
+
+ These test are not true unit tests.
+ Some tests require network access in order to download packages.
+ If network or package repositories are down, then tests may fail.
+
+ The tests also require disk access.
+ All tests use temporary files or directories for i/o.
+
+ """
+
+ def setUp(self) -> None:
+ self._canary_package = "requests"
+ self._non_canary_package = "numpy"
+ self._venv_dir: pathlib.Path = pathlib.Path(sys.executable).parent.parent
+
+ # TODO resolve this from CMAKE args or environment
+ # This is current set in the CMakeLists.txt for this project
+ self._cache_path = pathlib.Path("/tmp/testing/uv/cache")
+
+ # TODO cleaner way to do this
+ # This relies on knowing that the .venv directory is a sibling of the requirements.txt file
+ self._requirements_text_path = pathlib.Path(
+ "/home/bstrausser/locus_dev/src/catkin_virtualenv/test_catkin_virtualenv_uv/requirements.txt"
+ )
+
+ self._venv_dir_suffix = "test_catkin_virtualenv_uv/venv"
+ self._uvvenv = UVVirtualEnv(self._venv_dir)
+ return super().setUp()
+
+ def test_import(self):
+ """
+ Test that a given package is importable from the venv
+ """
+ requests = importlib.import_module(self._canary_package)
+ self.assertGreaterEqual(version.parse(requests.__version__), version.parse("2"))
+
+ def test_cannot_import(self):
+ """
+ Test that a package that has not been installed is not importable from the venv
+ """
+ with self.assertRaises(ImportError) as e:
+ importlib.import_module(self._non_canary_package)
+
+ def test_import_file_path(self):
+ """
+ Test that a package that is importable has a path rooted in the venv
+ """
+ requests = importlib.import_module(self._canary_package)
+ actual_path = pathlib.Path(requests.__file__)
+ self.assertTrue(self._venv_dir_suffix in str(actual_path))
+
+ def test_packages_exit_in_cache(self):
+ """
+ Test that a package that is found in the cache
+ """
+
+ self.assertTrue(check_package_exists(self._venv_dir, self._canary_package))
+ self.assertFalse(check_package_exists(self._venv_dir, self._non_canary_package))
+
+ def test_check_returns(self):
+ """
+ Test that the venv has no diffs from
+ """
+ self.assertTrue(self._requirements_text_path.exists())
+ diff = self._uvvenv.check(self._requirements_text_path)
+ self.assertEqual(diff, [])
+
+
+if __name__ == "__main__":
+ rostest.rosrun("test_catkin_virtualenv", "test_virtualenv_script", TestUVVirtualenv, sys.argv)
diff --git a/test_catkin_virtualenv_uv/test/virtualenv_script.test b/test_catkin_virtualenv_uv/test/virtualenv_script.test
new file mode 100644
index 0000000..32b7634
--- /dev/null
+++ b/test_catkin_virtualenv_uv/test/virtualenv_script.test
@@ -0,0 +1,24 @@
+
+
+
+
+