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

Shadow api #580

Draft
wants to merge 33 commits into
base: zyppng-staging
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
4ca21b9
Translated using Weblate (Indonesian)
arifpedia Nov 13, 2024
8101292
Translated using Weblate (Norwegian Bokmål (nb))
Martini-141 Nov 14, 2024
df5ffcf
Translated using Weblate (Norwegian Bokmål (nb))
Martini-141 Nov 14, 2024
9f04c4a
Translated using Weblate (Portuguese (Brazil))
SottomaiorMacedoTec Nov 14, 2024
bd83475
Revert "Use a 20MB downloadSize limit as default for all downloads."
mlandres Nov 15, 2024
ebfe469
changes 17.35.14 (35)
mlandres Nov 15, 2024
47ec00c
Initial GObject code
bzeller Jun 9, 2022
ab01d5c
Hackweek, controlling zypp with python and downloading a file
bzeller Jul 1, 2022
379a82c
Add GLibTools.cmake module to help with code gen
bzeller Feb 9, 2023
63c15fd
zyppng: Add common template and helpers for CppWrapper types
bzeller Mar 15, 2023
5f78089
zyppng: Introduce more GLib wrapper types
bzeller Mar 15, 2023
077cdaa
zyppng: Automatically generate metadata for enums used in GLib code
bzeller Mar 15, 2023
fd92ac9
zyppng: Introduce ZyppExpected, a way to return either a result or a …
bzeller Mar 15, 2023
0aca4a9
zyppng: Add wrapper types for ServiceInfo and RepoInfo
bzeller Mar 15, 2023
5a2dd9e
zyppng: Add wrapper for ManagedFile
bzeller Mar 15, 2023
7684010
zyppng: Add wrapper for ProgressObserver
bzeller Mar 15, 2023
87f8165
zyppng: Save state of zyppng
bzeller Mar 15, 2023
d456897
zyppng: Downloader changes
bzeller Oct 23, 2023
46750d6
CachedPublicKeyData::Manip needs to use a reference_wrapper to be mov…
bzeller Jul 25, 2024
480dcd2
WIP Refactoring for libzypp to be context based (bsc#1230267)
bzeller Jul 16, 2024
8e0ab7d
fix parameter for repo manager refresh repos
jreidinger Sep 13, 2024
6a09503
gitignore also resulting Makefile from cmake generation
jreidinger Sep 13, 2024
59ecd5c
install zypp-glib to library location
jreidinger Sep 19, 2024
029f5cc
Move RepoInfo and family to ng, to preserve history
bzeller Sep 11, 2024
e9886e3
Moved repo parsers to ng
bzeller Sep 27, 2024
1404d89
Multiple changes to support glib API
bzeller Sep 19, 2024
002a29f
Save
bzeller Oct 23, 2024
027c678
Introduce a way to lock resources between async pipelines
bzeller Nov 13, 2024
7818fcc
Save
bzeller Nov 13, 2024
2169c6e
fixup! WIP Refactoring for libzypp to be context based (bsc#1230267)
bzeller Nov 13, 2024
7732849
Save before HackWeek
bzeller Nov 19, 2024
2a744c8
Save State
bzeller Jan 9, 2025
5731ea8
Before reset
bzeller Jan 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
build
Makefile
*.orig
*.rej
*.swp
Expand Down
19 changes: 13 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ OPTION (DISABLE_MEDIABACKEND_TESTS "Disable Tests depending on Nginx and libfcgi

OPTION (DISABLE_LIBPROXY "Build without libproxy support even if package is installed?" OFF)
OPTION (DISABLE_AUTODOCS "Do not require doxygen being installed (required to build autodocs)?" OFF)
OPTION (EXPORT_NG_API "Export experimental libzypp API" OFF)
OPTION (BUILD_GLIB_API "Build experimental glib libzypp API" OFF)
# This option will reroute all tool binaries to the libzypp build dir instead of taking those installed in the default directories.
OPTION (ENABLE_DEVEL_BUILD "Developer build, use zypp tools directly from build dir rather than the default locations" OFF)
OPTION (INSTALL_NG_BINARIES "Installs the NG binaries, disabled for now since we are not actively using them." OFF)
Expand Down Expand Up @@ -135,7 +135,10 @@ if ( NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")

if( ENABLE_UBSAN_CHECKS )
target_compile_options( zypp_general_compiler_flags INTERFACE "$<$<CONFIG:DEBUG>:-fsanitize=undefined>" )
target_compile_options( zypp_general_compiler_flags INTERFACE "$<$<CONFIG:DEBUG>:-fsanitize=address>" )
target_link_options( zypp_general_compiler_flags INTERFACE "$<$<CONFIG:DEBUG>:-fsanitize=undefined>" )
target_link_options( zypp_general_compiler_flags INTERFACE "$<$<CONFIG:DEBUG>:-fsanitize=address>" )
target_link_options( zypp_general_compiler_flags INTERFACE "$<$<CONFIG:DEBUG>:-lubsan>" )
endif()
endif()

Expand Down Expand Up @@ -401,7 +404,7 @@ MACRO(ADD_TESTS)

TARGET_LINK_LIBRARIES( ${loop_var}_test PUBLIC zypp_exe_compiler_flags )
TARGET_LINK_LIBRARIES( ${loop_var}_test PUBLIC ${TEST_REQ_LIBS} )
TARGET_LINK_LIBRARIES( ${loop_var}_test PUBLIC zypp-allsym )
TARGET_LINK_LIBRARIES( ${loop_var}_test PUBLIC zypp-allsym )
ADD_TEST( ${loop_var}_test ${CMAKE_CURRENT_BINARY_DIR}/${loop_var}_test --catch_system_errors=no)
ENDFOREACH( loop_var )
ENDMACRO(ADD_TESTS)
Expand All @@ -427,16 +430,20 @@ ADD_SUBDIRECTORY( tools )
ADD_SUBDIRECTORY( shared )
ADD_SUBDIRECTORY( doc )

IF( BUILD_GLIB_API )
ADD_SUBDIRECTORY( zypp-glib )
ENDIF ( BUILD_GLIB_API )

IF ( ENABLE_BUILD_TRANS )
ADD_SUBDIRECTORY( po )
ELSE ( ENABLE_BUILD_TRANS )
ADD_SUBDIRECTORY( po EXCLUDE_FROM_ALL )
ENDIF ( ENABLE_BUILD_TRANS )

IF ( ENABLE_BUILD_TESTS )
ADD_SUBDIRECTORY( tests )
ELSE ( ENABLE_BUILD_TESTS )
#IF ( ENABLE_BUILD_TESTS )
# ADD_SUBDIRECTORY( tests )
#ELSE ( ENABLE_BUILD_TESTS )
ADD_SUBDIRECTORY( tests EXCLUDE_FROM_ALL )
ENDIF ( ENABLE_BUILD_TESTS )
#ENDIF ( ENABLE_BUILD_TESTS )
INCLUDE(CTest)
ENABLE_TESTING()
4 changes: 2 additions & 2 deletions VERSION.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@
SET(LIBZYPP_MAJOR "17")
SET(LIBZYPP_COMPATMINOR "35")
SET(LIBZYPP_MINOR "35")
SET(LIBZYPP_PATCH "13")
SET(LIBZYPP_PATCH "14")
#
# LAST RELEASED: 17.35.13 (35)
# LAST RELEASED: 17.35.14 (35)
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
97 changes: 97 additions & 0 deletions cmake/modules/GLibTools.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Taken from https://github.com/GNOME/evolution
#
# GLibTools.cmake
#
# Provides functions to run glib tools.
#
# Functions:
#
# glib_mkenums(_output_filename_noext _header_templ _src_tmpl _enums_header ...)
# runs glib-mkenums to generate enumtypes .h and .c files from multiple
# _enums_header using _header_templ and _src_tmpl template files. It searches for files in the current source directory and
# exports to the current binary directory.
#
# An example call is:
# glib_mkenums(camel-enumtypes camel-enums.h CAMEL_ENUMTYPES_H)
# which uses camel-enums.h as the source of known enums and generates
# camel-enumtypes.h which will use the CAMEL_ENUMTYPES_H define
# and also generates camel-enumtypes.c with the needed code.
#
# glib_genmarshal(_output_filename_noext _prefix _marshallist_filename)
# runs glib-genmarshal to process ${_marshallist_filename} to ${_output_filename_noext}.c
# and ${_output_filename_noext}.h files in the current binary directory, using
# the ${_prefix} as the function prefix.
#
# glib_compile_resources _sourcedir _outputprefix _cname _inxml ...deps)
# Calls glib-compile-resources as defined in _inxml and using _outputprefix and_cname as other arguments
# beside _sourcedir. The optional arguments are other dependencies.

find_program(GLIB_MKENUMS glib-mkenums)
if(NOT GLIB_MKENUMS)
message(FATAL_ERROR "Cannot find glib-mkenums, which is required to build ${PROJECT_NAME}")
endif(NOT GLIB_MKENUMS)

function( glib_mkenums _output_filename_noext _header_templ _src_tmpl _enums_header0 )

foreach(_enums_header ${_enums_header0} ${ARGN})
list(APPEND _enums_headers "${CMAKE_CURRENT_SOURCE_DIR}/${_enums_header}")
endforeach(_enums_header)

message("Generating file ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h")

add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h
COMMAND ${GLIB_MKENUMS} --template "${CMAKE_CURRENT_SOURCE_DIR}/${_header_templ}" ${_enums_headers} >${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${_header_templ}" ${_enums_headers}
)

message("Generating file ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c")

add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c
COMMAND ${GLIB_MKENUMS} --template "${CMAKE_CURRENT_SOURCE_DIR}/${_src_tmpl}" ${_enums_headers} >${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${_src_tmpl}" ${_enums_headers}
)
endfunction( glib_mkenums )

find_program(GLIB_GENMARSHAL glib-genmarshal)
if(NOT GLIB_GENMARSHAL)
message(FATAL_ERROR "Cannot find glib-genmarshal, which is required to build ${PROJECT_NAME}")
endif(NOT GLIB_GENMARSHAL)

function(glib_genmarshal _output_filename_noext _prefix _marshallist_filename)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h
COMMAND ${GLIB_GENMARSHAL} --header --skip-source --prefix=${_prefix} "${CMAKE_CURRENT_SOURCE_DIR}/${_marshallist_filename}" >${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h.tmp
COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h.tmp ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.h
DEPENDS ${_marshallist_filename}
)

add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c
COMMAND ${CMAKE_COMMAND} -E echo " #include \\\"${_output_filename_noext}.h\\\"" >${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c.tmp
COMMAND ${GLIB_GENMARSHAL} --body --skip-source --prefix=${_prefix} "${CMAKE_CURRENT_SOURCE_DIR}/${_marshallist_filename}" >>${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c.tmp
COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c.tmp ${CMAKE_CURRENT_BINARY_DIR}/${_output_filename_noext}.c
DEPENDS ${_marshallist_filename}
)
endfunction(glib_genmarshal)

find_program(GLIB_COMPILE_RESOURCES glib-compile-resources)
if(NOT GLIB_COMPILE_RESOURCES)
message(FATAL_ERROR "Cannot find glib-compile-resources, which is required to build ${PROJECT_NAME}")
endif(NOT GLIB_COMPILE_RESOURCES)

macro(glib_compile_resources _sourcedir _outputprefix _cname _inxml)
add_custom_command(
OUTPUT ${_outputprefix}.h
COMMAND ${GLIB_COMPILE_RESOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/${_inxml} --target=${_outputprefix}.h --sourcedir=${_sourcedir} --c-name ${_cname} --generate-header
DEPENDS ${_inxml} ${ARGN}
VERBATIM
)
add_custom_command(
OUTPUT ${_outputprefix}.c
COMMAND ${GLIB_COMPILE_RESOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/${_inxml} --target=${_outputprefix}.c --sourcedir=${_sourcedir} --c-name ${_cname} --generate-source
DEPENDS ${_inxml} ${ARGN}
VERBATIM
)
endmacro(glib_compile_resources)
Loading