| 1 | #------------------------------------------------------------------------------
|
|---|
| 2 | # Macros to automatically take sources from SCM rather than from archives
|
|---|
| 3 |
|
|---|
| 4 | %__scm_pre_pack\
|
|---|
| 5 | [ -f RPMBUILD_SOURCE ] && mv RPMBUILD_SOURCE RPMBUILD_SOURCE.orig\
|
|---|
| 6 | echo "SCM: %{__source_scm}\
|
|---|
| 7 | URL: %{__source_url}\
|
|---|
| 8 | Rev: %{?__source_rev}" >RPMBUILD_SOURCE\
|
|---|
| 9 | %{nil}
|
|---|
| 10 |
|
|---|
| 11 | # SVN
|
|---|
| 12 |
|
|---|
| 13 | %__scm_source_svn\
|
|---|
| 14 | Source: %{?main_name}%{!?main_name:%{name}}-svn%{?__source_rev:-r%{__source_rev}}.zip\
|
|---|
| 15 | BuildRequires: subversion zip\
|
|---|
| 16 | %{nil}
|
|---|
| 17 |
|
|---|
| 18 | %__scm_setup_svn\
|
|---|
| 19 | %if %{?__source_rev:%(if test -f "%SOURCE0" ; then echo 1 ; else echo 0 ; fi)}%{!?__source_rev:0}\
|
|---|
| 20 | %setup -q\
|
|---|
| 21 | %else\
|
|---|
| 22 | %setup -n "%__source_dir" -Tc\
|
|---|
| 23 | svn export %{?__source_rev:-r %{__source_rev}} %{__source_url} . --force\
|
|---|
| 24 | %__scm_pre_pack\
|
|---|
| 25 | %if %{defined __source_rev}\
|
|---|
| 26 | (rm -f "%SOURCE0" && cd .. && zip %{-A:%{-A*}}%{!-A:-rX9} "%SOURCE0" "%__source_dir")\
|
|---|
| 27 | %endif\
|
|---|
| 28 | %endif\
|
|---|
| 29 | %{nil}
|
|---|
| 30 |
|
|---|
| 31 | # Git
|
|---|
| 32 |
|
|---|
| 33 | %__scm_source_git\
|
|---|
| 34 | Source: %{?main_name}%{!?main_name:%{name}}-git%{?__source_rev:-%{__source_rev}}.zip\
|
|---|
| 35 | BuildRequires: git zip unzip\
|
|---|
| 36 | %{nil}
|
|---|
| 37 |
|
|---|
| 38 | %__scm_setup_git\
|
|---|
| 39 | %if %{?__source_rev:%(if test -f "%SOURCE0" ; then echo 1 ; else echo 0 ; fi)}%{!?__source_rev:0}\
|
|---|
| 40 | %setup -q\
|
|---|
| 41 | %else\
|
|---|
| 42 | %setup -n "%__source_dir" -Tc\
|
|---|
| 43 | rm -f "%SOURCE0"\
|
|---|
| 44 | _localfile="%__source_url"\
|
|---|
| 45 | _localfile="${_localfile#file://}"\
|
|---|
| 46 | if [ "$_localfile" != "%__source_url" ] ; then\
|
|---|
| 47 | git -C "$_localfile" archive --format zip --output "%SOURCE0" --prefix "%__source_dir/" "%{?__source_rev}"\
|
|---|
| 48 | else\
|
|---|
| 49 | git archive --format zip --output "%SOURCE0" --prefix "%__source_dir/" --remote "%__source_url" "%{?__source_rev}"\
|
|---|
| 50 | fi\
|
|---|
| 51 | (cd .. && unzip -qq "%SOURCE0" "%__source_dir"/RPMBUILD_SOURCE 2>/dev/null) || :\
|
|---|
| 52 | %__scm_pre_pack\
|
|---|
| 53 | (cd .. && zip -mX "%SOURCE0" "%__source_dir"/RPMBUILD_SOURCE*)\
|
|---|
| 54 | (cd .. && unzip -qq "%SOURCE0")\
|
|---|
| 55 | %if %{undefined __source_rev}\
|
|---|
| 56 | rm -f "%SOURCE0"\
|
|---|
| 57 | %endif\
|
|---|
| 58 | %endif
|
|---|
| 59 |
|
|---|
| 60 | # GitHub
|
|---|
| 61 |
|
|---|
| 62 | %__scm_source_github\
|
|---|
| 63 | Source: %{?main_name}%{!?main_name:%{name}}-github%{?__source_rev:-%{__source_rev}}.zip\
|
|---|
| 64 | BuildRequires: wget zip unzip\
|
|---|
| 65 | %{nil}
|
|---|
| 66 |
|
|---|
| 67 | %__scm_setup_github\
|
|---|
| 68 | %{!?__source_rev:%{error:%0: Revision in %%scm_source is required for GitHub}exit 1}\
|
|---|
| 69 | %global __source_url_github_name %(URL="%{__source_url}" ; echo ${URL##*/})\
|
|---|
| 70 | %global __source_dir_github %{__source_url_github_name}-%{__source_rev}\
|
|---|
| 71 | %if %{?__source_rev:%(if test -f "%SOURCE0" ; then echo 1 ; else echo 0 ; fi)}%{!?__source_rev:0}\
|
|---|
| 72 | %setup -n "%__source_dir_github" -q\
|
|---|
| 73 | %else\
|
|---|
| 74 | %setup -n "%__source_dir_github" -Tc\
|
|---|
| 75 | rm -f "%SOURCE0"\
|
|---|
| 76 | wget -nv "%{__source_url}/archive/%{__source_rev}.zip" -O "%SOURCE0"\
|
|---|
| 77 | (cd .. && unzip -qq "%SOURCE0" "%__source_dir_github"/RPMBUILD_SOURCE 2>/dev/null) || :\
|
|---|
| 78 | %__scm_pre_pack\
|
|---|
| 79 | (cd .. && zip -mX "%SOURCE0" "%__source_dir_github"/RPMBUILD_SOURCE*)\
|
|---|
| 80 | (cd .. && unzip -qq "%SOURCE0")\
|
|---|
| 81 | %endif
|
|---|
| 82 |
|
|---|
| 83 | # User-level macros
|
|---|
| 84 |
|
|---|
| 85 | %scm_source()\
|
|---|
| 86 | %{?SOURCE0:%{error:%0: Source tag is already set to '%SOURCE0'}%{quit}}\
|
|---|
| 87 | %{?1:%global __source_scm %1}\
|
|---|
| 88 | %{?2:%global __source_url %2}\
|
|---|
| 89 | %{?3:%global __source_rev %3}\
|
|---|
| 90 | %{expand:%%{!?__scm_source_%1:%%{error:%0: Invalid SCM type: %{?1}}%{quit}}}\
|
|---|
| 91 | %{expand:%%{?__scm_source_%1}}\
|
|---|
| 92 | %{nil}
|
|---|
| 93 |
|
|---|
| 94 | # -A Options for zip (-rx9 by default, currently used only for SVN SCM type)
|
|---|
| 95 | %scm_setup(A:)\
|
|---|
| 96 | %{!?__source_scm:%{error:%0: Missing %%scm_source specification}exit 1}\
|
|---|
| 97 | %{!?__source_url:%{?__source_scm:%{error:%0: Missing URL in %%scm_source}exit 1}}\
|
|---|
| 98 | %global __source_dir %{?main_name}%{!?main_name:%{name}}-%{?main_version}%{!?main_version:%{version}}\
|
|---|
| 99 | %{expand:%%{?__scm_setup_%{__source_scm}}}\
|
|---|
| 100 | %{nil}
|
|---|