mirror of https://github.com/vmware/tdnf.git
Merge pull request #92 from cbsiddharth/topic/cmake_build
Switch to cmake builds and fix a bunch of other stuffs
This commit is contained in:
commit
59293d015e
|
@ -79,3 +79,6 @@ __pycache__/
|
|||
|
||||
#generated files
|
||||
*.pc
|
||||
|
||||
# build directory
|
||||
build/
|
||||
|
|
|
@ -2,4 +2,4 @@ services:
|
|||
- docker
|
||||
|
||||
script:
|
||||
- bash ./build-docker.sh
|
||||
- bash ./docker-build.sh
|
||||
|
|
|
@ -0,0 +1,224 @@
|
|||
#
|
||||
# Copyright (C) 2019 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU General Public License v2 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
# Author: Siddharth Chandrasekaran <csiddharth@vmware.com>
|
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.0 FATAL_ERROR)
|
||||
|
||||
project(tdnf)
|
||||
set(PROJECT_YEAR 2019)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
include(AddCCompilerFlag)
|
||||
include(BuildMetaData)
|
||||
include(CreatePackages)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
endif()
|
||||
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
|
||||
##
|
||||
## C Flags
|
||||
##
|
||||
|
||||
add_c_compiler_flag(-Wall)
|
||||
add_c_compiler_flag(-Wextra)
|
||||
add_c_compiler_flag(-std=gnu99)
|
||||
|
||||
add_c_compiler_flag(-O3 RELEASE)
|
||||
add_c_compiler_flag(-s RELEASE)
|
||||
add_c_compiler_flag(-O0 DEBUG)
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
|
||||
# Custom command produces build_meta_data.c, and a dummy output that's
|
||||
# not actually produced, in order to force Version.cmake to always be
|
||||
# re-run before the build
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build_meta_data.c
|
||||
${CMAKE_CURRENT_BINARY_DIR}/_build_meta_data.c
|
||||
COMMAND ${CMAKE_COMMAND} -P
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/BuildMetaData.cmake
|
||||
COMMENT "Generating build meta data.."
|
||||
)
|
||||
|
||||
##
|
||||
## build libtdnfclient.so
|
||||
##
|
||||
|
||||
### External dependency: rpm-devel
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(RPM REQUIRED rpm)
|
||||
include_directories(${RPM_INCLUDE_DIRS})
|
||||
|
||||
### External dependency: libsolv
|
||||
find_package(LibSolv REQUIRED ext)
|
||||
|
||||
### External dependency: libcurl
|
||||
find_package(CURL REQUIRED)
|
||||
|
||||
set(LIB_TDNF_CLIENT tdnfclient)
|
||||
|
||||
list(APPEND LIB_TDNF_COMMMON_SRC
|
||||
"${CMAKE_BINARY_DIR}/build_meta_data.c"
|
||||
"common/memory.c"
|
||||
"common/strings.c"
|
||||
"common/configreader.c"
|
||||
"common/setopt.c"
|
||||
"common/utils.c"
|
||||
)
|
||||
|
||||
list(APPEND LIB_TDNF_SOLV_SRC
|
||||
"solv/tdnfpool.c"
|
||||
"solv/tdnfrepo.c"
|
||||
"solv/tdnfquery.c"
|
||||
"solv/tdnfpackage.c"
|
||||
)
|
||||
|
||||
list(APPEND LIB_TDNF_CLIENT_SRC
|
||||
"client/api.c"
|
||||
"client/clean.c"
|
||||
"client/client.c"
|
||||
"client/config.c"
|
||||
"client/goal.c"
|
||||
"client/gpgcheck.c"
|
||||
"client/init.c"
|
||||
"client/packageutils.c"
|
||||
"client/repo.c"
|
||||
"client/remoterepo.c"
|
||||
"client/repolist.c"
|
||||
"client/repoutils.c"
|
||||
"client/resolve.c"
|
||||
"client/rpmtrans.c"
|
||||
"client/updateinfo.c"
|
||||
"client/utils.c"
|
||||
"client/validate.c"
|
||||
)
|
||||
|
||||
add_library(${LIB_TDNF_CLIENT} SHARED
|
||||
${LIB_TDNF_CLIENT_SRC}
|
||||
${LIB_TDNF_SOLV_SRC}
|
||||
${LIB_TDNF_COMMMON_SRC}
|
||||
)
|
||||
|
||||
set_target_properties(${LIB_TDNF_CLIENT} PROPERTIES
|
||||
OUTPUT_NAME "tdnf"
|
||||
VERSION "2.0.0"
|
||||
SOVERSION "2"
|
||||
)
|
||||
|
||||
install(TARGETS ${LIB_TDNF_CLIENT} LIBRARY DESTINATION lib COMPONENT library)
|
||||
|
||||
##
|
||||
## build libtdnfcli.so
|
||||
##
|
||||
|
||||
set(LIB_TDNF_CLI tdnfcli)
|
||||
|
||||
list(APPEND LIB_TDNF_CLI_SRC
|
||||
"tools/cli/lib/api.c"
|
||||
"tools/cli/lib/help.c"
|
||||
"tools/cli/lib/installcmd.c"
|
||||
"tools/cli/lib/options.c"
|
||||
"tools/cli/lib/output.c"
|
||||
"tools/cli/lib/parseargs.c"
|
||||
"tools/cli/lib/parsecleanargs.c"
|
||||
"tools/cli/lib/parselistargs.c"
|
||||
"tools/cli/lib/parserepolistargs.c"
|
||||
"tools/cli/lib/parseupdateinfo.c"
|
||||
"tools/cli/lib/updateinfocmd.c"
|
||||
)
|
||||
|
||||
add_library(${LIB_TDNF_CLI} SHARED ${LIB_TDNF_CLI_SRC})
|
||||
|
||||
set_target_properties(${LIB_TDNF_CLI} PROPERTIES
|
||||
VERSION "2.0.0"
|
||||
SOVERSION "2"
|
||||
)
|
||||
|
||||
install(TARGETS ${LIB_TDNF_CLI} LIBRARY DESTINATION lib COMPONENT library)
|
||||
|
||||
##
|
||||
## tdnf binary
|
||||
##
|
||||
|
||||
set(TDNF_BIN tdnf)
|
||||
|
||||
list(APPEND TDNF_BIN_SRC
|
||||
"tools/cli/main.c"
|
||||
)
|
||||
|
||||
add_executable(${TDNF_BIN} ${TDNF_BIN_SRC})
|
||||
|
||||
target_link_libraries(${TDNF_BIN} PUBLIC
|
||||
${LIB_TDNF_CLIENT}
|
||||
${LIB_TDNF_CLI}
|
||||
${RPM_LIBRARIES}
|
||||
${LibSolv_LIBRARIES}
|
||||
${CURL_LIBRARIES}
|
||||
)
|
||||
|
||||
install(TARGETS ${TDNF_BIN} RUNTIME DESTINATION bin COMPONENT binary)
|
||||
|
||||
##
|
||||
## Other static resources
|
||||
##
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/tdnf.conf"
|
||||
DESTINATION "/etc/tdnf"
|
||||
COMPONENT resources
|
||||
)
|
||||
|
||||
install(DIRECTORY DESTINATION "share/bash-completion/completions")
|
||||
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/tdnf-completion.bash"
|
||||
DESTINATION "share/bash-completion/completions"
|
||||
COMPONENT resources
|
||||
)
|
||||
|
||||
##
|
||||
## check target
|
||||
##
|
||||
|
||||
add_custom_target(check
|
||||
COMMAND pytest --build-dir=${CMAKE_CURRENT_BINARY_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/pytests
|
||||
COMMENT "Running tests.."
|
||||
)
|
||||
|
||||
##
|
||||
## python modules
|
||||
##
|
||||
|
||||
find_package(PythonInterp 3.7 REQUIRED)
|
||||
find_package(PythonLibs 3.7 REQUIRED)
|
||||
|
||||
set(PYTDNF_PACKAGE_NAME "${PROJECT_NAME}")
|
||||
set(PYTDNF_VERSION "${VERSION_STRING}")
|
||||
set(PYTDNF_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/python")
|
||||
set(PYTDNF_INC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
set(PYTDNF_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/lib")
|
||||
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/python/setup.py.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/python/setup.py"
|
||||
)
|
||||
|
||||
add_custom_target(python
|
||||
COMMAND cp -r "${CMAKE_CURRENT_SOURCE_DIR}/python/tdnf" .
|
||||
COMMAND ${PYTHON_EXECUTABLE} setup.py build
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python"
|
||||
)
|
||||
|
||||
add_custom_target(package_pytdnf
|
||||
COMMAND ${PYTHON_EXECUTABLE} setup.py bdist --formats=rpm
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python"
|
||||
)
|
||||
|
|
@ -4,12 +4,11 @@ MAINTAINER csiddharth@vmware.com
|
|||
|
||||
RUN tdnf update -q -y
|
||||
RUN tdnf remove -q -y toybox
|
||||
RUN tdnf install -q -y build-essential autoconf automake make \
|
||||
libtool sed curl-devel rpm-build popt-devel \
|
||||
libsolv-devel createrepo_c glib libxml2 findutils \
|
||||
python3 python3-pip python3-setuptools
|
||||
RUN tdnf install -q -y build-essential cmake curl-devel rpm-build libsolv-devel \
|
||||
popt-devel sed createrepo_c glib libxml2 findutils \
|
||||
python3 python3-pip python3-setuptools python3-devel
|
||||
|
||||
# python build/test dependencies
|
||||
RUN pip3 install -q requests urllib3 pyOpenSSL pytest
|
||||
|
||||
ENTRYPOINT ["./docker-entrypoint.sh"]
|
||||
CMD ["/bin/bash"]
|
||||
|
|
57
Makefile.am
57
Makefile.am
|
@ -1,57 +0,0 @@
|
|||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
APP_NAME=tdnf
|
||||
CLEANFILES =
|
||||
EXTRA_DIST =
|
||||
noinst_DATA =
|
||||
conf_DATA = tdnf.conf
|
||||
pkginclude_HEADERS = include/*.h
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
SUBDIRS = \
|
||||
solv \
|
||||
common \
|
||||
client \
|
||||
tests \
|
||||
tools
|
||||
|
||||
if ENABLE_PYTHON
|
||||
SUBDIRS += python
|
||||
endif
|
||||
|
||||
noinst_DATA += tdnf.spec
|
||||
tdnf.spec: $(top_srcdir)/tdnf.spec.in
|
||||
./config.status --file=${subdir}/tdnf.spec:${subdir}/tdnf.spec.in
|
||||
|
||||
pkgconfig_DATA = tdnf.pc tdnf-cli-libs.pc
|
||||
|
||||
tdnf.pc: $(top_srcdir)/tdnf.pc.in
|
||||
./config.status --file=${subdir}/tdnf.pc:${subdir}/tdnf.pc.in
|
||||
|
||||
tdnf-cli-libs.pc: $(top_srcdir)/tdnf-cli-libs.pc.in
|
||||
./config.status --file=${subdir}/tdnf-cli-libs.pc:${subdir}/tdnf-cli-libs.pc.in
|
||||
|
||||
CLEANFILES += tdnf.pc
|
||||
CLEANFILES += tdnf-cli-libs.pc
|
||||
|
||||
EXTRA_DIST += tdnf.pc.in
|
||||
EXTRA_DIST += tdnf-cli-libs.pc.in
|
||||
|
||||
tar-src:
|
||||
git archive --format=tar.gz --prefix=$(APP_NAME)-$(VERSION)/ -o $(APP_NAME)-$(VERSION).tar.gz HEAD
|
||||
|
||||
rpm: tar-src tdnf.spec
|
||||
mkdir -p .rpm/SOURCES
|
||||
mkdir -p .rpm/BUILD
|
||||
mkdir -p .rpm/RPMS/x86_64
|
||||
-rm -rf .rpm/RPMS/$(APP_NAME)-*
|
||||
-rm -rf .rpm/SOURCES/$(APP_NAME)-*
|
||||
mv $(APP_NAME)-$(VERSION).tar.gz .rpm/SOURCES
|
||||
rpmbuild --quiet --nodeps --define="_topdir $(abs_top_builddir)/.rpm" \
|
||||
-bb $(APP_NAME).spec
|
||||
mkdir -p rpms
|
||||
mv .rpm/RPMS/x86_64/*$(APP_NAME)-*$(VERSION)-*.x86_64.rpm rpms
|
||||
|
||||
clean-local:
|
||||
-rm -rf .rpm
|
||||
-rm -rf rpms
|
|
@ -1,3 +0,0 @@
|
|||
rpm:
|
||||
autoreconf -mif
|
||||
./configure --enable-python && make rpm
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker build -t photon/tdnf-build .
|
||||
docker run --rm -it -v$(pwd):/build -w/build photon/tdnf-build
|
|
@ -1,30 +0,0 @@
|
|||
lib_LTLIBRARIES = libtdnf.la
|
||||
libtdnf_la_CPPFLAGS = -I$(top_srcdir)/include
|
||||
|
||||
AM_CFLAGS += $(LIBCURL_CFLAGS)
|
||||
|
||||
libtdnf_la_SOURCES = \
|
||||
api.c \
|
||||
clean.c \
|
||||
client.c \
|
||||
config.c \
|
||||
goal.c \
|
||||
gpgcheck.c \
|
||||
init.c \
|
||||
packageutils.c \
|
||||
repo.c \
|
||||
remoterepo.c \
|
||||
repolist.c \
|
||||
repoutils.c \
|
||||
resolve.c \
|
||||
rpmtrans.c \
|
||||
updateinfo.c \
|
||||
utils.c \
|
||||
validate.c
|
||||
|
||||
libtdnf_la_LIBADD = \
|
||||
@top_builddir@/solv/libtdnfsolv.la \
|
||||
$(top_builddir)/common/libcommon.la \
|
||||
@LIBCURL_LIBS@ \
|
||||
@RPM_LIBS@ \
|
||||
@LIBSOLVEXT_LIBS@
|
10
client/api.c
10
client/api.c
|
@ -20,6 +20,9 @@
|
|||
|
||||
#include "includes.h"
|
||||
|
||||
extern const char *PACKAGE_VERSION;
|
||||
extern const char *PACKAGE_NAME;
|
||||
|
||||
static TDNF_ENV gEnv = {0};
|
||||
|
||||
uint32_t
|
||||
|
@ -1266,3 +1269,10 @@ TDNFGetVersion(
|
|||
{
|
||||
return PACKAGE_VERSION;
|
||||
}
|
||||
|
||||
const char*
|
||||
TDNFGetPackageName(
|
||||
)
|
||||
{
|
||||
return PACKAGE_NAME;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
# - Adds a compiler flag if it is supported by the compiler
|
||||
#
|
||||
# This function checks that the supplied compiler flag is supported and then
|
||||
# adds it to the corresponding compiler flags
|
||||
#
|
||||
# add_c_compiler_flag(<FLAG> [<VARIANT>])
|
||||
#
|
||||
# - Example
|
||||
#
|
||||
# include(AddCCompilerFlag)
|
||||
# add_c_compiler_flag(-Wall)
|
||||
# add_c_compiler_flag(-no-strict-aliasing RELEASE)
|
||||
# Requires CMake 2.6+
|
||||
|
||||
if(__add_c_compiler_flag)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(__add_c_compiler_flag INCLUDED)
|
||||
|
||||
include(CheckCCompilerFlag)
|
||||
|
||||
function(add_c_compiler_flag FLAG)
|
||||
string(TOUPPER "HAVE_C_FLAG_${FLAG}" SANITIZED_FLAG)
|
||||
string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
|
||||
string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
|
||||
string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
|
||||
set(CMAKE_REQUIRED_FLAGS "${FLAG}")
|
||||
check_c_compiler_flag("" ${SANITIZED_FLAG})
|
||||
if(${SANITIZED_FLAG})
|
||||
set(VARIANT ${ARGV1})
|
||||
if(ARGV1)
|
||||
string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}")
|
||||
string(TOUPPER "_${VARIANT}" VARIANT)
|
||||
endif()
|
||||
set(CMAKE_C_FLAGS${VARIANT} "${CMAKE_C_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
|
@ -0,0 +1,80 @@
|
|||
execute_process(COMMAND
|
||||
git log --pretty=format:'%h' -n 1
|
||||
OUTPUT_VARIABLE GIT_REV
|
||||
ERROR_QUIET
|
||||
)
|
||||
string(STRIP "${GIT_REV}" GIT_REV)
|
||||
|
||||
if (NOT "${GIT_REV}" STREQUAL "")
|
||||
# GIT_REV
|
||||
string(SUBSTRING "${GIT_REV}" 1 7 GIT_REV)
|
||||
|
||||
# GIT_DIFF
|
||||
execute_process(COMMAND
|
||||
bash -c "git diff --quiet --exit-code || echo +"
|
||||
OUTPUT_VARIABLE GIT_DIFF
|
||||
)
|
||||
string(STRIP "${GIT_DIFF}" GIT_DIFF)
|
||||
|
||||
# GIT_TAG
|
||||
execute_process(COMMAND
|
||||
git describe --exact-match --tags
|
||||
OUTPUT_VARIABLE GIT_TAG ERROR_QUIET
|
||||
)
|
||||
string(STRIP "${GIT_TAG}" GIT_TAG)
|
||||
|
||||
# GIT_BRANCH
|
||||
execute_process(COMMAND
|
||||
git rev-parse --abbrev-ref HEAD
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
)
|
||||
string(STRIP "${GIT_BRANCH}" GIT_BRANCH)
|
||||
|
||||
# VERSION_STRING
|
||||
execute_process(COMMAND
|
||||
git describe --tags --abbrev=0
|
||||
OUTPUT_VARIABLE GIT_TAG_VERSION ERROR_QUIET
|
||||
)
|
||||
string(STRIP "${GIT_TAG_VERSION}" GIT_TAG_VERSION)
|
||||
if (NOT ${GIT_TAG_VERSION} STREQUAL "")
|
||||
string(REGEX
|
||||
REPLACE "^v?(([0-9]+)\\.([0-9]+)(\\.([0-9]+))?).*$" "\\1"
|
||||
VERSION_STRING ${GIT_TAG_VERSION}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ("${GIT_REV}" STREQUAL "")
|
||||
set(GIT_REV "000000")
|
||||
endif()
|
||||
if ("${GIT_DIFF}" STREQUAL "")
|
||||
set(GIT_DIFF "?")
|
||||
endif()
|
||||
if ("${GIT_TAG}" STREQUAL "")
|
||||
set(GIT_TAG "NONE")
|
||||
endif()
|
||||
if ("${GIT_BRANCH}" STREQUAL "")
|
||||
set(GIT_BRANCH "NONE")
|
||||
endif()
|
||||
if ("${VERSION_STRING}" STREQUAL "")
|
||||
set(VERSION_STRING "0.0.0")
|
||||
endif()
|
||||
|
||||
string(CONCAT BUILD_META_C
|
||||
"const char *PACKAGE_NAME = \"tdnf\";\n"
|
||||
"const char *PACKAGE_VERSION = \"${VERSION_STRING}\";\n"
|
||||
"const char *GIT_REV = \"${GIT_REV}${GIT_DIFF}\";\n"
|
||||
"const char *GIT_TAG = \"${GIT_TAG}\";\n"
|
||||
"const char *GIT_BRANCH = \"${GIT_BRANCH}\";\n"
|
||||
"const char *VERSION = \"${VERSION_STRING}\";\n"
|
||||
)
|
||||
|
||||
if(EXISTS ${CMAKE_BINARY_DIR}/build_meta_data.c)
|
||||
file(READ ${CMAKE_BINARY_DIR}/build_meta_data.c BUILD_META_C_OLD)
|
||||
else()
|
||||
set(BUILD_META_C_OLD "")
|
||||
endif()
|
||||
|
||||
if (NOT "${BUILD_META_C}" STREQUAL "${BUILD_META_C_OLD}")
|
||||
file(WRITE ${CMAKE_BINARY_DIR}/build_meta_data.c "${BUILD_META_C}")
|
||||
endif()
|
|
@ -0,0 +1,19 @@
|
|||
if(NOT EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
|
||||
message(FATAL_ERROR "Cpack module is not present!")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGE_NAME "tdnf")
|
||||
set(CPACK_PACKAGE_VENDOR "VMware, Inc.")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "tdnf is a yum/dnf equivalent which uses libsolv and libcurl")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
set(CPACK_PACKAGE_VERSION ${VERSION_STRING})
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
|
||||
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
#set(CPACK_RPM_PACKAGE_ARCHITECTURE "noarch")
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
|
||||
#set(CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/pre.sh")
|
||||
#set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/post.sh")
|
||||
include(CPack)
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
# FindLibSolv - Find libsolv headers and libraries.
|
||||
#
|
||||
# Sample:
|
||||
#
|
||||
# SET( LibSolv_USE_STATIC_LIBS OFF )
|
||||
# FIND_PACKAGE( LibSolv REQUIRED ext )
|
||||
# IF( LibSolv_FOUND )
|
||||
# INCLUDE_DIRECTORIES( ${LibSolv_INCLUDE_DIRS} )
|
||||
# TARGET_LINK_LIBRARIES( ... ${LibSolv_LIBRARIES} )
|
||||
# ENDIF()
|
||||
#
|
||||
# Variables used by this module need to be set before calling find_package
|
||||
# (not that they are cmale cased like the modiulemane itself):
|
||||
#
|
||||
# LibSolv_USE_STATIC_LIBS Can be set to ON to force the use of the static
|
||||
# libsolv libraries. Defaults to OFF.
|
||||
#
|
||||
# Supported components:
|
||||
#
|
||||
# ext Also include libsolvext
|
||||
#
|
||||
# Variables provided by this module:
|
||||
#
|
||||
# LibSolv_FOUND Include dir, libsolv and all extra libraries
|
||||
# specified in the COMPONENTS list were found.
|
||||
#
|
||||
# LibSolv_LIBRARIES Link to these to use all the libraries you specified.
|
||||
#
|
||||
# LibSolv_INCLUDE_DIRS Include directories.
|
||||
#
|
||||
# For each component you specify in find_package(), the following (UPPER-CASE)
|
||||
# variables are set to pick and choose components instead of just using LibSolv_LIBRARIES:
|
||||
#
|
||||
# LIBSOLV_FOUND TRUE if libsolv was found
|
||||
# LIBSOLV_LIBRARY libsolv libraries
|
||||
#
|
||||
# LIBSOLV_${COMPONENT}_FOUND TRUE if the library component was found
|
||||
# LIBSOLV_${COMPONENT}_LIBRARY The libraries for the specified component
|
||||
#
|
||||
|
||||
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
IF(LibSolv_USE_STATIC_LIBS)
|
||||
SET( _ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES .a )
|
||||
ENDIF()
|
||||
|
||||
# Look for the header files
|
||||
UNSET(LibSolv_INCLUDE_DIRS CACHE)
|
||||
FIND_PATH(LibSolv_INCLUDE_DIRS NAMES solv/solvable.h)
|
||||
|
||||
# Look for the core library
|
||||
UNSET(LIBSOLV_LIBRARY CACHE)
|
||||
FIND_LIBRARY(LIBSOLV_LIBRARY NAMES solv)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibSolv DEFAULT_MSG LIBSOLV_LIBRARY LibSolv_INCLUDE_DIRS)
|
||||
MARK_AS_ADVANCED(
|
||||
LIBSOLV_FOUND
|
||||
LIBSOLV_LIBRARY
|
||||
)
|
||||
|
||||
# Prepare return values and collectiong more components
|
||||
SET(LibSolv_FOUND ${LIBSOLV_FOUND})
|
||||
SET(LibSolv_LIBRARIES ${LIBSOLV_LIBRARY})
|
||||
MARK_AS_ADVANCED(
|
||||
LibSolv_FOUND
|
||||
LibSolv_LIBRARIES
|
||||
LibSolv_INCLUDE_DIRS
|
||||
)
|
||||
|
||||
# Look for components
|
||||
FOREACH(COMPONENT ${LibSolv_FIND_COMPONENTS})
|
||||
STRING(TOUPPER ${COMPONENT} _UPPERCOMPONENT)
|
||||
UNSET(LIBSOLV_${_UPPERCOMPONENT}_LIBRARY CACHE)
|
||||
FIND_LIBRARY(LIBSOLV_${_UPPERCOMPONENT}_LIBRARY NAMES solv${COMPONENT})
|
||||
SET(LibSolv_${COMPONENT}_FIND_REQUIRED ${LibSolv_FIND_REQUIRED})
|
||||
SET(LibSolv_${COMPONENT}_FIND_QUIETLY ${LibSolv_FIND_QUIETLY})
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibSolv_${COMPONENT} DEFAULT_MSG LIBSOLV_${_UPPERCOMPONENT}_LIBRARY)
|
||||
MARK_AS_ADVANCED(
|
||||
LIBSOLV_${_UPPERCOMPONENT}_FOUND
|
||||
LIBSOLV_${_UPPERCOMPONENT}_LIBRARY
|
||||
)
|
||||
IF(LIBSOLV_${_UPPERCOMPONENT}_FOUND)
|
||||
SET(LibSolv_LIBRARIES ${LibSolv_LIBRARIES} ${LIBSOLV_${_UPPERCOMPONENT}_LIBRARY})
|
||||
ELSE()
|
||||
SET(LibSolv_FOUND FALSE)
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
# restore CMAKE_FIND_LIBRARY_SUFFIXES
|
||||
IF(Solv_USE_STATIC_LIBS)
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} )
|
||||
ENDIF()
|
||||
|
||||
IF(LibSolv_FOUND AND NOT LibSolv_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found LibSolv: ${LibSolv_INCLUDE_DIRS} ${LibSolv_LIBRARIES}")
|
||||
ENDIF()
|
|
@ -0,0 +1,316 @@
|
|||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> ... )
|
||||
#
|
||||
# This function is intended to be used in FindXXX.cmake modules files.
|
||||
# It handles the REQUIRED, QUIET and version-related arguments to FIND_PACKAGE().
|
||||
# It also sets the <UPPERCASED_NAME>_FOUND variable.
|
||||
# The package is considered found if all variables <var1>... listed contain
|
||||
# valid results, e.g. valid filepaths.
|
||||
#
|
||||
# There are two modes of this function. The first argument in both modes is
|
||||
# the name of the Find-module where it is called (in original casing).
|
||||
#
|
||||
# The first simple mode looks like this:
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> (DEFAULT_MSG|"Custom failure message") <var1>...<varN> )
|
||||
# If the variables <var1> to <varN> are all valid, then <UPPERCASED_NAME>_FOUND
|
||||
# will be set to TRUE.
|
||||
# If DEFAULT_MSG is given as second argument, then the function will generate
|
||||
# itself useful success and error messages. You can also supply a custom error message
|
||||
# for the failure case. This is not recommended.
|
||||
#
|
||||
# The second mode is more powerful and also supports version checking:
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME [REQUIRED_VARS <var1>...<varN>]
|
||||
# [VERSION_VAR <versionvar>]
|
||||
# [HANDLE_COMPONENTS]
|
||||
# [CONFIG_MODE]
|
||||
# [FAIL_MESSAGE "Custom failure message"] )
|
||||
#
|
||||
# As above, if <var1> through <varN> are all valid, <UPPERCASED_NAME>_FOUND
|
||||
# will be set to TRUE.
|
||||
# After REQUIRED_VARS the variables which are required for this package are listed.
|
||||
# Following VERSION_VAR the name of the variable can be specified which holds
|
||||
# the version of the package which has been found. If this is done, this version
|
||||
# will be checked against the (potentially) specified required version used
|
||||
# in the find_package() call. The EXACT keyword is also handled. The default
|
||||
# messages include information about the required version and the version
|
||||
# which has been actually found, both if the version is ok or not.
|
||||
# If the package supports components, use the HANDLE_COMPONENTS option to enable
|
||||
# handling them. In this case, find_package_handle_standard_args() will report
|
||||
# which components have been found and which are missing, and the <NAME>_FOUND
|
||||
# variable will be set to FALSE if any of the required components (i.e. not the
|
||||
# ones listed after OPTIONAL_COMPONENTS) are missing.
|
||||
# Use the option CONFIG_MODE if your FindXXX.cmake module is a wrapper for
|
||||
# a find_package(... NO_MODULE) call. In this case VERSION_VAR will be set
|
||||
# to <NAME>_VERSION and the macro will automatically check whether the
|
||||
# Config module was found.
|
||||
# Via FAIL_MESSAGE a custom failure message can be specified, if this is not
|
||||
# used, the default message will be displayed.
|
||||
#
|
||||
# Example for mode 1:
|
||||
#
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
|
||||
#
|
||||
# LibXml2 is considered to be found, if both LIBXML2_LIBRARY and
|
||||
# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE.
|
||||
# If it is not found and REQUIRED was used, it fails with FATAL_ERROR,
|
||||
# independent whether QUIET was used or not.
|
||||
# If it is found, success will be reported, including the content of <var1>.
|
||||
# On repeated Cmake runs, the same message won't be printed again.
|
||||
#
|
||||
# Example for mode 2:
|
||||
#
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON REQUIRED_VARS BISON_EXECUTABLE
|
||||
# VERSION_VAR BISON_VERSION)
|
||||
# In this case, BISON is considered to be found if the variable(s) listed
|
||||
# after REQUIRED_VAR are all valid, i.e. BISON_EXECUTABLE in this case.
|
||||
# Also the version of BISON will be checked by using the version contained
|
||||
# in BISON_VERSION.
|
||||
# Since no FAIL_MESSAGE is given, the default messages will be printed.
|
||||
#
|
||||
# Another example for mode 2:
|
||||
#
|
||||
# FIND_PACKAGE(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
|
||||
# FIND_PACKAGE_HANDLE_STANDARD_ARGS(Automoc4 CONFIG_MODE)
|
||||
# In this case, FindAutmoc4.cmake wraps a call to FIND_PACKAGE(Automoc4 NO_MODULE)
|
||||
# and adds an additional search directory for automoc4.
|
||||
# The following FIND_PACKAGE_HANDLE_STANDARD_ARGS() call produces a proper
|
||||
# success/error message.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * Neither the names of Kitware, Inc., the Insight Software Consortium,
|
||||
# nor the names of their contributors may be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
INCLUDE(FindPackageMessage)
|
||||
INCLUDE(_CMakeParseArguments)
|
||||
|
||||
# internal helper macro
|
||||
MACRO(_FPHSA_FAILURE_MESSAGE _msg)
|
||||
IF (${_NAME}_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "${_msg}")
|
||||
ELSE (${_NAME}_FIND_REQUIRED)
|
||||
IF (NOT ${_NAME}_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "${_msg}")
|
||||
ENDIF (NOT ${_NAME}_FIND_QUIETLY)
|
||||
ENDIF (${_NAME}_FIND_REQUIRED)
|
||||
ENDMACRO(_FPHSA_FAILURE_MESSAGE _msg)
|
||||
|
||||
|
||||
# internal helper macro to generate the failure message when used in CONFIG_MODE:
|
||||
MACRO(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
|
||||
# <name>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
|
||||
IF(${_NAME}_CONFIG)
|
||||
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
|
||||
ELSE(${_NAME}_CONFIG)
|
||||
# If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
|
||||
# List them all in the error message:
|
||||
IF(${_NAME}_CONSIDERED_CONFIGS)
|
||||
SET(configsText "")
|
||||
LIST(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
|
||||
MATH(EXPR configsCount "${configsCount} - 1")
|
||||
FOREACH(currentConfigIndex RANGE ${configsCount})
|
||||
LIST(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
|
||||
LIST(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
|
||||
SET(configsText "${configsText} ${filename} (version ${version})\n")
|
||||
ENDFOREACH(currentConfigIndex)
|
||||
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}")
|
||||
|
||||
ELSE(${_NAME}_CONSIDERED_CONFIGS)
|
||||
# Simple case: No Config-file was found at all:
|
||||
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
|
||||
ENDIF(${_NAME}_CONSIDERED_CONFIGS)
|
||||
ENDIF(${_NAME}_CONFIG)
|
||||
ENDMACRO(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
|
||||
|
||||
|
||||
FUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
|
||||
|
||||
# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in
|
||||
# new extended or in the "old" mode:
|
||||
SET(options CONFIG_MODE HANDLE_COMPONENTS)
|
||||
SET(oneValueArgs FAIL_MESSAGE VERSION_VAR)
|
||||
SET(multiValueArgs REQUIRED_VARS)
|
||||
SET(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} )
|
||||
LIST(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
|
||||
|
||||
IF(${INDEX} EQUAL -1)
|
||||
SET(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
|
||||
SET(FPHSA_REQUIRED_VARS ${ARGN})
|
||||
SET(FPHSA_VERSION_VAR)
|
||||
ELSE(${INDEX} EQUAL -1)
|
||||
|
||||
CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN})
|
||||
|
||||
IF(FPHSA_UNPARSED_ARGUMENTS)
|
||||
MESSAGE(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
|
||||
ENDIF(FPHSA_UNPARSED_ARGUMENTS)
|
||||
|
||||
IF(NOT FPHSA_FAIL_MESSAGE)
|
||||
SET(FPHSA_FAIL_MESSAGE "DEFAULT_MSG")
|
||||
ENDIF(NOT FPHSA_FAIL_MESSAGE)
|
||||
ENDIF(${INDEX} EQUAL -1)
|
||||
|
||||
# now that we collected all arguments, process them
|
||||
|
||||
IF("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG")
|
||||
SET(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
|
||||
ENDIF("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG")
|
||||
|
||||
# In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package()
|
||||
# when it successfully found the config-file, including version checking:
|
||||
IF(FPHSA_CONFIG_MODE)
|
||||
LIST(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
|
||||
LIST(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
|
||||
SET(FPHSA_VERSION_VAR ${_NAME}_VERSION)
|
||||
ENDIF(FPHSA_CONFIG_MODE)
|
||||
|
||||
IF(NOT FPHSA_REQUIRED_VARS)
|
||||
MESSAGE(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
|
||||
ENDIF(NOT FPHSA_REQUIRED_VARS)
|
||||
|
||||
LIST(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
|
||||
|
||||
STRING(TOUPPER ${_NAME} _NAME_UPPER)
|
||||
STRING(TOLOWER ${_NAME} _NAME_LOWER)
|
||||
|
||||
# collect all variables which were not found, so they can be printed, so the
|
||||
# user knows better what went wrong (#6375)
|
||||
SET(MISSING_VARS "")
|
||||
SET(DETAILS "")
|
||||
SET(${_NAME_UPPER}_FOUND TRUE)
|
||||
# check if all passed variables are valid
|
||||
FOREACH(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
|
||||
IF(NOT ${_CURRENT_VAR})
|
||||
SET(${_NAME_UPPER}_FOUND FALSE)
|
||||
SET(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}")
|
||||
ELSE(NOT ${_CURRENT_VAR})
|
||||
SET(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]")
|
||||
ENDIF(NOT ${_CURRENT_VAR})
|
||||
ENDFOREACH(_CURRENT_VAR)
|
||||
|
||||
# component handling
|
||||
SET(FOUND_COMPONENTS_MSG "")
|
||||
SET(MISSING_COMPONENTS_MSG "")
|
||||
|
||||
IF(FPHSA_HANDLE_COMPONENTS)
|
||||
FOREACH(comp ${${_NAME}_FIND_COMPONENTS})
|
||||
IF(${_NAME}_${comp}_FOUND)
|
||||
|
||||
IF(NOT FOUND_COMPONENTS_MSG)
|
||||
SET(FOUND_COMPONENTS_MSG "found components: ")
|
||||
ENDIF()
|
||||
SET(FOUND_COMPONENTS_MSG "${FOUND_COMPONENTS_MSG} ${comp}")
|
||||
|
||||
ELSE()
|
||||
|
||||
IF(NOT MISSING_COMPONENTS_MSG)
|
||||
SET(MISSING_COMPONENTS_MSG "missing components: ")
|
||||
ENDIF()
|
||||
SET(MISSING_COMPONENTS_MSG "${MISSING_COMPONENTS_MSG} ${comp}")
|
||||
|
||||
IF(${_NAME}_FIND_REQUIRED_${comp})
|
||||
SET(${_NAME_UPPER}_FOUND FALSE)
|
||||
SET(MISSING_VARS "${MISSING_VARS} ${comp}")
|
||||
ENDIF()
|
||||
|
||||
ENDIF()
|
||||
ENDFOREACH(comp)
|
||||
SET(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}")
|
||||
SET(DETAILS "${DETAILS}[c${COMPONENT_MSG}]")
|
||||
ENDIF(FPHSA_HANDLE_COMPONENTS)
|
||||
|
||||
# version handling:
|
||||
SET(VERSION_MSG "")
|
||||
SET(VERSION_OK TRUE)
|
||||
SET(VERSION ${${FPHSA_VERSION_VAR}} )
|
||||
IF (${_NAME}_FIND_VERSION)
|
||||
|
||||
IF(VERSION)
|
||||
|
||||
IF(${_NAME}_FIND_VERSION_EXACT) # exact version required
|
||||
IF (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
|
||||
SET(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
|
||||
SET(VERSION_OK FALSE)
|
||||
ELSE (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
|
||||
SET(VERSION_MSG "(found suitable exact version \"${VERSION}\")")
|
||||
ENDIF (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
|
||||
|
||||
ELSE(${_NAME}_FIND_VERSION_EXACT) # minimum version specified:
|
||||
IF ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
|
||||
SET(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
|
||||
SET(VERSION_OK FALSE)
|
||||
ELSE ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
|
||||
SET(VERSION_MSG "(found suitable version \"${VERSION}\", required is \"${${_NAME}_FIND_VERSION}\")")
|
||||
ENDIF ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
|
||||
ENDIF(${_NAME}_FIND_VERSION_EXACT)
|
||||
|
||||
ELSE(VERSION)
|
||||
|
||||
# if the package was not found, but a version was given, add that to the output:
|
||||
IF(${_NAME}_FIND_VERSION_EXACT)
|
||||
SET(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
|
||||
ELSE(${_NAME}_FIND_VERSION_EXACT)
|
||||
SET(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
|
||||
ENDIF(${_NAME}_FIND_VERSION_EXACT)
|
||||
|
||||
ENDIF(VERSION)
|
||||
ELSE (${_NAME}_FIND_VERSION)
|
||||
IF(VERSION)
|
||||
SET(VERSION_MSG "(found version \"${VERSION}\")")
|
||||
ENDIF(VERSION)
|
||||
ENDIF (${_NAME}_FIND_VERSION)
|
||||
|
||||
IF(VERSION_OK)
|
||||
SET(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]")
|
||||
ELSE(VERSION_OK)
|
||||
SET(${_NAME_UPPER}_FOUND FALSE)
|
||||
ENDIF(VERSION_OK)
|
||||
|
||||
|
||||
# print the result:
|
||||
IF (${_NAME_UPPER}_FOUND)
|
||||
FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}")
|
||||
ELSE (${_NAME_UPPER}_FOUND)
|
||||
|
||||
IF(FPHSA_CONFIG_MODE)
|
||||
_FPHSA_HANDLE_FAILURE_CONFIG_MODE()
|
||||
ELSE(FPHSA_CONFIG_MODE)
|
||||
IF(NOT VERSION_OK)
|
||||
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})")
|
||||
ELSE(NOT VERSION_OK)
|
||||
_FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}")
|
||||
ENDIF(NOT VERSION_OK)
|
||||
ENDIF(FPHSA_CONFIG_MODE)
|
||||
|
||||
ENDIF (${_NAME_UPPER}_FOUND)
|
||||
|
||||
SET(${_NAME_UPPER}_FOUND ${${_NAME_UPPER}_FOUND} PARENT_SCOPE)
|
||||
|
||||
ENDFUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _FIRST_ARG)
|
|
@ -1,14 +0,0 @@
|
|||
noinst_LTLIBRARIES = libcommon.la
|
||||
|
||||
libcommon_la_SOURCES = \
|
||||
memory.c \
|
||||
strings.c \
|
||||
configreader.c \
|
||||
setopt.c \
|
||||
utils.c
|
||||
|
||||
libcommon_la_CPPFLAGS = \
|
||||
-I$(top_srcdir)/include
|
||||
|
||||
libcommon_la_LDFLAGS = \
|
||||
-static
|
83
configure.ac
83
configure.ac
|
@ -1,83 +0,0 @@
|
|||
AC_INIT(tdnf, 2.0.0)
|
||||
AM_SILENT_RULES([yes])
|
||||
AC_MSG_NOTICE([tdnf configuration])
|
||||
|
||||
AC_CANONICAL_SYSTEM
|
||||
AM_INIT_AUTOMAKE([-Wall foreign])
|
||||
|
||||
AC_CONFIG_TESTDIR(tests)
|
||||
|
||||
AM_PROG_AR
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
#LT_INIT
|
||||
AC_PROG_LIBTOOL
|
||||
|
||||
CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_GNU_SOURCE -fPIC"
|
||||
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS -I${top_srcdir}/include"
|
||||
AM_CFLAGS="$AM_CFLAGS -std=gnu99 -Wall -fno-strict-aliasing"
|
||||
|
||||
CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_GNU_SOURCE -fPIC"
|
||||
AC_SUBST(AM_CPPFLAGS)
|
||||
AC_SUBST(AM_CFLAGS)
|
||||
|
||||
#libsolv
|
||||
PKG_CHECK_MODULES([LIBSOLV], [libsolv], [have_libsolv=yes], [have_libsolv=no])
|
||||
PKG_CHECK_MODULES([LIBSOLVEXT], [libsolvext], [have_libsolvext=yes], [have_libsolvext=no])
|
||||
AM_CONDITIONAL([LIBSOLV], [test "$have_libsolv" = "yes"])
|
||||
AM_CONDITIONAL([LIBSOLVEXT], [test "$have_libsolvext" = "yes"])
|
||||
|
||||
#libcurl
|
||||
PKG_CHECK_MODULES([LIBCURL], [libcurl], [have_libcurl=yes], [have_libcurl=no])
|
||||
AM_CONDITIONAL([LIBCURL], [test "$have_libcurl" = "yes"])
|
||||
|
||||
#rpm
|
||||
PKG_CHECK_MODULES([RPM], [rpm], [have_rpm=yes], [have_rpm=no])
|
||||
AM_CONDITIONAL([RPM], [test "$have_rpm" = "yes"])
|
||||
|
||||
# test to prove rpm.org rpm
|
||||
echo "Looking for rpm.org librpm headers"
|
||||
AC_CHECK_HEADERS(rpm/header.h)
|
||||
|
||||
WITH_PYTHON=0
|
||||
AC_ARG_ENABLE([python],
|
||||
[AS_HELP_STRING([--enable-python], [build tdnf python bindings (default: disabled)])],
|
||||
[
|
||||
if test x"$enableval" = x"yes"
|
||||
then
|
||||
PYTHON="${PYTHON:-python3}"
|
||||
AM_PATH_PYTHON([3.5],[
|
||||
PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}], [WITH_PYTHON=1])
|
||||
AC_SUBST(PYTHON_CFLAGS)
|
||||
AC_SUBST(PYTHON_LIB)
|
||||
])
|
||||
fi
|
||||
])
|
||||
|
||||
AM_CONDITIONAL(ENABLE_PYTHON,[test "$WITH_PYTHON" = 1])
|
||||
|
||||
#makefiles
|
||||
AC_CONFIG_FILES([Makefile
|
||||
solv/Makefile
|
||||
common/Makefile
|
||||
client/Makefile
|
||||
tests/Makefile
|
||||
tools/Makefile
|
||||
tools/cli/Makefile
|
||||
tools/cli/lib/Makefile
|
||||
python/Makefile
|
||||
python/setup.py
|
||||
])
|
||||
|
||||
#tdnf conf dir
|
||||
confdir=$sysconfdir/tdnf
|
||||
AC_SUBST(confdir)
|
||||
|
||||
#yum repo dir
|
||||
yumrepodir=$sysconfdir/yum.repos.d
|
||||
AC_SUBST(yumrepodir)
|
||||
|
||||
#
|
||||
AC_OUTPUT
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
docker build -t photon/tdnf-build .
|
||||
docker run --rm -it -v$(pwd):/build -w/build photon/tdnf-build ./docker-entrypoint.sh
|
|
@ -1,13 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
aclocal
|
||||
libtoolize
|
||||
automake --add-missing
|
||||
autoreconf
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
rm -rf build
|
||||
mkdir build && cd build
|
||||
cmake .. && make && make check
|
||||
|
||||
# pytests
|
||||
make install
|
||||
cd pytests && pytest --verbose
|
||||
|
|
|
@ -137,6 +137,11 @@ const char*
|
|||
TDNFGetVersion(
|
||||
);
|
||||
|
||||
//package name
|
||||
const char*
|
||||
TDNFGetPackageName(
|
||||
);
|
||||
|
||||
//Search installed and available packages for keywords
|
||||
//in description, name
|
||||
uint32_t
|
||||
|
|
|
@ -34,10 +34,11 @@ class JsonWrapper(object):
|
|||
|
||||
|
||||
class TestUtils(object):
|
||||
def __init__(self):
|
||||
def __init__(self, cli_args):
|
||||
cur_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
config_file = os.path.join(cur_dir, 'config.json')
|
||||
self.config = JsonWrapper(config_file).read()
|
||||
self.config.update(cli_args)
|
||||
|
||||
def check_package(self, package):
|
||||
""" Check if a package exists """
|
||||
|
@ -97,6 +98,8 @@ class TestUtils(object):
|
|||
return True, None
|
||||
|
||||
def run(self, cmd):
|
||||
if cmd[0] is 'tdnf' and self.config['build_dir']:
|
||||
cmd[0] = os.path.join(self.config['build_dir'], 'bin/tdnf')
|
||||
use_shell = not isinstance(cmd, list)
|
||||
process = subprocess.Popen(cmd, shell=use_shell,
|
||||
stdout=subprocess.PIPE,
|
||||
|
@ -122,9 +125,22 @@ def restore_config_files():
|
|||
# Restore /etc/yum.repos.d/* and /etc/tdnf/tdnf.conf
|
||||
pass
|
||||
|
||||
def pytest_addoption(parser):
|
||||
group = parser.getgroup("tdnf", "tdnf specifc options")
|
||||
group.addoption(
|
||||
"--build-dir", action="store", default="",
|
||||
help="directory containing tdnf binary to be tested"
|
||||
)
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def utils():
|
||||
test_utils = TestUtils()
|
||||
def tdnf_args(request):
|
||||
arg = {}
|
||||
arg['build_dir'] = request.config.getoption("--build-dir")
|
||||
return arg
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def utils(tdnf_args):
|
||||
test_utils = TestUtils(tdnf_args)
|
||||
backup_config_files()
|
||||
yield test_utils
|
||||
restore_config_files()
|
||||
|
|
|
@ -13,7 +13,8 @@ import pytest
|
|||
def setup_test(utils):
|
||||
# remove sglversion_pkgname at the beginning of tests
|
||||
pkgname = utils.config['sglversion_pkgname']
|
||||
utils.run([ 'tdnf', 'erase', '-y', pkgname ])
|
||||
if utils.check_package(pkgname):
|
||||
utils.run([ 'tdnf', 'erase', '-y', pkgname ])
|
||||
yield
|
||||
teardown_test(utils)
|
||||
|
||||
|
@ -27,5 +28,7 @@ def test_assumeno_install(utils):
|
|||
|
||||
def test_assumeno_erase(utils):
|
||||
pkgname = utils.config['sglversion_pkgname']
|
||||
utils.run([ 'tdnf', 'install', '-y', pkgname ])
|
||||
assert (utils.check_package(pkgname) == True)
|
||||
utils.run([ 'tdnf', '--assumeno', 'erase', pkgname ])
|
||||
assert (utils.check_package(pkgname) == False)
|
||||
assert (utils.check_package(pkgname) == True)
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
pkgpyexec_LTLIBRARIES = _tdnf.la
|
||||
pkgpyexec_DATA = tdnf/__init__.py
|
||||
|
||||
CLEANFILES =
|
||||
|
||||
_tdnf_la_CPPFLAGS = \
|
||||
-I$(top_srcdir)/include \
|
||||
@PYTHON_CFLAGS@
|
||||
|
||||
_tdnf_la_SOURCES = \
|
||||
tdnfbase.c \
|
||||
tdnfpycommands.c \
|
||||
tdnfmodule.c \
|
||||
tdnfpyrepodata.c \
|
||||
utils.c
|
||||
|
||||
_tdnf_la_LDFLAGS= -module -avoid-version
|
||||
|
||||
_tdnf_la_LIBADD = \
|
||||
$(top_builddir)/common/libcommon.la \
|
||||
$(top_builddir)/client/libtdnf.la \
|
||||
@PYTHON_LIBS@
|
||||
|
||||
CLEANFILES += tdnf/__pycache__
|
||||
CLEANFILES += build
|
|
@ -9,27 +9,31 @@
|
|||
from distutils.core import setup, Extension
|
||||
import os
|
||||
|
||||
link_args = []
|
||||
cflags = []
|
||||
cflags = [
|
||||
'-I@PYTDNF_INC_DIR@'
|
||||
]
|
||||
|
||||
if os.access('Makefile.am', os.F_OK):
|
||||
cflags.append('-I../include')
|
||||
link_args.extend(['-Wl,-L../client/.libs'])
|
||||
link_args = [
|
||||
'-Wl,-L@PYTDNF_LIB_DIR@'
|
||||
]
|
||||
|
||||
pytdnf_sources = [
|
||||
'@PYTDNF_SRC_DIR@/tdnfbase.c',
|
||||
'@PYTDNF_SRC_DIR@/tdnfpyrepodata.c',
|
||||
'@PYTDNF_SRC_DIR@/tdnfpycommands.c',
|
||||
'@PYTDNF_SRC_DIR@/tdnfmodule.c',
|
||||
'@PYTDNF_SRC_DIR@/utils.c'
|
||||
]
|
||||
|
||||
tdnfmodule = Extension('tdnf._tdnf',
|
||||
libraries = ['tdnf'],
|
||||
sources = ['tdnfbase.c',
|
||||
'tdnfpyrepodata.c',
|
||||
'tdnfpycommands.c',
|
||||
'tdnfmodule.c',
|
||||
'utils.c'],
|
||||
libraries = ['tdnf'],
|
||||
sources = pytdnf_sources,
|
||||
extra_compile_args = cflags,
|
||||
extra_link_args = link_args)
|
||||
|
||||
extra_compile_args = cflags,
|
||||
extra_link_args = link_args)
|
||||
|
||||
setup (name = '@PACKAGE_NAME@',
|
||||
version = '@VERSION@',
|
||||
description = 'Python bindings for @PACKAGE_NAME@',
|
||||
packages = ['@PACKAGE_NAME@'],
|
||||
setup (name = '@PYTDNF_PACKAGE_NAME@',
|
||||
version = '@PYTDNF_VERSION@',
|
||||
description = 'Python bindings for @PYTDNF_PACKAGE_NAME@',
|
||||
packages = ['@PYTDNF_PACKAGE_NAME@'],
|
||||
url='https://github.com/vmware/tdnf',
|
||||
ext_modules = [tdnfmodule])
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/sh
|
||||
make clean && make distclean
|
||||
autoreconf -mif && ./configure --enable-python
|
||||
make
|
|
@ -1,14 +0,0 @@
|
|||
noinst_LTLIBRARIES = libtdnfsolv.la
|
||||
|
||||
libtdnfsolv_la_CPPFLAGS = -I$(top_srcdir)/include
|
||||
|
||||
libtdnfsolv_la_SOURCES = \
|
||||
tdnfpool.c \
|
||||
tdnfrepo.c \
|
||||
tdnfquery.c \
|
||||
tdnfpackage.c
|
||||
|
||||
libtdnfsolv_la_LDFLAGS = \
|
||||
-static \
|
||||
@RPM_LIBS@ \
|
||||
@LIBSOLV_LIBS@
|
|
@ -1,11 +0,0 @@
|
|||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@/tdnf
|
||||
|
||||
Name: tdnf-cli-libs
|
||||
Description: tdnf cli libs
|
||||
Version: @VERSION@
|
||||
Requires: tdnf
|
||||
Libs: -L${libdir} -ltdnfcli
|
||||
Cflags: -I${includedir}
|
11
tdnf.pc.in
11
tdnf.pc.in
|
@ -1,11 +0,0 @@
|
|||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@/tdnf
|
||||
|
||||
Name: tdnf
|
||||
Description: tiny dandified yum
|
||||
Version: @VERSION@
|
||||
Requires: libsolv libsolvext rpm libcurl
|
||||
Libs: -L${libdir} -ltdnf
|
||||
Cflags: -I${includedir}
|
149
tdnf.spec.in
149
tdnf.spec.in
|
@ -1,149 +0,0 @@
|
|||
#
|
||||
# tdnf spec file
|
||||
#
|
||||
|
||||
%define _python3_sitearch %(python3 -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")
|
||||
|
||||
Summary: dnf/yum equivalent using C libs
|
||||
Name: tdnf
|
||||
Version: @VERSION@
|
||||
Release: 1%{?dist}
|
||||
Vendor: VMware, Inc.
|
||||
Distribution: Photon
|
||||
License: LGPLv2.1,GPLv2
|
||||
URL: http://www.vmware.com
|
||||
Group: Applications/RPM
|
||||
Requires: rpm-libs
|
||||
Requires: curl
|
||||
Requires: tdnf-cli-libs = %{version}-%{release}
|
||||
Requires: libsolv
|
||||
BuildRequires: popt-devel
|
||||
BuildRequires: rpm-devel
|
||||
BuildRequires: openssl-devel
|
||||
BuildRequires: libsolv-devel
|
||||
BuildRequires: curl-devel
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
%description
|
||||
tdnf is a yum/dnf equivalent which uses libsolv and libcurl
|
||||
|
||||
%package devel
|
||||
Summary: A Library providing C API for tdnf
|
||||
Group: Development/Libraries
|
||||
Requires: tdnf = %{version}-%{release}
|
||||
Requires: libsolv-devel
|
||||
|
||||
%description devel
|
||||
Development files for tdnf
|
||||
|
||||
%package cli-libs
|
||||
Summary: Library providing cli libs for tdnf like clients
|
||||
Group: Development/Libraries
|
||||
|
||||
%description cli-libs
|
||||
Library providing cli libs for tdnf like clients.
|
||||
|
||||
%package -n python2-tdnf
|
||||
Summary: Python2 bindings for tdnf
|
||||
Group: Development/Libraries
|
||||
Requires: python2 >= 2.7
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildRequires: python2-devel >= 2.7
|
||||
|
||||
%description -n python2-tdnf
|
||||
Python2 bindings for tdnf
|
||||
|
||||
%package -n python3-tdnf
|
||||
Summary: Python3 bindings for tdnf
|
||||
Group: Development/Libraries
|
||||
Requires: python3 >= 3.5
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildRequires: python3-devel >= 3.5
|
||||
|
||||
%description -n python3-tdnf
|
||||
Python3 bindings for tdnf
|
||||
|
||||
%prep
|
||||
%setup -q %{name}-%{version}
|
||||
|
||||
%build
|
||||
autoreconf -i
|
||||
%configure \
|
||||
--disable-static \
|
||||
--enable-python
|
||||
make %{?_smp_mflags}
|
||||
|
||||
pushd python
|
||||
python2 setup.py build
|
||||
python3 setup.py build
|
||||
popd
|
||||
|
||||
%install
|
||||
make DESTDIR=%{buildroot} install
|
||||
find %{buildroot} -name '*.la' -delete
|
||||
mkdir -p %{buildroot}/var/cache/tdnf
|
||||
|
||||
pushd python
|
||||
python2 setup.py install --skip-build --root %{buildroot}
|
||||
python3 setup.py install --skip-build --root %{buildroot}
|
||||
popd
|
||||
|
||||
# Pre-install
|
||||
%pre
|
||||
|
||||
# First argument is 1 => New Installation
|
||||
# First argument is 2 => Upgrade
|
||||
|
||||
# Post-install
|
||||
%post
|
||||
|
||||
# First argument is 1 => New Installation
|
||||
# First argument is 2 => Upgrade
|
||||
|
||||
/sbin/ldconfig
|
||||
|
||||
# Pre-uninstall
|
||||
%preun
|
||||
|
||||
# First argument is 0 => Uninstall
|
||||
# First argument is 1 => Upgrade
|
||||
|
||||
# Post-uninstall
|
||||
%postun
|
||||
|
||||
/sbin/ldconfig
|
||||
|
||||
# First argument is 0 => Uninstall
|
||||
# First argument is 1 => Upgrade
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,0755)
|
||||
%{_bindir}/tdnf
|
||||
%{_libdir}/libtdnf.so.*
|
||||
%config(noreplace) %{_sysconfdir}/tdnf/tdnf.conf
|
||||
%dir /var/cache/tdnf
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
%{_includedir}/tdnf/*.h
|
||||
%{_libdir}/libtdnf.so
|
||||
%{_libdir}/libtdnfcli.so
|
||||
%exclude %{_libdir}/debug
|
||||
%{_libdir}/pkgconfig/tdnf.pc
|
||||
%{_libdir}/pkgconfig/tdnf-cli-libs.pc
|
||||
|
||||
%files cli-libs
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/libtdnfcli.so.*
|
||||
|
||||
%files -n python2-tdnf
|
||||
%{python_sitearch}/%{name}/
|
||||
%{python_sitearch}/%{name}-*.egg-info
|
||||
|
||||
%files -n python3-tdnf
|
||||
%{_python3_sitearch}/%{name}/
|
||||
%{_python3_sitearch}/%{name}-*.egg-info
|
||||
|
||||
%changelog
|
||||
* Fri Jan 23 2015 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.0
|
||||
- Initial build. First version
|
|
@ -1,52 +0,0 @@
|
|||
# The `:;' works around a Bash 3.2 bug when the output is not writeable.
|
||||
$(srcdir)/package.m4: $(top_srcdir)/configure.ac
|
||||
:;{ \
|
||||
echo '# Signature of the current package.' && \
|
||||
echo 'm4_define([AT_PACKAGE_NAME],' && \
|
||||
echo ' [$(PACKAGE_NAME)])' && \
|
||||
echo 'm4_define([AT_PACKAGE_TARNAME],' && \
|
||||
echo ' [$(PACKAGE_TARNAME)])' && \
|
||||
echo 'm4_define([AT_PACKAGE_VERSION],' && \
|
||||
echo ' [$(PACKAGE_VERSION)])' && \
|
||||
echo 'm4_define([AT_PACKAGE_STRING],' && \
|
||||
echo ' [$(PACKAGE_STRING)])' && \
|
||||
echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \
|
||||
echo ' [$(PACKAGE_BUGREPORT)])'; \
|
||||
echo 'm4_define([AT_PACKAGE_URL],' && \
|
||||
echo ' [$(PACKAGE_URL)])'; \
|
||||
} >'$(srcdir)/package.m4'
|
||||
|
||||
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
EXTRA_DIST = init.at $(srcdir)/package.m4 $(TESTSUITE)
|
||||
|
||||
#testsuites
|
||||
TESTSUITE_AT = testsuite.at
|
||||
TESTSUITE_AT += version.at
|
||||
TESTSUITE_AT += list.at
|
||||
TESTSUITE_AT += install.at
|
||||
TESTSUITE_AT += erase.at
|
||||
TESTSUITE_AT += update.at
|
||||
TESTSUITE_AT += downgrade.at
|
||||
EXTRA_DIST += $(TESTSUITE_AT)
|
||||
|
||||
DISTCLEANFILES = atconfig testsuite
|
||||
|
||||
check-local: atconfig $(TESTSUITE)
|
||||
$(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(abs_top_srcdir)/tools/cli' \
|
||||
$(TESTSUITEFLAGS)
|
||||
|
||||
installcheck-local: atconfig $(TESTSUITE)
|
||||
$(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(abs_top_srcdir)/tools/cli' \
|
||||
$(TESTSUITEFLAGS)
|
||||
|
||||
clean-local:
|
||||
test ! -f '$(TESTSUITE)' || \
|
||||
$(SHELL) '$(TESTSUITE)' --clean
|
||||
rm -rf testroot
|
||||
|
||||
AUTOM4TE = $(SHELL) $(top_srcdir)/missing --run autom4te
|
||||
AUTOTEST = $(AUTOM4TE) --language=autotest
|
||||
$(TESTSUITE): $(srcdir)/package.m4 init.at $(TESTSUITE_AT)
|
||||
$(AUTOTEST) -I '$(srcdir)' -o $@.tmp $@.at
|
||||
mv $@.tmp $@
|
|
@ -1,22 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf check-local tests)
|
||||
|
||||
AT_SETUP([check-local check])
|
||||
AT_KEYWORDS([check-local])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT check-local $abs_top_builddir/tests/testroot/RPMS/x86_64/
|
||||
],
|
||||
[21],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,53 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf check tests)
|
||||
|
||||
# Test tdnf check commands
|
||||
AT_SETUP([check])
|
||||
AT_KEYWORDS([check])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT check
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([check skipconflicts])
|
||||
AT_KEYWORDS([check])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT check --skipconflicts
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([check skipobsoletes])
|
||||
AT_KEYWORDS([check])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT check --skipobsoletes
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([check skipconflicts skipobsoletes])
|
||||
AT_KEYWORDS([check])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT check --skipconflicts --skipobsoletes
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,34 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf downgrade tests)
|
||||
|
||||
AT_SETUP([downgrade check])
|
||||
AT_KEYWORDS([downgrade])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion -y
|
||||
TDNF_CLI_W_CHROOT downgrade -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([downgrade by version])
|
||||
AT_KEYWORDS([downgrade])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion -y
|
||||
TDNF_CLI_W_CHROOT downgrade tdnf-test-multiversion-1.0.1 -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,33 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf erase tests)
|
||||
|
||||
AT_SETUP([erase basic])
|
||||
AT_KEYWORDS([erase])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-one -y
|
||||
TDNF_CLI_W_CHROOT erase tdnf-test-one -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([erase non existent])
|
||||
AT_KEYWORDS([erase])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT erase pkg-not-found
|
||||
],
|
||||
[243],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,77 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_TESTED([tdnf])
|
||||
|
||||
m4_define([TDNF_CLI],[[$abs_top_builddir/tools/cli/tdnf]])
|
||||
|
||||
m4_define([TDNF_CHROOT],[[$abs_top_builddir/tests/testroot]])
|
||||
|
||||
m4_define([TDNF_CLI_W_CHROOT],[[$abs_top_builddir/tools/cli/tdnf --config "$abs_top_builddir/tests/testroot/etc/tdnf/tdnf.conf" --installroot $abs_top_builddir/tests/testroot]])
|
||||
|
||||
m4_define([TDNF_CHROOT_INIT],[[
|
||||
rm -rf $abs_top_builddir/tests/testroot
|
||||
mkdir $abs_top_builddir/tests/testroot
|
||||
rpm --root $abs_top_builddir/tests/testroot --initdb
|
||||
mkdir -p $abs_top_builddir/tests/testroot/var/cache/tdnf
|
||||
mkdir -p $abs_top_builddir/tests/testroot/etc/yum.repos.d
|
||||
mkdir -p $abs_top_builddir/tests/testroot/etc/tdnf
|
||||
mkdir -p $abs_top_builddir/tests/testroot/etc/pki/rpm-gpg
|
||||
mkdir $abs_top_builddir/tests/testroot/BUILD
|
||||
mkdir $abs_top_builddir/tests/testroot/RPMS
|
||||
mkdir $abs_top_builddir/tests/testroot/SRPMS
|
||||
|
||||
cat << EOF > $abs_top_builddir/tests/testroot/etc/tdnf/tdnf.conf
|
||||
[main]
|
||||
repodir=$abs_top_builddir/tests/testroot/etc/yum.repos.d
|
||||
cachedir=$abs_top_builddir/tests/testroot/var/cache/tdnf
|
||||
EOF
|
||||
|
||||
cat << EOF > $abs_top_builddir/tests/testroot/etc/pki/rpm-gpg/VMWARE-RPM-GPG-KEY
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.7 (GNU/Linux)
|
||||
|
||||
mI0ESAP+VwEEAMZylR8dOijUPNn3He3GdgM/kOXEhn3uQl+sRMNJUDm1qebi2D5b
|
||||
Qa7GNBIlXm3DEMAS+ZlkiFQ4WnhUq5awEXU7MGcWCEGfums5FckV2tysSfn7HeWd
|
||||
9mkEnsY2CUZF54lyKfY0f+vdFd6QdYo6b+YxGnLyiunEYHXSEo1TNj1vABEBAAG0
|
||||
QlZNd2FyZSwgSW5jLiAtLSBMaW51eCBQYWNrYWdpbmcgS2V5IC0tIDxsaW51eC1w
|
||||
YWNrYWdlc0B2bXdhcmUuY29tPoi8BBMBAgAmBQJIA/5XAhsDBQkRcu4ZBgsJCAcD
|
||||
AgQVAggDBBYCAwECHgECF4AACgkQwLXgq2b9SUkw0AP/UlmWQIjMNcYfTKCOOyFx
|
||||
Csl3bY5OZ6HZs4qCRvzESVTyKs0YN1gX5YDDRmE5EbaqSO7OLriA7p81CYhstYID
|
||||
GjVTBqH/zJz/DGKQUv0A7qGvnX4MDt/cvvgEXjGpeRx42le/mkPsHdwbG/8jKveY
|
||||
S/eu0g9IenS49i0hcOnjShGIRgQQEQIABgUCSAQWfAAKCRD1ZoIQEyn810LTAJ9k
|
||||
IOziCqa/awfBvlLq4eRgN/NnkwCeJLOuL6eAueYjaODTcFEGKUXlgM4=
|
||||
=bXtp
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
EOF
|
||||
]])
|
||||
|
||||
m4_define([TDNF_BUILD_INSTALL_RPMS],[[
|
||||
rpmbuild --define "_topdir $abs_top_builddir/tests/testroot" -r $abs_top_builddir/tests/testroot -ba $abs_top_builddir/tests/specs/*.spec
|
||||
createrepo $abs_top_builddir/tests/testroot/RPMS
|
||||
modifyrepo $abs_top_builddir/tests/specs/updateinfo.xml $abs_top_builddir/tests/testroot/RPMS/repodata/
|
||||
modifyrepo $abs_top_builddir/tests/updateinfo.xml $abs_top_builddir/tests/testroot/RPMS/repodata
|
||||
cat << EOF > $abs_top_builddir/tests/testroot/etc/yum.repos.d/basic.repo
|
||||
[basic]
|
||||
name=basic
|
||||
baseurl=file://$abs_top_builddir/tests/testroot/RPMS
|
||||
gpgkey=file:///etc/pki/rpm-gpg/VMWARE-RPM-GPG-KEY
|
||||
gpgcheck=0
|
||||
enabled=1
|
||||
EOF
|
||||
]])
|
||||
|
||||
m4_define([TDNF_ENABLE_GPGCHECK],[[
|
||||
sed -i 's/gpgcheck=0/gpgcheck=1/g' $abs_top_builddir/tests/testroot/etc/yum.repos.d/basic.repo
|
||||
]])
|
||||
|
||||
m4_define([TDNF_CHROOT_CLEAN],[[
|
||||
rm -rf $abs_top_builddir/tests/testroot
|
||||
]])
|
||||
|
||||
AT_INIT
|
|
@ -1,64 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf install tests)
|
||||
|
||||
AT_SETUP([install basic])
|
||||
AT_KEYWORDS([install])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-one -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([install existing])
|
||||
AT_KEYWORDS([install])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-one -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([install non existent])
|
||||
AT_KEYWORDS([install])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install pkg-not-found
|
||||
],
|
||||
[243],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([install by version])
|
||||
AT_KEYWORDS([install])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.2 -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([install without gpgcheck])
|
||||
AT_KEYWORDS([install])
|
||||
AT_CHECK([
|
||||
TDNF_ENABLE_GPGCHECK
|
||||
TDNF_CLI_W_CHROOT --nogpgcheck install tdnf-test-two -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,47 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf list tests)
|
||||
|
||||
# check tdnf list commands
|
||||
AT_SETUP([list])
|
||||
AT_KEYWORDS([list])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT list
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([list installed])
|
||||
AT_KEYWORDS([list])
|
||||
AT_CHECK([TDNF_CLI_W_CHROOT list installed],\
|
||||
[243], [ignore], [ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([list multi])
|
||||
AT_KEYWORDS([list])
|
||||
AT_CHECK([TDNF_CLI_W_CHROOT list tdnf-test-one tdnf-test-tw* | cut -d' ' -f1],\
|
||||
[0],
|
||||
[tdnf-test-one.x86_64
|
||||
tdnf-test-two.x86_64
|
||||
], [ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([list multi])
|
||||
AT_KEYWORDS([list])
|
||||
AT_CHECK([TDNF_CLI_W_CHROOT list tdnf-test-one tdnf-test-tw* | cut -d' ' -f1],\
|
||||
[0],
|
||||
[tdnf-test-one.x86_64
|
||||
tdnf-test-two.x86_64
|
||||
], [ignore])
|
||||
AT_CLEANUP
|
|
@ -1,29 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2017 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf repolist tests)
|
||||
|
||||
# check tdnf repolist commands
|
||||
AT_SETUP([repolist])
|
||||
AT_KEYWORDS([repolist])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT repolist
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([repolist all])
|
||||
AT_KEYWORDS([repolist])
|
||||
AT_CHECK([TDNF_CLI_W_CHROOT repolist all],\
|
||||
[0], [ignore], [ignore])
|
||||
AT_CLEANUP
|
|
@ -1,27 +0,0 @@
|
|||
#
|
||||
# tdnf-test-multiversion spec file version 1.0.1
|
||||
#
|
||||
Summary: basic multiversoin install test file.
|
||||
Name: tdnf-test-multiversion
|
||||
Version: 1.0.1
|
||||
Release: 1
|
||||
Vendor: VMware, Inc.
|
||||
Distribution: Photon
|
||||
License: VMware
|
||||
Url: http://www.vmware.com
|
||||
Group: Applications/tdnftest
|
||||
|
||||
%description
|
||||
Part of tdnf test spec. Basic install/remove/upgrade test
|
||||
|
||||
%prep
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
|
||||
%files
|
||||
|
||||
%changelog
|
||||
* Wed Apr 22 2015 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.0.1
|
||||
- Initial build. First version
|
|
@ -1,27 +0,0 @@
|
|||
#
|
||||
# tdnf-test-multiversion spec file version 1.0.2
|
||||
#
|
||||
Summary: basic multiversoin install test file.
|
||||
Name: tdnf-test-multiversion
|
||||
Version: 1.0.2
|
||||
Release: 1
|
||||
Vendor: VMware, Inc.
|
||||
Distribution: Photon
|
||||
License: VMware
|
||||
Url: http://www.vmware.com
|
||||
Group: Applications/tdnftest
|
||||
|
||||
%description
|
||||
Part of tdnf test spec. Basic install/remove/upgrade test
|
||||
|
||||
%prep
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
|
||||
%files
|
||||
|
||||
%changelog
|
||||
* Wed Apr 22 2015 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.0.2
|
||||
- Initial build. First version
|
|
@ -1,36 +0,0 @@
|
|||
#
|
||||
# tdnf-test-one spec file
|
||||
#
|
||||
Summary: basic install test file.
|
||||
Name: tdnf-test-one
|
||||
Version: 1.0.1
|
||||
Release: 2
|
||||
Vendor: VMware, Inc.
|
||||
Distribution: Photon
|
||||
License: VMware
|
||||
Url: http://www.vmware.com
|
||||
Group: Applications/tdnftest
|
||||
|
||||
%description
|
||||
Part of tdnf test spec. Basic install/remove/upgrade test
|
||||
|
||||
%prep
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
mkdir -p %_topdir/%buildroot/lib/systemd/system/
|
||||
cat << EOF >> %_topdir/%buildroot/lib/systemd/system/tdnf-test-one.service
|
||||
[Unit]
|
||||
Description=tdnf-test-one.service for whatprovides test.
|
||||
|
||||
EOF
|
||||
|
||||
%files
|
||||
/lib/systemd/system/tdnf-test-one.service
|
||||
|
||||
%changelog
|
||||
* Tue Nov 15 2016 Xiaolin Li <xiaolinl@vmware.com> 1.0.1-2
|
||||
- Add a service file for whatprovides test.
|
||||
* Tue Dec 15 2015 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.0
|
||||
- Initial build. First version
|
|
@ -1,27 +0,0 @@
|
|||
#
|
||||
# tdnf-test-two spec file
|
||||
#
|
||||
Summary: basic install test file.
|
||||
Name: tdnf-test-two
|
||||
Version: 1.0.1
|
||||
Release: 1
|
||||
Vendor: VMware, Inc.
|
||||
Distribution: Photon
|
||||
License: VMware
|
||||
Url: http://www.vmware.com
|
||||
Group: Applications/tdnftest
|
||||
|
||||
%description
|
||||
Part of tdnf test spec. Basic install/remove/upgrade test
|
||||
|
||||
%prep
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
|
||||
%files
|
||||
|
||||
%changelog
|
||||
* Mon May 23 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.0
|
||||
- Initial build. First version
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<updates>
|
||||
<update from="discus-updates@project-discus.org" status="stable" type="bugfix" version="1.0.2">
|
||||
<id>DISCUS-2015-5-01</id>
|
||||
<title>etcd</title>
|
||||
<release>Discus 1</release>
|
||||
<issued date="2015-05-01 12:00:00"/>
|
||||
<references>
|
||||
<reference href="http://www.vmware.com" id="1" title="tdnf-test-multiversion spec file version 1.0.1" type="vendor"/>
|
||||
<reference href="http://www.vmware.com" id="2" title="tdnf-test-multiversion spec file version 1.0.2" type="vendor"/>
|
||||
</references>
|
||||
<description>update tdnf-test-multiversion to 1.0.2. </description>
|
||||
<pkglist>
|
||||
<collection short="DS-1">
|
||||
<name>Discus 1</name>
|
||||
<package arch="x86_64" epoch="0" name="tdnf-test-multiversion" release="1.0.2" src="file:///root/tdnf/tests/testroot/RPMS/x86_64/tdnf-test-multiversion-1.0.2-1.x86_64.rpm" version="1.0.2-1">
|
||||
<filename>tdnf-test-multiversion-1.0.2-1.x86_64.rpm</filename>
|
||||
</package>
|
||||
</collection>
|
||||
</pkglist>
|
||||
</update>
|
||||
</updates>
|
|
@ -1,19 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
m4_include([init.at])
|
||||
m4_include([version.at])
|
||||
m4_include([repolist.at])
|
||||
m4_include([list.at])
|
||||
m4_include([install.at])
|
||||
m4_include([erase.at])
|
||||
m4_include([update.at])
|
||||
m4_include([downgrade.at])
|
||||
m4_include([whatprovides.at])
|
||||
m4_include([check-local.at])
|
||||
m4_include([check.at])
|
||||
m4_include([updateinfo.at])
|
109
tests/update.at
109
tests/update.at
|
@ -1,109 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf update tests)
|
||||
|
||||
AT_SETUP([update check])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT check-update
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update all])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT update -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update by version])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT update tdnf-test-multiversion-1.0.2 -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update non installed])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT update tdnf-test-one -y
|
||||
],
|
||||
[243],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update by version with exclude])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT update --exclude tdnf-test-multiversion -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update with security])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT update --security -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update with sec-severity GT than updates])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT update --sec-severity 7.8 -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update with sec-severity LE than updates])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT update --sec-severity 7.5 -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([update with reboot-required])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT update --reboot-required -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,67 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf updateinfo tests)
|
||||
|
||||
AT_SETUP([updateifo list])
|
||||
AT_KEYWORDS([updateinfo])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT updateinfo list
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([updateinfo info])
|
||||
AT_KEYWORDS([updateinfo])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT updateinfo info
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([updateinfo summary])
|
||||
AT_KEYWORDS([updateinfo])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT updateinfo
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
AT_SETUP([updateinfo by package])
|
||||
AT_KEYWORDS([update])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT install tdnf-test-multiversion-1.0.1 -y
|
||||
TDNF_CLI_W_CHROOT updateinfo tdnf-test-multiversion -y
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([updateinfo non installed])
|
||||
AT_KEYWORDS([updateinfo])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT updateinfo update tdnf-test-one -y
|
||||
],
|
||||
[243],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
|
@ -1,21 +0,0 @@
|
|||
<updates>
|
||||
<update from="photonpublish@vmware.com" status="stable" type="security" version="1.0.2">
|
||||
<id>PHSA-2017-2.0-0001</id>
|
||||
<title>tdnf-test-multiversion</title>
|
||||
<severity>7.5</severity>
|
||||
<release>1</release>
|
||||
<rights>Copyright 2007 Company Inc</rights>
|
||||
<issued date="2007-12-28 16:42:30"/>
|
||||
<updated date="2008-03-14 12:00:00"/>
|
||||
<description>This update includes a fix for a denial-of-service issue.</description>
|
||||
<pkglist>
|
||||
<collection short="1">
|
||||
<name>Photon 1</name>
|
||||
<package arch="x86_64" name="tdnf-test-multiversion" release="1" version="1.0.2">
|
||||
<filename>tdnf-test-multiversion-1.0.2-1.x86_64.rpm</filename>
|
||||
<reboot_suggested>True</reboot_suggested>
|
||||
</package>
|
||||
</collection>
|
||||
</pkglist>
|
||||
</update>
|
||||
</updates>
|
|
@ -1,18 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
AT_BANNER([tdnf tests start])
|
||||
|
||||
AT_SETUP([version])
|
||||
AT_KEYWORDS([version])
|
||||
AT_CHECK([$abs_top_builddir/tools/cli/tdnf --version],
|
||||
[0],
|
||||
[AT_PACKAGE_NAME: AT_PACKAGE_VERSION
|
||||
],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
#
|
||||
# Copyright (C) 2015 VMware, Inc. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the GNU Lesser General Public License v2.1 (the "License");
|
||||
# you may not use this file except in compliance with the License. The terms
|
||||
# of the License are located in the COPYING file of this distribution.
|
||||
#
|
||||
|
||||
AT_BANNER(tdnf list tests)
|
||||
|
||||
# check tdnf list commands
|
||||
AT_SETUP([whatprovides])
|
||||
AT_KEYWORDS([whatprovides])
|
||||
AT_CHECK([
|
||||
TDNF_CHROOT_CLEAN
|
||||
TDNF_CHROOT_INIT
|
||||
TDNF_BUILD_INSTALL_RPMS
|
||||
TDNF_CLI_W_CHROOT whatprovides tdnf-test-one
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([whatprovides file])
|
||||
AT_KEYWORDS([whatprovides])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT whatprovides /lib/systemd/system/tdnf-test-one.service
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
||||
AT_SETUP([whatprovides non existent])
|
||||
AT_KEYWORDS([whatprovides])
|
||||
AT_CHECK([
|
||||
TDNF_CLI_W_CHROOT whatprovides aa
|
||||
],
|
||||
[0],
|
||||
[ignore],
|
||||
[ignore])
|
||||
AT_CLEANUP
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
SUBDIRS = \
|
||||
cli
|
|
@ -1,13 +0,0 @@
|
|||
bin_PROGRAMS = tdnf
|
||||
|
||||
tdnf_CPPFLAGS = -I$(top_srcdir)/include
|
||||
tdnf_SOURCES = \
|
||||
main.c
|
||||
|
||||
SUBDIRS = \
|
||||
lib
|
||||
|
||||
tdnf_LDADD = \
|
||||
$(top_builddir)/common/libcommon.la \
|
||||
$(top_builddir)/client/libtdnf.la \
|
||||
$(top_builddir)/tools/cli/lib/libtdnfcli.la
|
|
@ -1,18 +0,0 @@
|
|||
lib_LTLIBRARIES = libtdnfcli.la
|
||||
libtdnfcli_la_CPPFLAGS = -I$(top_srcdir)/include
|
||||
|
||||
libtdnfcli_la_SOURCES = \
|
||||
api.c \
|
||||
help.c \
|
||||
installcmd.c \
|
||||
options.c \
|
||||
output.c \
|
||||
parseargs.c \
|
||||
parsecleanargs.c \
|
||||
parselistargs.c \
|
||||
parserepolistargs.c \
|
||||
parseupdateinfo.c \
|
||||
updateinfocmd.c
|
||||
|
||||
libtdnfcli_la_LIBADD = \
|
||||
$(top_builddir)/common/libcommon.la
|
|
@ -217,7 +217,7 @@ void
|
|||
TDNFCliShowVersion(
|
||||
)
|
||||
{
|
||||
printf("%s: %s\n", PACKAGE_NAME, TDNFGetVersion());
|
||||
printf("%s: %s\n", TDNFGetPackageName(), TDNFGetVersion());
|
||||
}
|
||||
|
||||
uint32_t
|
||||
|
|
Loading…
Reference in New Issue