Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Packages built in the past but not available for ros2-distro-mutex==0.6.* #236

Closed
1 task done
traversaro opened this issue Jan 7, 2025 · 2 comments
Closed
1 task done
Labels
bug Something isn't working

Comments

@traversaro
Copy link
Member

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

As requested during the ros2-distro-mutex==0.6.* PR, I prepare a small script to check if we rebuilt all packages:

import requests

# List of architectures to check
architectures = ['linux-64', 'linux-aarch64', 'osx-64', 'osx-arm64', 'win-64']

# Define the target ros2-distro-mutex version
target_mutex_version = '0.6.* humble_*'

# Function to process packages and determine compatibility
def process_packages(packages, package_compatibility):
    for package_filename, package_info in packages.items():
        # Check if the package name starts with 'ros-humble'
        package_name = package_info.get('name', '')
        if package_name.startswith('ros-humble'):
            # Initialize the compatibility status if not already done
            if package_name not in package_compatibility:
                package_compatibility[package_name] = False
            # Check if the package has a dependency on ros2-distro-mutex
            if 'depends' in package_info:
                for dependency in package_info['depends']:
                    if dependency.startswith('ros2-distro-mutex'):
                        # Extract the version specifier from the dependency
                        if dependency.endswith(target_mutex_version):
                            package_compatibility[package_name] = True

# Iterate over each architecture
for arch in architectures:
    print(f"Checking architecture: {arch}")
    # URL of the repodata.json file for the robostack-staging channel
    repodata_url = f'https://conda.anaconda.org/robostack-staging/{arch}/repodata.json'

    try:
        # Fetch the repodata.json file
        response = requests.get(repodata_url)
        response.raise_for_status()
        repodata = response.json()

        # Initialize a dictionary to track package compatibility
        package_compatibility = {}

        # Process packages in 'packages' and 'packages.conda' sections
        process_packages(repodata.get('packages', {}), package_compatibility)
        process_packages(repodata.get('packages.conda', {}), package_compatibility)

        # Identify packages with no compatible builds
        incompatible_packages = [pkg for pkg, is_compatible in package_compatibility.items() if not is_compatible]

        # Print the list of packages with no compatible builds
        if incompatible_packages:
            print("Packages with no builds compatible with ros2-distro-mutex==0.6.0:")
            for pkg in incompatible_packages:
                print(f"  - {pkg}")
        else:
            print("All packages are compatible with ros2-distro-mutex==0.6.0.")

    except requests.exceptions.RequestException as e:
        print(f"Failed to fetch repodata for {arch}: {e}")

    print()  # Add a newline for better readability between architectures

the results are:

traversaro@IITBMP014LW012:~/pixiws/processconda$ python3 test_all.py
Checking architecture: linux-64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap
  - ros-humble-visp
  - ros-humble-turtle-tf2-py
  - ros-humble-turtle-tf2-cpp
  - ros-humble-ros-ign
  - ros-humble-moveit-ros-perception
  - ros-humble-moveit-runtime
  - ros-humble-plotjuggler
  - ros-humble-plotjuggler-msgs
  - ros-humble-plotjuggler-ros
  - ros-humble-realsense2-description
  - ros-humble-libg2o

Checking architecture: linux-aarch64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap
  - ros-humble-urdfdom-py

Checking architecture: osx-64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap
  - ros-humble-plotjuggler-msgs

Checking architecture: osx-arm64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap
  - ros-humble-plotjuggler-msgs

Checking architecture: win-64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-ros-gz-bridge
  - ros-humble-octomap
  - ros-humble-qt-gui-cpp
  - ros-humble-ros-gz-interfaces
  - ros-humble-ros-ign-interfaces
  - ros-humble-rqt-gui-cpp
  - ros-humble-ros-gz-sim
  - ros-humble-ros-gz-image
  - ros-humble-ros-ign-bridge
  - ros-humble-nav2-amcl
  - ros-humble-ros-ign-image
  - ros-humble-ros-ign-gazebo
  - ros-humble-nav2-waypoint-follower
  - ros-humble-ros-gz-sim-demos
  - ros-humble-ros-ign-gazebo-demos

I will try to fix the major ones to solve this issue.

Installed packages

.

Environment info

.
@traversaro
Copy link
Member Author

Ok, now the only remaining packages are the following:

traversaro@IITBMP014LW012:~$ python3 test.py
Checking architecture: linux-64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap

Checking architecture: linux-aarch64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap
  - ros-humble-urdfdom-py

Checking architecture: osx-64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap

Checking architecture: osx-arm64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-octomap

Checking architecture: win-64
Packages with no builds compatible with ros2-distro-mutex==0.6.0:
  - ros-humble-ros-gz-bridge
  - ros-humble-octomap
  - ros-humble-qt-gui-cpp
  - ros-humble-ros-gz-interfaces
  - ros-humble-ros-ign-interfaces
  - ros-humble-rqt-gui-cpp
  - ros-humble-ros-gz-sim
  - ros-humble-ros-gz-image
  - ros-humble-ros-ign-bridge
  - ros-humble-nav2-amcl
  - ros-humble-ros-ign-image
  - ros-humble-ros-ign-gazebo
  - ros-humble-nav2-waypoint-follower
  - ros-humble-ros-gz-sim-demos
  - ros-humble-ros-ign-gazebo-demos

They are:

  • octomap and urdfdom-py not being updated, indicating some problem in uploading vendor packages. Anyhow they are both available in conda-forge and I would like to overhaul vendor packages soon, so it is not a big problem.
  • qt-gui-cpp and rqt-gui-cpp, that are a bit "special" as they use qmake. I tought they never worked on Windows, but apparently that is not the case.
  • navigation packages on Windows, that still have compilation problems
  • gz-sim packages, that we intentionally disabled on Windows.

@traversaro
Copy link
Member Author

I opened #238 and #239 , I guess we can close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant