- Support .copr/Makefile for 'SCM / make srpm' COPR package
- Use genrpm.sh to generate srpm and optionally build it
- Use generic substitution syntax in specfile
As discussed with @librehat in #1604, maintaining a separate set of systemd
files for RPM distributions will be convenient to build on Copr.
This patch will also change some lines in rpm/genrpm.sh to archive the
source code using `git archive` because the old logic doesn't respect
`.gitignore`.
1. add missing build and runtime dependencies
2. change minimal version requirement for libsodium to 1.0.4, which
should work fine with ss-libev and EPEL7 users will not have to compile a
later version.
3. add more entries to .gitignore
Here are the problems existing in the old RPM packaging scripts:
1. The old `genrpm.sh` is designed to build RPMs for all versions of
shadowsocks-libev with an option '-v'.
This increases the complexity because we need to keep it compatible
with old versions.
2. I have to modify the script manually in order to build RPMs from
non-release commit or dirty workspace.
The new script will only build RPMs and SRPMs from current workspace,
not commit.
The version-release number will be determined automatically from the
`git describe` command.
* auto select latest version
* bash-completion comes with version 2.6.0
* version greater than 2.6.2 need submodules packed
* adjust version check order
1. add missing build and runtime dependencies
2. change minimal version requirement for libsodium to 1.0.4, which
should work fine with ss-libev and EPEL7 users will not have to compile a
later version.
3. add more entries to .gitignore
Here are the problems existing in the old RPM packaging scripts:
1. The old `genrpm.sh` is designed to build RPMs for all versions of
shadowsocks-libev with an option '-v'.
This increases the complexity because we need to keep it compatible
with old versions.
2. I have to modify the script manually in order to build RPMs from
non-release commit or dirty workspace.
The new script will only build RPMs and SRPMs from current workspace,
not commit.
The version-release number will be determined automatically from the
`git describe` command.
* auto select latest version
* bash-completion comes with version 2.6.0
* version greater than 2.6.2 need submodules packed
* adjust version check order
Add experimental HTTP/TLS obfuscating as an **optional extension** of shadowsocks protocol.
More discussions can be found here: https://github.com/shadowsocks/shadowsocks-org/issues/26
As this feature is still a SIP (Shadowsocks Improvement Proposal), it's very unstable and experimental. So,
1. Don't enable it unless you know what it is.
2. Be very careful when using it in production environment.
1. Remove function `get_att_val`:
That function uses `eval` to set default values for bash variables.
Because it is very dangerous to use `eval` (someone call it the plague of shell scripting), I'd like to use the bash builtin to do that.
2. Double quote all variables to avoid unexpected expansion when using it.