summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2017-03-07 17:18:40 (GMT)
committerKevin Smith <git@kismith.co.uk>2017-05-12 07:28:56 (GMT)
commitad7fcc8ef11cbe07d48354a5d45b09e4faa9b24d (patch)
treea6513c5c435be0413c8619ca4aa2cb929e4777fe
parent3c505e95a6336446d2dd9f594176addab179ae40 (diff)
downloadswift-ad7fcc8ef11cbe07d48354a5d45b09e4faa9b24d.zip
swift-ad7fcc8ef11cbe07d48354a5d45b09e4faa9b24d.tar.bz2
Allow creation of a Swift appimage on CentOS
This provides two mechanisms, one via Docker and one via copying and running scripts. The Dockerfile will build with 64bit CentOS 6.8 only, which isn't useful for truly ancient systems. The scripts are tested on 32bit CentOS 6.0. In both cases they provide an appimage that runs on some systems. Change-Id: I84ca453e355eb2653d3cd703d2c6c8bb60340ec0
-rw-r--r--Swift/Packaging/appimage/Dockerfile19
-rw-r--r--Swift/Packaging/appimage/build.sh26
-rw-r--r--Swift/Packaging/appimage/centos6.sh25
-rw-r--r--Swift/Packaging/appimage/config.py1
-rwxr-xr-xSwift/Packaging/appimage/run.sh2
-rw-r--r--Swift/Packaging/appimage/swift.yml12
6 files changed, 85 insertions, 0 deletions
diff --git a/Swift/Packaging/appimage/Dockerfile b/Swift/Packaging/appimage/Dockerfile
new file mode 100644
index 0000000..37530d1
--- /dev/null
+++ b/Swift/Packaging/appimage/Dockerfile
@@ -0,0 +1,19 @@
+FROM centos:6
+
+RUN yum -y install epel-release wget
+RUN wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo && yum -y upgrade
+RUN yum -y install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ openssl-devel qt5-qtbase-devel qt5-qttools-libs-designercomponents qt5-qttools-devel qt5-qtwebkit-devel qt5-qtsvg-devel qt5-qttools-devel qt5-qttools-static qt5-qtmultimedia-devel qt5-qtwebchannel-devel qt5-qtimageformats-devel git patch qt5-qtmultimedia-devel qt5-qtx11extras-devel libtool
+RUN cd / && git clone https://github.com/swift/swift
+#RUN cd / && git clone --depth 1 https://github.com/probonopd/AppImageKit.git
+#RUN cd /AppImageKit && scl enable devtoolset-2 ./build.sh
+RUN cd / && wget https://github.com/probonopd/AppImageKit/releases/download/continuous/appimaged-x86_64.AppImage && chmod u+rx /appimaged-x86_64.AppImage
+RUN yum -y install fuse-libs libarchive
+RUN ln -s /usr/lib64/libarchive.so.2 /usr/lib64/libarchive.so.13
+RUN cd / && wget https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage && chmod u+x appimagetool-x86_64.AppImage
+RUN cd / && wget https://raw.githubusercontent.com/probonopd/AppImages/master/recipes/meta/Recipe
+RUN yum -y install desktop-file-utils
+ADD build.sh /build.sh
+RUN chmod u+x /build.sh
+#RUN cd /swift && scl enable devtoolset-2 './scons max_jobs=1'
+ADD swift.yml /swift.yml
+ADD config.py /swift/config.py
diff --git a/Swift/Packaging/appimage/build.sh b/Swift/Packaging/appimage/build.sh
new file mode 100644
index 0000000..53264fc
--- /dev/null
+++ b/Swift/Packaging/appimage/build.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+SIXTYFOUR=''
+cd /swift
+git pull --rebase
+mkdir -p /build
+#scl enable devtoolset-2 './scons max_jobs=1 SWIFT_INSTALLDIR=/build /build'
+./scons max_jobs=1 SWIFT_INSTALLDIR=/build /build
+cd /build
+ldd bin/swift-im | grep '=>' | awk '{print $3}' | xargs -I '{}' cp -v -L '{}' ./lib/ || true
+mkdir -p lib/qt5
+cp -r /usr/lib${SIXTYFOUR}/qt5/plugins ./lib/qt5/plugins
+cp -L /lib${SIXTYFOUR}/libudev.so.0 ./lib/
+cp /usr/lib${SIXTYFOUR}/libQt5XcbQpa.so* ./lib/
+cp -L /usr/local/gcc-4.9.4/lib/libstdc++.so.6 ./lib/
+mkdir -p /appstuff
+cd /appstuff
+bash -ex /Recipe /swift.yml
+cd /appstuff/Swift/Swift.AppDir
+rm AppRun
+wget -c https://github.com/probonopd/AppImageKit/releases/download/6/AppRun_6-i686 -O AppRun
+chmod +x AppRun
+cd ..
+rm appimagetool
+wget -c https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-i686.AppImage -O appimagetool
+chmod +x appimagetool
+./appimagetool Swift.AppDir Swift-i686.AppImage
diff --git a/Swift/Packaging/appimage/centos6.sh b/Swift/Packaging/appimage/centos6.sh
new file mode 100644
index 0000000..0f27819
--- /dev/null
+++ b/Swift/Packaging/appimage/centos6.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+yum -y install epel-release wget
+# devtools turns out not to work, but it's a step I did so I'm recording it.
+wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo && yum -y upgrade
+yum -y install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ openssl-devel qt5-qtbase-devel qt5-qttools-libs-designercomponents qt5-qttools-devel qt5-qtwebkit-devel qt5-qtsvg-devel qt5-qttools-devel qt5-qttools-static qt5-qtmultimedia-devel qt5-qtwebchannel-devel qt5-qtimageformats-devel git patch qt5-qtmultimedia-devel qt5-qtx11extras-devel libtool fuse-libs libarchive desktop-file-utils gcc-c++
+cd /
+wget https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-i686.AppImage
+chmod u+rx /appimagetool-i686.AppImage
+wget https://raw.githubusercontent.com/probonopd/AppImages/master/recipes/meta/Recipe
+yum -y install svn texinfo-tex flex zip libgcc.i686 glibc-devel.i686
+mkdir -p /usr/local/src
+cd /usr/local/src
+svn co svn://gcc.gnu.org/svn/gcc/tags/gcc_4_9_4_release/
+cd gcc_4_9_4_release
+./contrib/download_prerequisites
+mkdir release_build
+cd release_build
+../configure --prefix=/usr/local/gcc-4.9.4
+make
+make install
+echo "/usr/local/gcc-4.9.4/lib" > /etc/ld.so.conf.d/newgcc.conf
+echo 'export PATH=/usr/local/gcc-4.9.4/bin:$PATH' >> /etc/profile
+cd /
+git clone https://github.com/swift/swift
+# Run build.sh
diff --git a/Swift/Packaging/appimage/config.py b/Swift/Packaging/appimage/config.py
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/Swift/Packaging/appimage/config.py
@@ -0,0 +1 @@
+
diff --git a/Swift/Packaging/appimage/run.sh b/Swift/Packaging/appimage/run.sh
new file mode 100755
index 0000000..2d90490
--- /dev/null
+++ b/Swift/Packaging/appimage/run.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker build -t swiftbuild .
diff --git a/Swift/Packaging/appimage/swift.yml b/Swift/Packaging/appimage/swift.yml
new file mode 100644
index 0000000..b873baf
--- /dev/null
+++ b/Swift/Packaging/appimage/swift.yml
@@ -0,0 +1,12 @@
+app: Swift
+
+# ingredients:
+# script:
+# - cp -r /build/* usr/
+script:
+ - cp -r /build/* usr/
+ - strip usr/bin/*
+ - cp /build/share/applications/swift.desktop .
+ - cp /build/share/pixmaps/swift.xpm .
+# post:
+# - cp -r /build/lib/* usr/lib/