diff --git a/linux-fresh/Dockerfile b/linux-fresh/Dockerfile new file mode 100644 index 0000000..fe8a9ce --- /dev/null +++ b/linux-fresh/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +MAINTAINER citra +RUN apt-get update && apt-get -y full-upgrade +RUN apt-get install -y build-essential libsdl2-dev qtbase5-dev libqt5opengl5-dev qtmultimedia5-dev qttools5-dev qttools5-dev-tools wget git ccache cmake diff --git a/linux-frozen/Dockerfile b/linux-frozen/Dockerfile new file mode 100644 index 0000000..c3a4686 --- /dev/null +++ b/linux-frozen/Dockerfile @@ -0,0 +1,15 @@ +FROM ubuntu:18.04 +MAINTAINER citra +RUN mkdir -p /tmp/pkgs +COPY install_package.py /tmp/pkgs +RUN apt-get update && apt-get install -y build-essential wget git python-launchpadlib ccache +RUN cd /tmp/pkgs && python2 install_package.py \ + libsdl2-dev 2.0.7+dfsg1-3ubuntu1 bionic \ + qtbase5-dev 5.9.3+dfsg-0ubuntu2 bionic \ + libqt5opengl5-dev 5.9.3+dfsg-0ubuntu2 bionic \ + qt5-qmltooling-plugins 5.9.3-0ubuntu1 bionic \ + qtdeclarative5-dev 5.9.3-0ubuntu1 bionic \ + qtmultimedia5-dev 5.9.3-0ubuntu3 bionic \ + libicu57 57.1-6ubuntu0.2 bionic \ + cmake 3.10.2-1ubuntu2 bionic +RUN rm -rf /tmp/pkgs diff --git a/linux-frozen/install_package.py b/linux-frozen/install_package.py new file mode 100755 index 0000000..54060be --- /dev/null +++ b/linux-frozen/install_package.py @@ -0,0 +1,52 @@ +#!/usr/bin/python + +import sys +import re +import subprocess +from launchpadlib.launchpad import Launchpad + +if sys.version_info[0] > 2: + xrange = range + +cachedir = '/.launchpadlib/cache/' +launchpad = Launchpad.login_anonymously( + 'grab build info', 'production', cachedir, version='devel') + +processed_packages = [] +deb_file_list = [] + + +def get_url(pkg, distro): + build_ref = launchpad.archives.getByReference(reference='ubuntu').getPublishedBinaries( + binary_name=pkg[0], distro_arch_series='https://api.launchpad.net/devel/ubuntu/' + distro + '/amd64', version=pkg[1], exact_match=True, order_by_date=True).entries[0] + build_link = build_ref['build_link'] + deb_name = '{}_{}_{}.deb'.format(pkg[0], pkg[1], 'amd64' if build_ref['architecture_specific'] else 'all') + deb_link = build_link + '/+files/' + deb_name + return [deb_link, deb_name] + + +def list_dependencies(deb_file): + t = subprocess.check_output( + ['bash', '-c', '(dpkg -I {} | grep -oP "^ Depends\: \K.*$") || true'.format(deb_file)]) + deps = [i.strip() for i in t.split(',')] + equals_re = re.compile(r'^(.*) \(= (.*)\)$') + return [equals_re.sub(r'\1=\2', i).split('=') for i in filter(equals_re.match, deps)] + + +def get_package(pkg, distro): + if pkg in processed_packages: + return + print('Getting {}...'.format(pkg[0])) + url = get_url(pkg, distro) + subprocess.check_call(['wget', '--quiet', url[0], '-O', url[1]]) + for dep in list_dependencies(url[1]): + get_package(dep, distro) + processed_packages.append(pkg) + deb_file_list.append('./' + url[1]) + + +for i in xrange(1, len(sys.argv), 3): + get_package([sys.argv[i], sys.argv[i + 1]], sys.argv[i + 2]) + +subprocess.check_call( + ['apt-get', 'install', '-y', '--force-yes'] + deb_file_list) diff --git a/linux-mingw/Dockerfile b/linux-mingw/Dockerfile new file mode 100644 index 0000000..234d553 --- /dev/null +++ b/linux-mingw/Dockerfile @@ -0,0 +1,7 @@ +FROM ubuntu:18.04 +MAINTAINER citra +RUN apt-get update && apt-get install -y gpg wget git python3-pip ccache g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 mingw-w64-tools cmake +# HACK: the repository does not contain necessary packages for 18.04, we'll use packages for 17.10 for now +RUN echo 'deb http://ppa.launchpad.net/tobydox/mingw-w64/ubuntu artful main ' > /etc/apt/sources.list.d/extras.list +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv '72931B477E22FEFD47F8DECE02FE5F12ADDE29B2' && apt-get update +RUN apt-get install -y sdl2-mingw-w64 qt5base-mingw-w64 qt5tools-mingw-w64 libsamplerate-mingw-w64 qt5multimedia-mingw-w64