From 8cc45e4b7e9f7775ed107c815c5f0c037f17ee8d Mon Sep 17 00:00:00 2001 From: radekg Date: Wed, 30 Mar 2016 00:47:26 +0200 Subject: [PATCH 1/5] Fedora 23 support. Closes #5 --- README.md | 1 + docker/fedora:23/Dockerfile | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 docker/fedora:23/Dockerfile diff --git a/README.md b/README.md index a721bbe..69722d7 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ This program uses Docker via command line and it works perfectly fine with Docke - `Centos 7.1` - `Debian Jessie` +- `Fedora 23` - `Ubuntu Precise` - `Ubuntu Trusty` diff --git a/docker/fedora:23/Dockerfile b/docker/fedora:23/Dockerfile new file mode 100644 index 0000000..72d3cbb --- /dev/null +++ b/docker/fedora:23/Dockerfile @@ -0,0 +1,16 @@ +FROM fedora:23 + +RUN dnf install -y which tar wget \ + && mkdir -p /tmp/maven && cd /tmp/maven \ + && wget http://mirror.olnevhost.net/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz \ + && tar xvf apache-maven-3.3.9-bin.tar.gz \ + && mv apache-maven-3.3.9 /usr/local/apache-maven \ + && cd / && source /etc/bashrc && rm -rf /tmp/maven \ + && ln -sf /usr/local/apache-maven/bin/mvn /usr/bin/mvn \ + && dnf groupinstall "Development Tools" "Development Libraries" -y \ + && dnf install -y libtool redhat-rpm-config gcc-c++ java-1.8.0-openjdk-devel cyrus-sasl-md5 apr-devel subversion-devel ruby-devel \ + && gem install fpm --no-ri --no-rdoc + +ENV M2_HOME /usr/local/apache-maven +ENV M2 /usr/local/apache-maven/bin +ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk \ No newline at end of file From 8b19dd9804777ca7ba48b3e6ab380dfd0f7d4a33 Mon Sep 17 00:00:00 2001 From: radekg Date: Wed, 30 Mar 2016 02:39:02 +0200 Subject: [PATCH 2/5] Update nss to make maven work with https. --- docker/fedora:23/Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docker/fedora:23/Dockerfile b/docker/fedora:23/Dockerfile index 72d3cbb..a5cfd6f 100644 --- a/docker/fedora:23/Dockerfile +++ b/docker/fedora:23/Dockerfile @@ -1,14 +1,15 @@ FROM fedora:23 -RUN dnf install -y which tar wget \ +RUN dnf install -y which tar wget git-all \ && mkdir -p /tmp/maven && cd /tmp/maven \ - && wget http://mirror.olnevhost.net/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz \ - && tar xvf apache-maven-3.3.9-bin.tar.gz \ - && mv apache-maven-3.3.9 /usr/local/apache-maven \ + && wget http://mirror.olnevhost.net/pub/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz \ + && tar xvf apache-maven-3.3.3-bin.tar.gz \ + && mv apache-maven-3.3.3 /usr/local/apache-maven \ && cd / && source /etc/bashrc && rm -rf /tmp/maven \ && ln -sf /usr/local/apache-maven/bin/mvn /usr/bin/mvn \ && dnf groupinstall "Development Tools" "Development Libraries" -y \ - && dnf install -y libtool redhat-rpm-config gcc-c++ java-1.8.0-openjdk-devel cyrus-sasl-md5 apr-devel subversion-devel ruby-devel \ + && dnf update nss -y \ + && dnf install -y python-boto libtool redhat-rpm-config gcc-c++ java-1.8.0-openjdk-devel cyrus-sasl-md5 apr-devel subversion-devel ruby-devel \ && gem install fpm --no-ri --no-rdoc ENV M2_HOME /usr/local/apache-maven From 3154593b005f3ffb0fb61acbd4ea69aa358bac2e Mon Sep 17 00:00:00 2001 From: radekg Date: Wed, 30 Mar 2016 02:45:40 +0200 Subject: [PATCH 3/5] Remove git-all - not needed. Bump maven to 3.3.9. --- docker/fedora:23/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/fedora:23/Dockerfile b/docker/fedora:23/Dockerfile index a5cfd6f..92dc5dd 100644 --- a/docker/fedora:23/Dockerfile +++ b/docker/fedora:23/Dockerfile @@ -1,10 +1,10 @@ FROM fedora:23 -RUN dnf install -y which tar wget git-all \ +RUN dnf install -y which tar wget \ && mkdir -p /tmp/maven && cd /tmp/maven \ - && wget http://mirror.olnevhost.net/pub/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz \ - && tar xvf apache-maven-3.3.3-bin.tar.gz \ - && mv apache-maven-3.3.3 /usr/local/apache-maven \ + && wget http://mirror.olnevhost.net/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz \ + && tar xvf apache-maven-3.3.9-bin.tar.gz \ + && mv apache-maven-3.3.9 /usr/local/apache-maven \ && cd / && source /etc/bashrc && rm -rf /tmp/maven \ && ln -sf /usr/local/apache-maven/bin/mvn /usr/bin/mvn \ && dnf groupinstall "Development Tools" "Development Libraries" -y \ From a70ecceae40c92339aad0cdcaf6bb7166d341a0c Mon Sep 17 00:00:00 2001 From: radekg Date: Wed, 30 Mar 2016 14:59:39 +0200 Subject: [PATCH 4/5] Add missing rpm-build package. --- docker/fedora:23/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/fedora:23/Dockerfile b/docker/fedora:23/Dockerfile index 92dc5dd..78e2539 100644 --- a/docker/fedora:23/Dockerfile +++ b/docker/fedora:23/Dockerfile @@ -9,7 +9,10 @@ RUN dnf install -y which tar wget \ && ln -sf /usr/local/apache-maven/bin/mvn /usr/bin/mvn \ && dnf groupinstall "Development Tools" "Development Libraries" -y \ && dnf update nss -y \ - && dnf install -y python-boto libtool redhat-rpm-config gcc-c++ java-1.8.0-openjdk-devel cyrus-sasl-md5 apr-devel subversion-devel ruby-devel \ + && dnf install -y python-boto libtool redhat-rpm-config gcc-c++ \ + java-1.8.0-openjdk-devel cyrus-sasl-md5 \ + apr-devel subversion-devel ruby-devel \ + rpm-build \ && gem install fpm --no-ri --no-rdoc ENV M2_HOME /usr/local/apache-maven From c7e4602b9cfbcbfe6519a13741891fc8d19e3e7d Mon Sep 17 00:00:00 2001 From: radekg Date: Wed, 30 Mar 2016 15:02:55 +0200 Subject: [PATCH 5/5] Implement applying patches to mesos-deb-packaging. Closes #14. Closes #5. This circumvents the problem reported at https://github.com/mesosphere/mesos-deb-packaging/issues/75. --- lib/configs/mesos_config.py | 12 +++++++ mesos-toolbox.py | 31 +++++++++++++++---- ...ee79c0115e82984a648-0.27.2-fedora-23.patch | 13 ++++++++ 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 patches/mesos-packaging/b929d6b84bcc080b490a7ee79c0115e82984a648-0.27.2-fedora-23.patch diff --git a/lib/configs/mesos_config.py b/lib/configs/mesos_config.py index 41c707d..7ad9fe2 100644 --- a/lib/configs/mesos_config.py +++ b/lib/configs/mesos_config.py @@ -64,6 +64,13 @@ def setup(program): default=Utils.env_with_default("DOCKER_TEMPLATES_DIR", "{}/docker".format( os.path.dirname(os.path.dirname(os.path.dirname(__file__))) ))) + Config.add_argument( "--packaging-patches", + dest="packages_patches_dir", + help="mesos-deb-packaging patches directory.", + metavar="PACKAGES_PATCHES_DIR", + default=Utils.env_with_default("PACKAGES_PATCHES_DIR", "{}/patches/mesos-packaging".format( + os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + ))) Config.add_argument( "--source-dir", dest="source_dir", help="Directory in which the Mesos sources are stored.", @@ -127,6 +134,11 @@ def docker_templates_dir(): from lib.config import Config return Config.args().docker_templates_dir + @staticmethod + def packages_patches_dir(): + from lib.config import Config + return Config.args().packages_patches_dir + @staticmethod def source_dir(): from lib.config import Config diff --git a/mesos-toolbox.py b/mesos-toolbox.py index e34bfdd..c9baf7b 100755 --- a/mesos-toolbox.py +++ b/mesos-toolbox.py @@ -194,14 +194,19 @@ def op_build(): # create temp work dir: build_dir_mesos = "{}/{}-{}".format( MesosConfig.work_dir(), - MesosConfig.mesos_version(), - MesosConfig.operating_system().replace(":", "-") ) + MesosConfig.mesos_version(), + MesosConfig.operating_system().replace(":", "-") ) build_dir_packaging = "{}/{}-{}-packaging".format( MesosConfig.work_dir(), - MesosConfig.mesos_version(), - MesosConfig.operating_system().replace(":", "-") ) + MesosConfig.mesos_version(), + MesosConfig.operating_system().replace(":", "-") ) packages_dir = "{}/{}-{}".format( MesosConfig.packages_dir(), - MesosConfig.mesos_version(), - MesosConfig.operating_system().replace(":", "-") ) + MesosConfig.mesos_version(), + MesosConfig.operating_system().replace(":", "-") ) + patch_file = "{}/{}-{}-{}.patch".format( + MesosConfig.packages_patches_dir(), + MesosConfig.deb_packaging_sha(), + MesosConfig.mesos_version(), + MesosConfig.operating_system().replace(":", "-") ) build_log_file = "{}.{}.log".format(build_dir_mesos, str(int(time.time()))) LOG.info("Recording build process to {}.".format(build_log_file)) @@ -223,6 +228,20 @@ def op_build(): Utils.cmd("cp -R {} {}".format( MesosConfig.mesos_repository_dir(), build_dir_mesos )) Utils.cmd("cp -R {} {}".format( MesosConfig.deb_packaging_repository_dir(), build_dir_packaging )) + print patch_file + if os.path.isfile(patch_file): + LOG.info("Found a patch for mesos-deb-packaging {}. Applying...".format( MesosConfig.deb_packaging_sha() )) + result = Utils.cmd("cd {} && git apply {}".format(build_dir_packaging, patch_file)) + if result['ExitCode'] != 0: + Utils.print_result_error(LOG, "Patch {} could not be applied to {}.".format( + patch_file, + build_dir_packaging ), result) + exit(105) + else: + LOG.info("Patch applied.") + else: + LOG.info("No patches for mesos-deb-packaging {}.".format( MesosConfig.deb_packaging_sha() )) + # ensure branch / tag LOG.info("Ensuring Mesos version {}...".format(MesosConfig.mesos_version())) result = Utils.cmd("sleep 5 && cd {} && git checkout {}".format(build_dir_mesos, MesosConfig.mesos_version())) diff --git a/patches/mesos-packaging/b929d6b84bcc080b490a7ee79c0115e82984a648-0.27.2-fedora-23.patch b/patches/mesos-packaging/b929d6b84bcc080b490a7ee79c0115e82984a648-0.27.2-fedora-23.patch new file mode 100644 index 0000000..24cafb0 --- /dev/null +++ b/patches/mesos-packaging/b929d6b84bcc080b490a7ee79c0115e82984a648-0.27.2-fedora-23.patch @@ -0,0 +1,13 @@ +diff --git a/build_mesos b/build_mesos +index 81561bc..526d86e 100755 +--- a/build_mesos ++++ b/build_mesos +@@ -239,7 +239,7 @@ function create_lib_symlinks {( + msg "expects libmesos.so to exist in /usr/local/lib)." + mkdir -p usr/local/lib + # ensure symlinks are relative so they work as expected in the final env +- ( cd usr/local/lib && cp -s ../../lib/lib*.so . ) ++ ( cd usr/local/lib && cp ../../lib64/lib*.so ../../lib/ && cp -s ../../lib/lib*.so . ) + fi + )} +