Package Details: gz-transport12 12.2.2-3

Git Clone URL: https://aur.archlinux.org/gz-transport12.git (read-only, click to copy)
Package Base: gz-transport12
Description: Transport library for component communication based on publication/subscription and service calls.
Upstream URL: https://github.com/gazebosim/gz-transport
Licenses: Apache-2.0
Provides: gz-transport
Submitter: oysstu
Maintainer: oysstu
Last Packager: oysstu
Votes: 0
Popularity: 0.000000
First Submitted: 2023-10-04 08:51 (UTC)
Last Updated: 2025-07-09 08:53 (UTC)

Dependencies (10)

Required by (15)

Sources (2)

Pinned Comments

oysstu commented on 2025-07-10 11:23 (UTC)

Gazebo Garden is end of life as of November 2024. I will continue to accept patches to fix build errors, but will focus my efforts on the releases supported by upstream developers.

https://gazebosim.org/docs/latest/releases/

Latest Comments

oysstu commented on 2025-07-10 11:23 (UTC)

Gazebo Garden is end of life as of November 2024. I will continue to accept patches to fix build errors, but will focus my efforts on the releases supported by upstream developers.

https://gazebosim.org/docs/latest/releases/

oysstu commented on 2025-07-09 08:59 (UTC) (edited on 2025-07-09 09:00 (UTC) by oysstu)

I have incorporated the protobuf and updated the cmake install directory to match archlinux conventions. Unfortunately, these executables end up in a few subdirectories, but this removes the need to maintain patches for every gazebo package. I might try to work with upstream to make this nicer in the future.

Thank you for making the effort to create these patches. I decided not to commit them upstream, since this package version is end of life.

oysstu commented on 2025-07-07 11:47 (UTC)

Yes, this has been patched in gz-transport 13 and 14, but 12 (Gazebo Garden) is end-of-life so I don't expect them to backport it. Is it ok if I submit your patch to upstream? It's easier for me than to maintain the patches myself.

Thanks for notifying me about the libexec install directory, I will through my gz packages and correct it.

saitewasreset commented on 2025-07-07 11:23 (UTC)

When building with newer versions of protobuf, you may encounter errors like:

error: could not convert ‘((google::protobuf::Message*)((const gz::transport::v12::ReqHandler<google::protobuf::Message, google::protobuf::Message>*)this)->gz::transport::v12::ReqHandler<google::protobuf::Message, google::protobuf::Message>::reqMsg)->google::protobuf::Message::google::protobuf::MessageLite.google::protobuf::MessageLite::GetTypeName()’ from ‘absl::lts_20250512::string_view’ {aka ‘std::basic_string_view<char>’} to ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’}
  385 |           return this->reqMsg->GetTypeName();
      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~^~
      |                                           |
      |                                           absl::lts_20250512::string_view {aka std::basic_string_view<char>}

error: no matching function for call to ‘gz::transport::v12::Node::Advertise(const std::string&, absl::lts_20250512::string_view, const gz::transport::v12::AdvertiseMessageOptions&)’
   37 |       return this->Advertise(_topic, MessageT().GetTypeName(), _options);
      |              ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/google/protobuf/port.h:185:23: error: static assertion failed
  185 |   static_assert(!std::is_base_of_v<MessageLite, To>);
      |                  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/google/protobuf/port.h:185:23: note: ‘!(bool)std::is_base_of_v<google::protobuf::MessageLite, const gz::msgs::Clock>’ evaluates to false

This occurs due to: 1. The return type change of certain protobuf methods from std::string to absl::string_view/std::string_view 2. Improper handling of the MessageLite type in template contexts

I've created a patch to resolve the build issues.

Additionally, upstream now installs certain binaries to /usr/libexec (ref), which conflicts with Arch Linux packaging policies.

A second patch reverts this change.

To apply both patches (download manually first):

--- PKGBUILD.orig       2025-07-07 17:58:43.299679210 +0800
+++ PKGBUILD.new    2025-07-07 17:38:36.441860703 +0800
@@ -24,8 +24,23 @@
   'util-linux-libs'  # uuid
   )
   provides=("${_pkgbase}=${_pkgmaj}")
-source=("https://github.com/gazebosim/${_pkgbase}/archive/${pkgname}_${pkgver}.tar.gz")
-sha256sums=('8662f7412c40a362eaa0a490a0ad6bce83300d08443920cb51dbe6da0c408b6d')
+source=(
+  "https://github.com/gazebosim/${_pkgbase}/archive/${pkgname}_${pkgver}.tar.gz"
+  "fix_protobuf_build.patch"
+  "fix_libexec.patch"
+)
+sha256sums=(
+  '8662f7412c40a362eaa0a490a0ad6bce83300d08443920cb51dbe6da0c408b6d'
+  '1b46124c4bf23d31e6e16602b19a2d303c1b1702f975b7c1acc6c43c0c19e0f2'
+  '6cbfc25b267684fa26d07dfc748ac17560118a908acb7fc2bc943932c89b68f0'
+)
+
+prepare() {
+  cd "${srcdir}/${_pkgbase}-${pkgname}_${pkgver}"
+
+  patch -Np1 -i "../fix_protobuf_build.patch"
+  patch -Np1 -i "../fix_libexec.patch"
+}

 build() {
   cmake -B build -S "${_pkgbase}-${pkgname}_${pkgver}" \