Skip to content

Instantly share code, notes, and snippets.

@gswallow
Last active October 3, 2017 21:16
Show Gist options
  • Save gswallow/8091ba409d67a562545f9def1bb3ec21 to your computer and use it in GitHub Desktop.
Save gswallow/8091ba409d67a562545f9def1bb3ec21 to your computer and use it in GitHub Desktop.
Build TokuMX 2.0.2 packages on Ubuntu Xenial
#!/bin/bash -e
# Install prerequisites
sudo apt-get -qq update && \
sudo apt-get -yqq install \
git-core \
cmake \
build-essential \
g++ \
zlib1g-dev \
libpcre3-dev \
python \
python-pymongo \
devscripts \
debhelper \
dh-python \
libboost1.58-all-dev \
libreadline-dev \
libpthread-stubs0-dev \
libpcap-dev \
valgrind
# Get tokumx
wget https://www.percona.com/downloads/percona-tokumx/tokumx-enterprise-2.0.2/source/tarball/tokumx-enterprise-2.0.2.tar.gz
tar xzf tokumx-enterprise-2.0.2.tar.gz
cat > xenial.patch <<'EOF'
diff -Naur tokumx-enterprise-2.0.2-orig/debian/changelog tokumx-enterprise-2.0.2/debian/changelog
--- tokumx-enterprise-2.0.2-orig/debian/changelog 2015-09-09 14:13:32.000000000 +0000
+++ tokumx-enterprise-2.0.2/debian/changelog 2017-10-03 19:45:08.713993806 +0000
@@ -1,3 +1,16 @@
+tokumx-enterprise (2.0.2-1.xenial) stable; urgency=low
+
+ * see http://github.com/Tokutek/mongo/releases/tokumx-2.0.2
+
+ -- Greg Swallow <gswallow@gmail.com> Mon, 2 Oct 2017 17:52:40 +0000
+
+tokumx (2.0.1) unstable; urgency=low
+
+ * see http://github.com/Tokutek/mongo/releases/tokumx-2.0.1
+
+ -- Greg Swallow <gswallow@gmail.com> Mon, 2 Oct 2017 17:52:40 +0000
+
+
tokumx (2.0.0) unstable; urgency=low
* see http://github.com/Tokutek/mongo/releases/tokumx-2.0.0
diff -Naur tokumx-enterprise-2.0.2-orig/debian/control tokumx-enterprise-2.0.2/debian/control
--- tokumx-enterprise-2.0.2-orig/debian/control 2015-09-09 14:13:31.000000000 +0000
+++ tokumx-enterprise-2.0.2/debian/control 2017-10-03 19:45:08.713993806 +0000
@@ -1,18 +1,18 @@
-Source: tokumx
+Source: tokumx-enterprise
Section: devel
Priority: optional
Maintainer: Leif Walsh <leif.walsh@gmail.com>
Standards-Version: 3.9.5
-Build-Depends: debhelper (>= 7), libpcre3, libpcre3-dev, cmake, libboost1.35-dev | libboost1.37-dev | libboost1.38-dev | libboost1.40-dev | libboost1.42-dev | libboost1.48-dev | libboost1.49-dev | libboost1.53-dev | libboost1.54-dev, libboost-thread1.35-dev | libboost-thread1.37-dev | libboost-thread1.38-dev | libboost-thread1.40-dev | libboost-thread1.42-dev | libboost-thread1.48-dev | libboost-thread1.49-dev | libboost-thread1.53-dev | libboost-thread1.54-dev, libboost-filesystem1.35-dev | libboost-filesystem1.37-dev | libboost-filesystem1.38-dev | libboost-filesystem1.40-dev | libboost-filesystem1.42-dev | libboost-filesystem1.48-dev | libboost-filesystem1.49-dev | libboost-filesystem1.53-dev | libboost-filesystem1.54-dev, libboost-program-options1.35-dev | libboost-program-options1.37-dev | libboost-program-options1.38-dev | libboost-program-options1.40-dev | libboost-program-options1.42-dev | libboost-program-options1.48-dev | libboost-program-options1.49-dev | libboost-program-options1.53-dev | libboost-program-options1.54-dev, libboost-date-time1.35-dev | libboost-date-time1.37-dev | libboost-date-time1.38-dev | libboost-date-time1.40-dev | libboost-date-time1.42-dev | libboost-date-time1.48-dev | libboost-date-time1.49-dev | libboost-date-time1.53-dev | libboost-date-time1.54-dev, libpcap-dev, libreadline-dev, zlib1g-dev
+Build-Depends: debhelper (>= 7), dh-python, libpcre3, libpcre3-dev, cmake, libboost1.35-dev | libboost1.37-dev | libboost1.38-dev | libboost1.40-dev | libboost1.42-dev | libboost1.48-dev | libboost1.49-dev | libboost1.53-dev | libboost1.54-dev | libboost1.58-dev, libboost-thread1.35-dev | libboost-thread1.37-dev | libboost-thread1.38-dev | libboost-thread1.40-dev | libboost-thread1.42-dev | libboost-thread1.48-dev | libboost-thread1.49-dev | libboost-thread1.53-dev | libboost-thread1.54-dev | libboost1.58-dev, libboost-filesystem1.35-dev | libboost-filesystem1.37-dev | libboost-filesystem1.38-dev | libboost-filesystem1.40-dev | libboost-filesystem1.42-dev | libboost-filesystem1.48-dev | libboost-filesystem1.49-dev | libboost-filesystem1.53-dev | libboost-filesystem1.54-dev | libboost-filesystem1.58-dev, libboost-program-options1.35-dev | libboost-program-options1.37-dev | libboost-program-options1.38-dev | libboost-program-options1.40-dev | libboost-program-options1.42-dev | libboost-program-options1.48-dev | libboost-program-options1.49-dev | libboost-program-options1.53-dev | libboost-program-options1.54-dev | libboost-program-options1.58-dev, libboost-date-time1.35-dev | libboost-date-time1.37-dev | libboost-date-time1.38-dev | libboost-date-time1.40-dev | libboost-date-time1.42-dev | libboost-date-time1.48-dev | libboost-date-time1.49-dev | libboost-date-time1.53-dev | libboost-date-time1.54-dev | libboost-date-time1.58-dev, libpcap-dev, libreadline-dev, zlib1g-dev
Homepage: http://www.tokutek.com/products/tokumx-for-mongodb
Vcs-Browser: https://github.com/Tokutek/mongo
Vcs-Git: git://github.com/Tokutek/mongo.git
-Package: tokumx
+Package: tokumx-enterprise
Architecture: amd64
Depends:
- tokumx-clients (= ${binary:Version}),
- tokumx-server (= ${binary:Version}),
+ tokumx-enterprise-clients (= ${binary:Version}),
+ tokumx-enterprise-server (= ${binary:Version}),
${misc:Depends}
Conflicts: mongodb, mongodb-stable, mongodb-unstable, mongodb-nightly, mongodb-10gen, mongodb-10gen-unstable, mongodb-org, mongodb-org-unstable
Description: object/document-oriented database (metapackage)
@@ -28,9 +28,9 @@
* Transactional semantics including snapshot reads and
multi-statement transactions on a single shard basis.
-Package: tokumx-clients
+Package: tokumx-enterprise-clients
Architecture: amd64
-Depends: ${shlibs:Depends}, ${misc:Depends}, tokumx-common (= ${binary:Version}), python2.5 | python2.6 | python2.7
+Depends: ${shlibs:Depends}, ${misc:Depends}, tokumx-enterprise-common (= ${binary:Version}), python2.5 | python2.6 | python2.7
Conflicts: mongodb-clients, mongodb-10gen-unstable-shell, mongodb-10gen-unstable-tools, mongodb-org-shell, mongodb-org-tools, mongodb-org-unstable-shell, mongodb-org-unstable-tools
Description: object/document-oriented database (client apps)
TokuMX is a high-performance version of MongoDB using Fractal
@@ -48,9 +48,9 @@
This package includes the mongo shell and utilities for
interacting with a TokuMX database server.
-Package: tokumx-dev
+Package: tokumx-enterprise-dev
Architecture: amd64 i386
-Depends: ${misc:Depends}, python2.5 | python2.6 | python2.7, libboost1.35-dev | libboost1.37-dev | libboost1.38-dev | libboost1.40-dev | libboost1.42-dev | libboost1.48-dev | libboost1.49-dev | libboost1.53-dev | libboost1.54-dev, libboost-thread1.35-dev | libboost-thread1.37-dev | libboost-thread1.38-dev | libboost-thread1.40-dev | libboost-thread1.42-dev | libboost-thread1.48-dev | libboost-thread1.49-dev | libboost-thread1.53-dev | libboost-thread1.54-dev, libboost-filesystem1.35-dev | libboost-filesystem1.37-dev | libboost-filesystem1.38-dev | libboost-filesystem1.40-dev | libboost-filesystem1.42-dev | libboost-filesystem1.48-dev | libboost-filesystem1.49-dev | libboost-filesystem1.53-dev | libboost-filesystem1.54-dev, libboost-program-options1.35-dev | libboost-program-options1.37-dev | libboost-program-options1.38-dev | libboost-program-options1.40-dev | libboost-program-options1.42-dev | libboost-program-options1.48-dev | libboost-program-options1.49-dev | libboost-program-options1.53-dev | libboost-program-options1.54-dev, libboost-date-time1.35-dev | libboost-date-time1.37-dev | libboost-date-time1.38-dev | libboost-date-time1.40-dev | libboost-date-time1.42-dev | libboost-date-time1.48-dev | libboost-date-time1.49-dev | libboost-date-time1.53-dev | libboost-date-time1.54-dev, tokumx-common
+Depends: ${misc:Depends}, python2.5 | python2.6 | python2.7, libboost1.35-dev | libboost1.37-dev | libboost1.38-dev | libboost1.40-dev | libboost1.42-dev | libboost1.48-dev | libboost1.49-dev | libboost1.53-dev | libboost1.54-dev | libboost1.58-dev, libboost-thread1.35-dev | libboost-thread1.37-dev | libboost-thread1.38-dev | libboost-thread1.40-dev | libboost-thread1.42-dev | libboost-thread1.48-dev | libboost-thread1.49-dev | libboost-thread1.53-dev | libboost-thread1.54-dev | libboost-thread1.58-dev, libboost-filesystem1.35-dev | libboost-filesystem1.37-dev | libboost-filesystem1.38-dev | libboost-filesystem1.40-dev | libboost-filesystem1.42-dev | libboost-filesystem1.48-dev | libboost-filesystem1.49-dev | libboost-filesystem1.53-dev | libboost-filesystem1.54-dev | libboost-filesystem1.58-dev, libboost-program-options1.35-dev | libboost-program-options1.37-dev | libboost-program-options1.38-dev | libboost-program-options1.40-dev | libboost-program-options1.42-dev | libboost-program-options1.48-dev | libboost-program-options1.49-dev | libboost-program-options1.53-dev | libboost-program-options1.54-dev | libboost-program-options1.58-dev, libboost-date-time1.35-dev | libboost-date-time1.37-dev | libboost-date-time1.38-dev | libboost-date-time1.40-dev | libboost-date-time1.42-dev | libboost-date-time1.48-dev | libboost-date-time1.49-dev | libboost-date-time1.53-dev | libboost-date-time1.54-dev | libboost-date-time1.58-dev, tokumx-enterprise-common
Conflicts: mongodb-dev
Description: object/document-oriented database (development)
TokuMX is a high-performance version of MongoDB using Fractal
@@ -68,9 +68,9 @@
This package includes the C++ headers and library for
developing TokuMX applications.
-Package: tokumx-server
+Package: tokumx-enterprise-server
Architecture: amd64
-Depends: ${shlibs:Depends}, ${misc:Depends}, tokumx-common (= ${binary:Version})
+Depends: ${shlibs:Depends}, ${misc:Depends}, tokumx-enterprise-common (= ${binary:Version})
Pre-Depends: adduser
Conflicts: mongodb-server, mongodb-10gen-unstable-mongos, mongodb-10gen-unstable-server, mongodb-org-mongos, mongodb-org-server, mongodb-org-unstable-mongos, mongodb-org-unstable-server
Description: object/document-oriented database (server package)
@@ -89,7 +89,7 @@
This package includes the mongod and mongos data and routing
servers for the TokuMX database system.
-Package: tokumx-common
+Package: tokumx-enterprise-common
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, zlib1g
Pre-Depends: debconf, curl, dialog
@@ -109,13 +109,13 @@
This package includes files common to tokumx-clients and
tokumx-server, including the Fractal Tree indexing library.
-Package: tokumx-dbg
+Package: tokumx-enterprise-dbg
Architecture: amd64
Section: debug
Priority: extra
Depends:
- tokumx-clients (= ${binary:Version}),
- tokumx-server (= ${binary:Version}),
+ tokumx-enterprise-clients (= ${binary:Version}),
+ tokumx-enterprise-server (= ${binary:Version}),
${misc:Depends}
Description: object/document-oriented database (debug symbols)
.
diff -Naur tokumx-enterprise-2.0.2-orig/debian/rules tokumx-enterprise-2.0.2/debian/rules
--- tokumx-enterprise-2.0.2-orig/debian/rules 2015-09-09 14:13:32.000000000 +0000
+++ tokumx-enterprise-2.0.2/debian/rules 2017-10-03 19:44:18.975869239 +0000
@@ -9,7 +9,7 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
-PRODUCT?=tokumx
+PRODUCT?=tokumx-enterprise
configure: configure-stamp
configure-stamp:
@@ -33,6 +33,8 @@
-D CMAKE_INSTALL_RPATH=/usr/lib/tokumx \
-D INSTALL_LIBDIR=lib/tokumx \
-D TOKUMX_STRIP_BINARIES=OFF \
+ -D CMAKE_POLICY_DEFAULT_CMP0026=OLD \
+ -D CMAKE_POLICY_DEFAULT_CMP0045=OLD \
..)
touch configure-stamp
@@ -107,12 +109,12 @@
gzip -9 $(CURDIR)/debian/$(PRODUCT)-common/usr/share/doc/tokumx/changelog
install -p -Dm644 $(CURDIR)/src/third_party/ft-index/README-TOKUDB $(CURDIR)/debian/$(PRODUCT)-common/usr/share/doc/tokumx/README-TOKUKV
- if [ x"tokumx" != x"$(PRODUCT)" ]; then \
+ if [ x"tokumx-enterprise" != x"$(PRODUCT)" ]; then \
for suffix in preinst postinst prerm postrm; do \
- mv debian/tokumx-server.$$suffix debian/$(PRODUCT)-server.$$suffix; \
+ mv debian/tokumx-enterprise-server.$$suffix debian/$(PRODUCT)-server.$$suffix; \
done; \
for suffix in config postinst templates; do \
- mv debian/tokumx-common.$$suffix debian/$(PRODUCT)-common.$$suffix; \
+ mv debian/tokumx-enterprise-common.$$suffix debian/$(PRODUCT)-common.$$suffix; \
done; \
fi
diff -Naur tokumx-enterprise-2.0.2-orig/src/mongo/shell/linenoise_utf8.h tokumx-enterprise-2.0.2/src/mongo/shell/linenoise_utf8.h
--- tokumx-enterprise-2.0.2-orig/src/mongo/shell/linenoise_utf8.h 2015-09-09 14:13:31.000000000 +0000
+++ tokumx-enterprise-2.0.2/src/mongo/shell/linenoise_utf8.h 2017-10-03 19:45:08.713993806 +0000
@@ -17,6 +17,8 @@
#include <boost/smart_ptr/scoped_array.hpp>
#include <string.h>
+#include <iostream>
+
namespace linenoise_utf8 {
EOF
patch -p0 < xenial.patch
cd tokumx-enterprise-2.0.2
debuild -b -us -uc -i
aptly repo create -distribution=xenial -component=stable indigo-tokumx-xenial
aptly repo add indigo-tokumx-xenial xenial
aptly snapshot create indigo-tokumx-xenial-0.1 from repo indigo-tokumx-xenial
aptly publish snapshot indigo-tokumx-xenial-0.1 s3:indigo-apt-tokumx:
@gswallow
Copy link
Author

gswallow commented Oct 2, 2017

I am aware that the debian packaging community will look at this gist and cringe. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment