Merge topic 'update-kwsys'
38c31ed5
Merge branch 'upstream-KWSys' into update-kwsysec1398d7
KWSys 2015-12-14 (c1149ef6)c4282347
Add script to update KWSys from upstreamf1ee10c1
Merge branch 'upstream-KWSys' into update-kwsys498c3685
Add a script to help update third-party sourcesdcca7892
KWSys 2015-12-09 (cdcf4c47)
This commit is contained in:
commit
81e5bf2548
|
@ -118,7 +118,6 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
|
|||
SET(KWSYS_USE_System 1)
|
||||
SET(KWSYS_USE_SystemTools 1)
|
||||
SET(KWSYS_USE_CommandLineArguments 1)
|
||||
SET(KWSYS_USE_FundamentalType 1)
|
||||
SET(KWSYS_USE_Terminal 1)
|
||||
SET(KWSYS_USE_IOStream 1)
|
||||
SET(KWSYS_USE_FStream 1)
|
||||
|
@ -374,61 +373,6 @@ IF(KWSYS_CXX_HAS___INT64)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(KWSYS_USE_FundamentalType)
|
||||
# Look for type size helper macros.
|
||||
KWSYS_PLATFORM_INFO_TEST(C KWSYS_C_TYPE_MACROS
|
||||
"Checking for C type size macros")
|
||||
SET(macro_regex ".*INFO:macro\\[([^]]*)\\].*")
|
||||
FOREACH(info ${KWSYS_C_TYPE_MACROS})
|
||||
IF("${info}" MATCHES "${macro_regex}")
|
||||
STRING(REGEX REPLACE "${macro_regex}" "\\1" macro "${info}")
|
||||
SET(KWSYS_C_HAS_MACRO_${macro} 1)
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
# Determine type sizes at preprocessing time if possible, and
|
||||
# otherwise fall back to a try-compile.
|
||||
SET(KWSYS_C_TYPE_NAME_CHAR "char")
|
||||
SET(KWSYS_C_TYPE_NAME_SHORT "short")
|
||||
SET(KWSYS_C_TYPE_NAME_INT "int")
|
||||
SET(KWSYS_C_TYPE_NAME_LONG "long")
|
||||
SET(KWSYS_C_TYPE_NAME_LONG_LONG "long long")
|
||||
SET(KWSYS_C_TYPE_NAME___INT64 "__int64")
|
||||
FOREACH(type CHAR SHORT INT LONG LONG_LONG __INT64)
|
||||
IF(KWSYS_C_HAS_MACRO___SIZEOF_${type}__)
|
||||
# Use __SIZEOF_${type}__ macro.
|
||||
SET(KWSYS_SIZEOF_${type} TRUE)
|
||||
SET(KWSYS_C_CODE_SIZEOF_${type} "#define ${KWSYS_NAMESPACE}_SIZEOF_${type} __SIZEOF_${type}__")
|
||||
ELSEIF(KWSYS_C_HAS_MACRO___${type}_MAX__)
|
||||
# Use __${type}_MAX__ macro.
|
||||
SET(KWSYS_SIZEOF_${type} TRUE)
|
||||
SET(KWSYS_C_CODE_SIZEOF_${type} "#if __${type}_MAX__ == 0x7f
|
||||
# define ${KWSYS_NAMESPACE}_SIZEOF_${type} 1
|
||||
#elif __${type}_MAX__ == 0x7fff
|
||||
# define ${KWSYS_NAMESPACE}_SIZEOF_${type} 2
|
||||
#elif __${type}_MAX__ == 0x7fffffff
|
||||
# define ${KWSYS_NAMESPACE}_SIZEOF_${type} 4
|
||||
#elif __${type}_MAX__>>32 == 0x7fffffff
|
||||
# define ${KWSYS_NAMESPACE}_SIZEOF_${type} 8
|
||||
#else
|
||||
# error \"Cannot determine sizeof(${KWSYS_C_TYPE_NAME_${type}}).\"
|
||||
#endif")
|
||||
ELSE()
|
||||
# Configure a hard-coded type size.
|
||||
CHECK_TYPE_SIZE("${KWSYS_C_TYPE_NAME_${type}}" KWSYS_SIZEOF_${type})
|
||||
IF(NOT KWSYS_SIZEOF_${type})
|
||||
SET(KWSYS_SIZEOF_${type} 0)
|
||||
ENDIF()
|
||||
SET(KWSYS_C_CODE_SIZEOF_${type}
|
||||
"#define ${KWSYS_NAMESPACE}_SIZEOF_${type} ${KWSYS_SIZEOF_${type}}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
# Check signedness of "char" type.
|
||||
KWSYS_PLATFORM_CXX_TEST_RUN(KWSYS_CHAR_IS_SIGNED
|
||||
"Checking whether char is signed" DIRECT)
|
||||
ENDIF()
|
||||
|
||||
IF(KWSYS_USE_Encoding)
|
||||
# Look for type size helper macros.
|
||||
KWSYS_PLATFORM_CXX_TEST(KWSYS_STL_HAS_WSTRING
|
||||
|
@ -741,7 +685,7 @@ ENDFOREACH()
|
|||
|
||||
# Add selected C components.
|
||||
FOREACH(c
|
||||
Process Base64 Encoding FundamentalType MD5 Terminal System String
|
||||
Process Base64 Encoding MD5 Terminal System String
|
||||
)
|
||||
IF(KWSYS_USE_${c})
|
||||
# Use the corresponding header file.
|
||||
|
|
|
@ -1,139 +0,0 @@
|
|||
/*============================================================================
|
||||
KWSys - Kitware System Library
|
||||
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
|
||||
|
||||
Distributed under the OSI-approved BSD License (the "License");
|
||||
see accompanying file Copyright.txt for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the License for more information.
|
||||
============================================================================*/
|
||||
#ifndef @KWSYS_NAMESPACE@_FundamentalType_h
|
||||
#define @KWSYS_NAMESPACE@_FundamentalType_h
|
||||
|
||||
#include <@KWSYS_NAMESPACE@/Configure.h>
|
||||
|
||||
/* Redefine all public interface symbol names to be in the proper
|
||||
namespace. These macros are used internally to kwsys only, and are
|
||||
not visible to user code. Use kwsysHeaderDump.pl to reproduce
|
||||
these macros after making changes to the interface. */
|
||||
#if !defined(KWSYS_NAMESPACE)
|
||||
# define kwsys_ns(x) @KWSYS_NAMESPACE@##x
|
||||
# define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
|
||||
#endif
|
||||
|
||||
#if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
|
||||
# define kwsysFundamentalType kwsys_ns(FundamentalType)
|
||||
# define kwsysFundamentalType_Int8 kwsys_ns(FundamentalType_Int8)
|
||||
# define kwsysFundamentalType_UInt8 kwsys_ns(FundamentalType_UInt8)
|
||||
# define kwsysFundamentalType_Int16 kwsys_ns(FundamentalType_Int16)
|
||||
# define kwsysFundamentalType_UInt16 kwsys_ns(FundamentalType_UInt16)
|
||||
# define kwsysFundamentalType_Int32 kwsys_ns(FundamentalType_Int32)
|
||||
# define kwsysFundamentalType_UInt32 kwsys_ns(FundamentalType_UInt32)
|
||||
# define kwsysFundamentalType_Int64 kwsys_ns(FundamentalType_Int64)
|
||||
# define kwsysFundamentalType_UInt64 kwsys_ns(FundamentalType_UInt64)
|
||||
#endif
|
||||
|
||||
/* The size of fundamental types. Types that do not exist have size 0. */
|
||||
@KWSYS_C_CODE_SIZEOF_CHAR@
|
||||
@KWSYS_C_CODE_SIZEOF_SHORT@
|
||||
@KWSYS_C_CODE_SIZEOF_INT@
|
||||
@KWSYS_C_CODE_SIZEOF_LONG@
|
||||
@KWSYS_C_CODE_SIZEOF_LONG_LONG@
|
||||
@KWSYS_C_CODE_SIZEOF___INT64@
|
||||
|
||||
/* Whether types "long long" and "__int64" are enabled. If a type is
|
||||
enabled then it is a unique fundamental type. */
|
||||
#define @KWSYS_NAMESPACE@_USE_LONG_LONG @KWSYS_USE_LONG_LONG@
|
||||
#define @KWSYS_NAMESPACE@_USE___INT64 @KWSYS_USE___INT64@
|
||||
|
||||
/* Whether type "char" is signed (it may be signed or unsigned). */
|
||||
#define @KWSYS_NAMESPACE@_CHAR_IS_SIGNED @KWSYS_CHAR_IS_SIGNED@
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Select an 8-bit integer type. */
|
||||
#if @KWSYS_NAMESPACE@_SIZEOF_CHAR == 1
|
||||
typedef signed char kwsysFundamentalType_Int8;
|
||||
typedef unsigned char kwsysFundamentalType_UInt8;
|
||||
#else
|
||||
# error "No native data type can represent an 8-bit integer."
|
||||
#endif
|
||||
|
||||
/* Select a 16-bit integer type. */
|
||||
#if @KWSYS_NAMESPACE@_SIZEOF_SHORT == 2
|
||||
typedef short kwsysFundamentalType_Int16;
|
||||
typedef unsigned short kwsysFundamentalType_UInt16;
|
||||
#elif @KWSYS_NAMESPACE@_SIZEOF_INT == 2
|
||||
typedef int kwsysFundamentalType_Int16;
|
||||
typedef unsigned int kwsysFundamentalType_UInt16;
|
||||
#else
|
||||
# error "No native data type can represent a 16-bit integer."
|
||||
#endif
|
||||
|
||||
/* Select a 32-bit integer type. */
|
||||
#if @KWSYS_NAMESPACE@_SIZEOF_INT == 4
|
||||
typedef int kwsysFundamentalType_Int32;
|
||||
typedef unsigned int kwsysFundamentalType_UInt32;
|
||||
#elif @KWSYS_NAMESPACE@_SIZEOF_LONG == 4
|
||||
typedef long kwsysFundamentalType_Int32;
|
||||
typedef unsigned long kwsysFundamentalType_UInt32;
|
||||
#else
|
||||
# error "No native data type can represent a 32-bit integer."
|
||||
#endif
|
||||
|
||||
/* Select a 64-bit integer type. */
|
||||
#if @KWSYS_NAMESPACE@_SIZEOF_LONG == 8
|
||||
typedef signed long kwsysFundamentalType_Int64;
|
||||
typedef unsigned long kwsysFundamentalType_UInt64;
|
||||
#elif @KWSYS_NAMESPACE@_USE_LONG_LONG && @KWSYS_NAMESPACE@_SIZEOF_LONG_LONG == 8
|
||||
typedef signed long long kwsysFundamentalType_Int64;
|
||||
typedef unsigned long long kwsysFundamentalType_UInt64;
|
||||
#elif @KWSYS_NAMESPACE@_USE___INT64 && @KWSYS_NAMESPACE@_SIZEOF___INT64 == 8
|
||||
typedef signed __int64 kwsysFundamentalType_Int64;
|
||||
typedef unsigned __int64 kwsysFundamentalType_UInt64;
|
||||
#else
|
||||
# error "No native data type can represent a 64-bit integer."
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
/* If we are building a kwsys .c or .cxx file, let it use these macros.
|
||||
Otherwise, undefine them to keep the namespace clean. */
|
||||
#if !defined(KWSYS_NAMESPACE)
|
||||
# undef kwsys_ns
|
||||
# undef kwsysEXPORT
|
||||
# if !defined(KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
|
||||
# undef kwsysFundamentalType
|
||||
# undef kwsysFundamentalType_Int8
|
||||
# undef kwsysFundamentalType_UInt8
|
||||
# undef kwsysFundamentalType_Int16
|
||||
# undef kwsysFundamentalType_UInt16
|
||||
# undef kwsysFundamentalType_Int32
|
||||
# undef kwsysFundamentalType_UInt32
|
||||
# undef kwsysFundamentalType_Int64
|
||||
# undef kwsysFundamentalType_UInt64
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* If building a C or C++ file in kwsys itself, give the source file
|
||||
access to the configured macros without a configured namespace. */
|
||||
#if defined(KWSYS_NAMESPACE)
|
||||
# define KWSYS_SIZEOF_CHAR @KWSYS_NAMESPACE@_SIZEOF_CHAR
|
||||
# define KWSYS_SIZEOF_SHORT @KWSYS_NAMESPACE@_SIZEOF_SHORT
|
||||
# define KWSYS_SIZEOF_INT @KWSYS_NAMESPACE@_SIZEOF_INT
|
||||
# define KWSYS_SIZEOF_LONG @KWSYS_NAMESPACE@_SIZEOF_LONG
|
||||
# define KWSYS_SIZEOF_LONG_LONG @KWSYS_NAMESPACE@_SIZEOF_LONG_LONG
|
||||
# define KWSYS_SIZEOF___INT64 @KWSYS_NAMESPACE@_SIZEOF___INT64
|
||||
# define KWSYS_USE_LONG_LONG @KWSYS_NAMESPACE@_USE_LONG_LONG
|
||||
# define KWSYS_USE___INT64 @KWSYS_NAMESPACE@_USE___INT64
|
||||
# define KWSYS_CHAR_IS_SIGNED @KWSYS_NAMESPACE@_CHAR_IS_SIGNED
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -130,15 +130,6 @@ int main()
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef TEST_KWSYS_CHAR_IS_SIGNED
|
||||
/* Return 0 for char signed and 1 for char unsigned. */
|
||||
int main()
|
||||
{
|
||||
unsigned char uc = 255;
|
||||
return (*reinterpret_cast<char*>(&uc) < 0)?0:1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef TEST_KWSYS_LFS_WORKS
|
||||
/* Return 0 when LFS is available and 1 otherwise. */
|
||||
#define _LARGEFILE_SOURCE
|
||||
|
@ -326,93 +317,6 @@ int main()
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef TEST_KWSYS_CXX_TYPE_INFO
|
||||
/* Collect fundamental type information and save it to a CMake script. */
|
||||
|
||||
/* Include limits.h to get macros indicating long long and __int64.
|
||||
Note that certain compilers need special macros to define these
|
||||
macros in limits.h. */
|
||||
#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
|
||||
# define _MSC_EXTENSIONS
|
||||
#endif
|
||||
#if defined(__GNUC__) && __GNUC__ < 3
|
||||
# define _GNU_SOURCE
|
||||
#endif
|
||||
#include <limits.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Due to shell differences and limitations of ADD_DEFINITIONS the
|
||||
KWSYS_CXX_TYPE_INFO_FILE macro will sometimes have double quotes
|
||||
and sometimes not. This macro will make sure the value is treated
|
||||
as a double-quoted string. */
|
||||
#define TO_STRING(x) TO_STRING0(x)
|
||||
#define TO_STRING0(x) TO_STRING1(x)
|
||||
#define TO_STRING1(x) #x
|
||||
|
||||
void f() {}
|
||||
|
||||
int main()
|
||||
{
|
||||
/* Construct the output file name. Some preprocessors will add an
|
||||
extra level of double quotes, so strip them. */
|
||||
char fbuf[] = TO_STRING(KWSYS_CXX_TYPE_INFO_FILE);
|
||||
char* fname = fbuf;
|
||||
if(fname[0] == '"')
|
||||
{
|
||||
++fname;
|
||||
int len = static_cast<int>(strlen(fname));
|
||||
if(len > 0 && fname[len-1] == '"')
|
||||
{
|
||||
fname[len-1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to open the output file. */
|
||||
if(FILE* fout = fopen(fname, "w"))
|
||||
{
|
||||
/* Set the size of standard types. */
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_CHAR %d)\n", static_cast<int>(sizeof(char)));
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_SHORT %d)\n", static_cast<int>(sizeof(short)));
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_INT %d)\n", static_cast<int>(sizeof(int)));
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_LONG %d)\n", static_cast<int>(sizeof(long)));
|
||||
|
||||
/* Set the size of some non-standard but common types. */
|
||||
/* Check for a limits.h macro for long long to see if the type exists. */
|
||||
#if defined(LLONG_MAX) || defined(LONG_LONG_MAX) || defined(LONGLONG_MAX)
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_LONG_LONG %d)\n", static_cast<int>(sizeof(long long)));
|
||||
#else
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_LONG_LONG 0) # No long long available.\n");
|
||||
#endif
|
||||
/* Check for a limits.h macro for __int64 to see if the type exists. */
|
||||
#if defined(_I64_MIN)
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF___INT64 %d)\n", static_cast<int>(sizeof(__int64)));
|
||||
#else
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF___INT64 0) # No __int64 available.\n");
|
||||
#endif
|
||||
|
||||
/* Set the size of some pointer types. */
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_PDATA %d)\n", static_cast<int>(sizeof(void*)));
|
||||
fprintf(fout, "SET(KWSYS_SIZEOF_PFUNC %d)\n", static_cast<int>(sizeof(&f)));
|
||||
|
||||
/* Set whether the native type "char" is signed or unsigned. */
|
||||
unsigned char uc = 255;
|
||||
fprintf(fout, "SET(KWSYS_CHAR_IS_SIGNED %d)\n",
|
||||
(*reinterpret_cast<char*>(&uc) < 0)?1:0);
|
||||
|
||||
fclose(fout);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Failed to write fundamental type info to \"%s\".\n",
|
||||
fname);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef TEST_KWSYS_CXX_HAS_BORLAND_ASM
|
||||
int main()
|
||||
{
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -x
|
||||
shopt -s dotglob
|
||||
|
||||
readonly name="KWSys"
|
||||
readonly ownership="KWSys Upstream <kwrobot@kitware.com>"
|
||||
readonly subtree="Source/kwsys"
|
||||
readonly repo="http://public.kitware.com/KWSys.git"
|
||||
readonly tag="master"
|
||||
readonly shortlog=true
|
||||
readonly paths="
|
||||
"
|
||||
|
||||
extract_source () {
|
||||
git_archive
|
||||
}
|
||||
|
||||
export HOOKS_ALLOW_KWSYS=1
|
||||
|
||||
. "${BASH_SOURCE%/*}/update-third-party.bash"
|
|
@ -0,0 +1,146 @@
|
|||
########################################################################
|
||||
# Script for updating third party packages.
|
||||
#
|
||||
# This script should be sourced in a project-specific script which sets
|
||||
# the following variables:
|
||||
#
|
||||
# name
|
||||
# The name of the project.
|
||||
# ownership
|
||||
# A git author name/email for the commits.
|
||||
# subtree
|
||||
# The location of the thirdparty package within the main source
|
||||
# tree.
|
||||
# repo
|
||||
# The git repository to use as upstream.
|
||||
# tag
|
||||
# The tag, branch or commit hash to use for upstream.
|
||||
# shortlog
|
||||
# Optional. Set to 'true' to get a shortlog in the commit message.
|
||||
#
|
||||
# Additionally, an "extract_source" function must be defined. It will be
|
||||
# run within the checkout of the project on the requested tag. It should
|
||||
# should place the desired tree into $extractdir/$name-reduced. This
|
||||
# directory will be used as the newest commit for the project.
|
||||
#
|
||||
# For convenience, the function may use the "git_archive" function which
|
||||
# does a standard "git archive" extraction using the (optional) "paths"
|
||||
# variable to only extract a subset of the source tree.
|
||||
########################################################################
|
||||
|
||||
########################################################################
|
||||
# Utility functions
|
||||
########################################################################
|
||||
git_archive () {
|
||||
git archive --prefix="$name-reduced/" HEAD -- $paths | \
|
||||
tar -C "$extractdir" -x
|
||||
}
|
||||
|
||||
die () {
|
||||
echo >&2 "$@"
|
||||
exit 1
|
||||
}
|
||||
|
||||
warn () {
|
||||
echo >&2 "warning: $@"
|
||||
}
|
||||
|
||||
readonly regex_date='20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
|
||||
readonly basehash_regex="$name $regex_date ([0-9a-f]*)"
|
||||
readonly basehash="$( git rev-list --author="$ownership" --grep="$basehash_regex" -n 1 HEAD )"
|
||||
readonly upstream_old_short="$( git cat-file commit "$basehash" | sed -n '/'"$basehash_regex"'/ {s/.*(//;s/)//;p}' | egrep '^[0-9a-f]+$' )"
|
||||
|
||||
########################################################################
|
||||
# Sanity checking
|
||||
########################################################################
|
||||
[ -n "$name" ] || \
|
||||
die "'name' is empty"
|
||||
[ -n "$ownership" ] || \
|
||||
die "'ownership' is empty"
|
||||
[ -n "$subtree" ] || \
|
||||
die "'subtree' is empty"
|
||||
[ -n "$repo" ] || \
|
||||
die "'repo' is empty"
|
||||
[ -n "$tag" ] || \
|
||||
die "'tag' is empty"
|
||||
[ -n "$basehash" ] || \
|
||||
warn "'basehash' is empty; performing initial import"
|
||||
readonly do_shortlog="${shortlog-false}"
|
||||
|
||||
readonly workdir="$PWD/work"
|
||||
readonly upstreamdir="$workdir/upstream"
|
||||
readonly extractdir="$workdir/extract"
|
||||
|
||||
[ -d "$workdir" ] && \
|
||||
die "error: workdir '$workdir' already exists"
|
||||
|
||||
trap "rm -rf '$workdir'" EXIT
|
||||
|
||||
# Get upstream
|
||||
git clone "$repo" "$upstreamdir"
|
||||
|
||||
if [ -n "$basehash" ]; then
|
||||
# Use the existing package's history
|
||||
git worktree add "$extractdir" "$basehash"
|
||||
# Clear out the working tree
|
||||
pushd "$extractdir"
|
||||
git ls-files | xargs rm -v
|
||||
popd
|
||||
else
|
||||
# Create a repo to hold this package's history
|
||||
mkdir -p "$extractdir"
|
||||
git -C "$extractdir" init
|
||||
fi
|
||||
|
||||
# Extract the subset of upstream we care about
|
||||
pushd "$upstreamdir"
|
||||
git checkout "$tag"
|
||||
readonly upstream_hash="$( git rev-parse HEAD )"
|
||||
readonly upstream_hash_short="$( git rev-parse --short=8 "$upstream_hash" )"
|
||||
readonly upstream_datetime="$( git rev-list "$upstream_hash" --format='%ci' -n 1 | grep -e "^$regex_date" )"
|
||||
readonly upstream_date="$( echo "$upstream_datetime" | grep -o -e "$regex_date" )"
|
||||
if $do_shortlog && [ -n "$basehash" ]; then
|
||||
readonly commit_shortlog="
|
||||
|
||||
Upstream Shortlog
|
||||
-----------------
|
||||
|
||||
$( git shortlog --no-merges --abbrev=8 --format='%h %s' "$upstream_old_short".."$upstream_hash" )"
|
||||
else
|
||||
readonly commit_shortlog=""
|
||||
fi
|
||||
extract_source || \
|
||||
die "failed to extract source"
|
||||
popd
|
||||
|
||||
[ -d "$extractdir/$name-reduced" ] || \
|
||||
die "expected directory to extract does not exist"
|
||||
readonly commit_summary="$name $upstream_date ($upstream_hash_short)"
|
||||
|
||||
# Commit the subset
|
||||
pushd "$extractdir"
|
||||
mv -v "$name-reduced/"* .
|
||||
rmdir "$name-reduced/"
|
||||
git add -A .
|
||||
git commit -n --author="$ownership" --date="$upstream_datetime" -F - <<-EOF
|
||||
$commit_summary
|
||||
|
||||
Code extracted from:
|
||||
|
||||
$repo
|
||||
|
||||
at commit $upstream_hash ($tag).$commit_shortlog
|
||||
EOF
|
||||
git branch -f "upstream-$name"
|
||||
popd
|
||||
|
||||
# Merge the subset into this repository
|
||||
if [ -n "$basehash" ]; then
|
||||
git merge --log -s recursive "-Xsubtree=$subtree/" --no-commit "upstream-$name"
|
||||
else
|
||||
git fetch "$extractdir" "upstream-$name:upstream-$name"
|
||||
git merge --log -s ours --no-commit "upstream-$name"
|
||||
git read-tree -u --prefix="$subtree/" "upstream-$name"
|
||||
fi
|
||||
git commit --no-edit
|
||||
git branch -d "upstream-$name"
|
Loading…
Reference in New Issue