Skip to content

Commit fed35a1

Browse files
committed
feat: update redis and nginx
Update redis to 6.2.1 and add openssl 1.1.1k Update nginx to use openssl 1.1.1k
1 parent fb76b7d commit fed35a1

File tree

7 files changed

+131
-227
lines changed

7 files changed

+131
-227
lines changed

BUILD/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

BUILDROOT/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

README.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33
Our rpmbuild repo for rpms we have built. You can check out all the options for
44
rpms to be built in the `SPECS` folder, and build any of them by doing:
55

6+
```shell
7+
docker run --rm -it -v ${PWD}:/root/rpmbuild centos:7 /bin/bash
8+
# From inside docker image
9+
yum update -y
10+
yum groupinstall -y 'Development Tools'
11+
yum install -y rpmdevtools yum-utils centos-release-scl
12+
cd /root/rpmbuild
13+
spectool -g -C ./SOURCES SPECS/whatever.spec
14+
yum-builddep -y SPECS/whatever.spec
15+
rm -rf /tmp/rpmbuild
16+
rpmbuild --define "_topdir `pwd`" --define "_builddir /tmp/rpmbuild/build" --define "_buildrootdir /tmp/rpmbuild/buildroot" -ba SPECS/whatever.spec
617
```
7-
vagrant up
8-
vagrant ssh
9-
# From inside the vagrant box
10-
cd rpmbuild
11-
cp -Rf /vagrant/* .
12-
rm -rf BUILD/*
13-
rm -rf SOURCES/*.gz
14-
spectool -g -R SPECS/whatever.spec
15-
rpmbuild -ba SPECS/whatever.spec
16-
```
17-
18-
`vagrant provision` should download all required source files and install all
19-
build dependencies. If any source versions change you'll have to re-run `vagrant provision`.

SOURCES/redis.service

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ Description=Redis persistent key-value database
33
After=network.target
44

55
[Service]
6-
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --daemonize no
6+
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --daemonize no --supervised systemd
7+
Type=notify
78
User=redis
89
Group=redis
910

SPECS/nginx.spec

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
#
21
%define nginx_home %{_localstatedir}/cache/nginx
32
%define nginx_user nginx
43
%define nginx_group nginx
54

65
%define main_version 1.18.0
7-
%define main_release 1%{?dist}.levenlabs
6+
%define main_release 2%{?dist}.levenlabs
87

9-
%define openssl_version 1.1.1g
8+
%define openssl_version 1.1.1k
109
%define pcre_version 8.44
1110
%define zlib_version 1.2.11
12-
1311
%define nginx_more_headers_version 0.33
12+
1413
%define WITH_CC_OPT $(echo %{optflags} $(pcre-config --cflags)) -fPIC
1514
%define WITH_LD_OPT -Wl,-z,relro -Wl,-z,now -pie
1615
%define bdir %{_builddir}/%{name}-%{main_version}
@@ -51,17 +50,17 @@ nginx [engine x] is an HTTP and reverse proxy server
5150

5251
%prep
5352
%setup -q
54-
tar xf %{SOURCE90} -C $RPM_BUILD_DIR
53+
tar xf %{SOURCE90} -C %{_builddir}
5554

56-
git clone https://github.com/vozlt/nginx-module-vts $RPM_BUILD_DIR/nginx-module-vts
57-
cd $RPM_BUILD_DIR/nginx-module-vts && git submodule update --init
55+
git clone https://github.com/vozlt/nginx-module-vts %{_builddir}/nginx-module-vts
56+
cd %{_builddir}/nginx-module-vts && git submodule update --init
5857

59-
git clone https://github.com/google/ngx_brotli $RPM_BUILD_DIR/ngx_brotli
60-
cd $RPM_BUILD_DIR/ngx_brotli && git submodule update --init
58+
git clone https://github.com/google/ngx_brotli %{_builddir}/ngx_brotli
59+
cd %{_builddir}/ngx_brotli && git submodule update --init
6160

62-
mkdir $RPM_BUILD_DIR/openssl && tar zxf %{SOURCE100} -C $RPM_BUILD_DIR/openssl --strip-components 1
63-
mkdir $RPM_BUILD_DIR/pcre && tar zxf %{SOURCE101} -C $RPM_BUILD_DIR/pcre --strip-components 1
64-
mkdir $RPM_BUILD_DIR/zlib && tar zxf %{SOURCE102} -C $RPM_BUILD_DIR/zlib --strip-components 1
61+
mkdir %{_builddir}/openssl && tar zxf %{SOURCE100} -C %{_builddir}/openssl --strip-components 1
62+
mkdir %{_builddir}/pcre && tar zxf %{SOURCE101} -C %{_builddir}/pcre --strip-components 1
63+
mkdir %{_builddir}/zlib && tar zxf %{SOURCE102} -C %{_builddir}/zlib --strip-components 1
6564

6665
%build
6766
./configure \
@@ -106,71 +105,71 @@ mkdir $RPM_BUILD_DIR/zlib && tar zxf %{SOURCE102} -C $RPM_BUILD_DIR/zlib --strip
106105
--with-pcre-jit \
107106
--with-stream \
108107
--with-stream_ssl_module \
109-
--with-openssl=$RPM_BUILD_DIR/openssl --with-openssl-opt=enable-tls1_3 \
108+
--with-openssl=%{_builddir}/openssl --with-openssl-opt=enable-tls1_3 \
110109
--with-stream_ssl_preread_module \
111-
--with-pcre=$RPM_BUILD_DIR/pcre \
110+
--with-pcre=%{_builddir}/pcre \
112111
--with-pcre-opt='-g -Ofast -fPIC -m64 -march=native -fstack-protector-strong -D_FORTIFY_SOURCE=2' \
113-
--with-zlib=$RPM_BUILD_DIR/zlib \
112+
--with-zlib=%{_builddir}/zlib \
114113
--with-zlib-opt='-g -Ofast -fPIC -m64 -march=native -fstack-protector-strong -D_FORTIFY_SOURCE=2' \
115-
--add-module=$RPM_BUILD_DIR/nginx-module-vts \
114+
--add-module=%{_builddir}/nginx-module-vts \
116115
--with-cc-opt="%{WITH_CC_OPT}" \
117116
--with-ld-opt="%{WITH_LD_OPT}" \
118-
--add-module=$RPM_BUILD_DIR/headers-more-nginx-module-%{nginx_more_headers_version} \
119-
--add-module=$RPM_BUILD_DIR/ngx_brotli \
117+
--add-module=%{_builddir}/headers-more-nginx-module-%{nginx_more_headers_version} \
118+
--add-module=%{_builddir}/ngx_brotli \
120119

121120
make %{?_smp_mflags}
122121

123122
%install
124-
%{__rm} -rf $RPM_BUILD_ROOT
125-
%{__make} DESTDIR=$RPM_BUILD_ROOT install
123+
%{__rm} -rf %{buildroot}
124+
%{__make} DESTDIR=%{buildroot} install
126125

127-
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/nginx
128-
%{__mv} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/html $RPM_BUILD_ROOT%{_datadir}/nginx/
126+
%{__mkdir} -p %{buildroot}%{_datadir}/nginx
127+
%{__mv} %{buildroot}%{_sysconfdir}/nginx/html %{buildroot}%{_datadir}/nginx/
129128

130-
%{__rm} -f $RPM_BUILD_ROOT%{_sysconfdir}/nginx/*.default
131-
%{__rm} -f $RPM_BUILD_ROOT%{_sysconfdir}/nginx/fastcgi.conf
129+
%{__rm} -f %{buildroot}%{_sysconfdir}/nginx/*.default
130+
%{__rm} -f %{buildroot}%{_sysconfdir}/nginx/fastcgi.conf
132131

133-
%{__mkdir} -p $RPM_BUILD_ROOT%{_localstatedir}/log/nginx
134-
%{__mkdir} -p $RPM_BUILD_ROOT%{_localstatedir}/run/nginx
135-
%{__mkdir} -p $RPM_BUILD_ROOT%{_localstatedir}/cache/nginx
136-
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/nginx/modules
137-
cd $RPM_BUILD_ROOT%{_sysconfdir}/nginx && \
132+
%{__mkdir} -p %{buildroot}%{_localstatedir}/log/nginx
133+
%{__mkdir} -p %{buildroot}%{_localstatedir}/run/nginx
134+
%{__mkdir} -p %{buildroot}%{_localstatedir}/cache/nginx
135+
%{__mkdir} -p %{buildroot}%{_datadir}/nginx/modules
136+
cd %{buildroot}%{_sysconfdir}/nginx && \
138137
%{__ln_s} ../..%{_libdir}/nginx/modules modules && cd -
139138

140-
%{__mkdir} -p $RPM_BUILD_ROOT%{_datadir}/doc/%{name}-%{main_version}
139+
%{__mkdir} -p %{buildroot}%{_datadir}/doc/%{name}-%{main_version}
141140
%{__install} -m 644 -p LICENSE \
142-
$RPM_BUILD_ROOT%{_datadir}/doc/%{name}-%{main_version}/COPYRIGHT
141+
%{buildroot}%{_datadir}/doc/%{name}-%{main_version}/COPYRIGHT
143142

144-
%{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/nginx/conf.d
145-
%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/nginx.conf
143+
%{__mkdir} -p %{buildroot}%{_sysconfdir}/nginx/conf.d
144+
%{__rm} %{buildroot}%{_sysconfdir}/nginx/nginx.conf
146145
%{__install} -m 644 -p %{SOURCE4} \
147-
$RPM_BUILD_ROOT%{_sysconfdir}/nginx/nginx.conf
146+
%{buildroot}%{_sysconfdir}/nginx/nginx.conf
148147
# we don't need default.conf
149148
# %{__install} -m 644 -p %{SOURCE5} \
150-
# $RPM_BUILD_ROOT%{_sysconfdir}/nginx/conf.d/default.conf
149+
# %{buildroot}%{_sysconfdir}/nginx/conf.d/default.conf
151150

152-
%{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
151+
%{__mkdir} -p %{buildroot}%{_sysconfdir}/sysconfig
153152
%{__install} -m 644 -p %{SOURCE3} \
154-
$RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/nginx
153+
%{buildroot}%{_sysconfdir}/sysconfig/nginx
155154

156155
%{__install} -p -D -m 0644 %{bdir}/objs/nginx.8 \
157-
$RPM_BUILD_ROOT%{_mandir}/man8/nginx.8
156+
%{buildroot}%{_mandir}/man8/nginx.8
158157

159158
# install log rotation stuff
160-
%{__mkdir} -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
159+
%{__mkdir} -p %{buildroot}%{_sysconfdir}/logrotate.d
161160
%{__install} -m 644 -p %{SOURCE1} \
162-
$RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/nginx
161+
%{buildroot}%{_sysconfdir}/logrotate.d/nginx
163162

164163
# install systemd-specific files
165-
%{__mkdir} -p $RPM_BUILD_ROOT%{_unitdir}
164+
%{__mkdir} -p %{buildroot}%{_unitdir}
166165
%{__install} -m644 %SOURCE8 \
167-
$RPM_BUILD_ROOT%{_unitdir}/nginx.service
166+
%{buildroot}%{_unitdir}/nginx.service
168167

169168
%check
170-
%{__rm} -rf $RPM_BUILD_ROOT/usr/src
169+
%{__rm} -rf %{buildroot}/usr/src
171170

172171
%clean
173-
%{__rm} -rf $RPM_BUILD_ROOT
172+
%{__rm} -rf %{buildroot}
174173

175174
%files
176175
%defattr(-,root,root)

SPECS/redis.spec

Lines changed: 75 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,100 @@
1-
Packager: Joe Admin <[email protected]>
1+
%define openssl_version 1.1.1k
22

33
Name: redis
4-
Version: 4.0.6
5-
Release: 0%{dist}
6-
7-
Summary: levenlab's redis 3.2.3 compilation
8-
4+
Version: 6.2.1
5+
Release: 1%{dist}
6+
Summary: A persistent key-value database
97
License: BSD
8+
URL: http://redis.io
109

1110
Source: http://download.redis.io/releases/%{name}-%{version}.tar.gz
1211
Source1: redis.service
12+
Source100: https://www.openssl.org/source/openssl-%{openssl_version}.tar.gz
1313

14+
BuildRequires: gcc
15+
BuildRequires: devtoolset-8-toolchain
16+
BuildRequires: devtoolset-8-libatomic-devel
17+
BuildRequires: procps-ng
1418
BuildRequires: tcl
15-
16-
%define installprefix /usr
19+
BuildRequires: pkgconfig(libsystemd)
20+
BuildRequires: systemd
21+
BuildRequires: which
22+
Requires(postun): systemd
1723

1824
%description
25+
redis is an advanced key-value store
1926

2027
%prep
2128
%setup -q -n redis-%{version}
2229

30+
sed -i -e 's|^dir .*$|dir %{_sharedstatedir}/redis|g' %{_builddir}/redis-%{version}/redis.conf
31+
32+
mkdir %{_builddir}/openssl && tar zxf %{SOURCE100} -C %{_builddir}/openssl --strip-components 1 && cd %{_builddir}/openssl && ./config --prefix=%{_builddir}/redis-%{version}/deps/openssl no-shared no-threads enable-tls1_3 && make && make install_sw LIBDIR=lib
33+
34+
sed -i 's;-lssl;%{_builddir}/redis-%{version}/deps/openssl/lib/libssl.a;g' %{_builddir}/redis-%{version}/src/Makefile
35+
sed -i 's;-lcrypto;%{_builddir}/redis-%{version}/deps/openssl/lib/libcrypto.a;g' %{_builddir}/redis-%{version}/src/Makefile
36+
37+
%global make_flags LDFLAGS="%{?__global_ldflags} -I%{_builddir}/redis-%{version}/deps/openssl/lib" CFLAGS+="%{optflags} -fPIC -I%{_builddir}/redis-%{version}/deps/openssl/include" INSTALL="install -p" PREFIX=%{buildroot}%{_prefix} BUILD_TLS=yes USE_SYSTEMD=yes
38+
: %{make_flags}
39+
40+
2341
%build
24-
make
42+
source /opt/rh/devtoolset-8/enable
43+
make %{make_flags}
2544

2645
%install
27-
make PREFIX=$RPM_BUILD_ROOT%{installprefix} install
46+
source /opt/rh/devtoolset-8/enable
47+
make %{make_flags} install
48+
49+
install -d %{buildroot}%{_sysconfdir}/redis
50+
install -d %{buildroot}%{_unitdir}
51+
install -d %{buildroot}%{_libdir}/redis
52+
install -d %{buildroot}%{_libdir}/redis/modules
53+
install -d %{buildroot}%{_sharedstatedir}/redis
54+
install -d %{buildroot}%{_localstatedir}/run/redis
55+
install -d %{buildroot}%{_includedir}
56+
install -m 0644 redis.conf %{buildroot}%{_sysconfdir}/redis/redis.conf
57+
install -m 0644 sentinel.conf %{buildroot}%{_sysconfdir}/redis/sentinel.conf
58+
install -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/redis.service
59+
install -m 0644 src/redismodule.h %{buildroot}%{_includedir}/redismodule.h
2860

29-
install -d $RPM_BUILD_ROOT/etc/redis
30-
install -d $RPM_BUILD_ROOT/usr/lib/systemd/system
31-
install -d $RPM_BUILD_ROOT/var/lib/redis
32-
install -d $RPM_BUILD_ROOT/var/run/redis
33-
install -m 0644 redis.conf $RPM_BUILD_ROOT/etc/redis/redis.conf
34-
install -m 0644 %{SOURCE1} $RPM_BUILD_ROOT/usr/lib/systemd/system/redis.service
35-
install -m 0644 sentinel.conf $RPM_BUILD_ROOT/etc/redis/sentinel.conf
36-
install -m 0755 src/redis-trib.rb $RPM_BUILD_ROOT/usr/bin/redis-trib.rb
61+
chmod 755 %{buildroot}%{_bindir}/redis-*
62+
63+
%check
64+
# https://github.com/redis/redis/issues/1417
65+
taskset -c 1 make %{make_flags} test
66+
make %{make_flags} test-sentinel
3767

3868
%files
3969
%defattr(-,root,root)
40-
/etc/redis
41-
/usr/lib/systemd/system/redis.service
42-
/var/lib/redis
43-
/var/run/redis
44-
%{installprefix}/bin/*
70+
%dir %{_sysconfdir}/redis
71+
%config(noreplace) %{_sysconfdir}/redis/redis.conf
72+
%config(noreplace) %{_sysconfdir}/redis/sentinel.conf
73+
%{_unitdir}/redis.service
74+
%dir %{_libdir}/redis
75+
%dir %{_libdir}/redis/modules
76+
%dir %{_sharedstatedir}/redis
77+
%dir %{_localstatedir}/run/redis
78+
%{_bindir}/redis-*
79+
%{_includedir}/redismodule.h
4580

4681
%clean
82+
%{__rm} -rf %{buildroot}
83+
84+
%pre
85+
getent group redis >/dev/null || groupadd -r redis
86+
getent passwd redis >/dev/null || \
87+
useradd -r -g redis -s /sbin/nologin \
88+
-d %{_sharedstatedir}/redis -c "redis user" redis
89+
exit 0
4790

4891
%post
49-
useradd -M -r -s /bin/false redis
50-
chown redis:redis /var/lib/redis
51-
chown redis:redis /var/run/redis
52-
systemctl daemon-reload
92+
chown redis:redis %{_sharedstatedir}/redis
93+
chown redis:redis %{_localstatedir}/run/redis
94+
chown redis:redis %{_libdir}/redis
95+
chown redis:redis %{_libdir}/redis/modules
96+
97+
%postun
98+
if [ $1 -eq 2 ]; then
99+
systemctl daemon-reload >/dev/null 2>&1
100+
fi

0 commit comments

Comments
 (0)