Browse code

add opensuse to rpm builder

Signed-off-by: Jessica Frazelle <acidburn@docker.com>

Jessica Frazelle authored on 2015/09/16 05:13:22
Showing 5 changed files
... ...
@@ -47,6 +47,10 @@ for version in "${versions[@]}"; do
47 47
 			# get "Development Tools" packages and dependencies
48 48
 			echo 'RUN yum groupinstall -y "Development Tools"' >> "$version/Dockerfile"
49 49
 			;;
50
+		opensuse:*)
51
+			# get rpm-build and curl packages and dependencies
52
+			echo 'RUN zypper install -n ca-certificates* curl gzip rpm-build' >> "$version/Dockerfile"
53
+			;;
50 54
 		*)
51 55
 			echo 'RUN yum install -y @development-tools fedora-packager' >> "$version/Dockerfile"
52 56
 			;;
... ...
@@ -70,7 +74,17 @@ for version in "${versions[@]}"; do
70 70
 			packages=( --enablerepo=ol7_optional_latest "${packages[*]}" )
71 71
 			;;
72 72
 	esac
73
-	echo "RUN yum install -y ${packages[*]}" >> "$version/Dockerfile"
73
+
74
+	case "$from" in
75
+		opensuse:*)
76
+			packages=( "${packages[@]/btrfs-progs-devel/libbtrfs-devel}" )
77
+			# use zypper
78
+			echo "RUN zypper install -n ${packages[*]}" >> "$version/Dockerfile"
79
+			;;
80
+		*)
81
+			echo "RUN yum install -y ${packages[*]}" >> "$version/Dockerfile"
82
+			;;
83
+	esac
74 84
 
75 85
 	echo >> "$version/Dockerfile"
76 86
 
77 87
new file mode 100644
... ...
@@ -0,0 +1,15 @@
0
+#
1
+# THIS FILE IS AUTOGENERATED; SEE "contrib/builder/rpm/generate.sh"!
2
+#
3
+
4
+FROM opensuse:13.2
5
+
6
+RUN zypper install -n ca-certificates* curl gzip rpm-build
7
+RUN zypper install -n libbtrfs-devel device-mapper-devel glibc-static libselinux-devel selinux-policy selinux-policy-devel sqlite-devel tar
8
+
9
+ENV GO_VERSION 1.4.2
10
+RUN curl -fSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local
11
+ENV PATH $PATH:/usr/local/go/bin
12
+
13
+ENV AUTO_GOPATH 1
14
+ENV DOCKER_BUILDTAGS selinux
... ...
@@ -17,7 +17,7 @@ Packager: Docker <support@docker.com>
17 17
 %global debug_package %{nil}
18 18
 
19 19
 # is_systemd conditional
20
-%if 0%{?fedora} >= 21 || 0%{?centos} >= 7 || 0%{?rhel} >= 7
20
+%if 0%{?fedora} >= 21 || 0%{?centos} >= 7 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1300
21 21
 %global is_systemd 1
22 22
 %endif
23 23
 
... ...
@@ -26,8 +26,10 @@ Packager: Docker <support@docker.com>
26 26
 # only require systemd on those systems
27 27
 %if 0%{?is_systemd}
28 28
 BuildRequires: pkgconfig(systemd)
29
-BuildRequires: pkgconfig(libsystemd-journal)
30 29
 Requires: systemd-units
30
+%if !0%{?suse_version}
31
+BuildRequires: pkgconfig(libsystemd-journal)
32
+%endif
31 33
 %else
32 34
 Requires(post): chkconfig
33 35
 Requires(preun): chkconfig
... ...
@@ -102,6 +104,7 @@ depending on a particular stack or provider.
102 102
 %endif
103 103
 
104 104
 %build
105
+export DOCKER_GITCOMMIT=%{_gitcommit}
105 106
 ./hack/make.sh dynbinary
106 107
 # ./man/md2man-all.sh runs outside the build container (if at all), since we don't have go-md2man here
107 108
 
... ...
@@ -24,6 +24,11 @@ set -e
24 24
 		rpmRelease="0.${rcVersion}.rc${rcVersion}"
25 25
 	fi
26 26
 
27
+	DOCKER_GITCOMMIT=$(git rev-parse --short HEAD)
28
+	if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
29
+		DOCKER_GITCOMMIT="$DOCKER_GITCOMMIT-dirty"
30
+	fi
31
+
27 32
 	# if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better
28 33
 	if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
29 34
 		gitUnix="$(git log -1 --pretty='%at')"
... ...
@@ -60,7 +65,8 @@ set -e
60 60
 			echo 'ENV DOCKER_EXPERIMENTAL 1' >> "$DEST/$version/Dockerfile.build"
61 61
 		fi
62 62
 		cat >> "$DEST/$version/Dockerfile.build" <<-EOF
63
-			RUN mkdir -p /root/rpmbuild/SOURCES
63
+			RUN mkdir -p /root/rpmbuild/SOURCES \
64
+				&& echo '%_topdir /root/rpmbuild' > /root/.rpmmacros
64 65
 			WORKDIR /root/rpmbuild
65 66
 			RUN ln -sfv /usr/src/${rpmName}/hack/make/.build-rpm SPECS
66 67
 			WORKDIR /root/rpmbuild/SPECS
... ...
@@ -70,11 +76,11 @@ set -e
70 70
 		EOF
71 71
 		# selinux policy referencing systemd things won't work on non-systemd versions
72 72
 		# of centos or rhel, which we don't support anyways
73
-		if [ "$suite" -gt 6 ]; then
73
+		if [ "${suite%.*}" -gt 6 ] && [[ "$version" != opensuse* ]]; then
74 74
 			cat >> "$DEST/$version/Dockerfile.build" <<-EOF
75 75
 				RUN tar -cz -C /usr/src/${rpmName}/contrib -f /root/rpmbuild/SOURCES/${rpmName}-selinux.tar.gz ${rpmName}-selinux
76 76
 				RUN { echo '* $rpmDate $rpmPackager $rpmVersion-$rpmRelease'; echo '* Version: $VERSION'; } >> ${rpmName}-selinux.spec && tail >&2 ${rpmName}-selinux.spec
77
-				RUN rpmbuild -ba --define '_release $rpmRelease' --define '_version $rpmVersion' --define '_origversion $VERSION' ${rpmName}-selinux.spec
77
+				RUN rpmbuild -ba --define '_gitcommit $DOCKER_GITCOMMIT' --define '_release $rpmRelease' --define '_version $rpmVersion' --define '_origversion $VERSION' ${rpmName}-selinux.spec
78 78
 			EOF
79 79
 		fi
80 80
 		tempImage="docker-temp/build-rpm:$version"
... ...
@@ -18,7 +18,7 @@ set -e
18 18
 YUMDIR=$DOCKER_RELEASE_DIR/yum/repo
19 19
 
20 20
 # manage the repos for each distribution separately
21
-distros=( fedora centos oraclelinux )
21
+distros=( fedora centos opensuse oraclelinux )
22 22
 
23 23
 # get the release
24 24
 release="main"