From 53edfa0d72381850377346980d7a7be8def4bac5 Mon Sep 17 00:00:00 2001 From: Duncan Mac-Vicar P Date: Tue, 5 Feb 2008 15:15:11 +0000 Subject: [PATCH] move lot of stuff to ZYppCommon --- CMakeLists.txt | 125 ++------------------------------------- cmake/modules/ZyppCommon.cmake | 129 +++++++++++++++++++++++++++++++++++++++++ zypp/RepoManager.cc | 36 ++++-------- zypp/RepoManager.h | 21 ++----- 4 files changed, 148 insertions(+), 163 deletions(-) create mode 100644 cmake/modules/ZyppCommon.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8de9080..7234d59 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,36 +1,10 @@ PROJECT(libzypp) - -# Library -IF ( DEFINED LIB ) - SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB}" ) -ELSE ( DEFINED LIB ) - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET( LIB_SUFFIX "64" ) - ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8") - SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" ) -ENDIF ( DEFINED LIB ) -MESSAGE(STATUS "Libraries will be installed in ${LIB_INSTALL_DIR}" ) - -# system configuration dir (etc) - -IF( NOT DEFINED SYSCONFDIR ) - IF ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) - # if installing in usr, set sysconfg to etc - SET( SYSCONFDIR /etc ) - ELSE ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) - SET ( SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" ) - ENDIF ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) -ENDIF( NOT DEFINED SYSCONFDIR ) -MESSAGE(STATUS "Config files will be installed in ${SYSCONFDIR}" ) - -#################################################################### -# CONFIGURATION # -#################################################################### - # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked SET( CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ) +INCLUDE(ZyppCommon) INCLUDE( ${CMAKE_SOURCE_DIR}/VERSION.cmake ) + MATH( EXPR LIBZYPP_CURRENT "${LIBZYPP_MAJOR} * 100 + ${LIBZYPP_MINOR}" ) MATH( EXPR LIBZYPP_AGE "${LIBZYPP_MINOR} - ${LIBZYPP_COMPATMINOR}" ) # Libtool wanted current:patch:age @@ -58,58 +32,10 @@ SET( CPACK_GENERATOR "TBZ2") SET( CPACK_SOURCE_GENERATOR "TBZ2") SET( CPACK_SOURCE_PACKAGE_FILE_NAME "${PACKAGE}-${VERSION}" ) -# The following components are regex's to match anywhere (unless anchored) -# in absolute path + filename to find files or directories to be excluded -# from source tarball. -SET (CPACK_SOURCE_IGNORE_FILES -#svn files -"\\\\.svn/" -"\\\\.cvsignore$" -# temporary files -"\\\\.swp$" -# backup files -"~$" -# eclipse files -"\\\\.cdtproject$" -"\\\\.cproject$" -"\\\\.project$" -"\\\\.settings/" -# others -"\\\\.#" -"/#" -"/build/" -"/_build/" -"/\\\\.git/" -# used before -"/CVS/" -"/\\\\.libs/" -"/\\\\.deps/" -"\\\\.o$" -"\\\\.lo$" -"\\\\.la$" -"Makefile\\\\.in$" -) - INCLUDE(CPack) #################################################################### -SET( DOC_INSTALL_DIR - "${CMAKE_INSTALL_PREFIX}/share/doc/packages/${PACKAGE}" - CACHE PATH "The install dir for documentation (default prefix/share/doc/packages/${PACKAGE})" - FORCE -) - -#################################################################### -# INCLUDES # -#################################################################### - -#SET (CMAKE_INCLUDE_DIRECTORIES_BEFORE ON) -INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} SYSTEM ) - -#################################################################### - - FIND_PACKAGE(Rpm REQUIRED) IF ( NOT RPM_FOUND) MESSAGE( FATAL_ERROR " rpm not found" ) @@ -158,14 +84,6 @@ ELSE(GLIB_FOUND) MESSAGE( FATAL_ERROR "glib not found" ) ENDIF(GLIB_FOUND) -#IF (DBUS_GLIB_FOUND) -# MESSAGE( STATUS "dbus-glib found" ) -# INCLUDE_DIRECTORIES(${DBUS_GLIB_INCLUDE_DIR}) -# LINK_DIRECTORIES(${DBUS_GLIB_LINK_DIR}) -#ELSE(DBUS_GLIB_FOUND) -# MESSAGE( ERROR "dbus-glib not found" ) -#ENDIF(DBUS_GLIB_FOUND) - FIND_PACKAGE(Curl REQUIRED) IF ( NOT CURL_FOUND) MESSAGE( FATAL_ERROR " curl not found" ) @@ -219,12 +137,11 @@ ENDMACRO(SPECFILE) SPECFILE() -MESSAGE(STATUS "Writing pkg-config file...") -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/libzypp.pc.cmake ${CMAKE_BINARY_DIR}/libzypp.pc @ONLY) -INSTALL( FILES ${CMAKE_BINARY_DIR}/libzypp.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) +#PKGCONFIGFILE() MESSAGE(STATUS "FindZypp.cmake will be installed in ${CMAKE_INSTALL_PREFIX}/share/cmake/Modules") INSTALL( FILES ${CMAKE_SOURCE_DIR}/cmake/modules/FindZypp.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/share/cmake/Modules ) +INSTALL( FILES ${CMAKE_SOURCE_DIR}/cmake/modules/ZyppCommon.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/share/cmake/Modules ) MESSAGE(STATUS "zypp.conf will be installed in ${SYSCONFDIR}/zypp") INSTALL( FILES ${CMAKE_SOURCE_DIR}/zypp.conf DESTINATION ${SYSCONFDIR}/zypp ) @@ -243,37 +160,3 @@ ADD_SUBDIRECTORY( po EXCLUDE_FROM_ALL ) ADD_SUBDIRECTORY( doc EXCLUDE_FROM_ALL ) ADD_SUBDIRECTORY( tests EXCLUDE_FROM_ALL ) -#################################################################### -# OTHERS # -#################################################################### - -#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) -#yumschemadir=${zyppdir}/schema/yum -#xmlstoreschemadir=${zyppdir}/schema/xmlstore - -#################################################################### -# INSTALL # -#################################################################### - -#INSTALL_FILES( FILES libzypp.pc ) - -ADD_CUSTOM_TARGET( svncheck - COMMAND cd $(CMAKE_SOURCE_DIR) && ! LC_ALL=C svn status --show-updates --quiet | grep -v '^Status against revision' -) - -SET( AUTOBUILD_COMMAND - COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/package/*.tar.bz2 - COMMAND ${CMAKE_MAKE_PROGRAM} package_source - COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 ${CMAKE_BINARY_DIR}/package - COMMAND ${CMAKE_COMMAND} -E remove ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 - COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/package/${PACKAGE}.changes" "${CMAKE_BINARY_DIR}/package/${PACKAGE}.changes" -) - -ADD_CUSTOM_TARGET( srcpackage_local - ${AUTOBUILD_COMMAND} -) - -ADD_CUSTOM_TARGET( srcpackage - COMMAND ${CMAKE_MAKE_PROGRAM} svncheck - ${AUTOBUILD_COMMAND} -) diff --git a/cmake/modules/ZyppCommon.cmake b/cmake/modules/ZyppCommon.cmake new file mode 100644 index 0000000..652ee1c --- /dev/null +++ b/cmake/modules/ZyppCommon.cmake @@ -0,0 +1,129 @@ +# Library +IF ( DEFINED LIB ) + SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB}" ) +ELSE ( DEFINED LIB ) + IF (CMAKE_SIZEOF_VOID_P MATCHES "8") + SET( LIB_SUFFIX "64" ) + ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8") + SET ( LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" ) +ENDIF ( DEFINED LIB ) +MESSAGE(STATUS "Libraries will be installed in ${LIB_INSTALL_DIR}" ) + +# system configuration dir (etc) +IF( NOT DEFINED SYSCONFDIR ) + IF ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) + # if installing in usr, set sysconfg to etc + SET( SYSCONFDIR /etc ) + ELSE ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) + SET ( SYSCONFDIR "${CMAKE_INSTALL_PREFIX}/etc" ) + ENDIF ( ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) +ENDIF( NOT DEFINED SYSCONFDIR ) +MESSAGE(STATUS "Config files will be installed in ${SYSCONFDIR}" ) + +# usr INSTALL_PREFIX + +IF( DEFINED CMAKE_INSTALL_PREFIX ) + SET( INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} ) +ELSE( DEFINED CMAKE_INSTALL_PREFIX ) + SET( INSTALL_PREFIX /usr ) +ENDIF( DEFINED CMAKE_INSTALL_PREFIX ) + +# system configuration dir (etc) +IF( NOT DEFINED MANDIR ) + SET( MANDIR ${INSTALL_PREFIX}/share/man ) +ENDIF( NOT DEFINED MANDIR ) +MESSAGE( "** Manual files will be installed in ${MANDIR}" ) + +#################################################################### +# CONFIGURATION # +#################################################################### + +# The following components are regex's to match anywhere (unless anchored) +# in absolute path + filename to find files or directories to be excluded +# from source tarball. +SET (CPACK_SOURCE_IGNORE_FILES +#svn files +"\\\\.svn/" +"\\\\.cvsignore$" +# temporary files +"\\\\.swp$" +# backup files +"~$" +# eclipse files +"\\\\.cdtproject$" +"\\\\.cproject$" +"\\\\.project$" +"\\\\.settings/" +# others +"\\\\.#" +"/#" +"/build/" +"/_build/" +"/\\\\.git/" +# used before +"/CVS/" +"/\\\\.libs/" +"/\\\\.deps/" +"\\\\.o$" +"\\\\.lo$" +"\\\\.la$" +"Makefile\\\\.in$" +) + +SET( DOC_INSTALL_DIR + "${CMAKE_INSTALL_PREFIX}/share/doc/packages/${PACKAGE}" + CACHE PATH "The install dir for documentation (default prefix/share/doc/packages/${PACKAGE})" + FORCE +) + +#################################################################### +# INCLUDES # +#################################################################### + +#SET (CMAKE_INCLUDE_DIRECTORIES_BEFORE ON) +INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} SYSTEM ) + + +#################################################################### +# RPM SPEC # +#################################################################### + +MACRO(SPECFILE) + MESSAGE(STATUS "Writing spec file...") + CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/${PACKAGE}.spec.cmake ${CMAKE_BINARY_DIR}/package/libzypp.spec @ONLY) + MESSAGE(STATUS "I hate you rpm-lint...!!!") + IF (EXISTS ${CMAKE_SOURCE_DIR}/package/${PACKAGE}-rpmlint.cmake) + CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/package/${PACKAGE}-rpmlint.cmake ${CMAKE_BINARY_DIR}/package/${PACKAGE}-rpmlintrc @ONLY) + ENDIF (EXISTS ${CMAKE_SOURCE_DIR}/package/${PACKAGE}-rpmlint.cmake) +ENDMACRO(SPECFILE) + +MACRO(PKGCONFGFILE) + MESSAGE(STATUS "Writing pkg-config file...") + CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/libzypp.pc.cmake ${CMAKE_BINARY_DIR}/libzypp.pc @ONLY) + INSTALL( FILES ${CMAKE_BINARY_DIR}/libzypp.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) +ENDMACRO(PKGCONFGFILE) + +#################################################################### +# INSTALL # +#################################################################### + +ADD_CUSTOM_TARGET( svncheck + COMMAND cd $(CMAKE_SOURCE_DIR) && ! LC_ALL=C svn status --show-updates --quiet | grep -v '^Status against revision' +) + +SET( AUTOBUILD_COMMAND + COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/package/*.tar.bz2 + COMMAND ${CMAKE_MAKE_PROGRAM} package_source + COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 ${CMAKE_BINARY_DIR}/package + COMMAND ${CMAKE_COMMAND} -E remove ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 + COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/package/${PACKAGE}.changes" "${CMAKE_BINARY_DIR}/package/${PACKAGE}.changes" +) + +ADD_CUSTOM_TARGET( srcpackage_local + ${AUTOBUILD_COMMAND} +) + +ADD_CUSTOM_TARGET( srcpackage + COMMAND ${CMAKE_MAKE_PROGRAM} svncheck + ${AUTOBUILD_COMMAND} +) diff --git a/zypp/RepoManager.cc b/zypp/RepoManager.cc index f584c75..a9f4dc1 100644 --- a/zypp/RepoManager.cc +++ b/zypp/RepoManager.cc @@ -894,36 +894,20 @@ namespace zypp map repo2solv; - Repository RepoManager::createFromCache( const RepoInfo &info, - const ProgressData::ReceiverFnc & progressrcv ) + void RepoManager::loadFromCache( const std::string &alias, + const ProgressData::ReceiverFnc & progressrcv ) { - callback::SendReport report; - ProgressData progress; - progress.sendTo(ProgressReportAdaptor( progressrcv, report )); - //progress.sendTo( progressrcv ); - progress.name(str::form(_("Reading repository '%s' cache"), info.name().c_str())); + sat::Pool satpool( sat::Pool::instance() ); - //_pimpl->options.repoCachePath - if ( ! isCached( info ) ) + Pathname solvfile = (_pimpl->options.repoCachePath + alias).extend(".solv"); + + if ( ! PathInfo(solvfile).isExist() ) ZYPP_THROW(RepoNotCachedException()); - - MIL << "Repository " << info.alias() << " is cached" << endl; - - CombinedProgressData subprogrcv(progress); - - repo::cached::RepoOptions opts( info, _pimpl->options.repoCachePath ); - opts.readingResolvablesProgress = subprogrcv; - //opts.repo = repo; - repo::cached::RepoImpl::Ptr repoimpl = - new repo::cached::RepoImpl( opts ); - - //repoimpl->createResolvables(); - repoimpl->resolvables(); - // read the resolvables from cache - //return Repository::noRepository; - return Repository(repoimpl); + + sat::Repo repo = satpool.addRepoSolv(solvfile, alias ); } - + + //////////////////////////////////////////////////////////////////////////// /** diff --git a/zypp/RepoManager.h b/zypp/RepoManager.h index 2d492cf..61535a6 100644 --- a/zypp/RepoManager.h +++ b/zypp/RepoManager.h @@ -252,8 +252,9 @@ namespace zypp */ bool isCached( const RepoInfo &info ) const; - /** - * \short Create a repository object from the cache data + + /** + * \short Load resolvables into the pool * * Creating from cache requires that the repository is * refreshed (metadata downloaded) and cached @@ -261,20 +262,8 @@ namespace zypp * \throws repo::RepoNoAliasException if can't figure an alias to look in cache * \throw RepoNotCachedException When the source is not cached. */ - Repository createFromCache( const RepoInfo &info, - const ProgressData::ReceiverFnc & progressrcv = ProgressData::ReceiverFnc() ); - - /** - * \short Create a repository object from raw metadata - * - * Creating from cache requires that the repository is - * refreshed (metadata downloaded) - * - * \throw Exception If there are errors parsing the - * raw metadata - */ - Repository createFromMetadata( const RepoInfo &info, - const ProgressData::ReceiverFnc & progressrcv = ProgressData::ReceiverFnc() ); + void loadFromCache( const std::string &alias, + const ProgressData::ReceiverFnc & progressrcv = ProgressData::ReceiverFnc() ); /** * \short Probe repo metadata type. -- 2.7.4