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}
|
---|