From d24354c5eb0b45e8a299963e7fea77639ae499b3 Mon Sep 17 00:00:00 2001 From: ZpmFred Date: Thu, 28 Feb 2019 15:39:41 +0100 Subject: [PATCH 1/5] rpm build --- .rpm/vpncloud.spec | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .rpm/vpncloud.spec diff --git a/.rpm/vpncloud.spec b/.rpm/vpncloud.spec new file mode 100644 index 0000000..f51930e --- /dev/null +++ b/.rpm/vpncloud.spec @@ -0,0 +1,41 @@ +%define __spec_install_post %{nil} +%define __os_install_post %{_dbpath}/brp-compress +%define debug_package %{nil} + +Name: vpncloud +Summary: Peer-to-peer VPN +Version: @@VERSION@@ +Release: 1 +License: GPL-3.0 +Group: Applications/System +Source0: %{name}-%{version}.tar.gz +URL: https://vpncloud.ddswd.de + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root + +%description +%{summary} + +%prep +%setup -q + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot} +mkdir -p %{buildroot}/etc/vpncloud +mkdir -p %{buildroot}/lib/systemd/system +cp %{buildroot}/../../../../../assets/example.net.disabled %{buildroot}/etc/vpncloud/example.net.disabled +cp %{buildroot}/../../../../../assets/vpncloud@.service %{buildroot}/lib/systemd/system/vpncloud@.service +cp -a * %{buildroot} + +%clean +rm -rf %{buildroot} + +%files +/etc/vpncloud +/etc/vpncloud/example.net.disabled +/usr/bin/vpncloud +/lib/systemd/system/vpncloud@.service + +%defattr(-,root,root,-) +%{_bindir}/* From 312276229e0e6c57a56e8a6a6efd0f3e8271db0d Mon Sep 17 00:00:00 2001 From: ZpmFred Date: Fri, 1 Mar 2019 15:54:32 +0100 Subject: [PATCH 2/5] rpm package doc --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index feb9261..79dbd93 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,8 @@ 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 .rpm package can be built using [cargo-rpm](https://github.com/RustRPM/cargo-rpm): ``cargo rpm`` ### Contributions welcome There are several areas in which still some work has to be done and where From 51c2cc5eb05a097cd37fc3c59e6641db0c9f098c Mon Sep 17 00:00:00 2001 From: ZpmFred Date: Fri, 1 Mar 2019 15:57:01 +0100 Subject: [PATCH 3/5] CentOS case fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 79dbd93..1965f6c 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ There is a [VpnCloud package for Arch Linux](https://aur.archlinux.org/packages/ thanks to Oscar Rainford (fourbytes). #### CentOS 7 -Centos 7 .rpm package can be built using [cargo-rpm](https://github.com/RustRPM/cargo-rpm): ``cargo rpm`` +CentOS 7 .rpm package can be built using [cargo-rpm](https://github.com/RustRPM/cargo-rpm): ``cargo rpm`` ### Contributions welcome There are several areas in which still some work has to be done and where From 05b359fd1f8ad20f3f51f678d6587fc950c6c546 Mon Sep 17 00:00:00 2001 From: ZpmFred Date: Fri, 1 Mar 2019 16:11:53 +0100 Subject: [PATCH 4/5] More detailed rpm build doc --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 1965f6c..97ea3ae 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,19 @@ thanks to Oscar Rainford (fourbytes). #### CentOS 7 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 + +rpm will be situated in `target/release/rpmbuild/RPMS/` ### Contributions welcome There are several areas in which still some work has to be done and where From 7fdc0ef49d2e92085029f36e56167a03cb1f50bc Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Sat, 2 Mar 2019 01:12:42 +0100 Subject: [PATCH 5/5] Modified rpm build process --- .rpm/vpncloud.spec | 3 +++ Cargo.toml | 6 ++++++ README.md | 6 ++---- builder/Dockerfile-rpm | 24 ++++++++++++++++++++++++ builder/build.sh | 7 +++++++ 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 builder/Dockerfile-rpm 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