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

add find_package(fmt) #4

Closed
wants to merge 2 commits into from
Closed

add find_package(fmt) #4

wants to merge 2 commits into from

Conversation

k-okada
Copy link

@k-okada k-okada commented Jan 8, 2025

to resolve

[franka_hw:cmake] -- Configuring done
[franka_hw:cmake] CMake Error at /home/k-okada/catkin_ws/ws_franka/src/franka_ros/franka_hw/CMakeLists.txt:79 (add_library):
[franka_hw:cmake]   Target franka_control_services links to target fmt::fmt but the target
[franka_hw:cmake]   was not found.  Perhaps a find_package() call is missing for an IMPORTED
[franka_hw:cmake]   target, or an ALIAS target is missing?

error, add find_package(fmt)

see frankaemika/libfranka#171 (comment) for the detail

@rhaschke
Copy link
Owner

rhaschke commented Jan 8, 2025

I am using libfranka 0.9.2 from https://ros.packages.techfak.net without issues:

$ apt policy ros-one-libfranka
ros-one-libfranka:
  Installed: 0.9.2-0jammy.20240914.2003
  Candidate: 0.9.2-0jammy.20240914.2003
  Version table:
 *** 0.9.2-0jammy.20240914.2003 500
        500 https://ros.packages.techfak.net jammy-testing/main amd64 Packages
        100 /var/lib/dpkg/status

I guess you are using an FR3 requiring libfranka >= 0.10.
I'm not sure yet how to configure package.xml to install 0.9.2 and a newer version in a mutually exclusive fashion.
@jspricke: Is <replace> the correct tag to use (in both versions of package.xml)? That is:

  • for 0.9.2: <replace version_gte="10.0">libfranka</replace>
  • for later versions: <replace version_lt="10.0">libfranka</replace>

In any case, franka_ros is not using libfmt itself. Thus, the dependency should be fixed in libfranka, not here.
I will file a PR over there.

@rhaschke rhaschke closed this Jan 8, 2025
@jspricke
Copy link

jspricke commented Jan 8, 2025

Probably not, see https://wiki.debian.org/PackageTransition for the correct runes.

@rhaschke
Copy link
Owner

rhaschke commented Jan 8, 2025

Hm. This doesn't help me much. The terminology is too abstract for me. But thanks for the pointer.

@jspricke
Copy link

jspricke commented Jan 8, 2025

What exactly do you want to express? That both packages can't be installed at the same time? That would be <conflicts> Or that The new package replace the old one? For example by containing the same filename? That would be <breaks> and <provides>.

@rhaschke
Copy link
Owner

rhaschke commented Jan 8, 2025

Both packages can't be installed at the same time: they install similar files. This would be <conflicts>.
However, I also want to express that each package can replace the other (hopefully they are actually ABI compatible).
Thus, if I'm attempting to install one version of the package, the other one is removed automatically. I guess <conflicts> would just state the conflict and reject installation, right?

@jspricke
Copy link

jspricke commented Jan 8, 2025

Thus, if I'm attempting to install one version of the package, the other one is removed automatically.

Well apt will ask for confirmation but yes, if we state that both packages can't be installed at the same time, then apt will do that.

I guess <conflicts> would just state the conflict and reject installation, right?

Newer apt will actually provides conflict resolution so it will let the user choose what to do (probably remove the old one or keep the old and do nothing).

Actually, what are the Debian package names of those two versions? One seems to be ros-one-libfranka or do both have this name?

@rhaschke
Copy link
Owner

rhaschke commented Jan 8, 2025

Actually, what are the Debian package names of those two versions? One seems to be ros-one-libfranka or do both have this name?

Currently both packages have the same name: ros-one-libfranka. Looks like I need to give them separate names, because reprepro can only maintain a single version per name:
https://github.com/ubi-agni/ros-builder-action/actions/runs/12671366097/job/35321580731

@jspricke
Copy link

jspricke commented Jan 8, 2025

if both have the same name you don't need any extra tags just add versioned depends in the downstream users.

I think that is a limitation of reprepro I would recommend aptly or just apt-ftparchive for simple cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants