From ad7fcc8ef11cbe07d48354a5d45b09e4faa9b24d Mon Sep 17 00:00:00 2001 From: Kevin Smith Date: Tue, 7 Mar 2017 17:18:40 +0000 Subject: 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 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/ -- cgit v0.10.2-6-g49f6