]>
Commit | Line | Data |
---|---|---|
1 | # TODO | |
2 | # - libmongocrypt | |
3 | # - ix86/x32 (php -m) prints:: | |
4 | # src/mongoc/mongoc-handshake.c:478 _append_and_truncate(): precondition failed: space_for_suffix >= 0 | |
5 | # Aborted | |
6 | # | |
7 | # Conditional build: | |
8 | %bcond_without tests # build without tests | |
9 | %bcond_with sasl # Include Cyrus SASL support (for bundled only) | |
10 | %bcond_without ssl # Enable TLS connections and SCRAM-SHA-1 authentication (for bundled only) | |
11 | %bcond_with bundled # Use bundled libmongoc | |
12 | ||
13 | %define php_name php%{?php_suffix} | |
14 | %define modname mongodb | |
15 | Summary: MongoDB driver for PHP | |
16 | Name: %{php_name}-pecl-%{modname} | |
17 | Version: 1.12.0 | |
18 | Release: 1 | |
19 | License: Apache v2.0 | |
20 | Group: Development/Languages/PHP | |
21 | Source0: https://pecl.php.net/get/%{modname}-%{version}.tgz | |
22 | # Source0-md5: f88bb3ab2ec98fb60108bac5fa20a681 | |
23 | Source1: mongodb.ini | |
24 | URL: https://pecl.php.net/package/mongodb | |
25 | BuildRequires: %{php_name}-cli | |
26 | BuildRequires: %{php_name}-devel >= 4:7.0 | |
27 | BuildRequires: %{php_name}-json | |
28 | BuildRequires: %{php_name}-pcre | |
29 | BuildRequires: %{php_name}-spl | |
30 | %{?with_sasl:BuildRequires: cyrus-sasl-devel} | |
31 | %if %{without bundled} | |
32 | BuildRequires: libbson-devel >= 1.20.0 | |
33 | BuildRequires: mongo-c-driver-devel >= 1.20.0 | |
34 | %endif | |
35 | BuildRequires: openssl-devel | |
36 | BuildRequires: rpmbuild(macros) >= 1.666 | |
37 | Requires: %{php_name}-json | |
38 | %if %{without bundled} | |
39 | Requires: mongo-c-driver-libs >= 1.20.0 | |
40 | %endif | |
41 | Requires: %{php_name}-pcre | |
42 | Requires: %{php_name}-spl | |
43 | %{?requires_php_extension} | |
44 | Provides: php(%{modname}) = %{version} | |
45 | ExcludeArch: %{ix86} x32 | |
46 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) | |
47 | ||
48 | %description | |
49 | The purpose of this driver is to provide exceptionally thin glue | |
50 | between MongoDB and PHP, implementing only fundemental and | |
51 | performance-critical components necessary to build a fully-functional | |
52 | MongoDB driver. | |
53 | ||
54 | %prep | |
55 | %setup -qc | |
56 | mv %{modname}-%{version}/* . | |
57 | ||
58 | %if %{without bundled} | |
59 | # Ensure we use system library | |
60 | # remove only C sources, m4 resources needed for phpize via m4_include | |
61 | find \ | |
62 | src/libmongoc \ | |
63 | -name '*.[ch]' -delete | |
64 | %endif | |
65 | ||
66 | xfail() { | |
67 | local t=$1 | |
68 | test -f $t | |
69 | cat >> $t <<-EOF | |
70 | ||
71 | --XFAIL-- | |
72 | Skip | |
73 | EOF | |
74 | } | |
75 | ||
76 | # failed tests. investigate later | |
77 | while read line; do | |
78 | t=${line##*\[}; t=${t%\]} | |
79 | xfail $t | |
80 | done << 'EOF' | |
81 | MongoDB\BSON\Javascript::__set_state() [tests/bson/bson-javascript-set_state-001.phpt] | |
82 | MongoDB\Driver\ReadPreference: var_export() [tests/readPreference/readpreference-var_export-001.phpt] | |
83 | EOF | |
84 | ||
85 | %build | |
86 | get_version() { | |
87 | local define="$1" filename="$2" | |
88 | awk -vdefine="$define" '/#define/ && $2 == define {print $3}' "$filename" | xargs | |
89 | } | |
90 | # Sanity check, really often broken | |
91 | extver=$(get_version PHP_MONGODB_VERSION phongo_version.h) | |
92 | if test "x${extver}" != "x%{version}"; then | |
93 | : Error: Upstream extension version is ${extver}, expecting %{version}. | |
94 | exit 1 | |
95 | fi | |
96 | ||
97 | phpize | |
98 | ||
99 | %configure \ | |
100 | --with-mongodb-system-libs=%{?with_bundled:no}%{!?with_bundled:yes} \ | |
101 | --with-mongodb-ssl=%{!?with_ssl:no}%{?with_ssl:openssl} \ | |
102 | --with-mongodb-sasl=%{!?with_sasl:no}%{?with_sasl:yes} \ | |
103 | --enable-mongodb | |
104 | ||
105 | %{__make} | |
106 | ||
107 | # simple module load test, always enabled | |
108 | %{__php} -n -q -d display_errors=off \ | |
109 | -d extension_dir=modules \ | |
110 | %if "%php_major_version.%php_minor_version" < "7.4" | |
111 | -d extension=%{php_extensiondir}/pcre.so \ | |
112 | -d extension=%{php_extensiondir}/spl.so \ | |
113 | %endif | |
114 | %if "%php_major_version.%php_minor_version" < "8.0" | |
115 | -d extension=%{php_extensiondir}/json.so \ | |
116 | %endif | |
117 | -d extension=%{modname}.so \ | |
118 | -m > modules.log | |
119 | grep "^%{modname}$" modules.log | |
120 | ||
121 | %if %{with tests} | |
122 | cat <<'EOF' > run-tests.sh | |
123 | #!/bin/sh | |
124 | export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 | |
125 | exec %{__make} test \ | |
126 | PHP_EXECUTABLE=%{__php} \ | |
127 | PHP_TEST_SHARED_SYSTEM_EXTENSIONS="\ | |
128 | %if "%php_major_version.%php_minor_version" < "7.4" | |
129 | pcre spl \ | |
130 | %endif | |
131 | %if "%php_major_version.%php_minor_version" < "8.0" | |
132 | json \ | |
133 | %endif | |
134 | " \ | |
135 | RUN_TESTS_SETTINGS="-q $*" | |
136 | EOF | |
137 | chmod +x run-tests.sh | |
138 | ||
139 | ./run-tests.sh | |
140 | %endif | |
141 | ||
142 | %install | |
143 | rm -rf $RPM_BUILD_ROOT | |
144 | %{__make} install \ | |
145 | EXTENSION_DIR=%{php_extensiondir} \ | |
146 | INSTALL_ROOT=$RPM_BUILD_ROOT | |
147 | ||
148 | install -d $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d | |
149 | cp -p %{SOURCE1} $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d | |
150 | ||
151 | %clean | |
152 | rm -rf $RPM_BUILD_ROOT | |
153 | ||
154 | %files | |
155 | %defattr(644,root,root,755) | |
156 | %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/%{modname}.ini | |
157 | %attr(755,root,root) %{php_extensiondir}/%{modname}.so |