Signed-off-by: Jessica Frazelle <acidburn@docker.com>
| ... | ... |
@@ -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" |