| Newsgroups |
gmane.linux.lfs.beyond.devel |
| Message-ID |
<[email protected]> |
On Sun, 2025-05-25 at 14:45 +0200, Pierre Labastie wrote:
> On Sat, 2025-05-24 at 12:39 +0800, Xi Ruoyao wrote:
> > On Sat, 2025-05-24 at 12:12 +0800, Xi Ruoyao wrote:
> > > On Fri, 2025-05-23 at 23:20 +0200, Pierre Labastie wrote:
> > > > /usr/lib/cmake/protobuf/protobuf-targets.cmake contains:
> > > > -----
> > > > add_library(protobuf::libupb STATIC IMPORTED)
> > > > -----
> > > > So if we remove libupb.a as done in protobuf instructions (since
> > > > protobuf-31), any CMakeLists.txt using this file will fail with:
> > > > ----------
> > > > CMake Error at /usr/lib/cmake/protobuf/protobuf-targets.cmake:132
> > > > (message):
> > > > The imported target "protobuf::libupb" references the file
> > > >
> > > > "/usr/lib/libupb.a"
> > > >
> > > > but this file does not exist. Possible reasons include:
> > > >
> > > > * The file was deleted, renamed, or moved to another location.
> > > >
> > > > * An install or uninstall procedure did not complete
> > > > successfully.
> > > >
> > > > * The installation package was faulty and contained
> > > >
> > > > "/usr/lib/cmake/protobuf/protobuf-targets.cmake"
> > > >
> > > > but not all the files it references.
> > > > -----------
> > > > So I think we should remove the line "rm /usr/lib/libupb.a" when
> > > > installing protobuf. libupb.a is about 520KB in size...
> > >
> > > The problem here is not to save space. It's just it shouldn't be
> > > installed even per upstream documentation
> > > (
> > > https://github.com/protocolbuffers/protobuf/blob/main/upb/README.md)
> > > :
> > >
> > > While upb offers a C API, the C API & ABI are not stable. For
> > > this
> > > reason, upb is not generally offered as a C library for direct
> > > consumption, and there are no releases.
> > >
> > > I'll try to figure out a way to prevent it from being installed.
> >
> > Tentative patch:
> >
> > diff --color -Naur protobuf-31.0/cmake/install.cmake protobuf-
> > 31.0.patched/cmake/install.cmake
> > --- protobuf-31.0/cmake/install.cmake 2025-05-14
> > 23:37:13.000000000 +0800
> > +++ protobuf-31.0.patched/cmake/install.cmake 2025-05-24
> > 12:39:08.572837445 +0800
> > @@ -37,9 +37,6 @@
> > if (protobuf_BUILD_LIBPROTOC)
> > list(APPEND _protobuf_libraries libprotoc)
> > endif (protobuf_BUILD_LIBPROTOC)
> > -if (protobuf_BUILD_LIBUPB)
> > - list(APPEND _protobuf_libraries libupb)
> > -endif ()
> >
> > foreach(_library ${_protobuf_libraries})
> > if (UNIX AND NOT APPLE)
> > diff --color -Naur protobuf-31.0/cmake/libprotoc.cmake protobuf-
> > 31.0.patched/cmake/libprotoc.cmake
> > --- protobuf-31.0/cmake/libprotoc.cmake 2025-05-14
> > 23:37:13.000000000 +0800
> > +++ protobuf-31.0.patched/cmake/libprotoc.cmake 2025-05-24
> > 12:28:03.095300298 +0800
> > @@ -16,8 +16,8 @@
> > set_target_properties(libprotoc PROPERTIES
> > LINK_DEPENDS ${protobuf_SOURCE_DIR}/src/libprotoc.map)
> > endif()
> > -target_link_libraries(libprotoc PRIVATE libprotobuf)
> > -target_link_libraries(libprotoc PUBLIC libupb
> > ${protobuf_ABSL_USED_TARGETS})
> > +target_link_libraries(libprotoc PRIVATE libprotobuf libupb)
> > +target_link_libraries(libprotoc PUBLIC
> > ${protobuf_ABSL_USED_TARGETS})
> > protobuf_configure_target(libprotoc)
> > if(protobuf_BUILD_SHARED_LIBS)
> > target_compile_definitions(libprotoc
> >
> This fails with:
> FAILED: CMakeFiles/protoc.dir/src/google/protobuf/compiler/main.cc.o
> /usr/bin/c++ -DPROTOBUF_USE_DLLS -I/sources/protobuf/protobuf-
> 31.0/build -I/sources/protobuf/protobuf-31.0 -
> I/sources/protobuf/protobuf-31.0/build/src -
> I/sources/protobuf/protobuf-31.0/src -I/sources/protobuf/protobuf-
> 31.0/third_party/utf8_range -O3 -DNDEBUG -fPIE -MD -MT
> CMakeFiles/protoc.dir/src/google/protobuf/compiler/main.cc.o -MF
> CMakeFiles/protoc.dir/src/google/protobuf/compiler/main.cc.o.d -o
> CMakeFiles/protoc.dir/src/google/protobuf/compiler/main.cc.o -c
> /sources/protobuf/protobuf-31.0/src/google/protobuf/compiler/main.cc
>
> In file included from /sources/protobuf/protobuf-
> 31.0/upb/reflection/common.h:15,
> from /sources/protobuf/protobuf-
> 31.0/upb/reflection/def_pool.h:15,
> from /sources/protobuf/protobuf-
> 31.0/upb/reflection/def.h:12,
> from /sources/protobuf/protobuf-
> 31.0/upb/reflection/def.hpp:26,
> from /sources/protobuf/protobuf-
> 31.0/upb_generator/minitable/generator.h:9,
> from /sources/protobuf/protobuf-
> 31.0/src/google/protobuf/compiler/main.cc:20:
> /sources/protobuf/protobuf-
> 31.0/upb/reflection/descriptor_bootstrap.h:14:10: fatal error:
> google/protobuf/descriptor.upb.h: No such file or directory
> 14 | #include "google/protobuf/descriptor.upb.h"
This was the original error building with -D protobuf_BUILD_LIBUPB=OFF
IIRC. My patch still doesn't fix it. It just removes libupb from the
installation (and also the protobuf-targets.cmake file).
--
Xi Ruoyao <[email protected]>
School of Aerospace Science and Technology, Xidian University
--
http://lists.linuxfromscratch.org/sympa/info/blfs-dev
Unsubscribe: See the above information page