diff --git a/.rpm/vpncloud.spec b/.rpm/vpncloud.spec index f51930e..7c907fc 100644 --- a/.rpm/vpncloud.spec +++ b/.rpm/vpncloud.spec @@ -24,8 +24,10 @@ rm -rf %{buildroot} mkdir -p %{buildroot} mkdir -p %{buildroot}/etc/vpncloud mkdir -p %{buildroot}/lib/systemd/system +mkdir -p %{buildroot}/usr/share/man/man1 cp %{buildroot}/../../../../../assets/example.net.disabled %{buildroot}/etc/vpncloud/example.net.disabled cp %{buildroot}/../../../../../assets/vpncloud@.service %{buildroot}/lib/systemd/system/vpncloud@.service +cp %{buildroot}/../../../../../target/vpncloud.1.gz %{buildroot}/usr/share/man/man1/vpncloud.1.gz cp -a * %{buildroot} %clean @@ -36,6 +38,7 @@ rm -rf %{buildroot} /etc/vpncloud/example.net.disabled /usr/bin/vpncloud /lib/systemd/system/vpncloud@.service +/usr/share/man/man1/vpncloud.1.gz %defattr(-,root,root,-) %{_bindir}/* diff --git a/Cargo.toml b/Cargo.toml index 36183f1..b0e9822 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,3 +66,9 @@ assets = [ ["assets/vpncloud@.service", "/lib/systemd/system/vpncloud@.service", "644"], ["target/vpncloud.1.gz", "/usr/share/man/man1/vpncloud.1.gz", "644"] ] + +[package.metadata.rpm.cargo] +buildflags = ["--release"] + +[package.metadata.rpm.targets] +vpncloud = { path = "/usr/bin/vpncloud" } diff --git a/README.md b/README.md index 97ea3ae..287ff55 100644 --- a/README.md +++ b/README.md @@ -74,19 +74,17 @@ Debian packages can be built using [cargo-deb](https://github.com/mmstick/cargo- There is a [VpnCloud package for Arch Linux](https://aur.archlinux.org/packages/vpncloud/) thanks to Oscar Rainford (fourbytes). -#### CentOS 7 +#### CentOS 7 (maybe other RPM based) CentOS 7 .rpm package can be built using [cargo-rpm](https://github.com/RustRPM/cargo-rpm): ``cargo rpm`` On an CentOS 7: 1. Install the required build environment (on CentOS 7) - $> yum install -y cargo - $> yum groupinstall -y 'Development Tools' 2. Build the software - $> cargo rpm build --release + $> cargo rpm build rpm will be situated in `target/release/rpmbuild/RPMS/` diff --git a/builder/Dockerfile-rpm b/builder/Dockerfile-rpm new file mode 100644 index 0000000..c94b051 --- /dev/null +++ b/builder/Dockerfile-rpm @@ -0,0 +1,24 @@ +FROM centos:latest + +RUN yum groupinstall -y 'Development Tools' + +RUN useradd -ms /bin/bash user +USER user +WORKDIR /home/user + +ENV RUST=1.33.0 + +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain ${RUST} + +ENV PATH=/home/user/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +RUN rustup target add i686-unknown-linux-gnu \ + && rustup target add armv7-unknown-linux-gnueabihf + +RUN cargo install cargo-rpm \ + && rm -rf /home/user/.cargo/{git,tmp,registry} + +VOLUME /home/user/.cargo/tmp +VOLUME /home/user/.cargo/git +VOLUME /home/user/.cargo/registry + diff --git a/builder/build.sh b/builder/build.sh index 509261e..ec8b037 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -30,3 +30,10 @@ cp ../target/debian/vpncloud_${VERSION}_amd64.deb ../dist/vpncloud_${VERSION}_am # arm7hf deb docker_cmd deb 'cd code && cargo deb --target armv7-unknown-linux-gnueabihf' cp ../target/armv7-unknown-linux-gnueabihf/debian/vpncloud_${VERSION}_armhf.deb ../dist/vpncloud_${VERSION}_armhf.deb + + +docker build --rm -f=Dockerfile-rpm -t vpncloud-builder-rpm . + +# x86_64 rpm +docker_cmd rpm 'cd code && cargo rpm build' +cp ../target/release/rpmbuild/RPMS/x86_64/vpncloud-${VERSION}-1.x86_64.rpm ../dist/vpncloud_${VERSION}.x86_64.rpm