mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-25 02:03:42 +00:00
pack submodules for genrpm (#1293)
* add option to run autogen before configure * pack submodules for genrpm
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
%bcond_with completion
|
||||
%bcond_with autogen
|
||||
|
||||
|
||||
Name: shadowsocks-libev
|
||||
@@ -54,6 +55,10 @@ shadowsocks-libev is a lightweight secured scoks5 proxy for embedded devices and
|
||||
|
||||
|
||||
%build
|
||||
%if %{with autogen}
|
||||
./autogen.sh
|
||||
%endif
|
||||
|
||||
%if 0%{?use_system_lib}
|
||||
%configure --enable-shared --enable-system-shared-lib
|
||||
%else
|
||||
|
||||
+66
-27
@@ -1,8 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -ex
|
||||
|
||||
g_script_path=$(dirname $(readlink -e $0))
|
||||
g_toplevel_path=$(pushd $g_script_path > /dev/null 2>&1; \
|
||||
git rev-parse --show-toplevel; \
|
||||
popd > /dev/null 2>&1)
|
||||
|
||||
g_version=$(git tag -l v* | sort --version-sort | tail -1)
|
||||
g_version=${g_version#"v"}
|
||||
g_format="tar.gz"
|
||||
g_name="shadowsocks-libev"
|
||||
|
||||
g_rpmbuild_topdir="${g_toplevel_path}/rpm"
|
||||
g_rpmbuild_conditions=
|
||||
|
||||
show_help()
|
||||
{
|
||||
@@ -23,6 +33,49 @@ version_greater_equal()
|
||||
[ "$1" = $(printf "$1\n$2\n" | sort --version-sort | tail -1) ]
|
||||
}
|
||||
|
||||
verify_options()
|
||||
{
|
||||
local completion_min_verion="2.6.0"
|
||||
local archive_format_supported_max_version="2.6.2"
|
||||
|
||||
version_greater_equal ${g_version} ${completion_min_verion} \
|
||||
&& g_rpmbuild_conditions="${g_rpmbuild_conditions} --with completion" || :
|
||||
|
||||
if ! version_greater_equal ${archive_format_supported_max_version} ${g_version}; then
|
||||
g_rpmbuild_conditions="${g_rpmbuild_conditions} --with autogen"
|
||||
|
||||
if [ "${g_format}" != "tar" ]; then
|
||||
echo -e "version(${g_version}) greater than ${archive_format_supported_max_version} can only use archive format \`tar'."
|
||||
echo -e "change format from \`${g_format}' to \`tar'"
|
||||
g_format="tar"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
generate_tarball()
|
||||
{
|
||||
local tarball_name="${g_name}-${g_version}"
|
||||
local tarball_dir="${g_rpmbuild_topdir}/SOURCES"
|
||||
pushd ${g_toplevel_path}
|
||||
git archive "v${g_version}" \
|
||||
--format="${g_format}" \
|
||||
--prefix="${tarball_name}/" \
|
||||
-o "${tarball_dir}/${tarball_name}.${g_format}"
|
||||
|
||||
git ls-tree -dr "v${g_version}" | grep commit \
|
||||
| while read eat_mod eat_type mod_sha mod_path; do \
|
||||
[ "${mod_path}" = "" ] && continue || :; \
|
||||
(pushd ${mod_path=} \
|
||||
&& git archive ${mod_sha} \
|
||||
--prefix="${tarball_name}/${mod_path}/" \
|
||||
-o "${tarball_dir}/sub_mod.tar" \
|
||||
&& tar --concatenate "${tarball_dir}/sub_mod.tar" \
|
||||
--file="${tarball_dir}/${tarball_name}.tar" \
|
||||
&& rm "${tarball_dir}/sub_mod.tar" \
|
||||
&& popd) \
|
||||
done
|
||||
}
|
||||
|
||||
while getopts "hv:f:" opt
|
||||
do
|
||||
case ${opt} in
|
||||
@@ -32,13 +85,13 @@ do
|
||||
;;
|
||||
v)
|
||||
if [ "${OPTARG}" = v* ]; then
|
||||
version=${OPTARG#"v"}
|
||||
g_version=${OPTARG#"v"}
|
||||
else
|
||||
version=${OPTARG}
|
||||
g_version=${OPTARG}
|
||||
fi
|
||||
;;
|
||||
f)
|
||||
format=${OPTARG}
|
||||
g_format=${OPTARG}
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
@@ -46,29 +99,15 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
: ${version:=${g_version}}
|
||||
: ${format:=tar.gz}
|
||||
verify_options
|
||||
|
||||
supported_max_version="2.6.2"
|
||||
if ! version_greater_equal ${supported_max_version} ${version}; then
|
||||
echo "version(${version}) greater than ${supported_max_version} are not currently supported."
|
||||
exit 1
|
||||
fi
|
||||
generate_tarball
|
||||
|
||||
name="shadowsocks-libev"
|
||||
spec_name="shadowsocks-libev.spec"
|
||||
spec_path="${g_rpmbuild_topdir}/SPECS/shadowsocks-libev.spec"
|
||||
sed -e "s/^\(Version: \).*$/\1${g_version}/" \
|
||||
-e "s/^\(Source0: \).*$/\1${g_name}-${g_version}.${g_format}/" \
|
||||
"${spec_path}".in > "${spec_path}"
|
||||
|
||||
pushd `git rev-parse --show-toplevel`
|
||||
git archive "v${version}" --format="${format}" --prefix="${name}-${version}/" -o rpm/SOURCES/"${name}-${version}.${format}"
|
||||
pushd rpm
|
||||
|
||||
sed -e "s/^\(Version: \).*$/\1${version}/" \
|
||||
-e "s/^\(Source0: \).*$/\1${name}-${version}.${format}/" \
|
||||
SPECS/"${spec_name}".in > SPECS/"${spec_name}"
|
||||
|
||||
completion_min_verion="2.6.0"
|
||||
version_greater_equal ${version} ${completion_min_verion} \
|
||||
&& with_completion="--with completion" || :
|
||||
|
||||
rpmbuild -bb SPECS/"${spec_name}" --define "%_topdir `pwd`" \
|
||||
${with_completion}
|
||||
rpmbuild -bb ${spec_path} \
|
||||
--define "%_topdir ${g_rpmbuild_topdir}" \
|
||||
${g_rpmbuild_conditions} \
|
||||
|
||||
Reference in New Issue
Block a user