From 83f4ce9c463b29988b2dbf2384b9915ef9334e56 Mon Sep 17 00:00:00 2001 From: pengxuanzheng Date: Sun, 27 Sep 2020 11:58:23 +0800 Subject: [PATCH] update --- autorelease.sh | 41 - autorevision.sh | 1273 -------------------------------- ci/get-nprocessors.sh | 48 -- ci/perpare_pulp3_netrc.sh | 3 - ci/travis.sh | 64 -- cmake/Findtcmalloc.cmake | 6 - cmake/Package.cmake | 53 -- cmake/Version.cmake | 53 -- cmake/changelog.sh | 9 - cmake/changelog.txt | 37 - example/hos_write_complete.cpp | 17 +- src/hos_client.cpp | 24 +- src/hos_client.h | 2 +- support/CMakeLists.txt | 2 +- 14 files changed, 30 insertions(+), 1602 deletions(-) delete mode 100644 autorelease.sh delete mode 100644 autorevision.sh delete mode 100644 ci/get-nprocessors.sh delete mode 100644 ci/perpare_pulp3_netrc.sh delete mode 100644 ci/travis.sh delete mode 100644 cmake/Findtcmalloc.cmake delete mode 100644 cmake/Package.cmake delete mode 100644 cmake/Version.cmake delete mode 100755 cmake/changelog.sh delete mode 100644 cmake/changelog.txt diff --git a/autorelease.sh b/autorelease.sh deleted file mode 100644 index 2a917466..00000000 --- a/autorelease.sh +++ /dev/null @@ -1,41 +0,0 @@ -######################################################################### -# File Name: autorelease.sh -# Author: pxz -# Created Time: Mon 31 Aug 2020 10:19:47 AM CST -######################################################################### -#!/bin/sh -if [ $# -lt 8 ]; then -echo "USAGE: ./autorelease.sh [API_V4_URL] [PROJECT_URL] - [PROJECT_ID] [TOKEN] - [COMMIT_TAG] [JOB] [PROJECT_NAME] [USER_DEFINE]" - echo "$1; $2; $3; $4; $5; $6; $7; $8" -exit 1; -fi - -CI_API_V4_URL=$1 -CI_PROJECT_URL=$2 -CI_PROJECT_ID=$3 -CI_TOKEN=$4 -CI_COMMIT_TAG=$5 -ARTIFACTS_JOB=$6 -CI_PROJECT_NAME=$7 -USER_DEFINE=$8 - -res=`echo -e "curl --header \"PRIVATE-TOKEN: $CI_TOKEN\" $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG -o /dev/null -s -w %{http_code}"| /bin/bash` - -if [[ $res == "200" ]]; then - eval $(echo -e "curl --request POST --header \"PRIVATE-TOKEN: $CI_TOKEN\" \ - --data name=\"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\" \ - --data url=\"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\ - $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/$CI_COMMIT_TAG/assets/links") -else - eval $(echo -e "curl --header 'Content-Type: application/json' --header \ - \"PRIVATE-TOKEN: $CI_TOKEN\" --data '{ \"name\": \"$CI_COMMIT_TAG\", \ - \"tag_name\": \"$CI_COMMIT_TAG\", \"description\": \"auto_release\",\ - \"assets\": { \"links\": [{ \"name\": \ - \"$CI_PROJECT_NAME-$USER_DEFINE-$CI_COMMIT_TAG.zip\", \"url\": \ - \"$CI_PROJECT_URL/-/jobs/artifacts/$CI_COMMIT_TAG/download?job=$ARTIFACTS_JOB\"\ - }] } }' --request POST $CI_API_V4_URL/projects/$CI_PROJECT_ID/releases/") -fi -h - diff --git a/autorevision.sh b/autorevision.sh deleted file mode 100644 index 8f496ebe..00000000 --- a/autorevision.sh +++ /dev/null @@ -1,1273 +0,0 @@ -######################################################################### -# File Name: autorevision.sh -# Author: pxz -# Created Time: Mon 31 Aug 2020 10:17:53 AM CST -######################################################################### -#!/bopyright (c) 2012 - 2016 dak180 and contributors. See -# https://opensource.org/licenses/mit-license.php or the included -# COPYING.md for licence terms. -# -# autorevision - extracts metadata about the head version from your -# repository. - -# Usage message. -arUsage() { - cat > "/dev/stderr" << EOF -usage: autorevision {-t output-type | -s symbol} [-o cache-file [-f] ] [-V] - Options include: - -t output-type = specify output type - -s symbol = specify symbol output - -o cache-file = specify cache file location - -f = force the use of cache data - -U = check for untracked files in svn - -V = emit version and exit - -? = help message - -The following are valid output types: - clojure = clojure file - c = C/C++ file - h = Header for use with c/c++ - hpp = Alternate C++ header strings with namespace - ini = INI file - java = Java file - javaprop = Java properties file - js = javascript file - json = JSON file - lua = Lua file - m4 = m4 file - matlab = matlab file - octave = octave file - php = PHP file - pl = Perl file - py = Python file - rpm = rpm file - scheme = scheme file - sh = Bash sytax - swift = Swift file - tex = (La)TeX file - xcode = Header useful for populating info.plist files - cmake = CMake file - - -The following are valid symbols: - VCS_TYPE - VCS_BASENAME - VCS_UUID - VCS_NUM - VCS_DATE - VCS_BRANCH - VCS_TAG - VCS_TICK - VCS_EXTRA - VCS_FULL_HASH - VCS_SHORT_HASH - VCS_WC_MODIFIED - VCS_ACTION_STAMP -EOF - exit 1 -} - -# Config -ARVERSION="&&ARVERSION&&" -TARGETFILE="/dev/stdout" -while getopts ":t:o:s:VfU" OPTION; do - case "${OPTION}" in - t) - AFILETYPE="${OPTARG}" - ;; - o) - CACHEFILE="${OPTARG}" - ;; - f) - CACHEFORCE="1" - ;; - s) - VAROUT="${OPTARG}" - ;; - U) - UNTRACKEDFILES="1" - ;; - V) - echo "autorevision ${ARVERSION}" - exit 0 - ;; - ?) - # If an unknown flag is used (or -?): - arUsage - ;; - esac -done - -if [ ! -z "${VAROUT}" ] && [ ! -z "${AFILETYPE}" ]; then - # If both -s and -t are specified: - echo "error: Improper argument combination." 1>&2 - exit 1 -elif [ -z "${VAROUT}" ] && [ -z "${AFILETYPE}" ]; then - # If neither -s or -t are specified: - arUsage -elif [ -z "${CACHEFILE}" ] && [ "${CACHEFORCE}" = "1" ]; then - # If -f is specified without -o: - arUsage -elif [ ! -f "${CACHEFILE}" ] && [ "${CACHEFORCE}" = "1" ]; then - # If we are forced to use the cache but it does not exist. - echo "error: Cache forced but no cache found." 1>&2 - exit 1 -fi - -# Make sure that the path we are given is one we can source -# (dash, we are looking at you). -if [ ! -z "${CACHEFILE}" ] && ! echo "${CACHEFILE}" | grep -q '^\.*/'; then - CACHEFILE="./${CACHEFILE}" -fi - -GENERATED_HEADER="Generated by autorevision - do not hand-hack!" - -# Functions to extract data from different repo types. -# For git repos -# shellcheck disable=SC2039,SC2164,SC2155 -gitRepo() { - local oldPath="${PWD}" - - cd "$(git rev-parse --show-toplevel)" - - VCS_TYPE="git" - - VCS_BASENAME="$(basename "${PWD}")" - - VCS_UUID="$(git rev-list --max-parents=0 --date-order --reverse HEAD 2>/dev/null | sed -n 1p)" - if [ -z "${VCS_UUID}" ]; then - VCS_UUID="$(git rev-list --topo-order HEAD | tail -n 1)" - fi - - # Is the working copy clean? - test -z "$(git status --untracked-files=normal --porcelain)" - VCS_WC_MODIFIED="${?}" - - # Enumeration of changesets - VCS_NUM="$(git rev-list --count HEAD 2>/dev/null)" - if [ -z "${VCS_NUM}" ]; then - echo "warning: Counting the number of revisions may be slower due to an outdated git version less than 1.7.2.3. If something breaks, please update it." 1>&2 - VCS_NUM="$(git rev-list HEAD | wc -l)" - fi - - # This may be a git-svn remote. If so, report the Subversion revision. - if [ -z "$(git config svn-remote.svn.url 2>/dev/null)" ]; then - # The full revision hash - VCS_FULL_HASH="$(git rev-parse HEAD)" - - # The short hash - VCS_SHORT_HASH="$(echo "${VCS_FULL_HASH}" | cut -b 1-7)" - else - # The git-svn revision number - VCS_FULL_HASH="$(git svn find-rev HEAD)" - VCS_SHORT_HASH="${VCS_FULL_HASH}" - fi - - # Current branch - VCS_BRANCH="$(git rev-parse --symbolic-full-name --verify "$(git name-rev --name-only --no-undefined HEAD 2>/dev/null)" 2>/dev/null | sed -e 's:refs/heads/::' | sed -e 's:refs/::')" - - # Cache the description - local DESCRIPTION="$(git describe --long --tags 2>/dev/null)" - - # Current or last tag ancestor (empty if no tags) - VCS_TAG="$(echo "${DESCRIPTION}" | sed -e "s:-g${VCS_SHORT_HASH}\$::" -e 's:-[0-9]*$::')" - - # Distance to last tag or an alias of VCS_NUM if there is no tag - if [ ! -z "${DESCRIPTION}" ]; then - VCS_TICK="$(echo "${DESCRIPTION}" | sed -e "s:${VCS_TAG}-::" -e "s:-g${VCS_SHORT_HASH}::")" - else - VCS_TICK="${VCS_NUM}" - fi - - # Date of the current commit - VCS_DATE="$(TZ=UTC git show -s --date=iso-strict-local --pretty=format:%ad | sed -e 's|+00:00|Z|')" - if [ -z "${VCS_DATE}" ]; then - echo "warning: Action stamps require git version 2.7+." 1>&2 - VCS_DATE="$(git log -1 --pretty=format:%ci | sed -e 's: :T:' -e 's: ::' -e 's|+00:00|Z|')" - local ASdis="1" - fi - - # Action Stamp - if [ -z "${ASdis}" ]; then - VCS_ACTION_STAMP="${VCS_DATE}!$(git show -s --pretty=format:%cE)" - else - VCS_ACTION_STAMP="" - fi - - cd "${oldPath}" -} - -# For hg repos -# shellcheck disable=SC2039,SC2164 -hgRepo() { - local oldPath="${PWD}" - - cd "$(hg root)" - - VCS_TYPE="hg" - - VCS_BASENAME="$(basename "${PWD}")" - - VCS_UUID="$(hg log -r "0" -l 1 --template '{node}\n')" - - # Is the working copy clean? - test -z "$(hg status -duram)" - VCS_WC_MODIFIED="${?}" - - # Enumeration of changesets - VCS_NUM="$(hg id -n | tr -d '+')" - - # The full revision hash - VCS_FULL_HASH="$(hg log -r "${VCS_NUM}" -l 1 --template '{node}\n')" - - # The short hash - VCS_SHORT_HASH="$(hg id -i | tr -d '+')" - - # Current bookmark (bookmarks are roughly equivalent to git's branches) - # or branch if no bookmark - VCS_BRANCH="$(hg id -B | cut -d ' ' -f 1)" - # Fall back to the branch if there are no bookmarks - if [ -z "${VCS_BRANCH}" ]; then - VCS_BRANCH="$(hg id -b)" - fi - - # Current or last tag ancestor (excluding auto tags, empty if no tags) - VCS_TAG="$(hg log -r "${VCS_NUM}" -l 1 --template '{latesttag}\n' 2>/dev/null | sed -e 's:qtip::' -e 's:tip::' -e 's:qbase::' -e 's:qparent::' -e "s:$(hg --config 'extensions.color=' --config 'extensions.mq=' --color never qtop 2>/dev/null)::" | cut -d ' ' -f 1)" - - # Distance to last tag or an alias of VCS_NUM if there is no tag - if [ ! -z "${VCS_TAG}" ]; then - VCS_TICK="$(hg log -r "${VCS_NUM}" -l 1 --template '{latesttagdistance}\n' 2>/dev/null)" - else - VCS_TICK="${VCS_NUM}" - fi - - # Date of the current commit - VCS_DATE="$(hg log -r "${VCS_NUM}" -l 1 --template '{date|isodatesec}\n' 2>/dev/null | sed -e 's: :T:' -e 's: ::' -e 's|+00:00|Z|')" - - # Action Stamp - VCS_ACTION_STAMP="$(TZ=UTC hg log -r "${VCS_NUM}" -l 1 --template '{date|localdate|rfc3339date}\n' 2>/dev/null | sed -e 's|+00:00|Z|')!$(hg log -r "${VCS_NUM}" -l 1 --template '{author|email}\n' 2>/dev/null)" - - cd "${oldPath}" -} - -# For bzr repos -# shellcheck disable=SC2039,SC2164 -bzrRepo() { - local oldPath="${PWD}" - - cd "$(bzr root)" - - VCS_TYPE="bzr" - - VCS_BASENAME="$(basename "${PWD}")" - - # Currently unimplemented because more investigation is needed. - VCS_UUID="" - - # Is the working copy clean? - bzr version-info --custom --template='{clean}\n' | grep -q '1' - VCS_WC_MODIFIED="${?}" - - # Enumeration of changesets - VCS_NUM="$(bzr revno)" - - # The full revision hash - VCS_FULL_HASH="$(bzr version-info --custom --template='{revision_id}\n')" - - # The short hash - VCS_SHORT_HASH="${VCS_NUM}" - - # Nick of the current branch - VCS_BRANCH="$(bzr nick)" - - # Current or last tag ancestor (excluding auto tags, empty if no tags) - VCS_TAG="$(bzr tags --sort=time | sed '/?$/d' | tail -n1 | cut -d ' ' -f1)" - - # Distance to last tag or an alias of VCS_NUM if there is no tag - if [ ! -z "${VCS_TAG}" ]; then - VCS_TICK="$(bzr log --line -r "tag:${VCS_TAG}.." | tail -n +2 | wc -l | sed -e 's:^ *::')" - else - VCS_TICK="${VCS_NUM}" - fi - - # Date of the current commit - VCS_DATE="$(bzr version-info --custom --template='{date}\n' | sed -e 's: :T:' -e 's: ::')" - - # Action Stamp - # Currently unimplemented because more investigation is needed. - VCS_ACTION_STAMP="" - - cd "${oldPath}" -} - -# For svn repos -# shellcheck disable=SC2039,SC2164,SC2155 -svnRepo() { - local oldPath="${PWD}" - - VCS_TYPE="svn" - - case "${PWD}" in - /*trunk*|/*branches*|/*tags*) - local fn="${PWD}" - while [ "$(basename "${fn}")" != 'trunk' ] && [ "$(basename "${fn}")" != 'branches' ] && [ "$(basename "${fn}")" != 'tags' ] && [ "$(basename "${fn}")" != '/' ]; do - local fn="$(dirname "${fn}")" - done - local fn="$(dirname "${fn}")" - if [ "${fn}" = '/' ]; then - VCS_BASENAME="$(basename "${PWD}")" - else - VCS_BASENAME="$(basename "${fn}")" - fi - ;; - *) VCS_BASENAME="$(basename "${PWD}")" ;; - esac - - VCS_UUID="$(svn info --xml | sed -n -e 's:::' -e 's:::p')" - - # Cache svnversion output - local SVNVERSION="$(svnversion)" - - # Is the working copy clean? - echo "${SVNVERSION}" | grep -q "M" - case "${?}" in - 0) - VCS_WC_MODIFIED="1" - ;; - 1) - if [ ! -z "${UNTRACKEDFILES}" ]; then - # `svnversion` does not detect untracked files and `svn status` is really slow, so only run it if we really have to. - if [ -z "$(svn status)" ]; then - VCS_WC_MODIFIED="0" - else - VCS_WC_MODIFIED="1" - fi - else - VCS_WC_MODIFIED="0" - fi - ;; - esac - - # Enumeration of changesets - VCS_NUM="$(echo "${SVNVERSION}" | cut -d : -f 1 | sed -e 's:M::' -e 's:S::' -e 's:P::')" - - # The full revision hash - VCS_FULL_HASH="${SVNVERSION}" - - # The short hash - VCS_SHORT_HASH="${VCS_NUM}" - - # Current branch - case "${PWD}" in - /*trunk*|/*branches*|/*tags*) - local lastbase="" - local fn="${PWD}" - while : - do - base="$(basename "${fn}")" - if [ "${base}" = 'trunk' ]; then - VCS_BRANCH='trunk' - break - elif [ "${base}" = 'branches' ] || [ "${base}" = 'tags' ]; then - VCS_BRANCH="${lastbase}" - break - elif [ "${base}" = '/' ]; then - VCS_BRANCH="" - break - fi - local lastbase="${base}" - local fn="$(dirname "${fn}")" - done - ;; - *) VCS_BRANCH="" ;; - esac - - # Current or last tag ancestor (empty if no tags). But "current - # tag" can't be extracted reliably because Subversion doesn't - # have tags the way other VCSes do. - VCS_TAG="" - VCS_TICK="" - - # Date of the current commit - VCS_DATE="$(svn info --xml | sed -n -e 's:::' -e 's:::p')" - - # Action Stamp - VCS_ACTION_STAMP="${VCS_DATE}!$(svn log --xml -l 1 -r "${VCS_SHORT_HASH}" | sed -n -e 's:::' -e 's:::p')" - - cd "${oldPath}" -} - - -# Functions to output data in different formats. -# For bash output -shOutput() { - cat > "${TARGETFILE}" << EOF -# ${GENERATED_HEADER} - -VCS_TYPE="${VCS_TYPE}" -VCS_BASENAME="${VCS_BASENAME}" -VCS_UUID="${VCS_UUID}" -VCS_NUM="${VCS_NUM}" -VCS_DATE="${VCS_DATE}" -VCS_BRANCH="${VCS_BRANCH}" -VCS_TAG="${VCS_TAG}" -VCS_TICK="${VCS_TICK}" -VCS_EXTRA="${VCS_EXTRA}" - -VCS_ACTION_STAMP="${VCS_ACTION_STAMP}" -VCS_FULL_HASH="${VCS_FULL_HASH}" -VCS_SHORT_HASH="${VCS_SHORT_HASH}" - -VCS_WC_MODIFIED="${VCS_WC_MODIFIED}" - -# end -EOF -} - -# For source C output -cOutput() { - cat > "${TARGETFILE}" << EOF -/* ${GENERATED_HEADER} */ - -const char *VCS_TYPE = "${VCS_TYPE}"; -const char *VCS_BASENAME = "${VCS_BASENAME}"; -const char *VCS_UUID = "${VCS_UUID}"; -const int VCS_NUM = ${VCS_NUM}; -const char *VCS_DATE = "${VCS_DATE}"; -const char *VCS_BRANCH = "${VCS_BRANCH}"; -const char *VCS_TAG = "${VCS_TAG}"; -const int VCS_TICK = ${VCS_TICK}; -const char *VCS_EXTRA = "${VCS_EXTRA}"; - -const char *VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; -const char *VCS_FULL_HASH = "${VCS_FULL_HASH}"; -const char *VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; - -const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; - -/* end */ -EOF -} - -# For header output -hOutput() { - cat > "${TARGETFILE}" << EOF -/* ${GENERATED_HEADER} */ -#ifndef AUTOREVISION_H -#define AUTOREVISION_H - -#define VCS_TYPE "${VCS_TYPE}" -#define VCS_BASENAME "${VCS_BASENAME}" -#define VCS_UUID "${VCS_UUID}" -#define VCS_NUM ${VCS_NUM} -#define VCS_DATE "${VCS_DATE}" -#define VCS_BRANCH "${VCS_BRANCH}" -#define VCS_TAG "${VCS_TAG}" -#define VCS_TICK ${VCS_TICK} -#define VCS_EXTRA "${VCS_EXTRA}" - -#define VCS_ACTION_STAMP "${VCS_ACTION_STAMP}" -#define VCS_FULL_HASH "${VCS_FULL_HASH}" -#define VCS_SHORT_HASH "${VCS_SHORT_HASH}" - -#define VCS_WC_MODIFIED ${VCS_WC_MODIFIED} - -#endif - -/* end */ -EOF -} - -# A header output for use with xcode to populate info.plist strings -xcodeOutput() { - cat > "${TARGETFILE}" << EOF -/* ${GENERATED_HEADER} */ -#ifndef AUTOREVISION_H -#define AUTOREVISION_H - -#define VCS_TYPE ${VCS_TYPE} -#define VCS_BASENAME ${VCS_BASENAME} -#define VCS_UUID ${VCS_UUID} -#define VCS_NUM ${VCS_NUM} -#define VCS_DATE ${VCS_DATE} -#define VCS_BRANCH ${VCS_BRANCH} -#define VCS_TAG ${VCS_TAG} -#define VCS_TICK ${VCS_TICK} -#define VCS_EXTRA ${VCS_EXTRA} - -#define VCS_ACTION_STAMP ${VCS_ACTION_STAMP} -#define VCS_FULL_HASH ${VCS_FULL_HASH} -#define VCS_SHORT_HASH ${VCS_SHORT_HASH} - -#define VCS_WC_MODIFIED ${VCS_WC_MODIFIED} - -#endif - -/* end */ -EOF -} - -# For Swift output -swiftOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="false" ;; - 1) VCS_WC_MODIFIED="true" ;; - esac - # For values that may not exist depending on the type of repo we - # have read from, set them to `nil` when they are empty. - if [ -z "${VCS_UUID}" ]; then - VCS_UUID="nil" - else - VCS_UUID="\"${VCS_UUID}\"" - fi - if [ -z "${VCS_TAG}" ]; then - VCS_TAG="nil" - else - VCS_TAG="\"${VCS_TAG}\"" - fi - : "${VCS_TICK:="nil"}" - if [ -z "${VCS_EXTRA}" ]; then - VCS_EXTRA="nil" - else - VCS_EXTRA="\"${VCS_EXTRA}\"" - fi - if [ -z "${VCS_ACTION_STAMP}" ]; then - VCS_ACTION_STAMP="nil" - else - VCS_ACTION_STAMP="\"${VCS_ACTION_STAMP}\"" - fi - cat > "${TARGETFILE}" << EOF -/* ${GENERATED_HEADER} */ - -let VCS_TYPE = "${VCS_TYPE}" -let VCS_BASENAME = "${VCS_BASENAME}" -let VCS_UUID: String? = ${VCS_UUID} -let VCS_NUM: Int = ${VCS_NUM} -let VCS_DATE = "${VCS_DATE}" -let VCS_BRANCH: String = "${VCS_BRANCH}" -let VCS_TAG: String? = ${VCS_TAG} -let VCS_TICK: Int? = ${VCS_TICK} -let VCS_EXTRA: String? = ${VCS_EXTRA} - -let VCS_ACTION_STAMP: String? = ${VCS_ACTION_STAMP} -let VCS_FULL_HASH: String = "${VCS_FULL_HASH}" -let VCS_SHORT_HASH: String = "${VCS_SHORT_HASH}" - -let VCS_WC_MODIFIED: Bool = ${VCS_WC_MODIFIED} - -/* end */ -EOF -} - -# For Python output -pyOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="False" ;; - 1) VCS_WC_MODIFIED="True" ;; - esac - cat > "${TARGETFILE}" << EOF -# ${GENERATED_HEADER} - -VCS_TYPE = "${VCS_TYPE}" -VCS_BASENAME = "${VCS_BASENAME}" -VCS_UUID = "${VCS_UUID}" -VCS_NUM = ${VCS_NUM} -VCS_DATE = "${VCS_DATE}" -VCS_BRANCH = "${VCS_BRANCH}" -VCS_TAG = "${VCS_TAG}" -VCS_TICK = ${VCS_TICK} -VCS_EXTRA = "${VCS_EXTRA}" - -VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}" -VCS_FULL_HASH = "${VCS_FULL_HASH}" -VCS_SHORT_HASH = "${VCS_SHORT_HASH}" - -VCS_WC_MODIFIED = ${VCS_WC_MODIFIED} - -# end -EOF -} - -# For Perl output -plOutput() { - cat << EOF -# ${GENERATED_HEADER} - -\$VCS_TYPE = '${VCS_TYPE}'; -\$VCS_BASENAME = '${VCS_BASENAME}'; -\$VCS_UUID = '${VCS_UUID}'; -\$VCS_NUM = ${VCS_NUM}; -\$VCS_DATE = '${VCS_DATE}'; -\$VCS_BRANCH = '${VCS_BRANCH}'; -\$VCS_TAG = '${VCS_TAG}'; -\$VCS_TICK = ${VCS_TICK}; -\$VCS_EXTRA = '${VCS_EXTRA}'; - -\$VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}'; -\$VCS_FULL_HASH = '${VCS_FULL_HASH}'; -\$VCS_SHORT_HASH = '${VCS_SHORT_HASH}'; - -\$VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; - -# end -1; -EOF -} - -# For lua output -luaOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="false" ;; - 1) VCS_WC_MODIFIED="true" ;; - esac - cat > "${TARGETFILE}" << EOF --- ${GENERATED_HEADER} - -VCS_TYPE = "${VCS_TYPE}" -VCS_BASENAME = "${VCS_BASENAME}" -VCS_UUID = "${VCS_UUID}" -VCS_NUM = ${VCS_NUM} -VCS_DATE = "${VCS_DATE}" -VCS_BRANCH = "${VCS_BRANCH}" -VCS_TAG = "${VCS_TAG}" -VCS_TICK = ${VCS_TICK} -VCS_EXTRA = "${VCS_EXTRA}" - -VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}" -VCS_FULL_HASH = "${VCS_FULL_HASH}" -VCS_SHORT_HASH = "${VCS_SHORT_HASH}" - -VCS_WC_MODIFIED = ${VCS_WC_MODIFIED} - --- end -EOF -} - -# For php output -phpOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="false" ;; - 1) VCS_WC_MODIFIED="true" ;; - esac - cat > "${TARGETFILE}" << EOF - "${VCS_TYPE}", - "VCS_BASENAME" => "${VCS_BASENAME}", - "VCS_UUID" => "${VCS_UUID}", - "VCS_NUM" => ${VCS_NUM}, - "VCS_DATE" => "${VCS_DATE}", - "VCS_BRANCH" => "${VCS_BRANCH}", - "VCS_TAG" => "${VCS_TAG}", - "VCS_TICK" => ${VCS_TICK}, - "VCS_EXTRA" => "${VCS_EXTRA}", - "VCS_ACTION_STAMP" => "${VCS_ACTION_STAMP}", - "VCS_FULL_HASH" => "${VCS_FULL_HASH}", - "VCS_SHORT_HASH" => "${VCS_SHORT_HASH}", - "VCS_WC_MODIFIED" => ${VCS_WC_MODIFIED} -); - -# end -?> -EOF -} - -# For ini output -iniOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="false" ;; - 1) VCS_WC_MODIFIED="true" ;; - esac - cat > "${TARGETFILE}" << EOF -; ${GENERATED_HEADER} -[VCS] -VCS_TYPE = "${VCS_TYPE}" -VCS_BASENAME = "${VCS_BASENAME}" -VCS_UUID = "${VCS_UUID}" -VCS_NUM = ${VCS_NUM} -VCS_DATE = "${VCS_DATE}" -VCS_BRANCH = "${VCS_BRANCH}" -VCS_TAG = "${VCS_TAG}" -VCS_TICK = ${VCS_TICK} -VCS_EXTRA = "${VCS_EXTRA}" -VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}" -VCS_FULL_HASH = "${VCS_FULL_HASH}" -VCS_SHORT_HASH = "${VCS_SHORT_HASH}" -VCS_WC_MODIFIED = ${VCS_WC_MODIFIED} -; end -EOF -} - -# For javascript output -jsOutput() { - case "${VCS_WC_MODIFIED}" in - 1) VCS_WC_MODIFIED="true" ;; - 0) VCS_WC_MODIFIED="false" ;; - esac - cat > "${TARGETFILE}" << EOF -/** ${GENERATED_HEADER} */ - -var autorevision = { - VCS_TYPE: "${VCS_TYPE}", - VCS_BASENAME: "${VCS_BASENAME}", - VCS_UUID: "${VCS_UUID}", - VCS_NUM: ${VCS_NUM}, - VCS_DATE: "${VCS_DATE}", - VCS_BRANCH: "${VCS_BRANCH}", - VCS_TAG: "${VCS_TAG}", - VCS_TICK: ${VCS_TICK}, - VCS_EXTRA: "${VCS_EXTRA}", - - VCS_ACTION_STAMP: "${VCS_ACTION_STAMP}", - VCS_FULL_HASH: "${VCS_FULL_HASH}", - VCS_SHORT_HASH: "${VCS_SHORT_HASH}", - - VCS_WC_MODIFIED: ${VCS_WC_MODIFIED} -}; - -/** Node.js compatibility */ -if (typeof module !== 'undefined') { - module.exports = autorevision; -} - -/** end */ -EOF -} - -# For JSON output -jsonOutput() { - case "${VCS_WC_MODIFIED}" in - 1) VCS_WC_MODIFIED="true" ;; - 0) VCS_WC_MODIFIED="false" ;; - esac - cat > "${TARGETFILE}" << EOF -{ - "_comment": "${GENERATED_HEADER}", - "VCS_TYPE": "${VCS_TYPE}", - "VCS_BASENAME": "${VCS_BASENAME}", - "VCS_UUID": "${VCS_UUID}", - "VCS_NUM": ${VCS_NUM}, - "VCS_DATE": "${VCS_DATE}", - "VCS_BRANCH":"${VCS_BRANCH}", - "VCS_TAG": "${VCS_TAG}", - "VCS_TICK": ${VCS_TICK}, - "VCS_EXTRA": "${VCS_EXTRA}", - - "VCS_ACTION_STAMP": "${VCS_ACTION_STAMP}", - "VCS_FULL_HASH": "${VCS_FULL_HASH}", - "VCS_SHORT_HASH": "${VCS_SHORT_HASH}", - - "VCS_WC_MODIFIED": ${VCS_WC_MODIFIED} -} -EOF -} - -# For Java output -javaOutput() { - case "${VCS_WC_MODIFIED}" in - 1) VCS_WC_MODIFIED="true" ;; - 0) VCS_WC_MODIFIED="false" ;; - esac - cat > "${TARGETFILE}" << EOF -/* ${GENERATED_HEADER} */ - -public class autorevision { - public static final String VCS_TYPE = "${VCS_TYPE}"; - public static final String VCS_BASENAME = "${VCS_BASENAME}"; - public static final String VCS_UUID = "${VCS_UUID}"; - public static final long VCS_NUM = ${VCS_NUM}; - public static final String VCS_DATE = "${VCS_DATE}"; - public static final String VCS_BRANCH = "${VCS_BRANCH}"; - public static final String VCS_TAG = "${VCS_TAG}"; - public static final long VCS_TICK = ${VCS_TICK}; - public static final String VCS_EXTRA = "${VCS_EXTRA}"; - - public static final String VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; - public static final String VCS_FULL_HASH = "${VCS_FULL_HASH}"; - public static final String VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; - - public static final boolean VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; -} -EOF -} - -# For Java properties output -javapropOutput() { - case "${VCS_WC_MODIFIED}" in - 1) VCS_WC_MODIFIED="true" ;; - 0) VCS_WC_MODIFIED="false" ;; - esac - cat > "${TARGETFILE}" << EOF -# ${GENERATED_HEADER} - -VCS_TYPE=${VCS_TYPE} -VCS_BASENAME=${VCS_BASENAME} -VCS_UUID=${VCS_UUID} -VCS_NUM=${VCS_NUM} -VCS_DATE=${VCS_DATE} -VCS_BRANCH=${VCS_BRANCH} -VCS_TAG=${VCS_TAG} -VCS_TICK=${VCS_TICK} -VCS_EXTRA=${VCS_EXTRA} - -VCS_ACTION_STAMP=${VCS_ACTION_STAMP} -VCS_FULL_HASH=${VCS_FULL_HASH} -VCS_SHORT_HASH=${VCS_SHORT_HASH} - -VCS_WC_MODIFIED=${VCS_WC_MODIFIED} -EOF -} - -# For m4 output -m4Output() { - cat > "${TARGETFILE}" << EOF -dnl ${GENERATED_HEADER} -define(\`VCS_TYPE', \`${VCS_TYPE}')dnl -define(\`VCS_BASENAME', \`${VCS_BASENAME}')dnl -define(\`VCS_UUID', \`${VCS_UUID}')dnl -define(\`VCS_NUM', \`${VCS_NUM}')dnl -define(\`VCS_DATE', \`${VCS_DATE}')dnl -define(\`VCS_BRANCH', \`${VCS_BRANCH}')dnl -define(\`VCS_TAG', \`${VCS_TAG}')dnl -define(\`VCS_TICK', \`${VCS_TICK}')dnl -define(\`VCS_EXTRA', \`${VCS_EXTRA}')dnl -define(\`VCS_ACTIONSTAMP', \`${VCS_ACTION_STAMP}')dnl -define(\`VCS_FULLHASH', \`${VCS_FULL_HASH}')dnl -define(\`VCS_SHORTHASH', \`${VCS_SHORT_HASH}')dnl -define(\`VCS_WC_MODIFIED', \`${VCS_WC_MODIFIED}')dnl -EOF -} - -# For (La)TeX output -texOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="false" ;; - 1) VCS_WC_MODIFIED="true" ;; - esac - cat > "${TARGETFILE}" << EOF -% ${GENERATED_HEADER} -\def \vcsType {${VCS_TYPE}} -\def \vcsBasename {${VCS_BASENAME}} -\def \vcsUUID {${VCS_UUID}} -\def \vcsNum {${VCS_NUM}} -\def \vcsDate {${VCS_DATE}} -\def \vcsBranch {${VCS_BRANCH}} -\def \vcsTag {${VCS_TAG}} -\def \vcsTick {${VCS_TICK}} -\def \vcsExtra {${VCS_EXTRA}} -\def \vcsACTIONSTAMP {${VCS_ACTION_STAMP}} -\def \vcsFullHash {${VCS_FULL_HASH}} -\def \vcsShortHash {${VCS_SHORT_HASH}} -\def \vcsWCModified {${VCS_WC_MODIFIED}} -\endinput -EOF -} - -# For scheme output -schemeOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="#f" ;; - 1) VCS_WC_MODIFIED="#t" ;; - esac - cat > "${TARGETFILE}" << EOF -;; ${GENERATED_HEADER} -(define VCS_TYPE "${VCS_TYPE}") -(define VCS_BASENAME "${VCS_BASENAME}") -(define VCS_UUID "${VCS_UUID}") -(define VCS_NUM ${VCS_NUM}) -(define VCS_DATE "${VCS_DATE}") -(define VCS_BRANCH "${VCS_BRANCH}") -(define VCS_TAG "${VCS_TAG}") -(define VCS_TICK ${VCS_TICK}) -(define VCS_EXTRA "${VCS_EXTRA}") - -(define VCS_ACTION_STAMP "${VCS_ACTION_STAMP}") -(define VCS_FULL_HASH "${VCS_FULL_HASH}") -(define VCS_SHORT_HASH "${VCS_SHORT_HASH}") - -(define VCS_WC_MODIFIED ${VCS_WC_MODIFIED}) -;; end -EOF -} - -# For clojure output -clojureOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="false" ;; - 1) VCS_WC_MODIFIED="true" ;; - esac - cat > "${TARGETFILE}" << EOF -;; ${GENERATED_HEADER} -(def VCS_TYPE "${VCS_TYPE}") -(def VCS_BASENAME "${VCS_BASENAME}") -(def VCS_UUID "${VCS_UUID}") -(def VCS_NUM ${VCS_NUM}) -(def VCS_DATE "${VCS_DATE}") -(def VCS_BRANCH "${VCS_BRANCH}") -(def VCS_TAG "${VCS_TAG}") -(def VCS_TICK ${VCS_TICK}) -(def VCS_EXTRA "${VCS_EXTRA}") - -(def VCS_ACTION_STAMP "${VCS_ACTION_STAMP}") -(def VCS_FULL_HASH "${VCS_FULL_HASH}") -(def VCS_SHORT_HASH "${VCS_SHORT_HASH}") - -(def VCS_WC_MODIFIED ${VCS_WC_MODIFIED}) -;; end -EOF -} - -# For rpm spec file output -rpmOutput() { - cat > "${TARGETFILE}" << EOF -# ${GENERATED_HEADER} -$([ "${VCS_TYPE}" ] && echo "%define vcs_type ${VCS_TYPE}") -$([ "${VCS_BASENAME}" ] && echo "%define vcs_basename ${VCS_BASENAME}") -$([ "${VCS_UUID}" ] && echo "%define vcs_uuid ${VCS_UUID}") -$([ "${VCS_NUM}" ] && echo "%define vcs_num ${VCS_NUM}") -$([ "${VCS_DATE}" ] && echo "%define vcs_date ${VCS_DATE}") -$([ "${VCS_BRANCH}" ] && echo "%define vcs_branch ${VCS_BRANCH}") -$([ "${VCS_TAG}" ] && echo "%define vcs_tag ${VCS_TAG}") -$([ "${VCS_TICK}" ] && echo "%define vcs_tick ${VCS_TICK}") -$([ "${VCS_EXTRA}" ] && echo "%define vcs_extra ${VCS_EXTRA}") - -$([ "${VCS_ACTION_STAMP}" ] && echo "%define vcs_action_stamp ${VCS_ACTION_STAMP}") -$([ "${VCS_FULL_HASH}" ] && echo "%define vcs_full_hash ${VCS_FULL_HASH}") -$([ "${VCS_SHORT_HASH}" ] && echo "%define vcs_short_hash ${VCS_SHORT_HASH}") - -$([ "${VCS_WC_MODIFIED}" ] && echo "%define vcs_wc_modified ${VCS_WC_MODIFIED}") -# end -EOF -} - -# shellcheck disable=SC2155,SC2039 -hppOutput() { - local NAMESPACE="$(echo "${VCS_BASENAME}" | sed -e 's:_::g' | tr '[:lower:]' '[:upper:]')" - cat > "${TARGETFILE}" << EOF -/* ${GENERATED_HEADER} */ - -#ifndef ${NAMESPACE}_AUTOREVISION_H -#define ${NAMESPACE}_AUTOREVISION_H - -#include - -namespace $(echo "${NAMESPACE}" | tr '[:upper:]' '[:lower:]') -{ - const std::string VCS_TYPE = "${VCS_TYPE}"; - const std::string VCS_BASENAME = "${VCS_BASENAME}"; - const std::string VCS_UUID = "${VCS_UUID}"; - const int VCS_NUM = ${VCS_NUM}; - const std::string VCS_DATE = "${VCS_DATE}"; - const std::string VCS_BRANCH = "${VCS_BRANCH}"; - const std::string VCS_TAG = "${VCS_TAG}"; - const int VCS_TICK = ${VCS_TICK}; - const std::string VCS_EXTRA = "${VCS_EXTRA}"; - - const std::string VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; - const std::string VCS_FULL_HASH = "${VCS_FULL_HASH}"; - const std::string VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; - - const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; -} - -#endif - -/* end */ -EOF -} - -matlabOutput() { - case "${VCS_WC_MODIFIED}" in - 0) VCS_WC_MODIFIED="FALSE" ;; - 1) VCS_WC_MODIFIED="TRUE" ;; - esac - cat > "${TARGETFILE}" << EOF -% ${GENERATED_HEADER} - -VCS_TYPE = '${VCS_TYPE}'; -VCS_BASENAME = '${VCS_BASENAME}'; -VCS_UUID = '${VCS_UUID}'; -VCS_NUM = ${VCS_NUM}; -VCS_DATE = '${VCS_DATE}'; -VCS_BRANCH = '${VCS_BRANCH}'; -VCS_TAG = '${VCS_TAG}'; -VCS_TICK = ${VCS_TICK}; -VCS_EXTRA = '${VCS_EXTRA}'; - -VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}'; -VCS_FULL_HASH = '${VCS_FULL_HASH}'; -VCS_SHORT_HASH = '${VCS_SHORT_HASH}'; - -VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; - -% end -EOF -} - -octaveOutput() { - cat > "${TARGETFILE}" << EOF -% ${GENERATED_HEADER} - -VCS_TYPE = '${VCS_TYPE}'; -VCS_BASENAME = '${VCS_BASENAME}'; -VCS_UUID = '${VCS_UUID}'; -VCS_NUM = ${VCS_NUM}; -VCS_DATE = '${VCS_DATE}'; -VCS_BRANCH = '${VCS_BRANCH}'; -VCS_TAG = '${VCS_TAG}'; -VCS_TICK = ${VCS_TICK}; -VCS_EXTRA = '${VCS_EXTRA}'; - -VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}'; -VCS_FULL_HASH = '${VCS_FULL_HASH}'; -VCS_SHORT_HASH = '${VCS_SHORT_HASH}'; - -VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; - -% end -EOF -} - -cmakeOutput() { - cat > "${TARGETFILE}" << EOF -# ${GENERATED_HEADER} - -set(VCS_TYPE ${VCS_TYPE}) -set(VCS_BASENAME ${VCS_BASENAME}) -set(VCS_UUID ${VCS_UUID}) -set(VCS_NUM ${VCS_NUM}) -set(VCS_DATE ${VCS_DATE}) -set(VCS_BRANCH ${VCS_BRANCH}) -set(VCS_TAG ${VCS_TAG}) -set(VCS_TICK ${VCS_TICK}) -set(VCS_EXTRA ${VCS_EXTRA}) - -set(VCS_ACTION_STAMP ${VCS_ACTION_STAMP}) -set(VCS_FULL_HASH ${VCS_FULL_HASH}) -set(VCS_SHORT_HASH ${VCS_SHORT_HASH}) - -set(VCS_WC_MODIFIED ${VCS_WC_MODIFIED}) - -# end -EOF -} - - -# Helper functions -# Count path segments -# shellcheck disable=SC2039 -pathSegment() { - local pathz="${1}" - local depth="0" - - if [ ! -z "${pathz}" ]; then - # Continue until we are at / or there are no path separators left. - while [ ! "${pathz}" = "/" ] && [ ! "${pathz}" = "$(echo "${pathz}" | sed -e 's:/::')" ]; do - pathz="$(dirname "${pathz}")" - depth="$((depth+1))" - done - fi - echo "${depth}" -} - -# Largest of four numbers -# shellcheck disable=SC2039 -multiCompare() { - local larger="${1}" - local numA="${2}" - local numB="${3}" - local numC="${4}" - - [ "${numA}" -gt "${larger}" ] && larger="${numA}" - [ "${numB}" -gt "${larger}" ] && larger="${numB}" - [ "${numC}" -gt "${larger}" ] && larger="${numC}" - echo "${larger}" -} - -# Test for repositories -# shellcheck disable=SC2155,SC2039 -repoTest() { - REPONUM="0" - if [ ! -z "$(git rev-parse HEAD 2>/dev/null)" ]; then - local gitPath="$(git rev-parse --show-toplevel)" - local gitDepth="$(pathSegment "${gitPath}")" - REPONUM="$((REPONUM+1))" - else - local gitDepth="0" - fi - if [ ! -z "$(hg root 2>/dev/null)" ]; then - local hgPath="$(hg root 2>/dev/null)" - local hgDepth="$(pathSegment "${hgPath}")" - REPONUM="$((REPONUM+1))" - else - local hgDepth="0" - fi - if [ ! -z "$(bzr root 2>/dev/null)" ]; then - local bzrPath="$(bzr root 2>/dev/null)" - local bzrDepth="$(pathSegment "${bzrPath}")" - REPONUM="$((REPONUM+1))" - else - local bzrDepth="0" - fi - if [ ! -z "$(svn info 2>/dev/null)" ]; then - local stringz="" - local stringx="" - local svnPath="$(svn info --xml | sed -n -e "s:${stringz}::" -e "s:${stringx}::p")" - # An old enough svn will not be able give us a path; default - # to 1 for that case. - if [ -z "${svnPath}" ]; then - local svnDepth="1" - else - local svnDepth="$(pathSegment "${svnPath}")" - fi - REPONUM="$((REPONUM+1))" - else - local svnDepth="0" - fi - - # Do not do more work then we have to. - if [ "${REPONUM}" = "0" ]; then - return - fi - - # Figure out which repo is the deepest and use it. - local wonRepo="$(multiCompare "${gitDepth}" "${hgDepth}" "${bzrDepth}" "${svnDepth}")" - if [ "${wonRepo}" = "${gitDepth}" ]; then - gitRepo - elif [ "${wonRepo}" = "${hgDepth}" ]; then - hgRepo - elif [ "${wonRepo}" = "${bzrDepth}" ]; then - bzrRepo - elif [ "${wonRepo}" = "${svnDepth}" ]; then - svnRepo - fi -} - - - -# Detect which repos we are in and gather data. -# shellcheck source=/dev/null -if [ -f "${CACHEFILE}" ] && [ "${CACHEFORCE}" = "1" ]; then - # When requested only read from the cache to populate our symbols. - . "${CACHEFILE}" -else - # If a value is not set through the environment set VCS_EXTRA to nothing. - : "${VCS_EXTRA:=""}" - repoTest - - if [ -f "${CACHEFILE}" ] && [ "${REPONUM}" = "0" ]; then - # We are not in a repo; try to use a previously generated cache to populate our symbols. - . "${CACHEFILE}" - # Do not overwrite the cache if we know we are not going to write anything new. - CACHEFORCE="1" - elif [ "${REPONUM}" = "0" ]; then - echo "error: No repo or cache detected." 1>&2 - exit 1 - fi -fi - - -# -s output is handled here. -if [ ! -z "${VAROUT}" ]; then - if [ "${VAROUT}" = "VCS_TYPE" ]; then - echo "${VCS_TYPE}" - elif [ "${VAROUT}" = "VCS_BASENAME" ]; then - echo "${VCS_BASENAME}" - elif [ "${VAROUT}" = "VCS_NUM" ]; then - echo "${VCS_NUM}" - elif [ "${VAROUT}" = "VCS_DATE" ]; then - echo "${VCS_DATE}" - elif [ "${VAROUT}" = "VCS_BRANCH" ]; then - echo "${VCS_BRANCH}" - elif [ "${VAROUT}" = "VCS_TAG" ]; then - echo "${VCS_TAG}" - elif [ "${VAROUT}" = "VCS_TICK" ]; then - echo "${VCS_TICK}" - elif [ "${VAROUT}" = "VCS_FULL_HASH" ]; then - echo "${VCS_FULL_HASH}" - elif [ "${VAROUT}" = "VCS_SHORT_HASH" ]; then - echo "${VCS_SHORT_HASH}" - elif [ "${VAROUT}" = "VCS_WC_MODIFIED" ]; then - echo "${VCS_WC_MODIFIED}" - elif [ "${VAROUT}" = "VCS_ACTION_STAMP" ]; then - echo "${VCS_ACTION_STAMP}" - else - echo "error: Not a valid output symbol." 1>&2 - exit 1 - fi -fi - - -# Detect requested output type and use it. -if [ ! -z "${AFILETYPE}" ]; then - if [ "${AFILETYPE}" = "c" ]; then - cOutput - elif [ "${AFILETYPE}" = "h" ]; then - hOutput - elif [ "${AFILETYPE}" = "xcode" ]; then - xcodeOutput - elif [ "${AFILETYPE}" = "swift" ]; then - swiftOutput - elif [ "${AFILETYPE}" = "sh" ]; then - shOutput - elif [ "${AFILETYPE}" = "py" ] || [ "${AFILETYPE}" = "python" ]; then - pyOutput - elif [ "${AFILETYPE}" = "pl" ] || [ "${AFILETYPE}" = "perl" ]; then - plOutput - elif [ "${AFILETYPE}" = "lua" ]; then - luaOutput - elif [ "${AFILETYPE}" = "php" ]; then - phpOutput - elif [ "${AFILETYPE}" = "ini" ]; then - iniOutput - elif [ "${AFILETYPE}" = "js" ]; then - jsOutput - elif [ "${AFILETYPE}" = "json" ]; then - jsonOutput - elif [ "${AFILETYPE}" = "java" ]; then - javaOutput - elif [ "${AFILETYPE}" = "javaprop" ]; then - javapropOutput - elif [ "${AFILETYPE}" = "tex" ]; then - texOutput - elif [ "${AFILETYPE}" = "m4" ]; then - m4Output - elif [ "${AFILETYPE}" = "scheme" ]; then - schemeOutput - elif [ "${AFILETYPE}" = "clojure" ]; then - clojureOutput - elif [ "${AFILETYPE}" = "rpm" ]; then - rpmOutput - elif [ "${AFILETYPE}" = "hpp" ]; then - hppOutput - elif [ "${AFILETYPE}" = "matlab" ]; then - matlabOutput - elif [ "${AFILETYPE}" = "octave" ]; then - octaveOutput - elif [ "${AFILETYPE}" = "cmake" ]; then - cmakeOutput - else - echo "error: Not a valid output type." 1>&2 - exit 1 - fi -fi - - -# If requested, make a cache file. -if [ ! -z "${CACHEFILE}" ] && [ ! "${CACHEFORCE}" = "1" ]; then - TARGETFILE="${CACHEFILE}.tmp" - shOutput - - # Check to see if there have been any actual changes. - if [ ! -f "${CACHEFILE}" ]; then - mv -f "${CACHEFILE}.tmp" "${CACHEFILE}" - elif cmp -s "${CACHEFILE}.tmp" "${CACHEFILE}"; then - rm -f "${CACHEFILE}.tmp" - else - mv -f "${CACHEFILE}.tmp" "${CACHEFILE}" - fi -fi - - diff --git a/ci/get-nprocessors.sh b/ci/get-nprocessors.sh deleted file mode 100644 index 43635e76..00000000 --- a/ci/get-nprocessors.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2017 Google Inc. -# 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 name of Google Inc. nor the names of its -# 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 -# OWNER 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. - -# This file is typically sourced by another script. -# if possible, ask for the precise number of processors, -# otherwise take 2 processors as reasonable default; see -# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization -if [ -x /usr/bin/getconf ]; then - NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) -else - NPROCESSORS=2 -fi - -# as of 2017-09-04 Travis CI reports 32 processors, but GCC build -# crashes if parallelized too much (maybe memory consumption problem), -# so limit to 4 processors for the time being. -if [ $NPROCESSORS -gt 4 ] ; then - echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." - NPROCESSORS=4 -fi diff --git a/ci/perpare_pulp3_netrc.sh b/ci/perpare_pulp3_netrc.sh deleted file mode 100644 index 8414bbba..00000000 --- a/ci/perpare_pulp3_netrc.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env sh -set -evx -echo "machine ${PULP3_SERVER_URL}\nlogin ${PULP3_SERVER_LOGIN}\npassword ${PULP3_SERVER_PASSWORD}\n" > ~/.netrc diff --git a/ci/travis.sh b/ci/travis.sh deleted file mode 100644 index 40a2780c..00000000 --- a/ci/travis.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env sh -set -evx - -chmod +x ci/get-nprocessors.sh -. ci/get-nprocessors.sh - -# if possible, ask for the precise number of processors, -# otherwise take 2 processors as reasonable default; see -# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization -if [ -x /usr/bin/getconf ]; then - NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) -else - NPROCESSORS=2 -fi - -# as of 2017-09-04 Travis CI reports 32 processors, but GCC build -# crashes if parallelized too much (maybe memory consumption problem), -# so limit to 4 processors for the time being. -if [ $NPROCESSORS -gt 4 ] ; then - echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." - NPROCESSORS=4 -fi - -# Tell make to use the processors. No preceding '-' required. -MAKEFLAGS="j${NPROCESSORS}" -export MAKEFLAGS - -env | sort - -# Set default values to OFF for these variables if not specified. -: "${NO_EXCEPTION:=OFF}" -: "${NO_RTTI:=OFF}" -: "${COMPILER_IS_GNUCXX:=OFF}" - -# Install dependency from YUM -if [ -n "${INSTALL_DEPENDENCY_LIBRARY}" ]; then - yum install -y $INSTALL_DEPENDENCY_LIBRARY - source /etc/profile.d/framework.sh -fi -mkdir build || true -cd build - -cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS \ - -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ - -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \ - -DENABLE_DEVEL=$ENABLE_DEVEL_SWITCH \ - .. - -make - -if [ -n "${PACKAGE}" ]; then - make package -fi - -if [ -n "${UPLOAD}" ]; then - cp ~/rpm_upload_tools.py ./ - python3 rpm_upload_tools.py ${PULP3_REPO_NAME} ${PULP3_DIST_NAME} *.rpm -fi - -#if [ -n "${UPLOAD_SYMBOL_FILES}" ]; then -# rpm -i tfe*debuginfo*.rpm -# cp /usr/lib/debug/opt/tsg/tfe/bin/tfe.debug /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA} -# sentry-cli upload-dif -t elf /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA} -#fi diff --git a/cmake/Findtcmalloc.cmake b/cmake/Findtcmalloc.cmake deleted file mode 100644 index 88783db2..00000000 --- a/cmake/Findtcmalloc.cmake +++ /dev/null @@ -1,6 +0,0 @@ -find_path(TCMALLOC_INCLUDE_DIR tcmalloc.h ${PROJECT_SOURCE_DIR}/3rd/tcmalloc /usr/include /usr/include/gperftools /usr/local/include /usr/local/include/gperftools ) -find_library(TCMALLOC_LIBRARY NAMES tcmalloc PATHS ${PROJECT_SOURCE_DIR}/3rd/tcmalloc /usr/lib /usr/lib/gperftools /usr/local/lib /usr/local/lib/gperftools) - -if (TCMALLOC_INCLUDE_DIR AND TCMALLOC_LIBRARY) - set(tcmalloc_FOUND TRUE) -endif (TCMALLOC_INCLUDE_DIR AND TCMALLOC_LIBRARY) diff --git a/cmake/Package.cmake b/cmake/Package.cmake deleted file mode 100644 index 5b2d61c5..00000000 --- a/cmake/Package.cmake +++ /dev/null @@ -1,53 +0,0 @@ -if(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(MY_RPM_NAME_PREFIX "${lib_name}-debug") -else() - set(MY_RPM_NAME_PREFIX "${lib_name}") -endif() - -message(STATUS "Package: ${MY_RPM_NAME_PREFIX}") - -set(CPACK_PACKAGE_VECDOR "MESA") -set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}") -set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}") -set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}.${VERSION_BUILD}") -set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) -set(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_BUILD}") -execute_process(COMMAND bash -c "echo -ne \"`uname -r | awk -F'.' '{print $5\".\"$6\".\"$7}'`\"" OUTPUT_VARIABLE SYSTEM_VERSION) - -execute_process(COMMAND sh changelog.sh WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/cmake) -SET(CPACK_RPM_CHANGELOG_FILE ${PROJECT_SOURCE_DIR}/cmake/changelog.txt) - -# RPM Build -set(CPACK_GENERATOR "RPM") -set(CPACK_RPM_PACKAGE_VENDOR "MESA") -set(CPACK_RPM_PACKAGE_AUTOREQPROV "yes") -set(CPACK_RPM_PACKAGE_RELEASE_LIBRARY "on") -set(CPACK_RPM_DEBUGINFO_PACKAGE "on") -set(CPACK_RPM_PACKAGE_DEBUG 1) - -set(CPACK_RPM_COMPONENT_INSTALL ON) -set(CPACK_COMPONENTS_IGNORE_GROUPS 1) -set(CPACK_COMPONENTS_GROUPING ONE_PER_GROUP) -set(CPACK_COMPONENT_HEADER_DISPLAY_NAME "develop") - -set(CPACK_COMPONENT_LIBRARY_REQUIRED TRUE) -set(CPACK_RPM_LIBRARY_PACKAGE_NAME ${MY_RPM_NAME_PREFIX}) -set(CPACK_RPM_LIBRARY_FILE_NAME "${CPACK_RPM_LIBRARY_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${SYSTEM_VERSION}.rpm") -set(CPACK_RPM_LIBRARY_DEBUGINFO_FILE_NAME "${CPACK_RPM_LIBRARY_PACKAGE_NAME}-debuginfo-${CPACK_PACKAGE_VERSION}-${SYSTEM_VERSION}.rpm") - -set(CPACK_COMPONENT_LIBRARY_GROUP "library") -set(CPACK_COMPONENT_PROFILE_GROUP "library") - -set(CPACK_RPM_HEADER_PACKAGE_CONFLICTS ${CPACK_RPM_HEADER_PACKAGE_NAME}) - -set(CPACK_COMPONENTS_ALL LIBRARY PROFILE) - - -set(CPACK_BUILD_SOURCE_DIRS "${CMAKE_SOURCE_DIR}") - -# Must uninstall the debug package before install release package -set(CPACK_RPM_PACKAGE_CONFLICTS ${MY_RPM_NAME_PREFIX}) - -# set(CPACK_STRIP_FILES TRUE) -include(CPack) - diff --git a/cmake/Version.cmake b/cmake/Version.cmake deleted file mode 100644 index 5b4f8380..00000000 --- a/cmake/Version.cmake +++ /dev/null @@ -1,53 +0,0 @@ -# Using autorevision.sh to generate version information - -set(__SOURCE_AUTORESIVISION ${CMAKE_SOURCE_DIR}/autorevision.sh) -set(__AUTORESIVISION ${CMAKE_BINARY_DIR}/autorevision.sh) -set(__VERSION_CACHE ${CMAKE_SOURCE_DIR}/version.txt) -set(__VERSION_CONFIG ${CMAKE_BINARY_DIR}/version.cmake) - -file(COPY ${__SOURCE_AUTORESIVISION} DESTINATION ${CMAKE_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE) - -# execute autorevision.sh to generate version information -execute_process(COMMAND ${__AUTORESIVISION} -t cmake -o ${__VERSION_CACHE} - OUTPUT_FILE ${__VERSION_CONFIG} ERROR_QUIET) -include(${__VERSION_CONFIG}) - -# extract major, minor, patch version from git tag -string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VCS_TAG}") -string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VCS_TAG}") -string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VCS_TAG}") - -if(NOT VERSION_MAJOR) - set(VERSION_MAJOR 1) -endif() - -if(NOT VERSION_MINOR) - set(VERSION_MINOR 0) -endif() - -if(NOT VERSION_PATCH) - set(VERSION_PATCH 0) -endif() - -set(VERSION "${VERSION_MAJOR}_${VERSION_MINOR}_${VERSION_PATCH}") -set(VERSION_BUILD "${VCS_SHORT_HASH}") - -# print information -message(STATUS "Version: ${VERSION}-${VERSION_BUILD}") - -if(NOT DEFINE_GIT_VERSION) - option(DEFINE_GIT_VERSION "Set DEFINE_GIT_VERSION to OFF" OFF) - -set(GIT_VERSION - "${VERSION}-${CMAKE_BUILD_TYPE}-${VERSION_BUILD}-${VCS_BRANCH}-${VCS_TAG}-${VCS_DATE}") -string(REGEX REPLACE "[-:+/\\.]" "_" GIT_VERSION ${GIT_VERSION}) - -if(DEFINE_GIT_VERSION) - add_definitions(-DGIT_VERSION=${GIT_VERSION}) - option(DEFINE_GIT_VERSION "Set DEFINE_GIT_VERSION to OFF" ON) -endif() - -endif() - diff --git a/cmake/changelog.sh b/cmake/changelog.sh deleted file mode 100755 index 999d5fc6..00000000 --- a/cmake/changelog.sh +++ /dev/null @@ -1,9 +0,0 @@ -######################################################################### -# File Name: changelog.sh -# Author: pxz -# Created Time: Mon 31 Aug 2020 10:06:56 AM CST -######################################################################### -#!/bin/bash -branch=`git status | grep branch | awk '{print $NF}'` -git log --branches=$branch --no-merges --date=local --show-signature --pretty="* %ad %an %ae %nhash: %H%ncommit:%n%B" | awk -F"-" '{print "- "$0}' | sed 's/- \*/\*/g' | sed 's/- $//g' | sed 's/-/ -/g' | sed 's/[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//g' > changelog.txt - diff --git a/cmake/changelog.txt b/cmake/changelog.txt deleted file mode 100644 index 08c9a21f..00000000 --- a/cmake/changelog.txt +++ /dev/null @@ -1,37 +0,0 @@ -* Thu Sep 24 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: caa5fe48df0896638ee1afc4c8252053d8ba03fb - - commit: - - 修改example名称 - -* Wed Sep 23 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: f439b8a9ab926d87f3a3ae03d5061d3962a35ca5 - - commit: - - 线程池支持 - -* Tue Sep 22 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: 97bd7ffb2ef28a36089a5e8ba4ab5559dd661004 - - commit: - - 修改cmakelist - -* Tue Sep 22 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: 812b8a0eb9f4e7cbadaaa1ccfa98309a14a72db5 - - commit: - - 修改buffer模式下的数据输入 - -* Mon Sep 21 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: eb41917cb28d1ec887e3502ed30324f88a183bcc - - commit: - - 修改并增加新接口 - -* Mon Sep 14 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: a00d892928a9ca350e4388e09323fa799bd8fded - - commit: - - 1.修复SSL connect error 问题 - - 2.修复hos_create_bucket时,出现bucekt already exits的问题 - - 3.修复upload时,远端地址无法解析的问题 - -* Fri Sep 11 2020 pengxuanzheng pengxuanzheng@geedgenetworks.com - - hash: cd0649bfbcadaeca8d7e37b31d3e9a191160ce04 - - commit: - - init - diff --git a/example/hos_write_complete.cpp b/example/hos_write_complete.cpp index f47523bb..ebe13fbc 100644 --- a/example/hos_write_complete.cpp +++ b/example/hos_write_complete.cpp @@ -106,13 +106,18 @@ int main(int argc, char *argv[]) } debuginfo("hos_verify_bucket success ... \n"); -#if 0 - fd = hos_open_fd(handle, bucket, object, callback, (void *)&data, 0, mode); +#if 1 + mode = FILE_MODE; + for (i = 0; i < test_times; i++) + { + fd[i] = hos_open_fd(handle, bucket, object, callback, (void *)&data, 0, mode); + } + debuginfo("hos_upload_file start ...\n"); clock_gettime(CLOCK_MONOTONIC, &start); for (i = 0; i < test_times; i++) { - hos_write(fd, object, 0, 0); + hos_write(fd[i], object, 0, 0, 0); } clock_gettime(CLOCK_MONOTONIC, &end); time = calc_time(start, end); @@ -121,8 +126,8 @@ int main(int argc, char *argv[]) debuginfo("hos_upload_file end ...\n"); #else - mode = BUFF_MODE; - for (i = 0; i < 10000; i++) + mode = BUFF_MODE | APPEND_MODE; + for (i = 0; i < test_times; i++) { fd[i] = hos_open_fd(handle, bucket, object, callback, (void *)&data, 0, mode); } @@ -130,7 +135,7 @@ int main(int argc, char *argv[]) clock_gettime(CLOCK_MONOTONIC, &start); for (i = 0; i < test_times; i++) { - hos_write(fd[i], buf, buf_size, 0); + hos_write(fd[i], buf, buf_size, 0, i); } clock_gettime(CLOCK_MONOTONIC, &end); time = calc_time(start, end); diff --git a/src/hos_client.cpp b/src/hos_client.cpp index 797a075d..659db6c5 100644 --- a/src/hos_client.cpp +++ b/src/hos_client.cpp @@ -87,14 +87,11 @@ hos_client_handle hos_client_create(const char *endpoint, const char *accesskeyi Aws::Client::ClientConfiguration config; Aws::Auth::AWSCredentials credentials(accesskeyid, secretkey); + //初始化 config.endpointOverride = endpoint; config.verifySSL = false; config.enableEndpointDiscovery = true; - //std::shared_ptr pooled_thread = Aws::MakeShared("ClientConfigration"); - //std::shared_ptr test = std::make_shared(1000); - //config.executor(Aws::MakeShared("ClientConfiguration")); - //config.executor = std::dynamic_pointer_cast(config.executor); - config.executor = std::shared_ptr(std::make_shared(100)); + config.executor = std::shared_ptr(std::make_shared(100));//支持线程池 handle->S3Client = new Aws::S3::S3Client(credentials, config, Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false); handle->append_size = 30 * 1024 * 1024; @@ -250,11 +247,12 @@ int hos_open_fd(hos_client_handle handle, const char *bucket, const char *object return fd; } -int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id) +int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id, size_t position) { struct stat buffer; hos_info_t *hos_info = NULL; hos_client_handle handle = NULL; + char num[128]; char buf[128]; if ((fd == 0) || (stream == NULL) || (thread_id > MAX_THREAD_NUM)) { @@ -276,12 +274,24 @@ int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id request.SetKey(hos_info->object); //TODO APPEND MODE + snprintf(num, 128, "%lu", position); + Aws::Map headers; + if (hos_info->mode & APPEND_MODE) + { + headers["x-hos-upload-type"] = "append"; + headers["x-hos_position"] = num; + request.SetMetadata(headers); +#if 0 + request.AddMetadata("x-hos-upload-type", "append"); + request.AddMetadata("x-hos-position", num); +#endif + } //设置上传数据类型 if (hos_info->mode & BUFF_MODE) { //BUFF_MODE -#if 0 +#if 1 const std::shared_ptr input_data = Aws::MakeShared(stream, stream + stream_len); Aws::String buffer (stream, stream_len); diff --git a/src/hos_client.h b/src/hos_client.h index f00a255b..961539ea 100644 --- a/src/hos_client.h +++ b/src/hos_client.h @@ -134,7 +134,7 @@ int hos_open_fd(hos_client_handle handle, const char *bucket, const char *object * size_t thread_id 线程ID * 返回值 int 成功返回0,失败返回hoserros错误码 *************************************************************************************/ -int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id); +int hos_write(size_t fd, const char *stream, size_t stream_len, size_t thread_id, size_t position); /************************************************************************************* * 函数名: hos_close_fd * 参数: size_t fd fd diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index f68d958a..28d882fa 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -3,7 +3,7 @@ include(ExternalProject) set(AWSS3_ROOT ${CMAKE_CURRENT_BINARY_DIR}) set(AWSS3_URL ${CMAKE_CURRENT_SOURCE_DIR}/aws-sdk-cpp-master.zip) set(AWSS3_URL_MD5 a94cce4fe5003acf55fe1eac8c49ad4f) -set(AWSS3_CONFIGURE cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && cmake . -DBUILD_ONLY=s3) +set(AWSS3_CONFIGURE cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && cmake . -DBUILD_ONLY=s3 -DCMAKE_BUILD_TYPE=Debug) set(AWSS3_MAKE cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && make) set(AWSS3_INSTALL cd ${AWSS3_ROOT}/aws-sdk-cpp-master/src/aws-sdk-cpp-master && make install PREFIX=${SUPPORT_INSTALL_PREFIX})