diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2012-07-29 18:22:26 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2012-07-29 18:22:26 -0400 |
commit | 756056e5cbfe51dbdf270f88a8fe2e1d3fbba804 (patch) | |
tree | 06c83c302248b4241149065ab8d6150d095a05d8 | |
parent | 126d73453c3a886c58a627517f9f796f5a8123c9 (diff) | |
parent | 68aa0053f1ccfe28e60c6e23fa3cea017af33edc (diff) | |
download | abslibre-756056e5cbfe51dbdf270f88a8fe2e1d3fbba804.tar.gz abslibre-756056e5cbfe51dbdf270f88a8fe2e1d3fbba804.tar.bz2 abslibre-756056e5cbfe51dbdf270f88a8fe2e1d3fbba804.zip |
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/abslibre
206 files changed, 25551 insertions, 1954 deletions
diff --git a/.hgignore b/.hgignore new file mode 100644 index 000000000..d882633e0 --- /dev/null +++ b/.hgignore @@ -0,0 +1,12 @@ +# Shackra is using hg-git because mercurial is cool and Git sucks, so, DO NOT REMOVE THIS FILE PLEASE! +# God bless you ;) +syntax: glob +*.log +*~ +\#*\# +src/ +pkg/ +*.pkg.tar.* +*.src.tar.* +*.log +*.gz diff --git a/artistic/blender-spacenav-libre/PKGBUILD b/artistic/blender-spacenav-libre/PKGBUILD index 2c11b4d30..99ddd75ba 100644 --- a/artistic/blender-spacenav-libre/PKGBUILD +++ b/artistic/blender-spacenav-libre/PKGBUILD @@ -4,7 +4,7 @@ _pkgname=blender pkgname=blender-spacenav-libre pkgver=2.63a -pkgrel=2.1 +pkgrel=4 epoch=4 pkgdesc="A fully integrated 3D graphics creation suite, compiled with spacenav (without nonfree cuda-toolkit support)" arch=('i686' 'x86_64' 'mips64el') @@ -18,15 +18,19 @@ makedepends=('cmake' 'boost') replaces=("${_pkgname}") conflicts=("${_pkgname}" "${_pkgname}-libre") provides=("${_pkgname}=${pkgver}" "${_pkgname}-libre=${pkgver}") -options=(!strip) install=${_pkgname}.install -source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz ffmpeg-0.11.patch) -md5sums=('31a60b3ce5466d965cb7e2648995e092' '9e5649403e51654615d30b10bc460217') +source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz + ffmpeg-0.11.patch + boost-1.50.patch) +md5sums=('31a60b3ce5466d965cb7e2648995e092' + '9e5649403e51654615d30b10bc460217' + '0bab80da07d980c47b8ce3cb998edaef') build() { cd "${srcdir}/${_pkgname}-${pkgver}" patch -Np1 < "${srcdir}"/ffmpeg-0.11.patch + patch -Np1 < "${srcdir}"/boost-1.50.patch sed -i "/<libavcodec\/opt.h>/d" intern/ffmpeg/ffmpeg_compat.h sed -i "/<libavcodec\/opt.h>/d" source/blender/blenkernel/intern/writeffmpeg.c @@ -60,10 +64,6 @@ build() { make $MAKEFLAGS -# cp -rf "${srcdir}/${_pkgname}-${pkgver}"/release/plugins/* \ -# "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/ -# cd "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi -# chmod 755 bmake make } @@ -71,11 +71,4 @@ package() { cd "${srcdir}/${_pkgname}-${pkgver}/build" make DESTDIR="${pkgdir}" install python -m compileall "${pkgdir}/usr/share/blender" - -# install plugins -# install -d -m755 "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/{sequence,texture} -# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/sequence/*.so \ -# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/sequence/ -# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/texture/*.so \ -# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/texture/ } diff --git a/artistic/blender-spacenav-libre/boost-1.50.patch b/artistic/blender-spacenav-libre/boost-1.50.patch new file mode 100644 index 000000000..fa698a3a6 --- /dev/null +++ b/artistic/blender-spacenav-libre/boost-1.50.patch @@ -0,0 +1,42 @@ +diff -Naur a/intern/cycles/util/util_cache.cpp b/intern/cycles/util/util_cache.cpp +--- a/intern/cycles/util/util_cache.cpp 2012-05-10 11:44:09.000000000 -0300 ++++ b/intern/cycles/util/util_cache.cpp 2012-07-15 14:19:34.893238929 -0300 +@@ -26,8 +26,6 @@ + #include "util_path.h" + #include "util_types.h" + +-#define BOOST_FILESYSTEM_VERSION 2 +- + #include <boost/filesystem.hpp> + #include <boost/algorithm/string.hpp> + +@@ -117,7 +115,7 @@ + boost::filesystem::directory_iterator it(dir), it_end; + + for(; it != it_end; it++) { +- string filename = it->path().filename(); ++ string filename = it->path().filename().string(); + + if(boost::starts_with(filename, name)) + if(except.find(filename) == except.end()) +diff -Naur blender-2.63a/intern/cycles/util/util_path.cpp blender-2.63a-new/intern/cycles/util/util_path.cpp +--- a/intern/cycles/util/util_path.cpp 2012-05-10 11:44:09.000000000 -0300 ++++ b/intern/cycles/util/util_path.cpp 2012-07-15 14:19:14.126293394 -0300 +@@ -26,8 +26,6 @@ + + #include <stdio.h> + +-#define BOOST_FILESYSTEM_VERSION 2 +- + #include <boost/filesystem.hpp> + #include <boost/algorithm/string.hpp> + +@@ -60,7 +58,7 @@ + + string path_filename(const string& path) + { +- return boost::filesystem::path(path).filename(); ++ return boost::filesystem::path(path).filename().string(); + } + + string path_dirname(const string& path) diff --git a/artistic/spacenavd/PKGBUILD b/artistic/spacenavd/PKGBUILD new file mode 100644 index 000000000..cf8a43c32 --- /dev/null +++ b/artistic/spacenavd/PKGBUILD @@ -0,0 +1,30 @@ +# Contributor: Jan Hambrecht <jaham at gmx dot net> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> + +pkgname=spacenavd +pkgver=0.5 +pkgrel=2 +pkgdesc="The spacenav project provides a free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called 'space navigator', 'space pilot', 'space traveller', etc)." +arch=('i686' 'x86_64' 'mips64el') +url="http://spacenav.sourceforge.net/" +license=('GPL') +depends=('libx11') +backup=('etc/spnavrc') +source=(http://downloads.sourceforge.net/spacenav/$pkgname-$pkgver.tar.gz + spacenavd + spacenav.service) + +md5sums=('0bb21da5315bd376aa508157a9455aaa' + '27a739300d4de07920879af2d2bdd47f' + 'b404c8021254636b861651a7a48d17a6') + +build() { + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=$pkgdir/usr + make || return 1 + make DESTDIR=$pkgdir install || return 1 + # for initscript service + install -D -m755 $srcdir/spacenavd $pkgdir/etc/rc.d/spacenavd || return 1 + # for systend service + install -D -m755 $srcdir/spacenav.service $pkgdir/usr/lib/systemd/system/spacenav.service || return 1 +} diff --git a/artistic/spacenavd/spacenav.service b/artistic/spacenavd/spacenav.service new file mode 100644 index 000000000..30e8019e9 --- /dev/null +++ b/artistic/spacenavd/spacenav.service @@ -0,0 +1,10 @@ +[Unit] +Description=Spacenavigator Daemon Service + +[Service] +Type=forking +ExecStart=/usr/bin/spacenavd + +[Install] +WantedBy=multi-user.target + diff --git a/artistic/spacenavd/spacenavd b/artistic/spacenavd/spacenavd new file mode 100644 index 000000000..61946197c --- /dev/null +++ b/artistic/spacenavd/spacenavd @@ -0,0 +1,38 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +DAEMON=/usr/bin/spacenavd + +PID=`pidof -o %PPID $DAEMON` +case "$1" in + start) + stat_busy "Starting Spacenavigator Daemon" + [ -z "$PID" ] && $DAEMON + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon spacenavd + stat_done + fi + ;; + stop) + stat_busy "Stopping Spacenavigator Daemon" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon spacenavd + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/libre/atool-libre/PKGBUILD b/libre/atool-libre/PKGBUILD index 7ec4d7c1e..ea1dfec52 100644 --- a/libre/atool-libre/PKGBUILD +++ b/libre/atool-libre/PKGBUILD @@ -3,12 +3,12 @@ # Contributor: leif_thande <leif.thande@gmail.com> # Contributor: tranquility <trankas@gmail.com> # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> -# Contributor (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Contributor (Parabola): Márcio Silva <coadde@lavabit.com> _pkgname=atool pkgname=atool-libre -pkgver=0.38.0 -pkgrel=3 +pkgver=0.39.0 +pkgrel=1 pkgdesc="A script for managing file archives of various types" arch=('any') url="http://www.nongnu.org/atool/" @@ -29,7 +29,7 @@ optdepends=('bzip2: for using atool with bzip2 compressed archives' 'unzip: for using atool for unpacking archives') source=(http://savannah.nongnu.org/download/$_pkgname/$_pkgname-$pkgver.tar.gz) -sha256sums=('b967195facbe5e7c6535ac117aaa7f633b0eca174137c30c36a5200efb80047d') +sha256sums=('aaf60095884abb872e25f8e919a8a63d0dabaeca46faeba87d12812d6efc703b') build() { diff --git a/libre/atool-libre/ChangeLog b/libre/atool-libre/atool.changelog index aec63e70f..ce0b12c2b 100644 --- a/libre/atool-libre/ChangeLog +++ b/libre/atool-libre/atool.changelog @@ -1,3 +1,13 @@ +2012-04-19 Jaroslav Lichtblau <dragonlord@aur.archlinux.org> + * atool 0.39.0-1 + +2012-02-21 Jaroslav Lichtblau <dragonlord@aur.archlinux.org> + * atool 0.38.0-2 + * signing package + +2011-08-20 Jaroslav Lichtblau <dragonlord@aur.archlinux.org> + * Updated to major version 0.38.0 + 2009-08-16 Jaroslav Lichtblau <dragonlord@aur.archlinux.org> * Updated to major version 0.37.0 @@ -6,4 +16,3 @@ 2008-10-05 Jaroslav Lichtblau <dragonlord@aur.archlinux.org> * Moved to [community] repo - diff --git a/libre/audacious-plugins-libre/PKGBUILD b/libre/audacious-plugins-libre/PKGBUILD index 51668c454..59011736c 100644 --- a/libre/audacious-plugins-libre/PKGBUILD +++ b/libre/audacious-plugins-libre/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 162794 2012-06-30 14:17:02Z bisson $ +# $Id: PKGBUILD 164182 2012-07-27 00:15:41Z bisson $ # Contributor: Alexander Fehr <pizzapunk gmail com> # Contributor: William Rea <sillywilly@gmail.com> # Maintainer: Gaetan Bisson <bisson@archlinux.org> @@ -7,8 +7,8 @@ _pkgname=audacious-plugins pkgname=audacious-plugins-libre -pkgver=3.2.4 -pkgrel=2 +pkgver=3.3 +pkgrel=1 pkgdesc='Plugins for Audacious without unfree plugins' url='http://audacious-media-player.org/' arch=('i686' 'x86_64') @@ -60,7 +60,7 @@ optdepends=('oss: Open Sound System v4 output' 'libcue: CUE playlist format') source=("http://distfiles.audacious-media-player.org/${_pkgname}-${pkgver}.tar.bz2") -sha1sums=('7538a0391504ce4a92967dc7c5bd4948751efa91') +sha1sums=('2ce65a9d9a2d5d5cbe41befa70c89f36fff43286') build() { # Retrieve upstream & remove plugin 'psf' due to issues mentioned above. sed -i s/enable_psf=yes/enable_psf=no/ ${_pkgname}-$pkgver/configure diff --git a/libre/blender-libre/PKGBUILD b/libre/blender-libre/PKGBUILD index 5dd14405d..2788e21d9 100644 --- a/libre/blender-libre/PKGBUILD +++ b/libre/blender-libre/PKGBUILD @@ -4,7 +4,7 @@ _pkgname=blender pkgname=blender-libre pkgver=2.63a -pkgrel=2.1 +pkgrel=4 epoch=4 pkgdesc="A fully integrated 3D graphics creation suite (without nonfree cuda-toolkit support)" arch=('i686' 'x86_64' 'mips64el') @@ -18,15 +18,19 @@ makedepends=('cmake' 'boost') replaces=("${_pkgname}") conflicts=("${_pkgname}") provides=("${_pkgname}=${pkgver}") -options=(!strip) install=${_pkgname}.install -source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz ffmpeg-0.11.patch) -md5sums=('31a60b3ce5466d965cb7e2648995e092' '9e5649403e51654615d30b10bc460217') +source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz + ffmpeg-0.11.patch + boost-1.50.patch) +md5sums=('31a60b3ce5466d965cb7e2648995e092' + '9e5649403e51654615d30b10bc460217' + '0bab80da07d980c47b8ce3cb998edaef') build() { cd "${srcdir}/${_pkgname}-${pkgver}" patch -Np1 < "${srcdir}"/ffmpeg-0.11.patch + patch -Np1 < "${srcdir}"/boost-1.50.patch sed -i "/<libavcodec\/opt.h>/d" intern/ffmpeg/ffmpeg_compat.h sed -i "/<libavcodec\/opt.h>/d" source/blender/blenkernel/intern/writeffmpeg.c @@ -60,10 +64,6 @@ build() { make $MAKEFLAGS -# cp -rf "${srcdir}/${_pkgname}-${pkgver}"/release/plugins/* \ -# "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/ -# cd "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi -# chmod 755 bmake make } @@ -71,11 +71,4 @@ package() { cd "${srcdir}/${_pkgname}-${pkgver}/build" make DESTDIR="${pkgdir}" install python -m compileall "${pkgdir}/usr/share/blender" - -# install plugins -# install -d -m755 "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/{sequence,texture} -# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/sequence/*.so \ -# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/sequence/ -# cp "${srcdir}/${_pkgname}-${pkgver}"/source/blender/blenpluginapi/texture/*.so \ -# "${pkgdir}"/usr/share/blender/${pkgver%[a-z]}/plugins/texture/ } diff --git a/libre/blender-libre/boost-1.50.patch b/libre/blender-libre/boost-1.50.patch new file mode 100644 index 000000000..fa698a3a6 --- /dev/null +++ b/libre/blender-libre/boost-1.50.patch @@ -0,0 +1,42 @@ +diff -Naur a/intern/cycles/util/util_cache.cpp b/intern/cycles/util/util_cache.cpp +--- a/intern/cycles/util/util_cache.cpp 2012-05-10 11:44:09.000000000 -0300 ++++ b/intern/cycles/util/util_cache.cpp 2012-07-15 14:19:34.893238929 -0300 +@@ -26,8 +26,6 @@ + #include "util_path.h" + #include "util_types.h" + +-#define BOOST_FILESYSTEM_VERSION 2 +- + #include <boost/filesystem.hpp> + #include <boost/algorithm/string.hpp> + +@@ -117,7 +115,7 @@ + boost::filesystem::directory_iterator it(dir), it_end; + + for(; it != it_end; it++) { +- string filename = it->path().filename(); ++ string filename = it->path().filename().string(); + + if(boost::starts_with(filename, name)) + if(except.find(filename) == except.end()) +diff -Naur blender-2.63a/intern/cycles/util/util_path.cpp blender-2.63a-new/intern/cycles/util/util_path.cpp +--- a/intern/cycles/util/util_path.cpp 2012-05-10 11:44:09.000000000 -0300 ++++ b/intern/cycles/util/util_path.cpp 2012-07-15 14:19:14.126293394 -0300 +@@ -26,8 +26,6 @@ + + #include <stdio.h> + +-#define BOOST_FILESYSTEM_VERSION 2 +- + #include <boost/filesystem.hpp> + #include <boost/algorithm/string.hpp> + +@@ -60,7 +58,7 @@ + + string path_filename(const string& path) + { +- return boost::filesystem::path(path).filename(); ++ return boost::filesystem::path(path).filename().string(); + } + + string path_dirname(const string& path) diff --git a/libre/crosstool-ng/PKGBUILD b/libre/crosstool-ng/PKGBUILD index 2aa38fca6..425e3d9e4 100644 --- a/libre/crosstool-ng/PKGBUILD +++ b/libre/crosstool-ng/PKGBUILD @@ -1,8 +1,9 @@ # Contributor: jwwolf <jwwolf+arch@gmail.com> # Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar> +# Contributor (Parabola): Márcio Silva <coadde@lavabit.com> pkgname=crosstool-ng -pkgver=1.15.2 +pkgver=1.15.3 pkgrel=1 pkgdesc="A versatile cross toolchain generator (eglibc addons patch)" arch=('i686' 'x86_64') @@ -26,4 +27,4 @@ package() { cd $srcdir/$pkgname-$pkgver make DESTDIR=$pkgdir install } -md5sums=('0d03314debb73de37a72014632bf1ab3') +md5sums=('a56d55f7173161b5200c144cdff6f564') diff --git a/libre/cups-filters-libre/PKGBUILD b/libre/cups-filters-libre/PKGBUILD index 662ed4d1a..1f4ba1f6e 100644 --- a/libre/cups-filters-libre/PKGBUILD +++ b/libre/cups-filters-libre/PKGBUILD @@ -1,37 +1,51 @@ -# $Id$ +# $Id: PKGBUILD 163769 2012-07-19 15:52:39Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgname=cups-filters-libre _pkgname=cups-filters -pkgver=1.0.18 -pkgrel=3 +pkgver=1.0.19 +pkgrel=1 pkgdesc="OpenPrinting CUPS Filters" arch=('i686' 'x86_64') url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting" license=('GPL') depends=('lcms2' 'poppler>=0.20.1') -makedepends=('ghostscript') +makedepends=('ghostscript' 'ttf-dejavu') # ttf-dejavu for make check optdepends=('ghostscript: for non-PostScript printers to print with CUPS to convert PostScript to raster images' 'foomatic-db: drivers use Ghostscript to convert PostScript to a printable form directly' 'foomatic-db-engine: drivers use Ghostscript to convert PostScript to a printable form directly') backup=(etc/fonts/conf.d/99pdftoopvp.conf) -source=(http://www.openprinting.org/download/cups-filters/$_pkgname-$pkgver.tar.gz) -md5sums=(63972b426b7224915cdbb42b2a937374'') - +options=(!libtool) +source=(http://www.openprinting.org/download/cups-filters/$_pkgname-$pkgver.tar.gz + buildfix_poppler.diff + buildfix_dlopen.diff) +md5sums=('e3c9ad58ec005eda2f0ac2f3190a63b3' + 'b3d5b60a50568d06d1ef43c285ce7802' + '8b0c8874ef5c985287cada55db75d8d1') replaces=("${_pkgname}") conflicts=("${_pkgname}") provides=("${_pkgname}=${pkgver}") build() { cd "$srcdir/$_pkgname-$pkgver" - ./configure --prefix=/usr --sysconfdir=/etc + # https://bugs.linuxfoundation.org/show_bug.cgi?id=1055 + patch -Np0 -i ${srcdir}/buildfix_poppler.diff + patch -Np0 -i ${srcdir}/buildfix_dlopen.diff + autoreconf -v + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --with-test-font-path=/usr/share/fonts/TTF/DejaVuSans.ttf make } +check() { + cd "$srcdir/$_pkgname-$pkgver" + make -k check +} + package() { cd "$srcdir/$_pkgname-$pkgver" - #make DESTDIR="$pkgdir/" install - make install BUILDROOT="$pkgdir/" + make DESTDIR="$pkgdir/" install # drop static lib rm -f ${pkgdir}/usr/lib/*.a } diff --git a/libre/cups-filters-libre/buildfix_dlopen.diff b/libre/cups-filters-libre/buildfix_dlopen.diff new file mode 100644 index 000000000..eea5f506c --- /dev/null +++ b/libre/cups-filters-libre/buildfix_dlopen.diff @@ -0,0 +1,31 @@ +=== modified file 'Makefile.am' +--- Makefile.am 2012-06-22 15:40:53 +0000 ++++ Makefile.am 2012-07-19 09:36:30 +0000 +@@ -329,7 +329,8 @@ + $(FREETYPE_LIBS) \ + $(FONTCONFIG_LIBS) \ + $(LIBPNG_LIBS) \ +- $(POPPLER_LIBS) ++ $(POPPLER_LIBS) \ ++ $(DLOPEN_LIBS) + + EXTRA_DIST += $(pkgfontconfig_DATA) + +=== modified file 'configure.ac' +--- configure.ac 2012-07-19 14:02:32 +0000 ++++ configure.ac 2012-07-19 14:39:25 +0000 +@@ -110,6 +110,13 @@ + AC_DEFINE(PDFTOPDF, [], [Needed for pdftopdf filter compilation]) + AC_DEFINE_DIR(BANNERTOPDF_DATADIR, "{CUPS_DATADIR}/data", [Directory where bannertopdf finds its data files (PDF templates)]) + ++AC_SEARCH_LIBS([dlopen], ++ [dl], ++ DLOPEN_LIBS="-ldl", ++ AC_MSG_ERROR([unable to find the dlopen() function]) ++) ++AC_SUBST(DLOPEN_LIBS) ++ + # ====================== + # Check system functions + # ====================== + diff --git a/libre/cups-filters-libre/buildfix_poppler.diff b/libre/cups-filters-libre/buildfix_poppler.diff new file mode 100644 index 000000000..6f3cbc0b3 --- /dev/null +++ b/libre/cups-filters-libre/buildfix_poppler.diff @@ -0,0 +1,224 @@ +=== modified file 'NEWS' +--- NEWS 2012-07-11 19:48:23 +0000 ++++ NEWS 2012-07-19 14:02:32 +0000 +@@ -1,6 +1,11 @@ +-NEWS - OpenPrinting CUPS Filters v1.0.19 - 2012-07-11 ++NEWS - OpenPrinting CUPS Filters v1.0.20 - 2012-07-19 + ----------------------------------------------------- + ++CHANGES IN V1.0.20 ++ ++ - Made the Poppler-based filters pdftopdf and pdftoopvp build with ++ both Poppler 0.18.x and 0.20.x (Bug #1055). ++ + CHANGES IN V1.0.19 + + - Fixes according to Coverity scan results (Bug #1054). + +=== modified file 'configure.ac' +--- configure.ac 2012-07-11 19:48:23 +0000 ++++ configure.ac 2012-07-19 14:02:32 +0000 +@@ -202,6 +202,7 @@ + # ================ + POPPLER_INCLUDEDIR=`pkg-config poppler --variable includedir` + AC_CHECK_HEADER([UGooString.h], [AC_DEFINE([HAVE_UGOOSTRING_H],,[Have UGooString.h])], []) ++AC_CHECK_HEADER([poppler/cpp/poppler-version.h], [AC_DEFINE([HAVE_CPP_POPPLER_VERSION_H],,[Define if you have Poppler's "cpp/poppler-version.h" header file.])], []) + # FIXME: + # Use proper c compile check not greps and then just link again poppler with all the features + # instead of this and all the libs. + +=== modified file 'filter/PDFError.h' +--- filter/PDFError.h 2012-03-29 14:06:07 +0000 ++++ filter/PDFError.h 2012-07-19 14:02:32 +0000 +@@ -31,6 +31,9 @@ + #include <config.h> + #include <stdarg.h> + #include <Error.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + + #if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 19 + #define pdfError(pos,...) error(errInternal,pos,__VA_ARGS__) + +=== modified file 'filter/pdftoijs.cxx' +--- filter/pdftoijs.cxx 2012-06-04 16:46:44 +0000 ++++ filter/pdftoijs.cxx 2012-07-19 14:02:32 +0000 +@@ -30,6 +30,9 @@ + #include <config.h> + #include <stdio.h> + #include <stdlib.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include <goo/GooString.h> + #include <goo/gmem.h> + #include <Object.h> + +=== modified file 'filter/pdftoopvp/OPVPError.h' +--- filter/pdftoopvp/OPVPError.h 2012-03-29 14:06:07 +0000 ++++ filter/pdftoopvp/OPVPError.h 2012-07-19 14:02:32 +0000 +@@ -31,6 +31,9 @@ + #include <config.h> + #include <stdarg.h> + #include <Error.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + + #if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 19 + #define opvpError(pos,...) error(errInternal,pos,__VA_ARGS__) + +=== modified file 'filter/pdftoopvp/OPVPOutputDev.cxx' +--- filter/pdftoopvp/OPVPOutputDev.cxx 2012-03-29 09:42:35 +0000 ++++ filter/pdftoopvp/OPVPOutputDev.cxx 2012-07-19 14:02:32 +0000 +@@ -8,6 +8,9 @@ + //======================================================================== + + #include <config.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + + #ifdef USE_GCC_PRAGMAS + #pragma implementation + +=== modified file 'filter/pdftoopvp/oprs/OPVPSplash.cxx' +--- filter/pdftoopvp/oprs/OPVPSplash.cxx 2012-03-29 09:42:35 +0000 ++++ filter/pdftoopvp/oprs/OPVPSplash.cxx 2012-07-19 14:02:32 +0000 +@@ -5,6 +5,9 @@ + //======================================================================== + + #include <config.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + + #ifdef USE_GCC_PRAGMAS + #pragma implementation + +=== modified file 'filter/pdftoopvp/oprs/OPVPSplashState.cxx' +--- filter/pdftoopvp/oprs/OPVPSplashState.cxx 2012-03-29 09:42:35 +0000 ++++ filter/pdftoopvp/oprs/OPVPSplashState.cxx 2012-07-19 14:02:32 +0000 +@@ -11,6 +11,9 @@ + #endif + + #include <string.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "goo/gmem.h" + #include "splash/SplashPattern.h" + #include "splash/SplashScreen.h" + +=== modified file 'filter/pdftoopvp/oprs/OPVPSplashState.h' +--- filter/pdftoopvp/oprs/OPVPSplashState.h 2012-03-29 09:42:35 +0000 ++++ filter/pdftoopvp/oprs/OPVPSplashState.h 2012-07-19 14:02:32 +0000 +@@ -11,6 +11,9 @@ + #pragma interface + #endif + ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "splash/SplashTypes.h" + #include "splash/SplashState.h" + #include "splash/Splash.h" + +=== modified file 'filter/pdftoopvp/oprs/OPVPSplashXPath.cxx' +--- filter/pdftoopvp/oprs/OPVPSplashXPath.cxx 2012-03-29 09:42:35 +0000 ++++ filter/pdftoopvp/oprs/OPVPSplashXPath.cxx 2012-07-19 14:02:32 +0000 +@@ -1,5 +1,8 @@ + #include <config.h> + #include <stdio.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "splash/Splash.h" + #include "splash/SplashMath.h" + #include "OPVPSplashClip.h" + +=== modified file 'filter/pdftoopvp/oprs/OPVPSplashXPath.h' +--- filter/pdftoopvp/oprs/OPVPSplashXPath.h 2012-03-29 09:42:35 +0000 ++++ filter/pdftoopvp/oprs/OPVPSplashXPath.h 2012-07-19 14:02:32 +0000 +@@ -2,6 +2,9 @@ + #define OPVPSPLASHXPATH_H + + #include <config.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "splash/SplashXPath.h" + #include "OPVPSplashPath.h" + #include "OPVPSplashState.h" + +=== modified file 'filter/pdftoopvp/pdftoopvp.cxx' +--- filter/pdftoopvp/pdftoopvp.cxx 2012-06-04 16:46:44 +0000 ++++ filter/pdftoopvp/pdftoopvp.cxx 2012-07-19 14:02:32 +0000 +@@ -13,6 +13,9 @@ + #include <unistd.h> + #include <ctype.h> + #include <math.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "goo/GooString.h" + #define GSTRING_H // for old GooString.h + #include "goo/gmem.h" + +=== modified file 'filter/pdftopdf/P2PError.h' +--- filter/pdftopdf/P2PError.h 2012-03-29 14:06:07 +0000 ++++ filter/pdftopdf/P2PError.h 2012-07-19 14:02:32 +0000 +@@ -31,6 +31,9 @@ + #include <config.h> + #include <stdarg.h> + #include <Error.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + + #if POPPLER_VERSION_MAJOR > 0 || POPPLER_VERSION_MINOR >= 19 + #define p2pError(pos,...) error(errInternal,pos,__VA_ARGS__) + +=== modified file 'filter/pdftopdf/P2PFont.cxx' +--- filter/pdftopdf/P2PFont.cxx 2012-03-29 09:42:35 +0000 ++++ filter/pdftopdf/P2PFont.cxx 2012-07-19 14:02:32 +0000 +@@ -32,6 +32,9 @@ + #include <sys/types.h> + #include <unistd.h> + #include <fcntl.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "goo/gmem.h" + #include "P2PFont.h" + #include "GfxFont.h" + +=== modified file 'filter/pdftopdf/pdftopdf.cxx' +--- filter/pdftopdf/pdftopdf.cxx 2012-06-04 16:46:44 +0000 ++++ filter/pdftopdf/pdftopdf.cxx 2012-07-19 14:02:32 +0000 +@@ -29,6 +29,9 @@ + #include <config.h> + #include <stdio.h> + #include <stdlib.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "goo/GooString.h" + #include "goo/gmem.h" + #include "Object.h" + +=== modified file 'filter/pdftoraster.cxx' +--- filter/pdftoraster.cxx 2012-06-04 16:46:44 +0000 ++++ filter/pdftoraster.cxx 2012-07-19 14:02:32 +0000 +@@ -31,6 +31,9 @@ + #include <config.h> + #include <stdio.h> + #include <stdlib.h> ++#ifdef HAVE_CPP_POPPLER_VERSION_H ++#include "cpp/poppler-version.h" ++#endif + #include "goo/GooString.h" + #include "goo/gmem.h" + #include "Object.h" + diff --git a/libre/dvdrip-libre/PKGBUILD b/libre/dvdrip-libre/PKGBUILD index b9cd0c8ff..2069f1c8a 100644 --- a/libre/dvdrip-libre/PKGBUILD +++ b/libre/dvdrip-libre/PKGBUILD @@ -1,12 +1,12 @@ # $Id$ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Fredrik Hammar <Horney_C86@Hotmail.com> -# Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> _pkgname=dvdrip pkgname=dvdrip-libre pkgver=0.98.11 -pkgrel=10 +pkgrel=10.1 pkgdesc="A Gtk frontend for transcode writen in Perl, without opcional hal and unfree rar dependencies" arch=('i686' 'x86_64') license=('custom') diff --git a/libre/epdfview-libre/PKGBUILD b/libre/epdfview-libre/PKGBUILD index 9923ad1cf..28c77eed8 100644 --- a/libre/epdfview-libre/PKGBUILD +++ b/libre/epdfview-libre/PKGBUILD @@ -3,11 +3,12 @@ # Maintainer: schuay <jakob.gruber@gmail.com> # Contributor: Tom K <tomk@runbox.com> # Contributor: Thayer Williams <thayer@archlinux.org> +# Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> pkgname=epdfview-libre _pkgname=epdfview pkgver=0.1.8 -pkgrel=3 +pkgrel=4 pkgdesc="A free lightweight PDF document viewer." url="http://www.emma-soft.com/projects/epdfview/" arch=('i686' 'x86_64' 'mips64el') @@ -20,9 +21,11 @@ replaces=('epdfview') install='epdfview.install' source=("http://www.emma-soft.com/projects/${_pkgname}/chrome/site/releases/${_pkgname}-${pkgver}.tar.bz2" "${_pkgname}.desktop.patch" + "glib2_headers.patch" "0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch") md5sums=('e50285b01612169b2594fea375f53ae4' 'fbf22bbabdbb7544db615ac5775d57e2' + '41b30f53f20472cbc2fcd4eae161125e' '7f9ea101a41f5b4e999fd024f423d41f') build() { @@ -30,6 +33,7 @@ build() { patch -Np0 -i "${srcdir}/${_pkgname}.desktop.patch" patch -Np1 -i "${srcdir}/0001-When-using-Poppler-0.17.0-I-needed-to-swap-the-blue-.patch" + patch -Np1 -i "${srcdir}/glib2_headers.patch" # FS#30116 # Use xdg-open as default browser. sed -r '/DEFAULT_EXTERNAL_BROWSER_COMMAND_LINE/s/firefox[^ ]*/xdg-open/' -i src/Config.cxx diff --git a/libre/epdfview-libre/glib2_headers.patch b/libre/epdfview-libre/glib2_headers.patch new file mode 100644 index 000000000..b5bc5c211 --- /dev/null +++ b/libre/epdfview-libre/glib2_headers.patch @@ -0,0 +1,12 @@ +diff --git a/src/gtk/StockIcons.h b/src/gtk/StockIcons.h +index c142a7a..58fcf2e 100644 +--- a/src/gtk/StockIcons.h ++++ b/src/gtk/StockIcons.h +@@ -18,7 +18,7 @@ + #if !defined (__STOCK_ICONS_H__) + #define __STOCK_ICONS_H__ + +-#include <glib/gmacros.h> ++#include <glib.h> + + G_BEGIN_DECLS diff --git a/libre/filesystem/PKGBUILD b/libre/filesystem/PKGBUILD index 215001c4e..add2fa659 100644 --- a/libre/filesystem/PKGBUILD +++ b/libre/filesystem/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 162111 2012-06-20 09:33:31Z tomegun $ +# $Id: PKGBUILD 163827 2012-07-20 23:47:38Z tomegun $ # Maintainer: Tom Gundersen <teg@jklm.no> # Maintainer (Parabola): Nicolás Reynolds <fauno@kiwwwi.com.ar> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> pkgname=filesystem -pkgver=2012.6 -pkgrel=4 +pkgver=2012.7 +pkgrel=1 pkgdesc='Base filesystem for Parabola' arch=('any') license=('GPL') @@ -87,7 +87,7 @@ md5sums=('45940618da782cc391c59f88ab3333c3' '8a9042a2cedf6b6b47eb8973f14289cb' 'b8355d9d2782f424f4cedcf682651be0' 'ca716f853860199c1286e7939b2f2666' - 'e5d8323a4dbee7a6d0d2a19cbf4b819f' + '1745349eb24ed21b4cfaa6f423bddb76' '7bc65f234dfb6abf24e7c3b03e86f4ff' 'd41d8cd98f00b204e9800998ecf8427e' '0e145e18fea8fd190b30d45764f5707c' diff --git a/libre/filesystem/crypttab b/libre/filesystem/crypttab index dd6994b5a..195945a74 100644 --- a/libre/filesystem/crypttab +++ b/libre/filesystem/crypttab @@ -1,33 +1,17 @@ -# crypttab: Mappings for encrypted partitions +# crypttab: mappings for encrypted partitions # # Each mapped device will be created in /dev/mapper, so your /etc/fstab -# should use the /dev/mapper/{NAME} paths for encrypted devices. +# should use the /dev/mapper/<name> paths for encrypted devices. # -# Each PASSWORD field can be an absolute pathname to a key file (starting -# with a slash, recommended) or a literal string that will be used as -# a passphrase. To use special characters in the passphrase, surround it -# by quotes, the usual bash quoting rules apply. -# There are two special keywords that cannot be used as passphrases: -# - ASK ask for a passphrase on boot -# - SWAP use a random key and create a swapspace afterwards -# WARNING: use the SWAP keyword carefully, as it overwrites the data -# on the specified partition -# -# To create a key file: -# hashalot -n 32 ripemd160 >/etc/crytfs.key -# or -# dd if=/dev/urandom of=/etc/cryptfs.key bs=256 count=1 -# -# To pass additional options to cryptsetup for non-LUKS partitions, use the -# fourth column. +# The Arch specific syntax has been deprecated, see crypttab(5) for the +# new supported syntax. # # NOTE: Do not list your root (/) partition here, it must be set up # beforehand by the initramfs (/etc/mkinitcpio.conf). - -# NAME SOURCE DEVICE PASSWORD OPTIONS -#home /dev/hda4 mypassword -#data1 /dev/hda3 "my \"password\"" -#data2 /dev/hda5 /etc/cryptfs.key -#swap /dev/hdx4 SWAP -c aes-cbc-essiv:sha256 -s 256 -#vol /dev/hdb7 ASK +# <name> <device> <password> <options> +# home /dev/hda4 /etc/mypassword1 +# data1 /dev/hda3 /etc/mypassword2 +# data2 /dev/hda5 /etc/cryptfs.key +# swap /dev/hdx4 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256 +# vol /dev/hdb7 none diff --git a/libre/foomatic-filters-libre/PKGBUILD b/libre/foomatic-filters-libre/PKGBUILD index 87b155c0c..73a7af6c4 100644 --- a/libre/foomatic-filters-libre/PKGBUILD +++ b/libre/foomatic-filters-libre/PKGBUILD @@ -5,8 +5,8 @@ pkgbase="foomatic" pkgname=('foomatic-filters-libre') arch=('i686' 'x86_64' 'mips64el') # needs to be changed in the subpackages when makepkg will support it -_snapdate=20120626 -_filtersver=4.0.16 +_snapdate=20120712 +_filtersver=4.0.17 pkgver=${_filtersver}_${_snapdate} pkgrel=1 epoch=1 @@ -14,7 +14,7 @@ makedepends=('cups' 'perl' 'libxml2' 'enscript' 'perl' 'net-snmp' 'bash') source=(http://www.openprinting.org/download/foomatic/$pkgbase-filters-${_filtersver}.tar.gz) url="http://www.linuxprinting.org/foomatic.html" options=('!emptydirs') -md5sums=('ec907d9ea17e03bccb91db66e9470586') +md5sums=('b05f5dcbfe359f198eef3df5b283d896') package_foomatic-filters-libre() { diff --git a/libre/h-client/PKGBUILD b/libre/h-client/PKGBUILD index e77a2437e..821517397 100644 --- a/libre/h-client/PKGBUILD +++ b/libre/h-client/PKGBUILD @@ -1,10 +1,10 @@ # Maintainer: Michał Masłowski <mtjm@mtjm.eu> pkgname=h-client -_pkgver=0.0a0.dev-r107 +_pkgver=0.0a0.dev-r118 pkgver=${_pkgver/-/.} pkgrel=1 -pkgdesc="A client for an h-source server (such as http://www.h-node.com)" +pkgdesc="A client for an h-source server (such as http://www.h-node.org/)" arch=('any') url="https://savannah.nongnu.org/projects/h-client/" license=('GPL3') @@ -12,8 +12,9 @@ depends=('python2' 'python2-distribute' 'python-pycurl' 'pygtk') options=(!emptydirs) # Official source is in SVN, this is made by "python2 setup.py sdist" # on a machine having Subversion 1.6.x (e.g. on Trisquel 4.0). -source=("https://mtjm.eu/releases/hclient-${_pkgver}.tar.gz") -sha512sums=('d820871fcf3f92e6e31aa02273ae413bf066524eaf245f1d4cf7dc8b0ba5799eb07bf86dd28861c8878c73147bbcae563668cb3a6fa9c3382c751e6717d85f0c') +source=("https://mtjm.eu/releases/hclient-${_pkgver}.tar.gz"{,.sig}) +sha512sums=('af962c67b363435cfa74f7c420760b0254ba3e7c1e6611d5ff276e6595e30dadf1b5d588cd2469647efdbb0099f70a027b9f65d8aeefc70ea712c9ef5d7cbace' + '7d4746297c4a0bd328b1e57f596e827b4a12d2f703d074f7e87ea0c9e3f747c2cfd48da971e81fdaf27939d463b359fac4638820f08486ef28502e769168692d') build() { cd "$srcdir/hclient-${_pkgver}" diff --git a/libre/hardinfo/.directory b/libre/hardinfo/.directory deleted file mode 100644 index 725259ee6..000000000 --- a/libre/hardinfo/.directory +++ /dev/null @@ -1,2 +0,0 @@ -[Dolphin] -Timestamp=2012,4,11,16,57,42 diff --git a/libre/hardinfo/ChangeLog b/libre/hardinfo/ChangeLog deleted file mode 100644 index faf242a7b..000000000 --- a/libre/hardinfo/ChangeLog +++ /dev/null @@ -1,20 +0,0 @@ -2009-04-06 Eric Belanger <eric@archlinux.org> - - * hardinfo 0.5.1-1 - * Upstream update - -2009-03-29 Eric Belanger <eric@archlinux.org> - - * hardinfo 0.5c-1 - * Upstream update - -2008-08-13 Eric Belanger <eric@archlinux.org> - - * hardinfo 0.4.2.3-3 - * Rebuilt against gnutls 2.4.1 - -2008-04-06 Eric Belanger <eric@archlinux.org> - - * hardinfo 0.4.2.3-2 - * Rebuilt against libsoup 2.4 - * Added ChangeLog diff --git a/libre/hardinfo/PKGBUILD b/libre/hardinfo/PKGBUILD index 47f4c1330..1987e191e 100644 --- a/libre/hardinfo/PKGBUILD +++ b/libre/hardinfo/PKGBUILD @@ -1,9 +1,10 @@ # $Id$ # Maintainer: Eric Bélanger <eric@archlinux.org> +# Contributor (Parabola): Márcio Silva <coadde@lavabit.com> pkgname=hardinfo pkgver=0.5.1 -pkgrel=4 +pkgrel=5 pkgdesc="A system information and benchmark tool." arch=('i686' 'x86_64') url="http://hardinfo.berlios.de/wiki/index.php/Main_Page" @@ -12,9 +13,6 @@ depends=('gtk2' 'libsoup') options=('!emptydirs') source=(http://download.berlios.de/hardinfo/${pkgname}-${pkgver}.tar.bz2 \ fixsensors.patch hardinfo.distro) -md5sums=('6fb38992e140f2fab16518ae1f38e188' - '05c212db07b9f152cdea052ff7bb28fa' - '2c609f4b3c7f202d043bdef082c2bef0') sha1sums=('983f0445aa60e02156bc5a5eaedeffb30b8e4d64' 'd2151dce76dca238102937d0e15541f172bca530' '9425e09191cd3a365a3afce57ca1973a6439fa57') @@ -25,8 +23,6 @@ build() { sed -i 's|/usr/lib64|/usr/lib|' configure ./configure --prefix=/usr sed -i 's|lib64|lib|' binreloc.c - sed -i 's|/sbin/lsmod|/bin/lsmod|g' arch/linux/{parisc,ppc,m68k,x86,common,mips,sparc,x86_64}/modules.h - sed -i 's|/sbin/lsmod|/bin/lsmod|g' arch/this/modules.h sed -i 's|{ DB_PREFIX "debian_version", "deb" },|{ DB_PREFIX "hardinfo.distro", "parabola" },{ DB_PREFIX "debian_version", "deb" },|' computer.h make } diff --git a/libre/iceape-i18n/PKGBUILD b/libre/iceape-i18n/PKGBUILD index 5f4db3101..7bfca020f 100644 --- a/libre/iceape-i18n/PKGBUILD +++ b/libre/iceape-i18n/PKGBUILD @@ -1,5 +1,6 @@ # Maintainer: Luke Shumaker <lukeshu@sbcglobal.net> -# Maintainer: André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> # Contributor: fauno <fauno@kiwwwi.com.ar> # Contributor: Figue <ffigue@gmail.com> # Based on icecat-i18n package, which is in turn based on firefox-i18n @@ -15,7 +16,7 @@ _debrel=1 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } -_langpacks=(be ca cs de en-GB es-ES fi fr gl hu it ja lt nb-NO nl pl pt-PT ru sk sv-SE tr zh-CN) +_langpacks=(be ca cs de en-GB es-AR es-ES fi fr gl hu it ja lt nb-NO nl pl pt-PT ru sk sv-SE tr zh-CN) pkgbase=iceape-i18n pkgname=($(for lang in ${_langpacks[@]} @@ -23,7 +24,7 @@ pkgname=($(for lang in ${_langpacks[@]} done)) _pkgver=2.7.5 pkgver=${_debver}.${_debrel} -pkgrel=1 +pkgrel=2 pkgdesc="Language packs for Debian Iceape." arch=('any') @@ -62,6 +63,7 @@ md5sums=('03a75ce1325fc748d0943cd39659e8ca' '6cb55fe51fca1de674ca32b10edc7c8b' '138121b288c269aa418ca0c33eb65326' '8fd47eed7c79fe29c74a81d9b4a4864a' + '71f6007df53b17361965f38c01869738' 'f253842c0a377e86c6c62f7db27db32d' 'b93caebe5ceb08d2cde78fe40fff3c0c' 'a36d0776b736609b1e72b8530cc9e755' diff --git a/libre/iceape-libre/PKGBUILD b/libre/iceape-libre/PKGBUILD index 25498025b..ca386c03a 100644 --- a/libre/iceape-libre/PKGBUILD +++ b/libre/iceape-libre/PKGBUILD @@ -1,5 +1,5 @@ -# Maintainer : Márcio Silva <coadde@adinet.com.uy> -# Maintainer : André Silva <andre.paulista@adinet.com.uy> +# Maintainer : Márcio Silva <coadde@lavabit.com> +# Maintainer : André Silva <andre.paulista@lavabit.com> # We're getting this from Debian Sid _debname=iceape @@ -11,7 +11,7 @@ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } _pkgname=${_debname} pkgname=${_debname}-libre pkgver=${_debver}.${_debrel} -pkgrel=2 +pkgrel=3 pkgdesc="A libre version of Debian Iceape, the Internet Suite based on Mozilla Seamonkey." arch=('i586' 'i686' 'x86_64' 'mips64el') license=('GPL2' 'MPL' 'LGPL') @@ -35,7 +35,7 @@ md5sums=('7a6e671485a75cd9495f346e0f8e4dcb' '7266333e31731af8bb50c2eca8d0bd26' '25b6fe16ac24cd5c852213e5c1adb272' 'c395d443a8c4c16880c7322bcf174743' - '92d3feecf8d80ae6a3f06aa8c5f06eb4') + '98f054a054558d5e3f6603486faef11f') build() { export QUILT_PATCHES=debian/patches diff --git a/libre/iceape-libre/libre.patch b/libre/iceape-libre/libre.patch index be471eea3..96fefccbb 100644 --- a/libre/iceape-libre/libre.patch +++ b/libre/iceape-libre/libre.patch @@ -270,9 +270,9 @@ - <DT><A HREF="http://www.mozilla.org/">@mozilla_org@</A> - <DT><A HREF="http://www.mozillazine.org/">@mozillazine@</A> - <DT><A HREF="http://www.mozdev.org/">@mozdev@</A> -+ <DT><A HREF="https://parabolagnulinux.org/">Parabola GNU/Linux-libre</a> -+ <DT><A HREF="http://www.fsf.org/">Free Software Foundation</A> -+ <DT><A HREF="http://libreplanet.org/">LibrePlanet</A> ++ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre</a> ++ <DT><A HREF="http://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A> ++ <DT><A HREF="http://libreplanet.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC/v78AAAAAAPLy9ABsbakA/f3+APn5+QC6ur0A6urqAEpLbQACBLQApKW3AAULuQDMzMwAGBiDAL29vQCgocsAgnzJALu82QA+PpsAAQOvAOjo6ADZ2dkAysrKALS0zwD5+foAAgKRAAYGdQD19fUADhOjAAQJyACrnqIAxMTLAOnp7gDm5uYAzczNACgobwDg2dEAQkaeAA0RkAAUFnEA0MvQAIBzgAANDYsAk5OyAOTk5ADy8vYA1dXVAD8/cADGxsYA+fn7AAMHvgBzZnQApqauAAEGuQDExMQAAAGmAAoLmgADCMQAxMTdAAwPlwD+/v4ABg7MAF5ehADg4OAA0dHRAAAAoQAYEXAAwsLCALCxwQBnadkAAQGWAPz8/ACgoLgAbm6RANvb5wDr6+sA0dHSALe3uQADB8AAzc3NAGFhbAABAZcAOTtlALi4xwAAAJoA/Pz9AAQHnwADBJcACQl4AFVa3AChl6EAAgW2ABscdAABAq4A2NjYAAAAmwDAwMoAAQKmAAcMswDR0eQAAQSxANvX2wB4aXcAAQGpAAAAkwDW1tYAAgSpACIZZAAAAaEA+vr8AKuirAACBbcA8vLyALOztgADBZYAAACcAAACpwAEA6QAAQKnAPT09QD///8AvL3UADIpigDw8PAABwWOAK6dogBub4kAiozDANLS0gAFC8gAAgW4AP39/QAAAJ0A0NDQAMHBwQDp6ewACg2RAAIFqAAKCokA+/v7AAkOnwAAAaMA7OzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4eHh4eHh4eHh4eHh4AXh4eHhlbikzZlooeHh4eAF4eHh4hX1JVFweInh4eHgBeHh4XmlAGXNGSB8VeHh4AXg8LhaGcV9zKg0wQF54eAF4K0NNOGthjXNCUwAMS3gBPC82iW+CCRN2Iz4wTwx4AW0GgCc5OU41VnSKTBoOiwEFTz8hHIF5RANdQVRfNIMBeBUhe0o9jB0Pcjdzc1E8AXgsB3AbUlkQRVtnhHNoeAF4i45wJCAlYjJbdYRfY3gBeDwmEn4XMToKZDd6WDx4AXh4VTsIfwt3FGpsfAR4eAF4eHgEEYhQAodXYDx4eHgBeHh4eHg8GC1HPHh4eHh4AQABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA%3D">LibrePlanet</A> </DL><p> - <DT><H3>@seamonkey_and_mozilla@</H3> + <DT><H3>GNUzilla</H3> @@ -300,8 +300,8 @@ - <DT><A HREF="http://www.mozillazine.org/">@mozillazine@</A> - <DT><A HREF="http://forums.mozillazine.org/viewforum.php?f=40">@seamonkey_support@</A> - </DL><p> -+ <DT><A HREF="http://www.gnu.org/software/gnuzilla/">GNUzilla and IceCat</a> -+ <DT><a href="http://www.gnu.org/software/gnuzilla/addons.html">Free addons</a> ++ <DT><A HREF="http://www.gnu.org/software/gnuzilla/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">GNUzilla and IceCat</a> ++ <DT><a href="http://www.gnu.org/software/gnuzilla/addons.html" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free addons</a> </DL><p> #include bookmarks.extra <HR> diff --git a/libre/icecat/PKGBUILD b/libre/icecat/PKGBUILD index ebd5a1350..88bd70c09 100644 --- a/libre/icecat/PKGBUILD +++ b/libre/icecat/PKGBUILD @@ -16,8 +16,8 @@ _pgo=false _pkgname=icecat -pkgver=12.0 -pkgrel=1 +pkgver=13.0.1 +pkgrel=2 if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi if $_pgo; then @@ -66,7 +66,7 @@ fi url="http://www.gnu.org/software/gnuzilla/" install=icecat.install -source=(ftp://ftp.gnu.org/gnu/gnuzilla/${pkgver}/${pkgname}-${pkgver}.tar.xz +source=(ftp://ftp.gnu.org/gnu/gnuzilla/${pkgver::4}/${pkgname}-${pkgver}.tar.gz mozconfig mozconfig.pgo xulrunner-copy-stub.patch @@ -75,19 +75,17 @@ source=(ftp://ftp.gnu.org/gnu/gnuzilla/${pkgver}/${pkgname}-${pkgver}.tar.xz icecat-safe.desktop icecat-install-dir.patch vendor.js - gcc47.patch cairo.patch) -md5sums=('04a5504c5c473354bcd20f7116360fee' +md5sums=('ba249f3e889089dc64615333dd324791' '3117865902d1a20ab61d75707be9888e' 'ac29b01c189f20abae2f3eef1618ffc0' '683c4540ab84c220937feb7d1a1450ee' - 'd403b0ae09306fef3870132e7fd33ed2' + 'cd52a6e3f138fa92267600cc53ff4247' 'e81ad01dbc16ba28bf92ba4b7c309ca7' 'd93fe402b87cd000a869e1fd6badc6c9' '268e65c8fcae6152e156c09760a18dfd' '0d053487907de4376d67d8f499c5502b' - '79e471e0bd03b1d4e84fd3a6776bd619' '721c59ffc14f14cb0d3a90b7e84df70e') if [ "$_pkgname" != "$pkgname" ]; then @@ -104,7 +102,6 @@ build() { patch -Np1 -i "$srcdir/icecat-install-dir.patch" # install to /usr/lib/$pkgname patch -Np1 -i "$srcdir/xulrunner-copy-stub.patch" # small fix patch -Np1 -i "$srcdir/libre.patch" # Remove Google+Mozilla stuff - patch -Np1 -i "$srcdir/gcc47.patch" patch -Np1 -i "$srcdir/cairo.patch" cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch diff --git a/libre/icecat/libre.patch b/libre/icecat/libre.patch index ff7f6f4ed..a4c76b6f5 100644 --- a/libre/icecat/libre.patch +++ b/libre/icecat/libre.patch @@ -1,8 +1,7 @@ -diff -urN iceweasel-13.0.orig/browser/app/profile/firefox.js iceweasel-13.0/browser/app/profile/firefox.js ---- mozilla-build.orig/browser/app/profile/firefox.js 2012-06-01 09:03:47.000000000 -0300 -+++ mozilla-build/browser/app/profile/firefox.js 2012-06-05 19:53:08.847012282 -0300 -@@ -64,10 +64,11 @@ - // Preferences for AMO integration +diff -Naur icecat-13.0.1/browser/app/profile/firefox.js icecat-13.0.1-libre/browser/app/profile/firefox.js +--- icecat-13.0.1/browser/app/profile/firefox.js 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/browser/app/profile/firefox.js 2012-07-17 21:35:32.600229972 -0300 +@@ -65,6 +65,7 @@ pref("extensions.getAddons.cache.enabled", true); pref("extensions.getAddons.maxResults", 15); pref("extensions.getAddons.get.url", "http://www.gnu.org/software/gnuzilla/addons.html"); @@ -10,10 +9,7 @@ diff -urN iceweasel-13.0.orig/browser/app/profile/firefox.js iceweasel-13.0/brow pref("extensions.getAddons.search.browseURL", "http://www.gnu.org/software/gnuzilla/addons.html"); pref("extensions.getAddons.search.url", "http://www.gnu.org/software/gnuzilla/addons.html"); pref("extensions.webservice.discoverURL", "http://www.gnu.org/software/gnuzilla/addons.html"); - - // Blocklist preferences - pref("extensions.blocklist.enabled", true); -@@ -81,7 +82,7 @@ +@@ -82,7 +83,7 @@ pref("extensions.update.autoUpdateDefault", true); // Dictionary download preference @@ -22,18 +18,135 @@ diff -urN iceweasel-13.0.orig/browser/app/profile/firefox.js iceweasel-13.0/brow // The minimum delay in seconds for the timer to fire. // default=2 minutes -@@ -242,7 +243,7 @@ +@@ -247,7 +248,7 @@ // 0 = blank, 1 = home (browser.startup.homepage), 2 = last visited page, 3 = resume previous browser session // The behavior of option 3 is detailed at: http://wiki.mozilla.org/Session_Restore pref("browser.startup.page", 1); -pref("browser.startup.homepage", "chrome://branding/locale/browserconfig.properties"); +pref("browser.startup.homepage", "about:home"); - + // This url, if changed, MUST continue to point to an https url. Pulling arbitrary content to inject into // this page over http opens us up to a man-in-the-middle attack that we'd rather not face. If you are a downstream -diff -urN iceweasel-13.0.orig/browser/locales/en-US/chrome/browser-region/region.properties iceweasel-13.0/browser/locales/en-US/chrome/browser-region/region.properties ---- mozilla-build.orig/browser/locales/en-US/chrome/browser-region/region.properties 2012-06-01 09:03:48.000000000 -0300 -+++ mozilla-build/browser/locales/en-US/chrome/browser-region/region.properties 2012-06-15 02:17:00.978636665 -0300 +diff -Naur icecat-13.0.1/browser/base/content/aboutHome.js icecat-13.0.1-libre/browser/base/content/abouthome/aboutHome.js +--- icecat-13.0.1/browser/base/content/abouthome/aboutHome.js 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/browser/base/content/abouthome/aboutHome.js 2012-07-17 23:19:05.593724417 -0300 +@@ -37,104 +37,6 @@ + * + * ***** END LICENSE BLOCK ***** */ + +-// If a definition requires additional params, check that the final search url +-// is handled correctly by the engine. +-const SEARCH_ENGINES = { +- "Google": { +- image: "data:image/png;base64," + +- "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + +- "bWFnZVJlYWR5ccllPAAADHdJREFUeNrsWQl0VNUZvve9NzNJJpnsIkuEJMoqAVJAodCKoFUsAUFQ" + +- "qhig0npaRUE8Viv1FFtQWxSwLXVhEawbhOWobOICFCGiEIIQRGIgCSFjMslsb9567+1/Z+7gmIYK" + +- "Vivt6Ztzz5y5b+7yf//3f/9/38PoW7gYY+i7uDDG39heJfT/q91LGTiTIcWJkCxzxDmCCBGCkBEO" + +- "FDCm5CPs+CGWYvcliRxEzDwgu9I/IzZClonQgT/jC9Eu3GFTz6sdKc57kIzHWKaFjIA2wz++Zhkn" + +- "yblMIDkAFIcDDFcQ+vtjGJuaOlKPkB2G4V4U9kcu8zfWlPtPVX/g9zZ7QwE03jDTqzWVndBUc57a" + +- "Up91gToce0cf3R05El5u6gYyNQ0BKK/x/nNmjKwwxBmx8/eSNHiWsVLXlBJ/7UdTazcN3gn3bYEw" + +- "FmG3pvOobRuScoc+ibEyF6GsUugrgEYuMGD4nqltmJjqFBkt+gcJ/ed0SZIA5crZ+gumrpQ0H319" + +- "ogBFh6aJFoGmQguf2n7tu62HnvgJ1cPBcN3m6dAnX4CM4QAQigmxdQthm9EEJ58bY3bOl/CQ2YE5" + +- "pu24LdBwZE7De+M+4gBAs/IntETphOHD4FOzNoNPbjuzBkn+48/9qKXywWPcM99Edvh2siPfHeyc" + +- "nH8mU/pM2pJLsfshI0KCNRv7viiYYXW7sRnmxTFQhCp3G9/CTqzLsht3jtkrmGJdgGF0xmYpQx5G" + +- "KBEInWdWSs4pnm6bLD3i95WJsDG7jmtiXFYwlmF2WXATmCPROE05IGa3G33sxPrsL014tGRMVo5D" + +- "uVdirD/8zJBluQgC9qSF2JKcV9cuPwudsbq1YLqCydjYGOkSngYtKq36vJUs6jqhuqXtgCvursty" + +- "uHOnSZIMWROnc/dR2J5pYAZO3tF0rOwvAXI/jvKZ/vN6zVNuHQGWjYNx/SWGiohtH9R1Y17HDRvf" + +- "4XtUCEoaQwyGbEOr5QZ3HeeLbRwrosnRNB5lHNwpuBn+HK2KWFsLcd34scWpGJd5g6Ener61faoQ" + +- "bOXk6OsWpycnP98yYdzMrLINxYks+3h1fvZlHfE6M6LXu0oa4mPko8s7TL70kuSnOmVIMxvW5n2v" + +- "00111fF1htzXWiwpnrJAw8FbD60qXtHn9o9LUrJ6r2CUBoOnDpQeKxu0ncPhntgRwKLRcErUVd9t" + +- "k1falinlvLLmLr7WHfndsh/t0WOdg9Dt1cOHTyrctWutRGzH5ZbNjcQ0FpEce+lMQwCnpMRqnSQ3" + +- "Qu50hFIzMXJnSsjt+aI+fG/kiOwUStcFQuG9AMor0GUI0da6btoyKxIKnWKaXlR/zajFCYWlXNBB" + +- "WslMKz+tpOEezkIxJtJzuvfl5ia1DCiQnuki6+MiXzRlR47s9Lwdaa1bCKAc4uscXnX5mwFvzdO6" + +- "JnlQSv8lgiOUERZ1QYLG4PqJE+ZItl2y4MDB3wjma8/XnGiuavSuUMNhKNOshdyZkmViD7EAGBrX" + +- "K9gzA1CYqPZEfEoAEK91eN3jTELIlRT7jnuhm9M5mxrmJZVNvjUio0VEC3Exr2ryLTbVCJI0/ZfL" + +- "e/TI5ZusfbXbKAcjP2706msTQRHiH3pxa2ghgIlkU+9b91zqRA6OK6MIQh+nG8HP6wT4PPzD3n3z" + +- "lxoRiohl5eVd/1G/qC2Ug8LBOcMYh5PYd6mqemTRJ8d88axb3r//NTkYT2tQ1e27W3yzo+aamh0k" + +- "NoWIcfeJ1Ss8A2EU0xgqflEkYQBGBuYAe3hByAHiNVBcqyRdLzEjYLhpEGFk/CaHXFtZX79RD4WR" + +- "Bl4plOWR3MhkbI0DMOHfFhNjaEK6Neas1D9Rg3qVHQFwLHIV9DkN01miaxD6LNUjQpKPMQLHl522" + +- "jWAVtQxELTM7agBN+AdcGwYNvJREtDwjrOL5hQWpVf36TTtcVFRhGMaAlxsbpw+prCwt/fRTHoZE" + +- "MVS1Sna5r5CUpKExisc0RVFix4BoKEFHlDES78dIcYjdf0FRhapqH5tQxAyTtiOwZHVTk3dWdnaV" + +- "zFgv27a5RzfKlt6PAiOZFQWmrUTy2Y3WFntPdgruhXVWxIFRA2ZIBq9QqeP18PvlBPAtRq0gHGNQ" + +- "uHbN4ej+qJDDmMZIaaZZYASC/MzTe1RScmmdqlZce/z4CLFfW7RoppWsSP1Wy7R5NeTpfMNnU+s2" + +- "pGIZ2KC4oEGoOOCb/7aNpkKbWKsswhhoUrQZBmPdp/hXcWDUQCjIGZFByLB2Su9ogaUaRhAa8hsG" + +- "DxXFCmlB8CBKleyhZynXiWkwv6VRpEVYkBtnBGq28bMPZcmjC0rKCxPLFqy4GDWbVwSOPemLGhvP" + +- "SMJNlc2+es0fQGYo5HnH59sCoMQLWVU0LV4ISqHjf/obtbQQxCbMnPngRcM25MbCB5giDo+Hl6Xg" + +- "qtVd6yqWeu7e91RyR++Rd28OthAUaLZRa+0Rrg+SNxQqD0dDyRx9lmqY6brOVDi7HFHV9/mWvV5z" + +- "r63aSCF0yDOlcla7NZrFmA3AeH2E1052/ebi1ZZ6ej3oh8eZ2fe1vtPqOTi495SaHygOOc1/dOFj" + +- "QnsYhdMw44lFaMysU6dOBCBvRcCB35fl+0X4am3COCaakdoVjVaoZgW1dESJnSd5hiz/7NU02Qbd" + +- "4dpDYdLL7wizOLW5OGoRTAM+G0VCBrg0yDOMXRGJPB8GNpim2efF7Ozi9hgA4Hfxm0b53NbW/Zyy" + +- "i7bQlyJBFjIjDF1ViKe29xhEJizP0Flw6S76klhfrX+j8C7dt/8BPRxpsGnGyqKfGRQ7O20OVr80" + +- "NVT9bIMIBwhrygMsLr7RcKvT9bUq1zXLumVtdvaAs56V+GK+3UMXEK15HzU1jvANHa47/YIGJ2cT" + +- "DmAWSIZtUdT9tiDpNjEQpZ1pJpumqiKih0AfSHTB2X7/2w2GsT4CNM8k5NlnPJ7Eyg+vT0+faVqW" + +- "Z2tEu1cYaC3fQxsPnaS/swAYN2K/qnhQHpgAKC6/Xx6Qgtmkilo2Z9WHrFHQnO/Bf/rtoctPlOVM" + +- "az35/pKIyhCAh6SUQre4H/M+L7lAqJl+RvKsVeHw0pBlntJME2VQunVzRsaERCfuyMzMfyszMzN+" + +- "ak52XTQ2333prxdJzuyRXGSw7KjFEnlUwYF1zrROLbxO4umwcVOWkjV0z51YyXqaEQsR9djYQMX4" + +- "TTwVQst8NiVlPqS+Upj0EAyZB9+tcB4ZByJ71V5C7ntcj550Q4KBTl7pvjFVmtbnYvSQ7ACcEZoD" + +- "fTUwbgDE490fN6B5o5fRjdAXiDNBGKLwNVMLZnTJLPrDh1hypAFHAkTzXnNqc+GHfG75oYxVYN0k" + +- "YEwQXPEAcuF9ZIH/01ku1/ChivJHkNCeMk8sCNXChCdhQr7+6uvC4RU4d8RJ1PRuV64JKdDSU3su" + +- "HuHMuKJUcuWMhMU4QHwflWBHgFEb4tXuSs3gEaLV7bdDlXvU6rm7hKH8SobmmawohUNkeSDUghdD" + +- "0vfXMrbnYdOoSij6Eg108TFje6EOMwbjwZ0zUHeXA5GGANoz6jm2VwCotikBcN7YpvHEtvrDnoqh" + +- "t58kuzpDJcoPhQDO6YGn3+pTK/007QYUoClgOUHpWAUuldPV4VYYn8rXfMDpHN4NS4McOBpsJ7fZ" + +- "9utrbNvLWYdzrq5H3PO+Hfmy8GCKaI7U7o/3wq6ObklOIkhykcD+sbuFMeKAcKYos8RvSczhEgLM" + +- "EioJknDoTEznWLDNJb5RO2POPBfqf2frdFN3LAz6Im+agU9e+Xzn8HLod+dcueXnDk/vX2DZlQaK" + +- "/ebpLV0miPmcCXs1xZySWC9JMA/Fz3/CeXZbgcTCIEVMqiSAkFguxQ0mX06IX9KueIuPpV/xPCS+" + +- "ttQGnDMs6Tej8SaseF4LN9c9cnxNj6VxI8Q+3em9Hx+c3PmW1UDztMZtXVLEfdymbGAJ60kJGZQm" + +- "tH99bE8YGN/wd/mgxdG7NFDb8/ZohryYA5HguHhI5uYO27vyoqtrmAiXr31JX/V48CuY8R8FJhxE" + +- "eeEAQWk9HnYlFmMJoRKG03QLtUJ7/93FvpXXJ7wM/6Za4l71UEu5pWkoucv0Be0tm95vmUdy5t5k" + +- "tpbPbe8B2vmsi7+rl2Nf4yVaUlLHSQXu7r8tw1JyT+ivhQBaAhZUxBSC5EPpPtMKVDzi3z/+HZHJ" + +- "7K/7IvC/CRhZ6Ep6evGGyXJS3kAsp3SGcgLKc7uSktBhrW7ZFq32r/HHCVbb0P9fBSYOTpIoJ5SE" + +- "7GUnpHbrbG8EzsfWfwgwAEfC/ToQIhkhAAAAAElFTkSuQmCC" +- , params: "source=hp&channel=np" +- } +- +-, "Яндекс": +- { +- image: "data:image/png;base64," + +- "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + +- "bWFnZVJlYWR5ccllPAAABWFJREFUeNrsWWtsVEUUnltLH7tbaeuDbfCBojUoBTGmooLE+Igx+gON" + +- "RvEJhEQNUdEYA0Ji4xNf2Bg1iBJJrGBC+CEBNYoxxmh94CMKRE2MitBqoZRi6bbdZT3TfhM/TmZ2" + +- "u5jGsOEkX8/0ztzp3HPP4zu3UTabNUfEI9YwgzAxjUbBGkG7IAv0CwYE53rWC+KChFloRh329igN" + +- "zD8keJR+P2DvEbgnrjp4eWT65GerSZuU6FWii9Fj5pGHvC6ow/WpdP1C7SV3Bm18eNpDG2a0oA0P" + +- "v0qFSn3IMPOKxChsmBJ1/TpBEuNn1NxRB8XOoJSYRabfrCiG0FGiDXMZ9HeC73PfGpkOST0vmYGi" + +- "LEraMCdB/5jP46xhnhaj7C3Sal2qjFSDcU8eb4m2m4xpHvKWYwSTBd2Cr1HBrIwVnCXYIdiiNrDh" + +- "Wi8YQLVzZ+mDt/ar9acK5gqOE6wTvKvmE4JzsN83ghSu1+AMMcGngr/pnnHYM4nzrRX8EapKm5Fc" + +- "3/bwlAn/Jt/EtJdNmdvidjxcpyrjT+D6Fx7LPoA5jf3ktU5metY9rtZcRHNn0vV3cO0rtf6GwN9v" + +- "DCXfX6AbVLL1hJJOxIM6UtwnJG7ORuIaMl5W7W297g2MmwR3YLxQcDmty3jOdongCrrXyRTBaoyf" + +- "x5qdgjZ4qzfHbCQ3mzXcChcYH8hhIGf0zwQ3Ch6k8/Ae9yEM3hc8LFguWIm5uwIvwYXhPdA2RNbT" + +- "/BLoFsECwXsw1gUIZa9h7NvZivGLgkk010eHjv5jbitXD1HiWVMhuB7jDXR9E/R0Qa3nPvvmTxZc" + +- "7fGWyQhNK6/R9b8Ev4aSr0HyunWQ3Q/li8/hdh8JTiOD+DpPa7jegHtriUN35zDMRMEJGH9J17dB" + +- "18KzO9V9NvndjbH1sB9objp0u+CT4VYlJ5txKLvpDMFsIJ/EwYOs9bsEp+RYeyz0nx7y6ORsGu8K" + +- "EM2kx1ts7rkXL+YxNd8I/TOcoCDDOB5jY/Fj/P4cEmVTjr0SlKNCOcjJ8fQgodAcQ/d/i/BLK8Oo" + +- "ZtYcLVgGD1wq2K7mx0LvKITHaFlCbny/oI4M43uQDJJkL3KH5RWnB/auh96ax9AGnKQdoZNAyO4T" + +- "VHv4VobC+XzPntWUMgpivtwzufbgWbVpSHYh4V0DnrA6YETrCWdgvGUYIboX9KEahqlFcq0GT2HZ" + +- "jwrXBW4zJ/C8FYdqmEWUb94aZniUUbXJVbmm0N6/5zjbPnohcfKePiDlSfBJeO0r9Bx8pi7oEw/F" + +- "MPMp8S0roARHar+QYS6FXp9nv230dicVcA7LaZoxHo/ncfIbEdi6Qgxje4vFRL5aRqA/uxn6Vc9c" + +- "muK/lXqeuQXsPwZMdi0RPedxH1AFva0QwyygavDkCBjlFuy/HJWhksLQgOVyxWqh3mYx7RND2Pi8" + +- "0n1+baawmU9e2o6x/XR7raIQVb4mskGQQaO4ydNENlATeTE1kXOQc/agXDpZqhq42dQL2US9G1Wl" + +- "G5XEzaWJbyTBddzcTuSmAYTMOKybQWsmeppIbk5nqcbxJ1RHO37B10TeRL3KU543kUKF0J8leqgq" + +- "8ae8PdAd6ltPL954LXQV/m4HEbgaYqjT6KNZHWhAKd5+mzpDN4WflUdw5koweitv4lldX2QpxQSc" + +- "/UOfx9jvvTHBKP+/RmKRoHwIiYg8pgQJsszTKFYSV2qC0VcShyqnqlEKRpolqsAyFfnpKmLOnOgr" + +- "VAVirhYnYzsZLbgSe57nwtL375N8H+Oy3H2qKpAKEL5eVc65E04rD2NW66uWrUDobKnAnPs7PR5+" + +- "tLFQHjMS0knhEZLdim/8bxId+RetX/4RYACXlwEEPBQycwAAAABJRU5ErkJggg==" +- } +-}; +- + // The process of adding a new default snippet involves: + // * add a new entity to aboutHome.dtd + // * add a <span/> for it in aboutHome.xhtml +@@ -142,7 +44,7 @@ + // The <a/> part of the snippet will be linked to the corresponding url. + const DEFAULT_SNIPPETS_URLS = [ + "http://www.mozilla.com/firefox/features/?WT.mc_ID=default1" +-, "https://addons.mozilla.org/firefox/?src=snippet&WT.mc_ID=default2" ++, "http://www.gnu.org/software/gnuzilla/addons.html?src=snippet&WT.mc_ID=default2" + ]; + + const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day. +diff -Naur icecat-13.0.1/browser/locales/en-US/chrome/browser-region/region.properties icecat-13.0.1-libre/browser/locales/en-US/chrome/browser-region/region.properties +--- icecat-13.0.1/browser/locales/en-US/chrome/browser-region/region.properties 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/browser/locales/en-US/chrome/browser-region/region.properties 2012-07-17 22:01:56.786224684 -0300 @@ -1,28 +1,28 @@ # Default search engine -browser.search.defaultenginename=Google @@ -75,9 +188,61 @@ diff -urN iceweasel-13.0.orig/browser/locales/en-US/chrome/browser-region/region # increment this number when anything gets changed in the list below. This will # cause Firefox to re-read these prefs and inject any new handlers into the -diff -urN iceweasel-13.0.orig/build/pgo/blueprint/elements.html iceweasel-13.0/build/pgo/blueprint/elements.html ---- mozilla-build.orig/build/pgo/blueprint/elements.html 2012-06-01 09:03:49.000000000 -0300 -+++ mozilla-build/build/pgo/blueprint/elements.html 2012-06-05 20:37:22.059133787 -0300 +@@ -30,3 +30,21 @@ + # means that it's not possible to update the name of existing handler, so + # don't make any spelling errors here. + gecko.handlerService.defaultHandlersVersion=3 ++ ++# The default set of protocol handlers for webcal: ++gecko.handlerService.schemes.webcal.0.name= ++gecko.handlerService.schemes.webcal.0.uriTemplate=about:blank ++ ++# The default set of protocol handlers for mailto: ++gecko.handlerService.schemes.mailto.0.name= ++gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank ++gecko.handlerService.schemes.mailto.1.name= ++gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank ++ ++# The default set of protocol handlers for irc: ++gecko.handlerService.schemes.irc.0.name=Freenode ++gecko.handlerService.schemes.irc.0.uriTemplate=https://webchat.freenode.net/ ++ ++# The default set of protocol handlers for ircs: ++gecko.handlerService.schemes.ircs.0.name=Freenode ++gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net/ +diff -Naur icecat-13.0.1/browser/locales/generic/profile/bookmarks.html.in icecat-13.0.1-libre/browser/locales/generic/profile/bookmarks.html.in +--- icecat-13.0.1/browser/locales/generic/profile/bookmarks.html.in 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/browser/locales/generic/profile/bookmarks.html.in 2012-07-17 23:34:22.488558721 -0300 +@@ -11,13 +11,20 @@ + <DT><H3 PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$FvPhC3">@bookmarks_toolbarfolder@</H3> + <DD>@bookmarks_toolbarfolder_description@ + <DL><p> +- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/central/" ID="rdf:#$GvPhC3">@getting_started@</A> ++ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D" ID="rdf:#$GvPhC3">Parabola GNU/Linux-libre</A> + </DL><p> +- <DT><H3 ID="rdf:#$ZvPhC3">@firefox_heading@</H3> ++ <DT><H3 ID="rdf:#$YvPhC3">Parabola GNU/Linux-libre</H3> + <DL><p> +- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1">@firefox_help@</A> +- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/customize/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$32iCK1">@firefox_customize@</A> +- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/community/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">@firefox_community@</A> +- <DT><A HREF="http://www.mozilla.com/@AB_CD@/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">@firefox_about@</A> ++ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre</A> ++ <DT><A HREF="https://parabolagnulinux.org/packages/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre Packages</A> ++ <DT><A HREF="https://wiki.parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre Wiki</A> ++ <DT><A HREF="https://labs.parabola.nu/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre Labs</A> ++ </DL><p> ++ <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3> ++ <DL><p> ++ <DT><A HREF="http://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A> ++ <DT><A HREF="http://libreplanet.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC/v78AAAAAAPLy9ABsbakA/f3+APn5+QC6ur0A6urqAEpLbQACBLQApKW3AAULuQDMzMwAGBiDAL29vQCgocsAgnzJALu82QA+PpsAAQOvAOjo6ADZ2dkAysrKALS0zwD5+foAAgKRAAYGdQD19fUADhOjAAQJyACrnqIAxMTLAOnp7gDm5uYAzczNACgobwDg2dEAQkaeAA0RkAAUFnEA0MvQAIBzgAANDYsAk5OyAOTk5ADy8vYA1dXVAD8/cADGxsYA+fn7AAMHvgBzZnQApqauAAEGuQDExMQAAAGmAAoLmgADCMQAxMTdAAwPlwD+/v4ABg7MAF5ehADg4OAA0dHRAAAAoQAYEXAAwsLCALCxwQBnadkAAQGWAPz8/ACgoLgAbm6RANvb5wDr6+sA0dHSALe3uQADB8AAzc3NAGFhbAABAZcAOTtlALi4xwAAAJoA/Pz9AAQHnwADBJcACQl4AFVa3AChl6EAAgW2ABscdAABAq4A2NjYAAAAmwDAwMoAAQKmAAcMswDR0eQAAQSxANvX2wB4aXcAAQGpAAAAkwDW1tYAAgSpACIZZAAAAaEA+vr8AKuirAACBbcA8vLyALOztgADBZYAAACcAAACpwAEA6QAAQKnAPT09QD///8AvL3UADIpigDw8PAABwWOAK6dogBub4kAiozDANLS0gAFC8gAAgW4AP39/QAAAJ0A0NDQAMHBwQDp6ewACg2RAAIFqAAKCokA+/v7AAkOnwAAAaMA7OzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4eHh4eHh4eHh4eHh4AXh4eHhlbikzZlooeHh4eAF4eHh4hX1JVFweInh4eHgBeHh4XmlAGXNGSB8VeHh4AXg8LhaGcV9zKg0wQF54eAF4K0NNOGthjXNCUwAMS3gBPC82iW+CCRN2Iz4wTwx4AW0GgCc5OU41VnSKTBoOiwEFTz8hHIF5RANdQVRfNIMBeBUhe0o9jB0Pcjdzc1E8AXgsB3AbUlkQRVtnhHNoeAF4i45wJCAlYjJbdYRfY3gBeDwmEn4XMToKZDd6WDx4AXh4VTsIfwt3FGpsfAR4eAF4eHgEEYhQAodXYDx4eHgBeHh4eHg8GC1HPHh4eHh4AQABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA%3D">LibrePlanet</A> ++ <DT><A HREF="http://www.gnu.org/software/gnuzilla/addons.html" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free addons</A> ++ <DT><A HREF="http://www.h-node.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC7zrYAWYhNANjj1QA9fEcAEEwBAHTQkwAeVRkAPXMvALvOtwASVQEAHFcUAH/bpgB60p8AKnQmAGO1fgAjaRwALmA1AA5EAQDM2sgAN3ApAG7EjgC5zbQAVJxrAChwIgC0ya8ALmczAHXJmQBNf0EAgd6oADhwKgC8z7cA7vPtANTg0QANPwAARIhSADtyLQBzzpQAus21AEeKVQDC070AieyzALzPuAB93qEALGYvAO/z7gBEiVAAasWFAFuJTwBKil4AXotSAEuKXgAORQEAD0gBABlDFwBWpmoALGYwAGCNVQAbYBAAHGAQABBOAQCI6rIAjPG3AB1bDgAaXg4A////AGaRWwB/2qYAUYJEAEx+PwAZXAwAm7eUAD51MADN28oAJmwhACRiFAAzeTYAasaFAB9eDwBkt34Aus62AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT09PT09PT09PT09PT09PT09PT0OIjALPRQmMkI9PT09PT09OkcHNQU+Q0oQPT09PT09PToVGDQtI0ABKz09PT09PT06JRg0Nh1ALxk9PT09PT09OiUYIS4TQC83PT09PT09PTpPSDsGG0BEAz09PT09PT06T0BGMRIsTRY9PT09PT09OgACJx8gQwooPT09PT09PToICAkJCUkkPT09PT09PT05HggETio9PT09PT09PT09Px4IERw9PT09PT09PT09PUUpCDMMPT09PT09PT09PT0NOEEEGj09PT09PT09PT09TBcPSzw9PT09PT09PT09PT09PT09PT09PT09PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D">h-node</A> + </DL><p> + </DL><p> +diff -Naur icecat-13.0.1/build/pgo/blueprint/elements.html icecat-13.0.1-libre/build/pgo/blueprint/elements.html +--- icecat-13.0.1/build/pgo/blueprint/elements.html 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/build/pgo/blueprint/elements.html 2012-07-17 21:44:48.052812473 -0300 @@ -143,7 +143,7 @@ </p> <p> @@ -87,9 +252,9 @@ diff -urN iceweasel-13.0.orig/build/pgo/blueprint/elements.html iceweasel-13.0/b </p> <p> <abbr title="extended abbr text should show when mouse over"><abbr> abbr - extended text when mouseover.</abbr><br> -diff -urN iceweasel-13.0.orig/dom/ipc/test.xul iceweasel-13.0/dom/ipc/test.xul ---- mozilla-build.orig/dom/ipc/test.xul 2012-06-01 09:03:55.000000000 -0300 -+++ mozilla-build/dom/ipc/test.xul 2012-06-05 20:40:59.453890004 -0300 +diff -Naur icecat-13.0.1/dom/ipc/test.xul icecat-13.0.1-libre/dom/ipc/test.xul +--- icecat-13.0.1/dom/ipc/test.xul 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/dom/ipc/test.xul 2012-07-17 21:48:08.242020288 -0300 @@ -294,6 +294,6 @@ oncommand="document.getElementById('page').QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.delayRemoteDialogs = this.checked;"/> </toolbar> @@ -98,9 +263,9 @@ diff -urN iceweasel-13.0.orig/dom/ipc/test.xul iceweasel-13.0/dom/ipc/test.xul + <browser type="content" src="https://duckduckgo.com/lite" flex="1" id="page" remote="true"/> <label id="messageLog" value="" crop="center"/> </window> -diff -urN iceweasel-13.0.orig/layout/ipc/test-ipcbrowser.xul iceweasel-13.0/layout/ipc/test-ipcbrowser.xul ---- mozilla-build.orig/layout/ipc/test-ipcbrowser.xul 2012-06-01 09:04:06.000000000 -0300 -+++ mozilla-build/layout/ipc/test-ipcbrowser.xul 2012-06-05 20:44:00.714006926 -0300 +diff -Naur icecat-13.0.1/layout/ipc/test-ipcbrowser.xul icecat-13.0.1-libre/layout/ipc/test-ipcbrowser.xul +--- icecat-13.0.1/layout/ipc/test-ipcbrowser.xul 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/layout/ipc/test-ipcbrowser.xul 2012-07-17 21:48:50.526879514 -0300 @@ -69,6 +69,6 @@ label="setViewportScale"/> </toolbar> @@ -109,20 +274,20 @@ diff -urN iceweasel-13.0.orig/layout/ipc/test-ipcbrowser.xul iceweasel-13.0/layo + <browser type="content" src="https://duckduckgo.com/lite" flex="1" id="content" remote="true"/> </window> -diff -urN iceweasel-13.0.orig/mobile/xul/app/mobile.js iceweasel-13.0/mobile/xul/app/mobile.js ---- mozilla-build.orig/mobile/xul/app/mobile.js 2012-06-01 09:04:14.000000000 -0300 -+++ mozilla-build/mobile/xul/app/mobile.js 2012-06-05 20:48:20.193241600 -0300 -@@ -220,13 +220,13 @@ +diff -Naur icecat-13.0.1/mobile/android/app/mobile.js icecat-13.0.1-libre/mobile/android/app/mobile.js +--- icecat-13.0.1/mobile/android/app/mobile.js 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/mobile/android/app/mobile.js 2012-07-17 22:14:47.293560718 -0300 +@@ -226,13 +226,13 @@ /* preferences for the Get Add-ons pane */ pref("extensions.getAddons.cache.enabled", true); pref("extensions.getAddons.maxResults", 15); --pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/mobile/recommended/"); --pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/list/featured/all/%MAX_RESULTS%/%OS%/%VERSION%"); --pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/mobile/search?q=%TERMS%"); --pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%"); --pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/mobile/"); --pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%"); --pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%"); +-pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/android/recommended/"); +-pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/list/featured/all/%MAX_RESULTS%/%OS%/%VERSION%"); +-pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/android/search?q=%TERMS%&platform=%OS%&appver=%VERSION%"); +-pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%"); +-pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/android/"); +-pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%"); +-pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%"); +pref("extensions.getAddons.recommended.browseURL", "http://www.gnu.org/s/gnuzilla/addons.html"); +pref("extensions.getAddons.recommended.url", "http://www.gnu.org/s/gnuzilla/addons.html"); +pref("extensions.getAddons.search.browseURL", "http://www.gnu.org/s/gnuzilla/addons.html"); @@ -133,7 +298,7 @@ diff -urN iceweasel-13.0.orig/mobile/xul/app/mobile.js iceweasel-13.0/mobile/xul /* preference for the locale picker */ pref("extensions.getLocales.get.url", ""); -@@ -243,7 +243,7 @@ +@@ -252,7 +252,7 @@ pref("dom.disable_window_open_dialog_feature", true); pref("keyword.enabled", true); @@ -142,9 +307,9 @@ diff -urN iceweasel-13.0.orig/mobile/xul/app/mobile.js iceweasel-13.0/mobile/xul pref("accessibility.typeaheadfind", false); pref("accessibility.typeaheadfind.timeout", 5000); -diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties iceweasel-13.0/mobile/locales/en-US/chrome/region.properties ---- mozilla-release.orig/mobile/locales/en-US/chrome/region.properties 2012-06-01 09:04:14.000000000 -0300 -+++ mozilla-release/mobile/locales/en-US/chrome/region.properties 2012-06-15 02:17:43.446130868 -0300 +diff -Naur icecat-13.0.1/mobile/locales/en-US/chrome/region.properties icecat-13.0.1-libre/mobile/locales/en-US/chrome/region.properties +--- icecat-13.0.1/mobile/locales/en-US/chrome/region.properties 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/mobile/locales/en-US/chrome/region.properties 2012-07-17 22:01:03.952816711 -0300 @@ -1,18 +1,18 @@ # Default search engine -browser.search.defaultenginename=Google @@ -167,11 +332,11 @@ diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties icew # Keyword URL (for location bar searches) -keyword.URL=http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q= -+keyword.URL=https://duckduckgo.com/lite/?q=site%3A{moz:domain}+{searchTerms} ++keyword.URL=https://duckduckgo.com/lite/?q= # increment this number when anything gets changed in the list below. This will # cause Firefox to re-read these prefs and inject any new handlers into the -@@ -22,11 +22,11 @@ +@@ -22,11 +20,11 @@ gecko.handlerService.defaultHandlersVersion=2 # The default set of protocol handlers for webcal: @@ -189,9 +354,42 @@ diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties icew +gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank +gecko.handlerService.schemes.mailto.1.name= +gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank -diff -urN iceweasel-13.0.orig/modules/libpref/src/init/all.js iceweasel-13.0/modules/libpref/src/init/all.js ---- mozilla-build.orig/modules/libpref/src/init/all.js 2012-06-01 09:04:16.000000000 -0300 -+++ mozilla-build/modules/libpref/src/init/all.js 2012-06-05 20:55:41.569045759 -0300 +diff -Naur icecat-13.0.1/mobile/xul/app/mobile.js icecat-13.0.1-libre/mobile/xul/app/mobile.js +--- icecat-13.0.1/mobile/xul/app/mobile.js 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/mobile/xul/app/mobile.js 2012-07-17 22:08:34.513828987 -0300 +@@ -221,13 +221,13 @@ + /* preferences for the Get Add-ons pane */ + pref("extensions.getAddons.cache.enabled", true); + pref("extensions.getAddons.maxResults", 15); +-pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/mobile/recommended/"); +-pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/list/featured/all/%MAX_RESULTS%/%OS%/%VERSION%"); +-pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/mobile/search?q=%TERMS%&platform=%OS%&appver=%VERSION%"); +-pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%"); +-pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/mobile/"); +-pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%"); +-pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/mobile/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%"); ++pref("extensions.getAddons.recommended.browseURL", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.recommended.url", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.search.browseURL", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.search.url", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.browseAddons", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.get.url", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.getWithPerformance.url", "http://www.gnu.org/s/gnuzilla/addons.html"); + + /* preference for the locale picker */ + pref("extensions.getLocales.get.url", ""); +@@ -247,7 +247,7 @@ + pref("dom.disable_window_open_dialog_feature", true); + + pref("keyword.enabled", true); +-pref("keyword.URL", "http://www.google.com/m?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q="); ++pref("keyword.URL", "https://duckduckgo.com/lite/?q="); + + pref("accessibility.typeaheadfind", false); + pref("accessibility.typeaheadfind.timeout", 5000); +diff -Naur icecat-13.0.1/modules/libpref/src/init/all.js icecat-13.0.1-libre/modules/libpref/src/init/all.js +--- icecat-13.0.1/modules/libpref/src/init/all.js 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/modules/libpref/src/init/all.js 2012-07-17 22:16:45.176878991 -0300 @@ -47,7 +47,7 @@ // SYNTAX HINTS: dashes are delimiters. Use underscores instead. // The first character after a period must be alphabetic. @@ -201,9 +399,9 @@ diff -urN iceweasel-13.0.orig/modules/libpref/src/init/all.js iceweasel-13.0/mod pref("keyword.enabled", false); pref("general.useragent.locale", "chrome://global/locale/intl.properties"); pref("general.useragent.compatMode.firefox", false); -diff -urN iceweasel-13.0.orig/toolkit/locales/en-US/chrome/global-region/region.properties iceweasel-13.0/toolkit/locales/en-US/chrome/global-region/region.properties ---- mozilla-build.orig/toolkit/locales/en-US/chrome/global-region/region.properties 2012-06-01 09:04:20.000000000 -0300 -+++ mozilla-build/toolkit/locales/en-US/chrome/global-region/region.properties 2012-06-05 20:58:59.068158482 -0300 +diff -Naur icecat-13.0.1/toolkit/locales/en-US/chrome/global-region/region.properties icecat-13.0.1-libre/toolkit/locales/en-US/chrome/global-region/region.properties +--- icecat-13.0.1/toolkit/locales/en-US/chrome/global-region/region.properties 2012-07-12 14:27:37.000000000 -0300 ++++ icecat-13.0.1-libre/toolkit/locales/en-US/chrome/global-region/region.properties 2012-07-17 21:58:17.176492031 -0300 @@ -4,10 +4,10 @@ pluginStartupMessage=Starting Plugin for type @@ -214,157 +412,10 @@ diff -urN iceweasel-13.0.orig/toolkit/locales/en-US/chrome/global-region/region. -pluginupdates_url=http://www.mozilla.com/plugincheck/ -plugindoc_label=plugindoc.mozdev.org -plugindoc_url=http://plugindoc.mozdev.org/ -+more_plugins_label=gnuzilla.gnu.org -+more_plugins_url=http://www.gnu.org/s/gnuzilla/addons.html -+pluginupdates_label=gnuzilla.gnu.org -+pluginupdates_url=http://www.gnu.org/s/gnuzilla/addons.html -+plugindoc_label=gnuzilla.gnu.org -+plugindoc_url=http://www.gnu.org/s/gnuzilla/addons.html ++more_plugins_label= ++more_plugins_url=about:blank ++pluginupdates_label= ++pluginupdates_url=about:blank ++plugindoc_label= ++plugindoc_url=about:blank -diff -urN iceweasel-13.0.orig/browser/locales/generic/profile/bookmarks.html.in iceweasel-13.0/browser/locales/generic/profile/bookmarks.html.in ---- mozilla-release.orig/browser/locales/generic/profile/bookmarks.html.in 2012-06-01 09:03:48.000000000 -0300 -+++ mozilla-release/browser/locales/generic/profile/bookmarks.html.in 2012-06-15 22:54:08.446274144 -0300 -@@ -11,13 +11,20 @@ - <DT><H3 PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$FvPhC3">@bookmarks_toolbarfolder@</H3> - <DD>@bookmarks_toolbarfolder_description@ - <DL><p> -- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/central/" ID="rdf:#$GvPhC3">@getting_started@</A> -+ <DT><A HREF="https://parabolagnulinux.org/" ID="rdf:#$GvPhC3">Parabola GNU/Linux-libre</A> - </DL><p> -- <DT><H3 ID="rdf:#$ZvPhC3">@firefox_heading@</H3> -+ <DT><H3 ID="rdf:#$YvPhC3">Parabola GNU/Linux-libre</H3> - <DL><p> -- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/help/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$22iCK1">@firefox_help@</A> -- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/customize/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$32iCK1">@firefox_customize@</A> -- <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/community/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">@firefox_community@</A> -- <DT><A HREF="http://www.mozilla.com/@AB_CD@/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">@firefox_about@</A> -+ <DT><A HREF="https://parabolagnulinux.org/">Parabola GNU/Linux-libre</A> -+ <DT><A HREF="https://parabolagnulinux.org/packages/">Parabola GNU/Linux-libre Packages</A> -+ <DT><A HREF="https://wiki.parabolagnulinux.org/">Parabola GNU/Linux-libre Wiki</A> -+ <DT><A HREF="https://labs.parabola.nu/">Parabola GNU/Linux-libre Labs</A> -+ </DL><p> -+ <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3> -+ <DL><p> -+ <DT><A HREF="http://www.fsf.org/">Free Software Foundation</A> -+ <DT><A HREF="http://libreplanet.org/">LibrePlanet</A> -+ <DT><A HREF="http://www.gnu.org/software/gnuzilla/addons.html">Free addons</A> -+ <DT><A HREF="http://www.h-node.org/">h-node</A> - </DL><p> - </DL><p> -diff -urN iceweasel-13.0.orig/browser/base/content/aboutHome.js iceweasel-13.0/browser/base/content/abouthome/aboutHome.js ---- mozilla-release.orig/browser/base/content/aboutHome.js 2012-06-01 09:03:47.000000000 -0300 -+++ mozilla-release/browser/base/content/aboutHome.js 2012-06-13 18:07:51.217531774 -0300 -@@ -37,104 +37,6 @@ - * - * ***** END LICENSE BLOCK ***** */ - --// If a definition requires additional params, check that the final search url --// is handled correctly by the engine. --const SEARCH_ENGINES = { -- "Google": { -- image: "data:image/png;base64," + -- "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + -- "bWFnZVJlYWR5ccllPAAADHdJREFUeNrsWQl0VNUZvve9NzNJJpnsIkuEJMoqAVJAodCKoFUsAUFQ" + -- "qhig0npaRUE8Viv1FFtQWxSwLXVhEawbhOWobOICFCGiEIIQRGIgCSFjMslsb9567+1/Z+7gmIYK" + -- "Vivt6Ztzz5y5b+7yf//3f/9/38PoW7gYY+i7uDDG39heJfT/q91LGTiTIcWJkCxzxDmCCBGCkBEO" + -- "FDCm5CPs+CGWYvcliRxEzDwgu9I/IzZClonQgT/jC9Eu3GFTz6sdKc57kIzHWKaFjIA2wz++Zhkn" + -- "yblMIDkAFIcDDFcQ+vtjGJuaOlKPkB2G4V4U9kcu8zfWlPtPVX/g9zZ7QwE03jDTqzWVndBUc57a" + -- "Up91gToce0cf3R05El5u6gYyNQ0BKK/x/nNmjKwwxBmx8/eSNHiWsVLXlBJ/7UdTazcN3gn3bYEw" + -- "FmG3pvOobRuScoc+ibEyF6GsUugrgEYuMGD4nqltmJjqFBkt+gcJ/ed0SZIA5crZ+gumrpQ0H319" + -- "ogBFh6aJFoGmQguf2n7tu62HnvgJ1cPBcN3m6dAnX4CM4QAQigmxdQthm9EEJ58bY3bOl/CQ2YE5" + -- "pu24LdBwZE7De+M+4gBAs/IntETphOHD4FOzNoNPbjuzBkn+48/9qKXywWPcM99Edvh2siPfHeyc" + -- "nH8mU/pM2pJLsfshI0KCNRv7viiYYXW7sRnmxTFQhCp3G9/CTqzLsht3jtkrmGJdgGF0xmYpQx5G" + -- "KBEInWdWSs4pnm6bLD3i95WJsDG7jmtiXFYwlmF2WXATmCPROE05IGa3G33sxPrsL014tGRMVo5D" + -- "uVdirD/8zJBluQgC9qSF2JKcV9cuPwudsbq1YLqCydjYGOkSngYtKq36vJUs6jqhuqXtgCvursty" + -- "uHOnSZIMWROnc/dR2J5pYAZO3tF0rOwvAXI/jvKZ/vN6zVNuHQGWjYNx/SWGiohtH9R1Y17HDRvf" + -- "4XtUCEoaQwyGbEOr5QZ3HeeLbRwrosnRNB5lHNwpuBn+HK2KWFsLcd34scWpGJd5g6Ener61faoQ" + -- "bOXk6OsWpycnP98yYdzMrLINxYks+3h1fvZlHfE6M6LXu0oa4mPko8s7TL70kuSnOmVIMxvW5n2v" + -- "00111fF1htzXWiwpnrJAw8FbD60qXtHn9o9LUrJ6r2CUBoOnDpQeKxu0ncPhntgRwKLRcErUVd9t" + -- "k1falinlvLLmLr7WHfndsh/t0WOdg9Dt1cOHTyrctWutRGzH5ZbNjcQ0FpEce+lMQwCnpMRqnSQ3" + -- "Qu50hFIzMXJnSsjt+aI+fG/kiOwUStcFQuG9AMor0GUI0da6btoyKxIKnWKaXlR/zajFCYWlXNBB" + -- "WslMKz+tpOEezkIxJtJzuvfl5ia1DCiQnuki6+MiXzRlR47s9Lwdaa1bCKAc4uscXnX5mwFvzdO6" + -- "JnlQSv8lgiOUERZ1QYLG4PqJE+ZItl2y4MDB3wjma8/XnGiuavSuUMNhKNOshdyZkmViD7EAGBrX" + -- "K9gzA1CYqPZEfEoAEK91eN3jTELIlRT7jnuhm9M5mxrmJZVNvjUio0VEC3Exr2ryLTbVCJI0/ZfL" + -- "e/TI5ZusfbXbKAcjP2706msTQRHiH3pxa2ghgIlkU+9b91zqRA6OK6MIQh+nG8HP6wT4PPzD3n3z" + -- "lxoRiohl5eVd/1G/qC2Ug8LBOcMYh5PYd6mqemTRJ8d88axb3r//NTkYT2tQ1e27W3yzo+aamh0k" + -- "NoWIcfeJ1Ss8A2EU0xgqflEkYQBGBuYAe3hByAHiNVBcqyRdLzEjYLhpEGFk/CaHXFtZX79RD4WR" + -- "Bl4plOWR3MhkbI0DMOHfFhNjaEK6Neas1D9Rg3qVHQFwLHIV9DkN01miaxD6LNUjQpKPMQLHl522" + -- "jWAVtQxELTM7agBN+AdcGwYNvJREtDwjrOL5hQWpVf36TTtcVFRhGMaAlxsbpw+prCwt/fRTHoZE" + -- "MVS1Sna5r5CUpKExisc0RVFix4BoKEFHlDES78dIcYjdf0FRhapqH5tQxAyTtiOwZHVTk3dWdnaV" + -- "zFgv27a5RzfKlt6PAiOZFQWmrUTy2Y3WFntPdgruhXVWxIFRA2ZIBq9QqeP18PvlBPAtRq0gHGNQ" + -- "uHbN4ej+qJDDmMZIaaZZYASC/MzTe1RScmmdqlZce/z4CLFfW7RoppWsSP1Wy7R5NeTpfMNnU+s2" + -- "pGIZ2KC4oEGoOOCb/7aNpkKbWKsswhhoUrQZBmPdp/hXcWDUQCjIGZFByLB2Su9ogaUaRhAa8hsG" + -- "DxXFCmlB8CBKleyhZynXiWkwv6VRpEVYkBtnBGq28bMPZcmjC0rKCxPLFqy4GDWbVwSOPemLGhvP" + -- "SMJNlc2+es0fQGYo5HnH59sCoMQLWVU0LV4ISqHjf/obtbQQxCbMnPngRcM25MbCB5giDo+Hl6Xg" + -- "qtVd6yqWeu7e91RyR++Rd28OthAUaLZRa+0Rrg+SNxQqD0dDyRx9lmqY6brOVDi7HFHV9/mWvV5z" + -- "r63aSCF0yDOlcla7NZrFmA3AeH2E1052/ebi1ZZ6ej3oh8eZ2fe1vtPqOTi495SaHygOOc1/dOFj" + -- "QnsYhdMw44lFaMysU6dOBCBvRcCB35fl+0X4am3COCaakdoVjVaoZgW1dESJnSd5hiz/7NU02Qbd" + -- "4dpDYdLL7wizOLW5OGoRTAM+G0VCBrg0yDOMXRGJPB8GNpim2efF7Ozi9hgA4Hfxm0b53NbW/Zyy" + -- "i7bQlyJBFjIjDF1ViKe29xhEJizP0Flw6S76klhfrX+j8C7dt/8BPRxpsGnGyqKfGRQ7O20OVr80" + -- "NVT9bIMIBwhrygMsLr7RcKvT9bUq1zXLumVtdvaAs56V+GK+3UMXEK15HzU1jvANHa47/YIGJ2cT" + -- "DmAWSIZtUdT9tiDpNjEQpZ1pJpumqiKih0AfSHTB2X7/2w2GsT4CNM8k5NlnPJ7Eyg+vT0+faVqW" + -- "Z2tEu1cYaC3fQxsPnaS/swAYN2K/qnhQHpgAKC6/Xx6Qgtmkilo2Z9WHrFHQnO/Bf/rtoctPlOVM" + -- "az35/pKIyhCAh6SUQre4H/M+L7lAqJl+RvKsVeHw0pBlntJME2VQunVzRsaERCfuyMzMfyszMzN+" + -- "ak52XTQ2333prxdJzuyRXGSw7KjFEnlUwYF1zrROLbxO4umwcVOWkjV0z51YyXqaEQsR9djYQMX4" + -- "TTwVQst8NiVlPqS+Upj0EAyZB9+tcB4ZByJ71V5C7ntcj550Q4KBTl7pvjFVmtbnYvSQ7ACcEZoD" + -- "fTUwbgDE490fN6B5o5fRjdAXiDNBGKLwNVMLZnTJLPrDh1hypAFHAkTzXnNqc+GHfG75oYxVYN0k" + -- "YEwQXPEAcuF9ZIH/01ku1/ChivJHkNCeMk8sCNXChCdhQr7+6uvC4RU4d8RJ1PRuV64JKdDSU3su" + -- "HuHMuKJUcuWMhMU4QHwflWBHgFEb4tXuSs3gEaLV7bdDlXvU6rm7hKH8SobmmawohUNkeSDUghdD" + -- "0vfXMrbnYdOoSij6Eg108TFje6EOMwbjwZ0zUHeXA5GGANoz6jm2VwCotikBcN7YpvHEtvrDnoqh" + -- "t58kuzpDJcoPhQDO6YGn3+pTK/007QYUoClgOUHpWAUuldPV4VYYn8rXfMDpHN4NS4McOBpsJ7fZ" + -- "9utrbNvLWYdzrq5H3PO+Hfmy8GCKaI7U7o/3wq6ObklOIkhykcD+sbuFMeKAcKYos8RvSczhEgLM" + -- "EioJknDoTEznWLDNJb5RO2POPBfqf2frdFN3LAz6Im+agU9e+Xzn8HLod+dcueXnDk/vX2DZlQaK" + -- "/ebpLV0miPmcCXs1xZySWC9JMA/Fz3/CeXZbgcTCIEVMqiSAkFguxQ0mX06IX9KueIuPpV/xPCS+" + -- "ttQGnDMs6Tej8SaseF4LN9c9cnxNj6VxI8Q+3em9Hx+c3PmW1UDztMZtXVLEfdymbGAJ60kJGZQm" + -- "tH99bE8YGN/wd/mgxdG7NFDb8/ZohryYA5HguHhI5uYO27vyoqtrmAiXr31JX/V48CuY8R8FJhxE" + -- "eeEAQWk9HnYlFmMJoRKG03QLtUJ7/93FvpXXJ7wM/6Za4l71UEu5pWkoucv0Be0tm95vmUdy5t5k" + -- "tpbPbe8B2vmsi7+rl2Nf4yVaUlLHSQXu7r8tw1JyT+ivhQBaAhZUxBSC5EPpPtMKVDzi3z/+HZHJ" + -- "7K/7IvC/CRhZ6Ep6evGGyXJS3kAsp3SGcgLKc7uSktBhrW7ZFq32r/HHCVbb0P9fBSYOTpIoJ5SE" + -- "7GUnpHbrbG8EzsfWfwgwAEfC/ToQIhkhAAAAAElFTkSuQmCC" -- , params: "source=hp&channel=np" -- } -- --, "Яндекс": -- { -- image: "data:image/png;base64," + -- "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAcCAYAAADcO8kVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ" + -- "bWFnZVJlYWR5ccllPAAABWFJREFUeNrsWWtsVEUUnltLH7tbaeuDbfCBojUoBTGmooLE+Igx+gON" + -- "RvEJhEQNUdEYA0Ji4xNf2Bg1iBJJrGBC+CEBNYoxxmh94CMKRE2MitBqoZRi6bbdZT3TfhM/TmZ2" + -- "u5jGsOEkX8/0ztzp3HPP4zu3UTabNUfEI9YwgzAxjUbBGkG7IAv0CwYE53rWC+KChFloRh329igN" + -- "zD8keJR+P2DvEbgnrjp4eWT65GerSZuU6FWii9Fj5pGHvC6ow/WpdP1C7SV3Bm18eNpDG2a0oA0P" + -- "v0qFSn3IMPOKxChsmBJ1/TpBEuNn1NxRB8XOoJSYRabfrCiG0FGiDXMZ9HeC73PfGpkOST0vmYGi" + -- "LEraMCdB/5jP46xhnhaj7C3Sal2qjFSDcU8eb4m2m4xpHvKWYwSTBd2Cr1HBrIwVnCXYIdiiNrDh" + -- "Wi8YQLVzZ+mDt/ar9acK5gqOE6wTvKvmE4JzsN83ghSu1+AMMcGngr/pnnHYM4nzrRX8EapKm5Fc" + -- "3/bwlAn/Jt/EtJdNmdvidjxcpyrjT+D6Fx7LPoA5jf3ktU5metY9rtZcRHNn0vV3cO0rtf6GwN9v" + -- "DCXfX6AbVLL1hJJOxIM6UtwnJG7ORuIaMl5W7W297g2MmwR3YLxQcDmty3jOdongCrrXyRTBaoyf" + -- "x5qdgjZ4qzfHbCQ3mzXcChcYH8hhIGf0zwQ3Ch6k8/Ae9yEM3hc8LFguWIm5uwIvwYXhPdA2RNbT" + -- "/BLoFsECwXsw1gUIZa9h7NvZivGLgkk010eHjv5jbitXD1HiWVMhuB7jDXR9E/R0Qa3nPvvmTxZc" + -- "7fGWyQhNK6/R9b8Ev4aSr0HyunWQ3Q/li8/hdh8JTiOD+DpPa7jegHtriUN35zDMRMEJGH9J17dB" + -- "18KzO9V9NvndjbH1sB9objp0u+CT4VYlJ5txKLvpDMFsIJ/EwYOs9bsEp+RYeyz0nx7y6ORsGu8K" + -- "EM2kx1ts7rkXL+YxNd8I/TOcoCDDOB5jY/Fj/P4cEmVTjr0SlKNCOcjJ8fQgodAcQ/d/i/BLK8Oo" + -- "ZtYcLVgGD1wq2K7mx0LvKITHaFlCbny/oI4M43uQDJJkL3KH5RWnB/auh96ax9AGnKQdoZNAyO4T" + -- "VHv4VobC+XzPntWUMgpivtwzufbgWbVpSHYh4V0DnrA6YETrCWdgvGUYIboX9KEahqlFcq0GT2HZ" + -- "jwrXBW4zJ/C8FYdqmEWUb94aZniUUbXJVbmm0N6/5zjbPnohcfKePiDlSfBJeO0r9Bx8pi7oEw/F" + -- "MPMp8S0roARHar+QYS6FXp9nv230dicVcA7LaZoxHo/ncfIbEdi6Qgxje4vFRL5aRqA/uxn6Vc9c" + -- "muK/lXqeuQXsPwZMdi0RPedxH1AFva0QwyygavDkCBjlFuy/HJWhksLQgOVyxWqh3mYx7RND2Pi8" + -- "0n1+baawmU9e2o6x/XR7raIQVb4mskGQQaO4ydNENlATeTE1kXOQc/agXDpZqhq42dQL2US9G1Wl" + -- "G5XEzaWJbyTBddzcTuSmAYTMOKybQWsmeppIbk5nqcbxJ1RHO37B10TeRL3KU543kUKF0J8leqgq" + -- "8ae8PdAd6ltPL954LXQV/m4HEbgaYqjT6KNZHWhAKd5+mzpDN4WflUdw5koweitv4lldX2QpxQSc" + -- "/UOfx9jvvTHBKP+/RmKRoHwIiYg8pgQJsszTKFYSV2qC0VcShyqnqlEKRpolqsAyFfnpKmLOnOgr" + -- "VAVirhYnYzsZLbgSe57nwtL375N8H+Oy3H2qKpAKEL5eVc65E04rD2NW66uWrUDobKnAnPs7PR5+" + -- "tLFQHjMS0knhEZLdim/8bxId+RetX/4RYACXlwEEPBQycwAAAABJRU5ErkJggg==" -- } --}; -- - // The process of adding a new default snippet involves: - // * add a new entity to aboutHome.dtd - // * add a <span/> for it in aboutHome.xhtml -@@ -142,7 +44,7 @@ - // The <a/> part of the snippet will be linked to the corresponding url. - const DEFAULT_SNIPPETS_URLS = [ - "http://www.mozilla.com/firefox/features/?WT.mc_ID=default1" --, "https://addons.mozilla.org/firefox/?src=snippet&WT.mc_ID=default2" -+, "http://www.gnu.org/software/gnuzilla/addons.html?src=snippet&WT.mc_ID=default2" - ]; - - const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day. diff --git a/libre/icedove-libre/.directory b/libre/icedove-libre/.directory deleted file mode 100644 index ef6a156b3..000000000 --- a/libre/icedove-libre/.directory +++ /dev/null @@ -1,2 +0,0 @@ -[Dolphin] -Timestamp=2012,5,10,17,26,4 diff --git a/libre/iceweasel-i18n/.directory b/libre/iceweasel-i18n/.directory deleted file mode 100644 index afc87a727..000000000 --- a/libre/iceweasel-i18n/.directory +++ /dev/null @@ -1,2 +0,0 @@ -[Dolphin] -Timestamp=2012,6,29,21,18,45 diff --git a/libre/iceweasel-i18n/PKGBUILD b/libre/iceweasel-i18n/PKGBUILD index 9e0469437..16f117255 100644 --- a/libre/iceweasel-i18n/PKGBUILD +++ b/libre/iceweasel-i18n/PKGBUILD @@ -9,20 +9,20 @@ # - Run 'make'. It will take care of everything else for you. _debname=iceweasel -_debver=13.0.1 +_debver=14.0.1 _debrel=2 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } -_langpacks=(af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-ZA eo es-AR es-CL es-ES es-MX et eu fa fi fr fy-NL ga-IE gd gl gu-IN he hi-IN hr hu hy-AM id is it ja kk kn ko ku lg lt lv mai mk ml mr nb-NO nl nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta ta-LK te th tr uk vi zh-CN zh-TW zu) +_langpacks=(af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gu-IN he hi-IN hr hu hy-AM id is it ja kk km kn ko ku lg lij lt lv mai mk ml mr nb-NO nl nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta-LK ta te th tr uk vi zh-CN zh-TW zu) pkgbase=iceweasel-i18n pkgname=($(for lang in ${_langpacks[@]} do echo $pkgbase-$lang | tr A-Z a-z done)) -_pkgver=13.0.1 +_pkgver=14.0.1 pkgver=${_debver}.${_debrel} -pkgrel=1 +pkgrel=2 pkgdesc="Language packs for Debian Iceweasel." arch=('any') @@ -56,87 +56,90 @@ package_iceweasel-i18n-$(echo $lang | tr A-Z a-z)() { " done -md5sums=('757e700b430500bd1bc4a32531c9c5c2' - 'beb404a571e3e666de849e3ccd6887c4' - '3bef09f6330c11c43eaa3b2349d65172' - '8abaeec4486169bb85be05f289c0eae9' - '55d5c50733a1d08acbd85292cb596589' - '10ed3b7da37259a870507287b026f69c' - '8ef3e6cea973059a328eb5792a507e5d' - '64a37cd546b0e092ddd2495e8ee8fb33' - 'ce9a0bbdc6715ba9350050dcb640201a' - '5506b1e58bb9e8a100b1c7a527f95dcf' - '6920f4fb2d266d5839872a254a41c760' - '73f6d4a70be7b0f0c15627e72685d402' - '695fb3e883e6949d1ad13460389dbec2' - 'c0ed06cb371edb89d2c42f4175dd8ab7' - '074429b21f92d61db196d49d60fef32d' - '9e4b3ecf3ecc9b577e5f8c33df68c006' - '8e3b3090910d5d2b40b5deb0ee589359' - 'a6c969cb9a8c97a548a16422ac4e2664' - '6394347deb1924c46992eb9d5e9498c9' - 'de44e8a2e3e8de215fdf6b6f6399f88f' - '57b8a69ff712d6416160a5c5c61e6ba7' - 'dd453683292ad2f2181e720a6b834f11' - '04d2d05e22208106b67cc136d2b66892' - 'f5474e87498f8da3ed27b11816a64906' - '6d60eabb499c2e672a5ebc5ea32c6c58' - '91b86461bfc8f1728d1b4e55d102622c' - '525e770773177bbdb2c8ad14ffb4534b' - '98139e2c2c1cc11e6d47a46b2483c290' - '295ee591cc1480da7b2adacf470c1ab1' - 'a95c27e109eb5768b1ce4dbf3e58ddca' - 'b8dccb786a16c6ebf8c015997aa96577' - 'a647e17fd8c7c9d039c140e36c3e18a7' - 'd20309e9a6092e9a7a92c1ded0d55f62' - 'e0e5948c8353d3de76912884edc20297' - '8d0bf7dbb40e06495d8c749758163246' - 'f34d9ec431acc2b1178ac3cdbfae3856' - 'cb68c4036bdb9ac69428a035e04668dc' - '2949b4e18de48b29c62ef03b3ba4f94d' - 'aec2a61b12f7e5dac2f46251407c6b47' - '60285cbb93249fea5d5afba3dbaf115f' - 'c3f33724ded35468760aac7816b2b591' - 'dc9b02972a247dc5fbeabcc42942c4ac' - '512bffe5f782e92da15bc4c9b2035ded' - '3c04ca7f6d726e417dc1459eaa8bc068' - 'd8526259b9560e9164862df34db555a7' - 'af3630dbd3a327ce99edf96b8cb35dce' - 'ffeb0437949a5e623b12dbcde41b6d39' - 'c653d9c9101394d29c5f5a3b7bf510e1' - 'b31c230e4cbf3d1f73b499509ff3e805' - '548228527e6772ee5f457fff41826b02' - '40b5e98319effec4f1605a831c393cda' - '09899eacc5d1e61767a87ecd093267d8' - '1907de3acaa8e4c99539f99c0442770e' - 'dc4cdef93b037e40ee6fd3f4c0848e29' - '409e9fa01c0b2982ba7e335d7001b905' - 'c30fed12e22cf16ea86374ca541a32aa' - 'a9cc0798968851f51521399171e1454f' - '6b53e84454a196870e631db5859fa9f3' - '7939907fff93c0b984b445d8ea603baf' - '7370eca015e6ed0289a9db4e5f4cd908' - '84eaa820922b25b9b16724099a78c139' - '23f15310ffd0d70d3aaf9b37436a16bb' - 'a4063289c46317f0d351f11e8a0d1527' - '012417e2c4b0d2e597273f988b9f877b' - '3feaddb7edef32adfc561aa3eeedafe8' - '69fc663f9951867c9139a3a39973e0a5' - 'a9c3fed813c45fd32b17576a32ccf35a' - '01fe030c2949facb8512a667e9e6e9ee' - 'f8d63b2ae7d24753422e266224de32d2' - '335ce46bda9f0a69414dc180ea780a70' - 'a0b4ef73ad4322ea536d08918d630c9f' - '39380afb97827cde59536c81310de562' - '06930aeffde351d14554de1f0f93728b' - '3d1fe2feefd0e44c213360c405006a98' - '3f0af6bbd75b45b7703f35e3e594a7a7' - '89f90e0a35b81423257b113a37a71681' - '24fc060c80197d73585902fec40de1bf' - '7738a9596bf1e198c6de3ec3e694e7eb' - '8fbf72bb8c1d5cfc7dbcb02af506da3c' - '8790e5d8e5317fba199bfb3f135847bc' - 'd768e2190bcea36233625d948d879b39' - '3bac90764599a61b14f82e9a51d72d36' - 'eb3d0fa986f6ffd54f2bb48fc482227e' - '3c8166c380597924871688c8c6bf795c') +md5sums=('5dbcf3c8505ea994eff5d0acb15212e2' + '093fb9d627ea2bcc39e95cda8308c07c' + '427f4163eae1095e0e3be610f5f846d0' + '50119c3ffdac18ae2df52a46e4655e5a' + 'd0707bb9946c0a27f2b33af081cef4a5' + '1ada65da05be04a6ad914fad2aa298bc' + '06d3ff7c4204f7b426168fe2d585770a' + 'd033fdd61508953a0722c6328fe075d8' + '67e56c4382d44040f30d2a0e9aa062aa' + 'e98bc2ddd0c4f14e03def6c2df3957a6' + '4b1859cd09bbeecb237c96489900e5cf' + '73b919dcf6ae7f99f720e1663d90ea6e' + '116c9ff17523c2f266534b525e37d9d6' + '7d3b4380052ff083fad73c1d67b5dd44' + '90ae8638c6ba5e206d723282e92e2b4a' + '382d425cecf79d03122700a49dc0a1e1' + '689264c005413858c23ba36d85bc70e9' + '296e06f04ad3a4ec08c782679c4648f5' + '144ffb16d13c246c1614ed4a47ddb91a' + '5a7189208bb083164a37294b0906df6b' + '324ce70af22e92d1f27899cb68f73045' + '7e8bd44385e0dd1b7fddd24763d53d0d' + '9f93cedb8c0944c84b9521d80a8f1df8' + 'bb86603af183212d7ea21850fc6b29de' + '407f885a228a9749f85f0196d91d2fc2' + '8d0d5d304b19476469a5e420a0f4cc6c' + '0a73d219723c014024adea95e16d1f05' + '948e672aecb65d8b106df4a07e69a81e' + '8ab485858ffb7d7a2318eb23cdbad9bc' + '6d1dece438ee2ef35e7cd18a48a04a6a' + 'cfb060a8b9587895c892b1741120bd30' + '7c9389eb1992d1b90bd3d13bad4ea99e' + '7ada62ede579765142804eb7fbf31556' + '068454a1f2e4e95a9ca6be00cb7ae679' + 'd24b9b2bb4924d179f2685735a823054' + '5e957199698370322cece21d774c7f68' + 'a60e60ac350a81b2ac547a7c1fe1c4a0' + 'd86486dee2f1a316c5a386b39b3bd717' + '054229f80d2df10247870c0b65330b67' + '1725e81231cc3ff6d95781e749f2b959' + 'ac404aa939294948ad3d6e70df1cede1' + '59c1192284bcbde4656b3319131e2eec' + '9f29e2ed16768b1d7a78bf5640ed2332' + 'd704d145dc15203ab0e5687d0aad8bfe' + '53b610ec98c5d8b956f2a893bec24e27' + 'bff195ac895b92333323c2bf22e1f61e' + '69f039841fbd31b32a583ad8737c3aca' + '95c70c4c5dd7d1c456ca36ec346a9c12' + '24e936478bcb8b8dfe7c905c3ca2a8dc' + '306172bd7802fb9d8da86101add3de9c' + 'c104bb81dd70d6ec3dfe864ef03474c1' + '2be0cce97e74762a01b47ee2c647ca4c' + '3b2cf401cbce2339f2b7c54bb817af1c' + '16815d1d5e2a8748a1074bc878f34919' + '231db84b5ef6ee4c1f72cf3eaa920952' + '84a5a5e773a9340557d8e4b92031d9f2' + 'cc8a65ce72f818ce2a65bcba592b5493' + 'a9e0f71ef5e221b78395da7581eca0c1' + '4b9c21aeccd082e2241987ea8a1885bc' + '5d7a0e8d58729c4263449044c23b5f09' + '7e42a0bf231e4935d3320b102a314da1' + '94f318cc46669eeaf67c4367f9701511' + '5c70c86327d806e58e6c5f204849ba51' + 'c569a5c51b711d7403e0f8c99647ea34' + '076ca5bc5b46894160e6015f0e888d0f' + '252851999ea99ce03cd9c50e6ab6c348' + '8db75829b397159116cd06c1992bbc5f' + '7516889bc11013f08b95ceea06e57aa2' + '915bfc417d1cfd7cb44c2ba571c9b152' + '356ba91ec47e31dc22a6898b72010a34' + 'bca1dcf5cd3be873b6a1e64e33f3c581' + 'b83cfa17f58a8394bd19253a304a1792' + 'b40cdb01f00b94ea3ca4d6bf29cf69ba' + '88b5c9176131ddf792b94e197094eef4' + 'a2903206a4b309636ec38d478b268946' + 'b4ad0c985f48c6fefb125bf7bfc853c6' + '764fcdff3486b68b724f0975d4f6451d' + '7dd864a7f81dc54534ce3ee4abf8c8e6' + 'b0dae765abfac086c464c8fe975219e9' + 'c5d5e5189b9c7bf705b18c8030d09b58' + '1bfaa781fe701baa51c9089571686cd1' + '27e8c25b11e9e305ca4c3b9f5661936d' + 'b2b8fbbd0b42bdc79c7abae3443da189' + '5210197343b334229fb8f07ad6aa33ea' + '06771b3e460077b5fb994d415168b548' + '9804d07cb3bc46c490c1c9e7d0d10edc' + '0917b254d82079138c76878d10ad631e') diff --git a/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch b/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch index 3e7149308..4a0507271 100644 --- a/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch +++ b/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch @@ -1,17 +1,21 @@ +From: Mike Hommey <mh@glandium.org>
+Date: Tue, 5 Jun 2012 08:57:06 +0200
+Subject: Bug 756390 - Make the "Reset Firefox" feature more generic
+
diff --git a/browser/components/migration/content/migration.js b/browser/components/migration/content/migration.js
-index ffb0c34..442a5ff 100644
+index 0e8ccf5..fa46c08 100644
--- a/browser/components/migration/content/migration.js
+++ b/browser/components/migration/content/migration.js
-@@ -314,7 +314,7 @@ var MigrationWizard = {
+@@ -249,7 +249,7 @@ var MigrationWizard = {
}
- var bundle = document.getElementById("brandBundle");
+ var brandBundle = document.getElementById("brandBundle");
- // These strings don't exist when not using official branding. If that's
+ // These strings may not exist when not using official branding. If that's
// the case, just skip this page.
try {
- var pageTitle = bundle.getString("homePageMigrationPageTitle");
-@@ -346,8 +346,8 @@ var MigrationWizard = {
+ var pageTitle = brandBundle.getString("homePageMigrationPageTitle");
+@@ -281,8 +281,8 @@ var MigrationWizard = {
case "chrome":
source = "sourceNameChrome";
break;
@@ -22,75 +26,107 @@ index ffb0c34..442a5ff 100644 break;
}
-@@ -357,8 +357,13 @@ var MigrationWizard = {
+@@ -292,7 +292,12 @@ var MigrationWizard = {
var oldHomePageURL = this._migrator.sourceHomePageURL;
if (oldHomePageURL && source) {
-- var bundle2 = document.getElementById("bundle");
-- var appName = bundle2.getString(source);
+- var appName = MigrationUtils.getLocalizedString(source);
+ var appName;
+ if (source == "brand") {
-+ appName = bundle.GetStringFromName("brandFullName");
++ appName = brandBundle.GetStringFromName("brandFullName");
+ } else {
-+ var bundle2 = document.getElementById("bundle");
-+ appName = bundle2.getString(source);
++ appName = MigrationUtils.getLocalizedString(source);
+ }
- var oldHomePageLabel = bundle.getFormattedString("homePageImport",
- [appName]);
+ var oldHomePageLabel =
+ brandBundle.getFormattedString("homePageImport", [appName]);
var oldHomePage = document.getElementById("oldHomePage");
diff --git a/browser/components/migration/content/migration.xul b/browser/components/migration/content/migration.xul
-index f8653b1..f3ac62a 100644
+index 4bcc1d9..c4db956 100644
--- a/browser/components/migration/content/migration.xul
+++ b/browser/components/migration/content/migration.xul
-@@ -76,7 +76,7 @@
- #endif
- #endif
+@@ -74,7 +74,7 @@
+ #elifdef XP_UNIX
<radio id="chrome" label="&importFromChrome.label;" accesskey="&importFromChrome.accesskey;"/>
+ #endif
- <radio id="firefox" label="&importFromFirefox.label;" accesskey="&importFromFirefox.accesskey;"/>
+ <radio id="self" hidden="true"/>
- <radio id="fromfile" label="&importFromHTMLFile.label;" accesskey="&importFromHTMLFile.accesskey;" hidden="true"/>
<radio id="nothing" label="&importFromNothing.label;" accesskey="&importFromNothing.accesskey;" hidden="true"/>
</radiogroup>
+ <label id="noSources" hidden="true">&noMigrationSources.label;</label>
diff --git a/browser/components/migration/src/BrowserProfileMigrators.manifest b/browser/components/migration/src/BrowserProfileMigrators.manifest
-index f49e481..e490ddf 100644
+index 527771f..782b38f 100644
--- a/browser/components/migration/src/BrowserProfileMigrators.manifest
+++ b/browser/components/migration/src/BrowserProfileMigrators.manifest
-@@ -3,4 +3,4 @@ contract @mozilla.org/toolkit/profile-migrator;1 {6F8BB968-C14F-4D6F-9733-6C6737
+@@ -3,7 +3,7 @@ contract @mozilla.org/toolkit/profile-migrator;1 {6F8BB968-C14F-4D6F-9733-6C6737
component {4cec1de4-1671-4fc3-a53e-6c539dc77a26} ChromeProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=chrome {4cec1de4-1671-4fc3-a53e-6c539dc77a26}
component {91185366-ba97-4438-acba-48deaca63386} FirefoxProfileMigrator.js
-contract @mozilla.org/profile/migrator;1?app=browser&type=firefox {91185366-ba97-4438-acba-48deaca63386}
+contract @mozilla.org/profile/migrator;1?app=browser&type=self {91185366-ba97-4438-acba-48deaca63386}
+ component {3d2532e3-4932-4774-b7ba-968f5899d3a4} IEProfileMigrator.js
+ contract @mozilla.org/profile/migrator;1?app=browser&type=ie {3d2532e3-4932-4774-b7ba-968f5899d3a4}
+ component {4b609ecf-60b2-4655-9df4-dc149e474da1} SafariProfileMigrator.js
diff --git a/browser/components/migration/src/FirefoxProfileMigrator.js b/browser/components/migration/src/FirefoxProfileMigrator.js
-index 7b4a6e4..add5bc4 100644
+index 8f14f49..8dc175d 100644
--- a/browser/components/migration/src/FirefoxProfileMigrator.js
+++ b/browser/components/migration/src/FirefoxProfileMigrator.js
-@@ -448,7 +448,7 @@ FirefoxProfileMigrator.prototype = {
- ]),
+@@ -88,7 +88,7 @@ Object.defineProperty(FirefoxProfileMigrator.prototype, "startupOnlyMigrator", {
- classDescription: "Firefox Profile Migrator",
-- contractID: "@mozilla.org/profile/migrator;1?app=browser&type=firefox",
-+ contractID: "@mozilla.org/profile/migrator;1?app=browser&type=self",
- classID: Components.ID("{91185366-ba97-4438-acba-48deaca63386}")
- };
-diff --git a/browser/components/migration/src/ProfileMigrator.js b/browser/components/migration/src/ProfileMigrator.js
-index ea66675..fe4df10 100644
---- a/browser/components/migration/src/ProfileMigrator.js
-+++ b/browser/components/migration/src/ProfileMigrator.js
-@@ -51,6 +51,10 @@ ProfileMigrator.prototype = {
- params);
+ FirefoxProfileMigrator.prototype.classDescription = "Firefox Profile Migrator";
+-FirefoxProfileMigrator.prototype.contractID = "@mozilla.org/profile/migrator;1?app=browser&type=firefox";
++FirefoxProfileMigrator.prototype.contractID = "@mozilla.org/profile/migrator;1?app=browser&type=self";
+ FirefoxProfileMigrator.prototype.classID = Components.ID("{91185366-ba97-4438-acba-48deaca63386}");
+
+ const NSGetFactory = XPCOMUtils.generateNSGetFactory([FirefoxProfileMigrator]);
+diff --git a/browser/components/migration/src/MigrationUtils.jsm b/browser/components/migration/src/MigrationUtils.jsm
+index 9460e6d..8db6827 100644
+--- a/browser/components/migration/src/MigrationUtils.jsm
++++ b/browser/components/migration/src/MigrationUtils.jsm
+@@ -403,11 +403,6 @@ let MigrationUtils = Object.freeze({
+ * @see nsIStringBundle
+ */
+ getLocalizedString: function MU_getLocalizedString(aKey, aReplacements) {
+- const OVERRIDES = {
+- "4_firefox": "4_firefox_history_and_bookmarks"
+- };
+- aKey = OVERRIDES[aKey] || aKey;
+-
+ if (aReplacements === undefined)
+ return getMigrationBundle().GetStringFromName(aKey);
+ return getMigrationBundle().formatStringFromName(
+@@ -622,6 +617,17 @@ let MigrationUtils = Object.freeze({
},
-+ canMigrate: function PM__canMigrate(aMigratorKey) {
+ /**
++ * Returns whether a given migration type is supported.
++ *
++ * @param aKey Migrator key
++ * @returns whether the migrator key is supported.
++ */
++ canMigrate:
++ function MU_canMigrate(aMigratorKey) {
+ return "@mozilla.org/profile/migrator;1?app=browser&type=" + aMigratorKey in Cc;
+ },
+
- _toCString: function PM__toCString(aStr) {
- let cstr = Cc["@mozilla.org/supports-cstring;1"].
- createInstance(Ci.nsISupportsCString);
++ /**
+ * Cleans up references to migrators and nsIProfileInstance instances.
+ */
+ finishMigration: function MU_finishMigration() {
+diff --git a/browser/components/migration/src/ProfileMigrator.js b/browser/components/migration/src/ProfileMigrator.js
+index 744f117..59e5a4c 100644
+--- a/browser/components/migration/src/ProfileMigrator.js
++++ b/browser/components/migration/src/ProfileMigrator.js
+@@ -12,6 +12,7 @@ function ProfileMigrator() {
+
+ ProfileMigrator.prototype = {
+ migrate: MigrationUtils.startupMigration.bind(MigrationUtils),
++ canMigrate: MigrationUtils.canMigrate.bind(MigrationUtils),
+ QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIProfileMigrator]),
+ classDescription: "Profile Migrator",
+ contractID: "@mozilla.org/toolkit/profile-migrator;1",
diff --git a/browser/locales/en-US/chrome/browser/migration/migration.dtd b/browser/locales/en-US/chrome/browser/migration/migration.dtd
-index 86e9d0b..8df7864 100644
+index 0b4b776..ce26fbd 100644
--- a/browser/locales/en-US/chrome/browser/migration/migration.dtd
+++ b/browser/locales/en-US/chrome/browser/migration/migration.dtd
@@ -13,8 +13,6 @@
@@ -99,11 +135,11 @@ index 86e9d0b..8df7864 100644 <!ENTITY importFromChrome.accesskey "C">
-<!ENTITY importFromFirefox.label "Firefox">
-<!ENTITY importFromFirefox.accesskey "X">
- <!ENTITY importFromHTMLFile.label "From an HTML File">
- <!ENTITY importFromHTMLFile.accesskey "F">
+
+ <!ENTITY noMigrationSources.label "No programs that contain bookmarks, history or password data could be found.">
diff --git a/browser/locales/en-US/chrome/browser/migration/migration.properties b/browser/locales/en-US/chrome/browser/migration/migration.properties
-index 495ed78..0272654 100644
+index f522a66..be26460 100644
--- a/browser/locales/en-US/chrome/browser/migration/migration.properties
+++ b/browser/locales/en-US/chrome/browser/migration/migration.properties
@@ -4,7 +4,6 @@ profileName_format=%S %S
@@ -113,8 +149,8 @@ index 495ed78..0272654 100644 -sourceNameFirefox=Mozilla Firefox
importedBookmarksFolder=From %S
- importedSearchURLsFolder=Keyword Searches (From %S)
-@@ -21,27 +20,27 @@ importedSafariBookmarks=From Safari
+
+@@ -18,29 +17,29 @@ importedSafariReadingList=Reading List (From Safari)
2_ie=Cookies
2_safari=Cookies
2_chrome=Cookies
@@ -124,8 +160,8 @@ index 495ed78..0272654 100644 4_ie=Browsing History
4_safari=Browsing History
4_chrome=Browsing History
--4_firefox=Browsing History
-+4_self=Browsing History
+-4_firefox_history_and_bookmarks=Browsing History and Bookmarks
++4_self=Browsing History and Bookmarks
8_ie=Saved Form History
8_safari=Saved Form History
@@ -147,11 +183,14 @@ index 495ed78..0272654 100644 64_ie=Other Data
64_safari=Other Data
+ 64_chrome=Other Data
+-64_firefox=Bookmarks Backups
++64_self=Bookmarks Backups
diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js
-index c86d80c..ff1ccfe 100644
+index 957d4d8..1af3629 100644
--- a/toolkit/content/aboutSupport.js
+++ b/toolkit/content/aboutSupport.js
-@@ -608,13 +608,13 @@ function populateResetBox() {
+@@ -616,13 +616,13 @@ function populateResetBox() {
.getService(Ci.nsIToolkitProfileService);
let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
@@ -169,46 +208,43 @@ index c86d80c..ff1ccfe 100644 return;
document.getElementById("reset-box").style.visibility = "visible";
} catch (e) {
-diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
-index 6f0d2d6..da7342b 100644
---- a/toolkit/content/jar.mn
-+++ b/toolkit/content/jar.mn
-@@ -38,7 +38,7 @@ toolkit.jar:
- + content/global/mozilla.xhtml (mozilla.xhtml)
- *+ content/global/nsDragAndDrop.js (nsDragAndDrop.js)
- content/global/resetProfile.css (resetProfile.css)
--* content/global/resetProfile.js (resetProfile.js)
-+ content/global/resetProfile.js (resetProfile.js)
- * content/global/resetProfile.xul (resetProfile.xul)
- * content/global/treeUtils.js (treeUtils.js)
- *+ content/global/viewZoomOverlay.js (viewZoomOverlay.js)
diff --git a/toolkit/content/resetProfile.js b/toolkit/content/resetProfile.js
-index 975a9ed..d8e46b1 100644
+index 84de6cd..3126da6 100644
--- a/toolkit/content/resetProfile.js
+++ b/toolkit/content/resetProfile.js
-@@ -6,12 +6,10 @@ Components.utils.import("resource://gre/modules/Services.jsm");
+@@ -6,6 +6,7 @@ Components.utils.import("resource://gre/modules/Services.jsm");
// based on onImportItemsPageShow from migration.js
function onResetProfileLoad() {
--#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
--#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
- const MAX_MIGRATED_TYPES = 16;
++<<<<<<< HEAD
+ #expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+ #expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
+
+@@ -16,16 +17,22 @@ function onResetProfileLoad() {
+ "8_" + MOZ_APP_NAME, // Form History
+ "2_" + MOZ_APP_NAME, // Cookies
+ ];
++=======
++ Components.utils.import("resource:///modules/MigrationUtils.jsm");
++ const MAX_MIGRATED_TYPES = 16;
++>>>>>>> Bug 756390 - Make the "Reset Firefox" feature more generic
var migratedItems = document.getElementById("migratedItems");
- var bundle = Services.strings.createBundle("chrome://" + MOZ_BUILD_APP +
-+ var bundle = Services.strings.createBundle("chrome://browser" +
- "/locale/migration/migration.properties");
+- "/locale/migration/migration.properties");
- // Loop over possible data to migrate to give the user a list of what will be preserved. This
-@@ -21,7 +19,7 @@ function onResetProfileLoad() {
- var itemID = Math.pow(2, i);
+ // Loop over possible data to migrate to give the user a list of what will be preserved.
+ for (var itemStringName of MIGRATED_TYPES) {
try {
var checkbox = document.createElement("label");
-- checkbox.setAttribute("value", bundle.GetStringFromName(itemID + "_" + MOZ_APP_NAME));
-+ checkbox.setAttribute("value", bundle.GetStringFromName(itemID + "_self"));
++<<<<<<< HEAD
+ checkbox.setAttribute("value", bundle.GetStringFromName(itemStringName));
++=======
++ checkbox.setAttribute("value", MigrationUtils.getLocalizedString(itemID + "_self"));
++>>>>>>> Bug 756390 - Make the "Reset Firefox" feature more generic
migratedItems.appendChild(checkbox);
} catch (x) {
- // Catch exceptions when the string for a data type doesn't exist because it's not migrated
+ // Catch exceptions when the string for a data type doesn't exist.
diff --git a/toolkit/profile/nsIProfileMigrator.idl b/toolkit/profile/nsIProfileMigrator.idl
index e941336..5b264af 100644
--- a/toolkit/profile/nsIProfileMigrator.idl
@@ -238,15 +274,15 @@ index e941336..5b264af 100644 %{C++
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 32eef5c..dbe1580 100644
+index d2db0e2..45a4b0d 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
-@@ -3561,7 +3561,7 @@ XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
- if (gDoProfileReset) {
- // Automatically migrate from the current application if we just
- // reset the profile.
-- aKey = MOZ_APP_NAME;
-+ aKey = "self";
- pm->Migrate(&dirProvider, aKey);
- // Set the new profile as the default after migration.
- rv = SetCurrentProfileAsDefault(profileSvc, profD);
+@@ -3642,7 +3642,7 @@ XREMain::XRE_mainRun()
+ if (gDoProfileReset) {
+ // Automatically migrate from the current application if we just
+ // reset the profile.
+- aKey = MOZ_APP_NAME;
++ aKey = "self";
+ pm->Migrate(&mDirProvider, aKey);
+ // Set the new profile as the default after migration.
+ rv = SetCurrentProfileAsDefault(mProfileSvc, mProfD);
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD index a54e9d948..259413591 100644 --- a/libre/iceweasel-libre/PKGBUILD +++ b/libre/iceweasel-libre/PKGBUILD @@ -12,9 +12,9 @@ _pgo=false -# We're getting this from Debian Sid +# We're getting this from Debian Experimental _debname=iceweasel -_debver=13.0.1 +_debver=14.0.1 _debrel=2 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } @@ -22,7 +22,7 @@ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } _pkgname=iceweasel pkgname=iceweasel-libre pkgver=${_debver}.${_debrel} -pkgrel=1 +pkgrel=2 if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi if $_pgo; then @@ -50,16 +50,18 @@ source=("${_debrepo}/`debfile ${_debname}`_${_debver}.orig.tar.bz2" libre.patch iceweasel-install-dir.patch vendor.js + shared-libs.patch Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch) -md5sums=('9eb7668e4a5b5be63ccf4d43c212d011' - 'c5eb6357cecd0d83e75ef37a9dcf3683' +md5sums=('8e4f3987d37c8e73b168948d0771b872' + '8689c150a4d3a0a688ad2db6044feac6' 'eab149c1994ab14392e55af3abb08e80' 'ac29b01c189f20abae2f3eef1618ffc0' 'a485a2b5dc544a8a2bd40c985d2e5813' - '54bd934ac23839601c7d23a60fbefe6a' + '6d8816d2577263556d76f1aa4527b55b' 'e529742c0a425648087bc3ce537fe4c5' '0d053487907de4376d67d8f499c5502b' - 'efda47526ba76ef926b236bf2cda2456') + '52e52f840a49eb1d14be1c0065b03a93' + '88350bc611361a1ff635f5c960c6d6ee') if [ "$_pkgname" != "$pkgname" ]; then provides+=("$_pkgname=$pkgver") @@ -88,6 +90,7 @@ build() { patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname patch -Np1 -i "$srcdir/xulrunner-copy-stub.patch" # small fix patch -Np1 -i "$srcdir/libre.patch" + patch -Np1 -i "$srcdir/shared-libs.patch" cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch diff --git a/libre/iceweasel-libre/libre.patch b/libre/iceweasel-libre/libre.patch index 39ea86c05..9ffaf3a9a 100644 --- a/libre/iceweasel-libre/libre.patch +++ b/libre/iceweasel-libre/libre.patch @@ -63,7 +63,7 @@ diff -urN iceweasel-13.0.orig/browser/app/profile/firefox.js iceweasel-13.0/brow // by default we show an infobar message when pages require plugins the user has not installed, or are outdated pref("plugins.hide_infobar_for_missing_plugin", false); -diff -urN iceweasel-13.0.orig/browser/locales/en-US/chrome/browser-region/region.properties iceweasel-13.0/browser/locales/en-US/chrome/browser-region/region.properties +diff -urN iceweasel-14.0.1.orig/browser/locales/en-US/chrome/browser-region/region.properties iceweasel-14.0.1/browser/locales/en-US/chrome/browser-region/region.properties --- mozilla-release.orig/browser/locales/en-US/chrome/browser-region/region.properties 2012-06-01 09:03:48.000000000 -0300 +++ mozilla-release/browser/locales/en-US/chrome/browser-region/region.properties 2012-06-15 02:17:00.978636665 -0300 @@ -1,23 +1,23 @@ @@ -94,7 +94,7 @@ diff -urN iceweasel-13.0.orig/browser/locales/en-US/chrome/browser-region/region # TRANSLATION NOTE: {moz:domain} and {searchTerms} are placeholders for the site # to be searched and the user's search query. Place them in the appropriate location # for your locale's URL but do not translate them. --browser.search.siteSearchURL=http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&q=site%3A{moz:domain}+{searchTerms} +-browser.search.siteSearchURL=https://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&q=site%3A{moz:domain}+{searchTerms} +browser.search.siteSearchURL=https://duckduckgo.com/lite/?q=site%3A{moz:domain}+{searchTerms} # increment this number when anything gets changed in the list below. This will @@ -152,6 +152,39 @@ diff -urN iceweasel-13.0.orig/dom/ipc/test.xul iceweasel-13.0/dom/ipc/test.xul + <browser type="content" src="https://duckduckgo.com/lite" flex="1" id="page" remote="true"/> <label id="messageLog" value="" crop="center"/> </window> +diff -Naur iceweasel-14.0.1.orig/mobile/android/app/mobile.js iceweasel-14.0.1.orig/mobile/android/app/mobile.js +--- mozilla-build.orig/mobile/android/app/mobile.js 2012-07-12 14:27:37.000000000 -0300 ++++ mozilla-build/mobile/android/app/mobile.js 2012-07-17 22:14:47.293560718 -0300 +@@ -226,13 +226,13 @@ + /* preferences for the Get Add-ons pane */ + pref("extensions.getAddons.cache.enabled", true); + pref("extensions.getAddons.maxResults", 15); +-pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/android/recommended/"); +-pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/list/featured/all/%MAX_RESULTS%/%OS%/%VERSION%"); +-pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/android/search?q=%TERMS%&platform=%OS%&appver=%VERSION%"); +-pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%"); +-pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/android/"); +-pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%"); +-pref("extensions.getAddons.getWithPerformance.url", "https://services.addons.mozilla.org/%LOCALE%/android/api/%API_VERSION%/search/guid:%IDS%?src=mobile&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%"); ++pref("extensions.getAddons.recommended.browseURL", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.recommended.url", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.search.browseURL", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.search.url", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.browseAddons", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.get.url", "http://www.gnu.org/s/gnuzilla/addons.html"); ++pref("extensions.getAddons.getWithPerformance.url", "http://www.gnu.org/s/gnuzilla/addons.html"); + + /* preference for the locale picker */ + pref("extensions.getLocales.get.url", ""); +@@ -259,7 +259,7 @@ + pref("dom.disable_window_find", true); + + pref("keyword.enabled", true); +-pref("keyword.URL", ""); ++pref("keyword.URL", "https://duckduckgo.com/lite/?q="); + + pref("accessibility.typeaheadfind", false); + pref("accessibility.typeaheadfind.timeout", 5000); diff -urN iceweasel-13.0.orig/layout/ipc/test-ipcbrowser.xul iceweasel-13.0/layout/ipc/test-ipcbrowser.xul --- mozilla-build.orig/layout/ipc/test-ipcbrowser.xul 2012-06-01 09:04:06.000000000 -0300 +++ mozilla-build/layout/ipc/test-ipcbrowser.xul 2012-06-05 20:44:00.714006926 -0300 @@ -163,7 +196,7 @@ diff -urN iceweasel-13.0.orig/layout/ipc/test-ipcbrowser.xul iceweasel-13.0/layo + <browser type="content" src="https://duckduckgo.com/lite" flex="1" id="content" remote="true"/> </window> -diff -urN iceweasel-13.0.orig/mobile/xul/app/mobile.js iceweasel-13.0/mobile/xul/app/mobile.js +diff -urN iceweasel-14.0.1.orig/mobile/xul/app/mobile.js iceweasel-14.0.1/mobile/xul/app/mobile.js --- mozilla-build.orig/mobile/xul/app/mobile.js 2012-06-01 09:04:14.000000000 -0300 +++ mozilla-build/mobile/xul/app/mobile.js 2012-06-05 20:48:20.193241600 -0300 @@ -221,13 +221,12 @@ @@ -190,7 +223,7 @@ diff -urN iceweasel-13.0.orig/mobile/xul/app/mobile.js iceweasel-13.0/mobile/xul pref("dom.disable_window_open_dialog_feature", true); pref("keyword.enabled", true); --pref("keyword.URL", "http://www.google.com/m?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q="); +-pref("keyword.URL", "https://www.google.com/m?ie=UTF-8&oe=UTF-8&sourceid=navclient&q="); +pref("keyword.URL", "https://duckduckgo.com/lite/?q="); pref("accessibility.typeaheadfind", false); @@ -219,7 +252,7 @@ diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties icew +browser.contentHandlers.types.1.uri=about:blank # Keyword URL (for location bar searches) --keyword.URL=http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q= +-keyword.URL=https://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q= +keyword.URL=https://duckduckgo.com/lite/?q=site%3A{moz:domain}+{searchTerms} # increment this number when anything gets changed in the list below. This will @@ -242,14 +275,14 @@ diff -urN iceweasel-13.0.orig/mobile/locales/en-US/chrome/region.properties icew +gecko.handlerService.schemes.mailto.0.uriTemplate=about:blank +gecko.handlerService.schemes.mailto.1.name= +gecko.handlerService.schemes.mailto.1.uriTemplate=about:blank -diff -urN iceweasel-13.0.orig/modules/libpref/src/init/all.js iceweasel-13.0/modules/libpref/src/init/all.js +diff -urN iceweasel-14.0.orig/modules/libpref/src/init/all.js iceweasel-14.0/modules/libpref/src/init/all.js --- mozilla-build.orig/modules/libpref/src/init/all.js 2012-06-01 09:04:16.000000000 -0300 +++ mozilla-build/modules/libpref/src/init/all.js 2012-06-05 20:55:41.569045759 -0300 @@ -47,7 +47,7 @@ // SYNTAX HINTS: dashes are delimiters. Use underscores instead. // The first character after a period must be alphabetic. --pref("keyword.URL", "http://www.google.com/search?ie=UTF-8&oe=utf-8&q="); +-pref("keyword.URL", "https://www.google.com/search?ie=UTF-8&oe=utf-8&q="); +pref("keyword.URL", "https://duckduckgo.com/lite/?q="); pref("keyword.enabled", false); pref("general.useragent.locale", "chrome://global/locale/intl.properties"); @@ -267,14 +300,14 @@ diff -urN iceweasel-13.0.orig/toolkit/locales/en-US/chrome/global-region/region. -pluginupdates_url=http://www.mozilla.com/plugincheck/ -plugindoc_label=plugindoc.mozdev.org -plugindoc_url=http://plugindoc.mozdev.org/ -+more_plugins_label=gnuzilla.gnu.org -+more_plugins_url=http://www.gnu.org/s/gnuzilla/addons.html -+pluginupdates_label=gnuzilla.gnu.org -+pluginupdates_url=http://www.gnu.org/s/gnuzilla/addons.html -+plugindoc_label=gnuzilla.gnu.org -+plugindoc_url=http://www.gnu.org/s/gnuzilla/addons.html - -diff -urN iceweasel-13.0.orig/browser/locales/generic/profile/bookmarks.html.in iceweasel-13.0/browser/locales/generic/profile/bookmarks.html.in ++more_plugins_label= ++more_plugins_url=about:blank ++pluginupdates_label= ++pluginupdates_url=about:blank ++plugindoc_label= ++plugindoc_url=about:blank + +diff -urN iceweasel-14.0.1.orig/browser/locales/generic/profile/bookmarks.html.in iceweasel-14.0.1/browser/locales/generic/profile/bookmarks.html.in --- mozilla-release.orig/browser/locales/generic/profile/bookmarks.html.in 2012-06-01 09:03:48.000000000 -0300 +++ mozilla-release/browser/locales/generic/profile/bookmarks.html.in 2012-06-15 22:54:08.446274144 -0300 @@ -11,13 +11,20 @@ @@ -282,7 +315,7 @@ diff -urN iceweasel-13.0.orig/browser/locales/generic/profile/bookmarks.html.in <DD>@bookmarks_toolbarfolder_description@ <DL><p> - <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/central/" ID="rdf:#$GvPhC3">@getting_started@</A> -+ <DT><A HREF="https://parabolagnulinux.org/" ID="rdf:#$GvPhC3">Parabola GNU/Linux-libre</A> ++ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D" ID="rdf:#$GvPhC3">Parabola GNU/Linux-libre</A> </DL><p> - <DT><H3 ID="rdf:#$ZvPhC3">@firefox_heading@</H3> + <DT><H3 ID="rdf:#$YvPhC3">Parabola GNU/Linux-libre</H3> @@ -291,17 +324,17 @@ diff -urN iceweasel-13.0.orig/browser/locales/generic/profile/bookmarks.html.in - <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/customize/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$32iCK1">@firefox_customize@</A> - <DT><A HREF="http://www.mozilla.com/@AB_CD@/firefox/community/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">@firefox_community@</A> - <DT><A HREF="http://www.mozilla.com/@AB_CD@/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">@firefox_about@</A> -+ <DT><A HREF="https://parabolagnulinux.org/">Parabola GNU/Linux-libre</A> -+ <DT><A HREF="https://parabolagnulinux.org/packages/">Parabola GNU/Linux-libre Packages</A> -+ <DT><A HREF="https://wiki.parabolagnulinux.org/">Parabola GNU/Linux-libre Wiki</A> -+ <DT><A HREF="https://labs.parabola.nu/">Parabola GNU/Linux-libre Labs</A> ++ <DT><A HREF="https://parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre</A> ++ <DT><A HREF="https://parabolagnulinux.org/packages/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre Packages</A> ++ <DT><A HREF="https://wiki.parabolagnulinux.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre Wiki</A> ++ <DT><A HREF="https://labs.parabola.nu/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AihUrGP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIcXLSJvFCcn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AbRIkcP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGwTI0JWEBtB////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCAAAACVQ8crP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFYQHJI9ChRL////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBlKzZHPQoUzgAAAAH///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AknV8I0sdJv8kBgxU////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AMTExA1uTlX1JAYLyf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wC5ubkLhG1x6CQGDP0PAAARzJmZBf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AxsbGCZB+g/QkBgz/DQMDUdu2tgfMn5koxo2NOsxmmQX///8A////AP///wD///8A////AP///wD///8A////AJ2JjX+NeX3/JAYM/wwCA5T///8A////AL+AgAi/foFfuG51l7JgaXCvY3E2/4CAAv///wD///8A////AJlveHOzqqv6UCUt/yQGDP8MAgTW////AP///wD///8A////AKqAgAawXmhnqk9b36VNW/KjT13mqGh16Kl+hvCbdHz/YyYx/z0KFP8kBgz/DAIE7f///wD///8A////AP///wD///8A////AJlmZgWkQU5inDFD0ZUhNv+FFyz/bRMk/1UPHP89ChT/JAYM/wwCA9v///8A////AP///wD///8A////AP///wD///8A////AP///wCTIDMohRYtfW0TJMBVDxzQPQoU3SUGDcoMBARA//8AAP//AAD//wAA//8AAP/3AAD/9wAA//sAAP/7AAD/+QAA//kAAP/5AAD/+AAA9/AAAPwAAAD/AAAA/+EAAA%3D%3D">Parabola GNU/Linux-libre Labs</A> + </DL><p> + <DT><H3 ID="rdf:#$ZvPhC3">Free Software Foundation</H3> + <DL><p> -+ <DT><A HREF="http://www.fsf.org/">Free Software Foundation</A> -+ <DT><A HREF="http://libreplanet.org/">LibrePlanet</A> -+ <DT><A HREF="http://www.gnu.org/software/gnuzilla/addons.html">Free addons</A> -+ <DT><A HREF="http://www.h-node.org/">h-node</A> ++ <DT><A HREF="http://www.fsf.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQoFQEQA+/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECAAAAAAAAAAAAAAAAAAAA2qOp7tTXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAP///wAAAAAAAOCyt7pUXQcSEgcQDwAAAP///wAAAAAAAAD//x9NSDqNhQEBAQQAAAAAAAAAAAAAAAAQJiQGDQ0aPToZPjoAAQEAAAAAAAAAAAABAQEpZV4AAAAAAAAAAAAA////////////////pSIv05KZ////////////////////////////////AAAAAQAAAP///6krNwAAAAAAAPHc3ggSEQcSEQAAAAAAAAAAABY3NEGelQAAAAAAAAEBAQEAAAD///+YARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDg1g690CBgYAAAABAQEEAAAAAAAAS7etAAAAAAAAwGVtHklFIlJOAAAAAAAAAAAAAAAA+/X2BwYGAAAAAAAABAAAAAAAAB1IQwAAAAAAAAYNDBAmJB1IQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAgL//v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAQEB//7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAECAv/+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////cqK3qzM////////////////////////////////8AAAABAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGuLjDf9F8oBAAAAAElFTkSuQmCC">Free Software Foundation</A> ++ <DT><A HREF="http://libreplanet.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC/v78AAAAAAPLy9ABsbakA/f3+APn5+QC6ur0A6urqAEpLbQACBLQApKW3AAULuQDMzMwAGBiDAL29vQCgocsAgnzJALu82QA+PpsAAQOvAOjo6ADZ2dkAysrKALS0zwD5+foAAgKRAAYGdQD19fUADhOjAAQJyACrnqIAxMTLAOnp7gDm5uYAzczNACgobwDg2dEAQkaeAA0RkAAUFnEA0MvQAIBzgAANDYsAk5OyAOTk5ADy8vYA1dXVAD8/cADGxsYA+fn7AAMHvgBzZnQApqauAAEGuQDExMQAAAGmAAoLmgADCMQAxMTdAAwPlwD+/v4ABg7MAF5ehADg4OAA0dHRAAAAoQAYEXAAwsLCALCxwQBnadkAAQGWAPz8/ACgoLgAbm6RANvb5wDr6+sA0dHSALe3uQADB8AAzc3NAGFhbAABAZcAOTtlALi4xwAAAJoA/Pz9AAQHnwADBJcACQl4AFVa3AChl6EAAgW2ABscdAABAq4A2NjYAAAAmwDAwMoAAQKmAAcMswDR0eQAAQSxANvX2wB4aXcAAQGpAAAAkwDW1tYAAgSpACIZZAAAAaEA+vr8AKuirAACBbcA8vLyALOztgADBZYAAACcAAACpwAEA6QAAQKnAPT09QD///8AvL3UADIpigDw8PAABwWOAK6dogBub4kAiozDANLS0gAFC8gAAgW4AP39/QAAAJ0A0NDQAMHBwQDp6ewACg2RAAIFqAAKCokA+/v7AAkOnwAAAaMA7OzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4eHh4eHh4eHh4eHh4AXh4eHhlbikzZlooeHh4eAF4eHh4hX1JVFweInh4eHgBeHh4XmlAGXNGSB8VeHh4AXg8LhaGcV9zKg0wQF54eAF4K0NNOGthjXNCUwAMS3gBPC82iW+CCRN2Iz4wTwx4AW0GgCc5OU41VnSKTBoOiwEFTz8hHIF5RANdQVRfNIMBeBUhe0o9jB0Pcjdzc1E8AXgsB3AbUlkQRVtnhHNoeAF4i45wJCAlYjJbdYRfY3gBeDwmEn4XMToKZDd6WDx4AXh4VTsIfwt3FGpsfAR4eAF4eHgEEYhQAodXYDx4eHgBeHh4eHg8GC1HPHh4eHh4AQABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA%3D">LibrePlanet</A> ++ <DT><A HREF="http://www.gnu.org/software/gnuzilla/addons.html" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAGFBMVEVFRUV+fn6mpqa/v7/Ozs7Y2Njg4OD8/Pwuhn+TAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEQAACxEBf2RfkQAAAAd0SU1FB9MBDhQ6Gd8s57cAAAEVSURBVBgZBcGxVtpgGADQL9gHSBzqSognzMixmcWWzB6pmRHhnyvku6/fewMAIPD3TwHmQxHs6vr+A16bphNum/vV0x429201hcPjAGBTDZGnR/Kw1U181+u4HXvOdSxjUcztz8jjg1xGVBG9XPYxt4PviKiaWLg168iXtbrq+mPT1utjNcR1U73deRnL43M2sRgj3+oYs8uL3rLphPd2QWmHbMu/VS/cnk6UdtSW657g9yBlcZ0UAkUWzPvyRaAYmfd+HT4IZtvC59ibEJxXiqJjQpBpNEufBYE0McoOAunGhRMEFIPc7h4goJigQEBxk8u7AgEpL3IEAUZfcgAByGFXQACm5+4MAuB19QMEgI8CAgDgP4rivVgoKP6ZAAAAAElFTkSuQmCC">Free addons</A> ++ <DT><A HREF="http://www.h-node.org/" ICON="data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAC7zrYAWYhNANjj1QA9fEcAEEwBAHTQkwAeVRkAPXMvALvOtwASVQEAHFcUAH/bpgB60p8AKnQmAGO1fgAjaRwALmA1AA5EAQDM2sgAN3ApAG7EjgC5zbQAVJxrAChwIgC0ya8ALmczAHXJmQBNf0EAgd6oADhwKgC8z7cA7vPtANTg0QANPwAARIhSADtyLQBzzpQAus21AEeKVQDC070AieyzALzPuAB93qEALGYvAO/z7gBEiVAAasWFAFuJTwBKil4AXotSAEuKXgAORQEAD0gBABlDFwBWpmoALGYwAGCNVQAbYBAAHGAQABBOAQCI6rIAjPG3AB1bDgAaXg4A////AGaRWwB/2qYAUYJEAEx+PwAZXAwAm7eUAD51MADN28oAJmwhACRiFAAzeTYAasaFAB9eDwBkt34Aus62AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT09PT09PT09PT09PT09PT09PT0OIjALPRQmMkI9PT09PT09OkcHNQU+Q0oQPT09PT09PToVGDQtI0ABKz09PT09PT06JRg0Nh1ALxk9PT09PT09OiUYIS4TQC83PT09PT09PTpPSDsGG0BEAz09PT09PT06T0BGMRIsTRY9PT09PT09OgACJx8gQwooPT09PT09PToICAkJCUkkPT09PT09PT05HggETio9PT09PT09PT09Px4IERw9PT09PT09PT09PUUpCDMMPT09PT09PT09PT0NOEEEGj09PT09PT09PT09TBcPSzw9PT09PT09PT09PT09PT09PT09PT09PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D">h-node</A> </DL><p> </DL><p> diff -urN iceweasel-13.0.orig/browser/base/content/abouthome/aboutHome.js iceweasel-13.0/browser/base/content/abouthome/aboutHome.js diff --git a/libre/iceweasel-libre/shared-libs.patch b/libre/iceweasel-libre/shared-libs.patch new file mode 100644 index 000000000..1f22b2b0d --- /dev/null +++ b/libre/iceweasel-libre/shared-libs.patch @@ -0,0 +1,12 @@ +diff -Nur mozilla-release.orig/browser/installer/Makefile.in mozilla-release/browser/installer/Makefile.in +--- mozilla-release.orig/browser/installer/Makefile.in 2012-07-17 16:19:29.480356991 +0000 ++++ mozilla-release/browser/installer/Makefile.in 2012-07-17 17:32:41.250937293 +0000 +@@ -50,7 +50,7 @@ + MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in + # Some files have been already bundled with xulrunner + ifndef SYSTEM_LIBXUL +-MOZ_PKG_FATAL_WARNINGS = 1 ++MOZ_PKG_FATAL_WARNINGS = 0 + endif + + MOZ_NONLOCALIZED_PKG_LIST = \ diff --git a/libre/initscripts/0001-remove-run-nologin-before-leaving-rc.multi.patch b/libre/initscripts/0001-remove-run-nologin-before-leaving-rc.multi.patch new file mode 100644 index 000000000..a9b7a2423 --- /dev/null +++ b/libre/initscripts/0001-remove-run-nologin-before-leaving-rc.multi.patch @@ -0,0 +1,29 @@ +From 55bd14c586f0f64b8ee5515161be1aa1098d3226 Mon Sep 17 00:00:00 2001 +From: Dave Reisner <dreisner@archlinux.org> +Date: Tue, 3 Jul 2012 22:28:05 -0400 +Subject: [initscripts][PATCH] remove /run/nologin before leaving rc.multi +To: arch-projects@archlinux.org + +systemd-186 writes this file when running systemd-tmpfiles, but +initscripts never removes it. This disallows all non-root logins. + +Reported-by: Dan McGee <dan@archlinux.org> +Signed-off-by: Dave Reisner <dreisner@archlinux.org> +--- + rc.multi | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/rc.multi b/rc.multi +index daf2372..7d4acaa 100755 +--- a/rc.multi ++++ b/rc.multi +@@ -31,4 +31,6 @@ run_hook multi_end + + bootlogd_stop + ++rm -f /run/nologin ++ + # vim: set ts=2 sw=2 noet: +-- +1.7.11.1 + diff --git a/libre/initscripts/PKGBUILD b/libre/initscripts/PKGBUILD index aee2585d9..cc509fdd3 100644 --- a/libre/initscripts/PKGBUILD +++ b/libre/initscripts/PKGBUILD @@ -5,7 +5,7 @@ # Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar> pkgname=initscripts -pkgver=2012.06.28 +pkgver=2012.07.14 pkgrel=1 pkgdesc="System initialization/bootup scripts (Parabola branding)" arch=('any') @@ -21,12 +21,19 @@ optdepends=('bridge-utils: Network bridging support' makedepends=(asciidoc) install=initscripts.install source=("https://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.xz" + 0001-remove-run-nologin-before-leaving-rc.multi.patch 'wireless.conf.d') +build() { + cd ${srcdir}/${pkgname}-${pkgver} +# patch -Np1 <"$srcdir/0001-remove-run-nologin-before-leaving-rc.multi.patch" +} + package() { cd ${srcdir}/${pkgname}-${pkgver} make DESTDIR=${pkgdir} install install -D -m644 ${srcdir}/wireless.conf.d ${pkgdir}/etc/conf.d/wireless } -md5sums=('21651eaba1fd34542c78f39c755cd171' +md5sums=('15e2f373be03b25b0033fd4fb4820d30' + 'ba32b9d723c20b38487669fb3c00d3d5' '027576534885b8d5dded9be546057b12') diff --git a/libre/licenses-libre/PKGBUILD b/libre/licenses-libre/PKGBUILD index 6097d67b8..8a3d62929 100644 --- a/libre/licenses-libre/PKGBUILD +++ b/libre/licenses-libre/PKGBUILD @@ -1,9 +1,10 @@ # $Id: PKGBUILD 82120 2010-06-08 16:36:51Z dan $ # Maintainer: Dan McGee <dan@archlinux.org> # Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> pkgname=licenses-libre -pkgver=2.8 +pkgver=2.9 pkgrel=1 pkgdesc="The standard licenses distribution package" arch=('any') @@ -13,6 +14,7 @@ groups=('base') provides=("licenses=${pkgver}") conflicts=('licenses') replaces=('licenses') +makedepends=(links) source=(apache-2.0.txt::http://www.apache.org/licenses/LICENSE-2.0.txt cc-by-3.0.txt cc-by-sa-3.0.txt @@ -120,7 +122,7 @@ md5sums=('3b83ef96387f14655fc854ddc3c6bd57' 'd09c120ca7db95ef2aeecec0cb08293b' 'b4a94da2a1f918b217ef5156634fc9e0' 'a45bb1bbeed9e26b26c5763df1d3913d' - '68d59ff8306e3a9f5f1c01462c77a317' + 'bfecdc446cd2a6a4410ac9e6d0064b3a' 'f083e41c43db25e18f36c91e57750b64' 'a055911c32fb4ed6e96c453ceaeba857' 'dc8502850eab9e1ff330a12d7ca18a19') diff --git a/libre/lilo/.directory b/libre/lilo/.directory deleted file mode 100644 index ba03b0e05..000000000 --- a/libre/lilo/.directory +++ /dev/null @@ -1,2 +0,0 @@ -[Dolphin] -Timestamp=2012,5,3,19,29,58 diff --git a/libre/linux-libre-lts/PKGBUILD b/libre/linux-libre-lts/PKGBUILD index 17651ce1e..d2a5610df 100644 --- a/libre/linux-libre-lts/PKGBUILD +++ b/libre/linux-libre-lts/PKGBUILD @@ -9,10 +9,10 @@ pkgname=('linux-libre-lts' 'linux-libre-lts-headers') # Build stock -LIBRE-LTS k # pkgname=linux-custom # Build kernel with a different name _kernelname=-LIBRE-LTS _basekernel=3.0 -_sublevel=36 +_sublevel=38 pkgver=${_basekernel}.${_sublevel} -_lxopkgver=${_basekernel}.36 # nearly always the same as pkgver -pkgrel=2 +_lxopkgver=${_basekernel}.37 # nearly always the same as pkgver +pkgrel=1 arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" license=('GPL2') @@ -32,7 +32,7 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn 'ext4-options.patch' "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2") md5sums=('5f64180fe7df4e574dac5911b78f5067' - '150413437fe54d4822e9e43189e37319' + '8a2416fd6ac323184ab563958a6eb560' '9cfcf3807201ce44aa720571232a10ce' '8bb5c5aa217202c3ac3798ba7798e07d' 'c072b17032e80debc6a8626299245d46' @@ -42,7 +42,7 @@ md5sums=('5f64180fe7df4e574dac5911b78f5067' '9d3c56a4b999c8bfbd4018089a62f662' '263725f20c0b9eb9c353040792d644e5' 'f36222e7ce20c8e4dc27376f9be60f6c' - '7102cdd847f0bd7102f0ad01fa43f454') + 'f0c4e2fa00e3f9fd9d666742c32beefb') if [ "$CARCH" != "mips64el" ]; then # Don't use the Loongson-specific patches on non-mips64el arches. unset source[${#source[@]}-1] diff --git a/libre/linux-libre-lts/linux-libre-lts.install b/libre/linux-libre-lts/linux-libre-lts.install index 8a688091d..226061525 100644 --- a/libre/linux-libre-lts/linux-libre-lts.install +++ b/libre/linux-libre-lts/linux-libre-lts.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME=-lts -KERNEL_VERSION=3.0.36-2-LIBRE-LTS +KERNEL_VERSION=3.0.38-1-LIBRE-LTS # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' diff --git a/libre/linux-libre-tools/PKGBUILD b/libre/linux-libre-tools/PKGBUILD index def346093..3803b520c 100644 --- a/libre/linux-libre-tools/PKGBUILD +++ b/libre/linux-libre-tools/PKGBUILD @@ -5,11 +5,11 @@ pkgbase=linux-libre-tools _pkgname=('perf' 'cpupower' 'x86_energy_perf_policy') pkgname=('perf-libre' 'cpupower-libre' 'x86_energy_perf_policy-libre') -_basekernel=3.4 +_basekernel=3.5 #_sublevel=1 #pkgver=${_basekernel}.${_sublevel} pkgver=${_basekernel} -pkgrel=3 +pkgrel=1 license=('GPL2') arch=('i686' 'x86_64' 'mips64el') url='http://linux-libre.fsfla.org/' @@ -22,7 +22,7 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn 'cpupower.rc' 'cpupower.conf' 'cpupower.service') -md5sums=('a5e128ca059cceb8b69148b41ff4ac6f' +md5sums=('2407fc9563a74acaf38aa0c06516eb1c' '73dbc931e86b3b73d6e2338dcbee81a4' '18d5aa9e4c6bb23bb02bf65e155e0f0e' '20870541e88109d2f153be3c58a277f1') @@ -37,8 +37,9 @@ build() { msg2 'Build perf' pushd linux-$pkgver/tools/perf make \ + WERROR=0 \ DESTDIR="$pkgdir/usr" \ - perfexecdir="lib/$_pkgname" \ + perfexecdir='lib/perf' \ PYTHON=python2 \ NO_GTK2=1 \ PERF_VERSION=$pkgver-$pkgrel \ @@ -67,8 +68,9 @@ package_perf-libre() { cd linux-$pkgver/tools/perf make \ + WERROR=0 \ DESTDIR="$pkgdir/usr" \ - perfexecdir="lib/$_pkgname" \ + perfexecdir='lib/perf' \ PYTHON=python2 \ NO_GTK2=1 \ PERF_VERSION=$pkgver-$pkgrel \ diff --git a/libre/linux-libre/3.4.4-fix-backlight-regression.patch b/libre/linux-libre/3.4.4-fix-backlight-regression.patch deleted file mode 100644 index a0cf0b1db..000000000 --- a/libre/linux-libre/3.4.4-fix-backlight-regression.patch +++ /dev/null @@ -1,38 +0,0 @@ -Subject: Still use ACPI backlight control if _DOS doesn't exist - -This is a regression introduced by commit -ea9f8856bd6d4ed45885b06a338f7362cd6c60e5 - -https://bugzilla.kernel.org/show_bug.cgi?id=43168 - -Some platforms don't have _DOS control method, but the ACPI -backlight still works. -We do not want to lose the backlight control ability on these platforms. - -CC : Igor Murzov <intergalactic.anonymous@gmail.com> -Signed-off-by: Zhang Rui <rui.zhang@intel.com> ---- - drivers/acpi/video.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -Index: rtd3/drivers/acpi/video.c -=================================================================== ---- rtd3.orig/drivers/acpi/video.c -+++ rtd3/drivers/acpi/video.c -@@ -565,8 +565,14 @@ acpi_video_bus_DOS(struct acpi_video_bus - video->dos_setting = arg0.integer.value; - status = acpi_evaluate_object(video->device->handle, "_DOS", - &args, NULL); -- if (ACPI_FAILURE(status)) -- return -EIO; -+ if (ACPI_FAILURE(status)) { -+ /* -+ * some platforms don't have _DOS, but the ACPI -+ * backlight control still works -+ */ -+ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No _DOS\n")); -+ return 0; -+ } - - return 0; - } diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index 08a32eae0..b552dcca5 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -11,18 +11,19 @@ pkgbase=linux-libre pkgname=('linux-libre' 'linux-libre-headers' 'linux-libre-docs') # Build stock -LIBRE kernel # pkgname=linux-custom # Build kernel with a different name _kernelname=-LIBRE -_basekernel=3.4 -_sublevel=4 -pkgver=${_basekernel}.${_sublevel} -_lxopkgver=${_basekernel}.4 # nearly always the same as pkgver -pkgrel=3 +_basekernel=3.5 +#_sublevel=6 +#pkgver=${_basekernel}.${_sublevel} +pkgver=${_basekernel} +_lxopkgver=${_basekernel}.6 # nearly always the same as pkgver +pkgrel=1 arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" license=('GPL2') makedepends=('xmlto' 'docbook-xsl') options=('!strip') source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gnu/linux-libre-${_basekernel}-gnu.tar.xz" - "http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz" + #"http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz" # the main kernel config files 'config.i686' 'config.x86_64' # standard config files for mkinitcpio ramdisk @@ -32,20 +33,17 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn 'boot-logo.patch' 'change-default-console-loglevel.patch' 'i915-fix-ghost-tv-output.patch' - '3.4.4-fix-backlight-regression.patch' "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2") -md5sums=('a5e128ca059cceb8b69148b41ff4ac6f' - 'e9bb311ab329555a61696b1a18df2d34' - '669c3f9d5c6a2109bad8e511287826c3' - '454231e14419e56a5281eb7bc6fde83e' +md5sums=('2407fc9563a74acaf38aa0c06516eb1c' + 'a89ff57fd3ce5833d51f7cdef17a9a3c' + '978a58bebbdfe04d6e91523e09da5ad5' 'e49ac236dfeef709f91a3d993ea7b62c' '2967cecc3af9f954ccc822fd63dca6ff' '8267264d9a8966e57fdacd1fa1fc65c4' '04b21c79df0a952c22d681dd4f4562df' '9d3c56a4b999c8bfbd4018089a62f662' '263725f20c0b9eb9c353040792d644e5' - '80a46681386bb87813989faeb92bdd9a' - '86910efeadb5d1e5d5416ff1a9dacb33') + 'a9338d11a2b23fe0cd43cc4fee5aed42') if [ "$CARCH" != "mips64el" ]; then # Don't use the Loongson-specific patches on non-mips64el arches. unset source[${#source[@]}-1] @@ -71,9 +69,6 @@ build() { # needed. patch -Np1 -i "${srcdir}/i915-fix-ghost-tv-output.patch" - # Fix backlight control on some laptops: - # https://bugzilla.kernel.org/show_bug.cgi?id=43168 - patch -Np1 -i "${srcdir}/3.4.4-fix-backlight-regression.patch" # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param) # remove this when a Kconfig knob is made available by upstream @@ -286,7 +281,7 @@ package_linux-libre-headers() { cp drivers/media/video/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/" - for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102; do + for i in bt8xx cpia2 cx25840 cx88 em28xx pwc saa7134 sn9c102; do mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/${i}" cp -a drivers/media/video/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/${i}" done diff --git a/libre/linux-libre/config.i686 b/libre/linux-libre/config.i686 index a6e1a6310..114841394 100644 --- a/libre/linux-libre/config.i686 +++ b/libre/linux-libre/config.i686 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 3.4.0-1 Kernel Configuration +# Linux/i386 3.5.0-1 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -9,10 +9,6 @@ CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf32-i386" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" -CONFIG_GENERIC_CMOS_UPDATE=y -CONFIG_CLOCKSOURCE_WATCHDOG=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y @@ -26,9 +22,7 @@ CONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y -# CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y @@ -46,11 +40,12 @@ CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_32_SMP=y CONFIG_X86_HT=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx" -CONFIG_KTIME_SCALAR=y CONFIG_ARCH_CPU_PROBE_RELEASE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_HAVE_IRQ_WORK=y CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y # # General setup @@ -101,6 +96,20 @@ CONFIG_IRQ_DOMAIN=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_KTIME_SCALAR=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y # # RCU Subsystem @@ -108,6 +117,7 @@ CONFIG_SPARSE_IRQ=y CONFIG_TREE_PREEMPT_RCU=y CONFIG_PREEMPT_RCU=y CONFIG_RCU_FANOUT=32 +CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_RCU_FANOUT_EXACT is not set CONFIG_RCU_FAST_NO_HZ=y # CONFIG_TREE_RCU_TRACE is not set @@ -139,7 +149,6 @@ CONFIG_BLK_CGROUP=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y -CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_SCHED_AUTOGROUP=y @@ -182,7 +191,6 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y -CONFIG_PERF_COUNTERS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y CONFIG_PCI_QUIRKS=y @@ -206,7 +214,9 @@ CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_DMA_API_DEBUG=y CONFIG_HAVE_HW_BREAKPOINT=y @@ -218,6 +228,8 @@ CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y # # GCOV-based kernel profiling @@ -312,11 +324,6 @@ CONFIG_FREEZER=y # Processor type and features # CONFIG_ZONE_DMA=y -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_SMP=y CONFIG_X86_MPPARSE=y # CONFIG_X86_BIGSMP is not set @@ -451,7 +458,9 @@ CONFIG_HWPOISON_INJECT=m CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y # CONFIG_HIGHPTE is not set CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y @@ -496,6 +505,10 @@ CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PM_WAKELOCKS_GC=y CONFIG_PM_RUNTIME=y CONFIG_PM=y CONFIG_PM_DEBUG=y @@ -632,7 +645,6 @@ CONFIG_PCI_LABEL=y CONFIG_ISA_DMA_API=y CONFIG_ISA=y # CONFIG_EISA is not set -# CONFIG_MCA is not set # CONFIG_SCx200 is not set CONFIG_OLPC=y CONFIG_OLPC_XO1_PM=y @@ -678,6 +690,7 @@ CONFIG_RAPIDIO=y CONFIG_RAPIDIO_TSI721=y CONFIG_RAPIDIO_DISC_TIMEOUT=30 # CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_DMA_ENGINE=y CONFIG_RAPIDIO_DEBUG=y CONFIG_RAPIDIO_TSI57X=y CONFIG_RAPIDIO_CPS_XX=y @@ -705,6 +718,7 @@ CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_UNIX_DIAG=m CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set @@ -843,6 +857,7 @@ CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_CT=m CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m @@ -1003,7 +1018,6 @@ CONFIG_IP_NF_ARP_MANGLE=m # CONFIG_NF_DEFRAG_IPV6=m CONFIG_NF_CONNTRACK_IPV6=m -CONFIG_IP6_NF_QUEUE=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m @@ -1099,11 +1113,11 @@ CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y # CONFIG_X25 is not set # CONFIG_LAPB is not set -# CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set CONFIG_PHONET=m CONFIG_IEEE802154=m CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m CONFIG_NET_SCHED=y # @@ -1127,6 +1141,8 @@ CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_MQPRIO=m CONFIG_NET_SCH_CHOKE=m CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m CONFIG_NET_SCH_INGRESS=m CONFIG_NET_SCH_PLUG=m @@ -1162,6 +1178,7 @@ CONFIG_NET_SCH_FIFO=y # CONFIG_DCB is not set CONFIG_DNS_RESOLVER=y CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BLA=y # CONFIG_BATMAN_ADV_DEBUG is not set CONFIG_OPENVSWITCH=m CONFIG_RPS=y @@ -1339,6 +1356,8 @@ CONFIG_CEPH_LIB=m # CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set CONFIG_NFC=m CONFIG_NFC_NCI=m +CONFIG_NFC_HCI=m +# CONFIG_NFC_SHDLC is not set # CONFIG_NFC_LLCP is not set # @@ -1370,6 +1389,7 @@ CONFIG_EXTRA_FIRMWARE="" CONFIG_REGMAP=y CONFIG_REGMAP_I2C=m CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_CMA is not set CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y CONFIG_MTD=m @@ -1500,7 +1520,6 @@ CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_RESERVE=1 # CONFIG_MTD_UBI_GLUEBI is not set -# CONFIG_MTD_UBI_DEBUG is not set CONFIG_OF=y # @@ -1512,7 +1531,6 @@ CONFIG_OF_PROMTREE=y CONFIG_OF_ADDRESS=y CONFIG_OF_IRQ=y CONFIG_OF_DEVICE=y -CONFIG_OF_GPIO=y CONFIG_OF_I2C=m CONFIG_OF_NET=y CONFIG_OF_MDIO=m @@ -1599,7 +1617,8 @@ CONFIG_SENSORS_APDS990X=m CONFIG_HMC6352=m CONFIG_DS1682=m CONFIG_VMWARE_BALLOON=m -CONFIG_BMP085=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m # CONFIG_PCH_PHUB is not set CONFIG_USB_SWITCH_FSA9480=m CONFIG_C2PORT=m @@ -1629,6 +1648,7 @@ CONFIG_SENSORS_LIS3_I2C=m # Altera FPGA firmware download module # CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI=m CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1764,6 +1784,7 @@ CONFIG_SCSI_PAS16=m CONFIG_SCSI_QLOGIC_FAS=m CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set @@ -1936,6 +1957,7 @@ CONFIG_TCM_PSCSI=m CONFIG_LOOPBACK_TARGET=m CONFIG_TCM_FC=m CONFIG_ISCSI_TARGET=m +CONFIG_SBP_TARGET=m CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -1972,10 +1994,12 @@ CONFIG_EQUALIZER=m CONFIG_MII=m CONFIG_IEEE802154_DRIVERS=m CONFIG_IEEE802154_FAKEHARD=m +CONFIG_IEEE802154_FAKELB=m CONFIG_IFB=m CONFIG_NET_TEAM=m CONFIG_NET_TEAM_MODE_ROUNDROBIN=m CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_NETCONSOLE=m @@ -2118,10 +2142,13 @@ CONFIG_E1000=m CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGB_DCA=y +CONFIG_IGB_PTP=y CONFIG_IGBVF=m CONFIG_IXGB=m CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_PTP=y CONFIG_IXGBEVF=m CONFIG_NET_VENDOR_I825XX=y CONFIG_ELPLUS=m @@ -2211,8 +2238,8 @@ CONFIG_EPIC100=m CONFIG_SMSC9420=m CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=m -CONFIG_STMMAC_PLATFORM=m -CONFIG_STMMAC_PCI=m +# CONFIG_STMMAC_PLATFORM is not set +CONFIG_STMMAC_PCI=y # CONFIG_STMMAC_DEBUG_FS is not set # CONFIG_STMMAC_DA is not set CONFIG_STMMAC_RING=y @@ -2230,6 +2257,12 @@ CONFIG_NET_VENDOR_VIA=y CONFIG_VIA_RHINE=m # CONFIG_VIA_RHINE_MMIO is not set CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_BUS_ANY=y CONFIG_NET_VENDOR_XIRCOM=y CONFIG_PCMCIA_XIRC2PS=m # CONFIG_FDDI is not set @@ -2256,6 +2289,8 @@ CONFIG_STE10XP=m CONFIG_LSI_ET1011C_PHY=m CONFIG_MICREL_PHY=m # CONFIG_MDIO_BITBANG is not set +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_BUS_MUX_GPIO=m CONFIG_PLIP=m CONFIG_PPP=m CONFIG_PPP_BSDCOMP=m @@ -2274,7 +2309,6 @@ CONFIG_SLHC=m # CONFIG_SLIP_COMPRESSED is not set # CONFIG_SLIP_SMART is not set # CONFIG_SLIP_MODE_SLIP6 is not set -# CONFIG_TR is not set # # USB Network Adapters @@ -2389,6 +2423,7 @@ CONFIG_BRCMUTIL=m CONFIG_BRCMSMAC=m CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_SDIO=y +# CONFIG_BRCMFMAC_SDIO_OOB is not set CONFIG_BRCMFMAC_USB=y # CONFIG_BRCMDBG is not set CONFIG_HOSTAP=m @@ -2470,17 +2505,19 @@ CONFIG_RTL8192CU=m CONFIG_RTLWIFI=m # CONFIG_RTLWIFI_DEBUG is not set CONFIG_RTL8192C_COMMON=m +CONFIG_WL_TI=y CONFIG_WL1251=m CONFIG_WL1251_SDIO=m -CONFIG_WL12XX_MENU=m CONFIG_WL12XX=m -CONFIG_WL12XX_SDIO=m +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m CONFIG_WL12XX_PLATFORM_DATA=y CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m # # WiMAX Wireless Broadband devices @@ -2647,6 +2684,7 @@ CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_POLLDEV=m CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_MATRIXKMAP=m # # Userland interfaces @@ -2675,6 +2713,7 @@ CONFIG_KEYBOARD_TCA6416=m CONFIG_KEYBOARD_TCA8418=m CONFIG_KEYBOARD_MATRIX=m # CONFIG_KEYBOARD_LM8323 is not set +CONFIG_KEYBOARD_LM8333=m # CONFIG_KEYBOARD_MAX7359 is not set CONFIG_KEYBOARD_MCS=m CONFIG_KEYBOARD_MPR121=m @@ -2762,6 +2801,7 @@ CONFIG_TOUCHSCREEN_ILI210X=m CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m CONFIG_TOUCHSCREEN_MAX11801=m CONFIG_TOUCHSCREEN_MCS5000=m CONFIG_TOUCHSCREEN_MTOUCH=m @@ -2778,6 +2818,7 @@ CONFIG_TOUCHSCREEN_WM9705=y CONFIG_TOUCHSCREEN_WM9712=y CONFIG_TOUCHSCREEN_WM9713=y CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_MC13783=m CONFIG_TOUCHSCREEN_USB_EGALAX=y CONFIG_TOUCHSCREEN_USB_PANJIT=y CONFIG_TOUCHSCREEN_USB_3M=y @@ -2802,11 +2843,11 @@ CONFIG_TOUCHSCREEN_TSC2007=m CONFIG_TOUCHSCREEN_ST1232=m CONFIG_TOUCHSCREEN_TPS6507X=m CONFIG_INPUT_MISC=y -CONFIG_INPUT_AB8500_PONKEY=m CONFIG_INPUT_AD714X=m CONFIG_INPUT_AD714X_I2C=m CONFIG_INPUT_BMA150=m CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_MC13783_PWRBUTTON=m CONFIG_INPUT_MMA8450=m CONFIG_INPUT_MPU3050=m CONFIG_INPUT_APANEL=m @@ -2953,7 +2994,6 @@ CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m CONFIG_TELCLOCK=m CONFIG_DEVPORT=y -CONFIG_RAMOOPS=m CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y @@ -3054,6 +3094,7 @@ CONFIG_DP83640_PHY=m CONFIG_PTP_1588_CLOCK_PCH=m CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y CONFIG_GPIOLIB=y +CONFIG_OF_GPIO=y # CONFIG_DEBUG_GPIO is not set CONFIG_GPIO_SYSFS=y @@ -3063,6 +3104,7 @@ CONFIG_GPIO_SYSFS=y # CONFIG_GPIO_GENERIC_PLATFORM is not set # CONFIG_GPIO_IT8761E is not set CONFIG_GPIO_SCH=m +CONFIG_GPIO_ICH=m # CONFIG_GPIO_VX855 is not set # @@ -3217,6 +3259,7 @@ CONFIG_SENSORS_SCH5636=m CONFIG_SENSORS_ADS1015=m CONFIG_SENSORS_ADS7828=m CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_INA2XX=m CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_TMP102=m CONFIG_SENSORS_TMP401=m @@ -3236,6 +3279,7 @@ CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_MC13783_ADC=m # # ACPI drivers @@ -3266,6 +3310,7 @@ CONFIG_IB700_WDT=m CONFIG_IBMASR=m CONFIG_WAFER_WDT=m CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m CONFIG_ITCO_WDT=m CONFIG_ITCO_VENDOR_SUPPORT=y CONFIG_IT8712F_WDT=m @@ -3344,21 +3389,23 @@ CONFIG_MFD_SM501=m CONFIG_MFD_SM501_GPIO=y CONFIG_HTC_PASIC3=m CONFIG_UCB1400_CORE=m +CONFIG_MFD_LM3533=m # CONFIG_TPS6105X is not set CONFIG_TPS65010=m CONFIG_TPS6507X=m CONFIG_MFD_TPS65217=m # CONFIG_MFD_TMIO is not set -CONFIG_MFD_WM8400=m CONFIG_MFD_PCF50633=m CONFIG_PCF50633_ADC=m CONFIG_PCF50633_GPIO=m +CONFIG_MFD_MC13783=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m CONFIG_ABX500_CORE=y -CONFIG_AB8500_CORE=y -# CONFIG_AB8500_DEBUG is not set CONFIG_MFD_CS5535=m # CONFIG_MFD_TIMBERDALE is not set CONFIG_LPC_SCH=m +CONFIG_LPC_ICH=m CONFIG_MFD_RDC321X=m # CONFIG_MFD_JANZ_CMODIO is not set CONFIG_MFD_VX855=m @@ -3430,7 +3477,9 @@ CONFIG_MEDIA_TUNER_MXL5007T=m CONFIG_MEDIA_TUNER_MC44S803=m CONFIG_MEDIA_TUNER_MAX2165=m CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TUA9001=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m @@ -3549,6 +3598,7 @@ CONFIG_VIDEO_THS7303=m CONFIG_VIDEO_M52790=m CONFIG_VIDEO_VIVI=m CONFIG_V4L_USB_DRIVERS=y +CONFIG_VIDEO_AU0828=m CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y CONFIG_USB_GSPCA=m @@ -3606,7 +3656,7 @@ CONFIG_VIDEO_HDPVR=m CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_ALSA=m CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=y +CONFIG_VIDEO_EM28XX_RC=m CONFIG_VIDEO_TLG2300=m CONFIG_VIDEO_CX231XX=m CONFIG_VIDEO_CX231XX_RC=y @@ -3616,7 +3666,6 @@ CONFIG_VIDEO_TM6000=m CONFIG_VIDEO_TM6000_ALSA=m CONFIG_VIDEO_TM6000_DVB=m CONFIG_VIDEO_USBVISION=m -CONFIG_USB_ET61X251=m CONFIG_USB_SN9C102=m CONFIG_USB_PWC=m # CONFIG_USB_PWC_DEBUG is not set @@ -3626,7 +3675,6 @@ CONFIG_USB_ZR364XX=m CONFIG_USB_STKWEBCAM=m CONFIG_USB_S2255=m CONFIG_V4L_PCI_DRIVERS=y -CONFIG_VIDEO_AU0828=m CONFIG_VIDEO_BT848=m CONFIG_VIDEO_BT848_DVB=y CONFIG_VIDEO_CX18=m @@ -3741,6 +3789,7 @@ CONFIG_DVB_USB_TECHNISAT_USB2=m CONFIG_DVB_USB_IT913X=m CONFIG_DVB_USB_MXL111SF=m CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_AF9035=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_SMS_SIANO_MDTV=m @@ -3890,8 +3939,11 @@ CONFIG_DVB_OR51132=m CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LG2160=m CONFIG_DVB_S5H1409=m CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m CONFIG_DVB_S5H1411=m # @@ -3923,6 +3975,7 @@ CONFIG_DVB_TDA665x=m CONFIG_DVB_IX2505V=m CONFIG_DVB_IT913X_FE=m CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m # # Tools to develop new frontends @@ -3975,6 +4028,9 @@ CONFIG_DRM_GMA500=m CONFIG_DRM_GMA600=y CONFIG_DRM_GMA3600=y CONFIG_DRM_UDL=m +CONFIG_DRM_AST=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_CIRRUS_QEMU=m # CONFIG_STUB_POULSBO is not set CONFIG_VGASTATE=m CONFIG_VIDEO_OUTPUT_CONTROL=m @@ -4048,12 +4104,14 @@ CONFIG_FB_VIRTUAL=m # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set # CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set # CONFIG_EXYNOS_VIDEO is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_LM3533=m CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_APPLE=m # CONFIG_BACKLIGHT_SAHARA is not set @@ -4084,6 +4142,7 @@ CONFIG_FONT_8x16=y # CONFIG_FONT_SUN8x16 is not set # CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_10x18 is not set +CONFIG_FONT_AUTOSELECT=y # CONFIG_LOGO is not set CONFIG_SOUND=m CONFIG_SOUND_OSS_CORE=y @@ -4229,7 +4288,6 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=1 CONFIG_SND_HDA_INPUT_JACK=y CONFIG_SND_HDA_PATCH_LOADER=y CONFIG_SND_HDA_CODEC_REALTEK=y -CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y @@ -4287,16 +4345,13 @@ CONFIG_SND_PDAUDIOCF=m # CONFIG_SND_SOC is not set # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m -CONFIG_HID_SUPPORT=y -CONFIG_HID=m -CONFIG_HIDRAW=y # -# USB Input Devices +# HID support # -CONFIG_USB_HID=m -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y +CONFIG_HID=m +CONFIG_HIDRAW=y +CONFIG_HID_GENERIC=m # # Special HID drivers @@ -4305,6 +4360,7 @@ CONFIG_HID_A4TECH=m CONFIG_HID_ACRUX=m CONFIG_HID_ACRUX_FF=y CONFIG_HID_APPLE=m +CONFIG_HID_AUREAL=m CONFIG_HID_BELKIN=m CONFIG_HID_CHERRY=m CONFIG_HID_CHICONY=m @@ -4362,12 +4418,18 @@ CONFIG_HID_TOPSEED=m CONFIG_HID_THRUSTMASTER=m CONFIG_THRUSTMASTER_FF=y CONFIG_HID_WACOM=m -CONFIG_HID_WACOM_POWER_SUPPLY=y CONFIG_HID_WIIMOTE=m CONFIG_HID_WIIMOTE_EXT=y CONFIG_HID_ZEROPLUS=m CONFIG_ZEROPLUS_FF=y CONFIG_HID_ZYDACRON=m + +# +# USB HID support +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB_ARCH_HAS_XHCI=y @@ -4381,8 +4443,6 @@ CONFIG_USB=m # # Miscellaneous USB options # -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_DEVICE_CLASS is not set CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set @@ -4421,9 +4481,15 @@ CONFIG_USB_R8A66597_HCD=m CONFIG_USB_RENESAS_USBHS_HCD=m CONFIG_USB_WHCI_HCD=m CONFIG_USB_HWA_HCD=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set CONFIG_USB_MUSB_HDRC=m CONFIG_USB_MUSB_TUSB6010=m CONFIG_MUSB_PIO_ONLY=y +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +# CONFIG_USB_CHIPIDEA_DEBUG is not set CONFIG_USB_RENESAS_USBHS=m # @@ -4537,6 +4603,7 @@ CONFIG_USB_SERIAL_OPTICON=m CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m CONFIG_USB_SERIAL_ZIO=m CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m # CONFIG_USB_SERIAL_DEBUG is not set # @@ -4563,6 +4630,11 @@ CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_YUREX=m + +# +# USB Physical Layer drivers +# +CONFIG_USB_ISP1301=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m @@ -4574,6 +4646,10 @@ CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 + +# +# USB Peripheral Controller +# CONFIG_USB_FUSB300=m CONFIG_USB_R8A66597=m CONFIG_USB_RENESAS_USBHS_UDC=m @@ -4581,12 +4657,10 @@ CONFIG_USB_MV_UDC=m CONFIG_USB_GADGET_MUSB_HDRC=m CONFIG_USB_M66592=m CONFIG_USB_AMD5536UDC=m -CONFIG_USB_CI13XXX_PCI=m CONFIG_USB_NET2272=m CONFIG_USB_NET2272_DMA=y CONFIG_USB_NET2280=m CONFIG_USB_GOKU=m -CONFIG_USB_LANGWELL=m CONFIG_USB_EG20T=m CONFIG_USB_DUMMY_HCD=m CONFIG_USB_GADGET_DUALSPEED=y @@ -4606,6 +4680,7 @@ CONFIG_USB_FUNCTIONFS_GENERIC=y CONFIG_USB_FILE_STORAGE=m # CONFIG_USB_FILE_STORAGE_TEST is not set # CONFIG_USB_MASS_STORAGE is not set +CONFIG_USB_GADGET_TARGET=m CONFIG_USB_G_SERIAL=m CONFIG_USB_MIDI_GADGET=m CONFIG_USB_G_PRINTER=m @@ -4625,7 +4700,6 @@ CONFIG_USB_G_WEBCAM=m CONFIG_USB_OTG_UTILS=y # CONFIG_USB_GPIO_VBUS is not set CONFIG_NOP_USB_XCEIV=m -# CONFIG_AB8500_USB is not set CONFIG_UWB=m CONFIG_UWB_HWA=m CONFIG_UWB_WHCI=m @@ -4680,6 +4754,7 @@ CONFIG_LEDS_CLASS=y # LED drivers # CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m CONFIG_LEDS_PCA9532=m # CONFIG_LEDS_PCA9532_GPIO is not set # CONFIG_LEDS_GPIO is not set @@ -4693,6 +4768,7 @@ CONFIG_LEDS_BD2802=m CONFIG_LEDS_INTEL_SS4200=m CONFIG_LEDS_LT3593=m CONFIG_LEDS_DELL_NETBOOKS=m +CONFIG_LEDS_MC13783=m CONFIG_LEDS_TCA6507=m CONFIG_LEDS_OT200=m CONFIG_LEDS_TRIGGERS=y @@ -4709,6 +4785,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m # # iptables trigger is under Netfilter config (LED target) # +CONFIG_LEDS_TRIGGER_TRANSIENT=m CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y # CONFIG_INFINIBAND is not set @@ -4796,11 +4873,11 @@ CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_RP5C01=m CONFIG_RTC_DRV_V3020=m CONFIG_RTC_DRV_PCF50633=m -CONFIG_RTC_DRV_AB8500=m # # on-CPU RTC drivers # +CONFIG_RTC_DRV_MC13XXX=m CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -4843,6 +4920,7 @@ CONFIG_VIRTIO_RING=y CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_BALLOON=m CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y # # Microsoft Hyper-V guest support @@ -4861,6 +4939,8 @@ CONFIG_PRISM2_USB=m CONFIG_ECHO=m CONFIG_COMEDI=m # CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 CONFIG_COMEDI_MISC_DRIVERS=m CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_BOND=m @@ -4880,9 +4960,13 @@ CONFIG_COMEDI_PCL816=m CONFIG_COMEDI_PCL818=m CONFIG_COMEDI_PCM3724=m CONFIG_COMEDI_PCM3730=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m CONFIG_COMEDI_RTI800=m CONFIG_COMEDI_RTI802=m CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS08_ISA=m CONFIG_COMEDI_DAS16=m CONFIG_COMEDI_DAS800=m CONFIG_COMEDI_DAS1800=m @@ -4934,12 +5018,13 @@ CONFIG_COMEDI_ADL_PCI9118=m CONFIG_COMEDI_ADV_PCI1710=m CONFIG_COMEDI_ADV_PCI1723=m CONFIG_COMEDI_ADV_PCI_DIO=m -CONFIG_COMEDI_AMPLC_DIO200=m -CONFIG_COMEDI_AMPLC_PC236=m -CONFIG_COMEDI_AMPLC_PC263=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m CONFIG_COMEDI_AMPLC_PCI224=m CONFIG_COMEDI_AMPLC_PCI230=m CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAS08_PCI=m CONFIG_COMEDI_DT3000=m CONFIG_COMEDI_DYNA_PCI10XX=m CONFIG_COMEDI_UNIOXX5=m @@ -4986,8 +5071,11 @@ CONFIG_COMEDI_MITE=m CONFIG_COMEDI_NI_TIO=m CONFIG_COMEDI_NI_LABPC=m CONFIG_COMEDI_8255=m -CONFIG_COMEDI_DAS08=m CONFIG_COMEDI_FC=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_AMPLC_PC263=m +CONFIG_COMEDI_DAS08=m # CONFIG_FB_OLPC_DCON is not set CONFIG_ASUS_OLED=m # CONFIG_PANEL is not set @@ -5013,12 +5101,9 @@ CONFIG_LINE6_USB=m # CONFIG_LINE6_USB_RAW is not set # CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set CONFIG_USB_SERIAL_QUATECH2=m -CONFIG_USB_SERIAL_QUATECH_USB2=m CONFIG_VT6655=m CONFIG_VT6656=m -# CONFIG_VME_BUS is not set CONFIG_DX_SEP=m -# CONFIG_IIO is not set CONFIG_ZRAM=m # CONFIG_ZRAM_DEBUG is not set CONFIG_ZCACHE=y @@ -5056,7 +5141,6 @@ CONFIG_SPEAKUP_SYNTH_TXPRT=m CONFIG_SPEAKUP_SYNTH_DUMMY=m CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m -CONFIG_INTEL_MEI=m CONFIG_STAGING_MEDIA=y CONFIG_DVB_AS102=m CONFIG_DVB_CXD2099=m @@ -5094,6 +5178,16 @@ CONFIG_LIRC_ZILOG=m # CONFIG_ANDROID is not set # CONFIG_PHONE is not set CONFIG_USB_WPAN_HCD=m +CONFIG_IPACK_BUS=m +CONFIG_BOARD_TPCI200=m +CONFIG_SERIAL_IPOCTAL=m +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_QOS=y +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_GDM72XX_USB=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB_PM=y CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -5166,6 +5260,15 @@ CONFIG_INTEL_IOMMU_FLOPPY_WA=y # CONFIG_VIRT_DRIVERS=y # CONFIG_PM_DEVFREQ is not set +CONFIG_EXTCON=m + +# +# Extcon Device Drivers +# +CONFIG_EXTCON_GPIO=m +CONFIG_MEMORY=y +# CONFIG_IIO is not set +# CONFIG_VME_BUS is not set # # Firmware Drivers @@ -5315,11 +5418,9 @@ CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y # CONFIG_JFFS2_RUBIN is not set CONFIG_UBIFS_FS=m -CONFIG_UBIFS_FS_XATTR=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y CONFIG_UBIFS_FS_ZLIB=y -# CONFIG_UBIFS_FS_DEBUG is not set CONFIG_LOGFS=m CONFIG_CRAMFS=m CONFIG_SQUASHFS=m @@ -5338,6 +5439,7 @@ CONFIG_OMFS_FS=m # CONFIG_QNX6FS_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_PSTORE=y +CONFIG_PSTORE_RAM=m # CONFIG_SYSV_FS is not set CONFIG_UFS_FS=m # CONFIG_UFS_FS_WRITE is not set @@ -5347,6 +5449,7 @@ CONFIG_EXOFS_FS=m CONFIG_ORE=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m +CONFIG_NFS_V2=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y @@ -5435,6 +5538,17 @@ CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m CONFIG_NLS_UTF8=m CONFIG_DLM=m # CONFIG_DLM_DEBUG is not set @@ -5450,6 +5564,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y CONFIG_STRIP_ASM_SYMS=y +# CONFIG_READABLE_ASM is not set CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set @@ -5462,6 +5577,8 @@ CONFIG_HARDLOCKUP_DETECTOR=y CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set @@ -5518,7 +5635,6 @@ CONFIG_CPU_NOTIFIER_ERROR_INJECT=m # CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y -CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -5529,7 +5645,6 @@ CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACER_MAX_TRACE=y CONFIG_RING_BUFFER=y -CONFIG_FTRACE_NMI_ENTER=y CONFIG_EVENT_TRACING=y CONFIG_EVENT_POWER_TRACING_DEPRECATED=y CONFIG_CONTEXT_SWITCH_TRACER=y @@ -5549,6 +5664,8 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_UPROBE_EVENT is not set +# CONFIG_PROBE_EVENTS is not set CONFIG_DYNAMIC_FTRACE=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_MCOUNT_RECORD=y @@ -5759,6 +5876,7 @@ CONFIG_HAVE_KVM_EVENTFD=y CONFIG_KVM_APIC_ARCHITECTURE=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m @@ -5773,6 +5891,8 @@ CONFIG_BINARY_PRINTF=y # CONFIG_RAID6_PQ=m CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y @@ -5811,6 +5931,8 @@ CONFIG_DECOMPRESS_XZ=y CONFIG_DECOMPRESS_LZO=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y CONFIG_REED_SOLOMON_DEC16=y CONFIG_BCH=m CONFIG_BCH_CONST_PARAMS=y @@ -5829,3 +5951,4 @@ CONFIG_NLATTR=y CONFIG_LRU_CACHE=m CONFIG_AVERAGE=y CONFIG_CORDIC=m +CONFIG_DDR=y diff --git a/libre/linux-libre/config.x86_64 b/libre/linux-libre/config.x86_64 index 9f3698ac2..fcc8b37dd 100644 --- a/libre/linux-libre/config.x86_64 +++ b/libre/linux-libre/config.x86_64 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 3.4.1-1 Kernel Configuration +# Linux/x86_64 3.5.0-1 Kernel Configuration # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -9,11 +9,6 @@ CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" -CONFIG_GENERIC_CMOS_UPDATE=y -CONFIG_CLOCKSOURCE_WATCHDOG=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_ARCH_CLOCKSOURCE_DATA=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y @@ -28,9 +23,7 @@ CONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y -CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y @@ -48,11 +41,12 @@ CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y CONFIG_X86_HT=y CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" -# CONFIG_KTIME_SCALAR is not set CONFIG_ARCH_CPU_PROBE_RELEASE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_HAVE_IRQ_WORK=y CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y # # General setup @@ -99,8 +93,25 @@ CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y # # RCU Subsystem @@ -108,6 +119,7 @@ CONFIG_SPARSE_IRQ=y CONFIG_TREE_PREEMPT_RCU=y CONFIG_PREEMPT_RCU=y CONFIG_RCU_FANOUT=64 +CONFIG_RCU_FANOUT_LEAF=16 # CONFIG_RCU_FANOUT_EXACT is not set CONFIG_RCU_FAST_NO_HZ=y # CONFIG_TREE_RCU_TRACE is not set @@ -139,7 +151,6 @@ CONFIG_BLK_CGROUP=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y CONFIG_IPC_NS=y -CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_SCHED_AUTOGROUP=y @@ -182,7 +193,6 @@ CONFIG_HAVE_PERF_EVENTS=y # Kernel Performance Events And Counters # CONFIG_PERF_EVENTS=y -CONFIG_PERF_COUNTERS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set CONFIG_VM_EVENT_COUNTERS=y CONFIG_PCI_QUIRKS=y @@ -207,6 +217,7 @@ CONFIG_HAVE_OPTPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_ATTRS=y CONFIG_USE_GENERIC_SMP_HELPERS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y CONFIG_HAVE_DMA_API_DEBUG=y CONFIG_HAVE_HW_BREAKPOINT=y @@ -219,6 +230,8 @@ CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y CONFIG_HAVE_CMPXCHG_DOUBLE=y CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y # # GCOV-based kernel profiling @@ -313,11 +326,6 @@ CONFIG_FREEZER=y # Processor type and features # CONFIG_ZONE_DMA=y -CONFIG_TICK_ONESHOT=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_SMP=y CONFIG_X86_X2APIC=y CONFIG_X86_MPPARSE=y @@ -439,7 +447,9 @@ CONFIG_HWPOISON_INJECT=m CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set +CONFIG_CROSS_MEMORY_ATTACH=y CONFIG_CLEANCACHE=y +CONFIG_FRONTSWAP=y CONFIG_X86_CHECK_BIOS_CORRUPTION=y CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y CONFIG_X86_RESERVE_LOW=64 @@ -484,6 +494,10 @@ CONFIG_HIBERNATION=y CONFIG_PM_STD_PARTITION="" CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PM_WAKELOCKS_GC=y CONFIG_PM_RUNTIME=y CONFIG_PM=y CONFIG_PM_DEBUG=y @@ -633,6 +647,7 @@ CONFIG_RAPIDIO=y CONFIG_RAPIDIO_TSI721=y CONFIG_RAPIDIO_DISC_TIMEOUT=30 # CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_DMA_ENGINE=y CONFIG_RAPIDIO_DEBUG=y CONFIG_RAPIDIO_TSI57X=y CONFIG_RAPIDIO_CPS_XX=y @@ -657,6 +672,7 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y CONFIG_KEYS_COMPAT=y CONFIG_HAVE_TEXT_POKE_SMP=y +CONFIG_X86_DEV_DMA_OPS=y CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y @@ -667,6 +683,7 @@ CONFIG_PACKET=y CONFIG_UNIX=y CONFIG_UNIX_DIAG=m CONFIG_XFRM=y +CONFIG_XFRM_ALGO=m CONFIG_XFRM_USER=m # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set @@ -805,6 +822,7 @@ CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m CONFIG_NETFILTER_XT_TARGET_CT=m CONFIG_NETFILTER_XT_TARGET_DSCP=m CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m CONFIG_NETFILTER_XT_TARGET_LED=m CONFIG_NETFILTER_XT_TARGET_LOG=m @@ -965,7 +983,6 @@ CONFIG_IP_NF_ARP_MANGLE=m # CONFIG_NF_DEFRAG_IPV6=m CONFIG_NF_CONNTRACK_IPV6=m -CONFIG_IP6_NF_QUEUE=m CONFIG_IP6_NF_IPTABLES=m CONFIG_IP6_NF_MATCH_AH=m CONFIG_IP6_NF_MATCH_EUI64=m @@ -1057,11 +1074,11 @@ CONFIG_IPDDP_ENCAP=y CONFIG_IPDDP_DECAP=y # CONFIG_X25 is not set # CONFIG_LAPB is not set -# CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set CONFIG_PHONET=m CONFIG_IEEE802154=m CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m CONFIG_NET_SCHED=y # @@ -1085,6 +1102,8 @@ CONFIG_NET_SCH_DRR=m CONFIG_NET_SCH_MQPRIO=m CONFIG_NET_SCH_CHOKE=m CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m CONFIG_NET_SCH_INGRESS=m CONFIG_NET_SCH_PLUG=m @@ -1120,6 +1139,7 @@ CONFIG_NET_SCH_FIFO=y # CONFIG_DCB is not set CONFIG_DNS_RESOLVER=y CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BLA=y # CONFIG_BATMAN_ADV_DEBUG is not set CONFIG_OPENVSWITCH=m CONFIG_RPS=y @@ -1127,7 +1147,6 @@ CONFIG_RFS_ACCEL=y CONFIG_XPS=y CONFIG_NETPRIO_CGROUP=m CONFIG_BQL=y -CONFIG_HAVE_BPF_JIT=y CONFIG_BPF_JIT=y # @@ -1294,6 +1313,8 @@ CONFIG_CEPH_LIB=m # CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set CONFIG_NFC=m CONFIG_NFC_NCI=m +CONFIG_NFC_HCI=m +# CONFIG_NFC_SHDLC is not set # CONFIG_NFC_LLCP is not set # @@ -1302,6 +1323,7 @@ CONFIG_NFC_NCI=m CONFIG_PN544_NFC=m CONFIG_NFC_PN533=m CONFIG_NFC_WILINK=m +CONFIG_HAVE_BPF_JIT=y # # Device Drivers @@ -1452,7 +1474,6 @@ CONFIG_MTD_UBI=m CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_MTD_UBI_BEB_RESERVE=1 # CONFIG_MTD_UBI_GLUEBI is not set -# CONFIG_MTD_UBI_DEBUG is not set CONFIG_PARPORT=m CONFIG_PARPORT_PC=m CONFIG_PARPORT_SERIAL=m @@ -1532,7 +1553,8 @@ CONFIG_SENSORS_APDS990X=m CONFIG_HMC6352=m CONFIG_DS1682=m CONFIG_VMWARE_BALLOON=m -CONFIG_BMP085=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m CONFIG_PCH_PHUB=m CONFIG_USB_SWITCH_FSA9480=m CONFIG_C2PORT=m @@ -1562,6 +1584,7 @@ CONFIG_SENSORS_LIS3_I2C=m # Altera FPGA firmware download module # CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI=m CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1685,6 +1708,7 @@ CONFIG_SCSI_IPR=m # CONFIG_SCSI_IPR_DUMP is not set CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m CONFIG_SCSI_QLA_ISCSI=m CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set @@ -1844,6 +1868,7 @@ CONFIG_TCM_PSCSI=m CONFIG_LOOPBACK_TARGET=m CONFIG_TCM_FC=m CONFIG_ISCSI_TARGET=m +CONFIG_SBP_TARGET=m CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m @@ -1881,10 +1906,12 @@ CONFIG_EQUALIZER=m CONFIG_MII=m CONFIG_IEEE802154_DRIVERS=m CONFIG_IEEE802154_FAKEHARD=m +CONFIG_IEEE802154_FAKELB=m CONFIG_IFB=m CONFIG_NET_TEAM=m CONFIG_NET_TEAM_MODE_ROUNDROBIN=m CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m CONFIG_NETCONSOLE=m @@ -2015,10 +2042,13 @@ CONFIG_E1000=m CONFIG_E1000E=m CONFIG_IGB=m CONFIG_IGB_DCA=y +CONFIG_IGB_PTP=y CONFIG_IGBVF=m CONFIG_IXGB=m CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_PTP=y CONFIG_IXGBEVF=m CONFIG_NET_VENDOR_I825XX=y CONFIG_ZNET=m @@ -2091,8 +2121,8 @@ CONFIG_EPIC100=m CONFIG_SMSC9420=m CONFIG_NET_VENDOR_STMICRO=y CONFIG_STMMAC_ETH=m -CONFIG_STMMAC_PLATFORM=m -CONFIG_STMMAC_PCI=m +# CONFIG_STMMAC_PLATFORM is not set +CONFIG_STMMAC_PCI=y # CONFIG_STMMAC_DEBUG_FS is not set # CONFIG_STMMAC_DA is not set CONFIG_STMMAC_RING=y @@ -2110,6 +2140,12 @@ CONFIG_NET_VENDOR_VIA=y CONFIG_VIA_RHINE=m # CONFIG_VIA_RHINE_MMIO is not set CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_BUS_ANY=y CONFIG_NET_VENDOR_XIRCOM=y CONFIG_PCMCIA_XIRC2PS=m # CONFIG_FDDI is not set @@ -2154,7 +2190,6 @@ CONFIG_SLHC=m # CONFIG_SLIP_COMPRESSED is not set # CONFIG_SLIP_SMART is not set # CONFIG_SLIP_MODE_SLIP6 is not set -# CONFIG_TR is not set # # USB Network Adapters @@ -2269,6 +2304,7 @@ CONFIG_BRCMUTIL=m CONFIG_BRCMSMAC=m CONFIG_BRCMFMAC=m CONFIG_BRCMFMAC_SDIO=y +# CONFIG_BRCMFMAC_SDIO_OOB is not set CONFIG_BRCMFMAC_USB=y # CONFIG_BRCMDBG is not set CONFIG_HOSTAP=m @@ -2350,17 +2386,19 @@ CONFIG_RTL8192CU=m CONFIG_RTLWIFI=m # CONFIG_RTLWIFI_DEBUG is not set CONFIG_RTL8192C_COMMON=m +CONFIG_WL_TI=y CONFIG_WL1251=m CONFIG_WL1251_SDIO=m -CONFIG_WL12XX_MENU=m CONFIG_WL12XX=m -CONFIG_WL12XX_SDIO=m +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m CONFIG_WL12XX_PLATFORM_DATA=y CONFIG_ZD1211RW=m # CONFIG_ZD1211RW_DEBUG is not set CONFIG_MWIFIEX=m CONFIG_MWIFIEX_SDIO=m CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m # # WiMAX Wireless Broadband devices @@ -2513,6 +2551,7 @@ CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=m CONFIG_INPUT_POLLDEV=m CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_MATRIXKMAP=m # # Userland interfaces @@ -2541,6 +2580,7 @@ CONFIG_KEYBOARD_TCA6416=m CONFIG_KEYBOARD_TCA8418=m CONFIG_KEYBOARD_MATRIX=m # CONFIG_KEYBOARD_LM8323 is not set +CONFIG_KEYBOARD_LM8333=m # CONFIG_KEYBOARD_MAX7359 is not set CONFIG_KEYBOARD_MCS=m CONFIG_KEYBOARD_MPR121=m @@ -2623,6 +2663,7 @@ CONFIG_TOUCHSCREEN_ILI210X=m CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m CONFIG_TOUCHSCREEN_MAX11801=m CONFIG_TOUCHSCREEN_MCS5000=m CONFIG_TOUCHSCREEN_MTOUCH=m @@ -2638,6 +2679,7 @@ CONFIG_TOUCHSCREEN_WM9705=y CONFIG_TOUCHSCREEN_WM9712=y CONFIG_TOUCHSCREEN_WM9713=y CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_MC13783=m CONFIG_TOUCHSCREEN_USB_EGALAX=y CONFIG_TOUCHSCREEN_USB_PANJIT=y CONFIG_TOUCHSCREEN_USB_3M=y @@ -2662,11 +2704,11 @@ CONFIG_TOUCHSCREEN_TSC2007=m CONFIG_TOUCHSCREEN_ST1232=m CONFIG_TOUCHSCREEN_TPS6507X=m CONFIG_INPUT_MISC=y -CONFIG_INPUT_AB8500_PONKEY=m CONFIG_INPUT_AD714X=m CONFIG_INPUT_AD714X_I2C=m CONFIG_INPUT_BMA150=m CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_MC13783_PWRBUTTON=m CONFIG_INPUT_MMA8450=m CONFIG_INPUT_MPU3050=m CONFIG_INPUT_APANEL=m @@ -2809,7 +2851,6 @@ CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m CONFIG_TELCLOCK=m CONFIG_DEVPORT=y -CONFIG_RAMOOPS=m CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y @@ -2916,6 +2957,7 @@ CONFIG_GPIO_SYSFS=y # CONFIG_GPIO_GENERIC_PLATFORM is not set # CONFIG_GPIO_IT8761E is not set CONFIG_GPIO_SCH=m +CONFIG_GPIO_ICH=m # CONFIG_GPIO_VX855 is not set # @@ -3068,6 +3110,7 @@ CONFIG_SENSORS_SCH5636=m CONFIG_SENSORS_ADS1015=m CONFIG_SENSORS_ADS7828=m CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_INA2XX=m CONFIG_SENSORS_THMC50=m CONFIG_SENSORS_TMP102=m CONFIG_SENSORS_TMP401=m @@ -3087,6 +3130,7 @@ CONFIG_SENSORS_W83L786NG=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_MC13783_ADC=m # # ACPI drivers @@ -3117,6 +3161,7 @@ CONFIG_IB700_WDT=m CONFIG_IBMASR=m CONFIG_WAFER_WDT=m CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m CONFIG_ITCO_WDT=m CONFIG_ITCO_VENDOR_SUPPORT=y CONFIG_IT8712F_WDT=m @@ -3183,26 +3228,28 @@ CONFIG_BCMA_HOST_PCI=y # # Multifunction device drivers # -CONFIG_MFD_CORE=y +CONFIG_MFD_CORE=m CONFIG_MFD_SM501=m CONFIG_MFD_SM501_GPIO=y CONFIG_HTC_PASIC3=m CONFIG_UCB1400_CORE=m +CONFIG_MFD_LM3533=m # CONFIG_TPS6105X is not set CONFIG_TPS65010=m CONFIG_TPS6507X=m CONFIG_MFD_TPS65217=m # CONFIG_MFD_TMIO is not set -CONFIG_MFD_WM8400=m CONFIG_MFD_PCF50633=m CONFIG_PCF50633_ADC=m CONFIG_PCF50633_GPIO=m +CONFIG_MFD_MC13783=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m CONFIG_ABX500_CORE=y -CONFIG_AB8500_CORE=y -# CONFIG_AB8500_DEBUG is not set CONFIG_MFD_CS5535=m # CONFIG_MFD_TIMBERDALE is not set CONFIG_LPC_SCH=m +CONFIG_LPC_ICH=m CONFIG_MFD_RDC321X=m # CONFIG_MFD_JANZ_CMODIO is not set CONFIG_MFD_VX855=m @@ -3274,7 +3321,9 @@ CONFIG_MEDIA_TUNER_MXL5007T=m CONFIG_MEDIA_TUNER_MC44S803=m CONFIG_MEDIA_TUNER_MAX2165=m CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_FC0011=m CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TUA9001=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEOBUF_GEN=m CONFIG_VIDEOBUF_DMA_SG=m @@ -3393,6 +3442,7 @@ CONFIG_VIDEO_THS7303=m CONFIG_VIDEO_M52790=m CONFIG_VIDEO_VIVI=m CONFIG_V4L_USB_DRIVERS=y +CONFIG_VIDEO_AU0828=m CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y CONFIG_USB_GSPCA=m @@ -3450,7 +3500,7 @@ CONFIG_VIDEO_HDPVR=m CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_ALSA=m CONFIG_VIDEO_EM28XX_DVB=m -CONFIG_VIDEO_EM28XX_RC=y +CONFIG_VIDEO_EM28XX_RC=m CONFIG_VIDEO_TLG2300=m CONFIG_VIDEO_CX231XX=m CONFIG_VIDEO_CX231XX_RC=y @@ -3460,7 +3510,6 @@ CONFIG_VIDEO_TM6000=m CONFIG_VIDEO_TM6000_ALSA=m CONFIG_VIDEO_TM6000_DVB=m CONFIG_VIDEO_USBVISION=m -CONFIG_USB_ET61X251=m CONFIG_USB_SN9C102=m CONFIG_USB_PWC=m # CONFIG_USB_PWC_DEBUG is not set @@ -3470,7 +3519,6 @@ CONFIG_USB_ZR364XX=m CONFIG_USB_STKWEBCAM=m CONFIG_USB_S2255=m CONFIG_V4L_PCI_DRIVERS=y -CONFIG_VIDEO_AU0828=m CONFIG_VIDEO_BT848=m CONFIG_VIDEO_BT848_DVB=y CONFIG_VIDEO_CX18=m @@ -3584,6 +3632,7 @@ CONFIG_DVB_USB_TECHNISAT_USB2=m CONFIG_DVB_USB_IT913X=m CONFIG_DVB_USB_MXL111SF=m CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_AF9035=m CONFIG_DVB_TTUSB_BUDGET=m CONFIG_DVB_TTUSB_DEC=m CONFIG_SMS_SIANO_MDTV=m @@ -3733,8 +3782,11 @@ CONFIG_DVB_OR51132=m CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LG2160=m CONFIG_DVB_S5H1409=m CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m CONFIG_DVB_S5H1411=m # @@ -3766,6 +3818,7 @@ CONFIG_DVB_TDA665x=m CONFIG_DVB_IX2505V=m CONFIG_DVB_IT913X_FE=m CONFIG_DVB_M88RS2000=m +CONFIG_DVB_AF9033=m # # Tools to develop new frontends @@ -3812,6 +3865,9 @@ CONFIG_DRM_GMA500=m CONFIG_DRM_GMA600=y CONFIG_DRM_GMA3600=y CONFIG_DRM_UDL=m +CONFIG_DRM_AST=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_CIRRUS_QEMU=m # CONFIG_STUB_POULSBO is not set CONFIG_VGASTATE=m CONFIG_VIDEO_OUTPUT_CONTROL=m @@ -3883,12 +3939,14 @@ CONFIG_XEN_FBDEV_FRONTEND=m # CONFIG_FB_METRONOME is not set # CONFIG_FB_MB862XX is not set # CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set # CONFIG_EXYNOS_VIDEO is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_LCD_CLASS_DEVICE=m CONFIG_LCD_PLATFORM=m CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set +CONFIG_BACKLIGHT_LM3533=m CONFIG_BACKLIGHT_PROGEAR=m CONFIG_BACKLIGHT_APPLE=m # CONFIG_BACKLIGHT_SAHARA is not set @@ -3918,6 +3976,7 @@ CONFIG_FONT_8x16=y # CONFIG_FONT_SUN8x16 is not set # CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_10x18 is not set +CONFIG_FONT_AUTOSELECT=y # CONFIG_LOGO is not set CONFIG_SOUND=m CONFIG_SOUND_OSS_CORE=y @@ -4027,7 +4086,6 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=1 CONFIG_SND_HDA_INPUT_JACK=y CONFIG_SND_HDA_PATCH_LOADER=y CONFIG_SND_HDA_CODEC_REALTEK=y -CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y CONFIG_SND_HDA_CODEC_ANALOG=y CONFIG_SND_HDA_CODEC_SIGMATEL=y CONFIG_SND_HDA_CODEC_VIA=y @@ -4084,16 +4142,13 @@ CONFIG_SND_PDAUDIOCF=m # CONFIG_SND_SOC is not set # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=m -CONFIG_HID_SUPPORT=y -CONFIG_HID=m -CONFIG_HIDRAW=y # -# USB Input Devices +# HID support # -CONFIG_USB_HID=m -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y +CONFIG_HID=m +CONFIG_HIDRAW=y +CONFIG_HID_GENERIC=m # # Special HID drivers @@ -4102,6 +4157,7 @@ CONFIG_HID_A4TECH=m CONFIG_HID_ACRUX=m CONFIG_HID_ACRUX_FF=y CONFIG_HID_APPLE=m +CONFIG_HID_AUREAL=m CONFIG_HID_BELKIN=m CONFIG_HID_CHERRY=m CONFIG_HID_CHICONY=m @@ -4159,12 +4215,18 @@ CONFIG_HID_TOPSEED=m CONFIG_HID_THRUSTMASTER=m CONFIG_THRUSTMASTER_FF=y CONFIG_HID_WACOM=m -CONFIG_HID_WACOM_POWER_SUPPLY=y CONFIG_HID_WIIMOTE=m CONFIG_HID_WIIMOTE_EXT=y CONFIG_HID_ZEROPLUS=m CONFIG_ZEROPLUS_FF=y CONFIG_HID_ZYDACRON=m + +# +# USB HID support +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB_ARCH_HAS_XHCI=y @@ -4178,8 +4240,6 @@ CONFIG_USB=m # # Miscellaneous USB options # -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_DEVICE_CLASS is not set CONFIG_USB_DYNAMIC_MINORS=y CONFIG_USB_SUSPEND=y # CONFIG_USB_OTG is not set @@ -4218,9 +4278,15 @@ CONFIG_USB_R8A66597_HCD=m CONFIG_USB_RENESAS_USBHS_HCD=m CONFIG_USB_WHCI_HCD=m CONFIG_USB_HWA_HCD=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set CONFIG_USB_MUSB_HDRC=m CONFIG_USB_MUSB_TUSB6010=m CONFIG_MUSB_PIO_ONLY=y +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +# CONFIG_USB_CHIPIDEA_DEBUG is not set CONFIG_USB_RENESAS_USBHS=m # @@ -4334,6 +4400,7 @@ CONFIG_USB_SERIAL_OPTICON=m CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m CONFIG_USB_SERIAL_ZIO=m CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m # CONFIG_USB_SERIAL_DEBUG is not set # @@ -4360,6 +4427,11 @@ CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_YUREX=m + +# +# USB Physical Layer drivers +# +CONFIG_USB_ISP1301=m CONFIG_USB_ATM=m CONFIG_USB_SPEEDTOUCH=m CONFIG_USB_CXACRU=m @@ -4371,13 +4443,16 @@ CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG_FS is not set CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 + +# +# USB Peripheral Controller +# CONFIG_USB_R8A66597=m CONFIG_USB_RENESAS_USBHS_UDC=m CONFIG_USB_MV_UDC=m CONFIG_USB_GADGET_MUSB_HDRC=m CONFIG_USB_M66592=m CONFIG_USB_AMD5536UDC=m -CONFIG_USB_CI13XXX_PCI=m CONFIG_USB_NET2272=m CONFIG_USB_NET2272_DMA=y CONFIG_USB_NET2280=m @@ -4401,6 +4476,7 @@ CONFIG_USB_FUNCTIONFS_GENERIC=y CONFIG_USB_FILE_STORAGE=m # CONFIG_USB_FILE_STORAGE_TEST is not set # CONFIG_USB_MASS_STORAGE is not set +CONFIG_USB_GADGET_TARGET=m CONFIG_USB_G_SERIAL=m CONFIG_USB_MIDI_GADGET=m CONFIG_USB_G_PRINTER=m @@ -4420,7 +4496,6 @@ CONFIG_USB_G_WEBCAM=m CONFIG_USB_OTG_UTILS=y # CONFIG_USB_GPIO_VBUS is not set CONFIG_NOP_USB_XCEIV=m -# CONFIG_AB8500_USB is not set CONFIG_UWB=m CONFIG_UWB_HWA=m CONFIG_UWB_WHCI=m @@ -4475,6 +4550,7 @@ CONFIG_LEDS_CLASS=y # LED drivers # CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3533=m CONFIG_LEDS_PCA9532=m # CONFIG_LEDS_PCA9532_GPIO is not set # CONFIG_LEDS_GPIO is not set @@ -4488,6 +4564,7 @@ CONFIG_LEDS_BD2802=m CONFIG_LEDS_INTEL_SS4200=m CONFIG_LEDS_LT3593=m CONFIG_LEDS_DELL_NETBOOKS=m +CONFIG_LEDS_MC13783=m CONFIG_LEDS_TCA6507=m CONFIG_LEDS_OT200=m CONFIG_LEDS_TRIGGERS=y @@ -4504,6 +4581,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m # # iptables trigger is under Netfilter config (LED target) # +CONFIG_LEDS_TRIGGER_TRANSIENT=m CONFIG_ACCESSIBILITY=y CONFIG_A11Y_BRAILLE_CONSOLE=y # CONFIG_INFINIBAND is not set @@ -4589,11 +4667,11 @@ CONFIG_RTC_DRV_BQ4802=m CONFIG_RTC_DRV_RP5C01=m CONFIG_RTC_DRV_V3020=m CONFIG_RTC_DRV_PCF50633=m -CONFIG_RTC_DRV_AB8500=m # # on-CPU RTC drivers # +CONFIG_RTC_DRV_MC13XXX=m CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -4636,6 +4714,7 @@ CONFIG_VIRTIO_RING=m CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_BALLOON=m CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y # # Microsoft Hyper-V guest support @@ -4675,6 +4754,8 @@ CONFIG_PRISM2_USB=m CONFIG_ECHO=m CONFIG_COMEDI=m # CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 CONFIG_COMEDI_MISC_DRIVERS=m CONFIG_COMEDI_KCOMEDILIB=m CONFIG_COMEDI_BOND=m @@ -4706,12 +4787,13 @@ CONFIG_COMEDI_ADL_PCI9118=m CONFIG_COMEDI_ADV_PCI1710=m CONFIG_COMEDI_ADV_PCI1723=m CONFIG_COMEDI_ADV_PCI_DIO=m -CONFIG_COMEDI_AMPLC_DIO200=m -CONFIG_COMEDI_AMPLC_PC236=m -CONFIG_COMEDI_AMPLC_PC263=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m CONFIG_COMEDI_AMPLC_PCI224=m CONFIG_COMEDI_AMPLC_PCI230=m CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAS08_PCI=m CONFIG_COMEDI_DT3000=m CONFIG_COMEDI_DYNA_PCI10XX=m CONFIG_COMEDI_UNIOXX5=m @@ -4758,8 +4840,11 @@ CONFIG_COMEDI_MITE=m CONFIG_COMEDI_NI_TIO=m CONFIG_COMEDI_NI_LABPC=m CONFIG_COMEDI_8255=m -CONFIG_COMEDI_DAS08=m CONFIG_COMEDI_FC=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_AMPLC_PC263=m +CONFIG_COMEDI_DAS08=m CONFIG_ASUS_OLED=m # CONFIG_PANEL is not set CONFIG_R8187SE=m @@ -4784,12 +4869,9 @@ CONFIG_LINE6_USB=m # CONFIG_LINE6_USB_RAW is not set # CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set CONFIG_USB_SERIAL_QUATECH2=m -CONFIG_USB_SERIAL_QUATECH_USB2=m CONFIG_VT6655=m CONFIG_VT6656=m -# CONFIG_VME_BUS is not set CONFIG_DX_SEP=m -# CONFIG_IIO is not set CONFIG_ZRAM=m # CONFIG_ZRAM_DEBUG is not set CONFIG_ZCACHE=y @@ -4827,7 +4909,6 @@ CONFIG_SPEAKUP_SYNTH_TXPRT=m CONFIG_SPEAKUP_SYNTH_DUMMY=m CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m -CONFIG_INTEL_MEI=m CONFIG_STAGING_MEDIA=y CONFIG_DVB_AS102=m CONFIG_DVB_CXD2099=m @@ -4865,6 +4946,16 @@ CONFIG_LIRC_ZILOG=m # CONFIG_ANDROID is not set # CONFIG_PHONE is not set CONFIG_USB_WPAN_HCD=m +CONFIG_IPACK_BUS=m +CONFIG_BOARD_TPCI200=m +CONFIG_SERIAL_IPOCTAL=m +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_QOS=y +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_GDM72XX_USB=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB_PM=y CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m CONFIG_ACERHDF=m @@ -4938,6 +5029,15 @@ CONFIG_IRQ_REMAP=y # CONFIG_VIRT_DRIVERS=y # CONFIG_PM_DEVFREQ is not set +CONFIG_EXTCON=m + +# +# Extcon Device Drivers +# +CONFIG_EXTCON_GPIO=m +CONFIG_MEMORY=y +# CONFIG_IIO is not set +# CONFIG_VME_BUS is not set # # Firmware Drivers @@ -5088,11 +5188,9 @@ CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y # CONFIG_JFFS2_RUBIN is not set CONFIG_UBIFS_FS=m -CONFIG_UBIFS_FS_XATTR=y # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set CONFIG_UBIFS_FS_LZO=y CONFIG_UBIFS_FS_ZLIB=y -# CONFIG_UBIFS_FS_DEBUG is not set CONFIG_LOGFS=m CONFIG_CRAMFS=m CONFIG_SQUASHFS=m @@ -5111,6 +5209,7 @@ CONFIG_OMFS_FS=m # CONFIG_QNX6FS_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_PSTORE=y +CONFIG_PSTORE_RAM=m # CONFIG_SYSV_FS is not set CONFIG_UFS_FS=m # CONFIG_UFS_FS_WRITE is not set @@ -5120,6 +5219,7 @@ CONFIG_EXOFS_FS=m CONFIG_ORE=m CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=m +CONFIG_NFS_V2=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_NFS_V4=y @@ -5208,6 +5308,17 @@ CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m CONFIG_NLS_UTF8=m CONFIG_DLM=m # CONFIG_DLM_DEBUG is not set @@ -5223,6 +5334,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_FRAME_WARN=2048 CONFIG_MAGIC_SYSRQ=y CONFIG_STRIP_ASM_SYMS=y +# CONFIG_READABLE_ASM is not set CONFIG_UNUSED_SYMBOLS=y CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set @@ -5235,6 +5347,8 @@ CONFIG_HARDLOCKUP_DETECTOR=y CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set @@ -5290,7 +5404,6 @@ CONFIG_CPU_NOTIFIER_ERROR_INJECT=m # CONFIG_DEBUG_PAGEALLOC is not set CONFIG_USER_STACKTRACE_SUPPORT=y CONFIG_NOP_TRACER=y -CONFIG_HAVE_FTRACE_NMI_ENTER=y CONFIG_HAVE_FUNCTION_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y @@ -5301,7 +5414,6 @@ CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACER_MAX_TRACE=y CONFIG_RING_BUFFER=y -CONFIG_FTRACE_NMI_ENTER=y CONFIG_EVENT_TRACING=y CONFIG_EVENT_POWER_TRACING_DEPRECATED=y CONFIG_CONTEXT_SWITCH_TRACER=y @@ -5321,6 +5433,8 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +# CONFIG_UPROBE_EVENT is not set +# CONFIG_PROBE_EVENTS is not set CONFIG_DYNAMIC_FTRACE=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_MCOUNT_RECORD=y @@ -5533,6 +5647,7 @@ CONFIG_HAVE_KVM_EVENTFD=y CONFIG_KVM_APIC_ARCHITECTURE=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y CONFIG_VIRTUALIZATION=y CONFIG_KVM=m CONFIG_KVM_INTEL=m @@ -5546,6 +5661,8 @@ CONFIG_BINARY_PRINTF=y # CONFIG_RAID6_PQ=m CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y @@ -5583,6 +5700,8 @@ CONFIG_DECOMPRESS_XZ=y CONFIG_DECOMPRESS_LZO=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y CONFIG_REED_SOLOMON_DEC16=y CONFIG_BCH=m CONFIG_BCH_CONST_PARAMS=y @@ -5601,3 +5720,4 @@ CONFIG_NLATTR=y CONFIG_LRU_CACHE=m CONFIG_AVERAGE=y CONFIG_CORDIC=m +CONFIG_DDR=y diff --git a/libre/linux-libre/linux-libre.install b/libre/linux-libre/linux-libre.install index 44850230f..87de3c8d5 100644 --- a/libre/linux-libre/linux-libre.install +++ b/libre/linux-libre/linux-libre.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME= -KERNEL_VERSION=3.4.4-3-LIBRE +KERNEL_VERSION=3.5.0-1-LIBRE # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' diff --git a/libre/lirc-libre/PKGBUILD b/libre/lirc-libre/PKGBUILD index 3b73a9f2f..4442712f0 100644 --- a/libre/lirc-libre/PKGBUILD +++ b/libre/lirc-libre/PKGBUILD @@ -6,14 +6,14 @@ _pkgbase=lirc pkgbase=lirc-libre pkgname=('lirc-libre' 'lirc-utils-libre') pkgver=0.9.0 -pkgrel=20 +pkgrel=24 epoch=1 -_extramodules=extramodules-3.4-LIBRE +_extramodules=extramodules-3.5-LIBRE arch=('i686' 'x86_64' 'mips64el') url="http://www.lirc.org/" license=('GPL') ### NOTICE don't forget to bump version in depends in package_lirc -makedepends=('help2man' 'linux-libre-headers>=3.4' 'linux-libre-headers<3.5' 'alsa-lib' 'libx11' 'libftdi' 'libirman' 'python2') +makedepends=('help2man' 'linux-libre-headers>=3.5' 'linux-libre-headers<3.6' 'alsa-lib' 'libx11' 'libftdi' 'libirman' 'python2') options=('!makeflags' '!strip') source=(http://prdownloads.sourceforge.net/${_pkgbase}/${_pkgbase}-${pkgver}.tar.bz2 lirc_wpc8769l.patch diff --git a/libre/lirc-libre/lirc.install b/libre/lirc-libre/lirc.install index c50e384c8..b39282da6 100644 --- a/libre/lirc-libre/lirc.install +++ b/libre/lirc-libre/lirc.install @@ -1,4 +1,4 @@ -EXTRAMODULES=extramodules-3.4-LIBRE +EXTRAMODULES=extramodules-3.5-LIBRE post_install() { # updating module dependencies diff --git a/libre/luxrays-libre/PKGBUILD b/libre/luxrays-libre/PKGBUILD index 3a5654396..c8ea75082 100644 --- a/libre/luxrays-libre/PKGBUILD +++ b/libre/luxrays-libre/PKGBUILD @@ -5,7 +5,7 @@ _pkgname=luxrays pkgname=luxrays-libre pkgver=1.0rc2 _pkgver=8707be9e6dc9 -pkgrel=1 +pkgrel=2 epoch=0 pkgdesc="Accelerate the ray intersection process by using CPUs (without OpenCL)" arch=('i686' 'x86_64' 'mips64el') diff --git a/libre/luxrender-libre/PKGBUILD b/libre/luxrender-libre/PKGBUILD index c802e1200..122a87207 100644 --- a/libre/luxrender-libre/PKGBUILD +++ b/libre/luxrender-libre/PKGBUILD @@ -2,11 +2,11 @@ # Maintainer: Lukas Jirkovsky <l.jirkovsky@gmail.com> # Initial contributor: flixie <69one@gmx.net> # Contributor: Imanol Celaya <ornitorrincos@archlinux-es.org> -# Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> pkgname=luxrender-libre pkgver=1.0rc2 _pkgver=008805644181 -pkgrel=1 +pkgrel=3 pkgdesc="Rendering system for physically correct, unbiased image synthesis (without OpenCL)" arch=('i686' 'x86_64' 'mips64el') url="http://www.luxrender.net/" @@ -18,12 +18,18 @@ makedepends=('cmake' 'boost' 'qt' 'luxrays-libre' 'python') replaces=('luxrender') conflicts=('luxrender') provides=("luxrender=$pkgver") -source=(https://bitbucket.org/luxrender/lux/get/"$_pkgver".tar.bz2) -md5sums=('1922ccce6f70e7d707b340e2415875cd') +source=(https://bitbucket.org/luxrender/lux/get/$_pkgver.tar.bz2 \ + boost_1.50_fix.diff) +md5sums=('1922ccce6f70e7d707b340e2415875cd' + '8c7774bb0c97aadd77d9e665d8fa4aab') build() { cd "$srcdir"/luxrender-lux-$_pkgver + # fix for boost 1.50 + # the boost::TIME_UTC has been renamed due to the conflict with C++11 + patch -Np1 < "$srcdir"/boost_1.50_fix.diff || true + export CXXFLAGS="$CXXFLAGS -lpthread" cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DLUXRAYS_DISABLE_OPENCL=ON \ diff --git a/libre/luxrender-libre/boost_1.50_fix.diff b/libre/luxrender-libre/boost_1.50_fix.diff new file mode 100644 index 000000000..c1aa0a8e2 --- /dev/null +++ b/libre/luxrender-libre/boost_1.50_fix.diff @@ -0,0 +1,131 @@ +diff -rup luxrender-lux-008805644181/core/film.cpp luxrender-lux-008805644181.new/core/film.cpp +--- luxrender-lux-008805644181/core/film.cpp 2012-06-02 08:40:33.000000000 +0200 ++++ luxrender-lux-008805644181.new/core/film.cpp 2012-07-07 15:44:59.867492295 +0200 +@@ -618,7 +618,7 @@ Film::Film(u_int xres, u_int yres, Filte + int yRealHeight = Floor2Int(yPixelStart + .5f + yPixelCount + filter->yWidth) - Floor2Int(yPixelStart + .5f - filter->yWidth); + samplePerPass = xRealWidth * yRealHeight; + +- boost::xtime_get(&creationTime, boost::TIME_UTC); ++ boost::xtime_get(&creationTime, boost::TIME_UTC_); + + //Queryable parameters + AddIntAttribute(*this, "xResolution", "Horizontal resolution (pixels)", &Film::GetXResolution); +@@ -855,7 +855,7 @@ void Film::AddSampleCount(float count) { + if (haltTime > 0) { + // Check if we have met the enough rendering time condition + boost::xtime t; +- boost::xtime_get(&t, boost::TIME_UTC); ++ boost::xtime_get(&t, boost::TIME_UTC_); + if (t.sec - creationTime.sec > haltTime) + enoughSamplesPerPixel = true; + } +diff -rup luxrender-lux-008805644181/core/photonmap.cpp luxrender-lux-008805644181.new/core/photonmap.cpp +--- luxrender-lux-008805644181/core/photonmap.cpp 2012-06-02 08:40:33.000000000 +0200 ++++ luxrender-lux-008805644181.new/core/photonmap.cpp 2012-07-07 15:44:59.870825579 +0200 +@@ -474,13 +474,13 @@ void PhotonMapPreprocess(const RandomGen + + boost::xtime photonShootingStartTime; + boost::xtime lastUpdateTime; +- boost::xtime_get(&photonShootingStartTime, boost::TIME_UTC); +- boost::xtime_get(&lastUpdateTime, boost::TIME_UTC); ++ boost::xtime_get(&photonShootingStartTime, boost::TIME_UTC_); ++ boost::xtime_get(&lastUpdateTime, boost::TIME_UTC_); + u_int nshot = 0; + while ((!radianceDone || !directDone || !causticDone || !indirectDone) && !scene.terminated) { + // Dade - print some progress information + boost::xtime currentTime; +- boost::xtime_get(¤tTime, boost::TIME_UTC); ++ boost::xtime_get(¤tTime, boost::TIME_UTC_); + if (currentTime.sec - lastUpdateTime.sec > 5) { + ss.str(""); + ss << "Photon shooting progress: Direct[" << directPhotons.size(); +@@ -686,7 +686,7 @@ void PhotonMapPreprocess(const RandomGen + return; + + boost::xtime photonShootingEndTime; +- boost::xtime_get(&photonShootingEndTime, boost::TIME_UTC); ++ boost::xtime_get(&photonShootingEndTime, boost::TIME_UTC_); + LOG(LUX_INFO,LUX_NOERROR) << "Photon shooting done (" << ( photonShootingEndTime.sec - photonShootingStartTime.sec ) << "s)"; + + if (computeRadianceMap) { +@@ -700,7 +700,7 @@ void PhotonMapPreprocess(const RandomGen + for (u_int i = 0; i < radiancePhotons.size(); ++i) { + // Dade - print some progress info + boost::xtime currentTime; +- boost::xtime_get(¤tTime, boost::TIME_UTC); ++ boost::xtime_get(¤tTime, boost::TIME_UTC_); + if (currentTime.sec - lastUpdateTime.sec > 5) { + LOG(LUX_INFO,LUX_NOERROR) << "Radiance photon map computation progress: " << i << " (" << (100 * i / radiancePhotons.size()) << "%)"; + +@@ -740,7 +740,7 @@ void PhotonMapPreprocess(const RandomGen + + + boost::xtime radianceComputeEndTime; +- boost::xtime_get(&radianceComputeEndTime, boost::TIME_UTC); ++ boost::xtime_get(&radianceComputeEndTime, boost::TIME_UTC_); + LOG(LUX_INFO,LUX_NOERROR) << "Radiance photon map computed (" << ( radianceComputeEndTime.sec - photonShootingEndTime.sec ) << "s)"; + } + +diff -rup luxrender-lux-008805644181/core/renderfarm.cpp luxrender-lux-008805644181.new/core/renderfarm.cpp +--- luxrender-lux-008805644181/core/renderfarm.cpp 2012-06-02 08:40:33.000000000 +0200 ++++ luxrender-lux-008805644181.new/core/renderfarm.cpp 2012-07-07 15:44:59.870825579 +0200 +@@ -100,7 +100,7 @@ void FilmUpdaterThread::updateFilm(FilmU + // Dade - thread to update the film with data from servers + + boost::xtime reft; +- boost::xtime_get(&reft, boost::TIME_UTC); ++ boost::xtime_get(&reft, boost::TIME_UTC_); + + while (filmUpdaterThread->signal == SIG_NONE) { + // Dade - check signal every 1 sec +@@ -108,7 +108,7 @@ void FilmUpdaterThread::updateFilm(FilmU + for(;;) { + // Dade - sleep for 1 sec + boost::xtime xt; +- boost::xtime_get(&xt, boost::TIME_UTC); ++ boost::xtime_get(&xt, boost::TIME_UTC_); + xt.sec += 1; + boost::thread::sleep(xt); + +diff -rup luxrender-lux-008805644181/film/fleximage.cpp luxrender-lux-008805644181.new/film/fleximage.cpp +--- luxrender-lux-008805644181/film/fleximage.cpp 2012-06-02 08:40:33.000000000 +0200 ++++ luxrender-lux-008805644181.new/film/fleximage.cpp 2012-07-07 15:44:59.877492150 +0200 +@@ -191,7 +191,7 @@ FlexImageFilm::FlexImageFilm(u_int xres, + m_CameraResponseEnabled = d_CameraResponseEnabled = m_CameraResponseFile != ""; + + // init timer +- boost::xtime_get(&lastWriteImageTime, boost::TIME_UTC); ++ boost::xtime_get(&lastWriteImageTime, boost::TIME_UTC_); + lastWriteFLMTime = lastWriteImageTime; + } + +@@ -812,7 +812,7 @@ void FlexImageFilm::CheckWriteOuputInter + { + // Check write output interval + boost::xtime currentTime; +- boost::xtime_get(¤tTime, boost::TIME_UTC); ++ boost::xtime_get(¤tTime, boost::TIME_UTC_); + bool timeToWriteImage = (currentTime.sec - lastWriteImageTime.sec > writeInterval); + bool timeToWriteFLM = (currentTime.sec - lastWriteFLMTime.sec > flmWriteInterval); + +@@ -834,7 +834,7 @@ void FlexImageFilm::CheckWriteOuputInter + // WriteImage can take a very long time to be executed (i.e. by saving + // the film. It is better to refresh timestamps after the + // execution of WriteImage instead than before. +- boost::xtime_get(¤tTime, boost::TIME_UTC); ++ boost::xtime_get(¤tTime, boost::TIME_UTC_); + + if (timeToWriteImage) + lastWriteImageTime = currentTime; +diff -rup luxrender-lux-008805644181/renderers/sppmrenderer.h luxrender-lux-008805644181.new/renderers/sppmrenderer.h +--- luxrender-lux-008805644181/renderers/sppmrenderer.h 2012-06-02 08:40:33.000000000 +0200 ++++ luxrender-lux-008805644181.new/renderers/sppmrenderer.h 2012-07-07 15:44:59.874158864 +0200 +@@ -126,7 +126,7 @@ public: + { + while (state == PAUSE && !boost::this_thread::interruption_requested()) { + boost::xtime xt; +- boost::xtime_get(&xt, boost::TIME_UTC); ++ boost::xtime_get(&xt, boost::TIME_UTC_); + xt.sec += 1; + boost::thread::sleep(xt); + } diff --git a/libre/mozilla-devscripts/PKGBUILD b/libre/mozilla-devscripts/PKGBUILD index faa4b3a2a..ef7ea7641 100644 --- a/libre/mozilla-devscripts/PKGBUILD +++ b/libre/mozilla-devscripts/PKGBUILD @@ -1,8 +1,9 @@ # Maintainer: Michał Masłowski <mtjm@mtjm.eu> +# Contributor: Márcio Silva <coadde@lavabit.com> pkgname=mozilla-devscripts -pkgver=0.30 -pkgrel=1.1 +pkgver=0.32 +pkgrel=1 pkgdesc="Development scripts used by Debian Mozilla's addons packages" arch=("any") url="http://packages.debian.org/source/unstable/mozilla-devscripts" @@ -11,8 +12,8 @@ depends=("python2" "zip" "unzip") _debrepo=http://ftp.debian.org/debian/pool/main/ source=("${_debrepo}/m/${pkgname}/${pkgname}_${pkgver}.dsc" "${_debrepo}/m/${pkgname}/${pkgname}_${pkgver}.tar.gz") -md5sums=("6e517cef69c115356eb808866fd29268" - "4e95fb93d0d93b56543d2a789d457309") +md5sums=("386a5854601f29dca4a293f90f6c2a69" + "230126afa15fa654eb254bb4e61b4a93") build() { cd "$srcdir/$pkgname-$pkgver" diff --git a/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch b/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch new file mode 100644 index 000000000..85622aaac --- /dev/null +++ b/libre/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch @@ -0,0 +1,152 @@ +From 717fdb8ee0fd23cf72fc7d2832317f513caefa2c Mon Sep 17 00:00:00 2001 +From: Allan McRae <allan@archlinux.org> +Date: Sun, 8 Jul 2012 21:36:36 +1000 +Subject: [PATCH 1/4] Add conflict for replacing owned empty directory + +When two packages own an empty directory, pacman finds no conflict when +one of those packages wants to replace the directory with a file or a +symlink. When it comes to actually extracting the new file/symlink, +pacman sees the directory is still there (we do not remove empty +directories if they are owned by a package) and refuses to extract. + +Detect this potential conflict early and bail. Note that it is a +_potential_ conflict and not a guaranteed one as the other package owning +the directory could be updated or removed first which would remove +the conflict. However, pacman currently can not sort package installation +order to ensure this, so this conflict requires manual upgrade ordering. + +Signed-off-by: Allan McRae <allan@archlinux.org> +Signed-off-by: Dan McGee <dan@archlinux.org> +--- + lib/libalpm/conflict.c | 32 ++++++++++++++++++++++++++------ + test/pacman/tests/fileconflict009.py | 20 ++++++++++++++++++++ + test/pacman/tests/fileconflict010.py | 20 ++++++++++++++++++++ + 3 files changed, 66 insertions(+), 6 deletions(-) + create mode 100644 test/pacman/tests/fileconflict009.py + create mode 100644 test/pacman/tests/fileconflict010.py + +diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c +index 32f6f30..efa1a87 100644 +--- a/lib/libalpm/conflict.c ++++ b/lib/libalpm/conflict.c +@@ -328,15 +328,35 @@ const alpm_file_t *_alpm_filelist_contains(alpm_filelist_t *filelist, + return NULL; + } + +-static int dir_belongsto_pkg(const char *root, const char *dirpath, ++static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath, + alpm_pkg_t *pkg) + { ++ alpm_list_t *i; + struct stat sbuf; + char path[PATH_MAX]; + char abspath[PATH_MAX]; +- struct dirent *ent = NULL; + DIR *dir; ++ struct dirent *ent = NULL; ++ const char *root = handle->root; ++ ++ /* TODO: this is an overly strict check but currently pacman will not ++ * overwrite a directory with a file (case 10/11 in add.c). Adjusting that ++ * is not simple as even if the directory is being unowned by a conflicting ++ * package, pacman does not sort this to ensure all required directory ++ * "removals" happen before installation of file/symlink */ ++ ++ /* check that no other _installed_ package owns the directory */ ++ for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) { ++ if(pkg == i->data) { ++ continue; ++ } ++ ++ if(_alpm_filelist_contains(alpm_pkg_get_files(i->data), dirpath)) { ++ return 0; ++ } ++ } + ++ /* check all files in directory are owned by the package */ + snprintf(abspath, PATH_MAX, "%s%s", root, dirpath); + dir = opendir(abspath); + if(dir == NULL) { +@@ -349,13 +369,13 @@ static int dir_belongsto_pkg(const char *root, const char *dirpath, + if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { + continue; + } +- snprintf(path, PATH_MAX, "%s/%s", dirpath, name); ++ snprintf(path, PATH_MAX, "%s%s", dirpath, name); + snprintf(abspath, PATH_MAX, "%s%s", root, path); + if(stat(abspath, &sbuf) != 0) { + continue; + } + if(S_ISDIR(sbuf.st_mode)) { +- if(dir_belongsto_pkg(root, path, pkg)) { ++ if(dir_belongsto_pkg(handle, path, pkg)) { + continue; + } else { + closedir(dir); +@@ -529,9 +549,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle, + sprintf(dir, "%s/", filestr); + if(_alpm_filelist_contains(alpm_pkg_get_files(dbpkg), dir)) { + _alpm_log(handle, ALPM_LOG_DEBUG, +- "check if all files in %s belongs to %s\n", ++ "check if all files in %s belong to %s\n", + dir, dbpkg->name); +- resolved_conflict = dir_belongsto_pkg(handle->root, filestr, dbpkg); ++ resolved_conflict = dir_belongsto_pkg(handle, dir, dbpkg); + } + free(dir); + } +diff --git a/test/pacman/tests/fileconflict009.py b/test/pacman/tests/fileconflict009.py +new file mode 100644 +index 0000000..904af4a +--- /dev/null ++++ b/test/pacman/tests/fileconflict009.py +@@ -0,0 +1,20 @@ ++self.description = "dir->symlink change during package upgrade (directory conflict)" ++ ++lp1 = pmpkg("pkg1") ++lp1.files = ["dir/"] ++self.addpkg2db("local", lp1) ++ ++lp2 = pmpkg("pkg2") ++lp2.files = ["dir/"] ++self.addpkg2db("local", lp2) ++ ++p = pmpkg("pkg1", "1.0-2") ++p.files = ["dir -> /usr/dir"] ++self.addpkg2db("sync", p) ++ ++self.args = "-S pkg1" ++ ++self.addrule("PACMAN_RETCODE=1") ++self.addrule("PKG_VERSION=pkg1|1.0-1") ++self.addrule("PKG_VERSION=pkg2|1.0-1") ++self.addrule("DIR_EXIST=dir/") +diff --git a/test/pacman/tests/fileconflict010.py b/test/pacman/tests/fileconflict010.py +new file mode 100644 +index 0000000..0a3ce83 +--- /dev/null ++++ b/test/pacman/tests/fileconflict010.py +@@ -0,0 +1,20 @@ ++self.description = "dir->file change during package upgrade (directory conflict)" ++ ++lp1 = pmpkg("pkg1") ++lp1.files = ["dir/"] ++self.addpkg2db("local", lp1) ++ ++lp2 = pmpkg("pkg2") ++lp2.files = ["dir/"] ++self.addpkg2db("local", lp2) ++ ++p = pmpkg("pkg1", "1.0-2") ++p.files = ["dir"] ++self.addpkg2db("sync", p) ++ ++self.args = "-S pkg1" ++ ++self.addrule("PACMAN_RETCODE=1") ++self.addrule("PKG_VERSION=pkg1|1.0-1") ++self.addrule("PKG_VERSION=pkg2|1.0-1") ++self.addrule("DIR_EXIST=dir/") +-- +1.7.11.1 + diff --git a/libre/pacman/0002-Check-empty-subdirectory-ownership.patch b/libre/pacman/0002-Check-empty-subdirectory-ownership.patch new file mode 100644 index 000000000..6cf496d16 --- /dev/null +++ b/libre/pacman/0002-Check-empty-subdirectory-ownership.patch @@ -0,0 +1,61 @@ +From 44e9fdd0e848382337edb97d41e7317638a67bac Mon Sep 17 00:00:00 2001 +From: Allan McRae <allan@archlinux.org> +Date: Sun, 8 Jul 2012 23:58:37 +1000 +Subject: [PATCH 2/4] Check empty subdirectory ownership + +When checking if a package owns a directory, it is important to check +not only that all the files in the directory are part of the package, +but also if the directory is part of a package. This catches empty +subdirectories during conflict checking for directory to file/symlink +replacements. + +Signed-off-by: Allan McRae <allan@archlinux.org> +Signed-off-by: Dan McGee <dan@archlinux.org> +--- + lib/libalpm/conflict.c | 5 +++++ + test/pacman/tests/fileconflict012.py | 17 +++++++++++++++++ + 2 files changed, 22 insertions(+) + create mode 100644 test/pacman/tests/fileconflict012.py + +diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c +index efa1a87..d6e5d8c 100644 +--- a/lib/libalpm/conflict.c ++++ b/lib/libalpm/conflict.c +@@ -339,6 +339,11 @@ static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath, + struct dirent *ent = NULL; + const char *root = handle->root; + ++ /* check directory is actually in package - used for subdirectory checks */ ++ if(!_alpm_filelist_contains(alpm_pkg_get_files(pkg), dirpath)) { ++ return 0; ++ } ++ + /* TODO: this is an overly strict check but currently pacman will not + * overwrite a directory with a file (case 10/11 in add.c). Adjusting that + * is not simple as even if the directory is being unowned by a conflicting +diff --git a/test/pacman/tests/fileconflict012.py b/test/pacman/tests/fileconflict012.py +new file mode 100644 +index 0000000..421b739 +--- /dev/null ++++ b/test/pacman/tests/fileconflict012.py +@@ -0,0 +1,17 @@ ++self.description = "dir->file change during package upgrade (filesystem file conflict)" ++ ++lp1 = pmpkg("pkg1") ++lp1.files = ["dir/"] ++self.addpkg2db("local", lp1) ++ ++self.filesystem = ["dir/file"] ++ ++p = pmpkg("pkg1", "1.0-2") ++p.files = ["dir"] ++self.addpkg2db("sync", p) ++ ++self.args = "-S pkg1" ++ ++self.addrule("PACMAN_RETCODE=1") ++self.addrule("PKG_VERSION=pkg1|1.0-1") ++self.addrule("DIR_EXIST=dir/") +-- +1.7.11.1 + diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD index d8d3a6d26..4f05be586 100644 --- a/libre/pacman/PKGBUILD +++ b/libre/pacman/PKGBUILD @@ -4,38 +4,42 @@ # Maintainer: Dave Reisner <dave@archlinux.org> pkgname=pacman -pkgver=4.0.2 -pkgrel=1 +pkgver=4.0.3 +pkgrel=3 pkgdesc="A library-based package manager with dependency support" arch=('i686' 'x86_64' 'mips64el') url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base') depends=('bash' 'glibc>=2.15' 'libarchive>=3.0.2' 'curl>=7.19.4' - 'gpgme' 'pacman-mirrorlist') + 'gpgme' 'pacman-mirrorlist' 'archlinux-keyring' 'parabola-keyring') makedepends=('asciidoc') optdepends=('fakeroot: for makepkg usage as normal user') backup=(etc/pacman.conf etc/makepkg.conf) install=pacman.install options=(!libtool) source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig} + 0001-Add-conflict-for-replacing-owned-empty-directory.patch + 0002-Check-empty-subdirectory-ownership.patch pacman.conf pacman.conf.x86_64 pacman.conf.mips64el makepkg.conf) -md5sums=('289ba4a19a16393096e065cec1cb9b0a' - '575140dce3ea597d91b6d081aa3f6a00' - '858d1ffb284afc6b15f72578ba3cac50' - '7dade0c0a4d597c480d779afa4f5097c' - 'd4ca1a1d8e6708c0302a225628a489eb' +md5sums=('387965c7125e60e5f0b9ff3b427fe0f9' + '1a70392526c8768470da678b31905a6e' + '1a9b79788640907a2b34e8671cacc94a' + 'a9ddd43891bed364e1e97d27b2887bf1' + '080d9f76f56e135cc62205874636aa0f' + 'ce9943fc8086d491890565e91ea1a0d8' + 'eb8dba9bd0b315230fbf0e5dc0a7335b' 'debc512689a1aa8c124fe0ccf27f5758') -# keep an upgrade path for older installations -PKGEXT='.pkg.tar.gz' - build() { cd $srcdir/$pkgname-$pkgver + patch -p1 -i $srcdir/0001-Add-conflict-for-replacing-owned-empty-directory.patch + patch -p1 -i $srcdir/0002-Check-empty-subdirectory-ownership.patch + ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var --enable-doc make @@ -83,8 +87,10 @@ package() { -e "s|@CARCHFLAGS[@]|$myflags|g" # install completion files - mkdir -p $pkgdir/etc/bash_completion.d/ - install -m644 contrib/bash_completion $pkgdir/etc/bash_completion.d/pacman - mkdir -p $pkgdir/usr/share/zsh/site-functions/ - install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman + install -Dm644 contrib/bash_completion "$pkgdir/usr/share/bash-completion/completions/pacman" + for f in makepkg pacman-key; do + ln -s pacman "$pkgdir/usr/share/bash-completion/completions/$f" + done + + install -Dm644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman } diff --git a/libre/pacman/pacman.conf b/libre/pacman/pacman.conf index 92befa5fa..115217b59 100644 --- a/libre/pacman/pacman.conf +++ b/libre/pacman/pacman.conf @@ -36,18 +36,13 @@ Architecture = auto CheckSpace #VerbosePkgLists -# PGP signature checking -# NOTE: None of this will work without running `pacman-key --init` first. -# The compiled in default is equivalent to the following line. This requires -# you to locally sign and trust packager keys using `pacman-key` for them to be -# considered valid. +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly -# If you wish to check signatures but avoid local sign and trust issues, use -# the following line. This will treat any key imported into pacman's keyring as -# trusted. -#SigLevel = Optional TrustAll -# For now, off by default unless you read the above. -SigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. # # REPOSITORIES @@ -77,7 +72,7 @@ SigLevel = Never #Include = /etc/pacman.d/mirrorlist [libre] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[testing] @@ -85,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [core] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] @@ -97,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [community] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # Parabola also supports community projects and personal repositories, to find diff --git a/libre/pacman/pacman.conf.mips64el b/libre/pacman/pacman.conf.mips64el index a74f2d3da..f286c3290 100644 --- a/libre/pacman/pacman.conf.mips64el +++ b/libre/pacman/pacman.conf.mips64el @@ -16,9 +16,7 @@ #GPGDir = /etc/pacman.d/gnupg/ HoldPkg = pacman glibc # If upgrades are available for these packages they will be asked for first -# Don't list pacman here unless you want it broken when there is a -# libarchive or glibc update. -#SyncFirst = +SyncFirst = pacman #XferCommand = /usr/bin/curl -C - -f %u > %o #XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u #CleanMethod = KeepInstalled @@ -35,21 +33,16 @@ Architecture = mips64el #UseSyslog #UseDelta #TotalDownload -#CheckSpace +CheckSpace #VerbosePkgLists -# PGP signature checking -# NOTE: None of this will work without running `pacman-key --init` first. -# The compiled in default is equivalent to the following line. This requires -# you to locally sign and trust packager keys using `pacman-key` for them to be -# considered valid. +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly -# If you wish to check signatures but avoid local sign and trust issues, use -# the following line. This will treat any key imported into pacman's keyring as -# trusted. -#SigLevel = Optional TrustAll -# For now, off by default unless you read the above. -SigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. # # REPOSITORIES @@ -79,7 +72,7 @@ SigLevel = Never #Include = /etc/pacman.d/mirrorlist [libre] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[testing] @@ -87,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [core] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] @@ -99,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [community] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # Parabola also supports community projects and personal repositories, to find diff --git a/libre/pacman/pacman.conf.x86_64 b/libre/pacman/pacman.conf.x86_64 index 0eddc159c..4c67b089f 100644 --- a/libre/pacman/pacman.conf.x86_64 +++ b/libre/pacman/pacman.conf.x86_64 @@ -36,18 +36,13 @@ Architecture = auto CheckSpace #VerbosePkgLists -# PGP signature checking -# NOTE: None of this will work without running `pacman-key --init` first. -# The compiled in default is equivalent to the following line. This requires -# you to locally sign and trust packager keys using `pacman-key` for them to be -# considered valid. +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly -# If you wish to check signatures but avoid local sign and trust issues, use -# the following line. This will treat any key imported into pacman's keyring as -# trusted. -#SigLevel = Optional TrustAll -# For now, off by default unless you read the above. -SigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. # # REPOSITORIES @@ -77,7 +72,7 @@ SigLevel = Never #Include = /etc/pacman.d/mirrorlist [libre] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[testing] @@ -85,11 +80,11 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [core] -#SigLevel = PackageRequired +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] @@ -97,7 +92,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist [community] -#SigLevel = PackageOptional +SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist # If you want to run 32 bit applications on your x86_64 system, @@ -108,7 +103,7 @@ Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist #[multilib] -#SigLevel = PackageOptional +#SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist # Parabola also supports community projects and personal repositories, to find diff --git a/libre/pacman/pacman.install b/libre/pacman/pacman.install index 4369edab1..5dc55c0c2 100644 --- a/libre/pacman/pacman.install +++ b/libre/pacman/pacman.install @@ -9,7 +9,9 @@ post_upgrade() { if [ "$(vercmp $2 3.5.0)" -lt 0 ]; then _warnupgrade fi - _check_pubring + if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ] || [ "$(vercmp $2 4.0.3-2)" -lt 0 ]; then + _check_pubring + fi } post_install() { @@ -17,9 +19,10 @@ post_install() { } _check_pubring() { - if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ]; then - echo " >>> Run \`pacman-key --init\` to set up your pacman keyring." - fi + echo " >>> Run \`pacman-key --init; pacman-key --populate archlinux\`" + echo " >>> And \`pacman-key --populate parabola\`" + echo " >>> to import the data required by pacman for package verification." + echo " >>> See: https://www.archlinux.org/news/having-pacman-verify-packages" } _warnupgrade() { diff --git a/libre/pacman/rePKGBUILD b/libre/pacman/rePKGBUILD new file mode 100644 index 000000000..810eff5b9 --- /dev/null +++ b/libre/pacman/rePKGBUILD @@ -0,0 +1,37 @@ +# Maintainer: Nicolas Reynolds <fauno@kiwwwi.com.ar> +source PKGBUILD +unset build package md5sums source check +_repo=core +source=(PKGBUILD + ftp://ftp.archlinux.org/${_repo}/os/${CARCH}/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT + # files for pkg modifications + pacman.conf + pacman.conf.x86_64 + ) +options=(!strip) + +build() { + cd "${srcdir}/" + rm -vf .{INSTALL,PKGINFO} ${srcdir}/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT + # put actions for package modifications below this line + +} + +package() { + cp -a ${srcdir}/* ${pkgdir} + + rm ${pkgdir}/{PKGBUILD,pacman.conf{,.x86_64}} + +# No need to repackage for mips64el + case "$CARCH" in + i686) + install -m644 $srcdir/pacman.conf $pkgdir/etc/pacman.conf + ;; + x86_64) + install -m644 $srcdir/pacman.conf.x86_64 $pkgdir/etc/pacman.conf + ;; + esac +} + + +# vim:set ts=2 sw=2 et: diff --git a/libre/parabola-keyring/PKGBUILD b/libre/parabola-keyring/PKGBUILD new file mode 100644 index 000000000..385790ccd --- /dev/null +++ b/libre/parabola-keyring/PKGBUILD @@ -0,0 +1,20 @@ +# $Id$ +# Maintainer: André Silva <emulatorman@lavabit.com> + +pkgname=parabola-keyring +pkgver=20120723 +pkgrel=1 +pkgdesc='Parabola GNU/Linux-libre PGP keyring' +arch=('any') +url='https://projects.parabolagnulinux.org/hackers.git/' +license=('GPL') +install="${pkgname}.install" +source=("http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz" + "http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.gz.sig") + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make PREFIX=/usr DESTDIR=${pkgdir} install +} +md5sums=('f9ab13c8c969c3bf136e302a666e32d9' + '5c27394f0575ab9fb27bf3ab9cb212e3') diff --git a/libre/parabola-keyring/parabola-keyring.install b/libre/parabola-keyring/parabola-keyring.install new file mode 100644 index 000000000..1c70f1a8d --- /dev/null +++ b/libre/parabola-keyring/parabola-keyring.install @@ -0,0 +1,11 @@ +post_upgrade() { + if usr/bin/pacman-key -l >/dev/null 2>&1; then + usr/bin/pacman-key --populate parabola + fi +} + +post_install() { + if [ -x usr/bin/pacman-key ]; then + post_upgrade + fi +} diff --git a/libre/psutils-libre/.directory b/libre/psutils-libre/.directory deleted file mode 100644 index 60ed4bded..000000000 --- a/libre/psutils-libre/.directory +++ /dev/null @@ -1,2 +0,0 @@ -[Dolphin] -Timestamp=2012,4,11,16,24,1 diff --git a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch b/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch deleted file mode 100644 index ed8154df5..000000000 --- a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch +++ /dev/null @@ -1,61 +0,0 @@ - -# HG changeset patch -# User Charles-François Natali <neologix@free.fr> -# Date 1318446474 -7200 -# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304 -# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f -Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native -TLS implementations, and fails with the ad-hoc TLS implementation when a thread -doesn't have an auto thread state (e.g. a thread created outside of Python -calling into a subinterpreter). - -diff --git a/Include/pystate.h b/Include/pystate.h ---- a/Include/pystate.h -+++ b/Include/pystate.h -@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT - PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); - #ifdef WITH_THREAD - PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); --PyAPI_FUNC(void) _PyGILState_Reinit(void); - #endif - - PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); -diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c ---- a/Modules/signalmodule.c -+++ b/Modules/signalmodule.c -@@ -976,7 +976,6 @@ void - PyOS_AfterFork(void) - { - #ifdef WITH_THREAD -- _PyGILState_Reinit(); - PyEval_ReInitThreads(); - main_thread = PyThread_get_thread_ident(); - main_pid = getpid(); -diff --git a/Python/pystate.c b/Python/pystate.c ---- a/Python/pystate.c -+++ b/Python/pystate.c -@@ -537,23 +537,6 @@ void - autoInterpreterState = NULL; - } - --/* Reset the TLS key - called by PyOS_AfterFork. -- * This should not be necessary, but some - buggy - pthread implementations -- * don't flush TLS on fork, see issue #10517. -- */ --void --_PyGILState_Reinit(void) --{ -- PyThreadState *tstate = PyGILState_GetThisThreadState(); -- PyThread_delete_key(autoTLSkey); -- if ((autoTLSkey = PyThread_create_key()) == -1) -- Py_FatalError("Could not allocate TLS entry"); -- -- /* re-associate the current thread state with the new key */ -- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0) -- Py_FatalError("Couldn't create autoTLSkey mapping"); --} -- - /* When a thread state is created for a thread by some mechanism other than - PyGILState_Ensure, it's important that the GILState machinery knows about - it so it doesn't try to create another thread state for the thread (this is - diff --git a/libre/python2-libre/PKGBUILD b/libre/python2-libre/PKGBUILD deleted file mode 100644 index e743151b0..000000000 --- a/libre/python2-libre/PKGBUILD +++ /dev/null @@ -1,109 +0,0 @@ -# $Id: PKGBUILD 129895 2011-06-29 15:22:59Z stephane $ -# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> -# Contributer: Allan McRae <allan@archlinux.org> -# Contributer: Jason Chu <jason@archlinux.org> - -_pkgname=python2 -pkgname=python2-libre -pkgver=2.7.2 -pkgrel=6 -_pybasever=2.7 -pkgdesc="A high-level scripting language" -arch=('i686' 'x86_64') -license=('PSF') -url="http://www.python.org/" -depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi') -makedepends=('tk') -optdepends=('tk: for IDLE') -conflicts=('python<3') -options=('!makeflags') -source=(http://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}-4-any.src.tar.xz - doc_license_change.patch - WDAS.patch - linux2.patch - gdbm-magic-values.patch - 13156-revert-tls-changeset-subinterpreter.patch) -provides=("$_pkgname=$pkgver") -conflicts=("$_pkgname") -replaces=("$_pkgname") - -build() { - cd "${srcdir}/Python-${pkgver}" - - # Temporary workaround for FS#22322 - # See http://bugs.python.org/issue10835 for upstream report - sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c - - # Enable built-in SQLite module to load extensions (fix FS#22122) - sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py - - # FS#23997 - sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py - - # Make sure sys.platform is set to linux2, even on kernel 3.X - # cf http://bugs.python.org/issue12326 - patch -Np1 -i ../linux2.patch - - # gdbm has new magic that whichdb does not recognize - # http://bugs.python.org/issue13007 - patch -Np1 -i ../gdbm-magic-values.patch - - # http://bugs.python.org/issue13156 - patch -Np1 -i ../13156-revert-tls-changeset-subinterpreter.patch - - # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), - # rather than copies shipped in the tarball - rm -r Modules/expat - rm -r Modules/zlib - rm -r Modules/_ctypes/{darwin,libffi}* - - export OPT="${CFLAGS}" - ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \ - --enable-unicode=ucs4 --with-system-expat --with-system-ffi \ - --with-dbmliborder=gdbm:ndbm - - make MACHDEP=linux2 -} - -package() { - cd "${srcdir}/Python-${pkgver}" - make DESTDIR="${pkgdir}" altinstall maninstall - - ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2" - ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config" - ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1" - - ln -sf ../../libpython${_pybasever}.so \ - "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so" - - mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/" - - # some useful "stuff" - install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts} - install -m755 Tools/i18n/{msgfmt,pygettext}.py \ - "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/" - install -m755 Tools/scripts/{README,*py} \ - "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/" - - # fix conflicts with python - mv "${pkgdir}"/usr/bin/idle{,2} - mv "${pkgdir}"/usr/bin/pydoc{,2} - mv "${pkgdir}"/usr/bin/2to3{,-2.7} - - # clean up #!s - find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \ - xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" - - # clean-up reference to build directory - sed -i "s#${srcdir}/Python-${pkgver}:##" \ - "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile" - - # license - install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" -} -md5sums=('456d053a5d418adc913a4971e95fe918' - '1e6595f85a1da7f42b69456119924d50' - '3f8c0e310a0be0bd8b319d6c46bbd427' - '6099a7c1aed80cf04943ee4affa84b5c' - '6de394351179c2ada82e95458ceb13e5' - 'daa5110f092f1406c17de23171529e62') diff --git a/libre/python2-libre/SRCBUILD b/libre/python2-libre/SRCBUILD deleted file mode 100644 index f021d6624..000000000 --- a/libre/python2-libre/SRCBUILD +++ /dev/null @@ -1,36 +0,0 @@ -# $Id: PKGBUILD 123066 2011-05-07 23:01:49Z stephane $ -# Maintainer: AndyRTR <andyrtr@archlinux.org> -# Maintainer (Parabola): xihh - -pkgname=python2-libre -pkgver=2.7.2 -pkgrel=4 -pkgdesc="A high-level scripting language" -arch=('any') -license=('PSF') -url="http://www.python.org/" -source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz - doc_license_change.patch - WDAS.patch) -md5sums=('75c87a80c6ddb0b785a57ea3583e04fa' - '1e6595f85a1da7f42b69456119924d50' - '3f8c0e310a0be0bd8b319d6c46bbd427') -options=(!strip docs libtool emptydirs !zipman !purge) - -build() { - cd "${srcdir}/Python-${pkgver}" - - export PKGEXT=.src.tar.xz - - patch -Np1 -i ../WDAS.patch - patch -Np0 -i ../doc_license_change.patch - -} - -package() { - export PKGEXT=.src.tar.xz - export PKGDEST=${startdir} - - mv "${srcdir}/Python-${pkgver}" ${pkgdir} - -} diff --git a/libre/python2-libre/WDAS.patch b/libre/python2-libre/WDAS.patch deleted file mode 100644 index 86bc75e8c..000000000 --- a/libre/python2-libre/WDAS.patch +++ /dev/null @@ -1,109 +0,0 @@ -diff -r ac562d86ab71 Lib/profile.py ---- a/Lib/profile.py Fri Jun 03 17:50:59 2011 -0500 -+++ b/Lib/profile.py Mon Jun 27 00:02:20 2011 -0700 -@@ -2,35 +2,26 @@ - # - # Class for profiling python code. rev 1.0 6/2/94 - # -+# Written by James Roskind - # Based on prior profile module by Sjoerd Mullender... - # which was hacked somewhat by: Guido van Rossum - - """Class for profiling Python code.""" - --# Copyright 1994, by InfoSeek Corporation, all rights reserved. --# Written by James Roskind --# --# Permission to use, copy, modify, and distribute this Python software --# and its associated documentation for any purpose (subject to the --# restriction in the following sentence) without fee is hereby granted, --# provided that the above copyright notice appears in all copies, and --# that both that copyright notice and this permission notice appear in --# supporting documentation, and that the name of InfoSeek not be used in --# advertising or publicity pertaining to distribution of the software --# without specific, written prior permission. This permission is --# explicitly restricted to the copying and modification of the software --# to remain in Python, compiled Python, or other languages (such as C) --# wherein the modified or derived code is exclusively imported into a --# Python module. --# --# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND --# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY --# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER --# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF --# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN --# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -- -+# Copyright Disney Enterprises, Inc. All Rights Reserved. -+# Licensed to PSF under a Contributor Agreement -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -+# either express or implied. See the License for the specific language -+# governing permissions and limitations under the License. - - - import sys -diff -r ac562d86ab71 Lib/pstats.py ---- a/Lib/pstats.py Fri Jun 03 17:50:59 2011 -0500 -+++ b/Lib/pstats.py Mon Jun 27 00:02:20 2011 -0700 -@@ -2,34 +2,26 @@ - - # Class for printing reports on profiled python code. rev 1.0 4/1/94 - # -+# Written by James Roskind - # Based on prior profile module by Sjoerd Mullender... - # which was hacked somewhat by: Guido van Rossum --# --# see profile.py for more info. - --# Copyright 1994, by InfoSeek Corporation, all rights reserved. --# Written by James Roskind --# --# Permission to use, copy, modify, and distribute this Python software --# and its associated documentation for any purpose (subject to the --# restriction in the following sentence) without fee is hereby granted, --# provided that the above copyright notice appears in all copies, and --# that both that copyright notice and this permission notice appear in --# supporting documentation, and that the name of InfoSeek not be used in --# advertising or publicity pertaining to distribution of the software --# without specific, written prior permission. This permission is --# explicitly restricted to the copying and modification of the software --# to remain in Python, compiled Python, or other languages (such as C) --# wherein the modified or derived code is exclusively imported into a --# Python module. --# --# INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS --# SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND --# FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY --# SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER --# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF --# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN --# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+"""Class for profiling Python code.""" -+ -+# Copyright Disney Enterprises, Inc. All Rights Reserved. -+# Licensed to PSF under a Contributor Agreement -+# -+# Licensed under the Apache License, Version 2.0 (the "License"); -+# you may not use this file except in compliance with the License. -+# You may obtain a copy of the License at -+# -+# http://www.apache.org/licenses/LICENSE-2.0 -+# -+# Unless required by applicable law or agreed to in writing, software -+# distributed under the License is distributed on an "AS IS" BASIS, -+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -+# either express or implied. See the License for the specific language -+# governing permissions and limitations under the License. - - - import sys diff --git a/libre/python2-libre/doc_license_change.patch b/libre/python2-libre/doc_license_change.patch deleted file mode 100644 index 18f9447d7..000000000 --- a/libre/python2-libre/doc_license_change.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- Doc/library/profile.rst 2011-06-11 12:46:23.000000000 -0300 -+++ Doc/library/profile.rst.orig 2011-08-12 11:35:25.000000000 -0300 -@@ -12,27 +12,23 @@ - - .. index:: single: InfoSeek Corporation - --Copyright © 1994, by InfoSeek Corporation, all rights reserved. -+Copyright Disney Enterprises, Inc. All Rights Reserved. - - Written by James Roskind. [#]_ - --Permission to use, copy, modify, and distribute this Python software and its --associated documentation for any purpose (subject to the restriction in the --following sentence) without fee is hereby granted, provided that the above --copyright notice appears in all copies, and that both that copyright notice and --this permission notice appear in supporting documentation, and that the name of --InfoSeek not be used in advertising or publicity pertaining to distribution of --the software without specific, written prior permission. This permission is --explicitly restricted to the copying and modification of the software to remain --in Python, compiled Python, or other languages (such as C) wherein the modified --or derived code is exclusively imported into a Python module. -- --INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, --INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT --SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL --DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, --WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING --OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+Licensed to PSF under a Contributor Agreement -+ -+Licensed under the Apache License, Version 2.0 (the "License"); -+you may not use this file except in compliance with the License. -+You may obtain a copy of the License at -+ -+http://www.apache.org/licenses/LICENSE-2.0 -+ -+Unless required by applicable law or agreed to in writing, software -+distributed under the License is distributed on an "AS IS" BASIS, -+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -+either express or implied. See the License for the specific language -+governing permissions and limitations under the License. - - .. _profiler-introduction: - diff --git a/libre/python2-libre/gdbm-magic-values.patch b/libre/python2-libre/gdbm-magic-values.patch deleted file mode 100644 index 471faf2c7..000000000 --- a/libre/python2-libre/gdbm-magic-values.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic Python-2.7.2/Lib/whichdb.py ---- Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic 2011-06-11 11:46:26.000000000 -0400 -+++ Python-2.7.2/Lib/whichdb.py 2011-09-30 15:45:21.778872290 -0400 -@@ -91,7 +91,7 @@ def whichdb(filename): - return "" - - # Check for GNU dbm -- if magic == 0x13579ace: -+ if magic in (0x13579ace, 0x13579acd, 0x13579acf): - return "gdbm" - - # Check for old Berkeley db hash file format v2 diff --git a/libre/python2-libre/linux2.patch b/libre/python2-libre/linux2.patch deleted file mode 100644 index 670510fde..000000000 --- a/libre/python2-libre/linux2.patch +++ /dev/null @@ -1,23 +0,0 @@ -http://hg.python.org/cpython/rev/c816479f6aaf/ -diff --git a/configure b/configure ---- a/configure -+++ b/configure -@@ -2995,6 +2995,7 @@ then - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in -+ linux*) MACHDEP="linux2";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - atheos*) MACHDEP="atheos";; -diff --git a/configure.in b/configure.in ---- a/configure.in -+++ b/configure.in -@@ -293,6 +293,7 @@ then - MACHDEP="$ac_md_system$ac_md_release" - - case $MACHDEP in -+ linux*) MACHDEP="linux2";; - cygwin*) MACHDEP="cygwin";; - darwin*) MACHDEP="darwin";; - atheos*) MACHDEP="atheos";; diff --git a/libre/sdl-libre/PKGBUILD b/libre/sdl-libre/PKGBUILD index 3024bd9bf..662bcba99 100644 --- a/libre/sdl-libre/PKGBUILD +++ b/libre/sdl-libre/PKGBUILD @@ -2,12 +2,12 @@ #mips64el Maintainer: Allan McRae <allan@archlinux.org> # Contributor: dorphell <dorphell@archlinux.org> # Maintainer (Connochaetos): Henry Jensen <hjensen@connochaetos.org> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> -# Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> pkgname=sdl-libre pkgver=1.2.15 -pkgrel=1.1 +pkgrel=1.2 pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard" arch=('i686' 'x86_64') url="http://www.libsdl.org" diff --git a/libre/texlive-bin-libre/PKGBUILD b/libre/texlive-bin-libre/PKGBUILD index 68c71284c..3dd2a8620 100644 --- a/libre/texlive-bin-libre/PKGBUILD +++ b/libre/texlive-bin-libre/PKGBUILD @@ -6,7 +6,7 @@ pkgname=texlive-bin-libre pkgver=2012.0 -pkgrel=1 +pkgrel=2 pkgdesc="TeX Live binaries" license=('GPL') arch=('i686' 'x86_64' 'mips64el') @@ -25,19 +25,19 @@ source=('texmf.cnf' 'poppler-0.20.patch' 'http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-source-20120623.tar.xz' 'http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-texmf-20120623.tar.xz' + 'luatex-r4449-radical-rule-thickness.patch' ) backup=(etc/texmf/web2c/texmf.cnf \ - etc/texmf/chktex/chktexrc \ - etc/texmf/web2c/mktex.cnf \ - etc/texmf/web2c/updmap.cfg \ - etc/texmf/web2c/fmtutil.cnf \ + etc/texmf/chktex/chktexrc \ + etc/texmf/dvipdfm/config/config \ + etc/texmf/dvipdfmx/dvipdfmx.cfg \ + etc/texmf/dvips/config/config.ps \ etc/texmf/tex/generic/config/language.dat \ etc/texmf/tex/generic/config/language.def \ etc/texmf/tex/generic/config/pdftexconfig.tex \ etc/texmf/ttf2pk/ttf2pk.cfg \ - etc/texmf/dvips/config/config.ps \ - etc/texmf/dvipdfmx/dvipdfmx.cfg \ - etc/texmf/dvipdfm/config/config \ + etc/texmf/web2c/fmtutil.cnf \ + etc/texmf/web2c/mktex.cnf \ etc/texmf/xdvi/XDvi) md5sums=('220a4f4cc0d915bf8fcbcb553dcee1ae' @@ -45,7 +45,8 @@ md5sums=('220a4f4cc0d915bf8fcbcb553dcee1ae' '393a4bf67adc7ca5df2b386759d1a637' 'e3a664d5a7f0923f35060fe9d25d2573' 'ac2c3c3aa765581f8504e21a5edbfb9f' - 'f315a860158cfc952c82a6d759961024') + 'f315a860158cfc952c82a6d759961024' + '5190f3295eb9a604c5f17f5bd607299b') build() { if [ "${CARCH}" != "i686" ]; then @@ -58,6 +59,9 @@ build() { patch -Np0 -i fix-fontforge-encoding.patch # fix build with poppler >= 0.20 patch -Np0 -i poppler-0.20.patch + # fix radical rule thickness regression in Luatex + # http://tex.stackexchange.com/q/61952/729 + patch -Np0 -i luatex-r4449-radical-rule-thickness.patch # t4ht expects to be un /usr/share/texmf/bin/t4ht (FS#27251) sed -i s/SELFAUTOPARENT/TEXMFROOT/ source/texk/tex4htk/t4ht.c ############################################################# diff --git a/libre/texlive-bin-libre/luatex-r4449-radical-rule-thickness.patch b/libre/texlive-bin-libre/luatex-r4449-radical-rule-thickness.patch new file mode 100644 index 000000000..f925a1a93 --- /dev/null +++ b/libre/texlive-bin-libre/luatex-r4449-radical-rule-thickness.patch @@ -0,0 +1,23 @@ +Index: source/texk/web2c/luatexdir/tex/mlist.w +=================================================================== +--- source/texk/web2c/luatexdir/tex/mlist.w (revision 4448) ++++ source/texk/web2c/luatexdir/tex/mlist.w (revision 4449) +@@ -1798,7 +1798,17 @@ + theta = fraction_rule(cur_style); + y = var_delimiter(left_delimiter(q), cur_size, + height(x) + depth(x) + clr + theta, NULL, cur_style); +- theta = height(y); ++ /* If |y| is a composite then set |theta| to the height of its top ++ character, else set it to the height of |y|. */ ++ if (list_ptr(y) != null ++ && type(list_ptr(y)) == hlist_node ++ && list_ptr(list_ptr(y)) != null ++ && type(list_ptr(list_ptr(y))) == glyph_node) { /* and it should be */ ++ theta = char_height(font(list_ptr(list_ptr(y))), ++ character(list_ptr(list_ptr(y)))); ++ } else { ++ theta = height(y); ++ } + } else { + y = var_delimiter(left_delimiter(q), cur_size, + height(x) + depth(x) + clr + theta, NULL, cur_style); diff --git a/libre/texlive-core-libre/.directory b/libre/texlive-core-libre/.directory deleted file mode 100644 index 9d572f361..000000000 --- a/libre/texlive-core-libre/.directory +++ /dev/null @@ -1,5 +0,0 @@ -[Dolphin] -Timestamp=2012,6,26,20,37,17 - -[Settings] -HiddenFilesShown=true diff --git a/libre/virtualbox-modules-lts/60-vboxguest.rules b/libre/virtualbox-libre-modules-lts/60-vboxguest.rules index 6285f7249..6285f7249 100644 --- a/libre/virtualbox-modules-lts/60-vboxguest.rules +++ b/libre/virtualbox-libre-modules-lts/60-vboxguest.rules diff --git a/libre/virtualbox-modules-lts/LocalConfig.kmk b/libre/virtualbox-libre-modules-lts/LocalConfig.kmk index af79f90cd..af79f90cd 100644 --- a/libre/virtualbox-modules-lts/LocalConfig.kmk +++ b/libre/virtualbox-libre-modules-lts/LocalConfig.kmk diff --git a/libre/virtualbox-libre-modules-lts/PKGBUILD b/libre/virtualbox-libre-modules-lts/PKGBUILD new file mode 100644 index 000000000..b3cabb285 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/PKGBUILD @@ -0,0 +1,153 @@ +# $Id$ +# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Jorge López <jorginho@lavabit.com> + +pkgbase=virtualbox-libre-modules-lts +pkgname=('virtualbox-libre-modules-lts' 'virtualbox-libre-parabola-modules-lts') +pkgver=4.1.18 +pkgrel=3 +arch=('i686' 'x86_64') +url='http://virtualbox.org' +license=('GPL') +makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl' 'linux-libre-lts' 'linux-libre-lts-headers') +[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc') +source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2 + LocalConfig.kmk 60-vboxguest.rules os_blag_64.png os_blag.png + os_dragora_64.png os_dragora.png os_dynebolic.png os_gnewsense_64.png os_gnewsense.png + os_gnu_64.png os_gnuhurd.png os_gnulinux_64.png os_gnulinux.png os_gnu.png + os_musix_64.png os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png + os_trisquel.png os_ututo_64.png os_ututo.png os_venenux.png libre.patch + free-distros.patch) +md5sums=('38db0a87cba659b484af868b0c2bd3ac' + '4c88bd122677a35f68abd76eb01b378b' + 'ed1341881437455d9735875ddf455fbe' + '8538dba8686d7449cb481c9bae9d722a' + '545c925b46f2ac95e5f8ae407fad101a' + 'f6416f509c2e5460e4dc624e0a57f3c1' + 'bbfb59dd517c020a23701b480187a355' + 'efacfdb61918286ea9bc89866b8fd239' + '7c3eb09995e8bafeef414374e44ad4ce' + 'a49ed3ab6bd0fb084de0ab3dd97ae93e' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + 'a70022a468bd3e9daf01818d2d74ac3c' + '380eb2ab6cad3da198094585853c129c' + 'a60bb9a98abcc3c34156f9051d00df9a' + '3a908ef6952bcf987e63ef2fe4e98d24' + '02e87c39c353634cecacf98f1707fa15' + '0cf41a41e7a415d404d5584e047fd450' + '449cde3b58390284b59c5d663de3edc9' + 'c7951fe6888d939f3a7d0dafe477e82b' + '4da8eeb2ece7e475fc7a0d1003da26c6' + '5e4187af59726d71c5be48d0cd816c34' + 'a9e4724b56ddf99bb2e9a8fab8ad43ba' + 'f7d275fc52e5f3cfafd85646c2914063') + +_extramodules=extramodules-3.0-LIBRE-LTS +_kernver=3.0.38-1-LIBRE-LTS + +export KERN_DIR=/usr/lib/modules/${_kernver}/build/ +export KERN_INCL=/usr/src/linux-${_kernver}/include/ + +build() { + cd "$srcdir/VirtualBox-${pkgver}" + + patch -Np1 -i "$srcdir/libre.patch" + patch -Np1 -i "$srcdir/free-distros.patch" + + ## Removing Nonfree directories + rm -rv "./include/VBox/ExtPack" + rm -rv "./src/VBox/ExtPacks" + rm -rv "./src/VBox/Main/src-helper-apps" + + ## Removing Oracle VM VirtualBox Extension Pack icons + rm -v "./src/VBox/Resources/darwin/virtualbox-vbox-extpack.icns" + rm -v "./src/VBox/Resources/other/virtualbox-vbox-extpack-"{16px,20px,24px,32px,40px,48px,64px,72px,80px,96px,128px,256px,512px}.png + rm -v "./src/VBox/Resources/win/OSE/virtualbox-vbox-extpack.ico" + rm -v "./src/VBox/Frontends/VirtualBox/images/extension_pack_"{16px,32px,disabled{_16px,_32px},install{_16px,_32px},install_disabled{_16px,_32px},uninstall{_16px,_32px},uninstall_disabled{_16px,_32px}}.png + + ## Adding free distros icons + for i in {gnuhurd,dynebolic,venenux,{gnu{,linux},parabola,gnewsense,blag,dragora,ututo,musix,trisquel}{,_64}}; do + cp -v "$srcdir/os_${i}.png" "./src/VBox/Frontends/VirtualBox/images" + done + + ## Removing non-free OS icons + rm -v "./src/VBox/Frontends/VirtualBox/images/os_"{{{arch,turbo}linux,debian,fedora,gentoo,linux{24,26},macosx,mandriva,{free,net,open}bsd,redhat,solaris,opensuse,oracle{,solaris},ubuntu,win{2k{3,8},7,8,vista,xp},xandros}{,_64},dos,jrockitve,l4,linux{,22,_other},netware,qnx,os2{_other,ecs,warp{3,4,45}},win{2k,31,95,98,_other,me,nt4}}.png + + cp "$srcdir/LocalConfig.kmk" . + + ./configure \ + --with-linux=/usr/src/linux-${_kernver} \ + --disable-java \ + --disable-docs \ + --disable-xpcom \ + --disable-python \ + --disable-sdl-ttf \ + --disable-alsa \ + --disable-pulse \ + --disable-dbus \ + --disable-opengl \ + --build-headless \ + --nofatal + source ./env.sh + kmk all + + make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" + make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" +} + +package_virtualbox-libre-parabola-modules-lts(){ + pkgdesc="Additions only for Parabola guests (long-term supported kernel modules)" + license=('GPL') + install=virtualbox-libre-parabola-modules-lts.install + depends=('linux-libre-lts>=3.0' 'linux-libre-lts<3.1') + replaces=('virtualbox-archlinux-modules-lts') + conflicts=('virtualbox-archlinux-modules-lts') + provides=("virtualbox-archlinux-modules=$pkgver" "virtualbox-archlinux-modules-lts=$pkgver" "virtualbox-libre-parabola-modules=$pkgver" ) + + source "$srcdir/VirtualBox-${pkgver}/env.sh" + + cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" + + for module in vboxguest.ko vboxsf.ko vboxvideo.ko; do + install -D -m644 ${module} \ + "$pkgdir/usr/lib/modules/${_extramodules}/${module}" + done + + install -D -m 0644 "$srcdir/60-vboxguest.rules" \ + "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules" + + find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; +} + +package_virtualbox-libre-modules-lts(){ + pkgdesc="Long-term supported kernel modules for VirtualBox" + license=('GPL') + install=virtualbox-libre-modules-lts.install + depends=('linux-libre-lts>=3.0' 'linux-libre-lts<3.1') + replaces=('virtualbox-modules-lts') + conflicts=('virtualbox-modules-lts') + provides=("virtualbox-modules=$pkgver" "virtualbox-modules-lts=$pkgver") + + source "$srcdir/VirtualBox-${pkgver}/env.sh" + + cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" + + install -D -m644 vboxdrv.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxdrv.ko" + + install -D -m644 vboxnetadp.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetadp.ko" + + install -D -m644 vboxnetflt.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetflt.ko" + + install -D -m644 vboxpci.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxpci.ko" + + find "${pkgdir}" -name '*.ko' -exec gzip -9 {} + +} diff --git a/libre/virtualbox-libre-modules-lts/free-distros.patch b/libre/virtualbox-libre-modules-lts/free-distros.patch new file mode 100644 index 000000000..7920fb6ab --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/free-distros.patch @@ -0,0 +1,1383 @@ +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp 2012-07-25 14:51:03.569003667 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp 2012-07-25 14:51:03.652333615 -0300 +@@ -44,94 +44,38 @@ + * first matching string found, will be used. */ + static const osTypePattern gs_OSTypePattern[] = + { +- { QRegExp("DOS", Qt::CaseInsensitive), "DOS" }, + +- /* Windows */ +- { QRegExp("Wi.*98", Qt::CaseInsensitive), "Windows98" }, +- { QRegExp("Wi.*95", Qt::CaseInsensitive), "Windows95" }, +- { QRegExp("Wi.*Me", Qt::CaseInsensitive), "WindowsMe" }, +- { QRegExp("(Wi.*NT)|(NT4)", Qt::CaseInsensitive), "WindowsNT4" }, +- { QRegExp("((Wi.*XP)|(\\bXP\\b)).*64", Qt::CaseInsensitive), "WindowsXP_64" }, +- { QRegExp("(Wi.*XP)|(\\bXP\\b)", Qt::CaseInsensitive), "WindowsXP" }, +- { QRegExp("((Wi.*2003)|(W2K3)).*64", Qt::CaseInsensitive), "Windows2003_64" }, +- { QRegExp("(Wi.*2003)|(W2K3)", Qt::CaseInsensitive), "Windows2003" }, +- { QRegExp("((Wi.*V)|(Vista)).*64", Qt::CaseInsensitive), "WindowsVista_64" }, +- { QRegExp("(Wi.*V)|(Vista)", Qt::CaseInsensitive), "WindowsVista" }, +- { QRegExp("((Wi.*2008)|(W2K8)).*64", Qt::CaseInsensitive), "Windows2008_64" }, +- { QRegExp("(Wi.*2008)|(W2K8)", Qt::CaseInsensitive), "Windows2008" }, +- { QRegExp("(Wi.*2000)|(W2K)", Qt::CaseInsensitive), "Windows2000" }, +- { QRegExp("(Wi.*7.*64)|(W7.*64)", Qt::CaseInsensitive), "Windows7_64" }, +- { QRegExp("(Wi.*7)|(W7)", Qt::CaseInsensitive), "Windows7" }, +- { QRegExp("(Wi.*8.*64)|(W8.*64)", Qt::CaseInsensitive), "Windows8_64" }, +- { QRegExp("(Wi.*8)|(W8)", Qt::CaseInsensitive), "Windows8" }, +- { QRegExp("Wi.*3", Qt::CaseInsensitive), "Windows31" }, +- { QRegExp("Wi", Qt::CaseInsensitive), "WindowsXP" }, +- +- /* Solaris */ +- { QRegExp("((Op.*So)|(os20[01][0-9])|(So.*1[01])|(India)|(Neva)).*64", Qt::CaseInsensitive), "OpenSolaris_64" }, +- { QRegExp("(Op.*So)|(os20[01][0-9])|(So.*1[01])|(India)|(Neva)", Qt::CaseInsensitive), "OpenSolaris" }, +- { QRegExp("So.*64", Qt::CaseInsensitive), "Solaris_64" }, +- { QRegExp("So", Qt::CaseInsensitive), "Solaris" }, +- +- /* OS/2 */ +- { QRegExp("OS[/|!-]{,1}2.*W.*4.?5", Qt::CaseInsensitive), "OS2Warp45" }, +- { QRegExp("OS[/|!-]{,1}2.*W.*4", Qt::CaseInsensitive), "OS2Warp4" }, +- { QRegExp("OS[/|!-]{,1}2.*W", Qt::CaseInsensitive), "OS2Warp3" }, +- { QRegExp("(OS[/|!-]{,1}2.*e)|(eCS.*)", Qt::CaseInsensitive), "OS2eCS" }, +- { QRegExp("OS[/|!-]{,1}2", Qt::CaseInsensitive), "OS2" }, +- +- /* Code names for Linux distributions */ +- { QRegExp("((edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)).*64", Qt::CaseInsensitive), "Ubuntu_64" }, +- { QRegExp("(edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)", Qt::CaseInsensitive), "Ubuntu" }, +- { QRegExp("((sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)).*64", Qt::CaseInsensitive), "Debian_64" }, +- { QRegExp("(sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)", Qt::CaseInsensitive), "Debian" }, +- { QRegExp("((moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)).*64", Qt::CaseInsensitive), "Fedora_64" }, +- { QRegExp("(moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)", Qt::CaseInsensitive), "Fedora" }, +- +- /* Regular names of Linux distributions */ +- { QRegExp("Arc.*64", Qt::CaseInsensitive), "ArchLinux_64" }, +- { QRegExp("Arc", Qt::CaseInsensitive), "ArchLinux" }, +- { QRegExp("Deb.*64", Qt::CaseInsensitive), "Debian_64" }, +- { QRegExp("Deb", Qt::CaseInsensitive), "Debian" }, +- { QRegExp("((SU)|(Nov)|(SLE)).*64", Qt::CaseInsensitive), "OpenSUSE_64" }, +- { QRegExp("(SU)|(Nov)|(SLE)", Qt::CaseInsensitive), "OpenSUSE" }, +- { QRegExp("Fe.*64", Qt::CaseInsensitive), "Fedora_64" }, +- { QRegExp("Fe", Qt::CaseInsensitive), "Fedora" }, +- { QRegExp("((Gen)|(Sab)).*64", Qt::CaseInsensitive), "Gentoo_64" }, +- { QRegExp("(Gen)|(Sab)", Qt::CaseInsensitive), "Gentoo" }, +- { QRegExp("Man.*64", Qt::CaseInsensitive), "Mandriva_64" }, +- { QRegExp("Man", Qt::CaseInsensitive), "Mandriva" }, +- { QRegExp("((Red)|(rhel)|(cen)).*64", Qt::CaseInsensitive), "RedHat_64" }, +- { QRegExp("(Red)|(rhel)|(cen)", Qt::CaseInsensitive), "RedHat" }, +- { QRegExp("Tur.*64", Qt::CaseInsensitive), "Turbolinux_64" }, +- { QRegExp("Tur", Qt::CaseInsensitive), "Turbolinux" }, +- { QRegExp("Ub.*64", Qt::CaseInsensitive), "Ubuntu_64" }, +- { QRegExp("Ub", Qt::CaseInsensitive), "Ubuntu" }, +- { QRegExp("Xa.*64", Qt::CaseInsensitive), "Xandros_64" }, +- { QRegExp("Xa", Qt::CaseInsensitive), "Xandros" }, +- { QRegExp("((Or)|(oel)).*64", Qt::CaseInsensitive), "Oracle_64" }, +- { QRegExp("(Or)|(oel)", Qt::CaseInsensitive), "Oracle" }, +- { QRegExp("((Li)|(lnx)).*2.?2", Qt::CaseInsensitive), "Linux22" }, +- { QRegExp("((Li)|(lnx)).*2.?4.*64", Qt::CaseInsensitive), "Linux24_64" }, +- { QRegExp("((Li)|(lnx)).*2.?4", Qt::CaseInsensitive), "Linux24" }, +- { QRegExp("((((Li)|(lnx)).*2.?6)|(LFS)).*64", Qt::CaseInsensitive), "Linux26_64" }, +- { QRegExp("(((Li)|(lnx)).*2.?6)|(LFS)", Qt::CaseInsensitive), "Linux26" }, +- { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "Linux26_64" }, +- { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "Linux26" }, ++ /* Code names for GNU/Linux distributions */ ++ { QRegExp("((Taranis)|(Dagda)|(Brigantia)).*64", Qt::CaseInsensitive), "Trisquel_64" }, ++ { QRegExp("(Taranis)|(Dagda)|(Brigantia)", Qt::CaseInsensitive), "Trisquel" }, ++ { QRegExp("((metad)|(parkes)|(three)).*64", Qt::CaseInsensitive), "gNewSense_64" }, ++ { QRegExp("(deltah)|(metad)|(parkes)|(three)", Qt::CaseInsensitive), "gNewSense" }, ++ { QRegExp("((90k)|(119k)|(140k)|(160k)|(90000)|(119000)|(140000)|(160000)|(Spartakus)).*64", Qt::CaseInsensitive), "Blag_64" }, ++ { QRegExp("(90k)|(119k)|(140k)|(160k)|(90000)|(119000)|(140000)|(160000)|(Spartakus)", Qt::CaseInsensitive), "Blag" }, ++ ++ /* Regular names of GNU/Linux distributions and GNU-Hurd */ ++ { QRegExp("Pa.*64", Qt::CaseInsensitive), "Parabola_64" }, ++ { QRegExp("Pa", Qt::CaseInsensitive), "Parabola" }, ++ { QRegExp("((gNe)|(new)|(Sen)).*64", Qt::CaseInsensitive), "gNewSense_64" }, ++ { QRegExp("(gNe)|(new)|(Sen)", Qt::CaseInsensitive), "gNewSense" }, ++ { QRegExp("Bla.*64", Qt::CaseInsensitive), "Blag_64" }, ++ { QRegExp("Bla", Qt::CaseInsensitive), "Blag" }, ++ { QRegExp("Dra.*64", Qt::CaseInsensitive), "Dragora_64" }, ++ { QRegExp("Dra", Qt::CaseInsensitive), "Dragora" }, ++ { QRegExp("((Utu)|(XS)).*64", Qt::CaseInsensitive), "Ututo_64" }, ++ { QRegExp("(Utu)|(XS)", Qt::CaseInsensitive), "Ututo" }, ++ { QRegExp("Mus.*64", Qt::CaseInsensitive), "Musix_64" }, ++ { QRegExp("Mus", Qt::CaseInsensitive), "Musix" }, ++ { QRegExp("Tri.*64", Qt::CaseInsensitive), "Trisquel_64" }, ++ { QRegExp("Tri", Qt::CaseInsensitive), "Trisquel" }, ++ { QRegExp("Dyn", Qt::CaseInsensitive), "Dynebolic" }, ++ { QRegExp("Ven", Qt::CaseInsensitive), "Venenux" }, ++ { QRegExp("GNU", Qt::CaseInsensitive), "GNU" }, ++ { QRegExp("Hu", Qt::CaseInsensitive), "GNUHurd" }, ++ { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "GNULinux_64" }, ++ { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "GNULinux" }, + + /* Other */ +- { QRegExp("L4", Qt::CaseInsensitive), "L4" }, +- { QRegExp("((Fr.*B)|(fbsd)).*64", Qt::CaseInsensitive), "FreeBSD_64" }, +- { QRegExp("(Fr.*B)|(fbsd)", Qt::CaseInsensitive), "FreeBSD" }, +- { QRegExp("Op.*B.*64", Qt::CaseInsensitive), "OpenBSD_64" }, +- { QRegExp("Op.*B", Qt::CaseInsensitive), "OpenBSD" }, +- { QRegExp("Ne.*B.*64", Qt::CaseInsensitive), "NetBSD_64" }, +- { QRegExp("Ne.*B", Qt::CaseInsensitive), "NetBSD" }, +- { QRegExp("QN", Qt::CaseInsensitive), "QNX" }, +- { QRegExp("((Mac)|(Tig)|(Leop)|(osx)).*64", Qt::CaseInsensitive), "MacOS_64" }, +- { QRegExp("(Mac)|(Tig)|(Leop)|(osx)", Qt::CaseInsensitive), "MacOS" }, +- { QRegExp("Net", Qt::CaseInsensitive), "Netware" }, +- { QRegExp("Rocki", Qt::CaseInsensitive), "JRockitVE" }, + { QRegExp("Ot", Qt::CaseInsensitive), "Other" }, + }; + +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/Settings.cpp 2012-07-25 15:14:50.498764160 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/Settings.cpp 2012-07-25 15:14:50.548761649 -0300 +@@ -3227,40 +3227,18 @@ + } aConvertOSTypes[] = + { + { "unknown", "Other" }, +- { "dos", "DOS" }, +- { "win31", "Windows31" }, +- { "win95", "Windows95" }, +- { "win98", "Windows98" }, +- { "winme", "WindowsMe" }, +- { "winnt4", "WindowsNT4" }, +- { "win2k", "Windows2000" }, +- { "winxp", "WindowsXP" }, +- { "win2k3", "Windows2003" }, +- { "winvista", "WindowsVista" }, +- { "win2k8", "Windows2008" }, +- { "os2warp3", "OS2Warp3" }, +- { "os2warp4", "OS2Warp4" }, +- { "os2warp45", "OS2Warp45" }, +- { "ecs", "OS2eCS" }, +- { "linux22", "Linux22" }, +- { "linux24", "Linux24" }, +- { "linux26", "Linux26" }, +- { "archlinux", "ArchLinux" }, +- { "debian", "Debian" }, +- { "opensuse", "OpenSUSE" }, +- { "fedoracore", "Fedora" }, +- { "gentoo", "Gentoo" }, +- { "mandriva", "Mandriva" }, +- { "redhat", "RedHat" }, +- { "ubuntu", "Ubuntu" }, +- { "xandros", "Xandros" }, +- { "freebsd", "FreeBSD" }, +- { "openbsd", "OpenBSD" }, +- { "netbsd", "NetBSD" }, +- { "netware", "Netware" }, +- { "solaris", "Solaris" }, +- { "opensolaris", "OpenSolaris" }, +- { "l4", "L4" } ++ { "gnu", "GNU" }, ++ { "gnuhurd", "GNUHurd" }, ++ { "gnulinux", "GNULinux" }, ++ { "parabola", "Parabola" }, ++ { "gnewsense", "gNewSense" }, ++ { "blag", "Blag" }, ++ { "dragora", "Dragora" }, ++ { "ututo", "Ututo" }, ++ { "musix", "Musix" }, ++ { "trisquel", "Trisquel" }, ++ { "dynebolic", "Dynebolic" }, ++ { "venenux", "Venenux" }, + }; + + void MachineConfigFile::convertOldOSType_pre1_5(Utf8Str &str) +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/SettingsConverter.xsl 2012-07-25 15:21:04.553581275 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/SettingsConverter.xsl 2012-07-25 15:21:04.593579427 -0300 +@@ -729,40 +729,18 @@ + <xsl:attribute name="OSType"> + <xsl:choose> + <xsl:when test="@OSType='unknown'">Other</xsl:when> +- <xsl:when test="@OSType='dos'">DOS</xsl:when> +- <xsl:when test="@OSType='win31'">Windows31</xsl:when> +- <xsl:when test="@OSType='win95'">Windows95</xsl:when> +- <xsl:when test="@OSType='win98'">Windows98</xsl:when> +- <xsl:when test="@OSType='winme'">WindowsMe</xsl:when> +- <xsl:when test="@OSType='winnt4'">WindowsNT4</xsl:when> +- <xsl:when test="@OSType='win2k'">Windows2000</xsl:when> +- <xsl:when test="@OSType='winxp'">WindowsXP</xsl:when> +- <xsl:when test="@OSType='win2k3'">Windows2003</xsl:when> +- <xsl:when test="@OSType='winvista'">WindowsVista</xsl:when> +- <xsl:when test="@OSType='win2k8'">Windows2008</xsl:when> +- <xsl:when test="@OSType='os2warp3'">OS2Warp3</xsl:when> +- <xsl:when test="@OSType='os2warp4'">OS2Warp4</xsl:when> +- <xsl:when test="@OSType='os2warp45'">OS2Warp45</xsl:when> +- <xsl:when test="@OSType='ecs'">OS2eCS</xsl:when> +- <xsl:when test="@OSType='linux22'">Linux22</xsl:when> +- <xsl:when test="@OSType='linux24'">Linux24</xsl:when> +- <xsl:when test="@OSType='linux26'">Linux26</xsl:when> +- <xsl:when test="@OSType='archlinux'">ArchLinux</xsl:when> +- <xsl:when test="@OSType='debian'">Debian</xsl:when> +- <xsl:when test="@OSType='opensuse'">OpenSUSE</xsl:when> +- <xsl:when test="@OSType='fedoracore'">Fedora</xsl:when> +- <xsl:when test="@OSType='gentoo'">Gentoo</xsl:when> +- <xsl:when test="@OSType='mandriva'">Mandriva</xsl:when> +- <xsl:when test="@OSType='redhat'">RedHat</xsl:when> +- <xsl:when test="@OSType='ubuntu'">Ubuntu</xsl:when> +- <xsl:when test="@OSType='xandros'">Xandros</xsl:when> +- <xsl:when test="@OSType='freebsd'">FreeBSD</xsl:when> +- <xsl:when test="@OSType='openbsd'">OpenBSD</xsl:when> +- <xsl:when test="@OSType='netbsd'">NetBSD</xsl:when> +- <xsl:when test="@OSType='netware'">Netware</xsl:when> +- <xsl:when test="@OSType='solaris'">Solaris</xsl:when> +- <xsl:when test="@OSType='opensolaris'">OpenSolaris</xsl:when> +- <xsl:when test="@OSType='l4'">L4</xsl:when> ++ <xsl:when test="@OSType='gnu'">GNU</xsl:when> ++ <xsl:when test="@OSType='gnuhurd'">GNUHurd</xsl:when> ++ <xsl:when test="@OSType='gnulinux'">GNULinux</xsl:when> ++ <xsl:when test="@OSType='parabola'">Parabola</xsl:when> ++ <xsl:when test="@OSType='gnewsense'">gNewSense</xsl:when> ++ <xsl:when test="@OSType='blag'">Blag</xsl:when> ++ <xsl:when test="@OSType='dragora'">Dragora</xsl:when> ++ <xsl:when test="@OSType='ututo'">Ututo</xsl:when> ++ <xsl:when test="@OSType='musix'">Musix</xsl:when> ++ <xsl:when test="@OSType='trisquel'">Trisquel</xsl:when> ++ <xsl:when test="@OSType='dynebolic'">Dynebolic</xsl:when> ++ <xsl:when test="@OSType='venenux'">Venenux</xsl:when> + </xsl:choose> + </xsl:attribute> + <xsl:apply-templates select="@*[name()!='OSType']" mode="v1.5"/> +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/VirtualBox-settings-common.xsd 2012-07-25 15:04:37.856003691 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/VirtualBox-settings-common.xsd 2012-07-25 15:04:37.892668156 -0300 +@@ -137,75 +137,27 @@ + <xsd:simpleType name="TGuestOSType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Other"/> +- <xsd:enumeration value="DOS"/> +- <xsd:enumeration value="Netware"/> +- <xsd:enumeration value="L4"/> +- <xsd:enumeration value="Windows31"/> +- <xsd:enumeration value="Windows95"/> +- <xsd:enumeration value="Windows98"/> +- <xsd:enumeration value="WindowsMe"/> +- <xsd:enumeration value="WindowsNT4"/> +- <xsd:enumeration value="Windows2000"/> +- <xsd:enumeration value="WindowsXP"/> +- <xsd:enumeration value="WindowsXP_64"/> +- <xsd:enumeration value="Windows2003"/> +- <xsd:enumeration value="Windows2003_64"/> +- <xsd:enumeration value="WindowsVista"/> +- <xsd:enumeration value="WindowsVista_64"/> +- <xsd:enumeration value="Windows2008"/> +- <xsd:enumeration value="Windows2008_64"/> +- <xsd:enumeration value="Windows7"/> +- <xsd:enumeration value="Windows7_64"/> +- <xsd:enumeration value="Windows8"/> +- <xsd:enumeration value="Windows8_64"/> +- <xsd:enumeration value="WindowsNT"/> +- <xsd:enumeration value="OS2Warp3"/> +- <xsd:enumeration value="OS2Warp4"/> +- <xsd:enumeration value="OS2Warp45"/> +- <xsd:enumeration value="OS2eCS"/> +- <xsd:enumeration value="OS2"/> +- <xsd:enumeration value="Linux22"/> +- <xsd:enumeration value="Linux24"/> +- <xsd:enumeration value="Linux24_64"/> +- <xsd:enumeration value="Linux26"/> +- <xsd:enumeration value="Linux26_64"/> +- <xsd:enumeration value="ArchLinux"/> +- <xsd:enumeration value="ArchLinux_64"/> +- <xsd:enumeration value="Debian"/> +- <xsd:enumeration value="Debian_64"/> +- <xsd:enumeration value="OpenSUSE"/> +- <xsd:enumeration value="OpenSUSE_64"/> +- <xsd:enumeration value="Fedora"/> +- <xsd:enumeration value="Fedora_64"/> +- <xsd:enumeration value="Gentoo"/> +- <xsd:enumeration value="Gentoo_64"/> +- <xsd:enumeration value="Mandriva"/> +- <xsd:enumeration value="Mandriva_64"/> +- <xsd:enumeration value="RedHat"/> +- <xsd:enumeration value="RedHat_64"/> +- <xsd:enumeration value="Turbolinux"/> +- <xsd:enumeration value="Turbolinux_64"/> +- <xsd:enumeration value="Ubuntu"/> +- <xsd:enumeration value="Ubuntu_64"/> +- <xsd:enumeration value="Xandros"/> +- <xsd:enumeration value="Xandros_64"/> +- <xsd:enumeration value="Oracle"/> +- <xsd:enumeration value="Oracle_64"/> +- <xsd:enumeration value="Linux"/> +- <xsd:enumeration value="FreeBSD"/> +- <xsd:enumeration value="FreeBSD_64"/> +- <xsd:enumeration value="OpenBSD"/> +- <xsd:enumeration value="OpenBSD_64"/> +- <xsd:enumeration value="NetBSD"/> +- <xsd:enumeration value="NetBSD_64"/> +- <xsd:enumeration value="Solaris"/> +- <xsd:enumeration value="Solaris_64"/> +- <xsd:enumeration value="OpenSolaris"/> +- <xsd:enumeration value="OpenSolaris_64"/> +- <xsd:enumeration value="QNX"/> +- <xsd:enumeration value="MacOS"/> +- <xsd:enumeration value="MacOS_64"/> +- <xsd:enumeration value="JRockitVE"/> ++ <xsd:enumeration value="GNU"/> ++ <xsd:enumeration value="GNU_64"/> ++ <xsd:enumeration value="GNUHurd"/> ++ <xsd:enumeration value="GNULinux"/> ++ <xsd:enumeration value="GNULinux_64"/> ++ <xsd:enumeration value="Parabola"/> ++ <xsd:enumeration value="Parabola_64"/> ++ <xsd:enumeration value="gNewSense"/> ++ <xsd:enumeration value="gNewSense_64"/> ++ <xsd:enumeration value="Blag"/> ++ <xsd:enumeration value="Blag_64"/> ++ <xsd:enumeration value="Dragora"/> ++ <xsd:enumeration value="Dragora_64"/> ++ <xsd:enumeration value="Ututo"/> ++ <xsd:enumeration value="Ututo_64"/> ++ <xsd:enumeration value="Musix"/> ++ <xsd:enumeration value="Musix_64"/> ++ <xsd:enumeration value="Trisquel"/> ++ <xsd:enumeration value="Trisquel_64"/> ++ <xsd:enumeration value="Dynebolic"/> ++ <xsd:enumeration value="Venenux"/> + </xsd:restriction> + </xsd:simpleType> + +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-25 15:40:56.733096866 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-25 15:40:56.796426519 -0300 +@@ -1,75 +1,27 @@ + <!DOCTYPE RCC><RCC version="1.0"> + <qresource prefix="/"> +- <file alias="os_archlinux.png">images/os_archlinux.png</file> +- <file alias="os_archlinux_64.png">images/os_archlinux_64.png</file> +- <file alias="os_debian.png">images/os_debian.png</file> +- <file alias="os_debian_64.png">images/os_debian_64.png</file> +- <file alias="os_dos.png">images/os_dos.png</file> +- <file alias="os_fedora.png">images/os_fedora.png</file> +- <file alias="os_fedora_64.png">images/os_fedora_64.png</file> +- <file alias="os_freebsd.png">images/os_freebsd.png</file> +- <file alias="os_freebsd_64.png">images/os_freebsd_64.png</file> +- <file alias="os_gentoo.png">images/os_gentoo.png</file> +- <file alias="os_gentoo_64.png">images/os_gentoo_64.png</file> +- <file alias="os_jrockitve.png">images/os_jrockitve.png</file> +- <file alias="os_l4.png">images/os_l4.png</file> +- <file alias="os_linux_other.png">images/os_linux_other.png</file> +- <file alias="os_linux22.png">images/os_linux22.png</file> +- <file alias="os_linux24.png">images/os_linux24.png</file> +- <file alias="os_linux24_64.png">images/os_linux24_64.png</file> +- <file alias="os_linux26.png">images/os_linux26.png</file> +- <file alias="os_linux26_64.png">images/os_linux26_64.png</file> +- <file alias="os_mandriva.png">images/os_mandriva.png</file> +- <file alias="os_mandriva_64.png">images/os_mandriva_64.png</file> +- <file alias="os_netbsd.png">images/os_netbsd.png</file> +- <file alias="os_netbsd_64.png">images/os_netbsd_64.png</file> +- <file alias="os_netware.png">images/os_netware.png</file> +- <file alias="os_openbsd.png">images/os_openbsd.png</file> +- <file alias="os_openbsd_64.png">images/os_openbsd_64.png</file> +- <file alias="os_oraclesolaris.png">images/os_oraclesolaris.png</file> +- <file alias="os_oraclesolaris_64.png">images/os_oraclesolaris_64.png</file> +- <file alias="os_opensuse.png">images/os_opensuse.png</file> +- <file alias="os_opensuse_64.png">images/os_opensuse_64.png</file> +- <file alias="os_os2_other.png">images/os_os2_other.png</file> +- <file alias="os_os2ecs.png">images/os_os2ecs.png</file> +- <file alias="os_os2warp3.png">images/os_os2warp3.png</file> +- <file alias="os_os2warp4.png">images/os_os2warp4.png</file> +- <file alias="os_os2warp45.png">images/os_os2warp45.png</file> ++ <file alias="os_parabola.png">images/os_parabola.png</file> ++ <file alias="os_parabola_64.png">images/os_parabola_64.png</file> ++ <file alias="os_gnewsense.png">images/os_gnewsense.png</file> ++ <file alias="os_gnewsense_64.png">images/os_gnewsense_64.png</file> ++ <file alias="os_blag.png">images/os_blag.png</file> ++ <file alias="os_blag_64.png">images/os_blag_64.png</file> ++ <file alias="os_ututo.png">images/os_ututo.png</file> ++ <file alias="os_ututo_64.png">images/os_ututo_64.png</file> ++ <file alias="os_gnu.png">images/os_gnu.png</file> ++ <file alias="os_gnu_64.png">images/os_gnu_64.png</file> ++ <file alias="os_gnuhurd.png">images/os_gnuhurd.png</file> ++ <file alias="os_gnulinux.png">images/os_gnulinux.png</file> ++ <file alias="os_gnulinux_64.png">images/os_gnulinux_64.png</file> ++ <file alias="os_musix.png">images/os_musix.png</file> ++ <file alias="os_musix_64.png">images/os_musix_64.png</file> ++ <file alias="os_dragora.png">images/os_dragora.png</file> ++ <file alias="os_dragora_64.png">images/os_dragora_64.png</file> + <file alias="os_other.png">images/os_other.png</file> +- <file alias="os_qnx.png">images/os_qnx.png</file> +- <file alias="os_redhat.png">images/os_redhat.png</file> +- <file alias="os_redhat_64.png">images/os_redhat_64.png</file> +- <file alias="os_turbolinux.png">images/os_turbolinux.png</file> +- <file alias="os_turbolinux_64.png">images/os_turbolinux_64.png</file> +- <file alias="os_solaris.png">images/os_solaris.png</file> +- <file alias="os_solaris_64.png">images/os_solaris_64.png</file> +- <file alias="os_ubuntu.png">images/os_ubuntu.png</file> +- <file alias="os_ubuntu_64.png">images/os_ubuntu_64.png</file> +- <file alias="os_win_other.png">images/os_win_other.png</file> +- <file alias="os_win2k.png">images/os_win2k.png</file> +- <file alias="os_win2k3.png">images/os_win2k3.png</file> +- <file alias="os_win2k3_64.png">images/os_win2k3_64.png</file> +- <file alias="os_win2k8.png">images/os_win2k8.png</file> +- <file alias="os_win2k8_64.png">images/os_win2k8_64.png</file> +- <file alias="os_win31.png">images/os_win31.png</file> +- <file alias="os_win7.png">images/os_win7.png</file> +- <file alias="os_win7_64.png">images/os_win7_64.png</file> +- <file alias="os_win8.png">images/os_win8.png</file> +- <file alias="os_win8_64.png">images/os_win8_64.png</file> +- <file alias="os_win95.png">images/os_win95.png</file> +- <file alias="os_win98.png">images/os_win98.png</file> +- <file alias="os_winme.png">images/os_winme.png</file> +- <file alias="os_winnt4.png">images/os_winnt4.png</file> +- <file alias="os_winvista.png">images/os_winvista.png</file> +- <file alias="os_winvista_64.png">images/os_winvista_64.png</file> +- <file alias="os_winxp.png">images/os_winxp.png</file> +- <file alias="os_winxp_64.png">images/os_winxp_64.png</file> +- <file alias="os_xandros.png">images/os_xandros.png</file> +- <file alias="os_xandros_64.png">images/os_xandros_64.png</file> +- <file alias="os_oracle.png">images/os_oracle.png</file> +- <file alias="os_oracle_64.png">images/os_oracle_64.png</file> +- <file alias="os_macosx.png">images/os_macosx.png</file> +- <file alias="os_macosx_64.png">images/os_macosx_64.png</file> ++ <file alias="os_dynebolic.png">images/os_dynebolic.png</file> ++ <file alias="os_venenux.png">images/os_venenux.png</file> ++ <file alias="os_trisquel.png">images/os_trisquel.png</file> ++ <file alias="os_trisquel_64.png">images/os_trisquel_64.png</file> + <file alias="hd_16px.png">images/hd_16px.png</file> + <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file> + <file alias="hd_32px.png">images/hd_32px.png</file> +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/Global.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/src-all/Global.cpp 2012-07-25 19:32:44.482993976 -0300 +@@ -35,284 +35,90 @@ + VBOXOSTYPE_Unknown, VBOXOSHINT_NONE, + 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows31, "Windows 3.1", +- VBOXOSTYPE_Win31, VBOXOSHINT_NONE, +- 32, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows95, "Windows 95", +- VBOXOSTYPE_Win95, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows98, "Windows 98", +- VBOXOSTYPE_Win98, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsMe, "Windows Me", +- VBOXOSTYPE_WinMe, VBOXOSHINT_NONE, +- 64, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT4, "Windows NT 4", +- VBOXOSTYPE_WinNT4, VBOXOSHINT_NONE, +- 128, 16, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2000, "Windows 2000", +- VBOXOSTYPE_Win2k, VBOXOSHINT_USBTABLET, +- 168, 16, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsXP, "Windows XP", +- VBOXOSTYPE_WinXP, VBOXOSHINT_USBTABLET, +- 192, 16, 10 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsXP_64, "Windows XP (64 bit)", +- VBOXOSTYPE_WinXP_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 192, 16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2003, "Windows 2003", +- VBOXOSTYPE_Win2k3, VBOXOSHINT_USBTABLET, +- 256, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2003_64, "Windows 2003 (64 bit)", +- VBOXOSTYPE_Win2k3_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 256, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista, "Windows Vista", +- VBOXOSTYPE_WinVista, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista_64, "Windows Vista (64 bit)", +- VBOXOSTYPE_WinVista_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008, "Windows 2008", +- VBOXOSTYPE_Win2k8, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008_64, "Windows 2008 (64 bit)", +- VBOXOSTYPE_Win2k8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7, "Windows 7", +- VBOXOSTYPE_Win7, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7_64, "Windows 7 (64 bit)", +- VBOXOSTYPE_Win7_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8, "Windows 8", +- VBOXOSTYPE_Win8, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE, +- 1024,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8_64, "Windows 8 (64 bit)", +- VBOXOSTYPE_Win8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 1536,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT, "Other Windows", +- VBOXOSTYPE_WinNT, VBOXOSHINT_NONE, +- 512, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux22, "Linux 2.2", +- VBOXOSTYPE_Linux22, VBOXOSHINT_RTCUTC, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux24, "Linux 2.4", +- VBOXOSTYPE_Linux24, VBOXOSHINT_RTCUTC, +- 128, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux24_64, "Linux 2.4 (64 bit)", +- VBOXOSTYPE_Linux24_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 128, 4, 4 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU", "GNU", SchemaDefs_OSTypeId_GNU, "GNU", ++ VBOXOSTYPE_GNU, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, ++ { "GNU", "GNU", SchemaDefs_OSTypeId_GNU_64, "GNU (64 bit)", ++ VBOXOSTYPE_GNU_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, ++ { "GNU-Hurd", "GNU-Hurd", SchemaDefs_OSTypeId_GNUHurd, "GNU-Hurd", ++ VBOXOSTYPE_GNUHurd, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26, "Linux 2.6", +- VBOXOSTYPE_Linux26, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_GNULinux, "GNU/Linux", ++ VBOXOSTYPE_GNULinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26_64, "Linux 2.6 (64 bit)", +- VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_GNULinux_64, "GNU/Linux (64 bit)", ++ VBOXOSTYPE_GNULinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux, "Arch Linux", +- VBOXOSTYPE_ArchLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Parabola, "Parabola GNU/Linux-libre", ++ VBOXOSTYPE_Parabola, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux_64, "Arch Linux (64 bit)", +- VBOXOSTYPE_ArchLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Parabola_64, "Parabola GNU/Linux-libre (64 bit)", ++ VBOXOSTYPE_Parabola_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Debian, "Debian", +- VBOXOSTYPE_Debian, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_gNewSense, "gNewSense", ++ VBOXOSTYPE_gNewSense, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Debian_64, "Debian (64 bit)", +- VBOXOSTYPE_Debian_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_gNewSense_64, "gNewSense (64 bit)", ++ VBOXOSTYPE_gNewSense_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97}, +- { "Linux", "Linux", SchemaDefs_OSTypeId_OpenSUSE, "openSUSE", +- VBOXOSTYPE_OpenSUSE, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_OpenSUSE_64, "openSUSE (64 bit)", +- VBOXOSTYPE_OpenSUSE_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Fedora, "Fedora", +- VBOXOSTYPE_FedoraCore, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Blag, "Blag Linux and GNU", ++ VBOXOSTYPE_Blag, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Fedora_64, "Fedora (64 bit)", +- VBOXOSTYPE_FedoraCore_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Blag_64, "Blag Linux and GNU (64 bit)", ++ VBOXOSTYPE_Blag_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Gentoo, "Gentoo", +- VBOXOSTYPE_Gentoo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dragora, "Dragora", ++ VBOXOSTYPE_Dragora, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Gentoo_64, "Gentoo (64 bit)", +- VBOXOSTYPE_Gentoo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dragora_64, "Dragora (64 bit)", ++ VBOXOSTYPE_Dragora_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Mandriva, "Mandriva", +- VBOXOSTYPE_Mandriva, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Mandriva_64, "Mandriva (64 bit)", +- VBOXOSTYPE_Mandriva_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_RedHat, "Red Hat", +- VBOXOSTYPE_RedHat, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Ututo, "Ututo XS", ++ VBOXOSTYPE_Ututo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_RedHat_64, "Red Hat (64 bit)", +- VBOXOSTYPE_RedHat_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Ututo_64, "Ututo XS (64 bit)", ++ VBOXOSTYPE_Ututo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Turbolinux, "Turbolinux", +- VBOXOSTYPE_Turbolinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Musix, "Musix", ++ VBOXOSTYPE_Musix, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Turbolinux, "Turbolinux (64 bit)", +- VBOXOSTYPE_Turbolinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Musix_64, "Musix (64 bit)", ++ VBOXOSTYPE_Musix_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu, "Ubuntu", +- VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97}, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Trisquel, "Trisquel", ++ VBOXOSTYPE_Trisquel, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu_64, "Ubuntu (64 bit)", +- VBOXOSTYPE_Ubuntu_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Trisquel_64, "Trisquel (64 bit)", ++ VBOXOSTYPE_Trisquel_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros, "Xandros", +- VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", +- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dynebolic, "Dyne:bolic", ++ VBOXOSTYPE_Dynebolic, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", +- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Venenux, "Venenux", ++ VBOXOSTYPE_Venenux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux, "Other Linux", +- VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_Solaris, "Oracle Solaris 10 5/09 and earlier", +- VBOXOSTYPE_Solaris, VBOXOSHINT_NONE, +- 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_Solaris_64, "Oracle Solaris 10 5/09 and earlier (64 bit)", +- VBOXOSTYPE_Solaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_OpenSolaris, "Oracle Solaris 10 10/09 and later", +- VBOXOSTYPE_OpenSolaris, VBOXOSHINT_USBTABLET, +- 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_OpenSolaris_64, "Oracle Solaris 10 10/09 and later (64 bit)", +- VBOXOSTYPE_OpenSolaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_FreeBSD, "FreeBSD", +- VBOXOSTYPE_FreeBSD, VBOXOSHINT_NONE, +- 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_FreeBSD_64, "FreeBSD (64 bit)", +- VBOXOSTYPE_FreeBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_OpenBSD, "OpenBSD", +- VBOXOSTYPE_OpenBSD, VBOXOSHINT_HWVIRTEX, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_OpenBSD_64, "OpenBSD (64 bit)", +- VBOXOSTYPE_OpenBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_NetBSD, "NetBSD", +- VBOXOSTYPE_NetBSD, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_NetBSD_64, "NetBSD (64 bit)", +- VBOXOSTYPE_NetBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp3, "OS/2 Warp 3", +- VBOXOSTYPE_OS2Warp3, VBOXOSHINT_HWVIRTEX, +- 48, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp4, "OS/2 Warp 4", +- VBOXOSTYPE_OS2Warp4, VBOXOSHINT_HWVIRTEX, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp45, "OS/2 Warp 4.5", +- VBOXOSTYPE_OS2Warp45, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2eCS, "eComStation", +- VBOXOSTYPE_ECS, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2, "Other OS/2", +- VBOXOSTYPE_OS2, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "MacOS", "Mac OS X", SchemaDefs_OSTypeId_MacOS, "Mac OS X Server", +- VBOXOSTYPE_MacOS, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET, +- 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0, +- StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, +- ChipsetType_ICH9, AudioControllerType_HDA }, +- { "MacOS", "Mac OS X", SchemaDefs_OSTypeId_MacOS_64, "Mac OS X Server (64 bit)", +- VBOXOSTYPE_MacOS_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET, +- 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0, +- StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, +- ChipsetType_ICH9, AudioControllerType_HDA }, +- { "Other", "Other", SchemaDefs_OSTypeId_DOS, "DOS", +- VBOXOSTYPE_DOS, VBOXOSHINT_NONE, +- 32, 4, 500 * _1M, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 }, +- { "Other", "Other", SchemaDefs_OSTypeId_Netware, "Netware", +- VBOXOSTYPE_Netware, VBOXOSHINT_HWVIRTEX, +- 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_L4, "L4", +- VBOXOSTYPE_L4, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_QNX, "QNX", +- VBOXOSTYPE_QNX, VBOXOSHINT_HWVIRTEX, +- 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_JRockitVE, "JRockitVE", +- VBOXOSTYPE_JRockitVE, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE, +- 1024, 4, 8 * _1G64, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, AudioControllerType_AC97 }, + }; + + /** +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp 2012-07-25 21:44:01.290876720 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp 2012-07-25 22:00:57.819380802 -0300 +@@ -4875,75 +4875,27 @@ + static const char *kOSTypeIcons [][2] = + { + {"Other", ":/os_other.png"}, +- {"DOS", ":/os_dos.png"}, +- {"Netware", ":/os_netware.png"}, +- {"L4", ":/os_l4.png"}, +- {"Windows31", ":/os_win31.png"}, +- {"Windows95", ":/os_win95.png"}, +- {"Windows98", ":/os_win98.png"}, +- {"WindowsMe", ":/os_winme.png"}, +- {"WindowsNT4", ":/os_winnt4.png"}, +- {"Windows2000", ":/os_win2k.png"}, +- {"WindowsXP", ":/os_winxp.png"}, +- {"WindowsXP_64", ":/os_winxp_64.png"}, +- {"Windows2003", ":/os_win2k3.png"}, +- {"Windows2003_64", ":/os_win2k3_64.png"}, +- {"WindowsVista", ":/os_winvista.png"}, +- {"WindowsVista_64", ":/os_winvista_64.png"}, +- {"Windows2008", ":/os_win2k8.png"}, +- {"Windows2008_64", ":/os_win2k8_64.png"}, +- {"Windows7", ":/os_win7.png"}, +- {"Windows7_64", ":/os_win7_64.png"}, +- {"Windows8", ":/os_win8.png"}, +- {"Windows8_64", ":/os_win8_64.png"}, +- {"WindowsNT", ":/os_win_other.png"}, +- {"OS2Warp3", ":/os_os2warp3.png"}, +- {"OS2Warp4", ":/os_os2warp4.png"}, +- {"OS2Warp45", ":/os_os2warp45.png"}, +- {"OS2eCS", ":/os_os2ecs.png"}, +- {"OS2", ":/os_os2_other.png"}, +- {"Linux22", ":/os_linux22.png"}, +- {"Linux24", ":/os_linux24.png"}, +- {"Linux24_64", ":/os_linux24_64.png"}, +- {"Linux26", ":/os_linux26.png"}, +- {"Linux26_64", ":/os_linux26_64.png"}, +- {"ArchLinux", ":/os_archlinux.png"}, +- {"ArchLinux_64", ":/os_archlinux_64.png"}, +- {"Debian", ":/os_debian.png"}, +- {"Debian_64", ":/os_debian_64.png"}, +- {"OpenSUSE", ":/os_opensuse.png"}, +- {"OpenSUSE_64", ":/os_opensuse_64.png"}, +- {"Fedora", ":/os_fedora.png"}, +- {"Fedora_64", ":/os_fedora_64.png"}, +- {"Gentoo", ":/os_gentoo.png"}, +- {"Gentoo_64", ":/os_gentoo_64.png"}, +- {"Mandriva", ":/os_mandriva.png"}, +- {"Mandriva_64", ":/os_mandriva_64.png"}, +- {"RedHat", ":/os_redhat.png"}, +- {"RedHat_64", ":/os_redhat_64.png"}, +- {"Turbolinux", ":/os_turbolinux.png"}, +- {"Turbolinux_64", ":/os_turbolinux_64.png"}, +- {"Ubuntu", ":/os_ubuntu.png"}, +- {"Ubuntu_64", ":/os_ubuntu_64.png"}, +- {"Xandros", ":/os_xandros.png"}, +- {"Xandros_64", ":/os_xandros_64.png"}, +- {"Oracle", ":/os_oracle.png"}, +- {"Oracle_64", ":/os_oracle_64.png"}, +- {"Linux", ":/os_linux_other.png"}, +- {"FreeBSD", ":/os_freebsd.png"}, +- {"FreeBSD_64", ":/os_freebsd_64.png"}, +- {"OpenBSD", ":/os_openbsd.png"}, +- {"OpenBSD_64", ":/os_openbsd_64.png"}, +- {"NetBSD", ":/os_netbsd.png"}, +- {"NetBSD_64", ":/os_netbsd_64.png"}, +- {"Solaris", ":/os_solaris.png"}, +- {"Solaris_64", ":/os_solaris_64.png"}, +- {"OpenSolaris", ":/os_oraclesolaris.png"}, +- {"OpenSolaris_64", ":/os_oraclesolaris_64.png"}, +- {"QNX", ":/os_qnx.png"}, +- {"MacOS", ":/os_macosx.png"}, +- {"MacOS_64", ":/os_macosx_64.png"}, +- {"JRockitVE", ":/os_jrockitve.png"}, ++ {"GNU", ":/os_gnu.png"}, ++ {"GNU_64", ":/os_gnu_64.png"}, ++ {"GNUHurd", ":/os_gnuhurd.png"}, ++ {"GNULinux", ":/os_gnulinux.png"}, ++ {"GNULinux_64", ":/os_gnulinux_64.png"}, ++ {"Parabola", ":/os_parabola.png"}, ++ {"Parabola_64", ":/os_parabola_64.png"}, ++ {"gNewSense", ":/os_gnewsense.png"}, ++ {"gNewSense_64", ":/os_gnewsense_64.png"}, ++ {"Blag", ":/os_blag.png"}, ++ {"Blag_64", ":/os_blag_64.png"}, ++ {"Dragora", ":/os_dragora.png"}, ++ {"Dragora_64", ":/os_dragora_64.png"}, ++ {"Ututo", ":/os_ututo.png"}, ++ {"Ututo_64", ":/os_ututo_64.png"}, ++ {"Musix", ":/os_musix.png"}, ++ {"Musix_64", ":/os_musix_64.png"}, ++ {"Trisquel", ":/os_trisquel.png"}, ++ {"Trisquel_64", ":/os_trisquel_64.png"}, ++ {"Dynebolic", ":/os_dynebolic.png"}, ++ {"Venenux", ":/os_venenux.png"}, + }; + for (uint n = 0; n < SIZEOF_ARRAY (kOSTypeIcons); ++ n) + { +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp.orig 2012-06-20 10:16:38.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp 2012-07-25 22:07:51.232436783 -0300 +@@ -192,17 +192,10 @@ + if (typeIndex != -1) + mCbType->setCurrentIndex (typeIndex); + } +- /* Or select WinXP item for Windows family as default */ +- else if (familyId == "Windows") ++ /* Or select Parabola GNU/Linux-libre item for GNU/Linux family as default */ ++ else if (familyId == "GNU/Linux") + { +- int xpIndex = mCbType->findData ("WindowsXP", RoleTypeID); +- if (xpIndex != -1) +- mCbType->setCurrentIndex (xpIndex); +- } +- /* Or select Ubuntu item for Linux family as default */ +- else if (familyId == "Linux") +- { +- int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID); ++ int ubIndex = mCbType->findData ("Parabola", RoleTypeID); + if (ubIndex != -1) + mCbType->setCurrentIndex (ubIndex); + } +--- VirtualBox-4.1.18.orig/include/VBox/ostypes.h 2012-06-20 10:07:51.000000000 -0300 ++++ VirtualBox-4.1.18/include/VBox/ostypes.h 2012-07-25 23:20:57.322757456 -0300 +@@ -43,77 +43,27 @@ + typedef enum VBOXOSTYPE + { + VBOXOSTYPE_Unknown = 0, +- VBOXOSTYPE_DOS = 0x10000, +- VBOXOSTYPE_Win31 = 0x15000, +- VBOXOSTYPE_Win9x = 0x20000, +- VBOXOSTYPE_Win95 = 0x21000, +- VBOXOSTYPE_Win98 = 0x22000, +- VBOXOSTYPE_WinMe = 0x23000, +- VBOXOSTYPE_WinNT = 0x30000, +- VBOXOSTYPE_WinNT4 = 0x31000, +- VBOXOSTYPE_Win2k = 0x32000, +- VBOXOSTYPE_WinXP = 0x33000, +- VBOXOSTYPE_WinXP_x64 = 0x33100, +- VBOXOSTYPE_Win2k3 = 0x34000, +- VBOXOSTYPE_Win2k3_x64 = 0x34100, +- VBOXOSTYPE_WinVista = 0x35000, +- VBOXOSTYPE_WinVista_x64 = 0x35100, +- VBOXOSTYPE_Win2k8 = 0x36000, +- VBOXOSTYPE_Win2k8_x64 = 0x36100, +- VBOXOSTYPE_Win7 = 0x37000, +- VBOXOSTYPE_Win7_x64 = 0x37100, +- VBOXOSTYPE_Win8 = 0x38000, +- VBOXOSTYPE_Win8_x64 = 0x38100, +- VBOXOSTYPE_OS2 = 0x40000, +- VBOXOSTYPE_OS2Warp3 = 0x41000, +- VBOXOSTYPE_OS2Warp4 = 0x42000, +- VBOXOSTYPE_OS2Warp45 = 0x43000, +- VBOXOSTYPE_ECS = 0x44000, +- VBOXOSTYPE_Linux = 0x50000, +- VBOXOSTYPE_Linux_x64 = 0x50100, +- VBOXOSTYPE_Linux22 = 0x51000, +- VBOXOSTYPE_Linux24 = 0x52000, +- VBOXOSTYPE_Linux24_x64 = 0x52100, +- VBOXOSTYPE_Linux26 = 0x53000, +- VBOXOSTYPE_Linux26_x64 = 0x53100, +- VBOXOSTYPE_ArchLinux = 0x54000, +- VBOXOSTYPE_ArchLinux_x64 = 0x54100, +- VBOXOSTYPE_Debian = 0x55000, +- VBOXOSTYPE_Debian_x64 = 0x55100, +- VBOXOSTYPE_OpenSUSE = 0x56000, +- VBOXOSTYPE_OpenSUSE_x64 = 0x56100, +- VBOXOSTYPE_FedoraCore = 0x57000, +- VBOXOSTYPE_FedoraCore_x64 = 0x57100, +- VBOXOSTYPE_Gentoo = 0x58000, +- VBOXOSTYPE_Gentoo_x64 = 0x58100, +- VBOXOSTYPE_Mandriva = 0x59000, +- VBOXOSTYPE_Mandriva_x64 = 0x59100, +- VBOXOSTYPE_RedHat = 0x5A000, +- VBOXOSTYPE_RedHat_x64 = 0x5A100, +- VBOXOSTYPE_Turbolinux = 0x5B000, +- VBOXOSTYPE_Turbolinux_x64 = 0x5B100, +- VBOXOSTYPE_Ubuntu = 0x5C000, +- VBOXOSTYPE_Ubuntu_x64 = 0x5C100, +- VBOXOSTYPE_Xandros = 0x5D000, +- VBOXOSTYPE_Xandros_x64 = 0x5D100, +- VBOXOSTYPE_Oracle = 0x5E000, +- VBOXOSTYPE_Oracle_x64 = 0x5E100, +- VBOXOSTYPE_FreeBSD = 0x60000, +- VBOXOSTYPE_FreeBSD_x64 = 0x60100, +- VBOXOSTYPE_OpenBSD = 0x61000, +- VBOXOSTYPE_OpenBSD_x64 = 0x61100, +- VBOXOSTYPE_NetBSD = 0x62000, +- VBOXOSTYPE_NetBSD_x64 = 0x62100, +- VBOXOSTYPE_Netware = 0x70000, +- VBOXOSTYPE_Solaris = 0x80000, +- VBOXOSTYPE_Solaris_x64 = 0x80100, +- VBOXOSTYPE_OpenSolaris = 0x81000, +- VBOXOSTYPE_OpenSolaris_x64 = 0x81100, +- VBOXOSTYPE_L4 = 0x90000, +- VBOXOSTYPE_QNX = 0xA0000, +- VBOXOSTYPE_MacOS = 0xB0000, +- VBOXOSTYPE_MacOS_x64 = 0xB0100, +- VBOXOSTYPE_JRockitVE = 0xC0000, ++ VBOXOSTYPE_GNU = 0x10000, ++ VBOXOSTYPE_GNU_x64 = 0x10100, ++ VBOXOSTYPE_GNUHurd = 0x20000, ++ VBOXOSTYPE_GNULinux = 0x30000, ++ VBOXOSTYPE_GNULinux_x64 = 0x30100, ++ VBOXOSTYPE_Parabola = 0x31000, ++ VBOXOSTYPE_Parabola_x64 = 0x31100, ++ VBOXOSTYPE_gNewSense = 0x32000, ++ VBOXOSTYPE_gNewSense_x64 = 0x32100, ++ VBOXOSTYPE_Blag = 0x33000, ++ VBOXOSTYPE_Blag_x64 = 0x33100, ++ VBOXOSTYPE_Dragora = 0x34000, ++ VBOXOSTYPE_Dragora_x64 = 0x34100, ++ VBOXOSTYPE_Ututo = 0x35000, ++ VBOXOSTYPE_Ututo_x64 = 0x35100, ++ VBOXOSTYPE_Musix = 0x36000, ++ VBOXOSTYPE_Musix_x64 = 0x36100, ++ VBOXOSTYPE_Trisquel = 0x37000, ++ VBOXOSTYPE_Trisquel_x64 = 0x37100, ++ VBOXOSTYPE_Dynebolic = 0x38000, ++ VBOXOSTYPE_Venenux = 0x39000, + /** The bit number which indicates 64-bit or 32-bit. */ + #define VBOXOSTYPE_x64_BIT 8 + /** The mask which indicates 64-bit. */ +@@ -129,16 +79,11 @@ + typedef enum VBOXOSFAMILY + { + VBOXOSFAMILY_Unknown = 0, +- VBOXOSFAMILY_Windows32 = 1, +- VBOXOSFAMILY_Windows64 = 2, +- VBOXOSFAMILY_Linux32 = 3, +- VBOXOSFAMILY_Linux64 = 4, +- VBOXOSFAMILY_FreeBSD32 = 5, +- VBOXOSFAMILY_FreeBSD64 = 6, +- VBOXOSFAMILY_Solaris32 = 7, +- VBOXOSFAMILY_Solaris64 = 8, +- VBOXOSFAMILY_MacOSX32 = 9, +- VBOXOSFAMILY_MacOSX64 = 10, ++ VBOXOSFAMILY_GNU32 = 1, ++ VBOXOSFAMILY_GNU64 = 2, ++ VBOXOSFAMILY_GNUHurd = 3, ++ VBOXOSFAMILY_GNULinux32 = 4, ++ VBOXOSFAMILY_GNULinux64 = 5, + /** The usual 32-bit hack. */ + VBOXOSFAMILY_32BIT_HACK = 0x7fffffff + } VBOXOSFAMILY; +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-server/ApplianceImpl.cpp 2012-06-20 10:17:35.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/src-server/ApplianceImpl.cpp 2012-07-26 01:28:50.033551279 -0300 +@@ -49,94 +49,33 @@ + g_osTypes[] = + { + { ovf::CIMOSType_CIMOS_Unknown, SchemaDefs_OSTypeId_Other }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp3 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp4 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp45 }, +- { ovf::CIMOSType_CIMOS_MSDOS, SchemaDefs_OSTypeId_DOS }, +- { ovf::CIMOSType_CIMOS_WIN3x, SchemaDefs_OSTypeId_Windows31 }, +- { ovf::CIMOSType_CIMOS_WIN95, SchemaDefs_OSTypeId_Windows95 }, +- { ovf::CIMOSType_CIMOS_WIN98, SchemaDefs_OSTypeId_Windows98 }, +- { ovf::CIMOSType_CIMOS_WINNT, SchemaDefs_OSTypeId_WindowsNT }, +- { ovf::CIMOSType_CIMOS_WINNT, SchemaDefs_OSTypeId_WindowsNT4 }, +- { ovf::CIMOSType_CIMOS_NetWare, SchemaDefs_OSTypeId_Netware }, +- { ovf::CIMOSType_CIMOS_NovellOES, SchemaDefs_OSTypeId_Netware }, +- { ovf::CIMOSType_CIMOS_Solaris, SchemaDefs_OSTypeId_Solaris }, +- { ovf::CIMOSType_CIMOS_SunOS, SchemaDefs_OSTypeId_Solaris }, +- { ovf::CIMOSType_CIMOS_FreeBSD, SchemaDefs_OSTypeId_FreeBSD }, +- { ovf::CIMOSType_CIMOS_NetBSD, SchemaDefs_OSTypeId_NetBSD }, +- { ovf::CIMOSType_CIMOS_QNX, SchemaDefs_OSTypeId_QNX }, +- { ovf::CIMOSType_CIMOS_Windows2000, SchemaDefs_OSTypeId_Windows2000 }, +- { ovf::CIMOSType_CIMOS_WindowsMe, SchemaDefs_OSTypeId_WindowsMe }, +- { ovf::CIMOSType_CIMOS_OpenBSD, SchemaDefs_OSTypeId_OpenBSD }, +- { ovf::CIMOSType_CIMOS_WindowsXP, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_WindowsXPEmbedded, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_WindowsEmbeddedforPointofService, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2003, SchemaDefs_OSTypeId_Windows2003 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2003_64, SchemaDefs_OSTypeId_Windows2003_64 }, +- { ovf::CIMOSType_CIMOS_WindowsXP_64, SchemaDefs_OSTypeId_WindowsXP_64 }, +- { ovf::CIMOSType_CIMOS_WindowsVista, SchemaDefs_OSTypeId_WindowsVista }, +- { ovf::CIMOSType_CIMOS_WindowsVista_64, SchemaDefs_OSTypeId_WindowsVista_64 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2008, SchemaDefs_OSTypeId_Windows2008 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2008_64, SchemaDefs_OSTypeId_Windows2008_64 }, +- { ovf::CIMOSType_CIMOS_FreeBSD_64, SchemaDefs_OSTypeId_FreeBSD_64 }, +- { ovf::CIMOSType_CIMOS_MACOS, SchemaDefs_OSTypeId_MacOS }, +- { ovf::CIMOSType_CIMOS_MACOS, SchemaDefs_OSTypeId_MacOS_64 }, // there is no CIM 64-bit type for this +- +- // Linuxes +- { ovf::CIMOSType_CIMOS_RedHatEnterpriseLinux, SchemaDefs_OSTypeId_RedHat }, +- { ovf::CIMOSType_CIMOS_RedHatEnterpriseLinux_64, SchemaDefs_OSTypeId_RedHat_64 }, +- { ovf::CIMOSType_CIMOS_Solaris_64, SchemaDefs_OSTypeId_Solaris_64 }, +- { ovf::CIMOSType_CIMOS_SUSE, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_SLES, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_NovellLinuxDesktop, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_SUSE_64, SchemaDefs_OSTypeId_OpenSUSE_64 }, +- { ovf::CIMOSType_CIMOS_SLES_64, SchemaDefs_OSTypeId_OpenSUSE_64 }, +- { ovf::CIMOSType_CIMOS_LINUX, SchemaDefs_OSTypeId_Linux }, +- { ovf::CIMOSType_CIMOS_LINUX, SchemaDefs_OSTypeId_Linux22 }, +- { ovf::CIMOSType_CIMOS_SunJavaDesktopSystem, SchemaDefs_OSTypeId_Linux }, +- { ovf::CIMOSType_CIMOS_TurboLinux, SchemaDefs_OSTypeId_Turbolinux }, +- { ovf::CIMOSType_CIMOS_TurboLinux_64, SchemaDefs_OSTypeId_Turbolinux_64 }, +- { ovf::CIMOSType_CIMOS_Mandriva, SchemaDefs_OSTypeId_Mandriva }, +- { ovf::CIMOSType_CIMOS_Mandriva_64, SchemaDefs_OSTypeId_Mandriva_64 }, +- { ovf::CIMOSType_CIMOS_Ubuntu, SchemaDefs_OSTypeId_Ubuntu }, +- { ovf::CIMOSType_CIMOS_Ubuntu_64, SchemaDefs_OSTypeId_Ubuntu_64 }, +- { ovf::CIMOSType_CIMOS_Debian, SchemaDefs_OSTypeId_Debian }, +- { ovf::CIMOSType_CIMOS_Debian_64, SchemaDefs_OSTypeId_Debian_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_4_x, SchemaDefs_OSTypeId_Linux24 }, +- { ovf::CIMOSType_CIMOS_Linux_2_4_x_64, SchemaDefs_OSTypeId_Linux24_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Linux26 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Linux26_64 }, +- { ovf::CIMOSType_CIMOS_Linux_64, SchemaDefs_OSTypeId_Linux26_64 }, +- +- // types that we have support for but CIM doesn't +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_ArchLinux }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_ArchLinux_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Fedora }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Fedora_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Gentoo }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Gentoo_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Xandros }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Xandros_64 }, +- { ovf::CIMOSType_CIMOS_Solaris, SchemaDefs_OSTypeId_OpenSolaris }, +- { ovf::CIMOSType_CIMOS_Solaris_64, SchemaDefs_OSTypeId_OpenSolaris_64 }, +- +- // types added with CIM 2.25.0 follow: +- { ovf::CIMOSType_CIMOS_WindowsServer2008R2, SchemaDefs_OSTypeId_Windows2008 }, // duplicate, see above +-// { ovf::CIMOSType_CIMOS_VMwareESXi = 104, // we can't run ESX in a VM +- { ovf::CIMOSType_CIMOS_Windows7, SchemaDefs_OSTypeId_Windows7 }, +- { ovf::CIMOSType_CIMOS_Windows7, SchemaDefs_OSTypeId_Windows7_64 }, // there is no CIM 64-bit type for this +- { ovf::CIMOSType_CIMOS_CentOS, SchemaDefs_OSTypeId_RedHat }, +- { ovf::CIMOSType_CIMOS_CentOS_64, SchemaDefs_OSTypeId_RedHat_64 }, +- { ovf::CIMOSType_CIMOS_OracleEnterpriseLinux, SchemaDefs_OSTypeId_Oracle }, +- { ovf::CIMOSType_CIMOS_OracleEnterpriseLinux_64, SchemaDefs_OSTypeId_Oracle_64 }, +- { ovf::CIMOSType_CIMOS_eComStation, SchemaDefs_OSTypeId_OS2eCS } +- +- // there are no CIM types for these, so these turn to "other" on export: +- // SchemaDefs_OSTypeId_OpenBSD +- // SchemaDefs_OSTypeId_OpenBSD_64 +- // SchemaDefs_OSTypeId_NetBSD +- // SchemaDefs_OSTypeId_NetBSD_64 ++ ++ // Custom OS ++ { ovf::CIMOSType_CIMOS_GNU, SchemaDefs_OSTypeId_GNU }, ++ { ovf::CIMOSType_CIMOS_GNU_64, SchemaDefs_OSTypeId_GNU_64 }, ++ { ovf::CIMOSType_CIMOS_GNUHurd, SchemaDefs_OSTypeId_GNUHurd }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_GNULinux }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_GNULinux_64 }, ++ ++ // GNU/Linux free distros ++ { ovf::CIMOSType_CIMOS_gNewSense, SchemaDefs_OSTypeId_gNewSense }, ++ { ovf::CIMOSType_CIMOS_gNewSense_64, SchemaDefs_OSTypeId_gNewSense_64 }, ++ { ovf::CIMOSType_CIMOS_Dragora, SchemaDefs_OSTypeId_Dragora }, ++ { ovf::CIMOSType_CIMOS_Dragora_64, SchemaDefs_OSTypeId_Dragora_64 }, ++ { ovf::CIMOSType_CIMOS_Musix, SchemaDefs_OSTypeId_Musix }, ++ { ovf::CIMOSType_CIMOS_Musix_64, SchemaDefs_OSTypeId_Musix_64 }, ++ { ovf::CIMOSType_CIMOS_Trisquel, SchemaDefs_OSTypeId_Trisquel }, ++ { ovf::CIMOSType_CIMOS_Trisquel_64, SchemaDefs_OSTypeId_Trisquel_64 }, ++ { ovf::CIMOSType_CIMOS_Dynebolic, SchemaDefs_OSTypeId_Dynebolic }, ++ { ovf::CIMOSType_CIMOS_Venenux, SchemaDefs_OSTypeId_Venenux }, ++ ++ // GNU/Linux free distros that we have support for but CIM doesn't ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Parabola }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Parabola_64 }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Blag }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Blag_64 }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Ututo }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Ututo_64 }, + + }; + +@@ -150,53 +89,34 @@ + /* These are the 32-Bit ones. They are sorted by priority. */ + static const osTypePattern g_osTypesPattern[] = + { +- {"Windows NT", SchemaDefs_OSTypeId_WindowsNT4}, +- {"Windows XP", SchemaDefs_OSTypeId_WindowsXP}, +- {"Windows 2000", SchemaDefs_OSTypeId_Windows2000}, +- {"Windows 2003", SchemaDefs_OSTypeId_Windows2003}, +- {"Windows Vista", SchemaDefs_OSTypeId_WindowsVista}, +- {"Windows 2008", SchemaDefs_OSTypeId_Windows2008}, +- {"SUSE", SchemaDefs_OSTypeId_OpenSUSE}, +- {"Novell", SchemaDefs_OSTypeId_OpenSUSE}, +- {"Red Hat", SchemaDefs_OSTypeId_RedHat}, +- {"Mandriva", SchemaDefs_OSTypeId_Mandriva}, +- {"Ubuntu", SchemaDefs_OSTypeId_Ubuntu}, +- {"Debian", SchemaDefs_OSTypeId_Debian}, +- {"QNX", SchemaDefs_OSTypeId_QNX}, +- {"Linux 2.4", SchemaDefs_OSTypeId_Linux24}, +- {"Linux 2.6", SchemaDefs_OSTypeId_Linux26}, +- {"Linux", SchemaDefs_OSTypeId_Linux}, +- {"OpenSolaris", SchemaDefs_OSTypeId_OpenSolaris}, +- {"Solaris", SchemaDefs_OSTypeId_OpenSolaris}, +- {"FreeBSD", SchemaDefs_OSTypeId_FreeBSD}, +- {"NetBSD", SchemaDefs_OSTypeId_NetBSD}, +- {"Windows 95", SchemaDefs_OSTypeId_Windows95}, +- {"Windows 98", SchemaDefs_OSTypeId_Windows98}, +- {"Windows Me", SchemaDefs_OSTypeId_WindowsMe}, +- {"Windows 3.", SchemaDefs_OSTypeId_Windows31}, +- {"DOS", SchemaDefs_OSTypeId_DOS}, +- {"OS2", SchemaDefs_OSTypeId_OS2} ++ ++ {"Parabola GNU/Linux-libre", SchemaDefs_OSTypeId_Parabola}, ++ {"gNewSense", SchemaDefs_OSTypeId_gNewSense}, ++ {"Blag Linux and GNU", SchemaDefs_OSTypeId_Blag}, ++ {"Dragora", SchemaDefs_OSTypeId_Dragora}, ++ {"Ututo XS", SchemaDefs_OSTypeId_Ututo}, ++ {"Musix", SchemaDefs_OSTypeId_Musix}, ++ {"Trisquel", SchemaDefs_OSTypeId_Trisquel}, ++ {"Dyne:bolic", SchemaDefs_OSTypeId_Dynebolic}, ++ {"Venenux", SchemaDefs_OSTypeId_Venenux}, ++ {"GNU", SchemaDefs_OSTypeId_GNU}, ++ {"GNU-Hurd", SchemaDefs_OSTypeId_GNUHurd}, ++ {"GNU/Linux", SchemaDefs_OSTypeId_GNULinux}, ++ + }; + + /* These are the 64-Bit ones. They are sorted by priority. */ + static const osTypePattern g_osTypesPattern64[] = + { +- {"Windows XP", SchemaDefs_OSTypeId_WindowsXP_64}, +- {"Windows 2003", SchemaDefs_OSTypeId_Windows2003_64}, +- {"Windows Vista", SchemaDefs_OSTypeId_WindowsVista_64}, +- {"Windows 2008", SchemaDefs_OSTypeId_Windows2008_64}, +- {"SUSE", SchemaDefs_OSTypeId_OpenSUSE_64}, +- {"Novell", SchemaDefs_OSTypeId_OpenSUSE_64}, +- {"Red Hat", SchemaDefs_OSTypeId_RedHat_64}, +- {"Mandriva", SchemaDefs_OSTypeId_Mandriva_64}, +- {"Ubuntu", SchemaDefs_OSTypeId_Ubuntu_64}, +- {"Debian", SchemaDefs_OSTypeId_Debian_64}, +- {"Linux 2.4", SchemaDefs_OSTypeId_Linux24_64}, +- {"Linux 2.6", SchemaDefs_OSTypeId_Linux26_64}, +- {"Linux", SchemaDefs_OSTypeId_Linux26_64}, +- {"OpenSolaris", SchemaDefs_OSTypeId_OpenSolaris_64}, +- {"Solaris", SchemaDefs_OSTypeId_OpenSolaris_64}, +- {"FreeBSD", SchemaDefs_OSTypeId_FreeBSD_64}, ++ {"Parabola GNU/Linux-libre", SchemaDefs_OSTypeId_Parabola_64}, ++ {"gNewSense", SchemaDefs_OSTypeId_gNewSense_64}, ++ {"Blag Linux and GNU", SchemaDefs_OSTypeId_Blag_64}, ++ {"Dragora", SchemaDefs_OSTypeId_Dragora_64}, ++ {"Ututo XS", SchemaDefs_OSTypeId_Ututo_64}, ++ {"Musix", SchemaDefs_OSTypeId_Musix_64}, ++ {"Trisquel", SchemaDefs_OSTypeId_Trisquel_64}, ++ {"GNU", SchemaDefs_OSTypeId_GNU_64}, ++ {"GNU/Linux", SchemaDefs_OSTypeId_GNULinux_64}, + }; + + /** +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ovfreader.h 2012-06-20 10:17:34.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/include/ovfreader.h 2012-07-26 03:51:21.807619186 -0300 +@@ -34,119 +34,24 @@ + + enum CIMOSType_T + { +- CIMOSType_CIMOS_Unknown = 0, +- CIMOSType_CIMOS_Other = 1, +- CIMOSType_CIMOS_MACOS = 2, +- CIMOSType_CIMOS_ATTUNIX = 3, +- CIMOSType_CIMOS_DGUX = 4, +- CIMOSType_CIMOS_DECNT = 5, +- CIMOSType_CIMOS_Tru64UNIX = 6, +- CIMOSType_CIMOS_OpenVMS = 7, +- CIMOSType_CIMOS_HPUX = 8, +- CIMOSType_CIMOS_AIX = 9, +- CIMOSType_CIMOS_MVS = 10, +- CIMOSType_CIMOS_OS400 = 11, +- CIMOSType_CIMOS_OS2 = 12, +- CIMOSType_CIMOS_JavaVM = 13, +- CIMOSType_CIMOS_MSDOS = 14, +- CIMOSType_CIMOS_WIN3x = 15, +- CIMOSType_CIMOS_WIN95 = 16, +- CIMOSType_CIMOS_WIN98 = 17, +- CIMOSType_CIMOS_WINNT = 18, +- CIMOSType_CIMOS_WINCE = 19, +- CIMOSType_CIMOS_NCR3000 = 20, +- CIMOSType_CIMOS_NetWare = 21, +- CIMOSType_CIMOS_OSF = 22, +- CIMOSType_CIMOS_DCOS = 23, +- CIMOSType_CIMOS_ReliantUNIX = 24, +- CIMOSType_CIMOS_SCOUnixWare = 25, +- CIMOSType_CIMOS_SCOOpenServer = 26, +- CIMOSType_CIMOS_Sequent = 27, +- CIMOSType_CIMOS_IRIX = 28, +- CIMOSType_CIMOS_Solaris = 29, +- CIMOSType_CIMOS_SunOS = 30, +- CIMOSType_CIMOS_U6000 = 31, +- CIMOSType_CIMOS_ASERIES = 32, +- CIMOSType_CIMOS_HPNonStopOS = 33, +- CIMOSType_CIMOS_HPNonStopOSS = 34, +- CIMOSType_CIMOS_BS2000 = 35, +- CIMOSType_CIMOS_LINUX = 36, +- CIMOSType_CIMOS_Lynx = 37, +- CIMOSType_CIMOS_XENIX = 38, +- CIMOSType_CIMOS_VM = 39, +- CIMOSType_CIMOS_InteractiveUNIX = 40, +- CIMOSType_CIMOS_BSDUNIX = 41, +- CIMOSType_CIMOS_FreeBSD = 42, +- CIMOSType_CIMOS_NetBSD = 43, +- CIMOSType_CIMOS_GNUHurd = 44, +- CIMOSType_CIMOS_OS9 = 45, +- CIMOSType_CIMOS_MACHKernel = 46, +- CIMOSType_CIMOS_Inferno = 47, +- CIMOSType_CIMOS_QNX = 48, +- CIMOSType_CIMOS_EPOC = 49, +- CIMOSType_CIMOS_IxWorks = 50, +- CIMOSType_CIMOS_VxWorks = 51, +- CIMOSType_CIMOS_MiNT = 52, +- CIMOSType_CIMOS_BeOS = 53, +- CIMOSType_CIMOS_HPMPE = 54, +- CIMOSType_CIMOS_NextStep = 55, +- CIMOSType_CIMOS_PalmPilot = 56, +- CIMOSType_CIMOS_Rhapsody = 57, +- CIMOSType_CIMOS_Windows2000 = 58, +- CIMOSType_CIMOS_Dedicated = 59, +- CIMOSType_CIMOS_OS390 = 60, +- CIMOSType_CIMOS_VSE = 61, +- CIMOSType_CIMOS_TPF = 62, +- CIMOSType_CIMOS_WindowsMe = 63, +- CIMOSType_CIMOS_CalderaOpenUNIX = 64, +- CIMOSType_CIMOS_OpenBSD = 65, +- CIMOSType_CIMOS_NotApplicable = 66, +- CIMOSType_CIMOS_WindowsXP = 67, +- CIMOSType_CIMOS_zOS = 68, +- CIMOSType_CIMOS_MicrosoftWindowsServer2003 = 69, +- CIMOSType_CIMOS_MicrosoftWindowsServer2003_64 = 70, +- CIMOSType_CIMOS_WindowsXP_64 = 71, +- CIMOSType_CIMOS_WindowsXPEmbedded = 72, +- CIMOSType_CIMOS_WindowsVista = 73, +- CIMOSType_CIMOS_WindowsVista_64 = 74, +- CIMOSType_CIMOS_WindowsEmbeddedforPointofService = 75, +- CIMOSType_CIMOS_MicrosoftWindowsServer2008 = 76, +- CIMOSType_CIMOS_MicrosoftWindowsServer2008_64 = 77, +- CIMOSType_CIMOS_FreeBSD_64 = 78, +- CIMOSType_CIMOS_RedHatEnterpriseLinux = 79, +- CIMOSType_CIMOS_RedHatEnterpriseLinux_64 = 80, +- CIMOSType_CIMOS_Solaris_64 = 81, +- CIMOSType_CIMOS_SUSE = 82, +- CIMOSType_CIMOS_SUSE_64 = 83, +- CIMOSType_CIMOS_SLES = 84, +- CIMOSType_CIMOS_SLES_64 = 85, +- CIMOSType_CIMOS_NovellOES = 86, +- CIMOSType_CIMOS_NovellLinuxDesktop = 87, +- CIMOSType_CIMOS_SunJavaDesktopSystem = 88, +- CIMOSType_CIMOS_Mandriva = 89, +- CIMOSType_CIMOS_Mandriva_64 = 90, +- CIMOSType_CIMOS_TurboLinux = 91, +- CIMOSType_CIMOS_TurboLinux_64 = 92, +- CIMOSType_CIMOS_Ubuntu = 93, +- CIMOSType_CIMOS_Ubuntu_64 = 94, +- CIMOSType_CIMOS_Debian = 95, +- CIMOSType_CIMOS_Debian_64 = 96, +- CIMOSType_CIMOS_Linux_2_4_x = 97, +- CIMOSType_CIMOS_Linux_2_4_x_64 = 98, +- CIMOSType_CIMOS_Linux_2_6_x = 99, +- CIMOSType_CIMOS_Linux_2_6_x_64 = 100, +- CIMOSType_CIMOS_Linux_64 = 101, +- CIMOSType_CIMOS_Other_64 = 102, +- // types added with CIM 2.25.0 follow: +- CIMOSType_CIMOS_WindowsServer2008R2 = 103, +- CIMOSType_CIMOS_VMwareESXi = 104, +- CIMOSType_CIMOS_Windows7 = 105, +- CIMOSType_CIMOS_CentOS = 106, +- CIMOSType_CIMOS_CentOS_64 = 107, +- CIMOSType_CIMOS_OracleEnterpriseLinux = 108, +- CIMOSType_CIMOS_OracleEnterpriseLinux_64 = 109, +- CIMOSType_CIMOS_eComStation = 110 +- // no new types added with CIM 2.26.0 ++ CIMOSType_CIMOS_Unknown = 0, ++ CIMOSType_CIMOS_Other = 1, ++ CIMOSType_CIMOS_Other_64 = 2, ++ CIMOSType_CIMOS_gNewSense = 3, ++ CIMOSType_CIMOS_gNewSense_64 = 4, ++ CIMOSType_CIMOS_Dragora = 5, ++ CIMOSType_CIMOS_Dragora_64 = 6, ++ CIMOSType_CIMOS_Musix = 7, ++ CIMOSType_CIMOS_Musix_64 = 8, ++ CIMOSType_CIMOS_Trisquel = 9, ++ CIMOSType_CIMOS_Trisquel_64 = 10, ++ CIMOSType_CIMOS_Dynebolic = 11, ++ CIMOSType_CIMOS_Venenux = 12, ++ CIMOSType_CIMOS_GNU = 13, ++ CIMOSType_CIMOS_GNU_64 = 14, ++ CIMOSType_CIMOS_GNUHurd = 15, ++ CIMOSType_CIMOS_GNULinux = 16, ++ CIMOSType_CIMOS_GNULinux_64 = 17 + }; + + +--- VirtualBox-4.1.18.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c 2012-06-20 10:09:01.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c 2012-07-26 15:32:55.309812685 -0300 +@@ -622,16 +622,16 @@ + * Call the common device extension initializer. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_AMD64) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26_x64; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux_x64; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_X86) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_AMD64) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24_x64; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux_x64; + #else + # warning "huh? which arch + version is this?" +- VBOXOSTYPE enmOsType = VBOXOSTYPE_Linux; ++ VBOXOSTYPE enmOsType = VBOXOSTYPE_GNULinux; + #endif + rc = VBoxGuestInitDevExt(&g_DevExt, + g_IOPortBase, diff --git a/libre/virtualbox-libre-modules-lts/libre.patch b/libre/virtualbox-libre-modules-lts/libre.patch new file mode 100644 index 000000000..e51d0c0a7 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/libre.patch @@ -0,0 +1,5765 @@ +--- VirtualBox-4.1.18.orig/Config.kmk 2012-07-24 16:38:43.981310996 -0300 ++++ VirtualBox-4.1.18/Config.kmk 2012-07-24 16:38:44.001309865 -0300 +@@ -56,9 +56,6 @@ + PROPS_SYSMODS_ACCUMULATE_L += INTERMEDIATES + PROPS_MISCBINS_ACCUMULATE_L += INTERMEDIATES + +-# Misc names used bye the install paths below. +-VBOX_PUEL_MANGLED_NAME := Oracle_VM_VirtualBox_Extension_Pack +- + # Install paths + ## @todo This will change after 4.1 is branched off! + # What is now 'bin' and 'lib' will be moved down under 'staged/', except on +@@ -125,9 +122,6 @@ + endif + + INST_DOC = doc/ +-INST_EXTPACK = $(INST_BIN)ExtensionPacks/ +-INST_EXTPACK_CERTS = $(INST_BIN)ExtPackCertificates/ +-INST_EXTPACK_PUEL = $(INST_EXTPACK)$(VBOX_PUEL_MANGLED_NAME)/ + INST_PACKAGES = packages/ + + VBOX_PATH_SDK = $(patsubst %/,%,$(PATH_STAGE)/$(INST_SDK)) +@@ -136,7 +130,6 @@ + VBOX_PATH_ADDITIONS = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS)) + VBOX_PATH_ADDITIONS_ISO = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_ISO)) + VBOX_PATH_ADDITIONS_LIB = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_LIB)) +-VBOX_PATH_EXTPACK_PUEL= $(patsubst %/,%,$(PATH_STAGE)/$(INST_EXTPACK_PUEL)) + VBOX_PATH_PACKAGES = $(patsubst %/,%,$(PATH_STAGE)/$(INST_PACKAGES)) + + +@@ -208,7 +201,6 @@ + export VBOX_ADDITIONS_SH_MODE = release + export VBOX_DOCUMENTATION_SH_MODE = release + export VBOX_EFI_SH_MODE = release +- export VBOX_EXTPACKS_SH_MODE = release + endif + + # Some info on the vendor +@@ -361,8 +353,6 @@ + VBOX_WITH_USB = 1 + # Enable the USB 1.1 controller plus virtual USB HID devices. + VBOX_WITH_VUSB = 1 +-# Enable the USB 2.0 controller. +-VBOX_WITH_EHCI = 1 + # Enable the ISCSI feature. + VBOX_WITH_ISCSI = 1 + # Enable INIP support in the ISCSI feature. +@@ -430,9 +420,6 @@ + ifdef VBOX_WITH_USB + VBOX_WITH_VUSB = 1 + endif +-ifdef VBOX_WITH_EHCI +- VBOX_WITH_EHCI_IMPL = 1 +-endif + ifdef VBOX_WITH_PCI_PASSTHROUGH + VBOX_WITH_PCI_PASSTHROUGH_IMPL = 1 + endif +@@ -591,15 +578,6 @@ + ## @} + + +-## @name Extension pack +-## @{ +-# Enables the extension pack feature. +-VBOX_WITH_EXTPACK = 1 +-# Enables separating code into the Oracle VM VirtualBox Extension Pack, dubbed PUEL. +-VBOX_WITH_EXTPACK_PUEL = 1 +-# Enables building+packing the Oracle VM VirtualBox Extension Pack, includes VBOX_WITH_EXTPACK_PUEL +-VBOX_WITH_EXTPACK_PUEL_BUILD = 1 +-## @} + + ## @name Misc + ## @{ +@@ -777,14 +755,6 @@ + # Skip stuff. + # + +-ifdef VBOX_ONLY_EXTPACKS +- # Clear some VBOX_WITH_XXX variables instead of adding ifdefs all over the place. +- VBOX_WITH_DEBUGGER = +- VBOX_WITH_ADDITIONS = +- VBOX_WITH_VBOXDRV = +- VBOX_WITH_TESTCASES = +-endif +- + # VBOX_QUICK can be used by core developers to speed to the build + ifdef VBOX_QUICK + # undefine variables by assigning blank. +@@ -848,7 +818,6 @@ + VBOX_WITH_TESTSUITE= + VBOX_WITH_QTGUI= + VBOX_WITH_USB= +- VBOX_WITH_EHCI= + VBOX_WITH_DOCS= + VBOX_WITH_PDM_ASYNC_COMPLETION= + VBOX_WITH_KCHMVIEWER= +@@ -870,7 +839,6 @@ + VBOX_WITH_CROGL= + VBOX_WITH_DEBUGGER= + VBOX_WITH_DOCS= +- VBOX_WITH_EHCI= + VBOX_WITH_HARDENING= + VBOX_WITH_HEADLESS= + VBOX_WITH_HGCM= +@@ -952,9 +920,6 @@ + # + ifdef VBOX_OSE + VBOX_WITH_VRDP= +- VBOX_WITH_EHCI_IMPL= +- VBOX_WITH_EXTPACK_PUEL= +- VBOX_WITH_EXTPACK_PUEL_BUILD= + VBOX_WITH_PCI_PASSTHROUGH_IMPL= + VBOX_WITH_OS2_ADDITIONS_BIN= + VBOX_WITH_SECURELABEL= +@@ -1082,10 +1047,6 @@ + VBOX_WITH_KCHMVIEWER= + endif + +-ifdef VBOX_WITH_EXTPACK_PUEL_BUILD +- VBOX_WITH_EXTPACK_PUEL = 1 +-endif +- + # + # Mark OSE builds clearly, helps figuring out limitations more easily. + # +@@ -1679,9 +1640,6 @@ + # biossums (set BIOS checksums) + VBOX_BIOSSUMS ?= $(PATH_OBJ)/biossums/biossums$(HOSTSUFF_EXE) + +-# RTManifest (extension pack manifest utility) +-VBOX_RTMANIFEST ?= $(PATH_OBJ)/bldRTManifest/bldRTManifest$(HOSTSUFF_EXE) +- + # filesplitter (splits java files) + VBOX_FILESPLIT ?= $(PATH_OBJ)/filesplitter/filesplitter$(HOSTSUFF_EXE) + +@@ -2461,13 +2419,6 @@ + SDK_VBOX_OPENSSL2_LIBS = $(NO_SUCH_VARIABLE) + endif + +-SDK_VBoxOpenSslExtPack = Internal use only. +-SDK_VBoxOpenSslExtPack_INCS = $(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS) +-SDK_VBoxOpenSslExtPack_ORDERDEPS = $(crypto-headers_1_TARGET) +-SDK_VBoxOpenSslExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VBoxExtPack-libssl$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VBoxExtPack-libcrypto$(VBOX_SUFF_LIB) +- + SDK_VBOX_BLD_OPENSSL = . + SDK_VBOX_BLD_OPENSSL_EXTENDS = VBOX_OPENSSL + SDK_VBOX_BLD_OPENSSL_LIBS ?= \ +@@ -3817,100 +3768,6 @@ + endif + TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS.darwin = $(filter-out -bind_at_load,$(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS.darwin)) + +- +- +-# +-# Templates used for building the extension packs. +-# +-ifdef VBOX_WITH_EXTPACK +- # Base templates (native or portable). +- TEMPLATE_VBoxR3ExtPack = For the ring-3 context extension pack modules. +- if 1 # Native for now. +- TEMPLATE_VBoxR3ExtPack_EXTENDS = VBOXR3DLLNOXCPT +- TEMPLATE_VBoxR3ExtPack_DEFS = $(TEMPLATE_VBOXR3DLLNOXCPT_DEFS) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 +- else +- TEMPLATE_VBoxR3ExtPack_EXTENDS = VBOXNOCRTGCC +- TEMPLATE_VBoxR3ExtPack_DEFS = $(TEMPLATE_VBOXNOCRTGCC_DEFS) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 IPRT_NO_CRT IN_RING3 +- TEMPLATE_VBoxR3ExtPack_INCS = $(PATH_ROOT)/include/iprt/nocrt $(TEMPLATE_VBOXR3DLLNOXCPT_INCS) +- endif +- ifneq ($(KBUILD_TARGET),win) +- TEMPLATE_VBoxR3ExtPack_CXXFLAGS = $(TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS) -fno-rtti +- endif +- TEMPLATE_VBoxR3ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- ifeq ($(KBUILD_TARGET),linux) +- TEMPLATE_VBoxR3ExtPack_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS)) +- else +- if !defined(VBOX_WITH_RUNPATH) && defined(VBOX_WITH_RELATIVE_RUNPATH) +- TEMPLATE_VBoxR3ExtPack_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/../../..' $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS)) +- endif +- endif +- ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- if1of ($(KBUILD_TARGET), win os2) +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(PATH_STAGE_LIB)/VMMR3Imp$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VBoxRTImp$(VBOX_SUFF_LIB) +- else +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(PATH_STAGE_LIB)/VMMR3Imp$(VBOX_SUFF_DLL) \ +- $(PATH_STAGE_LIB)/VBoxRTImp$(VBOX_SUFF_DLL) +- endif +- else +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(LIB_RUNTIME) \ +- $(LIB_VMM) +- endif +- +- TEMPLATE_VBoxR0ExtPack = For the ring-0 context extension pack modules. +- TEMPLATE_VBoxR0ExtPack_EXTENDS = VBoxR0 +- TEMPLATE_VBoxR0ExtPack_EXTENDS_BY = appending +- TEMPLATE_VBoxR0ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- TEMPLATE_VBoxR0ExtPack_DEFS = VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R0 +- if1of ($(VBOX_LDR_FMT), pe lx) +- TEMPLATE_VBoxR0ExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VMMR0Imp$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/SUPR0$(VBOX_SUFF_LIB) +- endif +- +- TEMPLATE_VBoxRcExtPack = For the raw-mode context extension pack modules. +- TEMPLATE_VBoxRcExtPack_EXTENDS = VBoxRc +- TEMPLATE_VBoxRcExtPack_EXTENDS_BY = appending +- TEMPLATE_VBoxRcExtPack_SYSSUFF = .rc +- TEMPLATE_VBoxRcExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- TEMPLATE_VBoxRcExtPack_DEFS = VBOX_IN_EXTPACK VBOX_IN_EXTPACK_RC +- if1of ($(VBOX_LDR_FMT32), pe lx) +- TEMPLATE_VBoxRcExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VMMRCImp$(VBOX_SUFF_LIB) +- endif +- +- TEMPLATE_VBoxInsExtPack = For the install targets of an extension pack. +- TEMPLATE_VBoxInsExtPack_MODE = 0644 +- TEMPLATE_VBoxInsExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- +- # For each individual extension pack +- ifdef VBOX_WITH_EXTPACK_PUEL +- TEMPLATE_VBoxR3ExtPackPuel = For the ring-3 context modules in the PUEL extension pack. +- TEMPLATE_VBoxR3ExtPackPuel_EXTENDS = VBoxR3ExtPack +- TEMPLATE_VBoxR3ExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxR0ExtPackPuel = For the ring-0 context modules in the PUEL extension pack. +- TEMPLATE_VBoxR0ExtPackPuel_EXTENDS = VBoxR0ExtPack +- TEMPLATE_VBoxR0ExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxRcExtPackPuel = For the raw-mode context modules in the PUEL extension pack. +- TEMPLATE_VBoxRcExtPackPuel_EXTENDS = VBoxRcExtPack +- TEMPLATE_VBoxRcExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxInsExtPackPuel = For the install targets of an extension pack. +- TEMPLATE_VBoxInsExtPackPuel_EXTENDS = VBoxR0ExtPack +- TEMPLATE_VBoxInsExtPackPuel_INST = $(INST_EXTPACK_PUEL) +-endif +-endif # VBOX_WITH_EXTPACK +- +- + # + # Qt 4 + # Qt 4 +--- VirtualBox-4.1.18.orig/Makefile.kmk 2012-07-24 17:16:47.078929150 -0300 ++++ VirtualBox-4.1.18/Makefile.kmk 2012-07-24 17:16:47.125592981 -0300 +@@ -446,7 +446,6 @@ + include/VBox \ + include/VBox/vmm \ + include/VBox/com \ +- include/VBox/ExtPack \ + include/VBox/HostServices \ + include/VBox/GuestHost \ + include/VBox/HGSMI \ +@@ -862,191 +861,6 @@ + additions-build-linux.x86.combined \ + additions-packing + +- +-# +-# Build the extension packs, all of them. +-# +-# This is tailored (hardcoded) for the extension pack build box. +-# +-# The fetching must be done in serial fashion, while the building should be +-# more flexible wrt to -jN. +-# +-extpacks-fetch: +- + $(KMK) -C tools fetch VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=darwin BUILD_TARGET_ARCH=amd64 BUILD_TARGET=darwin VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=darwin BUILD_TARGET_ARCH=x86 BUILD_TARGET=darwin VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=freebsd BUILD_TARGET_ARCH=amd64 BUILD_TARGET=freebsd VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=freebsd BUILD_TARGET_ARCH=x86 BUILD_TARGET=freebsd VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=linux BUILD_TARGET_ARCH=amd64 BUILD_TARGET=linux VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=linux BUILD_TARGET_ARCH=x86 BUILD_TARGET=linux VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=os2 BUILD_TARGET_ARCH=x86 BUILD_TARGET=os2 VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=amd64 BUILD_TARGET=solaris VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=x86 BUILD_TARGET=solaris VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=win BUILD_TARGET_ARCH=amd64 BUILD_TARGET=win VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=win BUILD_TARGET_ARCH=x86 BUILD_TARGET=win VBOX_ONLY_EXTPACKS=1 +- +- +-extpacks-build: \ +- extpacks-build-win.amd64 \ +- extpacks-build-win.x86 \ +- extpacks-build-solaris.amd64 \ +- extpacks-build-solaris.x86 \ +- extpacks-build-os2.x86 \ +- extpacks-build-linux.amd64 \ +- extpacks-build-linux.x86 \ +- extpacks-build-darwin.amd64 \ +- extpacks-build-darwin.x86 \ +- extpacks-build-freebsd.amd64 \ +- extpacks-build-freebsd.x86 +- +-VBOX_EXTPACKS_BUILD.amd64 = VBOX_ONLY_EXTPACKS=1 \ +- KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \ +- KBUILD_TARGET_ARCH=amd64 BUILD_TARGET_ARCH=amd64 \ +- VBOX_SVN_REV=$(VBOX_SVN_REV) +- +-VBOX_EXTPACKS_BUILD.x86 = VBOX_ONLY_EXTPACKS=1 \ +- KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \ +- KBUILD_TARGET_ARCH=x86 BUILD_TARGET_ARCH=x86 \ +- VBOX_SVN_REV=$(VBOX_SVN_REV) +- +-# Automatically determine the extpack build subdir name. Used for figuring out +-# directory names inside the extension pack building VMs. +-VBOX_EXTPACKS_BUILD_SUBDIRNAME := $(lastword $(subst /, ,$(PATH_ROOT))) +- +-# When building in parallel on a Windows host, make sure we finish the host +-# bit before kicking off any UNIX guest or we'll run into file sharing issues. +-ifeq ($(KBUILD_TARGET),win) +-VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST = extpacks-build-win.x86 extpacks-build-win.amd64 +-else +-VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST = +-endif +- +-extpacks-build-win.amd64: +-ifeq ($(KBUILD_TARGET),win) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Windows/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.6 " echo $@ && cd e:/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-endif +- +-extpacks-build-win.x86: +-ifeq ($(KBUILD_TARGET),win) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Windows/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.16 " echo $@ && cd e:/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-endif +- +-ifeq ($(KBUILD_TARGET),solaris) +-extpacks-build-solaris.amd64: +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +- +-extpacks-build-solaris.x86: extpacks-build-solaris.amd64 +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) VBOX_WITH_COMBINED_SOLARIS_GUEST_PACKAGE=1 all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +- +-else +-# Serialize 32-bit and 64-bit ASSUMING the same VM builds both. +-extpacks-build-solaris.rsync-into-vm: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,solaris,*) . 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- +-extpacks-build-solaris.build-it: extpacks-build-solaris.rsync-into-vm +- $(call MSG_L1,Building Solaris/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.4 " echo $@/amd64 && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +- $(call MSG_L1,Building Solaris/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.4 " echo $@/x86 && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +- +-extpacks-build-solaris.rsync-out-of-vm: extpacks-build-solaris.build-it +- $(VBOX_KMK_TIME) rsync -a --delete 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/solaris.x86 out/ +- $(VBOX_KMK_TIME) rsync -a --delete 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/solaris.amd64 out/ +- +-.NOTPARALLEL: extpacks-build-solaris.rsync-out-of-vm extpacks-build-solaris.rsync-into-vm +-.PHONY: extpacks-build-solaris.rsync-out-of-vm extpacks-build-solaris.rsync-into-vm extpacks-build-solaris.build-it +- +-extpacks-build-solaris.amd64: extpacks-build-solaris.rsync-out-of-vm +-extpacks-build-solaris.x86: extpacks-build-solaris.rsync-out-of-vm +-endif +- +-extpacks-build-os2.x86: +-#ifeq ($(KBUILD_TARGET),os2) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.3 " cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) " +-#endif +- +-extpacks-build-linux.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.amd64) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Linux/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.12 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-endif +- +-extpacks-build-linux.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.x86) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Linux/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.11 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-endif +- +-extpacks-build-freebsd.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-#ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),freebsd.amd64) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(call MSG_L1,Building FreeBSD/amd64 extension packs) +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.17 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-#endif +- +-extpacks-build-freebsd.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-#ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),freebsd.x86) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(call MSG_L1,Building FreeBSD/x86 extension packs) +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.7 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-#endif +- +-extpacks-build-darwin.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.amd64) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Darwin/amd64 extension packs) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,darwin,amd64) . 192.168.27.15:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.15 " echo $@ && cd /Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +- $(VBOX_KMK_TIME) rsync -am -v --delete 192.168.27.15:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/darwin.amd64 out/ +-endif +- +-extpacks-build-darwin.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Darwin/x86 extension packs) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,darwin,x86) . 192.168.27.5:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.5 " echo $@ && cd /Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +- $(VBOX_KMK_TIME) rsync -am -v --delete 192.168.27.5:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/darwin.x86 out/ +-endif +- +- +-extpacks-packing: +- + $(KMK) VBOX_ONLY_EXTPACKS=1 \ +- VBOX_WITH_EXTPACK_OS_ARCHS="darwin.amd64 darwin.x86 linux.amd64 linux.x86 solaris.amd64 solaris.x86 win.amd64 win.x86" \ +- packing +-# +++ freebsd.amd64 freebsd.x86 os2.x86 ^^^ +- +-.PHONY: \ +- extpacks-build-win.x86 \ +- extpacks-build-win.amd64 \ +- extpacks-build-solaris.amd64 \ +- extpacks-build-solaris.x86 \ +- extpacks-build-os2.x86 \ +- extpacks-build-linux.amd64 \ +- extpacks-build-linux.x86 \ +- extpacks-build-freebsd.amd64 \ +- extpacks-build-freebsd.x86 \ +- extpacks-build-darwin.amd64 \ +- extpacks-build-darwin.x86 \ +- extpacks-packing +- +- + # + # Build the test suite, all of it. + # +--- VirtualBox-4.1.18.orig/src/VBox/Devices/build/VBoxDD.cpp 2012-06-20 10:15:51.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/build/VBoxDD.cpp 2012-07-24 16:18:03.964493454 -0300 +@@ -132,11 +132,6 @@ + if (RT_FAILURE(rc)) + return rc; + #endif +-#ifdef VBOX_WITH_EHCI_IMPL +- rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceEHCI); +- if (RT_FAILURE(rc)) +- return rc; +-#endif + #ifdef VBOX_ACPI + rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceACPI); + if (RT_FAILURE(rc)) +--- VirtualBox-4.1.18.orig/src/VBox/Devices/build/VBoxDD.h 2012-06-20 10:15:51.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/build/VBoxDD.h 2012-07-24 16:20:35.939205389 -0300 +@@ -62,7 +62,6 @@ + extern const PDMDEVREG g_DeviceICH6_HDA; + extern const PDMDEVREG g_DeviceAudioSniffer; + extern const PDMDEVREG g_DeviceOHCI; +-extern const PDMDEVREG g_DeviceEHCI; + extern const PDMDEVREG g_DeviceACPI; + extern const PDMDEVREG g_DeviceDMA; + extern const PDMDEVREG g_DeviceFloppyController; +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ExtPackManagerImpl.h 2012-06-20 10:17:33.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,245 +0,0 @@ +-/* $Id: ExtPackManagerImpl.h $ */ +-/** @file +- * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ____H_EXTPACKMANAGERIMPL +-#define ____H_EXTPACKMANAGERIMPL +- +-#include "VirtualBoxBase.h" +-#include <VBox/ExtPack/ExtPack.h> +-#include <iprt/fs.h> +- +-/** +- * An extension pack file. +- */ +-class ATL_NO_VTABLE ExtPackFile : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPackFile) +-{ +-public: +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPackFile, IExtPackFile) +- DECLARE_NOT_AGGREGATABLE(ExtPackFile) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPackFile) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPackFile) +- COM_INTERFACE_ENTRY(IExtPackBase) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPackFile) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initWithFile(const char *a_pszFile, const char *a_pszDigest, class ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPackBase interfaces +- * @{ */ +- STDMETHOD(COMGETTER(Name))(BSTR *a_pbstrName); +- STDMETHOD(COMGETTER(Description))(BSTR *a_pbstrDescription); +- STDMETHOD(COMGETTER(Version))(BSTR *a_pbstrVersion); +- STDMETHOD(COMGETTER(Revision))(ULONG *a_puRevision); +- STDMETHOD(COMGETTER(VRDEModule))(BSTR *a_pbstrVrdeModule); +- STDMETHOD(COMGETTER(PlugIns))(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)); +- STDMETHOD(COMGETTER(Usable))(BOOL *a_pfUsable); +- STDMETHOD(COMGETTER(WhyUnusable))(BSTR *a_pbstrWhy); +- STDMETHOD(COMGETTER(ShowLicense))(BOOL *a_pfShowIt); +- STDMETHOD(COMGETTER(License))(BSTR *a_pbstrHtmlLicense); +- STDMETHOD(QueryLicense)(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, +- IN_BSTR a_bstrFormat, BSTR *a_pbstrLicense); +- /** @} */ +- +- /** @name IExtPackFile interfaces +- * @{ */ +- STDMETHOD(COMGETTER(FilePath))(BSTR *a_pbstrPath); +- STDMETHOD(Install)(BOOL a_fReplace, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress); +- /** @} */ +- +-private: +- /** @name Misc init helpers +- * @{ */ +- HRESULT initFailed(const char *a_pszWhyFmt, ...); +- /** @} */ +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +- +- friend class ExtPackManager; +-}; +- +- +-/** +- * An installed extension pack. +- */ +-class ATL_NO_VTABLE ExtPack : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPack) +-{ +-public: +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPack, IExtPack) +- DECLARE_NOT_AGGREGATABLE(ExtPack) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPack) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPack) +- COM_INTERFACE_ENTRY(IExtPackBase) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPack) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPackBase interfaces +- * @{ */ +- STDMETHOD(COMGETTER(Name))(BSTR *a_pbstrName); +- STDMETHOD(COMGETTER(Description))(BSTR *a_pbstrDescription); +- STDMETHOD(COMGETTER(Version))(BSTR *a_pbstrVersion); +- STDMETHOD(COMGETTER(Revision))(ULONG *a_puRevision); +- STDMETHOD(COMGETTER(VRDEModule))(BSTR *a_pbstrVrdeModule); +- STDMETHOD(COMGETTER(PlugIns))(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)); +- STDMETHOD(COMGETTER(Usable))(BOOL *a_pfUsable); +- STDMETHOD(COMGETTER(WhyUnusable))(BSTR *a_pbstrWhy); +- STDMETHOD(COMGETTER(ShowLicense))(BOOL *a_pfShowIt); +- STDMETHOD(COMGETTER(License))(BSTR *a_pbstrHtmlLicense); +- STDMETHOD(QueryLicense)(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, +- IN_BSTR a_bstrFormat, BSTR *a_pbstrLicense); +- /** @} */ +- +- /** @name IExtPack interfaces +- * @{ */ +- STDMETHOD(QueryObject)(IN_BSTR a_bstrObjectId, IUnknown **a_ppUnknown); +- /** @} */ +- +- /** @name Internal interfaces used by ExtPackManager. +- * @{ */ +- bool callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo); +- HRESULT callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval); +- bool callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock); +- bool callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock); +- bool callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock); +- bool callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc); +- bool callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc); +- bool callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock); +- HRESULT checkVrde(void); +- HRESULT getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary); +- bool wantsToBeDefaultVrde(void) const; +- HRESULT refresh(bool *pfCanDelete); +- /** @} */ +- +-protected: +- /** @name Internal helper methods. +- * @{ */ +- void probeAndLoad(void); +- bool findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind, +- Utf8Str *a_ppStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const; +- static bool objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2); +- /** @} */ +- +- /** @name Extension Pack Helpers +- * @{ */ +- static DECLCALLBACK(int) hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt, +- VBOXEXTPACKMODKIND enmKind, char *pszFound, size_t cbFound, bool *pfNative); +- static DECLCALLBACK(int) hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath); +- static DECLCALLBACK(VBOXEXTPACKCTX) hlpGetContext(PCVBOXEXTPACKHLP pHlp); +- static DECLCALLBACK(int) hlpReservedN(PCVBOXEXTPACKHLP pHlp); +- /** @} */ +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +- +- friend class ExtPackManager; +-}; +- +- +-/** +- * Extension pack manager. +- */ +-class ATL_NO_VTABLE ExtPackManager : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPackManager) +-{ +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPackManager, IExtPackManager) +- DECLARE_NOT_AGGREGATABLE(ExtPackManager) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPackManager) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPackManager) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPackManager) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPack interfaces +- * @{ */ +- STDMETHOD(COMGETTER(InstalledExtPacks))(ComSafeArrayOut(IExtPack *, a_paExtPacks)); +- STDMETHOD(Find)(IN_BSTR a_bstrName, IExtPack **a_pExtPack); +- STDMETHOD(OpenExtPackFile)(IN_BSTR a_bstrTarball, IExtPackFile **a_ppExtPackFile); +- STDMETHOD(Uninstall)(IN_BSTR a_bstrName, BOOL a_fForcedRemoval, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress); +- STDMETHOD(Cleanup)(void); +- STDMETHOD(QueryAllPlugInsForFrontend)(IN_BSTR a_bstrFrontend, ComSafeArrayOut(BSTR, a_pabstrPlugInModules)); +- STDMETHOD(IsExtPackUsable(IN_BSTR a_bstrExtPack, BOOL *aUsable)); +- /** @} */ +- +- /** @name Internal interfaces used by other Main classes. +- * @{ */ +- static DECLCALLBACK(int) doInstallThreadProc(RTTHREAD hThread, void *pvJob); +- HRESULT doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo); +- static DECLCALLBACK(int) doUninstallThreadProc(RTTHREAD hThread, void *pvJob); +- HRESULT doUninstall(const Utf8Str *a_pstrName, bool a_fForcedRemoval, const Utf8Str *a_pstrDisplayInfo); +- void callAllVirtualBoxReadyHooks(void); +- void callAllConsoleReadyHooks(IConsole *a_pConsole); +- void callAllVmCreatedHooks(IMachine *a_pMachine); +- int callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM); +- int callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM); +- void callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM); +- HRESULT checkVrdeExtPack(Utf8Str const *a_pstrExtPack); +- int getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary); +- HRESULT getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack); +- bool isExtPackUsable(const char *a_pszExtPack); +- void dumpAllToReleaseLog(void); +- /** @} */ +- +-private: +- HRESULT runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...); +- ExtPack *findExtPack(const char *a_pszName); +- void removeExtPack(const char *a_pszName); +- HRESULT refreshExtPack(const char *a_pszName, bool a_fUnsuableIsError, ExtPack **a_ppExtPack); +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +-}; +- +-#endif +-/* vi: set tabstop=4 shiftwidth=4 expandtab: */ +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ExtPackUtil.h 2012-06-20 10:17:33.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,137 +0,0 @@ +-/* $Id: ExtPackUtil.h $ */ +-/** @file +- * VirtualBox Main - Extension Pack Utilities and definitions, VBoxC, VBoxSVC, ++. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ____H_EXTPACKUTIL +-#define ____H_EXTPACKUTIL +- +-#include <iprt/cpp/ministring.h> +-#include <iprt/fs.h> +-#include <iprt/vfs.h> +- +- +-/** @name VBOX_EXTPACK_DESCRIPTION_NAME +- * The name of the description file in an extension pack. */ +-#define VBOX_EXTPACK_DESCRIPTION_NAME "ExtPack.xml" +-/** @name VBOX_EXTPACK_DESCRIPTION_NAME +- * The name of the manifest file in an extension pack. */ +-#define VBOX_EXTPACK_MANIFEST_NAME "ExtPack.manifest" +-/** @name VBOX_EXTPACK_SIGNATURE_NAME +- * The name of the signature file in an extension pack. */ +-#define VBOX_EXTPACK_SIGNATURE_NAME "ExtPack.signature" +-/** @name VBOX_EXTPACK_LICENSE_NAME_PREFIX +- * The name prefix of a license file in an extension pack. There can be +- * several license files in a pack, the variations being on locale, language +- * and format (HTML, RTF, plain text). All extension packages shall include +- * a */ +-#define VBOX_EXTPACK_LICENSE_NAME_PREFIX "ExtPack-license" +-/** @name VBOX_EXTPACK_SUFFIX +- * The suffix of a extension pack tarball. */ +-#define VBOX_EXTPACK_SUFFIX ".vbox-extpack" +- +-/** The minimum length (strlen) of a extension pack name. */ +-#define VBOX_EXTPACK_NAME_MIN_LEN 3 +-/** The max length (strlen) of a extension pack name. */ +-#define VBOX_EXTPACK_NAME_MAX_LEN 64 +- +-/** The architecture-dependent application data subdirectory where the +- * extension packs are installed. Relative to RTPathAppPrivateArch. */ +-#define VBOX_EXTPACK_INSTALL_DIR "ExtensionPacks" +-/** The architecture-independent application data subdirectory where the +- * certificates are installed. Relative to RTPathAppPrivateNoArch. */ +-#define VBOX_EXTPACK_CERT_DIR "ExtPackCertificates" +- +-/** The maximum entry name length. +- * Play short and safe. */ +-#define VBOX_EXTPACK_MAX_MEMBER_NAME_LENGTH 128 +- +- +-/** +- * Plug-in descriptor. +- */ +-typedef struct VBOXEXTPACKPLUGINDESC +-{ +- /** The name. */ +- RTCString strName; +- /** The module name. */ +- RTCString strModule; +- /** The description. */ +- RTCString strDescription; +- /** The frontend or component which it plugs into. */ +- RTCString strFrontend; +-} VBOXEXTPACKPLUGINDESC; +-/** Pointer to a plug-in descriptor. */ +-typedef VBOXEXTPACKPLUGINDESC *PVBOXEXTPACKPLUGINDESC; +- +-/** +- * Extension pack descriptor +- * +- * This is the internal representation of the ExtPack.xml. +- */ +-typedef struct VBOXEXTPACKDESC +-{ +- /** The name. */ +- RTCString strName; +- /** The description. */ +- RTCString strDescription; +- /** The version string. */ +- RTCString strVersion; +- /** The edition string. */ +- RTCString strEdition; +- /** The internal revision number. */ +- uint32_t uRevision; +- /** The name of the main module. */ +- RTCString strMainModule; +- /** The name of the VRDE module, empty if none. */ +- RTCString strVrdeModule; +- /** The number of plug-in descriptors. */ +- uint32_t cPlugIns; +- /** Pointer to an array of plug-in descriptors. */ +- PVBOXEXTPACKPLUGINDESC paPlugIns; +- /** Whether to show the license prior to installation. */ +- bool fShowLicense; +-} VBOXEXTPACKDESC; +- +-/** Pointer to a extension pack descriptor. */ +-typedef VBOXEXTPACKDESC *PVBOXEXTPACKDESC; +-/** Pointer to a const extension pack descriptor. */ +-typedef VBOXEXTPACKDESC const *PCVBOXEXTPACKDESC; +- +- +-void VBoxExtPackInitDesc(PVBOXEXTPACKDESC a_pExtPackDesc); +-RTCString *VBoxExtPackLoadDesc(const char *a_pszDir, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo); +-RTCString *VBoxExtPackLoadDescFromVfsFile(RTVFSFILE hVfsFile, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo); +-RTCString *VBoxExtPackExtractNameFromTarballPath(const char *pszTarball); +-void VBoxExtPackFreeDesc(PVBOXEXTPACKDESC a_pExtPackDesc); +-bool VBoxExtPackIsValidName(const char *pszName); +-bool VBoxExtPackIsValidMangledName(const char *pszMangledName, size_t cchMax = RTSTR_MAX); +-RTCString *VBoxExtPackMangleName(const char *pszName); +-RTCString *VBoxExtPackUnmangleName(const char *pszMangledName, size_t cbMax); +-int VBoxExtPackCalcDir(char *pszExtPackDir, size_t cbExtPackDir, const char *pszParentDir, const char *pszName); +-bool VBoxExtPackIsValidVersionString(const char *pszVersion); +-bool VBoxExtPackIsValidEditionString(const char *pszEdition); +-bool VBoxExtPackIsValidModuleString(const char *pszModule); +- +-int VBoxExtPackValidateMember(const char *pszName, RTVFSOBJTYPE enmType, RTVFSOBJ hVfsObj, char *pszError, size_t cbError); +-int VBoxExtPackOpenTarFss(RTFILE hTarballFile, char *pszError, size_t cbError, PRTVFSFSSTREAM phTarFss, PRTMANIFEST phFileManifest); +-int VBoxExtPackValidateTarball(RTFILE hTarballFile, const char *pszExtPackName, +- const char *pszTarball, const char *pszTarballDigest, +- char *pszError, size_t cbError, +- PRTMANIFEST phValidManifest, PRTVFSFILE phXmlFile, RTCString *pStrDigest); +- +- +-#endif +- +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/ExtPackManagerImpl.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,3126 +0,0 @@ +-/* $Id: ExtPackManagerImpl.cpp $ */ +-/** @file +- * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +- +-/******************************************************************************* +-* Header Files * +-*******************************************************************************/ +-#include "ExtPackManagerImpl.h" +-#include "ExtPackUtil.h" +- +-#include <iprt/buildconfig.h> +-#include <iprt/ctype.h> +-#include <iprt/dir.h> +-#include <iprt/env.h> +-#include <iprt/file.h> +-#include <iprt/ldr.h> +-#include <iprt/manifest.h> +-#include <iprt/param.h> +-#include <iprt/path.h> +-#include <iprt/pipe.h> +-#include <iprt/process.h> +-#include <iprt/string.h> +- +-#include <VBox/com/array.h> +-#include <VBox/com/ErrorInfo.h> +-#include <VBox/err.h> +-#include <VBox/log.h> +-#include <VBox/sup.h> +-#include <VBox/version.h> +-#include "AutoCaller.h" +-#include "Global.h" +-#include "ProgressImpl.h" +-#include "SystemPropertiesImpl.h" +-#include "VirtualBoxImpl.h" +- +- +-/******************************************************************************* +-* Defined Constants And Macros * +-*******************************************************************************/ +-/** @name VBOX_EXTPACK_HELPER_NAME +- * The name of the utility application we employ to install and uninstall the +- * extension packs. This is a set-uid-to-root binary on unixy platforms, which +- * is why it has to be a separate application. +- */ +-#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) +-# define VBOX_EXTPACK_HELPER_NAME "VBoxExtPackHelperApp.exe" +-#else +-# define VBOX_EXTPACK_HELPER_NAME "VBoxExtPackHelperApp" +-#endif +- +- +-/******************************************************************************* +-* Structures and Typedefs * +-*******************************************************************************/ +-struct ExtPackBaseData +-{ +-public: +- /** The extension pack descriptor (loaded from the XML, mostly). */ +- VBOXEXTPACKDESC Desc; +- /** The file system object info of the XML file. +- * This is for detecting changes and save time in refresh(). */ +- RTFSOBJINFO ObjInfoDesc; +- /** Whether it's usable or not. */ +- bool fUsable; +- /** Why it is unusable. */ +- Utf8Str strWhyUnusable; +-}; +- +-/** +- * Private extension pack data. +- */ +-struct ExtPackFile::Data : public ExtPackBaseData +-{ +-public: +- /** The path to the tarball. */ +- Utf8Str strExtPackFile; +- /** The SHA-256 hash of the file (as string). */ +- Utf8Str strDigest; +- /** The file handle of the extension pack file. */ +- RTFILE hExtPackFile; +- /** Our manifest for the tarball. */ +- RTMANIFEST hOurManifest; +- /** Pointer to the extension pack manager. */ +- ComObjPtr<ExtPackManager> ptrExtPackMgr; +- /** Pointer to the VirtualBox object so we can create a progress object. */ +- VirtualBox *pVirtualBox; +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** +- * Private extension pack data. +- */ +-struct ExtPack::Data : public ExtPackBaseData +-{ +-public: +- /** Where the extension pack is located. */ +- Utf8Str strExtPackPath; +- /** The file system object info of the extension pack directory. +- * This is for detecting changes and save time in refresh(). */ +- RTFSOBJINFO ObjInfoExtPack; +- /** The full path to the main module. */ +- Utf8Str strMainModPath; +- /** The file system object info of the main module. +- * This is used to determin whether to bother try reload it. */ +- RTFSOBJINFO ObjInfoMainMod; +- /** The module handle of the main extension pack module. */ +- RTLDRMOD hMainMod; +- +- /** The helper callbacks for the extension pack. */ +- VBOXEXTPACKHLP Hlp; +- /** Pointer back to the extension pack object (for Hlp methods). */ +- ExtPack *pThis; +- /** The extension pack registration structure. */ +- PCVBOXEXTPACKREG pReg; +- /** The current context. */ +- VBOXEXTPACKCTX enmContext; +- /** Set if we've made the pfnVirtualBoxReady or pfnConsoleReady call. */ +- bool fMadeReadyCall; +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** List of extension packs. */ +-typedef std::list< ComObjPtr<ExtPack> > ExtPackList; +- +-/** +- * Private extension pack manager data. +- */ +-struct ExtPackManager::Data +-{ +- /** The directory where the extension packs are installed. */ +- Utf8Str strBaseDir; +- /** The directory where the certificates this installation recognizes are +- * stored. */ +- Utf8Str strCertificatDirPath; +- /** The list of installed extension packs. */ +- ExtPackList llInstalledExtPacks; +- /** Pointer to the VirtualBox object, our parent. */ +- VirtualBox *pVirtualBox; +- /** The current context. */ +- VBOXEXTPACKCTX enmContext; +-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_DARWIN) +- /** File handle for the VBoxVMM libary which we slurp because ExtPacks depend on it. */ +- RTLDRMOD hVBoxVMM; +-#endif +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** +- * Extension pack installation job. +- */ +-typedef struct EXTPACKINSTALLJOB +-{ +- /** Smart pointer to the extension pack file. */ +- ComPtr<ExtPackFile> ptrExtPackFile; +- /** The replace argument. */ +- bool fReplace; +- /** The display info argument. */ +- Utf8Str strDisplayInfo; +- /** Smart pointer to the extension manager. */ +- ComPtr<ExtPackManager> ptrExtPackMgr; +- /** Smart pointer to the progress object for this job. */ +- ComObjPtr<Progress> ptrProgress; +-} EXTPACKINSTALLJOB; +-/** Pointer to an extension pack installation job. */ +-typedef EXTPACKINSTALLJOB *PEXTPACKINSTALLJOB; +- +-/** +- * Extension pack uninstallation job. +- */ +-typedef struct EXTPACKUNINSTALLJOB +-{ +- /** Smart pointer to the extension manager. */ +- ComPtr<ExtPackManager> ptrExtPackMgr; +- /** The name of the extension pack. */ +- Utf8Str strName; +- /** The replace argument. */ +- bool fForcedRemoval; +- /** The display info argument. */ +- Utf8Str strDisplayInfo; +- /** Smart pointer to the progress object for this job. */ +- ComObjPtr<Progress> ptrProgress; +-} EXTPACKUNINSTALLJOB; +-/** Pointer to an extension pack uninstallation job. */ +-typedef EXTPACKUNINSTALLJOB *PEXTPACKUNINSTALLJOB; +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPackFile) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in initWithDir(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPackFile::FinalConstruct() +-{ +- m = NULL; +- return BaseFinalConstruct(); +-} +- +-/** +- * Initializes the extension pack by reading its file. +- * +- * @returns COM status code. +- * @param a_pszFile The path to the extension pack file. +- * @param a_pszDigest The SHA-256 digest of the file. Or an empty string. +- * @param a_pExtPackMgr Pointer to the extension pack manager. +- * @param a_pVirtualBox Pointer to the VirtualBox object. +- */ +-HRESULT ExtPackFile::initWithFile(const char *a_pszFile, const char *a_pszDigest, ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- /* +- * Allocate + initialize our private data. +- */ +- m = new ExtPackFile::Data; +- VBoxExtPackInitDesc(&m->Desc); +- RT_ZERO(m->ObjInfoDesc); +- m->fUsable = false; +- m->strWhyUnusable = tr("ExtPack::init failed"); +- m->strExtPackFile = a_pszFile; +- m->strDigest = a_pszDigest; +- m->hExtPackFile = NIL_RTFILE; +- m->hOurManifest = NIL_RTMANIFEST; +- m->ptrExtPackMgr = a_pExtPackMgr; +- m->pVirtualBox = a_pVirtualBox; +- +- RTCString *pstrTarName = VBoxExtPackExtractNameFromTarballPath(a_pszFile); +- if (pstrTarName) +- { +- m->Desc.strName = *pstrTarName; +- delete pstrTarName; +- pstrTarName = NULL; +- } +- +- autoInitSpan.setSucceeded(); +- +- /* +- * Try open the extension pack and check that it is a regular file. +- */ +- int vrc = RTFileOpen(&m->hExtPackFile, a_pszFile, +- RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN); +- if (RT_FAILURE(vrc)) +- { +- if (vrc == VERR_FILE_NOT_FOUND || vrc == VERR_PATH_NOT_FOUND) +- return initFailed(tr("'%s' file not found"), a_pszFile); +- return initFailed(tr("RTFileOpen('%s',,) failed with %Rrc"), a_pszFile, vrc); +- } +- +- RTFSOBJINFO ObjInfo; +- vrc = RTFileQueryInfo(m->hExtPackFile, &ObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_FAILURE(vrc)) +- return initFailed(tr("RTFileQueryInfo failed with %Rrc on '%s'"), vrc, a_pszFile); +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- return initFailed(tr("Not a regular file: %s"), a_pszFile); +- +- /* +- * Validate the tarball and extract the XML file. +- */ +- char szError[8192]; +- RTVFSFILE hXmlFile; +- vrc = VBoxExtPackValidateTarball(m->hExtPackFile, NULL /*pszExtPackName*/, a_pszFile, a_pszDigest, +- szError, sizeof(szError), &m->hOurManifest, &hXmlFile, &m->strDigest); +- if (RT_FAILURE(vrc)) +- return initFailed(tr("%s"), szError); +- +- /* +- * Parse the XML. +- */ +- RTCString strSavedName(m->Desc.strName); +- RTCString *pStrLoadErr = VBoxExtPackLoadDescFromVfsFile(hXmlFile, &m->Desc, &m->ObjInfoDesc); +- RTVfsFileRelease(hXmlFile); +- if (pStrLoadErr != NULL) +- { +- m->strWhyUnusable.printf(tr("Failed to the xml file: %s"), pStrLoadErr->c_str()); +- m->Desc.strName = strSavedName; +- delete pStrLoadErr; +- return S_OK; +- } +- +- /* +- * Match the tarball name with the name from the XML. +- */ +- /** @todo drop this restriction after the old install interface is +- * dropped. */ +- if (!strSavedName.equalsIgnoreCase(m->Desc.strName)) +- return initFailed(tr("Extension pack name mismatch between the downloaded file and the XML inside it (xml='%s' file='%s')"), +- m->Desc.strName.c_str(), strSavedName.c_str()); +- +- m->fUsable = true; +- m->strWhyUnusable.setNull(); +- return S_OK; +-} +- +-/** +- * Protected helper that formats the strWhyUnusable value. +- * +- * @returns S_OK +- * @param a_pszWhyFmt Why it failed, format string. +- * @param ... The format arguments. +- */ +-HRESULT ExtPackFile::initFailed(const char *a_pszWhyFmt, ...) +-{ +- va_list va; +- va_start(va, a_pszWhyFmt); +- m->strWhyUnusable.printfV(a_pszWhyFmt, va); +- va_end(va); +- return S_OK; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPackFile::FinalRelease() +-{ +- uninit(); +- BaseFinalRelease(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPackFile::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- VBoxExtPackFreeDesc(&m->Desc); +- RTFileClose(m->hExtPackFile); +- m->hExtPackFile = NIL_RTFILE; +- RTManifestRelease(m->hOurManifest); +- m->hOurManifest = NIL_RTMANIFEST; +- +- delete m; +- m = NULL; +- } +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Name)(BSTR *a_pbstrName) +-{ +- CheckComArgOutPointerValid(a_pbstrName); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strName); +- str.cloneTo(a_pbstrName); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Description)(BSTR *a_pbstrDescription) +-{ +- CheckComArgOutPointerValid(a_pbstrDescription); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strDescription); +- str.cloneTo(a_pbstrDescription); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Version)(BSTR *a_pbstrVersion) +-{ +- CheckComArgOutPointerValid(a_pbstrVersion); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* HACK ALERT: This is for easing backporting to 4.1. The edition stuff +- will be changed into a separate */ +- if (m->Desc.strEdition.isEmpty()) +- { +- Bstr str(m->Desc.strVersion); +- str.cloneTo(a_pbstrVersion); +- } +- else +- { +- RTCString strHack(m->Desc.strVersion); +- strHack.append('-'); +- strHack.append(m->Desc.strEdition); +- +- Bstr str(strHack); +- str.cloneTo(a_pbstrVersion); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Revision)(ULONG *a_puRevision) +-{ +- CheckComArgOutPointerValid(a_puRevision); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_puRevision = m->Desc.uRevision; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(VRDEModule)(BSTR *a_pbstrVrdeModule) +-{ +- CheckComArgOutPointerValid(a_pbstrVrdeModule); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strVrdeModule); +- str.cloneTo(a_pbstrVrdeModule); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(PlugIns)(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)) +-{ +- /** @todo implement plug-ins. */ +-#ifdef VBOX_WITH_XPCOM +- NOREF(a_paPlugIns); +- NOREF(a_paPlugInsSize); +-#endif +- ReturnComNotImplemented(); +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Usable)(BOOL *a_pfUsable) +-{ +- CheckComArgOutPointerValid(a_pfUsable); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfUsable = m->fUsable; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(WhyUnusable)(BSTR *a_pbstrWhy) +-{ +- CheckComArgOutPointerValid(a_pbstrWhy); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strWhyUnusable.cloneTo(a_pbstrWhy); +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(ShowLicense)(BOOL *a_pfShowIt) +-{ +- CheckComArgOutPointerValid(a_pfShowIt); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfShowIt = m->Desc.fShowLicense; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(License)(BSTR *a_pbstrHtmlLicense) +-{ +- Bstr bstrHtml("html"); +- return QueryLicense(Bstr::Empty.raw(), Bstr::Empty.raw(), bstrHtml.raw(), a_pbstrHtmlLicense); +-} +- +-/* Same as ExtPack::QueryLicense, should really explore the subject of base classes here... */ +-STDMETHODIMP ExtPackFile::QueryLicense(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, IN_BSTR a_bstrFormat, +- BSTR *a_pbstrLicense) +-{ +- /* +- * Validate input. +- */ +- CheckComArgOutPointerValid(a_pbstrLicense); +- CheckComArgNotNull(a_bstrPreferredLocale); +- CheckComArgNotNull(a_bstrPreferredLanguage); +- CheckComArgNotNull(a_bstrFormat); +- +- Utf8Str strPreferredLocale(a_bstrPreferredLocale); +- if (strPreferredLocale.length() != 2 && strPreferredLocale.length() != 0) +- return setError(E_FAIL, tr("The preferred locale is a two character string or empty.")); +- +- Utf8Str strPreferredLanguage(a_bstrPreferredLanguage); +- if (strPreferredLanguage.length() != 2 && strPreferredLanguage.length() != 0) +- return setError(E_FAIL, tr("The preferred lanuage is a two character string or empty.")); +- +- Utf8Str strFormat(a_bstrFormat); +- if ( !strFormat.equals("html") +- && !strFormat.equals("rtf") +- && !strFormat.equals("txt")) +- return setError(E_FAIL, tr("The license format can only have the values 'html', 'rtf' and 'txt'.")); +- +- /* +- * Combine the options to form a file name before locking down anything. +- */ +- char szName[sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX "-de_DE.html") + 2]; +- if (strPreferredLocale.isNotEmpty() && strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s_%s.%s", +- strPreferredLocale.c_str(), strPreferredLanguage.c_str(), strFormat.c_str()); +- else if (strPreferredLocale.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else if (strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-_%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX ".%s", strFormat.c_str()); +- +- /* +- * Lock the extension pack. We need a write lock here as there must not be +- * concurrent accesses to the tar file handle. +- */ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Do not permit this query on a pack that isn't considered usable (could +- * be marked so because of bad license files). +- */ +- if (!m->fUsable) +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- else +- { +- /* +- * Look it up in the manifest before scanning the tarball for it +- */ +- if (RTManifestEntryExists(m->hOurManifest, szName)) +- { +- RTVFSFSSTREAM hTarFss; +- char szError[8192]; +- int vrc = VBoxExtPackOpenTarFss(m->hExtPackFile, szError, sizeof(szError), &hTarFss, NULL); +- if (RT_SUCCESS(vrc)) +- { +- for (;;) +- { +- /* Get the first/next. */ +- char *pszName; +- RTVFSOBJ hVfsObj; +- RTVFSOBJTYPE enmType; +- vrc = RTVfsFsStrmNext(hTarFss, &pszName, &enmType, &hVfsObj); +- if (RT_FAILURE(vrc)) +- { +- if (vrc != VERR_EOF) +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTVfsFsStrmNext failed: %Rrc"), vrc); +- else +- hrc = setError(E_UNEXPECTED, tr("'%s' was found in the manifest but not in the tarball"), szName); +- break; +- } +- +- /* Is this it? */ +- const char *pszAdjName = pszName[0] == '.' && pszName[1] == '/' ? &pszName[2] : pszName; +- if ( !strcmp(pszAdjName, szName) +- && ( enmType == RTVFSOBJTYPE_IO_STREAM +- || enmType == RTVFSOBJTYPE_FILE)) +- { +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(hVfsObj); +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- +- /* Load the file into memory. */ +- RTFSOBJINFO ObjInfo; +- vrc = RTVfsIoStrmQueryInfo(hVfsIos, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(vrc)) +- { +- size_t cbFile = (size_t)ObjInfo.cbObject; +- void *pvFile = RTMemAllocZ(cbFile + 1); +- if (pvFile) +- { +- vrc = RTVfsIoStrmRead(hVfsIos, pvFile, cbFile, true /*fBlocking*/, NULL); +- if (RT_SUCCESS(vrc)) +- { +- /* try translate it into a string we can return. */ +- Bstr bstrLicense((const char *)pvFile, cbFile); +- if (bstrLicense.isNotEmpty()) +- { +- bstrLicense.detachTo(a_pbstrLicense); +- hrc = S_OK; +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, +- tr("The license file '%s' is empty or contains invalid UTF-8 encoding"), +- szName); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("Failed to read '%s': %Rrc"), szName, vrc); +- RTMemFree(pvFile); +- } +- else +- hrc = setError(E_OUTOFMEMORY, tr("Failed to allocate %zu bytes for '%s'"), cbFile, szName); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTVfsIoStrmQueryInfo on '%s': %Rrc"), szName, vrc); +- RTVfsIoStrmRelease(hVfsIos); +- break; +- } +- +- /* Release current. */ +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- } +- RTVfsFsStrmRelease(hTarFss); +- } +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("%s"), szError); +- } +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("The license file '%s' was not found in '%s'"), +- szName, m->strExtPackFile.c_str()); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(FilePath)(BSTR *a_pbstrPath) +-{ +- CheckComArgOutPointerValid(a_pbstrPath); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strExtPackFile.cloneTo(a_pbstrPath); +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::Install(BOOL a_fReplace, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress) +-{ +- if (a_ppProgress) +- *a_ppProgress = NULL; +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- if (m->fUsable) +- { +- PEXTPACKINSTALLJOB pJob = NULL; +- try +- { +- pJob = new EXTPACKINSTALLJOB; +- pJob->ptrExtPackFile = this; +- pJob->fReplace = a_fReplace != FALSE; +- pJob->strDisplayInfo = a_bstrDisplayInfo; +- pJob->ptrExtPackMgr = m->ptrExtPackMgr; +- hrc = pJob->ptrProgress.createObject(); +- if (SUCCEEDED(hrc)) +- { +- Bstr bstrDescription = tr("Installing extension pack"); +- hrc = pJob->ptrProgress->init( +-#ifndef VBOX_COM_INPROC +- m->pVirtualBox, +-#endif +- static_cast<IExtPackFile *>(this), +- bstrDescription.raw(), +- FALSE /*aCancelable*/, +- NULL /*aId*/); +- } +- if (SUCCEEDED(hrc)) +- { +- ComPtr<Progress> ptrProgress = pJob->ptrProgress; +- int vrc = RTThreadCreate(NULL /*phThread*/, ExtPackManager::doInstallThreadProc, pJob, 0, +- RTTHREADTYPE_DEFAULT, 0 /*fFlags*/, "ExtPackInst"); +- if (RT_SUCCESS(vrc)) +- { +- pJob = NULL; /* the thread deletes it */ +- ptrProgress.queryInterfaceTo(a_ppProgress); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTThreadCreate failed with %Rrc"), vrc); +- } +- } +- catch (std::bad_alloc) +- { +- hrc = E_OUTOFMEMORY; +- } +- if (pJob) +- delete pJob; +- } +- else +- hrc = setError(E_FAIL, "%s", m->strWhyUnusable.c_str()); +- } +- return hrc; +-} +- +- +- +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPack) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in initWithDir(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPack::FinalConstruct() +-{ +- m = NULL; +- return S_OK; +-} +- +-/** +- * Initializes the extension pack by reading its file. +- * +- * @returns COM status code. +- * @param a_enmContext The context we're in. +- * @param a_pszName The name of the extension pack. This is also the +- * name of the subdirector under @a a_pszParentDir +- * where the extension pack is installed. +- * @param a_pszDir The extension pack directory name. +- */ +-HRESULT ExtPack::initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- static const VBOXEXTPACKHLP s_HlpTmpl = +- { +- /* u32Version = */ VBOXEXTPACKHLP_VERSION, +- /* uVBoxFullVersion = */ VBOX_FULL_VERSION, +- /* uVBoxVersionRevision = */ 0, +- /* u32Padding = */ 0, +- /* pszVBoxVersion = */ "", +- /* pfnFindModule = */ ExtPack::hlpFindModule, +- /* pfnGetFilePath = */ ExtPack::hlpGetFilePath, +- /* pfnGetContext = */ ExtPack::hlpGetContext, +- /* pfnReserved1 = */ ExtPack::hlpReservedN, +- /* pfnReserved2 = */ ExtPack::hlpReservedN, +- /* pfnReserved3 = */ ExtPack::hlpReservedN, +- /* pfnReserved4 = */ ExtPack::hlpReservedN, +- /* pfnReserved5 = */ ExtPack::hlpReservedN, +- /* pfnReserved6 = */ ExtPack::hlpReservedN, +- /* pfnReserved7 = */ ExtPack::hlpReservedN, +- /* pfnReserved8 = */ ExtPack::hlpReservedN, +- /* pfnReserved9 = */ ExtPack::hlpReservedN, +- /* u32EndMarker = */ VBOXEXTPACKHLP_VERSION +- }; +- +- /* +- * Allocate + initialize our private data. +- */ +- m = new Data; +- VBoxExtPackInitDesc(&m->Desc); +- m->Desc.strName = a_pszName; +- RT_ZERO(m->ObjInfoDesc); +- m->fUsable = false; +- m->strWhyUnusable = tr("ExtPack::init failed"); +- m->strExtPackPath = a_pszDir; +- RT_ZERO(m->ObjInfoExtPack); +- m->strMainModPath.setNull(); +- RT_ZERO(m->ObjInfoMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->Hlp = s_HlpTmpl; +- m->Hlp.pszVBoxVersion = RTBldCfgVersion(); +- m->Hlp.uVBoxInternalRevision = RTBldCfgRevision(); +- m->pThis = this; +- m->pReg = NULL; +- m->enmContext = a_enmContext; +- m->fMadeReadyCall = false; +- +- /* +- * Probe the extension pack (this code is shared with refresh()). +- */ +- probeAndLoad(); +- +- autoInitSpan.setSucceeded(); +- return S_OK; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPack::FinalRelease() +-{ +- uninit(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPack::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- if (m->hMainMod != NIL_RTLDRMOD) +- { +- AssertPtr(m->pReg); +- if (m->pReg->pfnUnload != NULL) +- m->pReg->pfnUnload(m->pReg); +- +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->pReg = NULL; +- } +- +- VBoxExtPackFreeDesc(&m->Desc); +- +- delete m; +- m = NULL; +- } +-} +- +- +-/** +- * Calls the installed hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pLock The write lock held by the caller. +- * @param pErrInfo Where to return error information. +- */ +-bool ExtPack::callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo) +-{ +- if ( m != NULL +- && m->hMainMod != NIL_RTLDRMOD) +- { +- if (m->pReg->pfnInstalled) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- pErrInfo->rc = m->pReg->pfnInstalled(m->pReg, a_pVirtualBox, pErrInfo); +- a_pLock->acquire(); +- return true; +- } +- } +- pErrInfo->rc = VINF_SUCCESS; +- return false; +-} +- +-/** +- * Calls the uninstall hook and closes the module. +- * +- * @returns S_OK or COM error status with error information. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_fForcedRemoval When set, we'll ignore complaints from the +- * uninstall hook. +- * @remarks The caller holds the manager's write lock, not released. +- */ +-HRESULT ExtPack::callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval) +-{ +- HRESULT hrc = S_OK; +- +- if ( m != NULL +- && m->hMainMod != NIL_RTLDRMOD) +- { +- if (m->pReg->pfnUninstall && !a_fForcedRemoval) +- { +- int vrc = m->pReg->pfnUninstall(m->pReg, a_pVirtualBox); +- if (RT_FAILURE(vrc)) +- { +- LogRel(("ExtPack pfnUninstall returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- if (!a_fForcedRemoval) +- hrc = setError(E_FAIL, tr("pfnUninstall returned %Rrc"), vrc); +- } +- } +- if (SUCCEEDED(hrc)) +- { +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->pReg = NULL; +- } +- } +- +- return hrc; +-} +- +-/** +- * Calls the pfnVirtualBoxReady hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable +- && !m->fMadeReadyCall) +- { +- m->fMadeReadyCall = true; +- if (m->pReg->pfnVirtualBoxReady) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVirtualBoxReady(m->pReg, a_pVirtualBox); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnConsoleReady hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The Console interface. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable +- && !m->fMadeReadyCall) +- { +- m->fMadeReadyCall = true; +- if (m->pReg->pfnConsoleReady) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnConsoleReady(m->pReg, a_pConsole); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMCreate hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pMachine The machine interface of the new VM. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMCreated) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVMCreated(m->pReg, a_pVirtualBox, a_pMachine); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMConfigureVMM hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- * @param a_pvrc Where to return the status code of the +- * callback. This is always set. LogRel is +- * called on if a failure status is returned. +- */ +-bool ExtPack::callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc) +-{ +- *a_pvrc = VINF_SUCCESS; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMConfigureVMM) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- int vrc = m->pReg->pfnVMConfigureVMM(m->pReg, a_pConsole, a_pVM); +- *a_pvrc = vrc; +- a_pLock->acquire(); +- if (RT_FAILURE(vrc)) +- LogRel(("ExtPack pfnVMConfigureVMM returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMPowerOn hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- * @param a_pvrc Where to return the status code of the +- * callback. This is always set. LogRel is +- * called on if a failure status is returned. +- */ +-bool ExtPack::callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc) +-{ +- *a_pvrc = VINF_SUCCESS; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMPowerOn) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- int vrc = m->pReg->pfnVMPowerOn(m->pReg, a_pConsole, a_pVM); +- *a_pvrc = vrc; +- a_pLock->acquire(); +- if (RT_FAILURE(vrc)) +- LogRel(("ExtPack pfnVMPowerOn returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMPowerOff hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMPowerOff) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVMPowerOff(m->pReg, a_pConsole, a_pVM); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Check if the extension pack is usable and has an VRDE module. +- * +- * @returns S_OK or COM error status with error information. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-HRESULT ExtPack::checkVrde(void) +-{ +- HRESULT hrc; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->Desc.strVrdeModule.isNotEmpty()) +- hrc = S_OK; +- else +- hrc = setError(E_FAIL, tr("The extension pack '%s' does not include a VRDE module"), m->Desc.strName.c_str()); +- } +- else +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- return hrc; +-} +- +-/** +- * Same as checkVrde(), except that it also resolves the path to the module. +- * +- * @returns S_OK or COM error status with error information. +- * @param a_pstrVrdeLibrary Where to return the path on success. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-HRESULT ExtPack::getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary) +-{ +- HRESULT hrc = checkVrde(); +- if (SUCCEEDED(hrc)) +- { +- if (findModule(m->Desc.strVrdeModule.c_str(), NULL, VBOXEXTPACKMODKIND_R3, +- a_pstrVrdeLibrary, NULL /*a_pfNative*/, NULL /*a_pObjInfo*/)) +- hrc = S_OK; +- else +- hrc = setError(E_FAIL, tr("Failed to locate the VRDE module '%s' in extension pack '%s'"), +- m->Desc.strVrdeModule.c_str(), m->Desc.strName.c_str()); +- } +- return hrc; +-} +- +-/** +- * Check if this extension pack wishes to be the default VRDE provider. +- * +- * @returns @c true if it wants to and it is in a usable state, otherwise +- * @c false. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-bool ExtPack::wantsToBeDefaultVrde(void) const +-{ +- return m->fUsable +- && m->Desc.strVrdeModule.isNotEmpty(); +-} +- +-/** +- * Refreshes the extension pack state. +- * +- * This is called by the manager so that the on disk changes are picked up. +- * +- * @returns S_OK or COM error status with error information. +- * +- * @param a_pfCanDelete Optional can-delete-this-object output indicator. +- * +- * @remarks Caller holds the extension manager lock for writing. +- * @remarks Only called in VBoxSVC. +- */ +-HRESULT ExtPack::refresh(bool *a_pfCanDelete) +-{ +- if (a_pfCanDelete) +- *a_pfCanDelete = false; +- +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); /* for the COMGETTERs */ +- +- /* +- * Has the module been deleted? +- */ +- RTFSOBJINFO ObjInfoExtPack; +- int vrc = RTPathQueryInfoEx(m->strExtPackPath.c_str(), &ObjInfoExtPack, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if ( RT_FAILURE(vrc) +- || !RTFS_IS_DIRECTORY(ObjInfoExtPack.Attr.fMode)) +- { +- if (a_pfCanDelete) +- *a_pfCanDelete = true; +- return S_OK; +- } +- +- /* +- * We've got a directory, so try query file system object info for the +- * files we are interested in as well. +- */ +- RTFSOBJINFO ObjInfoDesc; +- char szDescFilePath[RTPATH_MAX]; +- vrc = RTPathJoin(szDescFilePath, sizeof(szDescFilePath), m->strExtPackPath.c_str(), VBOX_EXTPACK_DESCRIPTION_NAME); +- if (RT_SUCCESS(vrc)) +- vrc = RTPathQueryInfoEx(szDescFilePath, &ObjInfoDesc, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- RT_ZERO(ObjInfoDesc); +- +- RTFSOBJINFO ObjInfoMainMod; +- if (m->strMainModPath.isNotEmpty()) +- vrc = RTPathQueryInfoEx(m->strMainModPath.c_str(), &ObjInfoMainMod, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (m->strMainModPath.isEmpty() || RT_FAILURE(vrc)) +- RT_ZERO(ObjInfoMainMod); +- +- /* +- * If we have a usable module already, just verify that things haven't +- * changed since we loaded it. +- */ +- if (m->fUsable) +- { +- if (m->hMainMod == NIL_RTLDRMOD) +- probeAndLoad(); +- else if ( !objinfoIsEqual(&ObjInfoDesc, &m->ObjInfoDesc) +- || !objinfoIsEqual(&ObjInfoMainMod, &m->ObjInfoMainMod) +- || !objinfoIsEqual(&ObjInfoExtPack, &m->ObjInfoExtPack) ) +- { +- /** @todo not important, so it can wait. */ +- } +- } +- /* +- * Ok, it is currently not usable. If anything has changed since last time +- * reprobe the extension pack. +- */ +- else if ( !objinfoIsEqual(&ObjInfoDesc, &m->ObjInfoDesc) +- || !objinfoIsEqual(&ObjInfoMainMod, &m->ObjInfoMainMod) +- || !objinfoIsEqual(&ObjInfoExtPack, &m->ObjInfoExtPack) ) +- probeAndLoad(); +- +- return S_OK; +-} +- +-/** +- * Probes the extension pack, loading the main dll and calling its registration +- * entry point. +- * +- * This updates the state accordingly, the strWhyUnusable and fUnusable members +- * being the most important ones. +- */ +-void ExtPack::probeAndLoad(void) +-{ +- m->fUsable = false; +- m->fMadeReadyCall = false; +- +- /* +- * Query the file system info for the extension pack directory. This and +- * all other file system info we save is for the benefit of refresh(). +- */ +- int vrc = RTPathQueryInfoEx(m->strExtPackPath.c_str(), &m->ObjInfoExtPack, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("RTPathQueryInfoEx on '%s' failed: %Rrc"), m->strExtPackPath.c_str(), vrc); +- return; +- } +- if (!RTFS_IS_DIRECTORY(m->ObjInfoExtPack.Attr.fMode)) +- { +- if (RTFS_IS_SYMLINK(m->ObjInfoExtPack.Attr.fMode)) +- m->strWhyUnusable.printf(tr("'%s' is a symbolic link, this is not allowed"), m->strExtPackPath.c_str(), vrc); +- else if (RTFS_IS_FILE(m->ObjInfoExtPack.Attr.fMode)) +- m->strWhyUnusable.printf(tr("'%s' is a symbolic file, not a directory"), m->strExtPackPath.c_str(), vrc); +- else +- m->strWhyUnusable.printf(tr("'%s' is not a directory (fMode=%#x)"), m->strExtPackPath.c_str(), m->ObjInfoExtPack.Attr.fMode); +- return; +- } +- +- RTERRINFOSTATIC ErrInfo; +- RTErrInfoInitStatic(&ErrInfo); +- vrc = SUPR3HardenedVerifyDir(m->strExtPackPath.c_str(), true /*fRecursive*/, true /*fCheckFiles*/, &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("%s (rc=%Rrc)"), ErrInfo.Core.pszMsg, vrc); +- return; +- } +- +- /* +- * Read the description file. +- */ +- RTCString strSavedName(m->Desc.strName); +- RTCString *pStrLoadErr = VBoxExtPackLoadDesc(m->strExtPackPath.c_str(), &m->Desc, &m->ObjInfoDesc); +- if (pStrLoadErr != NULL) +- { +- m->strWhyUnusable.printf(tr("Failed to load '%s/%s': %s"), +- m->strExtPackPath.c_str(), VBOX_EXTPACK_DESCRIPTION_NAME, pStrLoadErr->c_str()); +- m->Desc.strName = strSavedName; +- delete pStrLoadErr; +- return; +- } +- +- /* +- * Make sure the XML name and directory matches. +- */ +- if (!m->Desc.strName.equalsIgnoreCase(strSavedName)) +- { +- m->strWhyUnusable.printf(tr("The description name ('%s') and directory name ('%s') does not match"), +- m->Desc.strName.c_str(), strSavedName.c_str()); +- m->Desc.strName = strSavedName; +- return; +- } +- +- /* +- * Load the main DLL and call the predefined entry point. +- */ +- bool fIsNative; +- if (!findModule(m->Desc.strMainModule.c_str(), NULL /* default extension */, VBOXEXTPACKMODKIND_R3, +- &m->strMainModPath, &fIsNative, &m->ObjInfoMainMod)) +- { +- m->strWhyUnusable.printf(tr("Failed to locate the main module ('%s')"), m->Desc.strMainModule.c_str()); +- return; +- } +- +- vrc = SUPR3HardenedVerifyPlugIn(m->strMainModPath.c_str(), &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("%s"), ErrInfo.Core.pszMsg); +- return; +- } +- +- if (fIsNative) +- { +- vrc = SUPR3HardenedLdrLoadPlugIn(m->strMainModPath.c_str(), &m->hMainMod, &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->hMainMod = NIL_RTLDRMOD; +- m->strWhyUnusable.printf(tr("Failed to load the main module ('%s'): %Rrc - %s"), +- m->strMainModPath.c_str(), vrc, ErrInfo.Core.pszMsg); +- return; +- } +- } +- else +- { +- m->strWhyUnusable.printf(tr("Only native main modules are currently supported")); +- return; +- } +- +- /* +- * Resolve the predefined entry point. +- */ +- PFNVBOXEXTPACKREGISTER pfnRegistration; +- vrc = RTLdrGetSymbol(m->hMainMod, VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, (void **)&pfnRegistration); +- if (RT_SUCCESS(vrc)) +- { +- RTErrInfoClear(&ErrInfo.Core); +- vrc = pfnRegistration(&m->Hlp, &m->pReg, &ErrInfo.Core); +- if ( RT_SUCCESS(vrc) +- && !RTErrInfoIsSet(&ErrInfo.Core) +- && VALID_PTR(m->pReg)) +- { +- if ( VBOXEXTPACK_IS_MAJOR_VER_EQUAL(m->pReg->u32Version, VBOXEXTPACKREG_VERSION) +- && m->pReg->u32EndMarker == m->pReg->u32Version) +- { +- if ( (!m->pReg->pfnInstalled || RT_VALID_PTR(m->pReg->pfnInstalled)) +- && (!m->pReg->pfnUninstall || RT_VALID_PTR(m->pReg->pfnUninstall)) +- && (!m->pReg->pfnVirtualBoxReady || RT_VALID_PTR(m->pReg->pfnVirtualBoxReady)) +- && (!m->pReg->pfnConsoleReady || RT_VALID_PTR(m->pReg->pfnConsoleReady)) +- && (!m->pReg->pfnUnload || RT_VALID_PTR(m->pReg->pfnUnload)) +- && (!m->pReg->pfnVMCreated || RT_VALID_PTR(m->pReg->pfnVMCreated)) +- && (!m->pReg->pfnVMConfigureVMM || RT_VALID_PTR(m->pReg->pfnVMConfigureVMM)) +- && (!m->pReg->pfnVMPowerOn || RT_VALID_PTR(m->pReg->pfnVMPowerOn)) +- && (!m->pReg->pfnVMPowerOff || RT_VALID_PTR(m->pReg->pfnVMPowerOff)) +- && (!m->pReg->pfnQueryObject || RT_VALID_PTR(m->pReg->pfnQueryObject)) +- ) +- { +- /* +- * We're good! +- */ +- m->fUsable = true; +- m->strWhyUnusable.setNull(); +- return; +- } +- +- m->strWhyUnusable = tr("The registration structure contains on or more invalid function pointers"); +- } +- else +- m->strWhyUnusable.printf(tr("Unsupported registration structure version %u.%u"), +- RT_HIWORD(m->pReg->u32Version), RT_LOWORD(m->pReg->u32Version)); +- } +- else +- m->strWhyUnusable.printf(tr("%s returned %Rrc, pReg=%p ErrInfo='%s'"), +- VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, vrc, m->pReg, ErrInfo.Core.pszMsg); +- m->pReg = NULL; +- } +- else +- m->strWhyUnusable.printf(tr("Failed to resolve exported symbol '%s' in the main module: %Rrc"), +- VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, vrc); +- +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +-} +- +-/** +- * Finds a module. +- * +- * @returns true if found, false if not. +- * @param a_pszName The module base name (no extension). +- * @param a_pszExt The extension. If NULL we use default +- * extensions. +- * @param a_enmKind The kind of module to locate. +- * @param a_pStrFound Where to return the path to the module we've +- * found. +- * @param a_pfNative Where to return whether this is a native module +- * or an agnostic one. Optional. +- * @param a_pObjInfo Where to return the file system object info for +- * the module. Optional. +- */ +-bool ExtPack::findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind, +- Utf8Str *a_pStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const +-{ +- /* +- * Try the native path first. +- */ +- char szPath[RTPATH_MAX]; +- int vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), RTBldCfgTargetDotArch()); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- const char *pszDefExt; +- switch (a_enmKind) +- { +- case VBOXEXTPACKMODKIND_RC: pszDefExt = ".rc"; break; +- case VBOXEXTPACKMODKIND_R0: pszDefExt = ".r0"; break; +- case VBOXEXTPACKMODKIND_R3: pszDefExt = RTLdrGetSuff(); break; +- default: +- AssertFailedReturn(false); +- } +- vrc = RTStrCat(szPath, sizeof(szPath), pszDefExt); +- AssertLogRelRCReturn(vrc, false); +- } +- +- RTFSOBJINFO ObjInfo; +- if (!a_pObjInfo) +- a_pObjInfo = &ObjInfo; +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = true; +- *a_pStrFound = szPath; +- return true; +- } +- +- /* +- * Try the platform agnostic modules. +- */ +- /* gcc.x86/module.rel */ +- char szSubDir[32]; +- RTStrPrintf(szSubDir, sizeof(szSubDir), "%s.%s", RTBldCfgCompiler(), RTBldCfgTargetArch()); +- vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), szSubDir); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- vrc = RTStrCat(szPath, sizeof(szPath), ".rel"); +- AssertLogRelRCReturn(vrc, false); +- } +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = false; +- *a_pStrFound = szPath; +- return true; +- } +- +- /* x86/module.rel */ +- vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), RTBldCfgTargetArch()); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- vrc = RTStrCat(szPath, sizeof(szPath), ".rel"); +- AssertLogRelRCReturn(vrc, false); +- } +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = false; +- *a_pStrFound = szPath; +- return true; +- } +- +- return false; +-} +- +-/** +- * Compares two file system object info structures. +- * +- * @returns true if equal, false if not. +- * @param pObjInfo1 The first. +- * @param pObjInfo2 The second. +- * @todo IPRT should do this, really. +- */ +-/* static */ bool ExtPack::objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2) +-{ +- if (!RTTimeSpecIsEqual(&pObjInfo1->ModificationTime, &pObjInfo2->ModificationTime)) +- return false; +- if (!RTTimeSpecIsEqual(&pObjInfo1->ChangeTime, &pObjInfo2->ChangeTime)) +- return false; +- if (!RTTimeSpecIsEqual(&pObjInfo1->BirthTime, &pObjInfo2->BirthTime)) +- return false; +- if (pObjInfo1->cbObject != pObjInfo2->cbObject) +- return false; +- if (pObjInfo1->Attr.fMode != pObjInfo2->Attr.fMode) +- return false; +- if (pObjInfo1->Attr.enmAdditional == pObjInfo2->Attr.enmAdditional) +- { +- switch (pObjInfo1->Attr.enmAdditional) +- { +- case RTFSOBJATTRADD_UNIX: +- if (pObjInfo1->Attr.u.Unix.uid != pObjInfo2->Attr.u.Unix.uid) +- return false; +- if (pObjInfo1->Attr.u.Unix.gid != pObjInfo2->Attr.u.Unix.gid) +- return false; +- if (pObjInfo1->Attr.u.Unix.INodeIdDevice != pObjInfo2->Attr.u.Unix.INodeIdDevice) +- return false; +- if (pObjInfo1->Attr.u.Unix.INodeId != pObjInfo2->Attr.u.Unix.INodeId) +- return false; +- if (pObjInfo1->Attr.u.Unix.GenerationId != pObjInfo2->Attr.u.Unix.GenerationId) +- return false; +- break; +- default: +- break; +- } +- } +- return true; +-} +- +- +-/** +- * @interface_method_impl{VBOXEXTPACKHLP,pfnFindModule} +- */ +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt, VBOXEXTPACKMODKIND enmKind, +- char *pszFound, size_t cbFound, bool *pfNative) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pszName, VERR_INVALID_POINTER); +- AssertPtrNullReturn(pszExt, VERR_INVALID_POINTER); +- AssertPtrReturn(pszFound, VERR_INVALID_POINTER); +- AssertPtrNullReturn(pfNative, VERR_INVALID_POINTER); +- AssertReturn(enmKind > VBOXEXTPACKMODKIND_INVALID && enmKind < VBOXEXTPACKMODKIND_END, VERR_INVALID_PARAMETER); +- +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- /* +- * This is just a wrapper around findModule. +- */ +- Utf8Str strFound; +- if (pThis->findModule(pszName, pszExt, enmKind, &strFound, pfNative, NULL)) +- return RTStrCopy(pszFound, cbFound, strFound.c_str()); +- return VERR_FILE_NOT_FOUND; +-} +- +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pszFilename, VERR_INVALID_POINTER); +- AssertPtrReturn(pszPath, VERR_INVALID_POINTER); +- AssertReturn(cbPath > 0, VERR_BUFFER_OVERFLOW); +- +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- /* +- * This is a simple RTPathJoin, no checking if things exists or anything. +- */ +- int vrc = RTPathJoin(pszPath, cbPath, pThis->m->strExtPackPath.c_str(), pszFilename); +- if (RT_FAILURE(vrc)) +- RT_BZERO(pszPath, cbPath); +- return vrc; +-} +- +-/*static*/ DECLCALLBACK(VBOXEXTPACKCTX) +-ExtPack::hlpGetContext(PCVBOXEXTPACKHLP pHlp) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pHlp, VBOXEXTPACKCTX_INVALID); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VBOXEXTPACKCTX_INVALID); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VBOXEXTPACKCTX_INVALID); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VBOXEXTPACKCTX_INVALID); +- +- return pThis->m->enmContext; +-} +- +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpReservedN(PCVBOXEXTPACKHLP pHlp) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- return VERR_NOT_IMPLEMENTED; +-} +- +- +- +- +- +-STDMETHODIMP ExtPack::COMGETTER(Name)(BSTR *a_pbstrName) +-{ +- CheckComArgOutPointerValid(a_pbstrName); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strName); +- str.cloneTo(a_pbstrName); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Description)(BSTR *a_pbstrDescription) +-{ +- CheckComArgOutPointerValid(a_pbstrDescription); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strDescription); +- str.cloneTo(a_pbstrDescription); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Version)(BSTR *a_pbstrVersion) +-{ +- CheckComArgOutPointerValid(a_pbstrVersion); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* HACK ALERT: This is for easing backporting to 4.1. The edition stuff +- will be changed into a separate */ +- if (m->Desc.strEdition.isEmpty()) +- { +- Bstr str(m->Desc.strVersion); +- str.cloneTo(a_pbstrVersion); +- } +- else +- { +- RTCString strHack(m->Desc.strVersion); +- strHack.append('-'); +- strHack.append(m->Desc.strEdition); +- +- Bstr str(strHack); +- str.cloneTo(a_pbstrVersion); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Revision)(ULONG *a_puRevision) +-{ +- CheckComArgOutPointerValid(a_puRevision); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_puRevision = m->Desc.uRevision; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(VRDEModule)(BSTR *a_pbstrVrdeModule) +-{ +- CheckComArgOutPointerValid(a_pbstrVrdeModule); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strVrdeModule); +- str.cloneTo(a_pbstrVrdeModule); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(PlugIns)(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)) +-{ +- /** @todo implement plug-ins. */ +-#ifdef VBOX_WITH_XPCOM +- NOREF(a_paPlugIns); +- NOREF(a_paPlugInsSize); +-#endif +- ReturnComNotImplemented(); +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Usable)(BOOL *a_pfUsable) +-{ +- CheckComArgOutPointerValid(a_pfUsable); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfUsable = m->fUsable; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(WhyUnusable)(BSTR *a_pbstrWhy) +-{ +- CheckComArgOutPointerValid(a_pbstrWhy); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strWhyUnusable.cloneTo(a_pbstrWhy); +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(ShowLicense)(BOOL *a_pfShowIt) +-{ +- CheckComArgOutPointerValid(a_pfShowIt); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfShowIt = m->Desc.fShowLicense; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(License)(BSTR *a_pbstrHtmlLicense) +-{ +- Bstr bstrHtml("html"); +- return QueryLicense(Bstr::Empty.raw(), Bstr::Empty.raw(), bstrHtml.raw(), a_pbstrHtmlLicense); +-} +- +-STDMETHODIMP ExtPack::QueryLicense(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, IN_BSTR a_bstrFormat, +- BSTR *a_pbstrLicense) +-{ +- /* +- * Validate input. +- */ +- CheckComArgOutPointerValid(a_pbstrLicense); +- CheckComArgNotNull(a_bstrPreferredLocale); +- CheckComArgNotNull(a_bstrPreferredLanguage); +- CheckComArgNotNull(a_bstrFormat); +- +- Utf8Str strPreferredLocale(a_bstrPreferredLocale); +- if (strPreferredLocale.length() != 2 && strPreferredLocale.length() != 0) +- return setError(E_FAIL, tr("The preferred locale is a two character string or empty.")); +- +- Utf8Str strPreferredLanguage(a_bstrPreferredLanguage); +- if (strPreferredLanguage.length() != 2 && strPreferredLanguage.length() != 0) +- return setError(E_FAIL, tr("The preferred lanuage is a two character string or empty.")); +- +- Utf8Str strFormat(a_bstrFormat); +- if ( !strFormat.equals("html") +- && !strFormat.equals("rtf") +- && !strFormat.equals("txt")) +- return setError(E_FAIL, tr("The license format can only have the values 'html', 'rtf' and 'txt'.")); +- +- /* +- * Combine the options to form a file name before locking down anything. +- */ +- char szName[sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX "-de_DE.html") + 2]; +- if (strPreferredLocale.isNotEmpty() && strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s_%s.%s", +- strPreferredLocale.c_str(), strPreferredLanguage.c_str(), strFormat.c_str()); +- else if (strPreferredLocale.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else if (strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-_%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX ".%s", strFormat.c_str()); +- +- /* +- * Effectuate the query. +- */ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); /* paranoia */ +- +- if (!m->fUsable) +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- else +- { +- char szPath[RTPATH_MAX]; +- int vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), szName); +- if (RT_SUCCESS(vrc)) +- { +- void *pvFile; +- size_t cbFile; +- vrc = RTFileReadAllEx(szPath, 0, RTFOFF_MAX, RTFILE_RDALL_O_DENY_READ, &pvFile, &cbFile); +- if (RT_SUCCESS(vrc)) +- { +- Bstr bstrLicense((const char *)pvFile, cbFile); +- if (bstrLicense.isNotEmpty()) +- { +- bstrLicense.detachTo(a_pbstrLicense); +- hrc = S_OK; +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("The license file '%s' is empty or contains invalid UTF-8 encoding"), +- szPath); +- RTFileReadAllFree(pvFile, cbFile); +- } +- else if (vrc == VERR_FILE_NOT_FOUND || vrc == VERR_PATH_NOT_FOUND) +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("The license file '%s' was not found in extension pack '%s'"), +- szName, m->Desc.strName.c_str()); +- else +- hrc = setError(VBOX_E_FILE_ERROR, tr("Failed to open the license file '%s': %Rrc"), szPath, vrc); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTPathJoin failed: %Rrc"), vrc); +- } +- } +- return hrc; +-} +- +- +-STDMETHODIMP ExtPack::QueryObject(IN_BSTR a_bstrObjectId, IUnknown **a_ppUnknown) +-{ +- com::Guid ObjectId; +- CheckComArgGuid(a_bstrObjectId, ObjectId); +- CheckComArgOutPointerValid(a_ppUnknown); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- if ( m->pReg +- && m->pReg->pfnQueryObject) +- { +- void *pvUnknown = m->pReg->pfnQueryObject(m->pReg, ObjectId.raw()); +- if (pvUnknown) +- *a_ppUnknown = (IUnknown *)pvUnknown; +- else +- hrc = E_NOINTERFACE; +- } +- else +- hrc = E_NOINTERFACE; +- } +- return hrc; +-} +- +- +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPackManager) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in init(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPackManager::FinalConstruct() +-{ +- m = NULL; +- return S_OK; +-} +- +-/** +- * Initializes the extension pack manager. +- * +- * @returns COM status code. +- * @param a_pVirtualBox Pointer to the VirtualBox object. +- * @param a_enmContext The context we're in. +- */ +-HRESULT ExtPackManager::initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- /* +- * Figure some stuff out before creating the instance data. +- */ +- char szBaseDir[RTPATH_MAX]; +- int rc = RTPathAppPrivateArchTop(szBaseDir, sizeof(szBaseDir)); +- AssertLogRelRCReturn(rc, E_FAIL); +- rc = RTPathAppend(szBaseDir, sizeof(szBaseDir), VBOX_EXTPACK_INSTALL_DIR); +- AssertLogRelRCReturn(rc, E_FAIL); +- +- char szCertificatDir[RTPATH_MAX]; +- rc = RTPathAppPrivateNoArch(szCertificatDir, sizeof(szCertificatDir)); +- AssertLogRelRCReturn(rc, E_FAIL); +- rc = RTPathAppend(szCertificatDir, sizeof(szCertificatDir), VBOX_EXTPACK_CERT_DIR); +- AssertLogRelRCReturn(rc, E_FAIL); +- +- /* +- * Allocate and initialize the instance data. +- */ +- m = new Data; +- m->strBaseDir = szBaseDir; +- m->strCertificatDirPath = szCertificatDir; +- m->pVirtualBox = a_pVirtualBox; +- m->enmContext = a_enmContext; +- +- /* +- * Slurp in VBoxVMM which is used by VBoxPuelMain. +- */ +-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_DARWIN) +- if (a_enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- int vrc = SUPR3HardenedLdrLoadAppPriv("VBoxVMM", &m->hVBoxVMM, RTLDRLOAD_FLAGS_GLOBAL, NULL); +- if (RT_FAILURE(vrc)) +- m->hVBoxVMM = NIL_RTLDRMOD; +- /* cleanup in ::uninit()? */ +- } +-#endif +- +- /* +- * Go looking for extensions. The RTDirOpen may fail if nothing has been +- * installed yet, or if root is paranoid and has revoked our access to them. +- * +- * We ASSUME that there are no files, directories or stuff in the directory +- * that exceed the max name length in RTDIRENTRYEX. +- */ +- HRESULT hrc = S_OK; +- PRTDIR pDir; +- int vrc = RTDirOpen(&pDir, szBaseDir); +- if (RT_SUCCESS(vrc)) +- { +- for (;;) +- { +- RTDIRENTRYEX Entry; +- vrc = RTDirReadEx(pDir, &Entry, NULL /*pcbDirEntry*/, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- AssertLogRelMsg(vrc == VERR_NO_MORE_FILES, ("%Rrc\n", vrc)); +- break; +- } +- if ( RTFS_IS_DIRECTORY(Entry.Info.Attr.fMode) +- && strcmp(Entry.szName, ".") != 0 +- && strcmp(Entry.szName, "..") != 0 +- && VBoxExtPackIsValidMangledName(Entry.szName) ) +- { +- /* +- * All directories are extensions, the shall be nothing but +- * extensions in this subdirectory. +- */ +- char szExtPackDir[RTPATH_MAX]; +- vrc = RTPathJoin(szExtPackDir, sizeof(szExtPackDir), m->strBaseDir.c_str(), Entry.szName); +- AssertLogRelRC(vrc); +- if (RT_SUCCESS(vrc)) +- { +- RTCString *pstrName = VBoxExtPackUnmangleName(Entry.szName, RTSTR_MAX); +- AssertLogRel(pstrName); +- if (pstrName) +- { +- ComObjPtr<ExtPack> NewExtPack; +- HRESULT hrc2 = NewExtPack.createObject(); +- if (SUCCEEDED(hrc2)) +- hrc2 = NewExtPack->initWithDir(a_enmContext, pstrName->c_str(), szExtPackDir); +- delete pstrName; +- if (SUCCEEDED(hrc2)) +- m->llInstalledExtPacks.push_back(NewExtPack); +- else if (SUCCEEDED(rc)) +- hrc = hrc2; +- } +- else +- hrc = E_UNEXPECTED; +- } +- else +- hrc = E_UNEXPECTED; +- } +- } +- RTDirClose(pDir); +- } +- /* else: ignore, the directory probably does not exist or something. */ +- +- if (SUCCEEDED(hrc)) +- autoInitSpan.setSucceeded(); +- return hrc; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPackManager::FinalRelease() +-{ +- uninit(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPackManager::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- delete m; +- m = NULL; +- } +-} +- +- +-STDMETHODIMP ExtPackManager::COMGETTER(InstalledExtPacks)(ComSafeArrayOut(IExtPack *, a_paExtPacks)) +-{ +- CheckComArgOutSafeArrayPointerValid(a_paExtPacks); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- SafeIfaceArray<IExtPack> SaExtPacks(m->llInstalledExtPacks); +- SaExtPacks.detachTo(ComSafeArrayOutArg(a_paExtPacks)); +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Find(IN_BSTR a_bstrName, IExtPack **a_pExtPack) +-{ +- CheckComArgNotNull(a_bstrName); +- CheckComArgOutPointerValid(a_pExtPack); +- Utf8Str strName(a_bstrName); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ComPtr<ExtPack> ptrExtPack = findExtPack(strName.c_str()); +- if (!ptrExtPack.isNull()) +- ptrExtPack.queryInterfaceTo(a_pExtPack); +- else +- hrc = VBOX_E_OBJECT_NOT_FOUND; +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::OpenExtPackFile(IN_BSTR a_bstrTarballAndDigest, IExtPackFile **a_ppExtPackFile) +-{ +- CheckComArgNotNull(a_bstrTarballAndDigest); +- CheckComArgOutPointerValid(a_ppExtPackFile); +- AssertReturn(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON, E_UNEXPECTED); +- +- /* The API can optionally take a ::SHA-256=<hex-digest> attribute at the +- end of the file name. This is just a temporary measure for +- backporting, in 4.2 we'll add another parameter to the method. */ +- Utf8Str strTarball; +- Utf8Str strDigest; +- Utf8Str strTarballAndDigest(a_bstrTarballAndDigest); +- size_t offSha256 = strTarballAndDigest.find("::SHA-256="); +- if (offSha256 == Utf8Str::npos) +- strTarball = strTarballAndDigest; +- else +- { +- strTarball = strTarballAndDigest.substr(0, offSha256); +- strDigest = strTarballAndDigest.substr(offSha256 + sizeof("::SHA-256=") - 1); +- } +- +- ComObjPtr<ExtPackFile> NewExtPackFile; +- HRESULT hrc = NewExtPackFile.createObject(); +- if (SUCCEEDED(hrc)) +- hrc = NewExtPackFile->initWithFile(strTarball.c_str(), strDigest.c_str(), this, m->pVirtualBox); +- if (SUCCEEDED(hrc)) +- NewExtPackFile.queryInterfaceTo(a_ppExtPackFile); +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Uninstall(IN_BSTR a_bstrName, BOOL a_fForcedRemoval, IN_BSTR a_bstrDisplayInfo, +- IProgress **a_ppProgress) +-{ +- CheckComArgNotNull(a_bstrName); +- if (a_ppProgress) +- *a_ppProgress = NULL; +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- PEXTPACKUNINSTALLJOB pJob = NULL; +- try +- { +- pJob = new EXTPACKUNINSTALLJOB; +- pJob->ptrExtPackMgr = this; +- pJob->strName = a_bstrName; +- pJob->fForcedRemoval = a_fForcedRemoval != FALSE; +- pJob->strDisplayInfo = a_bstrDisplayInfo; +- hrc = pJob->ptrProgress.createObject(); +- if (SUCCEEDED(hrc)) +- { +- Bstr bstrDescription = tr("Uninstalling extension pack"); +- hrc = pJob->ptrProgress->init( +-#ifndef VBOX_COM_INPROC +- m->pVirtualBox, +-#endif +- static_cast<IExtPackManager *>(this), +- bstrDescription.raw(), +- FALSE /*aCancelable*/, +- NULL /*aId*/); +- } +- if (SUCCEEDED(hrc)) +- { +- ComPtr<Progress> ptrProgress = pJob->ptrProgress; +- int vrc = RTThreadCreate(NULL /*phThread*/, ExtPackManager::doUninstallThreadProc, pJob, 0, +- RTTHREADTYPE_DEFAULT, 0 /*fFlags*/, "ExtPackUninst"); +- if (RT_SUCCESS(vrc)) +- { +- pJob = NULL; /* the thread deletes it */ +- ptrProgress.queryInterfaceTo(a_ppProgress); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTThreadCreate failed with %Rrc"), vrc); +- } +- } +- catch (std::bad_alloc) +- { +- hrc = E_OUTOFMEMORY; +- } +- if (pJob) +- delete pJob; +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Cleanup(void) +-{ +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the set-uid-to-root binary that performs the cleanup. +- * +- * Take the write lock to prevent conflicts with other calls to this +- * VBoxSVC instance. +- */ +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- hrc = runSetUidToRootHelper(NULL, +- "cleanup", +- "--base-dir", m->strBaseDir.c_str(), +- (const char *)NULL); +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::QueryAllPlugInsForFrontend(IN_BSTR a_bstrFrontend, ComSafeArrayOut(BSTR, a_pabstrPlugInModules)) +-{ +- CheckComArgNotNull(a_bstrFrontend); +- Utf8Str strName(a_bstrFrontend); +- CheckComArgOutSafeArrayPointerValid(a_pabstrPlugInModules); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- com::SafeArray<BSTR> saPaths((size_t)0); +- /** @todo implement plug-ins */ +- saPaths.detachTo(ComSafeArrayOutArg(a_pabstrPlugInModules)); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::IsExtPackUsable(IN_BSTR a_bstrExtPack, BOOL *aUsable) +-{ +- CheckComArgNotNull(a_bstrExtPack); +- Utf8Str strExtPack(a_bstrExtPack); +- *aUsable = isExtPackUsable(strExtPack.c_str()); +- return S_OK; +-} +- +-/** +- * Finds the success indicator string in the stderr output ofr hte helper app. +- * +- * @returns Pointer to the indicator. +- * @param psz The stderr output string. Can be NULL. +- * @param cch The size of the string. +- */ +-static char *findSuccessIndicator(char *psz, size_t cch) +-{ +- static const char s_szSuccessInd[] = "rcExit=RTEXITCODE_SUCCESS"; +- Assert(!cch || strlen(psz) == cch); +- if (cch < sizeof(s_szSuccessInd) - 1) +- return NULL; +- char *pszInd = &psz[cch - sizeof(s_szSuccessInd) + 1]; +- if (strcmp(s_szSuccessInd, pszInd)) +- return NULL; +- return pszInd; +-} +- +-/** +- * Runs the helper application that does the privileged operations. +- * +- * @returns S_OK or a failure status with error information set. +- * @param a_pstrDisplayInfo Platform specific display info hacks. +- * @param a_pszCommand The command to execute. +- * @param ... The argument strings that goes along with the +- * command. Maximum is about 16. Terminated by a +- * NULL. +- */ +-HRESULT ExtPackManager::runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...) +-{ +- /* +- * Calculate the path to the helper application. +- */ +- char szExecName[RTPATH_MAX]; +- int vrc = RTPathAppPrivateArch(szExecName, sizeof(szExecName)); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- vrc = RTPathAppend(szExecName, sizeof(szExecName), VBOX_EXTPACK_HELPER_NAME); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- /* +- * Convert the variable argument list to a RTProcCreate argument vector. +- */ +- const char *apszArgs[20]; +- unsigned cArgs = 0; +- +- LogRel(("ExtPack: Executing '%s'", szExecName)); +- apszArgs[cArgs++] = &szExecName[0]; +- +- if ( a_pstrDisplayInfo +- && a_pstrDisplayInfo->isNotEmpty()) +- { +- LogRel((" '--display-info-hack' '%s'", a_pstrDisplayInfo->c_str())); +- apszArgs[cArgs++] = "--display-info-hack"; +- apszArgs[cArgs++] = a_pstrDisplayInfo->c_str(); +- } +- +- LogRel(("'%s'", a_pszCommand)); +- apszArgs[cArgs++] = a_pszCommand; +- +- va_list va; +- va_start(va, a_pszCommand); +- const char *pszLastArg; +- for (;;) +- { +- AssertReturn(cArgs < RT_ELEMENTS(apszArgs) - 1, E_UNEXPECTED); +- pszLastArg = va_arg(va, const char *); +- if (!pszLastArg) +- break; +- LogRel((" '%s'", pszLastArg)); +- apszArgs[cArgs++] = pszLastArg; +- }; +- va_end(va); +- +- LogRel(("\n")); +- apszArgs[cArgs] = NULL; +- +- /* +- * Create a PIPE which we attach to stderr so that we can read the error +- * message on failure and report it back to the caller. +- */ +- RTPIPE hPipeR; +- RTHANDLE hStdErrPipe; +- hStdErrPipe.enmType = RTHANDLETYPE_PIPE; +- vrc = RTPipeCreate(&hPipeR, &hStdErrPipe.u.hPipe, RTPIPE_C_INHERIT_WRITE); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- /* +- * Spawn the process. +- */ +- HRESULT hrc; +- RTPROCESS hProcess; +- vrc = RTProcCreateEx(szExecName, +- apszArgs, +- RTENV_DEFAULT, +- 0 /*fFlags*/, +- NULL /*phStdIn*/, +- NULL /*phStdOut*/, +- &hStdErrPipe, +- NULL /*pszAsUser*/, +- NULL /*pszPassword*/, +- &hProcess); +- if (RT_SUCCESS(vrc)) +- { +- vrc = RTPipeClose(hStdErrPipe.u.hPipe); +- hStdErrPipe.u.hPipe = NIL_RTPIPE; +- +- /* +- * Read the pipe output until the process completes. +- */ +- RTPROCSTATUS ProcStatus = { -42, RTPROCEXITREASON_ABEND }; +- size_t cbStdErrBuf = 0; +- size_t offStdErrBuf = 0; +- char *pszStdErrBuf = NULL; +- do +- { +- /* +- * Service the pipe. Block waiting for output or the pipe breaking +- * when the process terminates. +- */ +- if (hPipeR != NIL_RTPIPE) +- { +- char achBuf[1024]; +- size_t cbRead; +- vrc = RTPipeReadBlocking(hPipeR, achBuf, sizeof(achBuf), &cbRead); +- if (RT_SUCCESS(vrc)) +- { +- /* grow the buffer? */ +- size_t cbBufReq = offStdErrBuf + cbRead + 1; +- if ( cbBufReq > cbStdErrBuf +- && cbBufReq < _256K) +- { +- size_t cbNew = RT_ALIGN_Z(cbBufReq, 16); // 1024 +- void *pvNew = RTMemRealloc(pszStdErrBuf, cbNew); +- if (pvNew) +- { +- pszStdErrBuf = (char *)pvNew; +- cbStdErrBuf = cbNew; +- } +- } +- +- /* append if we've got room. */ +- if (cbBufReq <= cbStdErrBuf) +- { +- memcpy(&pszStdErrBuf[offStdErrBuf], achBuf, cbRead); +- offStdErrBuf = offStdErrBuf + cbRead; +- pszStdErrBuf[offStdErrBuf] = '\0'; +- } +- } +- else +- { +- AssertLogRelMsg(vrc == VERR_BROKEN_PIPE, ("%Rrc\n", vrc)); +- RTPipeClose(hPipeR); +- hPipeR = NIL_RTPIPE; +- } +- } +- +- /* +- * Service the process. Block if we have no pipe. +- */ +- if (hProcess != NIL_RTPROCESS) +- { +- vrc = RTProcWait(hProcess, +- hPipeR == NIL_RTPIPE ? RTPROCWAIT_FLAGS_BLOCK : RTPROCWAIT_FLAGS_NOBLOCK, +- &ProcStatus); +- if (RT_SUCCESS(vrc)) +- hProcess = NIL_RTPROCESS; +- else +- AssertLogRelMsgStmt(vrc == VERR_PROCESS_RUNNING, ("%Rrc\n", vrc), hProcess = NIL_RTPROCESS); +- } +- } while ( hPipeR != NIL_RTPIPE +- || hProcess != NIL_RTPROCESS); +- +- LogRel(("ExtPack: enmReason=%d iStatus=%d stderr='%s'\n", +- ProcStatus.enmReason, ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : "")); +- +- /* +- * Look for rcExit=RTEXITCODE_SUCCESS at the end of the error output, +- * cut it as it is only there to attest the success. +- */ +- if (offStdErrBuf > 0) +- { +- RTStrStripR(pszStdErrBuf); +- offStdErrBuf = strlen(pszStdErrBuf); +- } +- +- char *pszSuccessInd = findSuccessIndicator(pszStdErrBuf, offStdErrBuf); +- if (pszSuccessInd) +- { +- *pszSuccessInd = '\0'; +- offStdErrBuf = pszSuccessInd - pszStdErrBuf; +- } +- else if ( ProcStatus.enmReason == RTPROCEXITREASON_NORMAL +- && ProcStatus.iStatus == 0) +- ProcStatus.iStatus = offStdErrBuf ? 667 : 666; +- +- /* +- * Compose the status code and, on failure, error message. +- */ +- if ( ProcStatus.enmReason == RTPROCEXITREASON_NORMAL +- && ProcStatus.iStatus == 0) +- hrc = S_OK; +- else if (ProcStatus.enmReason == RTPROCEXITREASON_NORMAL) +- { +- AssertMsg(ProcStatus.iStatus != 0, ("%s\n", pszStdErrBuf)); +- hrc = setError(E_FAIL, tr("The installer failed with exit code %d: %s"), +- ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- } +- else if (ProcStatus.enmReason == RTPROCEXITREASON_SIGNAL) +- hrc = setError(E_UNEXPECTED, tr("The installer was killed by signal #d (stderr: %s)"), +- ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- else if (ProcStatus.enmReason == RTPROCEXITREASON_ABEND) +- hrc = setError(E_UNEXPECTED, tr("The installer aborted abnormally (stderr: %s)"), +- offStdErrBuf ? pszStdErrBuf : ""); +- else +- hrc = setError(E_UNEXPECTED, tr("internal error: enmReason=%d iStatus=%d stderr='%s'"), +- ProcStatus.enmReason, ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- +- RTMemFree(pszStdErrBuf); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("Failed to launch the helper application '%s' (%Rrc)"), szExecName, vrc); +- +- RTPipeClose(hPipeR); +- RTPipeClose(hStdErrPipe.u.hPipe); +- +- return hrc; +-} +- +-/** +- * Finds an installed extension pack. +- * +- * @returns Pointer to the extension pack if found, NULL if not. (No reference +- * counting problem here since the caller must be holding the lock.) +- * @param a_pszName The name of the extension pack. +- */ +-ExtPack *ExtPackManager::findExtPack(const char *a_pszName) +-{ +- size_t cchName = strlen(a_pszName); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if ( pExtPackData +- && pExtPackData->Desc.strName.length() == cchName +- && pExtPackData->Desc.strName.equalsIgnoreCase(a_pszName)) +- return (*it); +- } +- return NULL; +-} +- +-/** +- * Removes an installed extension pack from the internal list. +- * +- * The package is expected to exist! +- * +- * @param a_pszName The name of the extension pack. +- */ +-void ExtPackManager::removeExtPack(const char *a_pszName) +-{ +- size_t cchName = strlen(a_pszName); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if ( pExtPackData +- && pExtPackData->Desc.strName.length() == cchName +- && pExtPackData->Desc.strName.equalsIgnoreCase(a_pszName)) +- { +- m->llInstalledExtPacks.erase(it); +- return; +- } +- } +- AssertMsgFailed(("%s\n", a_pszName)); +-} +- +-/** +- * Refreshes the specified extension pack. +- * +- * This may remove the extension pack from the list, so any non-smart pointers +- * to the extension pack object may become invalid. +- * +- * @returns S_OK and *a_ppExtPack on success, COM status code and error +- * message on failure. Note that *a_ppExtPack can be NULL. +- * +- * @param a_pszName The extension to update.. +- * @param a_fUnusableIsError If @c true, report an unusable extension pack +- * as an error. +- * @param a_ppExtPack Where to store the pointer to the extension +- * pack of it is still around after the refresh. +- * This is optional. +- * +- * @remarks Caller holds the extension manager lock. +- * @remarks Only called in VBoxSVC. +- */ +-HRESULT ExtPackManager::refreshExtPack(const char *a_pszName, bool a_fUnusableIsError, ExtPack **a_ppExtPack) +-{ +- Assert(m->pVirtualBox != NULL); /* Only called from VBoxSVC. */ +- +- HRESULT hrc; +- ExtPack *pExtPack = findExtPack(a_pszName); +- if (pExtPack) +- { +- /* +- * Refresh existing object. +- */ +- bool fCanDelete; +- hrc = pExtPack->refresh(&fCanDelete); +- if (SUCCEEDED(hrc)) +- { +- if (fCanDelete) +- { +- removeExtPack(a_pszName); +- pExtPack = NULL; +- } +- } +- } +- else +- { +- /* +- * Do this check here, otherwise VBoxExtPackCalcDir() will fail with a strange +- * error. +- */ +- bool fValid = VBoxExtPackIsValidName(a_pszName); +- if (!fValid) +- return setError(E_FAIL, "Invalid extension pack name specified"); +- +- /* +- * Does the dir exist? Make some special effort to deal with case +- * sensitivie file systems (a_pszName is case insensitive and mangled). +- */ +- char szDir[RTPATH_MAX]; +- int vrc = VBoxExtPackCalcDir(szDir, sizeof(szDir), m->strBaseDir.c_str(), a_pszName); +- AssertLogRelRCReturn(vrc, E_FAIL); +- +- RTDIRENTRYEX Entry; +- RTFSOBJINFO ObjInfo; +- vrc = RTPathQueryInfoEx(szDir, &ObjInfo, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- bool fExists = RT_SUCCESS(vrc) && RTFS_IS_DIRECTORY(ObjInfo.Attr.fMode); +- if (!fExists) +- { +- PRTDIR pDir; +- vrc = RTDirOpen(&pDir, m->strBaseDir.c_str()); +- if (RT_SUCCESS(vrc)) +- { +- const char *pszMangledName = RTPathFilename(szDir); +- for (;;) +- { +- vrc = RTDirReadEx(pDir, &Entry, NULL /*pcbDirEntry*/, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- AssertLogRelMsg(vrc == VERR_NO_MORE_FILES, ("%Rrc\n", vrc)); +- break; +- } +- if ( RTFS_IS_DIRECTORY(Entry.Info.Attr.fMode) +- && !RTStrICmp(Entry.szName, pszMangledName)) +- { +- /* +- * The installed extension pack has a uses different case. +- * Update the name and directory variables. +- */ +- vrc = RTPathJoin(szDir, sizeof(szDir), m->strBaseDir.c_str(), Entry.szName); /* not really necessary */ +- AssertLogRelRCReturnStmt(vrc, RTDirClose(pDir), E_UNEXPECTED); +- a_pszName = Entry.szName; +- fExists = true; +- break; +- } +- } +- RTDirClose(pDir); +- } +- } +- if (fExists) +- { +- /* +- * We've got something, create a new extension pack object for it. +- */ +- ComObjPtr<ExtPack> ptrNewExtPack; +- hrc = ptrNewExtPack.createObject(); +- if (SUCCEEDED(hrc)) +- hrc = ptrNewExtPack->initWithDir(m->enmContext, a_pszName, szDir); +- if (SUCCEEDED(hrc)) +- { +- m->llInstalledExtPacks.push_back(ptrNewExtPack); +- if (ptrNewExtPack->m->fUsable) +- LogRel(("ExtPackManager: Found extension pack '%s'.\n", a_pszName)); +- else +- LogRel(("ExtPackManager: Found bad extension pack '%s': %s\n", +- a_pszName, ptrNewExtPack->m->strWhyUnusable.c_str() )); +- pExtPack = ptrNewExtPack; +- } +- } +- else +- hrc = S_OK; +- } +- +- /* +- * Report error if not usable, if that is desired. +- */ +- if ( SUCCEEDED(hrc) +- && pExtPack +- && a_fUnusableIsError +- && !pExtPack->m->fUsable) +- hrc = setError(E_FAIL, "%s", pExtPack->m->strWhyUnusable.c_str()); +- +- if (a_ppExtPack) +- *a_ppExtPack = pExtPack; +- return hrc; +-} +- +-/** +- * Thread wrapper around doInstall. +- * +- * @returns VINF_SUCCESS (ignored) +- * @param hThread The thread handle (ignored). +- * @param pvJob The job structure. +- */ +-/*static*/ DECLCALLBACK(int) ExtPackManager::doInstallThreadProc(RTTHREAD hThread, void *pvJob) +-{ +- PEXTPACKINSTALLJOB pJob = (PEXTPACKINSTALLJOB)pvJob; +- HRESULT hrc = pJob->ptrExtPackMgr->doInstall(pJob->ptrExtPackFile, pJob->fReplace, &pJob->strDisplayInfo); +- pJob->ptrProgress->notifyComplete(hrc); +- delete pJob; +- +- NOREF(hThread); +- return VINF_SUCCESS; +-} +- +-/** +- * Worker for IExtPackFile::Install. +- * +- * Called on a worker thread via doInstallThreadProc. +- * +- * @returns COM status code. +- * @param a_pExtPackFile The extension pack file, caller checks that +- * it's usable. +- * @param a_fReplace Whether to replace any existing extpack or just +- * fail. +- * @param a_pstrDisplayInfo Host specific display information hacks. +- * @param a_ppProgress Where to return a progress object some day. Can +- * be NULL. +- */ +-HRESULT ExtPackManager::doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo) +-{ +- AssertReturn(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON, E_UNEXPECTED); +- RTCString const * const pStrName = &a_pExtPackFile->m->Desc.strName; +- RTCString const * const pStrTarball = &a_pExtPackFile->m->strExtPackFile; +- RTCString const * const pStrTarballDigest = &a_pExtPackFile->m->strDigest; +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Refresh the data we have on the extension pack as it +- * may be made stale by direct meddling or some other user. +- */ +- ExtPack *pExtPack; +- hrc = refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (pExtPack && a_fReplace) +- hrc = pExtPack->callUninstallHookAndClose(m->pVirtualBox, false /*a_ForcedRemoval*/); +- else if (pExtPack) +- hrc = setError(E_FAIL, +- tr("Extension pack '%s' is already installed." +- " In case of a reinstallation, please uninstall it first"), +- pStrName->c_str()); +- } +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the privileged helper binary that performs the actual +- * installation. Then create an object for the packet (we do this +- * even on failure, to be on the safe side). +- */ +- hrc = runSetUidToRootHelper(a_pstrDisplayInfo, +- "install", +- "--base-dir", m->strBaseDir.c_str(), +- "--cert-dir", m->strCertificatDirPath.c_str(), +- "--name", pStrName->c_str(), +- "--tarball", pStrTarball->c_str(), +- "--sha-256", pStrTarballDigest->c_str(), +- pExtPack ? "--replace" : (const char *)NULL, +- (const char *)NULL); +- if (SUCCEEDED(hrc)) +- { +- hrc = refreshExtPack(pStrName->c_str(), true /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc) && pExtPack) +- { +- RTERRINFOSTATIC ErrInfo; +- RTErrInfoInitStatic(&ErrInfo); +- pExtPack->callInstalledHook(m->pVirtualBox, &autoLock, &ErrInfo.Core); +- if (RT_SUCCESS(ErrInfo.Core.rc)) +- LogRel(("ExtPackManager: Successfully installed extension pack '%s'.\n", pStrName->c_str())); +- else +- { +- LogRel(("ExtPackManager: Installated hook for '%s' failed: %Rrc - %s\n", +- pStrName->c_str(), ErrInfo.Core.rc, ErrInfo.Core.pszMsg)); +- +- /* +- * Uninstall the extpack if the error indicates that. +- */ +- if (ErrInfo.Core.rc == VERR_EXTPACK_UNSUPPORTED_HOST_UNINSTALL) +- runSetUidToRootHelper(a_pstrDisplayInfo, +- "uninstall", +- "--base-dir", m->strBaseDir.c_str(), +- "--name", pStrName->c_str(), +- "--forced", +- (const char *)NULL); +- hrc = setError(E_FAIL, tr("The installation hook failed: %Rrc - %s"), +- ErrInfo.Core.rc, ErrInfo.Core.pszMsg); +- } +- } +- else if (SUCCEEDED(hrc)) +- hrc = setError(E_FAIL, tr("Installing extension pack '%s' failed under mysterious circumstances"), +- pStrName->c_str()); +- } +- else +- { +- ErrorInfoKeeper Eik; +- refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, NULL); +- } +- } +- +- /* +- * Do VirtualBoxReady callbacks now for any freshly installed +- * extension pack (old ones will not be called). +- */ +- if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- autoLock.release(); +- callAllVirtualBoxReadyHooks(); +- } +- } +- +- return hrc; +-} +- +-/** +- * Thread wrapper around doUninstall. +- * +- * @returns VINF_SUCCESS (ignored) +- * @param hThread The thread handle (ignored). +- * @param pvJob The job structure. +- */ +-/*static*/ DECLCALLBACK(int) ExtPackManager::doUninstallThreadProc(RTTHREAD hThread, void *pvJob) +-{ +- PEXTPACKUNINSTALLJOB pJob = (PEXTPACKUNINSTALLJOB)pvJob; +- HRESULT hrc = pJob->ptrExtPackMgr->doUninstall(&pJob->strName, pJob->fForcedRemoval, &pJob->strDisplayInfo); +- pJob->ptrProgress->notifyComplete(hrc); +- delete pJob; +- +- NOREF(hThread); +- return VINF_SUCCESS; +-} +- +-/** +- * Worker for IExtPackManager::Uninstall. +- * +- * Called on a worker thread via doUninstallThreadProc. +- * +- * @returns COM status code. +- * @param a_pstrName The name of the extension pack to uninstall. +- * @param a_fForcedRemoval Whether to be skip and ignore certain bits of +- * the extpack feedback. To deal with misbehaving +- * extension pack hooks. +- * @param a_pstrDisplayInfo Host specific display information hacks. +- */ +-HRESULT ExtPackManager::doUninstall(Utf8Str const *a_pstrName, bool a_fForcedRemoval, Utf8Str const *a_pstrDisplayInfo) +-{ +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Refresh the data we have on the extension pack as it may be made +- * stale by direct meddling or some other user. +- */ +- ExtPack *pExtPack; +- hrc = refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (!pExtPack) +- { +- LogRel(("ExtPackManager: Extension pack '%s' is not installed, so nothing to uninstall.\n", a_pstrName->c_str())); +- hrc = S_OK; /* nothing to uninstall */ +- } +- else +- { +- /* +- * Call the uninstall hook and unload the main dll. +- */ +- hrc = pExtPack->callUninstallHookAndClose(m->pVirtualBox, a_fForcedRemoval); +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the set-uid-to-root binary that performs the +- * uninstallation. Then refresh the object. +- * +- * This refresh is theorically subject to races, but it's of +- * the don't-do-that variety. +- */ +- const char *pszForcedOpt = a_fForcedRemoval ? "--forced" : NULL; +- hrc = runSetUidToRootHelper(a_pstrDisplayInfo, +- "uninstall", +- "--base-dir", m->strBaseDir.c_str(), +- "--name", a_pstrName->c_str(), +- pszForcedOpt, /* Last as it may be NULL. */ +- (const char *)NULL); +- if (SUCCEEDED(hrc)) +- { +- hrc = refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (!pExtPack) +- LogRel(("ExtPackManager: Successfully uninstalled extension pack '%s'.\n", a_pstrName->c_str())); +- else +- hrc = setError(E_FAIL, +- tr("Uninstall extension pack '%s' failed under mysterious circumstances"), +- a_pstrName->c_str()); +- } +- } +- else +- { +- ErrorInfoKeeper Eik; +- refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, NULL); +- } +- } +- } +- } +- +- /* +- * Do VirtualBoxReady callbacks now for any freshly installed +- * extension pack (old ones will not be called). +- */ +- if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- autoLock.release(); +- callAllVirtualBoxReadyHooks(); +- } +- } +- +- return hrc; +-} +- +- +-/** +- * Calls the pfnVirtualBoxReady hook for all working extension packs. +- * +- * @remarks The caller must not hold any locks. +- */ +-void ExtPackManager::callAllVirtualBoxReadyHooks(void) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- /* advancing below */) +- { +- if ((*it)->callVirtualBoxReadyHook(m->pVirtualBox, &autoLock)) +- it = m->llInstalledExtPacks.begin(); +- else +- it++; +- } +-} +- +-/** +- * Calls the pfnConsoleReady hook for all working extension packs. +- * +- * @param a_pConsole The console interface. +- * @remarks The caller must not hold any locks. +- */ +-void ExtPackManager::callAllConsoleReadyHooks(IConsole *a_pConsole) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- /* advancing below */) +- { +- if ((*it)->callConsoleReadyHook(a_pConsole, &autoLock)) +- it = m->llInstalledExtPacks.begin(); +- else +- it++; +- } +-} +- +-/** +- * Calls the pfnVMCreated hook for all working extension packs. +- * +- * @param a_pMachine The machine interface of the new VM. +- */ +-void ExtPackManager::callAllVmCreatedHooks(IMachine *a_pMachine) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- (*it)->callVmCreatedHook(m->pVirtualBox, a_pMachine, &autoLock); +-} +- +-/** +- * Calls the pfnVMConfigureVMM hook for all working extension packs. +- * +- * @returns VBox status code. Stops on the first failure, expecting the caller +- * to signal this to the caller of the CFGM constructor. +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. +- */ +-int ExtPackManager::callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return Global::vboxStatusCodeFromCOM(hrc); +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- { +- int vrc; +- (*it)->callVmConfigureVmmHook(a_pConsole, a_pVM, &autoLock, &vrc); +- if (RT_FAILURE(vrc)) +- return vrc; +- } +- +- return VINF_SUCCESS; +-} +- +-/** +- * Calls the pfnVMPowerOn hook for all working extension packs. +- * +- * @returns VBox status code. Stops on the first failure, expecting the caller +- * to not power on the VM. +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. +- */ +-int ExtPackManager::callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return Global::vboxStatusCodeFromCOM(hrc); +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- { +- int vrc; +- (*it)->callVmPowerOnHook(a_pConsole, a_pVM, &autoLock, &vrc); +- if (RT_FAILURE(vrc)) +- return vrc; +- } +- +- return VINF_SUCCESS; +-} +- +-/** +- * Calls the pfnVMPowerOff hook for all working extension packs. +- * +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. Can be NULL. +- */ +-void ExtPackManager::callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- (*it)->callVmPowerOffHook(a_pConsole, a_pVM, &autoLock); +-} +- +- +-/** +- * Checks that the specified extension pack contains a VRDE module and that it +- * is shipshape. +- * +- * @returns S_OK if ok, appropriate failure status code with details. +- * @param a_pstrExtPack The name of the extension pack. +- */ +-HRESULT ExtPackManager::checkVrdeExtPack(Utf8Str const *a_pstrExtPack) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pstrExtPack->c_str()); +- if (pExtPack) +- hrc = pExtPack->checkVrde(); +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); +- } +- +- return hrc; +-} +- +-/** +- * Gets the full path to the VRDE library of the specified extension pack. +- * +- * This will do extacly the same as checkVrdeExtPack and then resolve the +- * library path. +- * +- * @returns S_OK if a path is returned, COM error status and message return if +- * not. +- * @param a_pstrExtPack The extension pack. +- * @param a_pstrVrdeLibrary Where to return the path. +- */ +-int ExtPackManager::getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pstrExtPack->c_str()); +- if (pExtPack) +- hrc = pExtPack->getVrdpLibraryName(a_pstrVrdeLibrary); +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); +- } +- +- return hrc; +-} +- +-/** +- * Gets the name of the default VRDE extension pack. +- * +- * @returns S_OK or some COM error status on red tape failure. +- * @param a_pstrExtPack Where to return the extension pack name. Returns +- * empty if no extension pack wishes to be the default +- * VRDP provider. +- */ +-HRESULT ExtPackManager::getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack) +-{ +- a_pstrExtPack->setNull(); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- if ((*it)->wantsToBeDefaultVrde()) +- { +- *a_pstrExtPack = (*it)->m->Desc.strName; +- break; +- } +- } +- } +- return hrc; +-} +- +-/** +- * Checks if an extension pack is (present and) usable. +- * +- * @returns @c true if it is, otherwise @c false. +- * @param a_pszExtPack The name of the extension pack. +- */ +-bool ExtPackManager::isExtPackUsable(const char *a_pszExtPack) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return false; +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pszExtPack); +- return pExtPack != NULL +- && pExtPack->m->fUsable; +-} +- +-/** +- * Dumps all extension packs to the release log. +- */ +-void ExtPackManager::dumpAllToReleaseLog(void) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- LogRel(("Installed Extension Packs:\n")); +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if (pExtPackData) +- { +- if (pExtPackData->fUsable) +- LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s)\n", +- pExtPackData->Desc.strName.c_str(), +- pExtPackData->Desc.strVersion.c_str(), +- pExtPackData->Desc.uRevision, +- pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", +- pExtPackData->Desc.strEdition.c_str(), +- pExtPackData->Desc.strVrdeModule.c_str() )); +- else +- LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s unusable because of '%s')\n", +- pExtPackData->Desc.strName.c_str(), +- pExtPackData->Desc.strVersion.c_str(), +- pExtPackData->Desc.uRevision, +- pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", +- pExtPackData->Desc.strEdition.c_str(), +- pExtPackData->Desc.strVrdeModule.c_str(), +- pExtPackData->strWhyUnusable.c_str() )); +- } +- else +- LogRel((" pExtPackData is NULL\n")); +- } +- +- if (!m->llInstalledExtPacks.size()) +- LogRel((" None installed!\n")); +-} +- +-/* vi: set tabstop=4 shiftwidth=4 expandtab: */ +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/ExtPackUtil.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,1385 +0,0 @@ +-/* $Id: ExtPackUtil.cpp $ */ +-/** @file +- * VirtualBox Main - Extension Pack Utilities and definitions, VBoxC, VBoxSVC, ++. +- */ +- +-/* +- * Copyright (C) 2010-2012 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +- +-/******************************************************************************* +-* Header Files * +-*******************************************************************************/ +-#include "../include/ExtPackUtil.h" +- +-#include <iprt/ctype.h> +-#include <iprt/dir.h> +-#include <iprt/file.h> +-#include <iprt/manifest.h> +-#include <iprt/param.h> +-#include <iprt/path.h> +-#include <iprt/sha.h> +-#include <iprt/string.h> +-#include <iprt/vfs.h> +-#include <iprt/tar.h> +-#include <iprt/zip.h> +-#include <iprt/cpp/xml.h> +- +-#include <VBox/log.h> +- +- +-/** +- * Worker for VBoxExtPackLoadDesc that loads the plug-in descriptors. +- * +- * @returns Same as VBoxExtPackLoadDesc. +- * @param pVBoxExtPackElm +- * @param pcPlugIns Where to return the number of plug-ins in the +- * array. +- * @param paPlugIns Where to return the plug-in descriptor array. +- * (RTMemFree it even on failure) +- */ +-static RTCString * +-vboxExtPackLoadPlugInDescs(const xml::ElementNode *pVBoxExtPackElm, +- uint32_t *pcPlugIns, PVBOXEXTPACKPLUGINDESC *paPlugIns) +-{ +- *pcPlugIns = 0; +- *paPlugIns = NULL; +- +- /** @todo plug-ins */ +- NOREF(pVBoxExtPackElm); +- +- return NULL; +-} +- +-/** +- * Clears the extension pack descriptor. +- * +- * @param a_pExtPackDesc The descriptor to clear. +- */ +-static void vboxExtPackClearDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- a_pExtPackDesc->strName.setNull(); +- a_pExtPackDesc->strDescription.setNull(); +- a_pExtPackDesc->strVersion.setNull(); +- a_pExtPackDesc->strEdition.setNull(); +- a_pExtPackDesc->uRevision = 0; +- a_pExtPackDesc->strMainModule.setNull(); +- a_pExtPackDesc->strVrdeModule.setNull(); +- a_pExtPackDesc->cPlugIns = 0; +- a_pExtPackDesc->paPlugIns = NULL; +- a_pExtPackDesc->fShowLicense = false; +-} +- +-/** +- * Initializes an extension pack descriptor so that it's safe to call free on +- * it whatever happens later on. +- * +- * @param a_pExtPackDesc The descirptor to initialize. +- */ +-void VBoxExtPackInitDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +-} +- +- +-/** +- * Load the extension pack descriptor from an XML document. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pDoc Pointer to the the XML document. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- */ +-static RTCString *vboxExtPackLoadDescFromDoc(xml::Document *a_pDoc, PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- /* +- * Get the main element and check its version. +- */ +- const xml::ElementNode *pVBoxExtPackElm = a_pDoc->getRootElement(); +- if ( !pVBoxExtPackElm +- || strcmp(pVBoxExtPackElm->getName(), "VirtualBoxExtensionPack") != 0) +- return new RTCString("No VirtualBoxExtensionPack element"); +- +- RTCString strFormatVersion; +- if (!pVBoxExtPackElm->getAttributeValue("version", strFormatVersion)) +- return new RTCString("Missing format version"); +- if (!strFormatVersion.equals("1.0")) +- return &(new RTCString("Unsupported format version: "))->append(strFormatVersion); +- +- /* +- * Read and validate mandatory bits. +- */ +- const xml::ElementNode *pNameElm = pVBoxExtPackElm->findChildElement("Name"); +- if (!pNameElm) +- return new RTCString("The 'Name' element is missing"); +- const char *pszName = pNameElm->getValue(); +- if (!VBoxExtPackIsValidName(pszName)) +- return &(new RTCString("Invalid name: "))->append(pszName); +- +- const xml::ElementNode *pDescElm = pVBoxExtPackElm->findChildElement("Description"); +- if (!pDescElm) +- return new RTCString("The 'Description' element is missing"); +- const char *pszDesc = pDescElm->getValue(); +- if (!pszDesc || *pszDesc == '\0') +- return new RTCString("The 'Description' element is empty"); +- if (strpbrk(pszDesc, "\n\r\t\v\b") != NULL) +- return new RTCString("The 'Description' must not contain control characters"); +- +- const xml::ElementNode *pVersionElm = pVBoxExtPackElm->findChildElement("Version"); +- if (!pVersionElm) +- return new RTCString("The 'Version' element is missing"); +- const char *pszVersion = pVersionElm->getValue(); +- if (!pszVersion || *pszVersion == '\0') +- return new RTCString("The 'Version' element is empty"); +- if (!VBoxExtPackIsValidVersionString(pszVersion)) +- return &(new RTCString("Invalid version string: "))->append(pszVersion); +- +- uint32_t uRevision; +- if (!pVersionElm->getAttributeValue("revision", uRevision)) +- uRevision = 0; +- +- const char *pszEdition; +- if (!pVersionElm->getAttributeValue("edition", pszEdition)) +- pszEdition = ""; +- if (!VBoxExtPackIsValidEditionString(pszEdition)) +- return &(new RTCString("Invalid edition string: "))->append(pszEdition); +- +- const xml::ElementNode *pMainModuleElm = pVBoxExtPackElm->findChildElement("MainModule"); +- if (!pMainModuleElm) +- return new RTCString("The 'MainModule' element is missing"); +- const char *pszMainModule = pMainModuleElm->getValue(); +- if (!pszMainModule || *pszMainModule == '\0') +- return new RTCString("The 'MainModule' element is empty"); +- if (!VBoxExtPackIsValidModuleString(pszMainModule)) +- return &(new RTCString("Invalid main module string: "))->append(pszMainModule); +- +- /* +- * The VRDE module, optional. +- * Accept both none and empty as tokens of no VRDE module. +- */ +- const char *pszVrdeModule = NULL; +- const xml::ElementNode *pVrdeModuleElm = pVBoxExtPackElm->findChildElement("VRDEModule"); +- if (pVrdeModuleElm) +- { +- pszVrdeModule = pVrdeModuleElm->getValue(); +- if (!pszVrdeModule || *pszVrdeModule == '\0') +- pszVrdeModule = NULL; +- else if (!VBoxExtPackIsValidModuleString(pszVrdeModule)) +- return &(new RTCString("Invalid VRDE module string: "))->append(pszVrdeModule); +- } +- +- /* +- * Whether to show the license, optional. (presense is enough here) +- */ +- const xml::ElementNode *pShowLicenseElm = pVBoxExtPackElm->findChildElement("ShowLicense"); +- bool fShowLicense = pShowLicenseElm != NULL; +- +- /* +- * Parse plug-in descriptions (last because of the manual memory management). +- */ +- uint32_t cPlugIns = 0; +- PVBOXEXTPACKPLUGINDESC paPlugIns = NULL; +- RTCString *pstrRet = vboxExtPackLoadPlugInDescs(pVBoxExtPackElm, &cPlugIns, &paPlugIns); +- if (pstrRet) +- { +- RTMemFree(paPlugIns); +- return pstrRet; +- } +- +- /* +- * Everything seems fine, fill in the return values and return successfully. +- */ +- a_pExtPackDesc->strName = pszName; +- a_pExtPackDesc->strDescription = pszDesc; +- a_pExtPackDesc->strVersion = pszVersion; +- a_pExtPackDesc->strEdition = pszEdition; +- a_pExtPackDesc->uRevision = uRevision; +- a_pExtPackDesc->strMainModule = pszMainModule; +- a_pExtPackDesc->strVrdeModule = pszVrdeModule; +- a_pExtPackDesc->cPlugIns = cPlugIns; +- a_pExtPackDesc->paPlugIns = paPlugIns; +- a_pExtPackDesc->fShowLicense = fShowLicense; +- +- return NULL; +-} +- +-/** +- * Reads the extension pack descriptor. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pszDir The directory containing the description file. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- * @param a_pObjInfo Where to store the object info for the file (unix +- * attribs). Optional. +- */ +-RTCString *VBoxExtPackLoadDesc(const char *a_pszDir, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +- +- /* +- * Validate, open and parse the XML file. +- */ +- char szFilePath[RTPATH_MAX]; +- int vrc = RTPathJoin(szFilePath, sizeof(szFilePath), a_pszDir, VBOX_EXTPACK_DESCRIPTION_NAME); +- if (RT_FAILURE(vrc)) +- return new RTCString("RTPathJoin failed with %Rrc", vrc); +- +- RTFSOBJINFO ObjInfo; +- vrc = RTPathQueryInfoEx(szFilePath, &ObjInfo, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- return &(new RTCString())->printf("RTPathQueryInfoEx failed with %Rrc", vrc); +- if (a_pObjInfo) +- *a_pObjInfo = ObjInfo; +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- { +- if (RTFS_IS_SYMLINK(ObjInfo.Attr.fMode)) +- return new RTCString("The XML file is symlinked, that is not allowed"); +- return &(new RTCString)->printf("The XML file is not a file (fMode=%#x)", ObjInfo.Attr.fMode); +- } +- +- xml::Document Doc; +- { +- xml::XmlFileParser Parser; +- try +- { +- Parser.read(szFilePath, Doc); +- } +- catch (xml::XmlError Err) +- { +- return new RTCString(Err.what()); +- } +- } +- +- /* +- * Hand the xml doc over to the common code. +- */ +- return vboxExtPackLoadDescFromDoc(&Doc, a_pExtPackDesc); +-} +- +-/** +- * Reads the extension pack descriptor. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pszDir The directory containing the description file. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- * @param a_pObjInfo Where to store the object info for the file (unix +- * attribs). Optional. +- */ +-RTCString *VBoxExtPackLoadDescFromVfsFile(RTVFSFILE hVfsFile, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +- +- /* +- * Query the object info. +- */ +- RTFSOBJINFO ObjInfo; +- int rc = RTVfsFileQueryInfo(hVfsFile, &ObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_FAILURE(rc)) +- return &(new RTCString)->printf("RTVfsFileQueryInfo failed: %Rrc", rc); +- if (a_pObjInfo) +- *a_pObjInfo = ObjInfo; +- +- /* +- * The simple approach, read the whole thing into memory and pass this to +- * the XML parser. +- */ +- +- /* Check the file size. */ +- if (ObjInfo.cbObject > _1M || ObjInfo.cbObject < 0) +- return &(new RTCString)->printf("The XML file is too large (%'RU64 bytes)", ObjInfo.cbObject); +- size_t const cbFile = (size_t)ObjInfo.cbObject; +- +- /* Rewind to the start of the file. */ +- rc = RTVfsFileSeek(hVfsFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return &(new RTCString)->printf("RTVfsFileSeek(,0,BEGIN) failed: %Rrc", rc); +- +- /* Allocate memory and read the file content into it. */ +- void *pvFile = RTMemTmpAlloc(cbFile); +- if (!pvFile) +- return &(new RTCString)->printf("RTMemTmpAlloc(%zu) failed", cbFile); +- +- RTCString *pstrErr = NULL; +- rc = RTVfsFileRead(hVfsFile, pvFile, cbFile, NULL); +- if (RT_FAILURE(rc)) +- pstrErr = &(new RTCString)->printf("RTVfsFileRead failed: %Rrc", rc); +- +- /* +- * Parse the file. +- */ +- xml::Document Doc; +- if (RT_SUCCESS(rc)) +- { +- xml::XmlMemParser Parser; +- RTCString strFileName = VBOX_EXTPACK_DESCRIPTION_NAME; +- try +- { +- Parser.read(pvFile, cbFile, strFileName, Doc); +- } +- catch (xml::XmlError Err) +- { +- pstrErr = new RTCString(Err.what()); +- rc = VERR_PARSE_ERROR; +- } +- } +- RTMemTmpFree(pvFile); +- +- /* +- * Hand the xml doc over to the common code. +- */ +- if (RT_SUCCESS(rc)) +- pstrErr = vboxExtPackLoadDescFromDoc(&Doc, a_pExtPackDesc); +- +- return pstrErr; +-} +- +-/** +- * Frees all resources associated with a extension pack descriptor. +- * +- * @param a_pExtPackDesc The extension pack descriptor which members +- * should be freed. +- */ +-void VBoxExtPackFreeDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- if (!a_pExtPackDesc) +- return; +- +- a_pExtPackDesc->strName.setNull(); +- a_pExtPackDesc->strDescription.setNull(); +- a_pExtPackDesc->strVersion.setNull(); +- a_pExtPackDesc->strEdition.setNull(); +- a_pExtPackDesc->uRevision = 0; +- a_pExtPackDesc->strMainModule.setNull(); +- a_pExtPackDesc->strVrdeModule.setNull(); +- a_pExtPackDesc->cPlugIns = 0; +- RTMemFree(a_pExtPackDesc->paPlugIns); +- a_pExtPackDesc->paPlugIns = NULL; +- a_pExtPackDesc->fShowLicense = false; +-} +- +-/** +- * Extract the extension pack name from the tarball path. +- * +- * @returns String containing the name on success, the caller must delete it. +- * NULL if no valid name was found or if we ran out of memory. +- * @param pszTarball The path to the tarball. +- */ +-RTCString *VBoxExtPackExtractNameFromTarballPath(const char *pszTarball) +-{ +- /* +- * Skip ahead to the filename part and count the number of characters +- * that matches the criteria for a mangled extension pack name. +- */ +- const char *pszSrc = RTPathFilename(pszTarball); +- if (!pszSrc) +- return NULL; +- +- size_t off = 0; +- while (RT_C_IS_ALNUM(pszSrc[off]) || pszSrc[off] == '_') +- off++; +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return NULL; +- +- /* +- * Return the unmangled name. +- */ +- return VBoxExtPackUnmangleName(pszSrc, off); +-} +- +-/** +- * Validates the extension pack name. +- * +- * @returns true if valid, false if not. +- * @param pszName The name to validate. +- * @sa VBoxExtPackExtractNameFromTarballPath +- */ +-bool VBoxExtPackIsValidName(const char *pszName) +-{ +- if (!pszName) +- return false; +- +- /* +- * Check the characters making up the name, only english alphabet +- * characters, decimal digits and spaces are allowed. +- */ +- size_t off = 0; +- while (pszName[off]) +- { +- if (!RT_C_IS_ALNUM(pszName[off]) && pszName[off] != ' ') +- return false; +- off++; +- } +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return false; +- +- return true; +-} +- +-/** +- * Checks if an alledged manged extension pack name. +- * +- * @returns true if valid, false if not. +- * @param pszMangledName The mangled name to validate. +- * @param cchMax The max number of chars to test. +- * @sa VBoxExtPackMangleName +- */ +-bool VBoxExtPackIsValidMangledName(const char *pszMangledName, size_t cchMax /*= RTSTR_MAX*/) +-{ +- if (!pszMangledName) +- return false; +- +- /* +- * Check the characters making up the name, only english alphabet +- * characters, decimal digits and underscores (=space) are allowed. +- */ +- size_t off = 0; +- while (off < cchMax && pszMangledName[off]) +- { +- if (!RT_C_IS_ALNUM(pszMangledName[off]) && pszMangledName[off] != '_') +- return false; +- off++; +- } +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return false; +- +- return true; +-} +- +-/** +- * Mangle an extension pack name so it can be used by a directory or file name. +- * +- * @returns String containing the mangled name on success, the caller must +- * delete it. NULL on failure. +- * @param pszName The unmangled name. +- * @sa VBoxExtPackUnmangleName, VBoxExtPackIsValidMangledName +- */ +-RTCString *VBoxExtPackMangleName(const char *pszName) +-{ +- AssertReturn(VBoxExtPackIsValidName(pszName), NULL); +- +- char szTmp[VBOX_EXTPACK_NAME_MAX_LEN + 1]; +- size_t off = 0; +- char ch; +- while ((ch = pszName[off]) != '\0') +- { +- if (ch == ' ') +- ch = '_'; +- szTmp[off++] = ch; +- } +- szTmp[off] = '\0'; +- Assert(VBoxExtPackIsValidMangledName(szTmp)); +- +- return new RTCString(szTmp, off); +-} +- +-/** +- * Unmangle an extension pack name (reverses VBoxExtPackMangleName). +- * +- * @returns String containing the mangled name on success, the caller must +- * delete it. NULL on failure. +- * @param pszMangledName The mangled name. +- * @param cchMax The max name length. RTSTR_MAX is fine. +- * @sa VBoxExtPackMangleName, VBoxExtPackIsValidMangledName +- */ +-RTCString *VBoxExtPackUnmangleName(const char *pszMangledName, size_t cchMax) +-{ +- AssertReturn(VBoxExtPackIsValidMangledName(pszMangledName, cchMax), NULL); +- +- char szTmp[VBOX_EXTPACK_NAME_MAX_LEN + 1]; +- size_t off = 0; +- char ch; +- while ( off < cchMax +- && (ch = pszMangledName[off]) != '\0') +- { +- if (ch == '_') +- ch = ' '; +- else +- AssertReturn(RT_C_IS_ALNUM(ch) || ch == ' ', NULL); +- szTmp[off++] = ch; +- } +- szTmp[off] = '\0'; +- AssertReturn(VBoxExtPackIsValidName(szTmp), NULL); +- +- return new RTCString(szTmp, off); +-} +- +-/** +- * Constructs the extension pack directory path. +- * +- * A combination of RTPathJoin and VBoxExtPackMangleName. +- * +- * @returns IPRT status code like RTPathJoin. +- * @param pszExtPackDir Where to return the directory path. +- * @param cbExtPackDir The size of the return buffer. +- * @param pszParentDir The parent directory (".../Extensions"). +- * @param pszName The extension pack name, unmangled. +- */ +-int VBoxExtPackCalcDir(char *pszExtPackDir, size_t cbExtPackDir, const char *pszParentDir, const char *pszName) +-{ +- AssertReturn(VBoxExtPackIsValidName(pszName), VERR_INTERNAL_ERROR_5); +- +- RTCString *pstrMangledName = VBoxExtPackMangleName(pszName); +- if (!pstrMangledName) +- return VERR_INTERNAL_ERROR_4; +- +- int vrc = RTPathJoin(pszExtPackDir, cbExtPackDir, pszParentDir, pstrMangledName->c_str()); +- delete pstrMangledName; +- +- return vrc; +-} +- +- +-/** +- * Validates the extension pack version string. +- * +- * @returns true if valid, false if not. +- * @param pszVersion The version string to validate. +- */ +-bool VBoxExtPackIsValidVersionString(const char *pszVersion) +-{ +- if (!pszVersion || *pszVersion == '\0') +- return false; +- +- /* 1.x.y.z... */ +- for (;;) +- { +- if (!RT_C_IS_DIGIT(*pszVersion)) +- return false; +- do +- pszVersion++; +- while (RT_C_IS_DIGIT(*pszVersion)); +- if (*pszVersion != '.') +- break; +- pszVersion++; +- } +- +- /* upper case string + numbers indicating the build type */ +- if (*pszVersion == '-' || *pszVersion == '_') +- { +- /** @todo Should probably restrict this to known build types (alpha, +- * beta, rc, ++). */ +- do +- pszVersion++; +- while ( RT_C_IS_DIGIT(*pszVersion) +- || RT_C_IS_UPPER(*pszVersion) +- || *pszVersion == '-' +- || *pszVersion == '_'); +- } +- +- return *pszVersion == '\0'; +-} +- +-/** +- * Validates the extension pack edition string. +- * +- * @returns true if valid, false if not. +- * @param pszEdition The edition string to validate. +- */ +-bool VBoxExtPackIsValidEditionString(const char *pszEdition) +-{ +- if (*pszEdition) +- { +- if (!RT_C_IS_UPPER(*pszEdition)) +- return false; +- +- do +- pszEdition++; +- while ( RT_C_IS_UPPER(*pszEdition) +- || RT_C_IS_DIGIT(*pszEdition) +- || *pszEdition == '-' +- || *pszEdition == '_'); +- } +- return *pszEdition == '\0'; +-} +- +-/** +- * Validates an extension pack module string. +- * +- * @returns true if valid, false if not. +- * @param pszModule The module string to validate. +- */ +-bool VBoxExtPackIsValidModuleString(const char *pszModule) +-{ +- if (!pszModule || *pszModule == '\0') +- return false; +- +- /* Restricted charset, no extensions (dots). */ +- while ( RT_C_IS_ALNUM(*pszModule) +- || *pszModule == '-' +- || *pszModule == '_') +- pszModule++; +- +- return *pszModule == '\0'; +-} +- +-/** +- * RTStrPrintfv wrapper. +- * +- * @returns @a rc +- * @param rc The status code to return. +- * @param pszError The error buffer. +- * @param cbError The size of the buffer. +- * @param pszFormat The error message format string. +- * @param ... Format arguments. +- */ +-static int vboxExtPackReturnError(int rc, char *pszError, size_t cbError, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- RTStrPrintfV(pszError, cbError, pszFormat, va); +- va_end(va); +- return rc; +-} +- +-/** +- * RTStrPrintfv wrapper. +- * +- * @param pszError The error buffer. +- * @param cbError The size of the buffer. +- * @param pszFormat The error message format string. +- * @param ... Format arguments. +- */ +-static void vboxExtPackSetError(char *pszError, size_t cbError, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- RTStrPrintfV(pszError, cbError, pszFormat, va); +- va_end(va); +-} +- +-/** +- * Verifies the manifest and its signature. +- * +- * @returns VBox status code, failures with message. +- * @param hManifestFile The xml from the extension pack. +- * @param pszExtPackName The expected extension pack name. This can be +- * NULL, in which we don't have any expectations. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackVerifyXml(RTVFSFILE hXmlFile, const char *pszExtPackName, char *pszError, size_t cbError) +-{ +- /* +- * Load the XML. +- */ +- VBOXEXTPACKDESC ExtPackDesc; +- RTCString *pstrErr = VBoxExtPackLoadDescFromVfsFile(hXmlFile, &ExtPackDesc, NULL); +- if (pstrErr) +- { +- RTStrCopy(pszError, cbError, pstrErr->c_str()); +- delete pstrErr; +- return VERR_PARSE_ERROR; +- } +- +- /* +- * Check the name. +- */ +- /** @todo drop this restriction after the old install interface is +- * dropped. */ +- int rc = VINF_SUCCESS; +- if ( pszExtPackName +- && !ExtPackDesc.strName.equalsIgnoreCase(pszExtPackName)) +- rc = vboxExtPackReturnError(VERR_NOT_EQUAL, pszError, cbError, +- "The name of the downloaded file and the name stored inside the extension pack does not match" +- " (xml='%s' file='%s')", ExtPackDesc.strName.c_str(), pszExtPackName); +- return rc; +-} +- +-/** +- * Verifies the manifest and its signature. +- * +- * @returns VBox status code, failures with message. +- * @param hOurManifest The manifest we compiled. +- * @param hManifestFile The manifest file in the extension pack. +- * @param hSignatureFile The manifest signature file. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackVerifyManifestAndSignature(RTMANIFEST hOurManifest, RTVFSFILE hManifestFile, RTVFSFILE hSignatureFile, +- char *pszError, size_t cbError) +-{ +- /* +- * Read the manifest from the extension pack. +- */ +- int rc = RTVfsFileSeek(hManifestFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTVfsFileSeek failed: %Rrc", rc); +- +- RTMANIFEST hTheirManifest; +- rc = RTManifestCreate(0 /*fFlags*/, &hTheirManifest); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- +- RTVFSIOSTREAM hVfsIos = RTVfsFileToIoStream(hManifestFile); +- rc = RTManifestReadStandard(hTheirManifest, hVfsIos); +- RTVfsIoStrmRelease(hVfsIos); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Compare the manifests. +- */ +- static const char *s_apszIgnoreEntries[] = +- { +- VBOX_EXTPACK_MANIFEST_NAME, +- VBOX_EXTPACK_SIGNATURE_NAME, +- "./" VBOX_EXTPACK_MANIFEST_NAME, +- "./" VBOX_EXTPACK_SIGNATURE_NAME, +- NULL +- }; +- char szError[RTPATH_MAX]; +- rc = RTManifestEqualsEx(hOurManifest, hTheirManifest, &s_apszIgnoreEntries[0], NULL, +- RTMANIFEST_EQUALS_IGN_MISSING_ATTRS /*fFlags*/, +- szError, sizeof(szError)); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Validate the manifest file signature. +- */ +- /** @todo implement signature stuff */ +- NOREF(hSignatureFile); +- +- } +- else if (rc == VERR_NOT_EQUAL && szError[0]) +- vboxExtPackSetError(pszError, cbError, "Manifest mismatch: %s", szError); +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEqualsEx failed: %Rrc", rc); +-#if 0 +- RTVFSIOSTREAM hVfsIosStdOut = NIL_RTVFSIOSTREAM; +- RTVfsIoStrmFromStdHandle(RTHANDLESTD_OUTPUT, RTFILE_O_WRITE, true, &hVfsIosStdOut); +- RTVfsIoStrmWrite(hVfsIosStdOut, "Our:\n", sizeof("Our:\n") - 1, true, NULL); +- RTManifestWriteStandard(hOurManifest, hVfsIosStdOut); +- RTVfsIoStrmWrite(hVfsIosStdOut, "Their:\n", sizeof("Their:\n") - 1, true, NULL); +- RTManifestWriteStandard(hTheirManifest, hVfsIosStdOut); +-#endif +- } +- else +- vboxExtPackSetError(pszError, cbError, "Error parsing '%s': %Rrc", VBOX_EXTPACK_MANIFEST_NAME, rc); +- +- RTManifestRelease(hTheirManifest); +- return rc; +-} +- +- +-/** +- * Verifies the file digest (if specified) and returns the SHA-256 of the file. +- * +- * @returns +- * @param hFileManifest Manifest containing a SHA-256 digest of the file +- * that was calculated as the file was processed. +- * @param pszFileDigest SHA-256 digest of the file. +- * @param pStrDigest Where to return the SHA-256 digest. Optional. +- * @param pszError Where to write an error message on failure. +- * @param cbError The size of the @a pszError buffer. +- */ +-static int vboxExtPackVerifyFileDigest(RTMANIFEST hFileManifest, const char *pszFileDigest, +- RTCString *pStrDigest, char *pszError, size_t cbError) +-{ +- /* +- * Extract the SHA-256 entry for the extpack file. +- */ +- char szCalculatedDigest[RTSHA256_DIGEST_LEN + 1]; +- int rc = RTManifestEntryQueryAttr(hFileManifest, "extpack", NULL /*no name*/, RTMANIFEST_ATTR_SHA256, +- szCalculatedDigest, sizeof(szCalculatedDigest), NULL); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Convert the two strings to binary form before comparing. +- * We convert the calculated hash even if we don't have anything to +- * compare with, just to validate it. +- */ +- uint8_t abCalculatedHash[RTSHA256_HASH_SIZE]; +- rc = RTSha256FromString(szCalculatedDigest, abCalculatedHash); +- if (RT_SUCCESS(rc)) +- { +- if ( pszFileDigest +- && *pszFileDigest != '\0') +- { +- uint8_t abFileHash[RTSHA256_HASH_SIZE]; +- rc = RTSha256FromString(pszFileDigest, abFileHash); +- if (RT_SUCCESS(rc)) +- { +- if (memcmp(abFileHash, abCalculatedHash, sizeof(abFileHash))) +- { +- vboxExtPackSetError(pszError, cbError, "The extension pack file has changed (SHA-256 mismatch)"); +- rc = VERR_NOT_EQUAL; +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "Bad SHA-256 '%s': %Rrc", szCalculatedDigest, rc); +- } +- +- /* +- * Set the output hash on success. +- */ +- if (pStrDigest && RT_SUCCESS(rc)) +- { +- try +- { +- *pStrDigest = szCalculatedDigest; +- } +- catch (std::bad_alloc) +- { +- rc = VERR_NO_MEMORY; +- } +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "Bad SHA-256 '%s': %Rrc", szCalculatedDigest, rc); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryGetAttr: %Rrc", rc); +- return rc; +-} +- +- +- +-/** +- * Validates a standard file. +- * +- * Generally all files are +- * +- * @returns VBox status code, failure message in @a pszError. +- * @param pszAdjName The adjusted member name. +- * @param enmType The VFS object type. +- * @param phVfsObj The pointer to the VFS object handle variable. +- * This is both input and output. +- * @param phVfsFile Where to store the handle to the memorized +- * file. This is NULL for license files. +- * @param pszError Where to write an error message on failure. +- * @param cbError The size of the @a pszError buffer. +- */ +-static int VBoxExtPackValidateStandardFile(const char *pszAdjName, RTVFSOBJTYPE enmType, +- PRTVFSOBJ phVfsObj, PRTVFSFILE phVfsFile, char *pszError, size_t cbError) +-{ +- int rc; +- +- /* +- * Make sure it's a file and that it isn't too large. +- */ +- if (phVfsFile && *phVfsFile != NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_DUPLICATE, pszError, cbError, +- "There can only be one '%s'", pszAdjName); +- else if (enmType != RTVFSOBJTYPE_IO_STREAM && enmType != RTVFSOBJTYPE_FILE) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "Standard member '%s' is not a file", pszAdjName); +- else +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(*phVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "Standard member '%s' is not a file", pszAdjName); +- else if (ObjInfo.cbObject >= _1M) +- rc = vboxExtPackReturnError(VERR_OUT_OF_RANGE, pszError, cbError, +- "Standard member '%s' is too large: %'RU64 bytes (max 1 MB)", +- pszAdjName, (uint64_t)ObjInfo.cbObject); +- else +- { +- /* +- * Make an in memory copy of the stream and check that the file +- * is UTF-8 clean. +- */ +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(*phVfsObj); +- RTVFSFILE hVfsFile; +- rc = RTVfsMemorizeIoStreamAsFile(hVfsIos, RTFILE_O_READ, &hVfsFile); +- if (RT_SUCCESS(rc)) +- { +- rc = RTVfsIoStrmValidateUtf8Encoding(hVfsIos, +- RTVFS_VALIDATE_UTF8_BY_RTC_3629 | RTVFS_VALIDATE_UTF8_NO_NULL, +- NULL); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Replace *phVfsObj with the memorized file. +- */ +- rc = RTVfsFileSeek(hVfsFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_SUCCESS(rc)) +- { +- RTVfsObjRelease(*phVfsObj); +- *phVfsObj = RTVfsObjFromFile(hVfsFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsFileSeek failed on '%s': %Rrc", pszAdjName, rc); +- } +- +- if (phVfsFile && RT_SUCCESS(rc)) +- *phVfsFile = hVfsFile; +- else +- RTVfsFileRelease(hVfsFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsMemorizeIoStreamAsFile failed on '%s': %Rrc", pszAdjName, rc); +- RTVfsIoStrmRelease(hVfsIos); +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszAdjName, rc); +- } +- return rc; +-} +- +- +-/** +- * Validates a name in an extension pack. +- * +- * We restrict the charset to try make sure the extension pack can be unpacked +- * on all file systems. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name to validate. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberName(const char *pszName, char *pszError, size_t cbError) +-{ +- if (RTPathStartsWithRoot(pszName)) +- return vboxExtPackReturnError(VERR_PATH_IS_NOT_RELATIVE, pszError, cbError, "'%s': starts with root spec", pszName); +- +- const char *pszErr = NULL; +- const char *psz = pszName; +- int ch; +- while ((ch = *psz) != '\0') +- { +- /* Character set restrictions. */ +- if (ch < 0 || ch >= 128) +- { +- pszErr = "Only 7-bit ASCII allowed"; +- break; +- } +- if (ch <= 31 || ch == 127) +- { +- pszErr = "No control characters are not allowed"; +- break; +- } +- if (ch == '\\') +- { +- pszErr = "Only backward slashes are not allowed"; +- break; +- } +- if (strchr("'\":;*?|[]<>(){}", ch)) +- { +- pszErr = "The characters ', \", :, ;, *, ?, |, [, ], <, >, (, ), { and } are not allowed"; +- break; +- } +- +- /* Take the simple way out and ban all ".." sequences. */ +- if ( ch == '.' +- && psz[1] == '.') +- { +- pszErr = "Double dot sequence are not allowed"; +- break; +- } +- +- /* Keep the tree shallow or the hardening checks will fail. */ +- if (psz - pszName > VBOX_EXTPACK_MAX_MEMBER_NAME_LENGTH) +- { +- pszErr = "Too long"; +- break; +- } +- +- /* advance */ +- psz++; +- } +- +- if (pszErr) +- return vboxExtPackReturnError(VERR_INVALID_NAME, pszError, cbError, +- "Bad member name '%s' (pos %zu): %s", pszName, (size_t)(psz - pszName), pszErr); +- return RTEXITCODE_SUCCESS; +-} +- +- +-/** +- * Validates a file in an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the file. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberFile(const char *pszName, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- int rc = vboxExtPackValidateMemberName(pszName, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(hVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (ObjInfo.cbObject >= 9*_1G64) +- rc = vboxExtPackReturnError(VERR_OUT_OF_RANGE, pszError, cbError, +- "'%s': too large (%'RU64 bytes)", +- pszName, (uint64_t)ObjInfo.cbObject); +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "The alleged file '%s' has a mode mask stating otherwise (%RTfmode)", +- pszName, ObjInfo.Attr.fMode); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszName, rc); +- } +- return rc; +-} +- +- +-/** +- * Validates a directory in an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the directory. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberDir(const char *pszName, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- int rc = vboxExtPackValidateMemberName(pszName, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(hVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (!RTFS_IS_DIRECTORY(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_DIRECTORY, pszError, cbError, +- "The alleged directory '%s' has a mode mask saying differently (%RTfmode)", +- pszName, ObjInfo.Attr.fMode); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszName, rc); +- } +- return rc; +-} +- +-/** +- * Validates a member of an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the directory. +- * @param enmType The object type. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-int VBoxExtPackValidateMember(const char *pszName, RTVFSOBJTYPE enmType, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- Assert(cbError > 0); +- *pszError = '\0'; +- +- int rc; +- if ( enmType == RTVFSOBJTYPE_FILE +- || enmType == RTVFSOBJTYPE_IO_STREAM) +- rc = vboxExtPackValidateMemberFile(pszName, hVfsObj, pszError, cbError); +- else if ( enmType == RTVFSOBJTYPE_DIR +- || enmType == RTVFSOBJTYPE_BASE) +- rc = vboxExtPackValidateMemberDir(pszName, hVfsObj, pszError, cbError); +- else +- rc = vboxExtPackReturnError(VERR_UNEXPECTED_FS_OBJ_TYPE, pszError, cbError, +- "'%s' is not a file or directory (enmType=%d)", pszName, enmType); +- return rc; +-} +- +- +-/** +- * Rewinds the tarball file handle and creates a gunzip | tar chain that +- * results in a filesystem stream. +- * +- * @returns VBox status code, failures with message. +- * @param hTarballFile The handle to the tarball file. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- * @param phTarFss Where to return the filesystem stream handle. +- * @param phFileManifest Where to return a manifest where the tarball is +- * gettting hashed. The entry will be called +- * "extpack" and be ready when the file system +- * stream is at an end. Optional. +- */ +-int VBoxExtPackOpenTarFss(RTFILE hTarballFile, char *pszError, size_t cbError, PRTVFSFSSTREAM phTarFss, PRTMANIFEST phFileManifest) +-{ +- Assert(cbError > 0); +- *pszError = '\0'; +- *phTarFss = NIL_RTVFSFSSTREAM; +- +- /* +- * Rewind the file and set up a VFS chain for it. +- */ +- int rc = RTFileSeek(hTarballFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "Failed seeking to the start of the tarball: %Rrc", rc); +- +- RTVFSIOSTREAM hTarballIos; +- rc = RTVfsIoStrmFromRTFile(hTarballFile, RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN, true /*fLeaveOpen*/, +- &hTarballIos); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTVfsIoStrmFromRTFile failed: %Rrc", rc); +- +- RTMANIFEST hFileManifest = NIL_RTMANIFEST; +- rc = RTManifestCreate(0 /*fFlags*/, &hFileManifest); +- if (RT_SUCCESS(rc)) +- { +- RTVFSIOSTREAM hPtIos; +- rc = RTManifestEntryAddPassthruIoStream(hFileManifest, hTarballIos, "extpack", RTMANIFEST_ATTR_SHA256, true /*read*/, &hPtIos); +- if (RT_SUCCESS(rc)) +- { +- RTVFSIOSTREAM hGunzipIos; +- rc = RTZipGzipDecompressIoStream(hPtIos, 0 /*fFlags*/, &hGunzipIos); +- if (RT_SUCCESS(rc)) +- { +- RTVFSFSSTREAM hTarFss; +- rc = RTZipTarFsStreamFromIoStream(hGunzipIos, 0 /*fFlags*/, &hTarFss); +- if (RT_SUCCESS(rc)) +- { +- RTVfsIoStrmRelease(hPtIos); +- RTVfsIoStrmRelease(hGunzipIos); +- RTVfsIoStrmRelease(hTarballIos); +- *phTarFss = hTarFss; +- if (phFileManifest) +- *phFileManifest = hFileManifest; +- else +- RTManifestRelease(hFileManifest); +- return VINF_SUCCESS; +- } +- +- vboxExtPackSetError(pszError, cbError, "RTZipTarFsStreamFromIoStream failed: %Rrc", rc); +- RTVfsIoStrmRelease(hGunzipIos); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTZipGzipDecompressIoStream failed: %Rrc", rc); +- RTVfsIoStrmRelease(hPtIos); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryAddPassthruIoStream failed: %Rrc", rc); +- RTManifestRelease(hFileManifest); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- +- RTVfsIoStrmRelease(hTarballIos); +- return rc; +-} +- +- +-/** +- * Validates the extension pack tarball prior to unpacking. +- * +- * Operations performed: +- * - Mandatory files. +- * - Manifest check. +- * - Manifest seal check. +- * - XML check, match name. +- * +- * @returns VBox status code, failures with message. +- * @param hTarballFile The handle to open the @a pszTarball file. +- * @param pszExtPackName The name of the extension pack name. NULL if +- * the name is not fixed. +- * @param pszTarball The name of the tarball in case we have to +- * complain about something. +- * @param pszTarballDigest The SHA-256 digest of the tarball. Empty string +- * if no digest available. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- * @param phValidManifest Where to optionally return the handle to fully +- * validated the manifest for the extension pack. +- * This includes all files. +- * @param phXmlFile Where to optionally return the memorized XML +- * file. +- * @param pStrDigest Where to return the digest of the file. +- * Optional. +- */ +-int VBoxExtPackValidateTarball(RTFILE hTarballFile, const char *pszExtPackName, +- const char *pszTarball, const char *pszTarballDigest, +- char *pszError, size_t cbError, +- PRTMANIFEST phValidManifest, PRTVFSFILE phXmlFile, RTCString *pStrDigest) +-{ +- /* +- * Clear return values. +- */ +- if (phValidManifest) +- *phValidManifest = NIL_RTMANIFEST; +- if (phXmlFile) +- *phXmlFile = NIL_RTVFSFILE; +- Assert(cbError > 1); +- *pszError = '\0'; +- NOREF(pszTarball); +- +- /* +- * Open the tar.gz filesystem stream and set up an manifest in-memory file. +- */ +- RTMANIFEST hFileManifest; +- RTVFSFSSTREAM hTarFss; +- int rc = VBoxExtPackOpenTarFss(hTarballFile, pszError, cbError, &hTarFss, &hFileManifest); +- if (RT_FAILURE(rc)) +- return rc; +- +- RTMANIFEST hOurManifest; +- rc = RTManifestCreate(0 /*fFlags*/, &hOurManifest); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Process the tarball (would be nice to move this to a function). +- */ +- RTVFSFILE hXmlFile = NIL_RTVFSFILE; +- RTVFSFILE hManifestFile = NIL_RTVFSFILE; +- RTVFSFILE hSignatureFile = NIL_RTVFSFILE; +- for (;;) +- { +- /* +- * Get the next stream object. +- */ +- char *pszName; +- RTVFSOBJ hVfsObj; +- RTVFSOBJTYPE enmType; +- rc = RTVfsFsStrmNext(hTarFss, &pszName, &enmType, &hVfsObj); +- if (RT_FAILURE(rc)) +- { +- if (rc != VERR_EOF) +- vboxExtPackSetError(pszError, cbError, "RTVfsFsStrmNext failed: %Rrc", rc); +- else +- rc = VINF_SUCCESS; +- break; +- } +- const char *pszAdjName = pszName[0] == '.' && pszName[1] == '/' ? &pszName[2] : pszName; +- +- /* +- * Check the type & name validity, performing special tests on +- * standard extension pack member files. +- * +- * N.B. We will always reach the end of the loop before breaking on +- * failure - cleanup reasons. +- */ +- rc = VBoxExtPackValidateMember(pszName, enmType, hVfsObj, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- PRTVFSFILE phVfsFile = NULL; +- if (!strcmp(pszAdjName, VBOX_EXTPACK_DESCRIPTION_NAME)) +- phVfsFile = &hXmlFile; +- else if (!strcmp(pszAdjName, VBOX_EXTPACK_MANIFEST_NAME)) +- phVfsFile = &hManifestFile; +- else if (!strcmp(pszAdjName, VBOX_EXTPACK_SIGNATURE_NAME)) +- phVfsFile = &hSignatureFile; +- else if (!strncmp(pszAdjName, VBOX_EXTPACK_LICENSE_NAME_PREFIX, sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX) - 1)) +- rc = VBoxExtPackValidateStandardFile(pszAdjName, enmType, &hVfsObj, NULL, pszError, cbError); +- if (phVfsFile) +- rc = VBoxExtPackValidateStandardFile(pszAdjName, enmType, &hVfsObj, phVfsFile, pszError, cbError); +- } +- +- /* +- * Add any I/O stream to the manifest +- */ +- if ( RT_SUCCESS(rc) +- && ( enmType == RTVFSOBJTYPE_FILE +- || enmType == RTVFSOBJTYPE_IO_STREAM)) +- { +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(hVfsObj); +- rc = RTManifestEntryAddIoStream(hOurManifest, hVfsIos, pszAdjName, RTMANIFEST_ATTR_SIZE | RTMANIFEST_ATTR_SHA256); +- if (RT_FAILURE(rc)) +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryAddIoStream failed on '%s': %Rrc", pszAdjName, rc); +- RTVfsIoStrmRelease(hVfsIos); +- } +- +- /* +- * Clean up and break out on failure. +- */ +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- if (RT_FAILURE(rc)) +- break; +- } +- +- /* +- * Check the integrity of the tarball file. +- */ +- if (RT_SUCCESS(rc)) +- { +- RTVfsFsStrmRelease(hTarFss); +- hTarFss = NIL_RTVFSFSSTREAM; +- rc = vboxExtPackVerifyFileDigest(hFileManifest, pszTarballDigest, pStrDigest, pszError, cbError); +- } +- +- /* +- * If we've successfully processed the tarball, verify that the +- * mandatory files are present. +- */ +- if (RT_SUCCESS(rc)) +- { +- if (hXmlFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_DESCRIPTION_NAME); +- if (hManifestFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_MANIFEST_NAME); +- if (hSignatureFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_SIGNATURE_NAME); +- } +- +- /* +- * Check the manifest and it's signature. +- */ +- if (RT_SUCCESS(rc)) +- rc = vboxExtPackVerifyManifestAndSignature(hOurManifest, hManifestFile, hSignatureFile, pszError, cbError); +- +- /* +- * Check the XML. +- */ +- if (RT_SUCCESS(rc)) +- rc = vboxExtPackVerifyXml(hXmlFile, pszExtPackName, pszError, cbError); +- +- /* +- * Returns objects. +- */ +- if (RT_SUCCESS(rc)) +- { +- if (phValidManifest) +- { +- RTManifestRetain(hOurManifest); +- *phValidManifest = hOurManifest; +- } +- if (phXmlFile) +- { +- RTVfsFileRetain(hXmlFile); +- *phXmlFile = hXmlFile; +- } +- } +- +- /* +- * Release our object references. +- */ +- RTManifestRelease(hOurManifest); +- RTVfsFileRelease(hXmlFile); +- RTVfsFileRelease(hManifestFile); +- RTVfsFileRelease(hSignatureFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- RTVfsFsStrmRelease(hTarFss); +- RTManifestRelease(hFileManifest); +- +- return rc; +-} +- +--- VirtualBox-4.1.18.orig/include/Makefile.kmk 2012-06-20 10:07:49.000000000 -0300 ++++ VirtualBox-4.1.18/include/Makefile.kmk 2012-07-24 21:11:57.007068865 -0300 +@@ -51,7 +51,6 @@ + VBox/vd-cache-plugin.h \ + VBox/vmm/uvm.h \ + VBox/vscsi.h \ +- $(wildcard VBox/ExtPack/*.h ) \ + iprt/alloca.h \ + iprt/tcp.h \ + iprt/localipc.h \ +--- VirtualBox-4.1.18.orig/src/Makefile.kmk 2012-06-20 10:07:57.000000000 -0300 ++++ VirtualBox-4.1.18/src/Makefile.kmk 2012-07-24 22:51:10.206996034 -0300 +@@ -26,14 +26,6 @@ + include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk + include $(PATH_SUB_CURRENT)/libs/Makefile.kmk + +-else if defined(VBOX_ONLY_EXTPACKS) +- include $(PATH_SUB_CURRENT)/bldprogs/Makefile.kmk +- include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk +- include $(PATH_SUB_CURRENT)/libs/Makefile.kmk +- ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- include $(PATH_SUB_CURRENT)/recompiler/Makefile.kmk +- endif +- + else if defined(VBOX_ONLY_TESTSUITE) + include $(PATH_SUB_CURRENT)/libs/Makefile.kmk + include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk +--- VirtualBox-4.1.18.orig/src/VBox/Makefile.kmk 2012-07-24 21:19:55.565641784 -0300 ++++ VirtualBox-4.1.18/src/VBox/Makefile.kmk 2012-07-24 22:12:55.429156962 -0300 +@@ -33,19 +33,6 @@ + include $(PATH_SUB_CURRENT)/HostDrivers/Makefile.kmk + include $(PATH_SUB_CURRENT)/Frontends/Makefile.kmk + +-else ifdef VBOX_ONLY_EXTPACKS +- include $(PATH_SUB_CURRENT)/Runtime/Makefile.kmk +- include $(PATH_SUB_CURRENT)/Devices/Makefile.kmk +- include $(PATH_SUB_CURRENT)/HostDrivers/Makefile.kmk +- include $(PATH_SUB_CURRENT)/ExtPacks/Makefile.kmk +- ifdef VBOX_WITH_VRDP +- include $(PATH_SUB_CURRENT)/RDP/Makefile.kmk +- endif +- include $(PATH_SUB_CURRENT)/VMM/Makefile.kmk +- ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- include $(PATH_SUB_CURRENT)/Disassembler/Makefile.kmk +- endif +- + else ifdef VBOX_ONLY_SDK + include $(PATH_SUB_CURRENT)/Main/Makefile.kmk + ifdef VBOX_WITH_VRDP +@@ -92,9 +79,6 @@ + if1of ($(KBUILD_TARGET_ARCH), amd64 x86) + include $(PATH_SUB_CURRENT)/NetworkServices/Makefile.kmk + endif +- ifndef VBOX_OSE +- include $(PATH_SUB_CURRENT)/ExtPacks/Makefile.kmk +- endif + ifdef VBOX_WITH_INSTALLER + include $(PATH_SUB_CURRENT)/Installer/Makefile.kmk # Keep this last. + endif +--- VirtualBox-4.1.18/src/libs/Makefile.kmk.orig 2012-07-24 21:23:26.938013023 -0300 ++++ VirtualBox-4.1.18/src/libs/Makefile.kmk 2012-07-24 21:43:42.557911752 -0300 +@@ -48,13 +48,6 @@ + include $(PATH_SUB_CURRENT)/kStuff/Makefile.kmk + endif + +-# OpenSSL. +-if !defined(VBOX_ONLY_SDK) \ +- && ( "$(SDK_VBOX_OPENSSL_INCS)" == "$(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS)" \ +- || defined(VBOX_WITH_EXTPACK_PUEL_BUILD)) +- include $(PATH_SUB_CURRENT)/openssl-0.9.8t/Makefile.kmk +-endif +- + # libjpeg for VRDP video redirection + if defined(VBOX_WITH_VRDP) && defined(VBOX_WITH_VRDP_VIDEO_CHANNEL) + include $(PATH_SUB_CURRENT)/jpeg-8a/Makefile.kmk +--- VirtualBox-4.1.18.orig/src/VBox/Devices/Makefile.kmk 2012-07-24 23:06:45.916276235 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/Makefile.kmk 2012-07-24 23:17:00.202963228 -0300 +@@ -21,9 +21,7 @@ + + # Include sub-makefiles. + include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk +-if defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS) +- include $(PATH_SUB_CURRENT)/PC/PXE/Makefile.kmk +-else if defined(VBOX_WITH_PXE_ROM) && !defined(VBOX_WITHOUT_ETHERBOOT) ++if defined(VBOX_WITH_PXE_ROM) && !defined(VBOX_WITHOUT_ETHERBOOT) + include $(PATH_SUB_CURRENT)/PC/Etherboot-src/Makefile.kmk + endif + if !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file. +@@ -57,9 +55,6 @@ + ifdef VBOX_WITH_USB + VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB + VBoxDDU_SDKS.win = WINPSDK W2K3DDK +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDU_DEFS += VBOX_WITH_EHCI_IMPL +- endif + ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN + VBoxDDU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN + endif +@@ -122,9 +117,6 @@ + VBoxDD_DEFS = VBOX_ACPI + ifdef VBOX_WITH_USB + VBoxDD_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDD_DEFS += VBOX_WITH_EHCI_IMPL +- endif + endif + ifdef VBOX_WITH_VUSB + VBoxDD_DEFS += VBOX_WITH_VUSB +@@ -446,11 +438,6 @@ + endif + ifdef VBOX_WITH_USB + DevicesR3_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- DevicesR3_DEFS += VBOX_WITH_EHCI_IMPL +- DevicesR3_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) + DevicesR3_DEFS += VBOX_WITH_PCI_PASSTHROUGH_IMPL +@@ -607,11 +594,6 @@ + + ifdef VBOX_WITH_USB + VBoxDDGC_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDGC_DEFS += VBOX_WITH_EHCI_IMPL +- VBoxDDGC_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + + ifdef VBOX_WITH_VIDEOHWACCEL +@@ -711,11 +693,6 @@ + endif + ifdef VBOX_WITH_USB + VBoxDDR0_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDR0_DEFS += VBOX_WITH_EHCI_IMPL +- VBoxDDR0_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + + if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +@@ -1204,49 +1181,5 @@ + + endif # !VBOX_ONLY_EXTPACKS + +-if defined(VBOX_WITH_EXTPACK_PUEL) && defined(VBOX_WITH_EXTPACK_PUEL_BUILD) +- # +- # The EHCI (USB 2.0) Extension Pack Modules. +- # +- if defined(VBOX_WITH_USB) +- DLLS += VBoxEhciR3 +- VBoxEhciR3_TEMPLATE = VBoxR3ExtPackPuel +- VBoxEhciR3_SOURCES = USB/DevEHCI.cpp +- +- SYSMODS += VBoxEhciR0 +- VBoxEhciR0_TEMPLATE = VBoxR0ExtPackPuel +- VBoxEhciR0_SOURCES = USB/DevEHCI.cpp +- +- ifdef VBOX_WITH_RAW_MODE +- SYSMODS += VBoxEhciRC +- VBoxEhciRC_TEMPLATE = VBoxRcExtPackPuel +- VBoxEhciRC_SOURCES = USB/DevEHCI.cpp +- endif +- endif +- +- if defined(VBOX_WITH_PCI_PASSTHROUGH) +- DLLS += VBoxPciRawR3 +- VBoxPciRawR3_TEMPLATE = VBoxR3ExtPackPuel +- VBoxPciRawR3_SOURCES = Bus/DevPciRaw.cpp +- +- DLLS += VBoxPciRawDrv +- VBoxPciRawDrv_TEMPLATE = VBoxR3ExtPackPuel +- VBoxPciRawDrv_SOURCES = Bus/DrvPciRaw.cpp +- +- SYSMODS += VBoxPciRawR0 +- VBoxPciRawR0_TEMPLATE = VBoxR0ExtPackPuel +- VBoxPciRawR0_SOURCES = Bus/DevPciRaw.cpp +- +- Bus/DevPciRaw.cpp_INCS = Bus +- endif +- +- # +- # The Intel PXE rom. +- # +- INSTALLS += VBoxExtPackPuelInsRoms +- VBoxExtPackPuelInsRoms_TEMPLATE = VBoxInsExtPackPuel +- VBoxExtPackPuelInsRoms_SOURCES = PC/PXE/PXE-Intel.rom=>PXE-Intel.rom +-endif # VBOX_WITH_EXTPACK_PUEL +- + include $(KBUILD_PATH)/subfooter.kmk + +--- VirtualBox-4.1.18.orig/src/VBox/Main/Makefile.kmk 2012-07-24 23:38:25.304126039 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/Makefile.kmk 2012-07-24 23:38:25.350789964 -0300 +@@ -230,14 +230,12 @@ + $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,) \ + $(if $(VBOX_USB_WITH_INOTIFY),VBOX_USB_WITH_INOTIFY,) \ + $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \ +- $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \ + $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \ + $(if $(VBOX_WITH_S3),VBOX_WITH_S3,) \ + $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) + ifdef VBOX_WITH_USB + VBoxSVC_DEFS += \ + VBOX_WITH_USB \ +- $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \ + $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,) + endif + VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE +@@ -290,7 +288,6 @@ + src-all/SharedFolderImpl.cpp \ + src-all/VirtualBoxBase.cpp \ + src-all/VirtualBoxErrorInfoImpl.cpp \ +- $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \ + src-server/ApplianceImpl.cpp \ + src-server/ApplianceImplExport.cpp \ + src-server/ApplianceImplImport.cpp \ +@@ -543,8 +540,6 @@ + $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \ + $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \ + $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \ +- $(if-expr defined(VBOX_WITH_EHCI) && defined(VBOX_WITH_USB),VBOX_WITH_EHCI,) \ +- $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \ + $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) + + VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE +@@ -602,7 +597,6 @@ + src-all/SharedFolderImpl.cpp \ + src-all/VirtualBoxBase.cpp \ + src-all/VirtualBoxErrorInfoImpl.cpp \ +- $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \ + $(if $(VBOX_WITH_USB_VIDEO),src-client/UsbWebcamInterface.cpp,) \ + $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \ + src-client/AdditionsFacilityImpl.cpp \ +@@ -711,22 +705,6 @@ + endif # !win + + +-# +-# The VBoxExtPackHelperApp. +-# +-ifdef VBOX_WITH_EXTPACK +- PROGRAMS += VBoxExtPackHelperApp +- VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot +- VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security +- VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows +- VBoxExtPackHelperApp_SOURCES = \ +- src-helper-apps/VBoxExtPackHelperApp.cpp \ +- src-all/ExtPackUtil.cpp +- VBoxExtPackHelperApp_LIBS = \ +- $(LIB_RUNTIME) +-endif # VBOX_WITH_EXTPACK +- +- + endif # !VBOX_ONLY_SDK (the ifndef is far above) + + +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/Makefile.kmk 2012-07-24 23:25:04.575825175 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/Makefile.kmk 2012-07-24 23:25:04.619156084 -0300 +@@ -888,7 +888,6 @@ + $(VBOX_MACOSX_ICON_FILE)=>Resources/virtualbox.icns \ + $(VBOX_BRAND_GUI_VBOX_64PX_PNG)=>Resources/virtualbox.png \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vbox.icns=>Resources/virtualbox-vbox.icns \ +- $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vbox-extpack.icns=>Resources/virtualbox-vbox-extpack.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-ovf.icns=>Resources/virtualbox-ovf.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-ova.icns=>Resources/virtualbox-ova.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vdi.icns=>Resources/virtualbox-vdi.icns \ +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-24 23:28:17.985011038 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-24 23:28:18.051673913 -0300 +@@ -167,18 +167,6 @@ + <file alias="status_check_32px.png">images/status_check_32px.png</file> + <file alias="status_error_16px.png">images/status_error_16px.png</file> + <file alias="status_error_32px.png">images/status_error_32px.png</file> +- <file alias="extension_pack_16px.png">images/extension_pack_16px.png</file> +- <file alias="extension_pack_disabled_16px.png">images/extension_pack_disabled_16px.png</file> +- <file alias="extension_pack_32px.png">images/extension_pack_32px.png</file> +- <file alias="extension_pack_disabled_32px.png">images/extension_pack_disabled_32px.png</file> +- <file alias="extension_pack_install_16px.png">images/extension_pack_install_16px.png</file> +- <file alias="extension_pack_install_disabled_16px.png">images/extension_pack_install_disabled_16px.png</file> +- <file alias="extension_pack_install_32px.png">images/extension_pack_install_32px.png</file> +- <file alias="extension_pack_install_disabled_32px.png">images/extension_pack_install_disabled_32px.png</file> +- <file alias="extension_pack_uninstall_16px.png">images/extension_pack_uninstall_16px.png</file> +- <file alias="extension_pack_uninstall_disabled_16px.png">images/extension_pack_uninstall_disabled_16px.png</file> +- <file alias="extension_pack_uninstall_32px.png">images/extension_pack_uninstall_32px.png</file> +- <file alias="extension_pack_uninstall_disabled_32px.png">images/extension_pack_uninstall_disabled_32px.png</file> + <file alias="proxy_16px.png">images/proxy_16px.png</file> + <file alias="proxy_disabled_16px.png">images/proxy_disabled_16px.png</file> + <file alias="proxy_32px.png">images/proxy_32px.png</file> +--- VirtualBox-4.1.18.orig/src/VBox/Installer/linux/Makefile.kmk 2012-07-25 00:32:00.780012664 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/linux/Makefile.kmk 2012-07-25 00:32:00.806677728 -0300 +@@ -170,11 +170,6 @@ + VBox.sh \ + VBox.png + +-ifdef VBOX_WITH_EXTPACK +- VBOX_LNX_STRIP_BIN += \ +- VBoxExtPackHelperApp +-endif +- + # Qt4 GUI + ifdef VBOX_WITH_QTGUI + include $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk +@@ -286,7 +281,7 @@ + + VBOX_MIME_ICONS = \ + $(addprefix $(PATH_ROOT)/src/VBox/Resources/other/,\ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/virtualbox-$(f).png))) + +--- VirtualBox-4.1.18.orig/src/VBox/Installer/win/Makefile.kmk 2012-07-25 00:34:52.253398525 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/win/Makefile.kmk 2012-07-25 00:34:52.300062531 -0300 +@@ -435,7 +435,6 @@ + -E 'VBOX_WITH_DEBUGGER_GUI=$(if-expr defined(VBOX_WITH_DEBUGGER_GUI) && defined(VBOX_WITH_QTGUI),yes,no)' \ + -E 'VBOX_WITH_DOCS_PACKING=$(if $(VBOX_WITH_DOCS_PACKING),yes,no)' \ + -E 'VBOX_WITH_EFIFW_PACKING=$(if $(VBOX_WITH_EFIFW_PACKING),yes,no)' \ +- -E 'VBOX_WITH_EXTPACK=$(if $(VBOX_WITH_EXTPACK),yes,no)' \ + -E 'VBOX_WITH_GUEST_CONTROL=$(if $(VBOX_WITH_GUEST_CONTROL),yes,no)' \ + -E 'VBOX_WITH_GUEST_PROPS=$(if $(VBOX_WITH_GUEST_PROPS),yes,no)' \ + -E 'VBOX_WITH_NETFLT=$(if $(VBOX_WITH_NETFLT),yes,no)' \ +--- VirtualBox-4.1.18.orig/src/VBox/Installer/darwin/Makefile.kmk 2012-07-25 00:36:55.929571374 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/darwin/Makefile.kmk 2012-07-25 00:36:55.959569630 -0300 +@@ -629,7 +629,6 @@ + MacOS/VirtualBoxVM \ + MacOS/VBoxNetAdpCtl \ + MacOS/VBoxNetDHCP \ +- MacOS/VBoxExtPackHelperApp \ + MacOS/VBoxBalloonCtrl + ifdef VBOX_WITH_WEBSERVICES + VBOX_DI_VBAPP_PROGS += \ +@@ -659,7 +658,6 @@ + Resources/virtualbox.icns \ + Resources/virtualbox.png \ + Resources/virtualbox-vbox.icns \ +- Resources/virtualbox-vbox-extpack.icns \ + Resources/virtualbox-ovf.icns \ + Resources/virtualbox-ova.icns \ + Resources/virtualbox-vdi.icns \ +--- VirtualBox-4.1.18/src/VBox/Installer/solaris/Makefile.kmk.orig 2012-07-25 00:38:48.476398293 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/solaris/Makefile.kmk 2012-07-25 00:38:48.516396159 -0300 +@@ -185,12 +185,12 @@ + + VBOX_MIME_ICONS = \ + $(addprefix $(PATH_ROOT)/src/VBox/Resources/other/,\ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/mimetypes/virtualbox-$(f).png))) + + SOLARIS_COMMON_ICONS = \ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + $(s)x$(s)/mimetypes/virtualbox-$(f).png)) + +@@ -210,7 +210,6 @@ + $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \ + $(if $(VBOX_WITH_NETADP),VBoxNetAdpCtl,) \ + VBoxNetDHCP \ +- $(if $(VBOX_WITH_EXTPACK),VBoxExtPackHelperApp,) \ + VBoxSVC \ + $(if $(VBOX_WITH_CROGL),VBoxTestOGL,) \ + VBoxXPCOMIPCD \ +--- VirtualBox-4.1.18.orig/src/VBox/Runtime/Makefile.kmk 2012-07-25 00:40:58.745522450 -0300 ++++ VirtualBox-4.1.18/src/VBox/Runtime/Makefile.kmk 2012-07-25 00:40:58.782186960 -0300 +@@ -53,15 +53,6 @@ + # + LIBRARIES += RuntimeR3 RuntimeBldProg + +-else ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- # +- # Build docs only - need just regular R3 runtime. +- # +- LIBRARIES += RuntimeBldProg +- LIBRARIES.solaris += RuntimeR0Stub +- LIBRARIES.win += RuntimeR0Stub RuntimeRCStub +- include $(PATH_SUB_CURRENT)/tools/Makefile.kmk +- + else # !VBOX_ONLY_ADDITIONS && !VBOX_ONLY_TESTSUITE && !VBOX_ONLY_DOCS + + # diff --git a/libre/virtualbox-libre-modules-lts/os_blag.png b/libre/virtualbox-libre-modules-lts/os_blag.png Binary files differnew file mode 100644 index 000000000..61995ca10 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_blag.png diff --git a/libre/virtualbox-libre-modules-lts/os_blag_64.png b/libre/virtualbox-libre-modules-lts/os_blag_64.png Binary files differnew file mode 100644 index 000000000..aa4463a97 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_blag_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_dragora.png b/libre/virtualbox-libre-modules-lts/os_dragora.png Binary files differnew file mode 100644 index 000000000..d1df45880 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_dragora.png diff --git a/libre/virtualbox-libre-modules-lts/os_dragora_64.png b/libre/virtualbox-libre-modules-lts/os_dragora_64.png Binary files differnew file mode 100644 index 000000000..64bcecf20 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_dragora_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_dynebolic.png b/libre/virtualbox-libre-modules-lts/os_dynebolic.png Binary files differnew file mode 100644 index 000000000..67b07d4c0 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_dynebolic.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnewsense.png b/libre/virtualbox-libre-modules-lts/os_gnewsense.png Binary files differnew file mode 100644 index 000000000..76d9e38b3 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnewsense.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnewsense_64.png b/libre/virtualbox-libre-modules-lts/os_gnewsense_64.png Binary files differnew file mode 100644 index 000000000..8859c34e8 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnewsense_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnu.png b/libre/virtualbox-libre-modules-lts/os_gnu.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnu.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnu_64.png b/libre/virtualbox-libre-modules-lts/os_gnu_64.png Binary files differnew file mode 100644 index 000000000..4161634e9 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnu_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnuhurd.png b/libre/virtualbox-libre-modules-lts/os_gnuhurd.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnuhurd.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnulinux.png b/libre/virtualbox-libre-modules-lts/os_gnulinux.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnulinux.png diff --git a/libre/virtualbox-libre-modules-lts/os_gnulinux_64.png b/libre/virtualbox-libre-modules-lts/os_gnulinux_64.png Binary files differnew file mode 100644 index 000000000..4161634e9 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_gnulinux_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_musix.png b/libre/virtualbox-libre-modules-lts/os_musix.png Binary files differnew file mode 100644 index 000000000..fb7b94577 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_musix.png diff --git a/libre/virtualbox-libre-modules-lts/os_musix_64.png b/libre/virtualbox-libre-modules-lts/os_musix_64.png Binary files differnew file mode 100644 index 000000000..a1bbbbf3a --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_musix_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_os64base.png b/libre/virtualbox-libre-modules-lts/os_os64base.png Binary files differnew file mode 100644 index 000000000..7aec20314 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_os64base.png diff --git a/libre/virtualbox-libre-modules-lts/os_os64base.xcf b/libre/virtualbox-libre-modules-lts/os_os64base.xcf Binary files differnew file mode 100644 index 000000000..d8e28e35e --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_os64base.xcf diff --git a/libre/virtualbox-libre-modules-lts/os_osbase.png b/libre/virtualbox-libre-modules-lts/os_osbase.png Binary files differnew file mode 100644 index 000000000..00f197fca --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_osbase.png diff --git a/libre/virtualbox-libre-modules-lts/os_osbase.xcf b/libre/virtualbox-libre-modules-lts/os_osbase.xcf Binary files differnew file mode 100644 index 000000000..c4463c857 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_osbase.xcf diff --git a/libre/virtualbox-libre-modules-lts/os_parabola.png b/libre/virtualbox-libre-modules-lts/os_parabola.png Binary files differnew file mode 100644 index 000000000..757abc484 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_parabola.png diff --git a/libre/virtualbox-libre-modules-lts/os_parabola_64.png b/libre/virtualbox-libre-modules-lts/os_parabola_64.png Binary files differnew file mode 100644 index 000000000..5ac7c2767 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_parabola_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_trisquel.png b/libre/virtualbox-libre-modules-lts/os_trisquel.png Binary files differnew file mode 100644 index 000000000..c6f0d3d7a --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_trisquel.png diff --git a/libre/virtualbox-libre-modules-lts/os_trisquel_64.png b/libre/virtualbox-libre-modules-lts/os_trisquel_64.png Binary files differnew file mode 100644 index 000000000..ebca3dd43 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_trisquel_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_ututo.png b/libre/virtualbox-libre-modules-lts/os_ututo.png Binary files differnew file mode 100644 index 000000000..e1dffb575 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_ututo.png diff --git a/libre/virtualbox-libre-modules-lts/os_ututo_64.png b/libre/virtualbox-libre-modules-lts/os_ututo_64.png Binary files differnew file mode 100644 index 000000000..158468e0a --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_ututo_64.png diff --git a/libre/virtualbox-libre-modules-lts/os_venenux.png b/libre/virtualbox-libre-modules-lts/os_venenux.png Binary files differnew file mode 100644 index 000000000..5e0c1585d --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/os_venenux.png diff --git a/libre/virtualbox-modules-lts/virtualbox-modules-lts.install b/libre/virtualbox-libre-modules-lts/virtualbox-libre-modules-lts.install index 5387563a6..5387563a6 100644 --- a/libre/virtualbox-modules-lts/virtualbox-modules-lts.install +++ b/libre/virtualbox-libre-modules-lts/virtualbox-libre-modules-lts.install diff --git a/libre/virtualbox-modules-lts/virtualbox-parabola-modules-lts.install b/libre/virtualbox-libre-modules-lts/virtualbox-libre-parabola-modules-lts.install index 54a052390..54a052390 100644 --- a/libre/virtualbox-modules-lts/virtualbox-parabola-modules-lts.install +++ b/libre/virtualbox-libre-modules-lts/virtualbox-libre-parabola-modules-lts.install diff --git a/libre/virtualbox-modules/.directory b/libre/virtualbox-libre-modules/.directory index 7486c78f1..7486c78f1 100644 --- a/libre/virtualbox-modules/.directory +++ b/libre/virtualbox-libre-modules/.directory diff --git a/libre/virtualbox-modules/60-vboxguest.rules b/libre/virtualbox-libre-modules/60-vboxguest.rules index 6285f7249..6285f7249 100644 --- a/libre/virtualbox-modules/60-vboxguest.rules +++ b/libre/virtualbox-libre-modules/60-vboxguest.rules diff --git a/libre/virtualbox-modules/LocalConfig.kmk b/libre/virtualbox-libre-modules/LocalConfig.kmk index af79f90cd..af79f90cd 100644 --- a/libre/virtualbox-modules/LocalConfig.kmk +++ b/libre/virtualbox-libre-modules/LocalConfig.kmk diff --git a/libre/virtualbox-libre-modules/PKGBUILD b/libre/virtualbox-libre-modules/PKGBUILD new file mode 100644 index 000000000..ef63d7ff0 --- /dev/null +++ b/libre/virtualbox-libre-modules/PKGBUILD @@ -0,0 +1,157 @@ +# $Id$ +#Maintainer: Ionut Biru <ibiru@archlinux.org> +#Maintainer (Parabola): Jorge López <jorginho@lavabit.com> +#Contributor (Parabola): André Silva <emulatorman@lavabit.com> + +pkgbase=virtualbox-libre-modules +pkgname=('virtualbox-libre-modules' 'virtualbox-libre-parabola-modules') +pkgver=4.1.18 +pkgrel=5.1 +arch=('i686' 'x86_64') +url='http://virtualbox.org' +license=('GPL') +makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl' 'linux-libre-headers') +[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc') +source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2 + LocalConfig.kmk 60-vboxguest.rules os_blag_64.png os_blag.png + os_dragora_64.png os_dragora.png os_dynebolic.png os_gnewsense_64.png os_gnewsense.png + os_gnu_64.png os_gnuhurd.png os_gnulinux_64.png os_gnulinux.png os_gnu.png + os_musix_64.png os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png + os_trisquel.png os_ututo_64.png os_ututo.png os_venenux.png libre.patch + free-distros.patch) +md5sums=('38db0a87cba659b484af868b0c2bd3ac' + '4c88bd122677a35f68abd76eb01b378b' + 'ed1341881437455d9735875ddf455fbe' + '8538dba8686d7449cb481c9bae9d722a' + '545c925b46f2ac95e5f8ae407fad101a' + 'f6416f509c2e5460e4dc624e0a57f3c1' + 'bbfb59dd517c020a23701b480187a355' + 'efacfdb61918286ea9bc89866b8fd239' + '7c3eb09995e8bafeef414374e44ad4ce' + 'a49ed3ab6bd0fb084de0ab3dd97ae93e' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + 'a70022a468bd3e9daf01818d2d74ac3c' + '380eb2ab6cad3da198094585853c129c' + 'a60bb9a98abcc3c34156f9051d00df9a' + '3a908ef6952bcf987e63ef2fe4e98d24' + '02e87c39c353634cecacf98f1707fa15' + '0cf41a41e7a415d404d5584e047fd450' + '449cde3b58390284b59c5d663de3edc9' + 'c7951fe6888d939f3a7d0dafe477e82b' + '4da8eeb2ece7e475fc7a0d1003da26c6' + '5e4187af59726d71c5be48d0cd816c34' + 'a9e4724b56ddf99bb2e9a8fab8ad43ba' + 'f7d275fc52e5f3cfafd85646c2914063') + +_extramodules=extramodules-3.5-LIBRE +_kernver="$(cat /usr/lib/modules/${_extramodules}/version || true)" + +export KERN_DIR=/usr/lib/modules/${_kernver}/build +export KERN_INCL=/usr/src/linux-${_kernver}/include/ + +build() { + cd "$srcdir/VirtualBox-${pkgver}" + + patch -Np1 -i "$srcdir/libre.patch" + patch -Np1 -i "$srcdir/free-distros.patch" + + ## Removing Nonfree directories + rm -rv "./include/VBox/ExtPack" + rm -rv "./src/VBox/ExtPacks" + rm -rv "./src/VBox/Main/src-helper-apps" + + ## Removing Oracle VM VirtualBox Extension Pack icons + rm -v "./src/VBox/Resources/darwin/virtualbox-vbox-extpack.icns" + rm -v "./src/VBox/Resources/other/virtualbox-vbox-extpack-"{16px,20px,24px,32px,40px,48px,64px,72px,80px,96px,128px,256px,512px}.png + rm -v "./src/VBox/Resources/win/OSE/virtualbox-vbox-extpack.ico" + rm -v "./src/VBox/Frontends/VirtualBox/images/extension_pack_"{16px,32px,disabled{_16px,_32px},install{_16px,_32px},install_disabled{_16px,_32px},uninstall{_16px,_32px},uninstall_disabled{_16px,_32px}}.png + + ## Adding free distros icons + for i in {gnuhurd,dynebolic,venenux,{gnu{,linux},parabola,gnewsense,blag,dragora,ututo,musix,trisquel}{,_64}}; do + cp -v "$srcdir/os_${i}.png" "./src/VBox/Frontends/VirtualBox/images" + done + + ## Removing non-free OS icons + rm -v "./src/VBox/Frontends/VirtualBox/images/os_"{{{arch,turbo}linux,debian,fedora,gentoo,linux{24,26},macosx,mandriva,{free,net,open}bsd,redhat,solaris,opensuse,oracle{,solaris},ubuntu,win{2k{3,8},7,8,vista,xp},xandros}{,_64},dos,jrockitve,l4,linux{,22,_other},netware,qnx,os2{_other,ecs,warp{3,4,45}},win{2k,31,95,98,_other,me,nt4}}.png + + cp "$srcdir/LocalConfig.kmk" . + + ./configure \ + --with-linux=/usr/src/linux-${_kernver} \ + --disable-java \ + --disable-docs \ + --disable-xpcom \ + --disable-python \ + --disable-sdl-ttf \ + --disable-alsa \ + --disable-pulse \ + --disable-dbus \ + --disable-opengl \ + --build-headless \ + --nofatal + source ./env.sh + kmk all + + make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" + make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" +} + +package_virtualbox-libre-parabola-modules(){ + pkgdesc="Additions only for Parabola guests (kernel modules)" + license=('GPL') + install=virtualbox-libre-parabola-modules.install + depends=('linux-libre>=3.5' 'linux-libre<3.6') + replaces=('virtualbox-archlinux-modules') + conflicts=('virtualbox-archlinux-modules') + provides=("virtualbox-archlinux-modules=$pkgver") + + source "$srcdir/VirtualBox-${pkgver}/env.sh" + + cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" + + for module in vboxguest.ko vboxsf.ko vboxvideo.ko; do + install -D -m644 ${module} \ + "$pkgdir/usr/lib/modules/${_extramodules}/${module}" + done + + install -D -m 0644 "$srcdir/60-vboxguest.rules" \ + "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules" + + find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; + + sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-libre-parabola-modules.install" +} + +package_virtualbox-libre-modules(){ + pkgdesc="Kernel modules for VirtualBox" + license=('GPL') + install=virtualbox-libre-modules.install + depends=('linux-libre>=3.5' 'linux-libre<3.6') + replaces=('virtualbox-modules') + conflicts=('virtualbox-modules') + provides=("virtualbox-modules=$pkgver") + + source "$srcdir/VirtualBox-${pkgver}/env.sh" + + + cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" + + install -D -m644 vboxdrv.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxdrv.ko" + + install -D -m644 vboxnetadp.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetadp.ko" + + install -D -m644 vboxnetflt.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetflt.ko" + + install -D -m644 vboxpci.ko \ + "$pkgdir/usr/lib/modules/${_extramodules}/vboxpci.ko" + + find "${pkgdir}" -name '*.ko' -exec gzip -9 {} + + + sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-libre-modules.install" +} diff --git a/libre/virtualbox-libre-modules/free-distros.patch b/libre/virtualbox-libre-modules/free-distros.patch new file mode 100644 index 000000000..7920fb6ab --- /dev/null +++ b/libre/virtualbox-libre-modules/free-distros.patch @@ -0,0 +1,1383 @@ +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp 2012-07-25 14:51:03.569003667 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp 2012-07-25 14:51:03.652333615 -0300 +@@ -44,94 +44,38 @@ + * first matching string found, will be used. */ + static const osTypePattern gs_OSTypePattern[] = + { +- { QRegExp("DOS", Qt::CaseInsensitive), "DOS" }, + +- /* Windows */ +- { QRegExp("Wi.*98", Qt::CaseInsensitive), "Windows98" }, +- { QRegExp("Wi.*95", Qt::CaseInsensitive), "Windows95" }, +- { QRegExp("Wi.*Me", Qt::CaseInsensitive), "WindowsMe" }, +- { QRegExp("(Wi.*NT)|(NT4)", Qt::CaseInsensitive), "WindowsNT4" }, +- { QRegExp("((Wi.*XP)|(\\bXP\\b)).*64", Qt::CaseInsensitive), "WindowsXP_64" }, +- { QRegExp("(Wi.*XP)|(\\bXP\\b)", Qt::CaseInsensitive), "WindowsXP" }, +- { QRegExp("((Wi.*2003)|(W2K3)).*64", Qt::CaseInsensitive), "Windows2003_64" }, +- { QRegExp("(Wi.*2003)|(W2K3)", Qt::CaseInsensitive), "Windows2003" }, +- { QRegExp("((Wi.*V)|(Vista)).*64", Qt::CaseInsensitive), "WindowsVista_64" }, +- { QRegExp("(Wi.*V)|(Vista)", Qt::CaseInsensitive), "WindowsVista" }, +- { QRegExp("((Wi.*2008)|(W2K8)).*64", Qt::CaseInsensitive), "Windows2008_64" }, +- { QRegExp("(Wi.*2008)|(W2K8)", Qt::CaseInsensitive), "Windows2008" }, +- { QRegExp("(Wi.*2000)|(W2K)", Qt::CaseInsensitive), "Windows2000" }, +- { QRegExp("(Wi.*7.*64)|(W7.*64)", Qt::CaseInsensitive), "Windows7_64" }, +- { QRegExp("(Wi.*7)|(W7)", Qt::CaseInsensitive), "Windows7" }, +- { QRegExp("(Wi.*8.*64)|(W8.*64)", Qt::CaseInsensitive), "Windows8_64" }, +- { QRegExp("(Wi.*8)|(W8)", Qt::CaseInsensitive), "Windows8" }, +- { QRegExp("Wi.*3", Qt::CaseInsensitive), "Windows31" }, +- { QRegExp("Wi", Qt::CaseInsensitive), "WindowsXP" }, +- +- /* Solaris */ +- { QRegExp("((Op.*So)|(os20[01][0-9])|(So.*1[01])|(India)|(Neva)).*64", Qt::CaseInsensitive), "OpenSolaris_64" }, +- { QRegExp("(Op.*So)|(os20[01][0-9])|(So.*1[01])|(India)|(Neva)", Qt::CaseInsensitive), "OpenSolaris" }, +- { QRegExp("So.*64", Qt::CaseInsensitive), "Solaris_64" }, +- { QRegExp("So", Qt::CaseInsensitive), "Solaris" }, +- +- /* OS/2 */ +- { QRegExp("OS[/|!-]{,1}2.*W.*4.?5", Qt::CaseInsensitive), "OS2Warp45" }, +- { QRegExp("OS[/|!-]{,1}2.*W.*4", Qt::CaseInsensitive), "OS2Warp4" }, +- { QRegExp("OS[/|!-]{,1}2.*W", Qt::CaseInsensitive), "OS2Warp3" }, +- { QRegExp("(OS[/|!-]{,1}2.*e)|(eCS.*)", Qt::CaseInsensitive), "OS2eCS" }, +- { QRegExp("OS[/|!-]{,1}2", Qt::CaseInsensitive), "OS2" }, +- +- /* Code names for Linux distributions */ +- { QRegExp("((edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)).*64", Qt::CaseInsensitive), "Ubuntu_64" }, +- { QRegExp("(edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)", Qt::CaseInsensitive), "Ubuntu" }, +- { QRegExp("((sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)).*64", Qt::CaseInsensitive), "Debian_64" }, +- { QRegExp("(sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)", Qt::CaseInsensitive), "Debian" }, +- { QRegExp("((moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)).*64", Qt::CaseInsensitive), "Fedora_64" }, +- { QRegExp("(moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)", Qt::CaseInsensitive), "Fedora" }, +- +- /* Regular names of Linux distributions */ +- { QRegExp("Arc.*64", Qt::CaseInsensitive), "ArchLinux_64" }, +- { QRegExp("Arc", Qt::CaseInsensitive), "ArchLinux" }, +- { QRegExp("Deb.*64", Qt::CaseInsensitive), "Debian_64" }, +- { QRegExp("Deb", Qt::CaseInsensitive), "Debian" }, +- { QRegExp("((SU)|(Nov)|(SLE)).*64", Qt::CaseInsensitive), "OpenSUSE_64" }, +- { QRegExp("(SU)|(Nov)|(SLE)", Qt::CaseInsensitive), "OpenSUSE" }, +- { QRegExp("Fe.*64", Qt::CaseInsensitive), "Fedora_64" }, +- { QRegExp("Fe", Qt::CaseInsensitive), "Fedora" }, +- { QRegExp("((Gen)|(Sab)).*64", Qt::CaseInsensitive), "Gentoo_64" }, +- { QRegExp("(Gen)|(Sab)", Qt::CaseInsensitive), "Gentoo" }, +- { QRegExp("Man.*64", Qt::CaseInsensitive), "Mandriva_64" }, +- { QRegExp("Man", Qt::CaseInsensitive), "Mandriva" }, +- { QRegExp("((Red)|(rhel)|(cen)).*64", Qt::CaseInsensitive), "RedHat_64" }, +- { QRegExp("(Red)|(rhel)|(cen)", Qt::CaseInsensitive), "RedHat" }, +- { QRegExp("Tur.*64", Qt::CaseInsensitive), "Turbolinux_64" }, +- { QRegExp("Tur", Qt::CaseInsensitive), "Turbolinux" }, +- { QRegExp("Ub.*64", Qt::CaseInsensitive), "Ubuntu_64" }, +- { QRegExp("Ub", Qt::CaseInsensitive), "Ubuntu" }, +- { QRegExp("Xa.*64", Qt::CaseInsensitive), "Xandros_64" }, +- { QRegExp("Xa", Qt::CaseInsensitive), "Xandros" }, +- { QRegExp("((Or)|(oel)).*64", Qt::CaseInsensitive), "Oracle_64" }, +- { QRegExp("(Or)|(oel)", Qt::CaseInsensitive), "Oracle" }, +- { QRegExp("((Li)|(lnx)).*2.?2", Qt::CaseInsensitive), "Linux22" }, +- { QRegExp("((Li)|(lnx)).*2.?4.*64", Qt::CaseInsensitive), "Linux24_64" }, +- { QRegExp("((Li)|(lnx)).*2.?4", Qt::CaseInsensitive), "Linux24" }, +- { QRegExp("((((Li)|(lnx)).*2.?6)|(LFS)).*64", Qt::CaseInsensitive), "Linux26_64" }, +- { QRegExp("(((Li)|(lnx)).*2.?6)|(LFS)", Qt::CaseInsensitive), "Linux26" }, +- { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "Linux26_64" }, +- { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "Linux26" }, ++ /* Code names for GNU/Linux distributions */ ++ { QRegExp("((Taranis)|(Dagda)|(Brigantia)).*64", Qt::CaseInsensitive), "Trisquel_64" }, ++ { QRegExp("(Taranis)|(Dagda)|(Brigantia)", Qt::CaseInsensitive), "Trisquel" }, ++ { QRegExp("((metad)|(parkes)|(three)).*64", Qt::CaseInsensitive), "gNewSense_64" }, ++ { QRegExp("(deltah)|(metad)|(parkes)|(three)", Qt::CaseInsensitive), "gNewSense" }, ++ { QRegExp("((90k)|(119k)|(140k)|(160k)|(90000)|(119000)|(140000)|(160000)|(Spartakus)).*64", Qt::CaseInsensitive), "Blag_64" }, ++ { QRegExp("(90k)|(119k)|(140k)|(160k)|(90000)|(119000)|(140000)|(160000)|(Spartakus)", Qt::CaseInsensitive), "Blag" }, ++ ++ /* Regular names of GNU/Linux distributions and GNU-Hurd */ ++ { QRegExp("Pa.*64", Qt::CaseInsensitive), "Parabola_64" }, ++ { QRegExp("Pa", Qt::CaseInsensitive), "Parabola" }, ++ { QRegExp("((gNe)|(new)|(Sen)).*64", Qt::CaseInsensitive), "gNewSense_64" }, ++ { QRegExp("(gNe)|(new)|(Sen)", Qt::CaseInsensitive), "gNewSense" }, ++ { QRegExp("Bla.*64", Qt::CaseInsensitive), "Blag_64" }, ++ { QRegExp("Bla", Qt::CaseInsensitive), "Blag" }, ++ { QRegExp("Dra.*64", Qt::CaseInsensitive), "Dragora_64" }, ++ { QRegExp("Dra", Qt::CaseInsensitive), "Dragora" }, ++ { QRegExp("((Utu)|(XS)).*64", Qt::CaseInsensitive), "Ututo_64" }, ++ { QRegExp("(Utu)|(XS)", Qt::CaseInsensitive), "Ututo" }, ++ { QRegExp("Mus.*64", Qt::CaseInsensitive), "Musix_64" }, ++ { QRegExp("Mus", Qt::CaseInsensitive), "Musix" }, ++ { QRegExp("Tri.*64", Qt::CaseInsensitive), "Trisquel_64" }, ++ { QRegExp("Tri", Qt::CaseInsensitive), "Trisquel" }, ++ { QRegExp("Dyn", Qt::CaseInsensitive), "Dynebolic" }, ++ { QRegExp("Ven", Qt::CaseInsensitive), "Venenux" }, ++ { QRegExp("GNU", Qt::CaseInsensitive), "GNU" }, ++ { QRegExp("Hu", Qt::CaseInsensitive), "GNUHurd" }, ++ { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "GNULinux_64" }, ++ { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "GNULinux" }, + + /* Other */ +- { QRegExp("L4", Qt::CaseInsensitive), "L4" }, +- { QRegExp("((Fr.*B)|(fbsd)).*64", Qt::CaseInsensitive), "FreeBSD_64" }, +- { QRegExp("(Fr.*B)|(fbsd)", Qt::CaseInsensitive), "FreeBSD" }, +- { QRegExp("Op.*B.*64", Qt::CaseInsensitive), "OpenBSD_64" }, +- { QRegExp("Op.*B", Qt::CaseInsensitive), "OpenBSD" }, +- { QRegExp("Ne.*B.*64", Qt::CaseInsensitive), "NetBSD_64" }, +- { QRegExp("Ne.*B", Qt::CaseInsensitive), "NetBSD" }, +- { QRegExp("QN", Qt::CaseInsensitive), "QNX" }, +- { QRegExp("((Mac)|(Tig)|(Leop)|(osx)).*64", Qt::CaseInsensitive), "MacOS_64" }, +- { QRegExp("(Mac)|(Tig)|(Leop)|(osx)", Qt::CaseInsensitive), "MacOS" }, +- { QRegExp("Net", Qt::CaseInsensitive), "Netware" }, +- { QRegExp("Rocki", Qt::CaseInsensitive), "JRockitVE" }, + { QRegExp("Ot", Qt::CaseInsensitive), "Other" }, + }; + +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/Settings.cpp 2012-07-25 15:14:50.498764160 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/Settings.cpp 2012-07-25 15:14:50.548761649 -0300 +@@ -3227,40 +3227,18 @@ + } aConvertOSTypes[] = + { + { "unknown", "Other" }, +- { "dos", "DOS" }, +- { "win31", "Windows31" }, +- { "win95", "Windows95" }, +- { "win98", "Windows98" }, +- { "winme", "WindowsMe" }, +- { "winnt4", "WindowsNT4" }, +- { "win2k", "Windows2000" }, +- { "winxp", "WindowsXP" }, +- { "win2k3", "Windows2003" }, +- { "winvista", "WindowsVista" }, +- { "win2k8", "Windows2008" }, +- { "os2warp3", "OS2Warp3" }, +- { "os2warp4", "OS2Warp4" }, +- { "os2warp45", "OS2Warp45" }, +- { "ecs", "OS2eCS" }, +- { "linux22", "Linux22" }, +- { "linux24", "Linux24" }, +- { "linux26", "Linux26" }, +- { "archlinux", "ArchLinux" }, +- { "debian", "Debian" }, +- { "opensuse", "OpenSUSE" }, +- { "fedoracore", "Fedora" }, +- { "gentoo", "Gentoo" }, +- { "mandriva", "Mandriva" }, +- { "redhat", "RedHat" }, +- { "ubuntu", "Ubuntu" }, +- { "xandros", "Xandros" }, +- { "freebsd", "FreeBSD" }, +- { "openbsd", "OpenBSD" }, +- { "netbsd", "NetBSD" }, +- { "netware", "Netware" }, +- { "solaris", "Solaris" }, +- { "opensolaris", "OpenSolaris" }, +- { "l4", "L4" } ++ { "gnu", "GNU" }, ++ { "gnuhurd", "GNUHurd" }, ++ { "gnulinux", "GNULinux" }, ++ { "parabola", "Parabola" }, ++ { "gnewsense", "gNewSense" }, ++ { "blag", "Blag" }, ++ { "dragora", "Dragora" }, ++ { "ututo", "Ututo" }, ++ { "musix", "Musix" }, ++ { "trisquel", "Trisquel" }, ++ { "dynebolic", "Dynebolic" }, ++ { "venenux", "Venenux" }, + }; + + void MachineConfigFile::convertOldOSType_pre1_5(Utf8Str &str) +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/SettingsConverter.xsl 2012-07-25 15:21:04.553581275 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/SettingsConverter.xsl 2012-07-25 15:21:04.593579427 -0300 +@@ -729,40 +729,18 @@ + <xsl:attribute name="OSType"> + <xsl:choose> + <xsl:when test="@OSType='unknown'">Other</xsl:when> +- <xsl:when test="@OSType='dos'">DOS</xsl:when> +- <xsl:when test="@OSType='win31'">Windows31</xsl:when> +- <xsl:when test="@OSType='win95'">Windows95</xsl:when> +- <xsl:when test="@OSType='win98'">Windows98</xsl:when> +- <xsl:when test="@OSType='winme'">WindowsMe</xsl:when> +- <xsl:when test="@OSType='winnt4'">WindowsNT4</xsl:when> +- <xsl:when test="@OSType='win2k'">Windows2000</xsl:when> +- <xsl:when test="@OSType='winxp'">WindowsXP</xsl:when> +- <xsl:when test="@OSType='win2k3'">Windows2003</xsl:when> +- <xsl:when test="@OSType='winvista'">WindowsVista</xsl:when> +- <xsl:when test="@OSType='win2k8'">Windows2008</xsl:when> +- <xsl:when test="@OSType='os2warp3'">OS2Warp3</xsl:when> +- <xsl:when test="@OSType='os2warp4'">OS2Warp4</xsl:when> +- <xsl:when test="@OSType='os2warp45'">OS2Warp45</xsl:when> +- <xsl:when test="@OSType='ecs'">OS2eCS</xsl:when> +- <xsl:when test="@OSType='linux22'">Linux22</xsl:when> +- <xsl:when test="@OSType='linux24'">Linux24</xsl:when> +- <xsl:when test="@OSType='linux26'">Linux26</xsl:when> +- <xsl:when test="@OSType='archlinux'">ArchLinux</xsl:when> +- <xsl:when test="@OSType='debian'">Debian</xsl:when> +- <xsl:when test="@OSType='opensuse'">OpenSUSE</xsl:when> +- <xsl:when test="@OSType='fedoracore'">Fedora</xsl:when> +- <xsl:when test="@OSType='gentoo'">Gentoo</xsl:when> +- <xsl:when test="@OSType='mandriva'">Mandriva</xsl:when> +- <xsl:when test="@OSType='redhat'">RedHat</xsl:when> +- <xsl:when test="@OSType='ubuntu'">Ubuntu</xsl:when> +- <xsl:when test="@OSType='xandros'">Xandros</xsl:when> +- <xsl:when test="@OSType='freebsd'">FreeBSD</xsl:when> +- <xsl:when test="@OSType='openbsd'">OpenBSD</xsl:when> +- <xsl:when test="@OSType='netbsd'">NetBSD</xsl:when> +- <xsl:when test="@OSType='netware'">Netware</xsl:when> +- <xsl:when test="@OSType='solaris'">Solaris</xsl:when> +- <xsl:when test="@OSType='opensolaris'">OpenSolaris</xsl:when> +- <xsl:when test="@OSType='l4'">L4</xsl:when> ++ <xsl:when test="@OSType='gnu'">GNU</xsl:when> ++ <xsl:when test="@OSType='gnuhurd'">GNUHurd</xsl:when> ++ <xsl:when test="@OSType='gnulinux'">GNULinux</xsl:when> ++ <xsl:when test="@OSType='parabola'">Parabola</xsl:when> ++ <xsl:when test="@OSType='gnewsense'">gNewSense</xsl:when> ++ <xsl:when test="@OSType='blag'">Blag</xsl:when> ++ <xsl:when test="@OSType='dragora'">Dragora</xsl:when> ++ <xsl:when test="@OSType='ututo'">Ututo</xsl:when> ++ <xsl:when test="@OSType='musix'">Musix</xsl:when> ++ <xsl:when test="@OSType='trisquel'">Trisquel</xsl:when> ++ <xsl:when test="@OSType='dynebolic'">Dynebolic</xsl:when> ++ <xsl:when test="@OSType='venenux'">Venenux</xsl:when> + </xsl:choose> + </xsl:attribute> + <xsl:apply-templates select="@*[name()!='OSType']" mode="v1.5"/> +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/VirtualBox-settings-common.xsd 2012-07-25 15:04:37.856003691 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/VirtualBox-settings-common.xsd 2012-07-25 15:04:37.892668156 -0300 +@@ -137,75 +137,27 @@ + <xsd:simpleType name="TGuestOSType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Other"/> +- <xsd:enumeration value="DOS"/> +- <xsd:enumeration value="Netware"/> +- <xsd:enumeration value="L4"/> +- <xsd:enumeration value="Windows31"/> +- <xsd:enumeration value="Windows95"/> +- <xsd:enumeration value="Windows98"/> +- <xsd:enumeration value="WindowsMe"/> +- <xsd:enumeration value="WindowsNT4"/> +- <xsd:enumeration value="Windows2000"/> +- <xsd:enumeration value="WindowsXP"/> +- <xsd:enumeration value="WindowsXP_64"/> +- <xsd:enumeration value="Windows2003"/> +- <xsd:enumeration value="Windows2003_64"/> +- <xsd:enumeration value="WindowsVista"/> +- <xsd:enumeration value="WindowsVista_64"/> +- <xsd:enumeration value="Windows2008"/> +- <xsd:enumeration value="Windows2008_64"/> +- <xsd:enumeration value="Windows7"/> +- <xsd:enumeration value="Windows7_64"/> +- <xsd:enumeration value="Windows8"/> +- <xsd:enumeration value="Windows8_64"/> +- <xsd:enumeration value="WindowsNT"/> +- <xsd:enumeration value="OS2Warp3"/> +- <xsd:enumeration value="OS2Warp4"/> +- <xsd:enumeration value="OS2Warp45"/> +- <xsd:enumeration value="OS2eCS"/> +- <xsd:enumeration value="OS2"/> +- <xsd:enumeration value="Linux22"/> +- <xsd:enumeration value="Linux24"/> +- <xsd:enumeration value="Linux24_64"/> +- <xsd:enumeration value="Linux26"/> +- <xsd:enumeration value="Linux26_64"/> +- <xsd:enumeration value="ArchLinux"/> +- <xsd:enumeration value="ArchLinux_64"/> +- <xsd:enumeration value="Debian"/> +- <xsd:enumeration value="Debian_64"/> +- <xsd:enumeration value="OpenSUSE"/> +- <xsd:enumeration value="OpenSUSE_64"/> +- <xsd:enumeration value="Fedora"/> +- <xsd:enumeration value="Fedora_64"/> +- <xsd:enumeration value="Gentoo"/> +- <xsd:enumeration value="Gentoo_64"/> +- <xsd:enumeration value="Mandriva"/> +- <xsd:enumeration value="Mandriva_64"/> +- <xsd:enumeration value="RedHat"/> +- <xsd:enumeration value="RedHat_64"/> +- <xsd:enumeration value="Turbolinux"/> +- <xsd:enumeration value="Turbolinux_64"/> +- <xsd:enumeration value="Ubuntu"/> +- <xsd:enumeration value="Ubuntu_64"/> +- <xsd:enumeration value="Xandros"/> +- <xsd:enumeration value="Xandros_64"/> +- <xsd:enumeration value="Oracle"/> +- <xsd:enumeration value="Oracle_64"/> +- <xsd:enumeration value="Linux"/> +- <xsd:enumeration value="FreeBSD"/> +- <xsd:enumeration value="FreeBSD_64"/> +- <xsd:enumeration value="OpenBSD"/> +- <xsd:enumeration value="OpenBSD_64"/> +- <xsd:enumeration value="NetBSD"/> +- <xsd:enumeration value="NetBSD_64"/> +- <xsd:enumeration value="Solaris"/> +- <xsd:enumeration value="Solaris_64"/> +- <xsd:enumeration value="OpenSolaris"/> +- <xsd:enumeration value="OpenSolaris_64"/> +- <xsd:enumeration value="QNX"/> +- <xsd:enumeration value="MacOS"/> +- <xsd:enumeration value="MacOS_64"/> +- <xsd:enumeration value="JRockitVE"/> ++ <xsd:enumeration value="GNU"/> ++ <xsd:enumeration value="GNU_64"/> ++ <xsd:enumeration value="GNUHurd"/> ++ <xsd:enumeration value="GNULinux"/> ++ <xsd:enumeration value="GNULinux_64"/> ++ <xsd:enumeration value="Parabola"/> ++ <xsd:enumeration value="Parabola_64"/> ++ <xsd:enumeration value="gNewSense"/> ++ <xsd:enumeration value="gNewSense_64"/> ++ <xsd:enumeration value="Blag"/> ++ <xsd:enumeration value="Blag_64"/> ++ <xsd:enumeration value="Dragora"/> ++ <xsd:enumeration value="Dragora_64"/> ++ <xsd:enumeration value="Ututo"/> ++ <xsd:enumeration value="Ututo_64"/> ++ <xsd:enumeration value="Musix"/> ++ <xsd:enumeration value="Musix_64"/> ++ <xsd:enumeration value="Trisquel"/> ++ <xsd:enumeration value="Trisquel_64"/> ++ <xsd:enumeration value="Dynebolic"/> ++ <xsd:enumeration value="Venenux"/> + </xsd:restriction> + </xsd:simpleType> + +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-25 15:40:56.733096866 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-25 15:40:56.796426519 -0300 +@@ -1,75 +1,27 @@ + <!DOCTYPE RCC><RCC version="1.0"> + <qresource prefix="/"> +- <file alias="os_archlinux.png">images/os_archlinux.png</file> +- <file alias="os_archlinux_64.png">images/os_archlinux_64.png</file> +- <file alias="os_debian.png">images/os_debian.png</file> +- <file alias="os_debian_64.png">images/os_debian_64.png</file> +- <file alias="os_dos.png">images/os_dos.png</file> +- <file alias="os_fedora.png">images/os_fedora.png</file> +- <file alias="os_fedora_64.png">images/os_fedora_64.png</file> +- <file alias="os_freebsd.png">images/os_freebsd.png</file> +- <file alias="os_freebsd_64.png">images/os_freebsd_64.png</file> +- <file alias="os_gentoo.png">images/os_gentoo.png</file> +- <file alias="os_gentoo_64.png">images/os_gentoo_64.png</file> +- <file alias="os_jrockitve.png">images/os_jrockitve.png</file> +- <file alias="os_l4.png">images/os_l4.png</file> +- <file alias="os_linux_other.png">images/os_linux_other.png</file> +- <file alias="os_linux22.png">images/os_linux22.png</file> +- <file alias="os_linux24.png">images/os_linux24.png</file> +- <file alias="os_linux24_64.png">images/os_linux24_64.png</file> +- <file alias="os_linux26.png">images/os_linux26.png</file> +- <file alias="os_linux26_64.png">images/os_linux26_64.png</file> +- <file alias="os_mandriva.png">images/os_mandriva.png</file> +- <file alias="os_mandriva_64.png">images/os_mandriva_64.png</file> +- <file alias="os_netbsd.png">images/os_netbsd.png</file> +- <file alias="os_netbsd_64.png">images/os_netbsd_64.png</file> +- <file alias="os_netware.png">images/os_netware.png</file> +- <file alias="os_openbsd.png">images/os_openbsd.png</file> +- <file alias="os_openbsd_64.png">images/os_openbsd_64.png</file> +- <file alias="os_oraclesolaris.png">images/os_oraclesolaris.png</file> +- <file alias="os_oraclesolaris_64.png">images/os_oraclesolaris_64.png</file> +- <file alias="os_opensuse.png">images/os_opensuse.png</file> +- <file alias="os_opensuse_64.png">images/os_opensuse_64.png</file> +- <file alias="os_os2_other.png">images/os_os2_other.png</file> +- <file alias="os_os2ecs.png">images/os_os2ecs.png</file> +- <file alias="os_os2warp3.png">images/os_os2warp3.png</file> +- <file alias="os_os2warp4.png">images/os_os2warp4.png</file> +- <file alias="os_os2warp45.png">images/os_os2warp45.png</file> ++ <file alias="os_parabola.png">images/os_parabola.png</file> ++ <file alias="os_parabola_64.png">images/os_parabola_64.png</file> ++ <file alias="os_gnewsense.png">images/os_gnewsense.png</file> ++ <file alias="os_gnewsense_64.png">images/os_gnewsense_64.png</file> ++ <file alias="os_blag.png">images/os_blag.png</file> ++ <file alias="os_blag_64.png">images/os_blag_64.png</file> ++ <file alias="os_ututo.png">images/os_ututo.png</file> ++ <file alias="os_ututo_64.png">images/os_ututo_64.png</file> ++ <file alias="os_gnu.png">images/os_gnu.png</file> ++ <file alias="os_gnu_64.png">images/os_gnu_64.png</file> ++ <file alias="os_gnuhurd.png">images/os_gnuhurd.png</file> ++ <file alias="os_gnulinux.png">images/os_gnulinux.png</file> ++ <file alias="os_gnulinux_64.png">images/os_gnulinux_64.png</file> ++ <file alias="os_musix.png">images/os_musix.png</file> ++ <file alias="os_musix_64.png">images/os_musix_64.png</file> ++ <file alias="os_dragora.png">images/os_dragora.png</file> ++ <file alias="os_dragora_64.png">images/os_dragora_64.png</file> + <file alias="os_other.png">images/os_other.png</file> +- <file alias="os_qnx.png">images/os_qnx.png</file> +- <file alias="os_redhat.png">images/os_redhat.png</file> +- <file alias="os_redhat_64.png">images/os_redhat_64.png</file> +- <file alias="os_turbolinux.png">images/os_turbolinux.png</file> +- <file alias="os_turbolinux_64.png">images/os_turbolinux_64.png</file> +- <file alias="os_solaris.png">images/os_solaris.png</file> +- <file alias="os_solaris_64.png">images/os_solaris_64.png</file> +- <file alias="os_ubuntu.png">images/os_ubuntu.png</file> +- <file alias="os_ubuntu_64.png">images/os_ubuntu_64.png</file> +- <file alias="os_win_other.png">images/os_win_other.png</file> +- <file alias="os_win2k.png">images/os_win2k.png</file> +- <file alias="os_win2k3.png">images/os_win2k3.png</file> +- <file alias="os_win2k3_64.png">images/os_win2k3_64.png</file> +- <file alias="os_win2k8.png">images/os_win2k8.png</file> +- <file alias="os_win2k8_64.png">images/os_win2k8_64.png</file> +- <file alias="os_win31.png">images/os_win31.png</file> +- <file alias="os_win7.png">images/os_win7.png</file> +- <file alias="os_win7_64.png">images/os_win7_64.png</file> +- <file alias="os_win8.png">images/os_win8.png</file> +- <file alias="os_win8_64.png">images/os_win8_64.png</file> +- <file alias="os_win95.png">images/os_win95.png</file> +- <file alias="os_win98.png">images/os_win98.png</file> +- <file alias="os_winme.png">images/os_winme.png</file> +- <file alias="os_winnt4.png">images/os_winnt4.png</file> +- <file alias="os_winvista.png">images/os_winvista.png</file> +- <file alias="os_winvista_64.png">images/os_winvista_64.png</file> +- <file alias="os_winxp.png">images/os_winxp.png</file> +- <file alias="os_winxp_64.png">images/os_winxp_64.png</file> +- <file alias="os_xandros.png">images/os_xandros.png</file> +- <file alias="os_xandros_64.png">images/os_xandros_64.png</file> +- <file alias="os_oracle.png">images/os_oracle.png</file> +- <file alias="os_oracle_64.png">images/os_oracle_64.png</file> +- <file alias="os_macosx.png">images/os_macosx.png</file> +- <file alias="os_macosx_64.png">images/os_macosx_64.png</file> ++ <file alias="os_dynebolic.png">images/os_dynebolic.png</file> ++ <file alias="os_venenux.png">images/os_venenux.png</file> ++ <file alias="os_trisquel.png">images/os_trisquel.png</file> ++ <file alias="os_trisquel_64.png">images/os_trisquel_64.png</file> + <file alias="hd_16px.png">images/hd_16px.png</file> + <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file> + <file alias="hd_32px.png">images/hd_32px.png</file> +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/Global.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/src-all/Global.cpp 2012-07-25 19:32:44.482993976 -0300 +@@ -35,284 +35,90 @@ + VBOXOSTYPE_Unknown, VBOXOSHINT_NONE, + 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows31, "Windows 3.1", +- VBOXOSTYPE_Win31, VBOXOSHINT_NONE, +- 32, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows95, "Windows 95", +- VBOXOSTYPE_Win95, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows98, "Windows 98", +- VBOXOSTYPE_Win98, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsMe, "Windows Me", +- VBOXOSTYPE_WinMe, VBOXOSHINT_NONE, +- 64, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT4, "Windows NT 4", +- VBOXOSTYPE_WinNT4, VBOXOSHINT_NONE, +- 128, 16, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2000, "Windows 2000", +- VBOXOSTYPE_Win2k, VBOXOSHINT_USBTABLET, +- 168, 16, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsXP, "Windows XP", +- VBOXOSTYPE_WinXP, VBOXOSHINT_USBTABLET, +- 192, 16, 10 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsXP_64, "Windows XP (64 bit)", +- VBOXOSTYPE_WinXP_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 192, 16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2003, "Windows 2003", +- VBOXOSTYPE_Win2k3, VBOXOSHINT_USBTABLET, +- 256, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2003_64, "Windows 2003 (64 bit)", +- VBOXOSTYPE_Win2k3_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 256, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista, "Windows Vista", +- VBOXOSTYPE_WinVista, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista_64, "Windows Vista (64 bit)", +- VBOXOSTYPE_WinVista_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008, "Windows 2008", +- VBOXOSTYPE_Win2k8, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008_64, "Windows 2008 (64 bit)", +- VBOXOSTYPE_Win2k8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7, "Windows 7", +- VBOXOSTYPE_Win7, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7_64, "Windows 7 (64 bit)", +- VBOXOSTYPE_Win7_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8, "Windows 8", +- VBOXOSTYPE_Win8, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE, +- 1024,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8_64, "Windows 8 (64 bit)", +- VBOXOSTYPE_Win8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 1536,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT, "Other Windows", +- VBOXOSTYPE_WinNT, VBOXOSHINT_NONE, +- 512, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux22, "Linux 2.2", +- VBOXOSTYPE_Linux22, VBOXOSHINT_RTCUTC, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux24, "Linux 2.4", +- VBOXOSTYPE_Linux24, VBOXOSHINT_RTCUTC, +- 128, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux24_64, "Linux 2.4 (64 bit)", +- VBOXOSTYPE_Linux24_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 128, 4, 4 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU", "GNU", SchemaDefs_OSTypeId_GNU, "GNU", ++ VBOXOSTYPE_GNU, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, ++ { "GNU", "GNU", SchemaDefs_OSTypeId_GNU_64, "GNU (64 bit)", ++ VBOXOSTYPE_GNU_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, ++ { "GNU-Hurd", "GNU-Hurd", SchemaDefs_OSTypeId_GNUHurd, "GNU-Hurd", ++ VBOXOSTYPE_GNUHurd, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26, "Linux 2.6", +- VBOXOSTYPE_Linux26, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_GNULinux, "GNU/Linux", ++ VBOXOSTYPE_GNULinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26_64, "Linux 2.6 (64 bit)", +- VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_GNULinux_64, "GNU/Linux (64 bit)", ++ VBOXOSTYPE_GNULinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux, "Arch Linux", +- VBOXOSTYPE_ArchLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Parabola, "Parabola GNU/Linux-libre", ++ VBOXOSTYPE_Parabola, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux_64, "Arch Linux (64 bit)", +- VBOXOSTYPE_ArchLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Parabola_64, "Parabola GNU/Linux-libre (64 bit)", ++ VBOXOSTYPE_Parabola_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Debian, "Debian", +- VBOXOSTYPE_Debian, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_gNewSense, "gNewSense", ++ VBOXOSTYPE_gNewSense, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Debian_64, "Debian (64 bit)", +- VBOXOSTYPE_Debian_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_gNewSense_64, "gNewSense (64 bit)", ++ VBOXOSTYPE_gNewSense_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97}, +- { "Linux", "Linux", SchemaDefs_OSTypeId_OpenSUSE, "openSUSE", +- VBOXOSTYPE_OpenSUSE, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_OpenSUSE_64, "openSUSE (64 bit)", +- VBOXOSTYPE_OpenSUSE_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Fedora, "Fedora", +- VBOXOSTYPE_FedoraCore, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Blag, "Blag Linux and GNU", ++ VBOXOSTYPE_Blag, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Fedora_64, "Fedora (64 bit)", +- VBOXOSTYPE_FedoraCore_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Blag_64, "Blag Linux and GNU (64 bit)", ++ VBOXOSTYPE_Blag_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Gentoo, "Gentoo", +- VBOXOSTYPE_Gentoo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dragora, "Dragora", ++ VBOXOSTYPE_Dragora, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Gentoo_64, "Gentoo (64 bit)", +- VBOXOSTYPE_Gentoo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dragora_64, "Dragora (64 bit)", ++ VBOXOSTYPE_Dragora_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Mandriva, "Mandriva", +- VBOXOSTYPE_Mandriva, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Mandriva_64, "Mandriva (64 bit)", +- VBOXOSTYPE_Mandriva_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_RedHat, "Red Hat", +- VBOXOSTYPE_RedHat, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Ututo, "Ututo XS", ++ VBOXOSTYPE_Ututo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_RedHat_64, "Red Hat (64 bit)", +- VBOXOSTYPE_RedHat_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Ututo_64, "Ututo XS (64 bit)", ++ VBOXOSTYPE_Ututo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Turbolinux, "Turbolinux", +- VBOXOSTYPE_Turbolinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Musix, "Musix", ++ VBOXOSTYPE_Musix, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Turbolinux, "Turbolinux (64 bit)", +- VBOXOSTYPE_Turbolinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Musix_64, "Musix (64 bit)", ++ VBOXOSTYPE_Musix_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu, "Ubuntu", +- VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97}, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Trisquel, "Trisquel", ++ VBOXOSTYPE_Trisquel, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu_64, "Ubuntu (64 bit)", +- VBOXOSTYPE_Ubuntu_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Trisquel_64, "Trisquel (64 bit)", ++ VBOXOSTYPE_Trisquel_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros, "Xandros", +- VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", +- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dynebolic, "Dyne:bolic", ++ VBOXOSTYPE_Dynebolic, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", +- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Venenux, "Venenux", ++ VBOXOSTYPE_Venenux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux, "Other Linux", +- VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_Solaris, "Oracle Solaris 10 5/09 and earlier", +- VBOXOSTYPE_Solaris, VBOXOSHINT_NONE, +- 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_Solaris_64, "Oracle Solaris 10 5/09 and earlier (64 bit)", +- VBOXOSTYPE_Solaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_OpenSolaris, "Oracle Solaris 10 10/09 and later", +- VBOXOSTYPE_OpenSolaris, VBOXOSHINT_USBTABLET, +- 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_OpenSolaris_64, "Oracle Solaris 10 10/09 and later (64 bit)", +- VBOXOSTYPE_OpenSolaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_FreeBSD, "FreeBSD", +- VBOXOSTYPE_FreeBSD, VBOXOSHINT_NONE, +- 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_FreeBSD_64, "FreeBSD (64 bit)", +- VBOXOSTYPE_FreeBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_OpenBSD, "OpenBSD", +- VBOXOSTYPE_OpenBSD, VBOXOSHINT_HWVIRTEX, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_OpenBSD_64, "OpenBSD (64 bit)", +- VBOXOSTYPE_OpenBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_NetBSD, "NetBSD", +- VBOXOSTYPE_NetBSD, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_NetBSD_64, "NetBSD (64 bit)", +- VBOXOSTYPE_NetBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp3, "OS/2 Warp 3", +- VBOXOSTYPE_OS2Warp3, VBOXOSHINT_HWVIRTEX, +- 48, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp4, "OS/2 Warp 4", +- VBOXOSTYPE_OS2Warp4, VBOXOSHINT_HWVIRTEX, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp45, "OS/2 Warp 4.5", +- VBOXOSTYPE_OS2Warp45, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2eCS, "eComStation", +- VBOXOSTYPE_ECS, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2, "Other OS/2", +- VBOXOSTYPE_OS2, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "MacOS", "Mac OS X", SchemaDefs_OSTypeId_MacOS, "Mac OS X Server", +- VBOXOSTYPE_MacOS, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET, +- 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0, +- StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, +- ChipsetType_ICH9, AudioControllerType_HDA }, +- { "MacOS", "Mac OS X", SchemaDefs_OSTypeId_MacOS_64, "Mac OS X Server (64 bit)", +- VBOXOSTYPE_MacOS_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET, +- 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0, +- StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, +- ChipsetType_ICH9, AudioControllerType_HDA }, +- { "Other", "Other", SchemaDefs_OSTypeId_DOS, "DOS", +- VBOXOSTYPE_DOS, VBOXOSHINT_NONE, +- 32, 4, 500 * _1M, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 }, +- { "Other", "Other", SchemaDefs_OSTypeId_Netware, "Netware", +- VBOXOSTYPE_Netware, VBOXOSHINT_HWVIRTEX, +- 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_L4, "L4", +- VBOXOSTYPE_L4, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_QNX, "QNX", +- VBOXOSTYPE_QNX, VBOXOSHINT_HWVIRTEX, +- 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_JRockitVE, "JRockitVE", +- VBOXOSTYPE_JRockitVE, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE, +- 1024, 4, 8 * _1G64, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, AudioControllerType_AC97 }, + }; + + /** +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp 2012-07-25 21:44:01.290876720 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp 2012-07-25 22:00:57.819380802 -0300 +@@ -4875,75 +4875,27 @@ + static const char *kOSTypeIcons [][2] = + { + {"Other", ":/os_other.png"}, +- {"DOS", ":/os_dos.png"}, +- {"Netware", ":/os_netware.png"}, +- {"L4", ":/os_l4.png"}, +- {"Windows31", ":/os_win31.png"}, +- {"Windows95", ":/os_win95.png"}, +- {"Windows98", ":/os_win98.png"}, +- {"WindowsMe", ":/os_winme.png"}, +- {"WindowsNT4", ":/os_winnt4.png"}, +- {"Windows2000", ":/os_win2k.png"}, +- {"WindowsXP", ":/os_winxp.png"}, +- {"WindowsXP_64", ":/os_winxp_64.png"}, +- {"Windows2003", ":/os_win2k3.png"}, +- {"Windows2003_64", ":/os_win2k3_64.png"}, +- {"WindowsVista", ":/os_winvista.png"}, +- {"WindowsVista_64", ":/os_winvista_64.png"}, +- {"Windows2008", ":/os_win2k8.png"}, +- {"Windows2008_64", ":/os_win2k8_64.png"}, +- {"Windows7", ":/os_win7.png"}, +- {"Windows7_64", ":/os_win7_64.png"}, +- {"Windows8", ":/os_win8.png"}, +- {"Windows8_64", ":/os_win8_64.png"}, +- {"WindowsNT", ":/os_win_other.png"}, +- {"OS2Warp3", ":/os_os2warp3.png"}, +- {"OS2Warp4", ":/os_os2warp4.png"}, +- {"OS2Warp45", ":/os_os2warp45.png"}, +- {"OS2eCS", ":/os_os2ecs.png"}, +- {"OS2", ":/os_os2_other.png"}, +- {"Linux22", ":/os_linux22.png"}, +- {"Linux24", ":/os_linux24.png"}, +- {"Linux24_64", ":/os_linux24_64.png"}, +- {"Linux26", ":/os_linux26.png"}, +- {"Linux26_64", ":/os_linux26_64.png"}, +- {"ArchLinux", ":/os_archlinux.png"}, +- {"ArchLinux_64", ":/os_archlinux_64.png"}, +- {"Debian", ":/os_debian.png"}, +- {"Debian_64", ":/os_debian_64.png"}, +- {"OpenSUSE", ":/os_opensuse.png"}, +- {"OpenSUSE_64", ":/os_opensuse_64.png"}, +- {"Fedora", ":/os_fedora.png"}, +- {"Fedora_64", ":/os_fedora_64.png"}, +- {"Gentoo", ":/os_gentoo.png"}, +- {"Gentoo_64", ":/os_gentoo_64.png"}, +- {"Mandriva", ":/os_mandriva.png"}, +- {"Mandriva_64", ":/os_mandriva_64.png"}, +- {"RedHat", ":/os_redhat.png"}, +- {"RedHat_64", ":/os_redhat_64.png"}, +- {"Turbolinux", ":/os_turbolinux.png"}, +- {"Turbolinux_64", ":/os_turbolinux_64.png"}, +- {"Ubuntu", ":/os_ubuntu.png"}, +- {"Ubuntu_64", ":/os_ubuntu_64.png"}, +- {"Xandros", ":/os_xandros.png"}, +- {"Xandros_64", ":/os_xandros_64.png"}, +- {"Oracle", ":/os_oracle.png"}, +- {"Oracle_64", ":/os_oracle_64.png"}, +- {"Linux", ":/os_linux_other.png"}, +- {"FreeBSD", ":/os_freebsd.png"}, +- {"FreeBSD_64", ":/os_freebsd_64.png"}, +- {"OpenBSD", ":/os_openbsd.png"}, +- {"OpenBSD_64", ":/os_openbsd_64.png"}, +- {"NetBSD", ":/os_netbsd.png"}, +- {"NetBSD_64", ":/os_netbsd_64.png"}, +- {"Solaris", ":/os_solaris.png"}, +- {"Solaris_64", ":/os_solaris_64.png"}, +- {"OpenSolaris", ":/os_oraclesolaris.png"}, +- {"OpenSolaris_64", ":/os_oraclesolaris_64.png"}, +- {"QNX", ":/os_qnx.png"}, +- {"MacOS", ":/os_macosx.png"}, +- {"MacOS_64", ":/os_macosx_64.png"}, +- {"JRockitVE", ":/os_jrockitve.png"}, ++ {"GNU", ":/os_gnu.png"}, ++ {"GNU_64", ":/os_gnu_64.png"}, ++ {"GNUHurd", ":/os_gnuhurd.png"}, ++ {"GNULinux", ":/os_gnulinux.png"}, ++ {"GNULinux_64", ":/os_gnulinux_64.png"}, ++ {"Parabola", ":/os_parabola.png"}, ++ {"Parabola_64", ":/os_parabola_64.png"}, ++ {"gNewSense", ":/os_gnewsense.png"}, ++ {"gNewSense_64", ":/os_gnewsense_64.png"}, ++ {"Blag", ":/os_blag.png"}, ++ {"Blag_64", ":/os_blag_64.png"}, ++ {"Dragora", ":/os_dragora.png"}, ++ {"Dragora_64", ":/os_dragora_64.png"}, ++ {"Ututo", ":/os_ututo.png"}, ++ {"Ututo_64", ":/os_ututo_64.png"}, ++ {"Musix", ":/os_musix.png"}, ++ {"Musix_64", ":/os_musix_64.png"}, ++ {"Trisquel", ":/os_trisquel.png"}, ++ {"Trisquel_64", ":/os_trisquel_64.png"}, ++ {"Dynebolic", ":/os_dynebolic.png"}, ++ {"Venenux", ":/os_venenux.png"}, + }; + for (uint n = 0; n < SIZEOF_ARRAY (kOSTypeIcons); ++ n) + { +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp.orig 2012-06-20 10:16:38.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp 2012-07-25 22:07:51.232436783 -0300 +@@ -192,17 +192,10 @@ + if (typeIndex != -1) + mCbType->setCurrentIndex (typeIndex); + } +- /* Or select WinXP item for Windows family as default */ +- else if (familyId == "Windows") ++ /* Or select Parabola GNU/Linux-libre item for GNU/Linux family as default */ ++ else if (familyId == "GNU/Linux") + { +- int xpIndex = mCbType->findData ("WindowsXP", RoleTypeID); +- if (xpIndex != -1) +- mCbType->setCurrentIndex (xpIndex); +- } +- /* Or select Ubuntu item for Linux family as default */ +- else if (familyId == "Linux") +- { +- int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID); ++ int ubIndex = mCbType->findData ("Parabola", RoleTypeID); + if (ubIndex != -1) + mCbType->setCurrentIndex (ubIndex); + } +--- VirtualBox-4.1.18.orig/include/VBox/ostypes.h 2012-06-20 10:07:51.000000000 -0300 ++++ VirtualBox-4.1.18/include/VBox/ostypes.h 2012-07-25 23:20:57.322757456 -0300 +@@ -43,77 +43,27 @@ + typedef enum VBOXOSTYPE + { + VBOXOSTYPE_Unknown = 0, +- VBOXOSTYPE_DOS = 0x10000, +- VBOXOSTYPE_Win31 = 0x15000, +- VBOXOSTYPE_Win9x = 0x20000, +- VBOXOSTYPE_Win95 = 0x21000, +- VBOXOSTYPE_Win98 = 0x22000, +- VBOXOSTYPE_WinMe = 0x23000, +- VBOXOSTYPE_WinNT = 0x30000, +- VBOXOSTYPE_WinNT4 = 0x31000, +- VBOXOSTYPE_Win2k = 0x32000, +- VBOXOSTYPE_WinXP = 0x33000, +- VBOXOSTYPE_WinXP_x64 = 0x33100, +- VBOXOSTYPE_Win2k3 = 0x34000, +- VBOXOSTYPE_Win2k3_x64 = 0x34100, +- VBOXOSTYPE_WinVista = 0x35000, +- VBOXOSTYPE_WinVista_x64 = 0x35100, +- VBOXOSTYPE_Win2k8 = 0x36000, +- VBOXOSTYPE_Win2k8_x64 = 0x36100, +- VBOXOSTYPE_Win7 = 0x37000, +- VBOXOSTYPE_Win7_x64 = 0x37100, +- VBOXOSTYPE_Win8 = 0x38000, +- VBOXOSTYPE_Win8_x64 = 0x38100, +- VBOXOSTYPE_OS2 = 0x40000, +- VBOXOSTYPE_OS2Warp3 = 0x41000, +- VBOXOSTYPE_OS2Warp4 = 0x42000, +- VBOXOSTYPE_OS2Warp45 = 0x43000, +- VBOXOSTYPE_ECS = 0x44000, +- VBOXOSTYPE_Linux = 0x50000, +- VBOXOSTYPE_Linux_x64 = 0x50100, +- VBOXOSTYPE_Linux22 = 0x51000, +- VBOXOSTYPE_Linux24 = 0x52000, +- VBOXOSTYPE_Linux24_x64 = 0x52100, +- VBOXOSTYPE_Linux26 = 0x53000, +- VBOXOSTYPE_Linux26_x64 = 0x53100, +- VBOXOSTYPE_ArchLinux = 0x54000, +- VBOXOSTYPE_ArchLinux_x64 = 0x54100, +- VBOXOSTYPE_Debian = 0x55000, +- VBOXOSTYPE_Debian_x64 = 0x55100, +- VBOXOSTYPE_OpenSUSE = 0x56000, +- VBOXOSTYPE_OpenSUSE_x64 = 0x56100, +- VBOXOSTYPE_FedoraCore = 0x57000, +- VBOXOSTYPE_FedoraCore_x64 = 0x57100, +- VBOXOSTYPE_Gentoo = 0x58000, +- VBOXOSTYPE_Gentoo_x64 = 0x58100, +- VBOXOSTYPE_Mandriva = 0x59000, +- VBOXOSTYPE_Mandriva_x64 = 0x59100, +- VBOXOSTYPE_RedHat = 0x5A000, +- VBOXOSTYPE_RedHat_x64 = 0x5A100, +- VBOXOSTYPE_Turbolinux = 0x5B000, +- VBOXOSTYPE_Turbolinux_x64 = 0x5B100, +- VBOXOSTYPE_Ubuntu = 0x5C000, +- VBOXOSTYPE_Ubuntu_x64 = 0x5C100, +- VBOXOSTYPE_Xandros = 0x5D000, +- VBOXOSTYPE_Xandros_x64 = 0x5D100, +- VBOXOSTYPE_Oracle = 0x5E000, +- VBOXOSTYPE_Oracle_x64 = 0x5E100, +- VBOXOSTYPE_FreeBSD = 0x60000, +- VBOXOSTYPE_FreeBSD_x64 = 0x60100, +- VBOXOSTYPE_OpenBSD = 0x61000, +- VBOXOSTYPE_OpenBSD_x64 = 0x61100, +- VBOXOSTYPE_NetBSD = 0x62000, +- VBOXOSTYPE_NetBSD_x64 = 0x62100, +- VBOXOSTYPE_Netware = 0x70000, +- VBOXOSTYPE_Solaris = 0x80000, +- VBOXOSTYPE_Solaris_x64 = 0x80100, +- VBOXOSTYPE_OpenSolaris = 0x81000, +- VBOXOSTYPE_OpenSolaris_x64 = 0x81100, +- VBOXOSTYPE_L4 = 0x90000, +- VBOXOSTYPE_QNX = 0xA0000, +- VBOXOSTYPE_MacOS = 0xB0000, +- VBOXOSTYPE_MacOS_x64 = 0xB0100, +- VBOXOSTYPE_JRockitVE = 0xC0000, ++ VBOXOSTYPE_GNU = 0x10000, ++ VBOXOSTYPE_GNU_x64 = 0x10100, ++ VBOXOSTYPE_GNUHurd = 0x20000, ++ VBOXOSTYPE_GNULinux = 0x30000, ++ VBOXOSTYPE_GNULinux_x64 = 0x30100, ++ VBOXOSTYPE_Parabola = 0x31000, ++ VBOXOSTYPE_Parabola_x64 = 0x31100, ++ VBOXOSTYPE_gNewSense = 0x32000, ++ VBOXOSTYPE_gNewSense_x64 = 0x32100, ++ VBOXOSTYPE_Blag = 0x33000, ++ VBOXOSTYPE_Blag_x64 = 0x33100, ++ VBOXOSTYPE_Dragora = 0x34000, ++ VBOXOSTYPE_Dragora_x64 = 0x34100, ++ VBOXOSTYPE_Ututo = 0x35000, ++ VBOXOSTYPE_Ututo_x64 = 0x35100, ++ VBOXOSTYPE_Musix = 0x36000, ++ VBOXOSTYPE_Musix_x64 = 0x36100, ++ VBOXOSTYPE_Trisquel = 0x37000, ++ VBOXOSTYPE_Trisquel_x64 = 0x37100, ++ VBOXOSTYPE_Dynebolic = 0x38000, ++ VBOXOSTYPE_Venenux = 0x39000, + /** The bit number which indicates 64-bit or 32-bit. */ + #define VBOXOSTYPE_x64_BIT 8 + /** The mask which indicates 64-bit. */ +@@ -129,16 +79,11 @@ + typedef enum VBOXOSFAMILY + { + VBOXOSFAMILY_Unknown = 0, +- VBOXOSFAMILY_Windows32 = 1, +- VBOXOSFAMILY_Windows64 = 2, +- VBOXOSFAMILY_Linux32 = 3, +- VBOXOSFAMILY_Linux64 = 4, +- VBOXOSFAMILY_FreeBSD32 = 5, +- VBOXOSFAMILY_FreeBSD64 = 6, +- VBOXOSFAMILY_Solaris32 = 7, +- VBOXOSFAMILY_Solaris64 = 8, +- VBOXOSFAMILY_MacOSX32 = 9, +- VBOXOSFAMILY_MacOSX64 = 10, ++ VBOXOSFAMILY_GNU32 = 1, ++ VBOXOSFAMILY_GNU64 = 2, ++ VBOXOSFAMILY_GNUHurd = 3, ++ VBOXOSFAMILY_GNULinux32 = 4, ++ VBOXOSFAMILY_GNULinux64 = 5, + /** The usual 32-bit hack. */ + VBOXOSFAMILY_32BIT_HACK = 0x7fffffff + } VBOXOSFAMILY; +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-server/ApplianceImpl.cpp 2012-06-20 10:17:35.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/src-server/ApplianceImpl.cpp 2012-07-26 01:28:50.033551279 -0300 +@@ -49,94 +49,33 @@ + g_osTypes[] = + { + { ovf::CIMOSType_CIMOS_Unknown, SchemaDefs_OSTypeId_Other }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp3 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp4 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp45 }, +- { ovf::CIMOSType_CIMOS_MSDOS, SchemaDefs_OSTypeId_DOS }, +- { ovf::CIMOSType_CIMOS_WIN3x, SchemaDefs_OSTypeId_Windows31 }, +- { ovf::CIMOSType_CIMOS_WIN95, SchemaDefs_OSTypeId_Windows95 }, +- { ovf::CIMOSType_CIMOS_WIN98, SchemaDefs_OSTypeId_Windows98 }, +- { ovf::CIMOSType_CIMOS_WINNT, SchemaDefs_OSTypeId_WindowsNT }, +- { ovf::CIMOSType_CIMOS_WINNT, SchemaDefs_OSTypeId_WindowsNT4 }, +- { ovf::CIMOSType_CIMOS_NetWare, SchemaDefs_OSTypeId_Netware }, +- { ovf::CIMOSType_CIMOS_NovellOES, SchemaDefs_OSTypeId_Netware }, +- { ovf::CIMOSType_CIMOS_Solaris, SchemaDefs_OSTypeId_Solaris }, +- { ovf::CIMOSType_CIMOS_SunOS, SchemaDefs_OSTypeId_Solaris }, +- { ovf::CIMOSType_CIMOS_FreeBSD, SchemaDefs_OSTypeId_FreeBSD }, +- { ovf::CIMOSType_CIMOS_NetBSD, SchemaDefs_OSTypeId_NetBSD }, +- { ovf::CIMOSType_CIMOS_QNX, SchemaDefs_OSTypeId_QNX }, +- { ovf::CIMOSType_CIMOS_Windows2000, SchemaDefs_OSTypeId_Windows2000 }, +- { ovf::CIMOSType_CIMOS_WindowsMe, SchemaDefs_OSTypeId_WindowsMe }, +- { ovf::CIMOSType_CIMOS_OpenBSD, SchemaDefs_OSTypeId_OpenBSD }, +- { ovf::CIMOSType_CIMOS_WindowsXP, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_WindowsXPEmbedded, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_WindowsEmbeddedforPointofService, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2003, SchemaDefs_OSTypeId_Windows2003 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2003_64, SchemaDefs_OSTypeId_Windows2003_64 }, +- { ovf::CIMOSType_CIMOS_WindowsXP_64, SchemaDefs_OSTypeId_WindowsXP_64 }, +- { ovf::CIMOSType_CIMOS_WindowsVista, SchemaDefs_OSTypeId_WindowsVista }, +- { ovf::CIMOSType_CIMOS_WindowsVista_64, SchemaDefs_OSTypeId_WindowsVista_64 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2008, SchemaDefs_OSTypeId_Windows2008 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2008_64, SchemaDefs_OSTypeId_Windows2008_64 }, +- { ovf::CIMOSType_CIMOS_FreeBSD_64, SchemaDefs_OSTypeId_FreeBSD_64 }, +- { ovf::CIMOSType_CIMOS_MACOS, SchemaDefs_OSTypeId_MacOS }, +- { ovf::CIMOSType_CIMOS_MACOS, SchemaDefs_OSTypeId_MacOS_64 }, // there is no CIM 64-bit type for this +- +- // Linuxes +- { ovf::CIMOSType_CIMOS_RedHatEnterpriseLinux, SchemaDefs_OSTypeId_RedHat }, +- { ovf::CIMOSType_CIMOS_RedHatEnterpriseLinux_64, SchemaDefs_OSTypeId_RedHat_64 }, +- { ovf::CIMOSType_CIMOS_Solaris_64, SchemaDefs_OSTypeId_Solaris_64 }, +- { ovf::CIMOSType_CIMOS_SUSE, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_SLES, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_NovellLinuxDesktop, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_SUSE_64, SchemaDefs_OSTypeId_OpenSUSE_64 }, +- { ovf::CIMOSType_CIMOS_SLES_64, SchemaDefs_OSTypeId_OpenSUSE_64 }, +- { ovf::CIMOSType_CIMOS_LINUX, SchemaDefs_OSTypeId_Linux }, +- { ovf::CIMOSType_CIMOS_LINUX, SchemaDefs_OSTypeId_Linux22 }, +- { ovf::CIMOSType_CIMOS_SunJavaDesktopSystem, SchemaDefs_OSTypeId_Linux }, +- { ovf::CIMOSType_CIMOS_TurboLinux, SchemaDefs_OSTypeId_Turbolinux }, +- { ovf::CIMOSType_CIMOS_TurboLinux_64, SchemaDefs_OSTypeId_Turbolinux_64 }, +- { ovf::CIMOSType_CIMOS_Mandriva, SchemaDefs_OSTypeId_Mandriva }, +- { ovf::CIMOSType_CIMOS_Mandriva_64, SchemaDefs_OSTypeId_Mandriva_64 }, +- { ovf::CIMOSType_CIMOS_Ubuntu, SchemaDefs_OSTypeId_Ubuntu }, +- { ovf::CIMOSType_CIMOS_Ubuntu_64, SchemaDefs_OSTypeId_Ubuntu_64 }, +- { ovf::CIMOSType_CIMOS_Debian, SchemaDefs_OSTypeId_Debian }, +- { ovf::CIMOSType_CIMOS_Debian_64, SchemaDefs_OSTypeId_Debian_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_4_x, SchemaDefs_OSTypeId_Linux24 }, +- { ovf::CIMOSType_CIMOS_Linux_2_4_x_64, SchemaDefs_OSTypeId_Linux24_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Linux26 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Linux26_64 }, +- { ovf::CIMOSType_CIMOS_Linux_64, SchemaDefs_OSTypeId_Linux26_64 }, +- +- // types that we have support for but CIM doesn't +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_ArchLinux }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_ArchLinux_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Fedora }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Fedora_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Gentoo }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Gentoo_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Xandros }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Xandros_64 }, +- { ovf::CIMOSType_CIMOS_Solaris, SchemaDefs_OSTypeId_OpenSolaris }, +- { ovf::CIMOSType_CIMOS_Solaris_64, SchemaDefs_OSTypeId_OpenSolaris_64 }, +- +- // types added with CIM 2.25.0 follow: +- { ovf::CIMOSType_CIMOS_WindowsServer2008R2, SchemaDefs_OSTypeId_Windows2008 }, // duplicate, see above +-// { ovf::CIMOSType_CIMOS_VMwareESXi = 104, // we can't run ESX in a VM +- { ovf::CIMOSType_CIMOS_Windows7, SchemaDefs_OSTypeId_Windows7 }, +- { ovf::CIMOSType_CIMOS_Windows7, SchemaDefs_OSTypeId_Windows7_64 }, // there is no CIM 64-bit type for this +- { ovf::CIMOSType_CIMOS_CentOS, SchemaDefs_OSTypeId_RedHat }, +- { ovf::CIMOSType_CIMOS_CentOS_64, SchemaDefs_OSTypeId_RedHat_64 }, +- { ovf::CIMOSType_CIMOS_OracleEnterpriseLinux, SchemaDefs_OSTypeId_Oracle }, +- { ovf::CIMOSType_CIMOS_OracleEnterpriseLinux_64, SchemaDefs_OSTypeId_Oracle_64 }, +- { ovf::CIMOSType_CIMOS_eComStation, SchemaDefs_OSTypeId_OS2eCS } +- +- // there are no CIM types for these, so these turn to "other" on export: +- // SchemaDefs_OSTypeId_OpenBSD +- // SchemaDefs_OSTypeId_OpenBSD_64 +- // SchemaDefs_OSTypeId_NetBSD +- // SchemaDefs_OSTypeId_NetBSD_64 ++ ++ // Custom OS ++ { ovf::CIMOSType_CIMOS_GNU, SchemaDefs_OSTypeId_GNU }, ++ { ovf::CIMOSType_CIMOS_GNU_64, SchemaDefs_OSTypeId_GNU_64 }, ++ { ovf::CIMOSType_CIMOS_GNUHurd, SchemaDefs_OSTypeId_GNUHurd }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_GNULinux }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_GNULinux_64 }, ++ ++ // GNU/Linux free distros ++ { ovf::CIMOSType_CIMOS_gNewSense, SchemaDefs_OSTypeId_gNewSense }, ++ { ovf::CIMOSType_CIMOS_gNewSense_64, SchemaDefs_OSTypeId_gNewSense_64 }, ++ { ovf::CIMOSType_CIMOS_Dragora, SchemaDefs_OSTypeId_Dragora }, ++ { ovf::CIMOSType_CIMOS_Dragora_64, SchemaDefs_OSTypeId_Dragora_64 }, ++ { ovf::CIMOSType_CIMOS_Musix, SchemaDefs_OSTypeId_Musix }, ++ { ovf::CIMOSType_CIMOS_Musix_64, SchemaDefs_OSTypeId_Musix_64 }, ++ { ovf::CIMOSType_CIMOS_Trisquel, SchemaDefs_OSTypeId_Trisquel }, ++ { ovf::CIMOSType_CIMOS_Trisquel_64, SchemaDefs_OSTypeId_Trisquel_64 }, ++ { ovf::CIMOSType_CIMOS_Dynebolic, SchemaDefs_OSTypeId_Dynebolic }, ++ { ovf::CIMOSType_CIMOS_Venenux, SchemaDefs_OSTypeId_Venenux }, ++ ++ // GNU/Linux free distros that we have support for but CIM doesn't ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Parabola }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Parabola_64 }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Blag }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Blag_64 }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Ututo }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Ututo_64 }, + + }; + +@@ -150,53 +89,34 @@ + /* These are the 32-Bit ones. They are sorted by priority. */ + static const osTypePattern g_osTypesPattern[] = + { +- {"Windows NT", SchemaDefs_OSTypeId_WindowsNT4}, +- {"Windows XP", SchemaDefs_OSTypeId_WindowsXP}, +- {"Windows 2000", SchemaDefs_OSTypeId_Windows2000}, +- {"Windows 2003", SchemaDefs_OSTypeId_Windows2003}, +- {"Windows Vista", SchemaDefs_OSTypeId_WindowsVista}, +- {"Windows 2008", SchemaDefs_OSTypeId_Windows2008}, +- {"SUSE", SchemaDefs_OSTypeId_OpenSUSE}, +- {"Novell", SchemaDefs_OSTypeId_OpenSUSE}, +- {"Red Hat", SchemaDefs_OSTypeId_RedHat}, +- {"Mandriva", SchemaDefs_OSTypeId_Mandriva}, +- {"Ubuntu", SchemaDefs_OSTypeId_Ubuntu}, +- {"Debian", SchemaDefs_OSTypeId_Debian}, +- {"QNX", SchemaDefs_OSTypeId_QNX}, +- {"Linux 2.4", SchemaDefs_OSTypeId_Linux24}, +- {"Linux 2.6", SchemaDefs_OSTypeId_Linux26}, +- {"Linux", SchemaDefs_OSTypeId_Linux}, +- {"OpenSolaris", SchemaDefs_OSTypeId_OpenSolaris}, +- {"Solaris", SchemaDefs_OSTypeId_OpenSolaris}, +- {"FreeBSD", SchemaDefs_OSTypeId_FreeBSD}, +- {"NetBSD", SchemaDefs_OSTypeId_NetBSD}, +- {"Windows 95", SchemaDefs_OSTypeId_Windows95}, +- {"Windows 98", SchemaDefs_OSTypeId_Windows98}, +- {"Windows Me", SchemaDefs_OSTypeId_WindowsMe}, +- {"Windows 3.", SchemaDefs_OSTypeId_Windows31}, +- {"DOS", SchemaDefs_OSTypeId_DOS}, +- {"OS2", SchemaDefs_OSTypeId_OS2} ++ ++ {"Parabola GNU/Linux-libre", SchemaDefs_OSTypeId_Parabola}, ++ {"gNewSense", SchemaDefs_OSTypeId_gNewSense}, ++ {"Blag Linux and GNU", SchemaDefs_OSTypeId_Blag}, ++ {"Dragora", SchemaDefs_OSTypeId_Dragora}, ++ {"Ututo XS", SchemaDefs_OSTypeId_Ututo}, ++ {"Musix", SchemaDefs_OSTypeId_Musix}, ++ {"Trisquel", SchemaDefs_OSTypeId_Trisquel}, ++ {"Dyne:bolic", SchemaDefs_OSTypeId_Dynebolic}, ++ {"Venenux", SchemaDefs_OSTypeId_Venenux}, ++ {"GNU", SchemaDefs_OSTypeId_GNU}, ++ {"GNU-Hurd", SchemaDefs_OSTypeId_GNUHurd}, ++ {"GNU/Linux", SchemaDefs_OSTypeId_GNULinux}, ++ + }; + + /* These are the 64-Bit ones. They are sorted by priority. */ + static const osTypePattern g_osTypesPattern64[] = + { +- {"Windows XP", SchemaDefs_OSTypeId_WindowsXP_64}, +- {"Windows 2003", SchemaDefs_OSTypeId_Windows2003_64}, +- {"Windows Vista", SchemaDefs_OSTypeId_WindowsVista_64}, +- {"Windows 2008", SchemaDefs_OSTypeId_Windows2008_64}, +- {"SUSE", SchemaDefs_OSTypeId_OpenSUSE_64}, +- {"Novell", SchemaDefs_OSTypeId_OpenSUSE_64}, +- {"Red Hat", SchemaDefs_OSTypeId_RedHat_64}, +- {"Mandriva", SchemaDefs_OSTypeId_Mandriva_64}, +- {"Ubuntu", SchemaDefs_OSTypeId_Ubuntu_64}, +- {"Debian", SchemaDefs_OSTypeId_Debian_64}, +- {"Linux 2.4", SchemaDefs_OSTypeId_Linux24_64}, +- {"Linux 2.6", SchemaDefs_OSTypeId_Linux26_64}, +- {"Linux", SchemaDefs_OSTypeId_Linux26_64}, +- {"OpenSolaris", SchemaDefs_OSTypeId_OpenSolaris_64}, +- {"Solaris", SchemaDefs_OSTypeId_OpenSolaris_64}, +- {"FreeBSD", SchemaDefs_OSTypeId_FreeBSD_64}, ++ {"Parabola GNU/Linux-libre", SchemaDefs_OSTypeId_Parabola_64}, ++ {"gNewSense", SchemaDefs_OSTypeId_gNewSense_64}, ++ {"Blag Linux and GNU", SchemaDefs_OSTypeId_Blag_64}, ++ {"Dragora", SchemaDefs_OSTypeId_Dragora_64}, ++ {"Ututo XS", SchemaDefs_OSTypeId_Ututo_64}, ++ {"Musix", SchemaDefs_OSTypeId_Musix_64}, ++ {"Trisquel", SchemaDefs_OSTypeId_Trisquel_64}, ++ {"GNU", SchemaDefs_OSTypeId_GNU_64}, ++ {"GNU/Linux", SchemaDefs_OSTypeId_GNULinux_64}, + }; + + /** +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ovfreader.h 2012-06-20 10:17:34.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/include/ovfreader.h 2012-07-26 03:51:21.807619186 -0300 +@@ -34,119 +34,24 @@ + + enum CIMOSType_T + { +- CIMOSType_CIMOS_Unknown = 0, +- CIMOSType_CIMOS_Other = 1, +- CIMOSType_CIMOS_MACOS = 2, +- CIMOSType_CIMOS_ATTUNIX = 3, +- CIMOSType_CIMOS_DGUX = 4, +- CIMOSType_CIMOS_DECNT = 5, +- CIMOSType_CIMOS_Tru64UNIX = 6, +- CIMOSType_CIMOS_OpenVMS = 7, +- CIMOSType_CIMOS_HPUX = 8, +- CIMOSType_CIMOS_AIX = 9, +- CIMOSType_CIMOS_MVS = 10, +- CIMOSType_CIMOS_OS400 = 11, +- CIMOSType_CIMOS_OS2 = 12, +- CIMOSType_CIMOS_JavaVM = 13, +- CIMOSType_CIMOS_MSDOS = 14, +- CIMOSType_CIMOS_WIN3x = 15, +- CIMOSType_CIMOS_WIN95 = 16, +- CIMOSType_CIMOS_WIN98 = 17, +- CIMOSType_CIMOS_WINNT = 18, +- CIMOSType_CIMOS_WINCE = 19, +- CIMOSType_CIMOS_NCR3000 = 20, +- CIMOSType_CIMOS_NetWare = 21, +- CIMOSType_CIMOS_OSF = 22, +- CIMOSType_CIMOS_DCOS = 23, +- CIMOSType_CIMOS_ReliantUNIX = 24, +- CIMOSType_CIMOS_SCOUnixWare = 25, +- CIMOSType_CIMOS_SCOOpenServer = 26, +- CIMOSType_CIMOS_Sequent = 27, +- CIMOSType_CIMOS_IRIX = 28, +- CIMOSType_CIMOS_Solaris = 29, +- CIMOSType_CIMOS_SunOS = 30, +- CIMOSType_CIMOS_U6000 = 31, +- CIMOSType_CIMOS_ASERIES = 32, +- CIMOSType_CIMOS_HPNonStopOS = 33, +- CIMOSType_CIMOS_HPNonStopOSS = 34, +- CIMOSType_CIMOS_BS2000 = 35, +- CIMOSType_CIMOS_LINUX = 36, +- CIMOSType_CIMOS_Lynx = 37, +- CIMOSType_CIMOS_XENIX = 38, +- CIMOSType_CIMOS_VM = 39, +- CIMOSType_CIMOS_InteractiveUNIX = 40, +- CIMOSType_CIMOS_BSDUNIX = 41, +- CIMOSType_CIMOS_FreeBSD = 42, +- CIMOSType_CIMOS_NetBSD = 43, +- CIMOSType_CIMOS_GNUHurd = 44, +- CIMOSType_CIMOS_OS9 = 45, +- CIMOSType_CIMOS_MACHKernel = 46, +- CIMOSType_CIMOS_Inferno = 47, +- CIMOSType_CIMOS_QNX = 48, +- CIMOSType_CIMOS_EPOC = 49, +- CIMOSType_CIMOS_IxWorks = 50, +- CIMOSType_CIMOS_VxWorks = 51, +- CIMOSType_CIMOS_MiNT = 52, +- CIMOSType_CIMOS_BeOS = 53, +- CIMOSType_CIMOS_HPMPE = 54, +- CIMOSType_CIMOS_NextStep = 55, +- CIMOSType_CIMOS_PalmPilot = 56, +- CIMOSType_CIMOS_Rhapsody = 57, +- CIMOSType_CIMOS_Windows2000 = 58, +- CIMOSType_CIMOS_Dedicated = 59, +- CIMOSType_CIMOS_OS390 = 60, +- CIMOSType_CIMOS_VSE = 61, +- CIMOSType_CIMOS_TPF = 62, +- CIMOSType_CIMOS_WindowsMe = 63, +- CIMOSType_CIMOS_CalderaOpenUNIX = 64, +- CIMOSType_CIMOS_OpenBSD = 65, +- CIMOSType_CIMOS_NotApplicable = 66, +- CIMOSType_CIMOS_WindowsXP = 67, +- CIMOSType_CIMOS_zOS = 68, +- CIMOSType_CIMOS_MicrosoftWindowsServer2003 = 69, +- CIMOSType_CIMOS_MicrosoftWindowsServer2003_64 = 70, +- CIMOSType_CIMOS_WindowsXP_64 = 71, +- CIMOSType_CIMOS_WindowsXPEmbedded = 72, +- CIMOSType_CIMOS_WindowsVista = 73, +- CIMOSType_CIMOS_WindowsVista_64 = 74, +- CIMOSType_CIMOS_WindowsEmbeddedforPointofService = 75, +- CIMOSType_CIMOS_MicrosoftWindowsServer2008 = 76, +- CIMOSType_CIMOS_MicrosoftWindowsServer2008_64 = 77, +- CIMOSType_CIMOS_FreeBSD_64 = 78, +- CIMOSType_CIMOS_RedHatEnterpriseLinux = 79, +- CIMOSType_CIMOS_RedHatEnterpriseLinux_64 = 80, +- CIMOSType_CIMOS_Solaris_64 = 81, +- CIMOSType_CIMOS_SUSE = 82, +- CIMOSType_CIMOS_SUSE_64 = 83, +- CIMOSType_CIMOS_SLES = 84, +- CIMOSType_CIMOS_SLES_64 = 85, +- CIMOSType_CIMOS_NovellOES = 86, +- CIMOSType_CIMOS_NovellLinuxDesktop = 87, +- CIMOSType_CIMOS_SunJavaDesktopSystem = 88, +- CIMOSType_CIMOS_Mandriva = 89, +- CIMOSType_CIMOS_Mandriva_64 = 90, +- CIMOSType_CIMOS_TurboLinux = 91, +- CIMOSType_CIMOS_TurboLinux_64 = 92, +- CIMOSType_CIMOS_Ubuntu = 93, +- CIMOSType_CIMOS_Ubuntu_64 = 94, +- CIMOSType_CIMOS_Debian = 95, +- CIMOSType_CIMOS_Debian_64 = 96, +- CIMOSType_CIMOS_Linux_2_4_x = 97, +- CIMOSType_CIMOS_Linux_2_4_x_64 = 98, +- CIMOSType_CIMOS_Linux_2_6_x = 99, +- CIMOSType_CIMOS_Linux_2_6_x_64 = 100, +- CIMOSType_CIMOS_Linux_64 = 101, +- CIMOSType_CIMOS_Other_64 = 102, +- // types added with CIM 2.25.0 follow: +- CIMOSType_CIMOS_WindowsServer2008R2 = 103, +- CIMOSType_CIMOS_VMwareESXi = 104, +- CIMOSType_CIMOS_Windows7 = 105, +- CIMOSType_CIMOS_CentOS = 106, +- CIMOSType_CIMOS_CentOS_64 = 107, +- CIMOSType_CIMOS_OracleEnterpriseLinux = 108, +- CIMOSType_CIMOS_OracleEnterpriseLinux_64 = 109, +- CIMOSType_CIMOS_eComStation = 110 +- // no new types added with CIM 2.26.0 ++ CIMOSType_CIMOS_Unknown = 0, ++ CIMOSType_CIMOS_Other = 1, ++ CIMOSType_CIMOS_Other_64 = 2, ++ CIMOSType_CIMOS_gNewSense = 3, ++ CIMOSType_CIMOS_gNewSense_64 = 4, ++ CIMOSType_CIMOS_Dragora = 5, ++ CIMOSType_CIMOS_Dragora_64 = 6, ++ CIMOSType_CIMOS_Musix = 7, ++ CIMOSType_CIMOS_Musix_64 = 8, ++ CIMOSType_CIMOS_Trisquel = 9, ++ CIMOSType_CIMOS_Trisquel_64 = 10, ++ CIMOSType_CIMOS_Dynebolic = 11, ++ CIMOSType_CIMOS_Venenux = 12, ++ CIMOSType_CIMOS_GNU = 13, ++ CIMOSType_CIMOS_GNU_64 = 14, ++ CIMOSType_CIMOS_GNUHurd = 15, ++ CIMOSType_CIMOS_GNULinux = 16, ++ CIMOSType_CIMOS_GNULinux_64 = 17 + }; + + +--- VirtualBox-4.1.18.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c 2012-06-20 10:09:01.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c 2012-07-26 15:32:55.309812685 -0300 +@@ -622,16 +622,16 @@ + * Call the common device extension initializer. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_AMD64) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26_x64; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux_x64; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_X86) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_AMD64) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24_x64; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux_x64; + #else + # warning "huh? which arch + version is this?" +- VBOXOSTYPE enmOsType = VBOXOSTYPE_Linux; ++ VBOXOSTYPE enmOsType = VBOXOSTYPE_GNULinux; + #endif + rc = VBoxGuestInitDevExt(&g_DevExt, + g_IOPortBase, diff --git a/libre/virtualbox-libre-modules/libre.patch b/libre/virtualbox-libre-modules/libre.patch new file mode 100644 index 000000000..e51d0c0a7 --- /dev/null +++ b/libre/virtualbox-libre-modules/libre.patch @@ -0,0 +1,5765 @@ +--- VirtualBox-4.1.18.orig/Config.kmk 2012-07-24 16:38:43.981310996 -0300 ++++ VirtualBox-4.1.18/Config.kmk 2012-07-24 16:38:44.001309865 -0300 +@@ -56,9 +56,6 @@ + PROPS_SYSMODS_ACCUMULATE_L += INTERMEDIATES + PROPS_MISCBINS_ACCUMULATE_L += INTERMEDIATES + +-# Misc names used bye the install paths below. +-VBOX_PUEL_MANGLED_NAME := Oracle_VM_VirtualBox_Extension_Pack +- + # Install paths + ## @todo This will change after 4.1 is branched off! + # What is now 'bin' and 'lib' will be moved down under 'staged/', except on +@@ -125,9 +122,6 @@ + endif + + INST_DOC = doc/ +-INST_EXTPACK = $(INST_BIN)ExtensionPacks/ +-INST_EXTPACK_CERTS = $(INST_BIN)ExtPackCertificates/ +-INST_EXTPACK_PUEL = $(INST_EXTPACK)$(VBOX_PUEL_MANGLED_NAME)/ + INST_PACKAGES = packages/ + + VBOX_PATH_SDK = $(patsubst %/,%,$(PATH_STAGE)/$(INST_SDK)) +@@ -136,7 +130,6 @@ + VBOX_PATH_ADDITIONS = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS)) + VBOX_PATH_ADDITIONS_ISO = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_ISO)) + VBOX_PATH_ADDITIONS_LIB = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_LIB)) +-VBOX_PATH_EXTPACK_PUEL= $(patsubst %/,%,$(PATH_STAGE)/$(INST_EXTPACK_PUEL)) + VBOX_PATH_PACKAGES = $(patsubst %/,%,$(PATH_STAGE)/$(INST_PACKAGES)) + + +@@ -208,7 +201,6 @@ + export VBOX_ADDITIONS_SH_MODE = release + export VBOX_DOCUMENTATION_SH_MODE = release + export VBOX_EFI_SH_MODE = release +- export VBOX_EXTPACKS_SH_MODE = release + endif + + # Some info on the vendor +@@ -361,8 +353,6 @@ + VBOX_WITH_USB = 1 + # Enable the USB 1.1 controller plus virtual USB HID devices. + VBOX_WITH_VUSB = 1 +-# Enable the USB 2.0 controller. +-VBOX_WITH_EHCI = 1 + # Enable the ISCSI feature. + VBOX_WITH_ISCSI = 1 + # Enable INIP support in the ISCSI feature. +@@ -430,9 +420,6 @@ + ifdef VBOX_WITH_USB + VBOX_WITH_VUSB = 1 + endif +-ifdef VBOX_WITH_EHCI +- VBOX_WITH_EHCI_IMPL = 1 +-endif + ifdef VBOX_WITH_PCI_PASSTHROUGH + VBOX_WITH_PCI_PASSTHROUGH_IMPL = 1 + endif +@@ -591,15 +578,6 @@ + ## @} + + +-## @name Extension pack +-## @{ +-# Enables the extension pack feature. +-VBOX_WITH_EXTPACK = 1 +-# Enables separating code into the Oracle VM VirtualBox Extension Pack, dubbed PUEL. +-VBOX_WITH_EXTPACK_PUEL = 1 +-# Enables building+packing the Oracle VM VirtualBox Extension Pack, includes VBOX_WITH_EXTPACK_PUEL +-VBOX_WITH_EXTPACK_PUEL_BUILD = 1 +-## @} + + ## @name Misc + ## @{ +@@ -777,14 +755,6 @@ + # Skip stuff. + # + +-ifdef VBOX_ONLY_EXTPACKS +- # Clear some VBOX_WITH_XXX variables instead of adding ifdefs all over the place. +- VBOX_WITH_DEBUGGER = +- VBOX_WITH_ADDITIONS = +- VBOX_WITH_VBOXDRV = +- VBOX_WITH_TESTCASES = +-endif +- + # VBOX_QUICK can be used by core developers to speed to the build + ifdef VBOX_QUICK + # undefine variables by assigning blank. +@@ -848,7 +818,6 @@ + VBOX_WITH_TESTSUITE= + VBOX_WITH_QTGUI= + VBOX_WITH_USB= +- VBOX_WITH_EHCI= + VBOX_WITH_DOCS= + VBOX_WITH_PDM_ASYNC_COMPLETION= + VBOX_WITH_KCHMVIEWER= +@@ -870,7 +839,6 @@ + VBOX_WITH_CROGL= + VBOX_WITH_DEBUGGER= + VBOX_WITH_DOCS= +- VBOX_WITH_EHCI= + VBOX_WITH_HARDENING= + VBOX_WITH_HEADLESS= + VBOX_WITH_HGCM= +@@ -952,9 +920,6 @@ + # + ifdef VBOX_OSE + VBOX_WITH_VRDP= +- VBOX_WITH_EHCI_IMPL= +- VBOX_WITH_EXTPACK_PUEL= +- VBOX_WITH_EXTPACK_PUEL_BUILD= + VBOX_WITH_PCI_PASSTHROUGH_IMPL= + VBOX_WITH_OS2_ADDITIONS_BIN= + VBOX_WITH_SECURELABEL= +@@ -1082,10 +1047,6 @@ + VBOX_WITH_KCHMVIEWER= + endif + +-ifdef VBOX_WITH_EXTPACK_PUEL_BUILD +- VBOX_WITH_EXTPACK_PUEL = 1 +-endif +- + # + # Mark OSE builds clearly, helps figuring out limitations more easily. + # +@@ -1679,9 +1640,6 @@ + # biossums (set BIOS checksums) + VBOX_BIOSSUMS ?= $(PATH_OBJ)/biossums/biossums$(HOSTSUFF_EXE) + +-# RTManifest (extension pack manifest utility) +-VBOX_RTMANIFEST ?= $(PATH_OBJ)/bldRTManifest/bldRTManifest$(HOSTSUFF_EXE) +- + # filesplitter (splits java files) + VBOX_FILESPLIT ?= $(PATH_OBJ)/filesplitter/filesplitter$(HOSTSUFF_EXE) + +@@ -2461,13 +2419,6 @@ + SDK_VBOX_OPENSSL2_LIBS = $(NO_SUCH_VARIABLE) + endif + +-SDK_VBoxOpenSslExtPack = Internal use only. +-SDK_VBoxOpenSslExtPack_INCS = $(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS) +-SDK_VBoxOpenSslExtPack_ORDERDEPS = $(crypto-headers_1_TARGET) +-SDK_VBoxOpenSslExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VBoxExtPack-libssl$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VBoxExtPack-libcrypto$(VBOX_SUFF_LIB) +- + SDK_VBOX_BLD_OPENSSL = . + SDK_VBOX_BLD_OPENSSL_EXTENDS = VBOX_OPENSSL + SDK_VBOX_BLD_OPENSSL_LIBS ?= \ +@@ -3817,100 +3768,6 @@ + endif + TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS.darwin = $(filter-out -bind_at_load,$(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS.darwin)) + +- +- +-# +-# Templates used for building the extension packs. +-# +-ifdef VBOX_WITH_EXTPACK +- # Base templates (native or portable). +- TEMPLATE_VBoxR3ExtPack = For the ring-3 context extension pack modules. +- if 1 # Native for now. +- TEMPLATE_VBoxR3ExtPack_EXTENDS = VBOXR3DLLNOXCPT +- TEMPLATE_VBoxR3ExtPack_DEFS = $(TEMPLATE_VBOXR3DLLNOXCPT_DEFS) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 +- else +- TEMPLATE_VBoxR3ExtPack_EXTENDS = VBOXNOCRTGCC +- TEMPLATE_VBoxR3ExtPack_DEFS = $(TEMPLATE_VBOXNOCRTGCC_DEFS) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 IPRT_NO_CRT IN_RING3 +- TEMPLATE_VBoxR3ExtPack_INCS = $(PATH_ROOT)/include/iprt/nocrt $(TEMPLATE_VBOXR3DLLNOXCPT_INCS) +- endif +- ifneq ($(KBUILD_TARGET),win) +- TEMPLATE_VBoxR3ExtPack_CXXFLAGS = $(TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS) -fno-rtti +- endif +- TEMPLATE_VBoxR3ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- ifeq ($(KBUILD_TARGET),linux) +- TEMPLATE_VBoxR3ExtPack_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS)) +- else +- if !defined(VBOX_WITH_RUNPATH) && defined(VBOX_WITH_RELATIVE_RUNPATH) +- TEMPLATE_VBoxR3ExtPack_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/../../..' $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS)) +- endif +- endif +- ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- if1of ($(KBUILD_TARGET), win os2) +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(PATH_STAGE_LIB)/VMMR3Imp$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VBoxRTImp$(VBOX_SUFF_LIB) +- else +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(PATH_STAGE_LIB)/VMMR3Imp$(VBOX_SUFF_DLL) \ +- $(PATH_STAGE_LIB)/VBoxRTImp$(VBOX_SUFF_DLL) +- endif +- else +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(LIB_RUNTIME) \ +- $(LIB_VMM) +- endif +- +- TEMPLATE_VBoxR0ExtPack = For the ring-0 context extension pack modules. +- TEMPLATE_VBoxR0ExtPack_EXTENDS = VBoxR0 +- TEMPLATE_VBoxR0ExtPack_EXTENDS_BY = appending +- TEMPLATE_VBoxR0ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- TEMPLATE_VBoxR0ExtPack_DEFS = VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R0 +- if1of ($(VBOX_LDR_FMT), pe lx) +- TEMPLATE_VBoxR0ExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VMMR0Imp$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/SUPR0$(VBOX_SUFF_LIB) +- endif +- +- TEMPLATE_VBoxRcExtPack = For the raw-mode context extension pack modules. +- TEMPLATE_VBoxRcExtPack_EXTENDS = VBoxRc +- TEMPLATE_VBoxRcExtPack_EXTENDS_BY = appending +- TEMPLATE_VBoxRcExtPack_SYSSUFF = .rc +- TEMPLATE_VBoxRcExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- TEMPLATE_VBoxRcExtPack_DEFS = VBOX_IN_EXTPACK VBOX_IN_EXTPACK_RC +- if1of ($(VBOX_LDR_FMT32), pe lx) +- TEMPLATE_VBoxRcExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VMMRCImp$(VBOX_SUFF_LIB) +- endif +- +- TEMPLATE_VBoxInsExtPack = For the install targets of an extension pack. +- TEMPLATE_VBoxInsExtPack_MODE = 0644 +- TEMPLATE_VBoxInsExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- +- # For each individual extension pack +- ifdef VBOX_WITH_EXTPACK_PUEL +- TEMPLATE_VBoxR3ExtPackPuel = For the ring-3 context modules in the PUEL extension pack. +- TEMPLATE_VBoxR3ExtPackPuel_EXTENDS = VBoxR3ExtPack +- TEMPLATE_VBoxR3ExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxR0ExtPackPuel = For the ring-0 context modules in the PUEL extension pack. +- TEMPLATE_VBoxR0ExtPackPuel_EXTENDS = VBoxR0ExtPack +- TEMPLATE_VBoxR0ExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxRcExtPackPuel = For the raw-mode context modules in the PUEL extension pack. +- TEMPLATE_VBoxRcExtPackPuel_EXTENDS = VBoxRcExtPack +- TEMPLATE_VBoxRcExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxInsExtPackPuel = For the install targets of an extension pack. +- TEMPLATE_VBoxInsExtPackPuel_EXTENDS = VBoxR0ExtPack +- TEMPLATE_VBoxInsExtPackPuel_INST = $(INST_EXTPACK_PUEL) +-endif +-endif # VBOX_WITH_EXTPACK +- +- + # + # Qt 4 + # Qt 4 +--- VirtualBox-4.1.18.orig/Makefile.kmk 2012-07-24 17:16:47.078929150 -0300 ++++ VirtualBox-4.1.18/Makefile.kmk 2012-07-24 17:16:47.125592981 -0300 +@@ -446,7 +446,6 @@ + include/VBox \ + include/VBox/vmm \ + include/VBox/com \ +- include/VBox/ExtPack \ + include/VBox/HostServices \ + include/VBox/GuestHost \ + include/VBox/HGSMI \ +@@ -862,191 +861,6 @@ + additions-build-linux.x86.combined \ + additions-packing + +- +-# +-# Build the extension packs, all of them. +-# +-# This is tailored (hardcoded) for the extension pack build box. +-# +-# The fetching must be done in serial fashion, while the building should be +-# more flexible wrt to -jN. +-# +-extpacks-fetch: +- + $(KMK) -C tools fetch VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=darwin BUILD_TARGET_ARCH=amd64 BUILD_TARGET=darwin VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=darwin BUILD_TARGET_ARCH=x86 BUILD_TARGET=darwin VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=freebsd BUILD_TARGET_ARCH=amd64 BUILD_TARGET=freebsd VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=freebsd BUILD_TARGET_ARCH=x86 BUILD_TARGET=freebsd VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=linux BUILD_TARGET_ARCH=amd64 BUILD_TARGET=linux VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=linux BUILD_TARGET_ARCH=x86 BUILD_TARGET=linux VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=os2 BUILD_TARGET_ARCH=x86 BUILD_TARGET=os2 VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=amd64 BUILD_TARGET=solaris VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=x86 BUILD_TARGET=solaris VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=win BUILD_TARGET_ARCH=amd64 BUILD_TARGET=win VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=win BUILD_TARGET_ARCH=x86 BUILD_TARGET=win VBOX_ONLY_EXTPACKS=1 +- +- +-extpacks-build: \ +- extpacks-build-win.amd64 \ +- extpacks-build-win.x86 \ +- extpacks-build-solaris.amd64 \ +- extpacks-build-solaris.x86 \ +- extpacks-build-os2.x86 \ +- extpacks-build-linux.amd64 \ +- extpacks-build-linux.x86 \ +- extpacks-build-darwin.amd64 \ +- extpacks-build-darwin.x86 \ +- extpacks-build-freebsd.amd64 \ +- extpacks-build-freebsd.x86 +- +-VBOX_EXTPACKS_BUILD.amd64 = VBOX_ONLY_EXTPACKS=1 \ +- KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \ +- KBUILD_TARGET_ARCH=amd64 BUILD_TARGET_ARCH=amd64 \ +- VBOX_SVN_REV=$(VBOX_SVN_REV) +- +-VBOX_EXTPACKS_BUILD.x86 = VBOX_ONLY_EXTPACKS=1 \ +- KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \ +- KBUILD_TARGET_ARCH=x86 BUILD_TARGET_ARCH=x86 \ +- VBOX_SVN_REV=$(VBOX_SVN_REV) +- +-# Automatically determine the extpack build subdir name. Used for figuring out +-# directory names inside the extension pack building VMs. +-VBOX_EXTPACKS_BUILD_SUBDIRNAME := $(lastword $(subst /, ,$(PATH_ROOT))) +- +-# When building in parallel on a Windows host, make sure we finish the host +-# bit before kicking off any UNIX guest or we'll run into file sharing issues. +-ifeq ($(KBUILD_TARGET),win) +-VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST = extpacks-build-win.x86 extpacks-build-win.amd64 +-else +-VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST = +-endif +- +-extpacks-build-win.amd64: +-ifeq ($(KBUILD_TARGET),win) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Windows/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.6 " echo $@ && cd e:/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-endif +- +-extpacks-build-win.x86: +-ifeq ($(KBUILD_TARGET),win) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Windows/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.16 " echo $@ && cd e:/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-endif +- +-ifeq ($(KBUILD_TARGET),solaris) +-extpacks-build-solaris.amd64: +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +- +-extpacks-build-solaris.x86: extpacks-build-solaris.amd64 +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) VBOX_WITH_COMBINED_SOLARIS_GUEST_PACKAGE=1 all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +- +-else +-# Serialize 32-bit and 64-bit ASSUMING the same VM builds both. +-extpacks-build-solaris.rsync-into-vm: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,solaris,*) . 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- +-extpacks-build-solaris.build-it: extpacks-build-solaris.rsync-into-vm +- $(call MSG_L1,Building Solaris/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.4 " echo $@/amd64 && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +- $(call MSG_L1,Building Solaris/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.4 " echo $@/x86 && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +- +-extpacks-build-solaris.rsync-out-of-vm: extpacks-build-solaris.build-it +- $(VBOX_KMK_TIME) rsync -a --delete 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/solaris.x86 out/ +- $(VBOX_KMK_TIME) rsync -a --delete 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/solaris.amd64 out/ +- +-.NOTPARALLEL: extpacks-build-solaris.rsync-out-of-vm extpacks-build-solaris.rsync-into-vm +-.PHONY: extpacks-build-solaris.rsync-out-of-vm extpacks-build-solaris.rsync-into-vm extpacks-build-solaris.build-it +- +-extpacks-build-solaris.amd64: extpacks-build-solaris.rsync-out-of-vm +-extpacks-build-solaris.x86: extpacks-build-solaris.rsync-out-of-vm +-endif +- +-extpacks-build-os2.x86: +-#ifeq ($(KBUILD_TARGET),os2) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.3 " cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) " +-#endif +- +-extpacks-build-linux.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.amd64) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Linux/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.12 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-endif +- +-extpacks-build-linux.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.x86) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Linux/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.11 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-endif +- +-extpacks-build-freebsd.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-#ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),freebsd.amd64) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(call MSG_L1,Building FreeBSD/amd64 extension packs) +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.17 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-#endif +- +-extpacks-build-freebsd.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-#ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),freebsd.x86) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(call MSG_L1,Building FreeBSD/x86 extension packs) +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.7 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-#endif +- +-extpacks-build-darwin.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.amd64) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Darwin/amd64 extension packs) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,darwin,amd64) . 192.168.27.15:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.15 " echo $@ && cd /Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +- $(VBOX_KMK_TIME) rsync -am -v --delete 192.168.27.15:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/darwin.amd64 out/ +-endif +- +-extpacks-build-darwin.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Darwin/x86 extension packs) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,darwin,x86) . 192.168.27.5:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.5 " echo $@ && cd /Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +- $(VBOX_KMK_TIME) rsync -am -v --delete 192.168.27.5:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/darwin.x86 out/ +-endif +- +- +-extpacks-packing: +- + $(KMK) VBOX_ONLY_EXTPACKS=1 \ +- VBOX_WITH_EXTPACK_OS_ARCHS="darwin.amd64 darwin.x86 linux.amd64 linux.x86 solaris.amd64 solaris.x86 win.amd64 win.x86" \ +- packing +-# +++ freebsd.amd64 freebsd.x86 os2.x86 ^^^ +- +-.PHONY: \ +- extpacks-build-win.x86 \ +- extpacks-build-win.amd64 \ +- extpacks-build-solaris.amd64 \ +- extpacks-build-solaris.x86 \ +- extpacks-build-os2.x86 \ +- extpacks-build-linux.amd64 \ +- extpacks-build-linux.x86 \ +- extpacks-build-freebsd.amd64 \ +- extpacks-build-freebsd.x86 \ +- extpacks-build-darwin.amd64 \ +- extpacks-build-darwin.x86 \ +- extpacks-packing +- +- + # + # Build the test suite, all of it. + # +--- VirtualBox-4.1.18.orig/src/VBox/Devices/build/VBoxDD.cpp 2012-06-20 10:15:51.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/build/VBoxDD.cpp 2012-07-24 16:18:03.964493454 -0300 +@@ -132,11 +132,6 @@ + if (RT_FAILURE(rc)) + return rc; + #endif +-#ifdef VBOX_WITH_EHCI_IMPL +- rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceEHCI); +- if (RT_FAILURE(rc)) +- return rc; +-#endif + #ifdef VBOX_ACPI + rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceACPI); + if (RT_FAILURE(rc)) +--- VirtualBox-4.1.18.orig/src/VBox/Devices/build/VBoxDD.h 2012-06-20 10:15:51.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/build/VBoxDD.h 2012-07-24 16:20:35.939205389 -0300 +@@ -62,7 +62,6 @@ + extern const PDMDEVREG g_DeviceICH6_HDA; + extern const PDMDEVREG g_DeviceAudioSniffer; + extern const PDMDEVREG g_DeviceOHCI; +-extern const PDMDEVREG g_DeviceEHCI; + extern const PDMDEVREG g_DeviceACPI; + extern const PDMDEVREG g_DeviceDMA; + extern const PDMDEVREG g_DeviceFloppyController; +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ExtPackManagerImpl.h 2012-06-20 10:17:33.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,245 +0,0 @@ +-/* $Id: ExtPackManagerImpl.h $ */ +-/** @file +- * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ____H_EXTPACKMANAGERIMPL +-#define ____H_EXTPACKMANAGERIMPL +- +-#include "VirtualBoxBase.h" +-#include <VBox/ExtPack/ExtPack.h> +-#include <iprt/fs.h> +- +-/** +- * An extension pack file. +- */ +-class ATL_NO_VTABLE ExtPackFile : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPackFile) +-{ +-public: +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPackFile, IExtPackFile) +- DECLARE_NOT_AGGREGATABLE(ExtPackFile) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPackFile) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPackFile) +- COM_INTERFACE_ENTRY(IExtPackBase) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPackFile) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initWithFile(const char *a_pszFile, const char *a_pszDigest, class ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPackBase interfaces +- * @{ */ +- STDMETHOD(COMGETTER(Name))(BSTR *a_pbstrName); +- STDMETHOD(COMGETTER(Description))(BSTR *a_pbstrDescription); +- STDMETHOD(COMGETTER(Version))(BSTR *a_pbstrVersion); +- STDMETHOD(COMGETTER(Revision))(ULONG *a_puRevision); +- STDMETHOD(COMGETTER(VRDEModule))(BSTR *a_pbstrVrdeModule); +- STDMETHOD(COMGETTER(PlugIns))(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)); +- STDMETHOD(COMGETTER(Usable))(BOOL *a_pfUsable); +- STDMETHOD(COMGETTER(WhyUnusable))(BSTR *a_pbstrWhy); +- STDMETHOD(COMGETTER(ShowLicense))(BOOL *a_pfShowIt); +- STDMETHOD(COMGETTER(License))(BSTR *a_pbstrHtmlLicense); +- STDMETHOD(QueryLicense)(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, +- IN_BSTR a_bstrFormat, BSTR *a_pbstrLicense); +- /** @} */ +- +- /** @name IExtPackFile interfaces +- * @{ */ +- STDMETHOD(COMGETTER(FilePath))(BSTR *a_pbstrPath); +- STDMETHOD(Install)(BOOL a_fReplace, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress); +- /** @} */ +- +-private: +- /** @name Misc init helpers +- * @{ */ +- HRESULT initFailed(const char *a_pszWhyFmt, ...); +- /** @} */ +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +- +- friend class ExtPackManager; +-}; +- +- +-/** +- * An installed extension pack. +- */ +-class ATL_NO_VTABLE ExtPack : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPack) +-{ +-public: +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPack, IExtPack) +- DECLARE_NOT_AGGREGATABLE(ExtPack) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPack) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPack) +- COM_INTERFACE_ENTRY(IExtPackBase) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPack) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPackBase interfaces +- * @{ */ +- STDMETHOD(COMGETTER(Name))(BSTR *a_pbstrName); +- STDMETHOD(COMGETTER(Description))(BSTR *a_pbstrDescription); +- STDMETHOD(COMGETTER(Version))(BSTR *a_pbstrVersion); +- STDMETHOD(COMGETTER(Revision))(ULONG *a_puRevision); +- STDMETHOD(COMGETTER(VRDEModule))(BSTR *a_pbstrVrdeModule); +- STDMETHOD(COMGETTER(PlugIns))(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)); +- STDMETHOD(COMGETTER(Usable))(BOOL *a_pfUsable); +- STDMETHOD(COMGETTER(WhyUnusable))(BSTR *a_pbstrWhy); +- STDMETHOD(COMGETTER(ShowLicense))(BOOL *a_pfShowIt); +- STDMETHOD(COMGETTER(License))(BSTR *a_pbstrHtmlLicense); +- STDMETHOD(QueryLicense)(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, +- IN_BSTR a_bstrFormat, BSTR *a_pbstrLicense); +- /** @} */ +- +- /** @name IExtPack interfaces +- * @{ */ +- STDMETHOD(QueryObject)(IN_BSTR a_bstrObjectId, IUnknown **a_ppUnknown); +- /** @} */ +- +- /** @name Internal interfaces used by ExtPackManager. +- * @{ */ +- bool callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo); +- HRESULT callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval); +- bool callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock); +- bool callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock); +- bool callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock); +- bool callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc); +- bool callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc); +- bool callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock); +- HRESULT checkVrde(void); +- HRESULT getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary); +- bool wantsToBeDefaultVrde(void) const; +- HRESULT refresh(bool *pfCanDelete); +- /** @} */ +- +-protected: +- /** @name Internal helper methods. +- * @{ */ +- void probeAndLoad(void); +- bool findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind, +- Utf8Str *a_ppStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const; +- static bool objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2); +- /** @} */ +- +- /** @name Extension Pack Helpers +- * @{ */ +- static DECLCALLBACK(int) hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt, +- VBOXEXTPACKMODKIND enmKind, char *pszFound, size_t cbFound, bool *pfNative); +- static DECLCALLBACK(int) hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath); +- static DECLCALLBACK(VBOXEXTPACKCTX) hlpGetContext(PCVBOXEXTPACKHLP pHlp); +- static DECLCALLBACK(int) hlpReservedN(PCVBOXEXTPACKHLP pHlp); +- /** @} */ +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +- +- friend class ExtPackManager; +-}; +- +- +-/** +- * Extension pack manager. +- */ +-class ATL_NO_VTABLE ExtPackManager : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPackManager) +-{ +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPackManager, IExtPackManager) +- DECLARE_NOT_AGGREGATABLE(ExtPackManager) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPackManager) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPackManager) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPackManager) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPack interfaces +- * @{ */ +- STDMETHOD(COMGETTER(InstalledExtPacks))(ComSafeArrayOut(IExtPack *, a_paExtPacks)); +- STDMETHOD(Find)(IN_BSTR a_bstrName, IExtPack **a_pExtPack); +- STDMETHOD(OpenExtPackFile)(IN_BSTR a_bstrTarball, IExtPackFile **a_ppExtPackFile); +- STDMETHOD(Uninstall)(IN_BSTR a_bstrName, BOOL a_fForcedRemoval, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress); +- STDMETHOD(Cleanup)(void); +- STDMETHOD(QueryAllPlugInsForFrontend)(IN_BSTR a_bstrFrontend, ComSafeArrayOut(BSTR, a_pabstrPlugInModules)); +- STDMETHOD(IsExtPackUsable(IN_BSTR a_bstrExtPack, BOOL *aUsable)); +- /** @} */ +- +- /** @name Internal interfaces used by other Main classes. +- * @{ */ +- static DECLCALLBACK(int) doInstallThreadProc(RTTHREAD hThread, void *pvJob); +- HRESULT doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo); +- static DECLCALLBACK(int) doUninstallThreadProc(RTTHREAD hThread, void *pvJob); +- HRESULT doUninstall(const Utf8Str *a_pstrName, bool a_fForcedRemoval, const Utf8Str *a_pstrDisplayInfo); +- void callAllVirtualBoxReadyHooks(void); +- void callAllConsoleReadyHooks(IConsole *a_pConsole); +- void callAllVmCreatedHooks(IMachine *a_pMachine); +- int callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM); +- int callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM); +- void callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM); +- HRESULT checkVrdeExtPack(Utf8Str const *a_pstrExtPack); +- int getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary); +- HRESULT getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack); +- bool isExtPackUsable(const char *a_pszExtPack); +- void dumpAllToReleaseLog(void); +- /** @} */ +- +-private: +- HRESULT runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...); +- ExtPack *findExtPack(const char *a_pszName); +- void removeExtPack(const char *a_pszName); +- HRESULT refreshExtPack(const char *a_pszName, bool a_fUnsuableIsError, ExtPack **a_ppExtPack); +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +-}; +- +-#endif +-/* vi: set tabstop=4 shiftwidth=4 expandtab: */ +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ExtPackUtil.h 2012-06-20 10:17:33.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,137 +0,0 @@ +-/* $Id: ExtPackUtil.h $ */ +-/** @file +- * VirtualBox Main - Extension Pack Utilities and definitions, VBoxC, VBoxSVC, ++. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ____H_EXTPACKUTIL +-#define ____H_EXTPACKUTIL +- +-#include <iprt/cpp/ministring.h> +-#include <iprt/fs.h> +-#include <iprt/vfs.h> +- +- +-/** @name VBOX_EXTPACK_DESCRIPTION_NAME +- * The name of the description file in an extension pack. */ +-#define VBOX_EXTPACK_DESCRIPTION_NAME "ExtPack.xml" +-/** @name VBOX_EXTPACK_DESCRIPTION_NAME +- * The name of the manifest file in an extension pack. */ +-#define VBOX_EXTPACK_MANIFEST_NAME "ExtPack.manifest" +-/** @name VBOX_EXTPACK_SIGNATURE_NAME +- * The name of the signature file in an extension pack. */ +-#define VBOX_EXTPACK_SIGNATURE_NAME "ExtPack.signature" +-/** @name VBOX_EXTPACK_LICENSE_NAME_PREFIX +- * The name prefix of a license file in an extension pack. There can be +- * several license files in a pack, the variations being on locale, language +- * and format (HTML, RTF, plain text). All extension packages shall include +- * a */ +-#define VBOX_EXTPACK_LICENSE_NAME_PREFIX "ExtPack-license" +-/** @name VBOX_EXTPACK_SUFFIX +- * The suffix of a extension pack tarball. */ +-#define VBOX_EXTPACK_SUFFIX ".vbox-extpack" +- +-/** The minimum length (strlen) of a extension pack name. */ +-#define VBOX_EXTPACK_NAME_MIN_LEN 3 +-/** The max length (strlen) of a extension pack name. */ +-#define VBOX_EXTPACK_NAME_MAX_LEN 64 +- +-/** The architecture-dependent application data subdirectory where the +- * extension packs are installed. Relative to RTPathAppPrivateArch. */ +-#define VBOX_EXTPACK_INSTALL_DIR "ExtensionPacks" +-/** The architecture-independent application data subdirectory where the +- * certificates are installed. Relative to RTPathAppPrivateNoArch. */ +-#define VBOX_EXTPACK_CERT_DIR "ExtPackCertificates" +- +-/** The maximum entry name length. +- * Play short and safe. */ +-#define VBOX_EXTPACK_MAX_MEMBER_NAME_LENGTH 128 +- +- +-/** +- * Plug-in descriptor. +- */ +-typedef struct VBOXEXTPACKPLUGINDESC +-{ +- /** The name. */ +- RTCString strName; +- /** The module name. */ +- RTCString strModule; +- /** The description. */ +- RTCString strDescription; +- /** The frontend or component which it plugs into. */ +- RTCString strFrontend; +-} VBOXEXTPACKPLUGINDESC; +-/** Pointer to a plug-in descriptor. */ +-typedef VBOXEXTPACKPLUGINDESC *PVBOXEXTPACKPLUGINDESC; +- +-/** +- * Extension pack descriptor +- * +- * This is the internal representation of the ExtPack.xml. +- */ +-typedef struct VBOXEXTPACKDESC +-{ +- /** The name. */ +- RTCString strName; +- /** The description. */ +- RTCString strDescription; +- /** The version string. */ +- RTCString strVersion; +- /** The edition string. */ +- RTCString strEdition; +- /** The internal revision number. */ +- uint32_t uRevision; +- /** The name of the main module. */ +- RTCString strMainModule; +- /** The name of the VRDE module, empty if none. */ +- RTCString strVrdeModule; +- /** The number of plug-in descriptors. */ +- uint32_t cPlugIns; +- /** Pointer to an array of plug-in descriptors. */ +- PVBOXEXTPACKPLUGINDESC paPlugIns; +- /** Whether to show the license prior to installation. */ +- bool fShowLicense; +-} VBOXEXTPACKDESC; +- +-/** Pointer to a extension pack descriptor. */ +-typedef VBOXEXTPACKDESC *PVBOXEXTPACKDESC; +-/** Pointer to a const extension pack descriptor. */ +-typedef VBOXEXTPACKDESC const *PCVBOXEXTPACKDESC; +- +- +-void VBoxExtPackInitDesc(PVBOXEXTPACKDESC a_pExtPackDesc); +-RTCString *VBoxExtPackLoadDesc(const char *a_pszDir, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo); +-RTCString *VBoxExtPackLoadDescFromVfsFile(RTVFSFILE hVfsFile, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo); +-RTCString *VBoxExtPackExtractNameFromTarballPath(const char *pszTarball); +-void VBoxExtPackFreeDesc(PVBOXEXTPACKDESC a_pExtPackDesc); +-bool VBoxExtPackIsValidName(const char *pszName); +-bool VBoxExtPackIsValidMangledName(const char *pszMangledName, size_t cchMax = RTSTR_MAX); +-RTCString *VBoxExtPackMangleName(const char *pszName); +-RTCString *VBoxExtPackUnmangleName(const char *pszMangledName, size_t cbMax); +-int VBoxExtPackCalcDir(char *pszExtPackDir, size_t cbExtPackDir, const char *pszParentDir, const char *pszName); +-bool VBoxExtPackIsValidVersionString(const char *pszVersion); +-bool VBoxExtPackIsValidEditionString(const char *pszEdition); +-bool VBoxExtPackIsValidModuleString(const char *pszModule); +- +-int VBoxExtPackValidateMember(const char *pszName, RTVFSOBJTYPE enmType, RTVFSOBJ hVfsObj, char *pszError, size_t cbError); +-int VBoxExtPackOpenTarFss(RTFILE hTarballFile, char *pszError, size_t cbError, PRTVFSFSSTREAM phTarFss, PRTMANIFEST phFileManifest); +-int VBoxExtPackValidateTarball(RTFILE hTarballFile, const char *pszExtPackName, +- const char *pszTarball, const char *pszTarballDigest, +- char *pszError, size_t cbError, +- PRTMANIFEST phValidManifest, PRTVFSFILE phXmlFile, RTCString *pStrDigest); +- +- +-#endif +- +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/ExtPackManagerImpl.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,3126 +0,0 @@ +-/* $Id: ExtPackManagerImpl.cpp $ */ +-/** @file +- * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +- +-/******************************************************************************* +-* Header Files * +-*******************************************************************************/ +-#include "ExtPackManagerImpl.h" +-#include "ExtPackUtil.h" +- +-#include <iprt/buildconfig.h> +-#include <iprt/ctype.h> +-#include <iprt/dir.h> +-#include <iprt/env.h> +-#include <iprt/file.h> +-#include <iprt/ldr.h> +-#include <iprt/manifest.h> +-#include <iprt/param.h> +-#include <iprt/path.h> +-#include <iprt/pipe.h> +-#include <iprt/process.h> +-#include <iprt/string.h> +- +-#include <VBox/com/array.h> +-#include <VBox/com/ErrorInfo.h> +-#include <VBox/err.h> +-#include <VBox/log.h> +-#include <VBox/sup.h> +-#include <VBox/version.h> +-#include "AutoCaller.h" +-#include "Global.h" +-#include "ProgressImpl.h" +-#include "SystemPropertiesImpl.h" +-#include "VirtualBoxImpl.h" +- +- +-/******************************************************************************* +-* Defined Constants And Macros * +-*******************************************************************************/ +-/** @name VBOX_EXTPACK_HELPER_NAME +- * The name of the utility application we employ to install and uninstall the +- * extension packs. This is a set-uid-to-root binary on unixy platforms, which +- * is why it has to be a separate application. +- */ +-#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) +-# define VBOX_EXTPACK_HELPER_NAME "VBoxExtPackHelperApp.exe" +-#else +-# define VBOX_EXTPACK_HELPER_NAME "VBoxExtPackHelperApp" +-#endif +- +- +-/******************************************************************************* +-* Structures and Typedefs * +-*******************************************************************************/ +-struct ExtPackBaseData +-{ +-public: +- /** The extension pack descriptor (loaded from the XML, mostly). */ +- VBOXEXTPACKDESC Desc; +- /** The file system object info of the XML file. +- * This is for detecting changes and save time in refresh(). */ +- RTFSOBJINFO ObjInfoDesc; +- /** Whether it's usable or not. */ +- bool fUsable; +- /** Why it is unusable. */ +- Utf8Str strWhyUnusable; +-}; +- +-/** +- * Private extension pack data. +- */ +-struct ExtPackFile::Data : public ExtPackBaseData +-{ +-public: +- /** The path to the tarball. */ +- Utf8Str strExtPackFile; +- /** The SHA-256 hash of the file (as string). */ +- Utf8Str strDigest; +- /** The file handle of the extension pack file. */ +- RTFILE hExtPackFile; +- /** Our manifest for the tarball. */ +- RTMANIFEST hOurManifest; +- /** Pointer to the extension pack manager. */ +- ComObjPtr<ExtPackManager> ptrExtPackMgr; +- /** Pointer to the VirtualBox object so we can create a progress object. */ +- VirtualBox *pVirtualBox; +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** +- * Private extension pack data. +- */ +-struct ExtPack::Data : public ExtPackBaseData +-{ +-public: +- /** Where the extension pack is located. */ +- Utf8Str strExtPackPath; +- /** The file system object info of the extension pack directory. +- * This is for detecting changes and save time in refresh(). */ +- RTFSOBJINFO ObjInfoExtPack; +- /** The full path to the main module. */ +- Utf8Str strMainModPath; +- /** The file system object info of the main module. +- * This is used to determin whether to bother try reload it. */ +- RTFSOBJINFO ObjInfoMainMod; +- /** The module handle of the main extension pack module. */ +- RTLDRMOD hMainMod; +- +- /** The helper callbacks for the extension pack. */ +- VBOXEXTPACKHLP Hlp; +- /** Pointer back to the extension pack object (for Hlp methods). */ +- ExtPack *pThis; +- /** The extension pack registration structure. */ +- PCVBOXEXTPACKREG pReg; +- /** The current context. */ +- VBOXEXTPACKCTX enmContext; +- /** Set if we've made the pfnVirtualBoxReady or pfnConsoleReady call. */ +- bool fMadeReadyCall; +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** List of extension packs. */ +-typedef std::list< ComObjPtr<ExtPack> > ExtPackList; +- +-/** +- * Private extension pack manager data. +- */ +-struct ExtPackManager::Data +-{ +- /** The directory where the extension packs are installed. */ +- Utf8Str strBaseDir; +- /** The directory where the certificates this installation recognizes are +- * stored. */ +- Utf8Str strCertificatDirPath; +- /** The list of installed extension packs. */ +- ExtPackList llInstalledExtPacks; +- /** Pointer to the VirtualBox object, our parent. */ +- VirtualBox *pVirtualBox; +- /** The current context. */ +- VBOXEXTPACKCTX enmContext; +-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_DARWIN) +- /** File handle for the VBoxVMM libary which we slurp because ExtPacks depend on it. */ +- RTLDRMOD hVBoxVMM; +-#endif +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** +- * Extension pack installation job. +- */ +-typedef struct EXTPACKINSTALLJOB +-{ +- /** Smart pointer to the extension pack file. */ +- ComPtr<ExtPackFile> ptrExtPackFile; +- /** The replace argument. */ +- bool fReplace; +- /** The display info argument. */ +- Utf8Str strDisplayInfo; +- /** Smart pointer to the extension manager. */ +- ComPtr<ExtPackManager> ptrExtPackMgr; +- /** Smart pointer to the progress object for this job. */ +- ComObjPtr<Progress> ptrProgress; +-} EXTPACKINSTALLJOB; +-/** Pointer to an extension pack installation job. */ +-typedef EXTPACKINSTALLJOB *PEXTPACKINSTALLJOB; +- +-/** +- * Extension pack uninstallation job. +- */ +-typedef struct EXTPACKUNINSTALLJOB +-{ +- /** Smart pointer to the extension manager. */ +- ComPtr<ExtPackManager> ptrExtPackMgr; +- /** The name of the extension pack. */ +- Utf8Str strName; +- /** The replace argument. */ +- bool fForcedRemoval; +- /** The display info argument. */ +- Utf8Str strDisplayInfo; +- /** Smart pointer to the progress object for this job. */ +- ComObjPtr<Progress> ptrProgress; +-} EXTPACKUNINSTALLJOB; +-/** Pointer to an extension pack uninstallation job. */ +-typedef EXTPACKUNINSTALLJOB *PEXTPACKUNINSTALLJOB; +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPackFile) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in initWithDir(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPackFile::FinalConstruct() +-{ +- m = NULL; +- return BaseFinalConstruct(); +-} +- +-/** +- * Initializes the extension pack by reading its file. +- * +- * @returns COM status code. +- * @param a_pszFile The path to the extension pack file. +- * @param a_pszDigest The SHA-256 digest of the file. Or an empty string. +- * @param a_pExtPackMgr Pointer to the extension pack manager. +- * @param a_pVirtualBox Pointer to the VirtualBox object. +- */ +-HRESULT ExtPackFile::initWithFile(const char *a_pszFile, const char *a_pszDigest, ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- /* +- * Allocate + initialize our private data. +- */ +- m = new ExtPackFile::Data; +- VBoxExtPackInitDesc(&m->Desc); +- RT_ZERO(m->ObjInfoDesc); +- m->fUsable = false; +- m->strWhyUnusable = tr("ExtPack::init failed"); +- m->strExtPackFile = a_pszFile; +- m->strDigest = a_pszDigest; +- m->hExtPackFile = NIL_RTFILE; +- m->hOurManifest = NIL_RTMANIFEST; +- m->ptrExtPackMgr = a_pExtPackMgr; +- m->pVirtualBox = a_pVirtualBox; +- +- RTCString *pstrTarName = VBoxExtPackExtractNameFromTarballPath(a_pszFile); +- if (pstrTarName) +- { +- m->Desc.strName = *pstrTarName; +- delete pstrTarName; +- pstrTarName = NULL; +- } +- +- autoInitSpan.setSucceeded(); +- +- /* +- * Try open the extension pack and check that it is a regular file. +- */ +- int vrc = RTFileOpen(&m->hExtPackFile, a_pszFile, +- RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN); +- if (RT_FAILURE(vrc)) +- { +- if (vrc == VERR_FILE_NOT_FOUND || vrc == VERR_PATH_NOT_FOUND) +- return initFailed(tr("'%s' file not found"), a_pszFile); +- return initFailed(tr("RTFileOpen('%s',,) failed with %Rrc"), a_pszFile, vrc); +- } +- +- RTFSOBJINFO ObjInfo; +- vrc = RTFileQueryInfo(m->hExtPackFile, &ObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_FAILURE(vrc)) +- return initFailed(tr("RTFileQueryInfo failed with %Rrc on '%s'"), vrc, a_pszFile); +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- return initFailed(tr("Not a regular file: %s"), a_pszFile); +- +- /* +- * Validate the tarball and extract the XML file. +- */ +- char szError[8192]; +- RTVFSFILE hXmlFile; +- vrc = VBoxExtPackValidateTarball(m->hExtPackFile, NULL /*pszExtPackName*/, a_pszFile, a_pszDigest, +- szError, sizeof(szError), &m->hOurManifest, &hXmlFile, &m->strDigest); +- if (RT_FAILURE(vrc)) +- return initFailed(tr("%s"), szError); +- +- /* +- * Parse the XML. +- */ +- RTCString strSavedName(m->Desc.strName); +- RTCString *pStrLoadErr = VBoxExtPackLoadDescFromVfsFile(hXmlFile, &m->Desc, &m->ObjInfoDesc); +- RTVfsFileRelease(hXmlFile); +- if (pStrLoadErr != NULL) +- { +- m->strWhyUnusable.printf(tr("Failed to the xml file: %s"), pStrLoadErr->c_str()); +- m->Desc.strName = strSavedName; +- delete pStrLoadErr; +- return S_OK; +- } +- +- /* +- * Match the tarball name with the name from the XML. +- */ +- /** @todo drop this restriction after the old install interface is +- * dropped. */ +- if (!strSavedName.equalsIgnoreCase(m->Desc.strName)) +- return initFailed(tr("Extension pack name mismatch between the downloaded file and the XML inside it (xml='%s' file='%s')"), +- m->Desc.strName.c_str(), strSavedName.c_str()); +- +- m->fUsable = true; +- m->strWhyUnusable.setNull(); +- return S_OK; +-} +- +-/** +- * Protected helper that formats the strWhyUnusable value. +- * +- * @returns S_OK +- * @param a_pszWhyFmt Why it failed, format string. +- * @param ... The format arguments. +- */ +-HRESULT ExtPackFile::initFailed(const char *a_pszWhyFmt, ...) +-{ +- va_list va; +- va_start(va, a_pszWhyFmt); +- m->strWhyUnusable.printfV(a_pszWhyFmt, va); +- va_end(va); +- return S_OK; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPackFile::FinalRelease() +-{ +- uninit(); +- BaseFinalRelease(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPackFile::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- VBoxExtPackFreeDesc(&m->Desc); +- RTFileClose(m->hExtPackFile); +- m->hExtPackFile = NIL_RTFILE; +- RTManifestRelease(m->hOurManifest); +- m->hOurManifest = NIL_RTMANIFEST; +- +- delete m; +- m = NULL; +- } +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Name)(BSTR *a_pbstrName) +-{ +- CheckComArgOutPointerValid(a_pbstrName); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strName); +- str.cloneTo(a_pbstrName); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Description)(BSTR *a_pbstrDescription) +-{ +- CheckComArgOutPointerValid(a_pbstrDescription); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strDescription); +- str.cloneTo(a_pbstrDescription); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Version)(BSTR *a_pbstrVersion) +-{ +- CheckComArgOutPointerValid(a_pbstrVersion); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* HACK ALERT: This is for easing backporting to 4.1. The edition stuff +- will be changed into a separate */ +- if (m->Desc.strEdition.isEmpty()) +- { +- Bstr str(m->Desc.strVersion); +- str.cloneTo(a_pbstrVersion); +- } +- else +- { +- RTCString strHack(m->Desc.strVersion); +- strHack.append('-'); +- strHack.append(m->Desc.strEdition); +- +- Bstr str(strHack); +- str.cloneTo(a_pbstrVersion); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Revision)(ULONG *a_puRevision) +-{ +- CheckComArgOutPointerValid(a_puRevision); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_puRevision = m->Desc.uRevision; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(VRDEModule)(BSTR *a_pbstrVrdeModule) +-{ +- CheckComArgOutPointerValid(a_pbstrVrdeModule); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strVrdeModule); +- str.cloneTo(a_pbstrVrdeModule); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(PlugIns)(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)) +-{ +- /** @todo implement plug-ins. */ +-#ifdef VBOX_WITH_XPCOM +- NOREF(a_paPlugIns); +- NOREF(a_paPlugInsSize); +-#endif +- ReturnComNotImplemented(); +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Usable)(BOOL *a_pfUsable) +-{ +- CheckComArgOutPointerValid(a_pfUsable); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfUsable = m->fUsable; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(WhyUnusable)(BSTR *a_pbstrWhy) +-{ +- CheckComArgOutPointerValid(a_pbstrWhy); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strWhyUnusable.cloneTo(a_pbstrWhy); +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(ShowLicense)(BOOL *a_pfShowIt) +-{ +- CheckComArgOutPointerValid(a_pfShowIt); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfShowIt = m->Desc.fShowLicense; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(License)(BSTR *a_pbstrHtmlLicense) +-{ +- Bstr bstrHtml("html"); +- return QueryLicense(Bstr::Empty.raw(), Bstr::Empty.raw(), bstrHtml.raw(), a_pbstrHtmlLicense); +-} +- +-/* Same as ExtPack::QueryLicense, should really explore the subject of base classes here... */ +-STDMETHODIMP ExtPackFile::QueryLicense(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, IN_BSTR a_bstrFormat, +- BSTR *a_pbstrLicense) +-{ +- /* +- * Validate input. +- */ +- CheckComArgOutPointerValid(a_pbstrLicense); +- CheckComArgNotNull(a_bstrPreferredLocale); +- CheckComArgNotNull(a_bstrPreferredLanguage); +- CheckComArgNotNull(a_bstrFormat); +- +- Utf8Str strPreferredLocale(a_bstrPreferredLocale); +- if (strPreferredLocale.length() != 2 && strPreferredLocale.length() != 0) +- return setError(E_FAIL, tr("The preferred locale is a two character string or empty.")); +- +- Utf8Str strPreferredLanguage(a_bstrPreferredLanguage); +- if (strPreferredLanguage.length() != 2 && strPreferredLanguage.length() != 0) +- return setError(E_FAIL, tr("The preferred lanuage is a two character string or empty.")); +- +- Utf8Str strFormat(a_bstrFormat); +- if ( !strFormat.equals("html") +- && !strFormat.equals("rtf") +- && !strFormat.equals("txt")) +- return setError(E_FAIL, tr("The license format can only have the values 'html', 'rtf' and 'txt'.")); +- +- /* +- * Combine the options to form a file name before locking down anything. +- */ +- char szName[sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX "-de_DE.html") + 2]; +- if (strPreferredLocale.isNotEmpty() && strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s_%s.%s", +- strPreferredLocale.c_str(), strPreferredLanguage.c_str(), strFormat.c_str()); +- else if (strPreferredLocale.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else if (strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-_%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX ".%s", strFormat.c_str()); +- +- /* +- * Lock the extension pack. We need a write lock here as there must not be +- * concurrent accesses to the tar file handle. +- */ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Do not permit this query on a pack that isn't considered usable (could +- * be marked so because of bad license files). +- */ +- if (!m->fUsable) +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- else +- { +- /* +- * Look it up in the manifest before scanning the tarball for it +- */ +- if (RTManifestEntryExists(m->hOurManifest, szName)) +- { +- RTVFSFSSTREAM hTarFss; +- char szError[8192]; +- int vrc = VBoxExtPackOpenTarFss(m->hExtPackFile, szError, sizeof(szError), &hTarFss, NULL); +- if (RT_SUCCESS(vrc)) +- { +- for (;;) +- { +- /* Get the first/next. */ +- char *pszName; +- RTVFSOBJ hVfsObj; +- RTVFSOBJTYPE enmType; +- vrc = RTVfsFsStrmNext(hTarFss, &pszName, &enmType, &hVfsObj); +- if (RT_FAILURE(vrc)) +- { +- if (vrc != VERR_EOF) +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTVfsFsStrmNext failed: %Rrc"), vrc); +- else +- hrc = setError(E_UNEXPECTED, tr("'%s' was found in the manifest but not in the tarball"), szName); +- break; +- } +- +- /* Is this it? */ +- const char *pszAdjName = pszName[0] == '.' && pszName[1] == '/' ? &pszName[2] : pszName; +- if ( !strcmp(pszAdjName, szName) +- && ( enmType == RTVFSOBJTYPE_IO_STREAM +- || enmType == RTVFSOBJTYPE_FILE)) +- { +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(hVfsObj); +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- +- /* Load the file into memory. */ +- RTFSOBJINFO ObjInfo; +- vrc = RTVfsIoStrmQueryInfo(hVfsIos, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(vrc)) +- { +- size_t cbFile = (size_t)ObjInfo.cbObject; +- void *pvFile = RTMemAllocZ(cbFile + 1); +- if (pvFile) +- { +- vrc = RTVfsIoStrmRead(hVfsIos, pvFile, cbFile, true /*fBlocking*/, NULL); +- if (RT_SUCCESS(vrc)) +- { +- /* try translate it into a string we can return. */ +- Bstr bstrLicense((const char *)pvFile, cbFile); +- if (bstrLicense.isNotEmpty()) +- { +- bstrLicense.detachTo(a_pbstrLicense); +- hrc = S_OK; +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, +- tr("The license file '%s' is empty or contains invalid UTF-8 encoding"), +- szName); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("Failed to read '%s': %Rrc"), szName, vrc); +- RTMemFree(pvFile); +- } +- else +- hrc = setError(E_OUTOFMEMORY, tr("Failed to allocate %zu bytes for '%s'"), cbFile, szName); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTVfsIoStrmQueryInfo on '%s': %Rrc"), szName, vrc); +- RTVfsIoStrmRelease(hVfsIos); +- break; +- } +- +- /* Release current. */ +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- } +- RTVfsFsStrmRelease(hTarFss); +- } +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("%s"), szError); +- } +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("The license file '%s' was not found in '%s'"), +- szName, m->strExtPackFile.c_str()); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(FilePath)(BSTR *a_pbstrPath) +-{ +- CheckComArgOutPointerValid(a_pbstrPath); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strExtPackFile.cloneTo(a_pbstrPath); +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::Install(BOOL a_fReplace, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress) +-{ +- if (a_ppProgress) +- *a_ppProgress = NULL; +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- if (m->fUsable) +- { +- PEXTPACKINSTALLJOB pJob = NULL; +- try +- { +- pJob = new EXTPACKINSTALLJOB; +- pJob->ptrExtPackFile = this; +- pJob->fReplace = a_fReplace != FALSE; +- pJob->strDisplayInfo = a_bstrDisplayInfo; +- pJob->ptrExtPackMgr = m->ptrExtPackMgr; +- hrc = pJob->ptrProgress.createObject(); +- if (SUCCEEDED(hrc)) +- { +- Bstr bstrDescription = tr("Installing extension pack"); +- hrc = pJob->ptrProgress->init( +-#ifndef VBOX_COM_INPROC +- m->pVirtualBox, +-#endif +- static_cast<IExtPackFile *>(this), +- bstrDescription.raw(), +- FALSE /*aCancelable*/, +- NULL /*aId*/); +- } +- if (SUCCEEDED(hrc)) +- { +- ComPtr<Progress> ptrProgress = pJob->ptrProgress; +- int vrc = RTThreadCreate(NULL /*phThread*/, ExtPackManager::doInstallThreadProc, pJob, 0, +- RTTHREADTYPE_DEFAULT, 0 /*fFlags*/, "ExtPackInst"); +- if (RT_SUCCESS(vrc)) +- { +- pJob = NULL; /* the thread deletes it */ +- ptrProgress.queryInterfaceTo(a_ppProgress); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTThreadCreate failed with %Rrc"), vrc); +- } +- } +- catch (std::bad_alloc) +- { +- hrc = E_OUTOFMEMORY; +- } +- if (pJob) +- delete pJob; +- } +- else +- hrc = setError(E_FAIL, "%s", m->strWhyUnusable.c_str()); +- } +- return hrc; +-} +- +- +- +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPack) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in initWithDir(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPack::FinalConstruct() +-{ +- m = NULL; +- return S_OK; +-} +- +-/** +- * Initializes the extension pack by reading its file. +- * +- * @returns COM status code. +- * @param a_enmContext The context we're in. +- * @param a_pszName The name of the extension pack. This is also the +- * name of the subdirector under @a a_pszParentDir +- * where the extension pack is installed. +- * @param a_pszDir The extension pack directory name. +- */ +-HRESULT ExtPack::initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- static const VBOXEXTPACKHLP s_HlpTmpl = +- { +- /* u32Version = */ VBOXEXTPACKHLP_VERSION, +- /* uVBoxFullVersion = */ VBOX_FULL_VERSION, +- /* uVBoxVersionRevision = */ 0, +- /* u32Padding = */ 0, +- /* pszVBoxVersion = */ "", +- /* pfnFindModule = */ ExtPack::hlpFindModule, +- /* pfnGetFilePath = */ ExtPack::hlpGetFilePath, +- /* pfnGetContext = */ ExtPack::hlpGetContext, +- /* pfnReserved1 = */ ExtPack::hlpReservedN, +- /* pfnReserved2 = */ ExtPack::hlpReservedN, +- /* pfnReserved3 = */ ExtPack::hlpReservedN, +- /* pfnReserved4 = */ ExtPack::hlpReservedN, +- /* pfnReserved5 = */ ExtPack::hlpReservedN, +- /* pfnReserved6 = */ ExtPack::hlpReservedN, +- /* pfnReserved7 = */ ExtPack::hlpReservedN, +- /* pfnReserved8 = */ ExtPack::hlpReservedN, +- /* pfnReserved9 = */ ExtPack::hlpReservedN, +- /* u32EndMarker = */ VBOXEXTPACKHLP_VERSION +- }; +- +- /* +- * Allocate + initialize our private data. +- */ +- m = new Data; +- VBoxExtPackInitDesc(&m->Desc); +- m->Desc.strName = a_pszName; +- RT_ZERO(m->ObjInfoDesc); +- m->fUsable = false; +- m->strWhyUnusable = tr("ExtPack::init failed"); +- m->strExtPackPath = a_pszDir; +- RT_ZERO(m->ObjInfoExtPack); +- m->strMainModPath.setNull(); +- RT_ZERO(m->ObjInfoMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->Hlp = s_HlpTmpl; +- m->Hlp.pszVBoxVersion = RTBldCfgVersion(); +- m->Hlp.uVBoxInternalRevision = RTBldCfgRevision(); +- m->pThis = this; +- m->pReg = NULL; +- m->enmContext = a_enmContext; +- m->fMadeReadyCall = false; +- +- /* +- * Probe the extension pack (this code is shared with refresh()). +- */ +- probeAndLoad(); +- +- autoInitSpan.setSucceeded(); +- return S_OK; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPack::FinalRelease() +-{ +- uninit(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPack::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- if (m->hMainMod != NIL_RTLDRMOD) +- { +- AssertPtr(m->pReg); +- if (m->pReg->pfnUnload != NULL) +- m->pReg->pfnUnload(m->pReg); +- +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->pReg = NULL; +- } +- +- VBoxExtPackFreeDesc(&m->Desc); +- +- delete m; +- m = NULL; +- } +-} +- +- +-/** +- * Calls the installed hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pLock The write lock held by the caller. +- * @param pErrInfo Where to return error information. +- */ +-bool ExtPack::callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo) +-{ +- if ( m != NULL +- && m->hMainMod != NIL_RTLDRMOD) +- { +- if (m->pReg->pfnInstalled) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- pErrInfo->rc = m->pReg->pfnInstalled(m->pReg, a_pVirtualBox, pErrInfo); +- a_pLock->acquire(); +- return true; +- } +- } +- pErrInfo->rc = VINF_SUCCESS; +- return false; +-} +- +-/** +- * Calls the uninstall hook and closes the module. +- * +- * @returns S_OK or COM error status with error information. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_fForcedRemoval When set, we'll ignore complaints from the +- * uninstall hook. +- * @remarks The caller holds the manager's write lock, not released. +- */ +-HRESULT ExtPack::callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval) +-{ +- HRESULT hrc = S_OK; +- +- if ( m != NULL +- && m->hMainMod != NIL_RTLDRMOD) +- { +- if (m->pReg->pfnUninstall && !a_fForcedRemoval) +- { +- int vrc = m->pReg->pfnUninstall(m->pReg, a_pVirtualBox); +- if (RT_FAILURE(vrc)) +- { +- LogRel(("ExtPack pfnUninstall returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- if (!a_fForcedRemoval) +- hrc = setError(E_FAIL, tr("pfnUninstall returned %Rrc"), vrc); +- } +- } +- if (SUCCEEDED(hrc)) +- { +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->pReg = NULL; +- } +- } +- +- return hrc; +-} +- +-/** +- * Calls the pfnVirtualBoxReady hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable +- && !m->fMadeReadyCall) +- { +- m->fMadeReadyCall = true; +- if (m->pReg->pfnVirtualBoxReady) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVirtualBoxReady(m->pReg, a_pVirtualBox); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnConsoleReady hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The Console interface. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable +- && !m->fMadeReadyCall) +- { +- m->fMadeReadyCall = true; +- if (m->pReg->pfnConsoleReady) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnConsoleReady(m->pReg, a_pConsole); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMCreate hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pMachine The machine interface of the new VM. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMCreated) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVMCreated(m->pReg, a_pVirtualBox, a_pMachine); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMConfigureVMM hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- * @param a_pvrc Where to return the status code of the +- * callback. This is always set. LogRel is +- * called on if a failure status is returned. +- */ +-bool ExtPack::callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc) +-{ +- *a_pvrc = VINF_SUCCESS; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMConfigureVMM) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- int vrc = m->pReg->pfnVMConfigureVMM(m->pReg, a_pConsole, a_pVM); +- *a_pvrc = vrc; +- a_pLock->acquire(); +- if (RT_FAILURE(vrc)) +- LogRel(("ExtPack pfnVMConfigureVMM returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMPowerOn hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- * @param a_pvrc Where to return the status code of the +- * callback. This is always set. LogRel is +- * called on if a failure status is returned. +- */ +-bool ExtPack::callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc) +-{ +- *a_pvrc = VINF_SUCCESS; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMPowerOn) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- int vrc = m->pReg->pfnVMPowerOn(m->pReg, a_pConsole, a_pVM); +- *a_pvrc = vrc; +- a_pLock->acquire(); +- if (RT_FAILURE(vrc)) +- LogRel(("ExtPack pfnVMPowerOn returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMPowerOff hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMPowerOff) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVMPowerOff(m->pReg, a_pConsole, a_pVM); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Check if the extension pack is usable and has an VRDE module. +- * +- * @returns S_OK or COM error status with error information. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-HRESULT ExtPack::checkVrde(void) +-{ +- HRESULT hrc; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->Desc.strVrdeModule.isNotEmpty()) +- hrc = S_OK; +- else +- hrc = setError(E_FAIL, tr("The extension pack '%s' does not include a VRDE module"), m->Desc.strName.c_str()); +- } +- else +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- return hrc; +-} +- +-/** +- * Same as checkVrde(), except that it also resolves the path to the module. +- * +- * @returns S_OK or COM error status with error information. +- * @param a_pstrVrdeLibrary Where to return the path on success. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-HRESULT ExtPack::getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary) +-{ +- HRESULT hrc = checkVrde(); +- if (SUCCEEDED(hrc)) +- { +- if (findModule(m->Desc.strVrdeModule.c_str(), NULL, VBOXEXTPACKMODKIND_R3, +- a_pstrVrdeLibrary, NULL /*a_pfNative*/, NULL /*a_pObjInfo*/)) +- hrc = S_OK; +- else +- hrc = setError(E_FAIL, tr("Failed to locate the VRDE module '%s' in extension pack '%s'"), +- m->Desc.strVrdeModule.c_str(), m->Desc.strName.c_str()); +- } +- return hrc; +-} +- +-/** +- * Check if this extension pack wishes to be the default VRDE provider. +- * +- * @returns @c true if it wants to and it is in a usable state, otherwise +- * @c false. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-bool ExtPack::wantsToBeDefaultVrde(void) const +-{ +- return m->fUsable +- && m->Desc.strVrdeModule.isNotEmpty(); +-} +- +-/** +- * Refreshes the extension pack state. +- * +- * This is called by the manager so that the on disk changes are picked up. +- * +- * @returns S_OK or COM error status with error information. +- * +- * @param a_pfCanDelete Optional can-delete-this-object output indicator. +- * +- * @remarks Caller holds the extension manager lock for writing. +- * @remarks Only called in VBoxSVC. +- */ +-HRESULT ExtPack::refresh(bool *a_pfCanDelete) +-{ +- if (a_pfCanDelete) +- *a_pfCanDelete = false; +- +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); /* for the COMGETTERs */ +- +- /* +- * Has the module been deleted? +- */ +- RTFSOBJINFO ObjInfoExtPack; +- int vrc = RTPathQueryInfoEx(m->strExtPackPath.c_str(), &ObjInfoExtPack, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if ( RT_FAILURE(vrc) +- || !RTFS_IS_DIRECTORY(ObjInfoExtPack.Attr.fMode)) +- { +- if (a_pfCanDelete) +- *a_pfCanDelete = true; +- return S_OK; +- } +- +- /* +- * We've got a directory, so try query file system object info for the +- * files we are interested in as well. +- */ +- RTFSOBJINFO ObjInfoDesc; +- char szDescFilePath[RTPATH_MAX]; +- vrc = RTPathJoin(szDescFilePath, sizeof(szDescFilePath), m->strExtPackPath.c_str(), VBOX_EXTPACK_DESCRIPTION_NAME); +- if (RT_SUCCESS(vrc)) +- vrc = RTPathQueryInfoEx(szDescFilePath, &ObjInfoDesc, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- RT_ZERO(ObjInfoDesc); +- +- RTFSOBJINFO ObjInfoMainMod; +- if (m->strMainModPath.isNotEmpty()) +- vrc = RTPathQueryInfoEx(m->strMainModPath.c_str(), &ObjInfoMainMod, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (m->strMainModPath.isEmpty() || RT_FAILURE(vrc)) +- RT_ZERO(ObjInfoMainMod); +- +- /* +- * If we have a usable module already, just verify that things haven't +- * changed since we loaded it. +- */ +- if (m->fUsable) +- { +- if (m->hMainMod == NIL_RTLDRMOD) +- probeAndLoad(); +- else if ( !objinfoIsEqual(&ObjInfoDesc, &m->ObjInfoDesc) +- || !objinfoIsEqual(&ObjInfoMainMod, &m->ObjInfoMainMod) +- || !objinfoIsEqual(&ObjInfoExtPack, &m->ObjInfoExtPack) ) +- { +- /** @todo not important, so it can wait. */ +- } +- } +- /* +- * Ok, it is currently not usable. If anything has changed since last time +- * reprobe the extension pack. +- */ +- else if ( !objinfoIsEqual(&ObjInfoDesc, &m->ObjInfoDesc) +- || !objinfoIsEqual(&ObjInfoMainMod, &m->ObjInfoMainMod) +- || !objinfoIsEqual(&ObjInfoExtPack, &m->ObjInfoExtPack) ) +- probeAndLoad(); +- +- return S_OK; +-} +- +-/** +- * Probes the extension pack, loading the main dll and calling its registration +- * entry point. +- * +- * This updates the state accordingly, the strWhyUnusable and fUnusable members +- * being the most important ones. +- */ +-void ExtPack::probeAndLoad(void) +-{ +- m->fUsable = false; +- m->fMadeReadyCall = false; +- +- /* +- * Query the file system info for the extension pack directory. This and +- * all other file system info we save is for the benefit of refresh(). +- */ +- int vrc = RTPathQueryInfoEx(m->strExtPackPath.c_str(), &m->ObjInfoExtPack, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("RTPathQueryInfoEx on '%s' failed: %Rrc"), m->strExtPackPath.c_str(), vrc); +- return; +- } +- if (!RTFS_IS_DIRECTORY(m->ObjInfoExtPack.Attr.fMode)) +- { +- if (RTFS_IS_SYMLINK(m->ObjInfoExtPack.Attr.fMode)) +- m->strWhyUnusable.printf(tr("'%s' is a symbolic link, this is not allowed"), m->strExtPackPath.c_str(), vrc); +- else if (RTFS_IS_FILE(m->ObjInfoExtPack.Attr.fMode)) +- m->strWhyUnusable.printf(tr("'%s' is a symbolic file, not a directory"), m->strExtPackPath.c_str(), vrc); +- else +- m->strWhyUnusable.printf(tr("'%s' is not a directory (fMode=%#x)"), m->strExtPackPath.c_str(), m->ObjInfoExtPack.Attr.fMode); +- return; +- } +- +- RTERRINFOSTATIC ErrInfo; +- RTErrInfoInitStatic(&ErrInfo); +- vrc = SUPR3HardenedVerifyDir(m->strExtPackPath.c_str(), true /*fRecursive*/, true /*fCheckFiles*/, &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("%s (rc=%Rrc)"), ErrInfo.Core.pszMsg, vrc); +- return; +- } +- +- /* +- * Read the description file. +- */ +- RTCString strSavedName(m->Desc.strName); +- RTCString *pStrLoadErr = VBoxExtPackLoadDesc(m->strExtPackPath.c_str(), &m->Desc, &m->ObjInfoDesc); +- if (pStrLoadErr != NULL) +- { +- m->strWhyUnusable.printf(tr("Failed to load '%s/%s': %s"), +- m->strExtPackPath.c_str(), VBOX_EXTPACK_DESCRIPTION_NAME, pStrLoadErr->c_str()); +- m->Desc.strName = strSavedName; +- delete pStrLoadErr; +- return; +- } +- +- /* +- * Make sure the XML name and directory matches. +- */ +- if (!m->Desc.strName.equalsIgnoreCase(strSavedName)) +- { +- m->strWhyUnusable.printf(tr("The description name ('%s') and directory name ('%s') does not match"), +- m->Desc.strName.c_str(), strSavedName.c_str()); +- m->Desc.strName = strSavedName; +- return; +- } +- +- /* +- * Load the main DLL and call the predefined entry point. +- */ +- bool fIsNative; +- if (!findModule(m->Desc.strMainModule.c_str(), NULL /* default extension */, VBOXEXTPACKMODKIND_R3, +- &m->strMainModPath, &fIsNative, &m->ObjInfoMainMod)) +- { +- m->strWhyUnusable.printf(tr("Failed to locate the main module ('%s')"), m->Desc.strMainModule.c_str()); +- return; +- } +- +- vrc = SUPR3HardenedVerifyPlugIn(m->strMainModPath.c_str(), &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("%s"), ErrInfo.Core.pszMsg); +- return; +- } +- +- if (fIsNative) +- { +- vrc = SUPR3HardenedLdrLoadPlugIn(m->strMainModPath.c_str(), &m->hMainMod, &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->hMainMod = NIL_RTLDRMOD; +- m->strWhyUnusable.printf(tr("Failed to load the main module ('%s'): %Rrc - %s"), +- m->strMainModPath.c_str(), vrc, ErrInfo.Core.pszMsg); +- return; +- } +- } +- else +- { +- m->strWhyUnusable.printf(tr("Only native main modules are currently supported")); +- return; +- } +- +- /* +- * Resolve the predefined entry point. +- */ +- PFNVBOXEXTPACKREGISTER pfnRegistration; +- vrc = RTLdrGetSymbol(m->hMainMod, VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, (void **)&pfnRegistration); +- if (RT_SUCCESS(vrc)) +- { +- RTErrInfoClear(&ErrInfo.Core); +- vrc = pfnRegistration(&m->Hlp, &m->pReg, &ErrInfo.Core); +- if ( RT_SUCCESS(vrc) +- && !RTErrInfoIsSet(&ErrInfo.Core) +- && VALID_PTR(m->pReg)) +- { +- if ( VBOXEXTPACK_IS_MAJOR_VER_EQUAL(m->pReg->u32Version, VBOXEXTPACKREG_VERSION) +- && m->pReg->u32EndMarker == m->pReg->u32Version) +- { +- if ( (!m->pReg->pfnInstalled || RT_VALID_PTR(m->pReg->pfnInstalled)) +- && (!m->pReg->pfnUninstall || RT_VALID_PTR(m->pReg->pfnUninstall)) +- && (!m->pReg->pfnVirtualBoxReady || RT_VALID_PTR(m->pReg->pfnVirtualBoxReady)) +- && (!m->pReg->pfnConsoleReady || RT_VALID_PTR(m->pReg->pfnConsoleReady)) +- && (!m->pReg->pfnUnload || RT_VALID_PTR(m->pReg->pfnUnload)) +- && (!m->pReg->pfnVMCreated || RT_VALID_PTR(m->pReg->pfnVMCreated)) +- && (!m->pReg->pfnVMConfigureVMM || RT_VALID_PTR(m->pReg->pfnVMConfigureVMM)) +- && (!m->pReg->pfnVMPowerOn || RT_VALID_PTR(m->pReg->pfnVMPowerOn)) +- && (!m->pReg->pfnVMPowerOff || RT_VALID_PTR(m->pReg->pfnVMPowerOff)) +- && (!m->pReg->pfnQueryObject || RT_VALID_PTR(m->pReg->pfnQueryObject)) +- ) +- { +- /* +- * We're good! +- */ +- m->fUsable = true; +- m->strWhyUnusable.setNull(); +- return; +- } +- +- m->strWhyUnusable = tr("The registration structure contains on or more invalid function pointers"); +- } +- else +- m->strWhyUnusable.printf(tr("Unsupported registration structure version %u.%u"), +- RT_HIWORD(m->pReg->u32Version), RT_LOWORD(m->pReg->u32Version)); +- } +- else +- m->strWhyUnusable.printf(tr("%s returned %Rrc, pReg=%p ErrInfo='%s'"), +- VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, vrc, m->pReg, ErrInfo.Core.pszMsg); +- m->pReg = NULL; +- } +- else +- m->strWhyUnusable.printf(tr("Failed to resolve exported symbol '%s' in the main module: %Rrc"), +- VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, vrc); +- +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +-} +- +-/** +- * Finds a module. +- * +- * @returns true if found, false if not. +- * @param a_pszName The module base name (no extension). +- * @param a_pszExt The extension. If NULL we use default +- * extensions. +- * @param a_enmKind The kind of module to locate. +- * @param a_pStrFound Where to return the path to the module we've +- * found. +- * @param a_pfNative Where to return whether this is a native module +- * or an agnostic one. Optional. +- * @param a_pObjInfo Where to return the file system object info for +- * the module. Optional. +- */ +-bool ExtPack::findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind, +- Utf8Str *a_pStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const +-{ +- /* +- * Try the native path first. +- */ +- char szPath[RTPATH_MAX]; +- int vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), RTBldCfgTargetDotArch()); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- const char *pszDefExt; +- switch (a_enmKind) +- { +- case VBOXEXTPACKMODKIND_RC: pszDefExt = ".rc"; break; +- case VBOXEXTPACKMODKIND_R0: pszDefExt = ".r0"; break; +- case VBOXEXTPACKMODKIND_R3: pszDefExt = RTLdrGetSuff(); break; +- default: +- AssertFailedReturn(false); +- } +- vrc = RTStrCat(szPath, sizeof(szPath), pszDefExt); +- AssertLogRelRCReturn(vrc, false); +- } +- +- RTFSOBJINFO ObjInfo; +- if (!a_pObjInfo) +- a_pObjInfo = &ObjInfo; +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = true; +- *a_pStrFound = szPath; +- return true; +- } +- +- /* +- * Try the platform agnostic modules. +- */ +- /* gcc.x86/module.rel */ +- char szSubDir[32]; +- RTStrPrintf(szSubDir, sizeof(szSubDir), "%s.%s", RTBldCfgCompiler(), RTBldCfgTargetArch()); +- vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), szSubDir); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- vrc = RTStrCat(szPath, sizeof(szPath), ".rel"); +- AssertLogRelRCReturn(vrc, false); +- } +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = false; +- *a_pStrFound = szPath; +- return true; +- } +- +- /* x86/module.rel */ +- vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), RTBldCfgTargetArch()); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- vrc = RTStrCat(szPath, sizeof(szPath), ".rel"); +- AssertLogRelRCReturn(vrc, false); +- } +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = false; +- *a_pStrFound = szPath; +- return true; +- } +- +- return false; +-} +- +-/** +- * Compares two file system object info structures. +- * +- * @returns true if equal, false if not. +- * @param pObjInfo1 The first. +- * @param pObjInfo2 The second. +- * @todo IPRT should do this, really. +- */ +-/* static */ bool ExtPack::objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2) +-{ +- if (!RTTimeSpecIsEqual(&pObjInfo1->ModificationTime, &pObjInfo2->ModificationTime)) +- return false; +- if (!RTTimeSpecIsEqual(&pObjInfo1->ChangeTime, &pObjInfo2->ChangeTime)) +- return false; +- if (!RTTimeSpecIsEqual(&pObjInfo1->BirthTime, &pObjInfo2->BirthTime)) +- return false; +- if (pObjInfo1->cbObject != pObjInfo2->cbObject) +- return false; +- if (pObjInfo1->Attr.fMode != pObjInfo2->Attr.fMode) +- return false; +- if (pObjInfo1->Attr.enmAdditional == pObjInfo2->Attr.enmAdditional) +- { +- switch (pObjInfo1->Attr.enmAdditional) +- { +- case RTFSOBJATTRADD_UNIX: +- if (pObjInfo1->Attr.u.Unix.uid != pObjInfo2->Attr.u.Unix.uid) +- return false; +- if (pObjInfo1->Attr.u.Unix.gid != pObjInfo2->Attr.u.Unix.gid) +- return false; +- if (pObjInfo1->Attr.u.Unix.INodeIdDevice != pObjInfo2->Attr.u.Unix.INodeIdDevice) +- return false; +- if (pObjInfo1->Attr.u.Unix.INodeId != pObjInfo2->Attr.u.Unix.INodeId) +- return false; +- if (pObjInfo1->Attr.u.Unix.GenerationId != pObjInfo2->Attr.u.Unix.GenerationId) +- return false; +- break; +- default: +- break; +- } +- } +- return true; +-} +- +- +-/** +- * @interface_method_impl{VBOXEXTPACKHLP,pfnFindModule} +- */ +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt, VBOXEXTPACKMODKIND enmKind, +- char *pszFound, size_t cbFound, bool *pfNative) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pszName, VERR_INVALID_POINTER); +- AssertPtrNullReturn(pszExt, VERR_INVALID_POINTER); +- AssertPtrReturn(pszFound, VERR_INVALID_POINTER); +- AssertPtrNullReturn(pfNative, VERR_INVALID_POINTER); +- AssertReturn(enmKind > VBOXEXTPACKMODKIND_INVALID && enmKind < VBOXEXTPACKMODKIND_END, VERR_INVALID_PARAMETER); +- +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- /* +- * This is just a wrapper around findModule. +- */ +- Utf8Str strFound; +- if (pThis->findModule(pszName, pszExt, enmKind, &strFound, pfNative, NULL)) +- return RTStrCopy(pszFound, cbFound, strFound.c_str()); +- return VERR_FILE_NOT_FOUND; +-} +- +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pszFilename, VERR_INVALID_POINTER); +- AssertPtrReturn(pszPath, VERR_INVALID_POINTER); +- AssertReturn(cbPath > 0, VERR_BUFFER_OVERFLOW); +- +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- /* +- * This is a simple RTPathJoin, no checking if things exists or anything. +- */ +- int vrc = RTPathJoin(pszPath, cbPath, pThis->m->strExtPackPath.c_str(), pszFilename); +- if (RT_FAILURE(vrc)) +- RT_BZERO(pszPath, cbPath); +- return vrc; +-} +- +-/*static*/ DECLCALLBACK(VBOXEXTPACKCTX) +-ExtPack::hlpGetContext(PCVBOXEXTPACKHLP pHlp) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pHlp, VBOXEXTPACKCTX_INVALID); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VBOXEXTPACKCTX_INVALID); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VBOXEXTPACKCTX_INVALID); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VBOXEXTPACKCTX_INVALID); +- +- return pThis->m->enmContext; +-} +- +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpReservedN(PCVBOXEXTPACKHLP pHlp) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- return VERR_NOT_IMPLEMENTED; +-} +- +- +- +- +- +-STDMETHODIMP ExtPack::COMGETTER(Name)(BSTR *a_pbstrName) +-{ +- CheckComArgOutPointerValid(a_pbstrName); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strName); +- str.cloneTo(a_pbstrName); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Description)(BSTR *a_pbstrDescription) +-{ +- CheckComArgOutPointerValid(a_pbstrDescription); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strDescription); +- str.cloneTo(a_pbstrDescription); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Version)(BSTR *a_pbstrVersion) +-{ +- CheckComArgOutPointerValid(a_pbstrVersion); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* HACK ALERT: This is for easing backporting to 4.1. The edition stuff +- will be changed into a separate */ +- if (m->Desc.strEdition.isEmpty()) +- { +- Bstr str(m->Desc.strVersion); +- str.cloneTo(a_pbstrVersion); +- } +- else +- { +- RTCString strHack(m->Desc.strVersion); +- strHack.append('-'); +- strHack.append(m->Desc.strEdition); +- +- Bstr str(strHack); +- str.cloneTo(a_pbstrVersion); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Revision)(ULONG *a_puRevision) +-{ +- CheckComArgOutPointerValid(a_puRevision); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_puRevision = m->Desc.uRevision; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(VRDEModule)(BSTR *a_pbstrVrdeModule) +-{ +- CheckComArgOutPointerValid(a_pbstrVrdeModule); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strVrdeModule); +- str.cloneTo(a_pbstrVrdeModule); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(PlugIns)(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)) +-{ +- /** @todo implement plug-ins. */ +-#ifdef VBOX_WITH_XPCOM +- NOREF(a_paPlugIns); +- NOREF(a_paPlugInsSize); +-#endif +- ReturnComNotImplemented(); +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Usable)(BOOL *a_pfUsable) +-{ +- CheckComArgOutPointerValid(a_pfUsable); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfUsable = m->fUsable; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(WhyUnusable)(BSTR *a_pbstrWhy) +-{ +- CheckComArgOutPointerValid(a_pbstrWhy); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strWhyUnusable.cloneTo(a_pbstrWhy); +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(ShowLicense)(BOOL *a_pfShowIt) +-{ +- CheckComArgOutPointerValid(a_pfShowIt); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfShowIt = m->Desc.fShowLicense; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(License)(BSTR *a_pbstrHtmlLicense) +-{ +- Bstr bstrHtml("html"); +- return QueryLicense(Bstr::Empty.raw(), Bstr::Empty.raw(), bstrHtml.raw(), a_pbstrHtmlLicense); +-} +- +-STDMETHODIMP ExtPack::QueryLicense(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, IN_BSTR a_bstrFormat, +- BSTR *a_pbstrLicense) +-{ +- /* +- * Validate input. +- */ +- CheckComArgOutPointerValid(a_pbstrLicense); +- CheckComArgNotNull(a_bstrPreferredLocale); +- CheckComArgNotNull(a_bstrPreferredLanguage); +- CheckComArgNotNull(a_bstrFormat); +- +- Utf8Str strPreferredLocale(a_bstrPreferredLocale); +- if (strPreferredLocale.length() != 2 && strPreferredLocale.length() != 0) +- return setError(E_FAIL, tr("The preferred locale is a two character string or empty.")); +- +- Utf8Str strPreferredLanguage(a_bstrPreferredLanguage); +- if (strPreferredLanguage.length() != 2 && strPreferredLanguage.length() != 0) +- return setError(E_FAIL, tr("The preferred lanuage is a two character string or empty.")); +- +- Utf8Str strFormat(a_bstrFormat); +- if ( !strFormat.equals("html") +- && !strFormat.equals("rtf") +- && !strFormat.equals("txt")) +- return setError(E_FAIL, tr("The license format can only have the values 'html', 'rtf' and 'txt'.")); +- +- /* +- * Combine the options to form a file name before locking down anything. +- */ +- char szName[sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX "-de_DE.html") + 2]; +- if (strPreferredLocale.isNotEmpty() && strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s_%s.%s", +- strPreferredLocale.c_str(), strPreferredLanguage.c_str(), strFormat.c_str()); +- else if (strPreferredLocale.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else if (strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-_%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX ".%s", strFormat.c_str()); +- +- /* +- * Effectuate the query. +- */ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); /* paranoia */ +- +- if (!m->fUsable) +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- else +- { +- char szPath[RTPATH_MAX]; +- int vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), szName); +- if (RT_SUCCESS(vrc)) +- { +- void *pvFile; +- size_t cbFile; +- vrc = RTFileReadAllEx(szPath, 0, RTFOFF_MAX, RTFILE_RDALL_O_DENY_READ, &pvFile, &cbFile); +- if (RT_SUCCESS(vrc)) +- { +- Bstr bstrLicense((const char *)pvFile, cbFile); +- if (bstrLicense.isNotEmpty()) +- { +- bstrLicense.detachTo(a_pbstrLicense); +- hrc = S_OK; +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("The license file '%s' is empty or contains invalid UTF-8 encoding"), +- szPath); +- RTFileReadAllFree(pvFile, cbFile); +- } +- else if (vrc == VERR_FILE_NOT_FOUND || vrc == VERR_PATH_NOT_FOUND) +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("The license file '%s' was not found in extension pack '%s'"), +- szName, m->Desc.strName.c_str()); +- else +- hrc = setError(VBOX_E_FILE_ERROR, tr("Failed to open the license file '%s': %Rrc"), szPath, vrc); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTPathJoin failed: %Rrc"), vrc); +- } +- } +- return hrc; +-} +- +- +-STDMETHODIMP ExtPack::QueryObject(IN_BSTR a_bstrObjectId, IUnknown **a_ppUnknown) +-{ +- com::Guid ObjectId; +- CheckComArgGuid(a_bstrObjectId, ObjectId); +- CheckComArgOutPointerValid(a_ppUnknown); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- if ( m->pReg +- && m->pReg->pfnQueryObject) +- { +- void *pvUnknown = m->pReg->pfnQueryObject(m->pReg, ObjectId.raw()); +- if (pvUnknown) +- *a_ppUnknown = (IUnknown *)pvUnknown; +- else +- hrc = E_NOINTERFACE; +- } +- else +- hrc = E_NOINTERFACE; +- } +- return hrc; +-} +- +- +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPackManager) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in init(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPackManager::FinalConstruct() +-{ +- m = NULL; +- return S_OK; +-} +- +-/** +- * Initializes the extension pack manager. +- * +- * @returns COM status code. +- * @param a_pVirtualBox Pointer to the VirtualBox object. +- * @param a_enmContext The context we're in. +- */ +-HRESULT ExtPackManager::initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- /* +- * Figure some stuff out before creating the instance data. +- */ +- char szBaseDir[RTPATH_MAX]; +- int rc = RTPathAppPrivateArchTop(szBaseDir, sizeof(szBaseDir)); +- AssertLogRelRCReturn(rc, E_FAIL); +- rc = RTPathAppend(szBaseDir, sizeof(szBaseDir), VBOX_EXTPACK_INSTALL_DIR); +- AssertLogRelRCReturn(rc, E_FAIL); +- +- char szCertificatDir[RTPATH_MAX]; +- rc = RTPathAppPrivateNoArch(szCertificatDir, sizeof(szCertificatDir)); +- AssertLogRelRCReturn(rc, E_FAIL); +- rc = RTPathAppend(szCertificatDir, sizeof(szCertificatDir), VBOX_EXTPACK_CERT_DIR); +- AssertLogRelRCReturn(rc, E_FAIL); +- +- /* +- * Allocate and initialize the instance data. +- */ +- m = new Data; +- m->strBaseDir = szBaseDir; +- m->strCertificatDirPath = szCertificatDir; +- m->pVirtualBox = a_pVirtualBox; +- m->enmContext = a_enmContext; +- +- /* +- * Slurp in VBoxVMM which is used by VBoxPuelMain. +- */ +-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_DARWIN) +- if (a_enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- int vrc = SUPR3HardenedLdrLoadAppPriv("VBoxVMM", &m->hVBoxVMM, RTLDRLOAD_FLAGS_GLOBAL, NULL); +- if (RT_FAILURE(vrc)) +- m->hVBoxVMM = NIL_RTLDRMOD; +- /* cleanup in ::uninit()? */ +- } +-#endif +- +- /* +- * Go looking for extensions. The RTDirOpen may fail if nothing has been +- * installed yet, or if root is paranoid and has revoked our access to them. +- * +- * We ASSUME that there are no files, directories or stuff in the directory +- * that exceed the max name length in RTDIRENTRYEX. +- */ +- HRESULT hrc = S_OK; +- PRTDIR pDir; +- int vrc = RTDirOpen(&pDir, szBaseDir); +- if (RT_SUCCESS(vrc)) +- { +- for (;;) +- { +- RTDIRENTRYEX Entry; +- vrc = RTDirReadEx(pDir, &Entry, NULL /*pcbDirEntry*/, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- AssertLogRelMsg(vrc == VERR_NO_MORE_FILES, ("%Rrc\n", vrc)); +- break; +- } +- if ( RTFS_IS_DIRECTORY(Entry.Info.Attr.fMode) +- && strcmp(Entry.szName, ".") != 0 +- && strcmp(Entry.szName, "..") != 0 +- && VBoxExtPackIsValidMangledName(Entry.szName) ) +- { +- /* +- * All directories are extensions, the shall be nothing but +- * extensions in this subdirectory. +- */ +- char szExtPackDir[RTPATH_MAX]; +- vrc = RTPathJoin(szExtPackDir, sizeof(szExtPackDir), m->strBaseDir.c_str(), Entry.szName); +- AssertLogRelRC(vrc); +- if (RT_SUCCESS(vrc)) +- { +- RTCString *pstrName = VBoxExtPackUnmangleName(Entry.szName, RTSTR_MAX); +- AssertLogRel(pstrName); +- if (pstrName) +- { +- ComObjPtr<ExtPack> NewExtPack; +- HRESULT hrc2 = NewExtPack.createObject(); +- if (SUCCEEDED(hrc2)) +- hrc2 = NewExtPack->initWithDir(a_enmContext, pstrName->c_str(), szExtPackDir); +- delete pstrName; +- if (SUCCEEDED(hrc2)) +- m->llInstalledExtPacks.push_back(NewExtPack); +- else if (SUCCEEDED(rc)) +- hrc = hrc2; +- } +- else +- hrc = E_UNEXPECTED; +- } +- else +- hrc = E_UNEXPECTED; +- } +- } +- RTDirClose(pDir); +- } +- /* else: ignore, the directory probably does not exist or something. */ +- +- if (SUCCEEDED(hrc)) +- autoInitSpan.setSucceeded(); +- return hrc; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPackManager::FinalRelease() +-{ +- uninit(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPackManager::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- delete m; +- m = NULL; +- } +-} +- +- +-STDMETHODIMP ExtPackManager::COMGETTER(InstalledExtPacks)(ComSafeArrayOut(IExtPack *, a_paExtPacks)) +-{ +- CheckComArgOutSafeArrayPointerValid(a_paExtPacks); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- SafeIfaceArray<IExtPack> SaExtPacks(m->llInstalledExtPacks); +- SaExtPacks.detachTo(ComSafeArrayOutArg(a_paExtPacks)); +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Find(IN_BSTR a_bstrName, IExtPack **a_pExtPack) +-{ +- CheckComArgNotNull(a_bstrName); +- CheckComArgOutPointerValid(a_pExtPack); +- Utf8Str strName(a_bstrName); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ComPtr<ExtPack> ptrExtPack = findExtPack(strName.c_str()); +- if (!ptrExtPack.isNull()) +- ptrExtPack.queryInterfaceTo(a_pExtPack); +- else +- hrc = VBOX_E_OBJECT_NOT_FOUND; +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::OpenExtPackFile(IN_BSTR a_bstrTarballAndDigest, IExtPackFile **a_ppExtPackFile) +-{ +- CheckComArgNotNull(a_bstrTarballAndDigest); +- CheckComArgOutPointerValid(a_ppExtPackFile); +- AssertReturn(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON, E_UNEXPECTED); +- +- /* The API can optionally take a ::SHA-256=<hex-digest> attribute at the +- end of the file name. This is just a temporary measure for +- backporting, in 4.2 we'll add another parameter to the method. */ +- Utf8Str strTarball; +- Utf8Str strDigest; +- Utf8Str strTarballAndDigest(a_bstrTarballAndDigest); +- size_t offSha256 = strTarballAndDigest.find("::SHA-256="); +- if (offSha256 == Utf8Str::npos) +- strTarball = strTarballAndDigest; +- else +- { +- strTarball = strTarballAndDigest.substr(0, offSha256); +- strDigest = strTarballAndDigest.substr(offSha256 + sizeof("::SHA-256=") - 1); +- } +- +- ComObjPtr<ExtPackFile> NewExtPackFile; +- HRESULT hrc = NewExtPackFile.createObject(); +- if (SUCCEEDED(hrc)) +- hrc = NewExtPackFile->initWithFile(strTarball.c_str(), strDigest.c_str(), this, m->pVirtualBox); +- if (SUCCEEDED(hrc)) +- NewExtPackFile.queryInterfaceTo(a_ppExtPackFile); +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Uninstall(IN_BSTR a_bstrName, BOOL a_fForcedRemoval, IN_BSTR a_bstrDisplayInfo, +- IProgress **a_ppProgress) +-{ +- CheckComArgNotNull(a_bstrName); +- if (a_ppProgress) +- *a_ppProgress = NULL; +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- PEXTPACKUNINSTALLJOB pJob = NULL; +- try +- { +- pJob = new EXTPACKUNINSTALLJOB; +- pJob->ptrExtPackMgr = this; +- pJob->strName = a_bstrName; +- pJob->fForcedRemoval = a_fForcedRemoval != FALSE; +- pJob->strDisplayInfo = a_bstrDisplayInfo; +- hrc = pJob->ptrProgress.createObject(); +- if (SUCCEEDED(hrc)) +- { +- Bstr bstrDescription = tr("Uninstalling extension pack"); +- hrc = pJob->ptrProgress->init( +-#ifndef VBOX_COM_INPROC +- m->pVirtualBox, +-#endif +- static_cast<IExtPackManager *>(this), +- bstrDescription.raw(), +- FALSE /*aCancelable*/, +- NULL /*aId*/); +- } +- if (SUCCEEDED(hrc)) +- { +- ComPtr<Progress> ptrProgress = pJob->ptrProgress; +- int vrc = RTThreadCreate(NULL /*phThread*/, ExtPackManager::doUninstallThreadProc, pJob, 0, +- RTTHREADTYPE_DEFAULT, 0 /*fFlags*/, "ExtPackUninst"); +- if (RT_SUCCESS(vrc)) +- { +- pJob = NULL; /* the thread deletes it */ +- ptrProgress.queryInterfaceTo(a_ppProgress); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTThreadCreate failed with %Rrc"), vrc); +- } +- } +- catch (std::bad_alloc) +- { +- hrc = E_OUTOFMEMORY; +- } +- if (pJob) +- delete pJob; +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Cleanup(void) +-{ +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the set-uid-to-root binary that performs the cleanup. +- * +- * Take the write lock to prevent conflicts with other calls to this +- * VBoxSVC instance. +- */ +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- hrc = runSetUidToRootHelper(NULL, +- "cleanup", +- "--base-dir", m->strBaseDir.c_str(), +- (const char *)NULL); +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::QueryAllPlugInsForFrontend(IN_BSTR a_bstrFrontend, ComSafeArrayOut(BSTR, a_pabstrPlugInModules)) +-{ +- CheckComArgNotNull(a_bstrFrontend); +- Utf8Str strName(a_bstrFrontend); +- CheckComArgOutSafeArrayPointerValid(a_pabstrPlugInModules); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- com::SafeArray<BSTR> saPaths((size_t)0); +- /** @todo implement plug-ins */ +- saPaths.detachTo(ComSafeArrayOutArg(a_pabstrPlugInModules)); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::IsExtPackUsable(IN_BSTR a_bstrExtPack, BOOL *aUsable) +-{ +- CheckComArgNotNull(a_bstrExtPack); +- Utf8Str strExtPack(a_bstrExtPack); +- *aUsable = isExtPackUsable(strExtPack.c_str()); +- return S_OK; +-} +- +-/** +- * Finds the success indicator string in the stderr output ofr hte helper app. +- * +- * @returns Pointer to the indicator. +- * @param psz The stderr output string. Can be NULL. +- * @param cch The size of the string. +- */ +-static char *findSuccessIndicator(char *psz, size_t cch) +-{ +- static const char s_szSuccessInd[] = "rcExit=RTEXITCODE_SUCCESS"; +- Assert(!cch || strlen(psz) == cch); +- if (cch < sizeof(s_szSuccessInd) - 1) +- return NULL; +- char *pszInd = &psz[cch - sizeof(s_szSuccessInd) + 1]; +- if (strcmp(s_szSuccessInd, pszInd)) +- return NULL; +- return pszInd; +-} +- +-/** +- * Runs the helper application that does the privileged operations. +- * +- * @returns S_OK or a failure status with error information set. +- * @param a_pstrDisplayInfo Platform specific display info hacks. +- * @param a_pszCommand The command to execute. +- * @param ... The argument strings that goes along with the +- * command. Maximum is about 16. Terminated by a +- * NULL. +- */ +-HRESULT ExtPackManager::runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...) +-{ +- /* +- * Calculate the path to the helper application. +- */ +- char szExecName[RTPATH_MAX]; +- int vrc = RTPathAppPrivateArch(szExecName, sizeof(szExecName)); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- vrc = RTPathAppend(szExecName, sizeof(szExecName), VBOX_EXTPACK_HELPER_NAME); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- /* +- * Convert the variable argument list to a RTProcCreate argument vector. +- */ +- const char *apszArgs[20]; +- unsigned cArgs = 0; +- +- LogRel(("ExtPack: Executing '%s'", szExecName)); +- apszArgs[cArgs++] = &szExecName[0]; +- +- if ( a_pstrDisplayInfo +- && a_pstrDisplayInfo->isNotEmpty()) +- { +- LogRel((" '--display-info-hack' '%s'", a_pstrDisplayInfo->c_str())); +- apszArgs[cArgs++] = "--display-info-hack"; +- apszArgs[cArgs++] = a_pstrDisplayInfo->c_str(); +- } +- +- LogRel(("'%s'", a_pszCommand)); +- apszArgs[cArgs++] = a_pszCommand; +- +- va_list va; +- va_start(va, a_pszCommand); +- const char *pszLastArg; +- for (;;) +- { +- AssertReturn(cArgs < RT_ELEMENTS(apszArgs) - 1, E_UNEXPECTED); +- pszLastArg = va_arg(va, const char *); +- if (!pszLastArg) +- break; +- LogRel((" '%s'", pszLastArg)); +- apszArgs[cArgs++] = pszLastArg; +- }; +- va_end(va); +- +- LogRel(("\n")); +- apszArgs[cArgs] = NULL; +- +- /* +- * Create a PIPE which we attach to stderr so that we can read the error +- * message on failure and report it back to the caller. +- */ +- RTPIPE hPipeR; +- RTHANDLE hStdErrPipe; +- hStdErrPipe.enmType = RTHANDLETYPE_PIPE; +- vrc = RTPipeCreate(&hPipeR, &hStdErrPipe.u.hPipe, RTPIPE_C_INHERIT_WRITE); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- /* +- * Spawn the process. +- */ +- HRESULT hrc; +- RTPROCESS hProcess; +- vrc = RTProcCreateEx(szExecName, +- apszArgs, +- RTENV_DEFAULT, +- 0 /*fFlags*/, +- NULL /*phStdIn*/, +- NULL /*phStdOut*/, +- &hStdErrPipe, +- NULL /*pszAsUser*/, +- NULL /*pszPassword*/, +- &hProcess); +- if (RT_SUCCESS(vrc)) +- { +- vrc = RTPipeClose(hStdErrPipe.u.hPipe); +- hStdErrPipe.u.hPipe = NIL_RTPIPE; +- +- /* +- * Read the pipe output until the process completes. +- */ +- RTPROCSTATUS ProcStatus = { -42, RTPROCEXITREASON_ABEND }; +- size_t cbStdErrBuf = 0; +- size_t offStdErrBuf = 0; +- char *pszStdErrBuf = NULL; +- do +- { +- /* +- * Service the pipe. Block waiting for output or the pipe breaking +- * when the process terminates. +- */ +- if (hPipeR != NIL_RTPIPE) +- { +- char achBuf[1024]; +- size_t cbRead; +- vrc = RTPipeReadBlocking(hPipeR, achBuf, sizeof(achBuf), &cbRead); +- if (RT_SUCCESS(vrc)) +- { +- /* grow the buffer? */ +- size_t cbBufReq = offStdErrBuf + cbRead + 1; +- if ( cbBufReq > cbStdErrBuf +- && cbBufReq < _256K) +- { +- size_t cbNew = RT_ALIGN_Z(cbBufReq, 16); // 1024 +- void *pvNew = RTMemRealloc(pszStdErrBuf, cbNew); +- if (pvNew) +- { +- pszStdErrBuf = (char *)pvNew; +- cbStdErrBuf = cbNew; +- } +- } +- +- /* append if we've got room. */ +- if (cbBufReq <= cbStdErrBuf) +- { +- memcpy(&pszStdErrBuf[offStdErrBuf], achBuf, cbRead); +- offStdErrBuf = offStdErrBuf + cbRead; +- pszStdErrBuf[offStdErrBuf] = '\0'; +- } +- } +- else +- { +- AssertLogRelMsg(vrc == VERR_BROKEN_PIPE, ("%Rrc\n", vrc)); +- RTPipeClose(hPipeR); +- hPipeR = NIL_RTPIPE; +- } +- } +- +- /* +- * Service the process. Block if we have no pipe. +- */ +- if (hProcess != NIL_RTPROCESS) +- { +- vrc = RTProcWait(hProcess, +- hPipeR == NIL_RTPIPE ? RTPROCWAIT_FLAGS_BLOCK : RTPROCWAIT_FLAGS_NOBLOCK, +- &ProcStatus); +- if (RT_SUCCESS(vrc)) +- hProcess = NIL_RTPROCESS; +- else +- AssertLogRelMsgStmt(vrc == VERR_PROCESS_RUNNING, ("%Rrc\n", vrc), hProcess = NIL_RTPROCESS); +- } +- } while ( hPipeR != NIL_RTPIPE +- || hProcess != NIL_RTPROCESS); +- +- LogRel(("ExtPack: enmReason=%d iStatus=%d stderr='%s'\n", +- ProcStatus.enmReason, ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : "")); +- +- /* +- * Look for rcExit=RTEXITCODE_SUCCESS at the end of the error output, +- * cut it as it is only there to attest the success. +- */ +- if (offStdErrBuf > 0) +- { +- RTStrStripR(pszStdErrBuf); +- offStdErrBuf = strlen(pszStdErrBuf); +- } +- +- char *pszSuccessInd = findSuccessIndicator(pszStdErrBuf, offStdErrBuf); +- if (pszSuccessInd) +- { +- *pszSuccessInd = '\0'; +- offStdErrBuf = pszSuccessInd - pszStdErrBuf; +- } +- else if ( ProcStatus.enmReason == RTPROCEXITREASON_NORMAL +- && ProcStatus.iStatus == 0) +- ProcStatus.iStatus = offStdErrBuf ? 667 : 666; +- +- /* +- * Compose the status code and, on failure, error message. +- */ +- if ( ProcStatus.enmReason == RTPROCEXITREASON_NORMAL +- && ProcStatus.iStatus == 0) +- hrc = S_OK; +- else if (ProcStatus.enmReason == RTPROCEXITREASON_NORMAL) +- { +- AssertMsg(ProcStatus.iStatus != 0, ("%s\n", pszStdErrBuf)); +- hrc = setError(E_FAIL, tr("The installer failed with exit code %d: %s"), +- ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- } +- else if (ProcStatus.enmReason == RTPROCEXITREASON_SIGNAL) +- hrc = setError(E_UNEXPECTED, tr("The installer was killed by signal #d (stderr: %s)"), +- ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- else if (ProcStatus.enmReason == RTPROCEXITREASON_ABEND) +- hrc = setError(E_UNEXPECTED, tr("The installer aborted abnormally (stderr: %s)"), +- offStdErrBuf ? pszStdErrBuf : ""); +- else +- hrc = setError(E_UNEXPECTED, tr("internal error: enmReason=%d iStatus=%d stderr='%s'"), +- ProcStatus.enmReason, ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- +- RTMemFree(pszStdErrBuf); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("Failed to launch the helper application '%s' (%Rrc)"), szExecName, vrc); +- +- RTPipeClose(hPipeR); +- RTPipeClose(hStdErrPipe.u.hPipe); +- +- return hrc; +-} +- +-/** +- * Finds an installed extension pack. +- * +- * @returns Pointer to the extension pack if found, NULL if not. (No reference +- * counting problem here since the caller must be holding the lock.) +- * @param a_pszName The name of the extension pack. +- */ +-ExtPack *ExtPackManager::findExtPack(const char *a_pszName) +-{ +- size_t cchName = strlen(a_pszName); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if ( pExtPackData +- && pExtPackData->Desc.strName.length() == cchName +- && pExtPackData->Desc.strName.equalsIgnoreCase(a_pszName)) +- return (*it); +- } +- return NULL; +-} +- +-/** +- * Removes an installed extension pack from the internal list. +- * +- * The package is expected to exist! +- * +- * @param a_pszName The name of the extension pack. +- */ +-void ExtPackManager::removeExtPack(const char *a_pszName) +-{ +- size_t cchName = strlen(a_pszName); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if ( pExtPackData +- && pExtPackData->Desc.strName.length() == cchName +- && pExtPackData->Desc.strName.equalsIgnoreCase(a_pszName)) +- { +- m->llInstalledExtPacks.erase(it); +- return; +- } +- } +- AssertMsgFailed(("%s\n", a_pszName)); +-} +- +-/** +- * Refreshes the specified extension pack. +- * +- * This may remove the extension pack from the list, so any non-smart pointers +- * to the extension pack object may become invalid. +- * +- * @returns S_OK and *a_ppExtPack on success, COM status code and error +- * message on failure. Note that *a_ppExtPack can be NULL. +- * +- * @param a_pszName The extension to update.. +- * @param a_fUnusableIsError If @c true, report an unusable extension pack +- * as an error. +- * @param a_ppExtPack Where to store the pointer to the extension +- * pack of it is still around after the refresh. +- * This is optional. +- * +- * @remarks Caller holds the extension manager lock. +- * @remarks Only called in VBoxSVC. +- */ +-HRESULT ExtPackManager::refreshExtPack(const char *a_pszName, bool a_fUnusableIsError, ExtPack **a_ppExtPack) +-{ +- Assert(m->pVirtualBox != NULL); /* Only called from VBoxSVC. */ +- +- HRESULT hrc; +- ExtPack *pExtPack = findExtPack(a_pszName); +- if (pExtPack) +- { +- /* +- * Refresh existing object. +- */ +- bool fCanDelete; +- hrc = pExtPack->refresh(&fCanDelete); +- if (SUCCEEDED(hrc)) +- { +- if (fCanDelete) +- { +- removeExtPack(a_pszName); +- pExtPack = NULL; +- } +- } +- } +- else +- { +- /* +- * Do this check here, otherwise VBoxExtPackCalcDir() will fail with a strange +- * error. +- */ +- bool fValid = VBoxExtPackIsValidName(a_pszName); +- if (!fValid) +- return setError(E_FAIL, "Invalid extension pack name specified"); +- +- /* +- * Does the dir exist? Make some special effort to deal with case +- * sensitivie file systems (a_pszName is case insensitive and mangled). +- */ +- char szDir[RTPATH_MAX]; +- int vrc = VBoxExtPackCalcDir(szDir, sizeof(szDir), m->strBaseDir.c_str(), a_pszName); +- AssertLogRelRCReturn(vrc, E_FAIL); +- +- RTDIRENTRYEX Entry; +- RTFSOBJINFO ObjInfo; +- vrc = RTPathQueryInfoEx(szDir, &ObjInfo, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- bool fExists = RT_SUCCESS(vrc) && RTFS_IS_DIRECTORY(ObjInfo.Attr.fMode); +- if (!fExists) +- { +- PRTDIR pDir; +- vrc = RTDirOpen(&pDir, m->strBaseDir.c_str()); +- if (RT_SUCCESS(vrc)) +- { +- const char *pszMangledName = RTPathFilename(szDir); +- for (;;) +- { +- vrc = RTDirReadEx(pDir, &Entry, NULL /*pcbDirEntry*/, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- AssertLogRelMsg(vrc == VERR_NO_MORE_FILES, ("%Rrc\n", vrc)); +- break; +- } +- if ( RTFS_IS_DIRECTORY(Entry.Info.Attr.fMode) +- && !RTStrICmp(Entry.szName, pszMangledName)) +- { +- /* +- * The installed extension pack has a uses different case. +- * Update the name and directory variables. +- */ +- vrc = RTPathJoin(szDir, sizeof(szDir), m->strBaseDir.c_str(), Entry.szName); /* not really necessary */ +- AssertLogRelRCReturnStmt(vrc, RTDirClose(pDir), E_UNEXPECTED); +- a_pszName = Entry.szName; +- fExists = true; +- break; +- } +- } +- RTDirClose(pDir); +- } +- } +- if (fExists) +- { +- /* +- * We've got something, create a new extension pack object for it. +- */ +- ComObjPtr<ExtPack> ptrNewExtPack; +- hrc = ptrNewExtPack.createObject(); +- if (SUCCEEDED(hrc)) +- hrc = ptrNewExtPack->initWithDir(m->enmContext, a_pszName, szDir); +- if (SUCCEEDED(hrc)) +- { +- m->llInstalledExtPacks.push_back(ptrNewExtPack); +- if (ptrNewExtPack->m->fUsable) +- LogRel(("ExtPackManager: Found extension pack '%s'.\n", a_pszName)); +- else +- LogRel(("ExtPackManager: Found bad extension pack '%s': %s\n", +- a_pszName, ptrNewExtPack->m->strWhyUnusable.c_str() )); +- pExtPack = ptrNewExtPack; +- } +- } +- else +- hrc = S_OK; +- } +- +- /* +- * Report error if not usable, if that is desired. +- */ +- if ( SUCCEEDED(hrc) +- && pExtPack +- && a_fUnusableIsError +- && !pExtPack->m->fUsable) +- hrc = setError(E_FAIL, "%s", pExtPack->m->strWhyUnusable.c_str()); +- +- if (a_ppExtPack) +- *a_ppExtPack = pExtPack; +- return hrc; +-} +- +-/** +- * Thread wrapper around doInstall. +- * +- * @returns VINF_SUCCESS (ignored) +- * @param hThread The thread handle (ignored). +- * @param pvJob The job structure. +- */ +-/*static*/ DECLCALLBACK(int) ExtPackManager::doInstallThreadProc(RTTHREAD hThread, void *pvJob) +-{ +- PEXTPACKINSTALLJOB pJob = (PEXTPACKINSTALLJOB)pvJob; +- HRESULT hrc = pJob->ptrExtPackMgr->doInstall(pJob->ptrExtPackFile, pJob->fReplace, &pJob->strDisplayInfo); +- pJob->ptrProgress->notifyComplete(hrc); +- delete pJob; +- +- NOREF(hThread); +- return VINF_SUCCESS; +-} +- +-/** +- * Worker for IExtPackFile::Install. +- * +- * Called on a worker thread via doInstallThreadProc. +- * +- * @returns COM status code. +- * @param a_pExtPackFile The extension pack file, caller checks that +- * it's usable. +- * @param a_fReplace Whether to replace any existing extpack or just +- * fail. +- * @param a_pstrDisplayInfo Host specific display information hacks. +- * @param a_ppProgress Where to return a progress object some day. Can +- * be NULL. +- */ +-HRESULT ExtPackManager::doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo) +-{ +- AssertReturn(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON, E_UNEXPECTED); +- RTCString const * const pStrName = &a_pExtPackFile->m->Desc.strName; +- RTCString const * const pStrTarball = &a_pExtPackFile->m->strExtPackFile; +- RTCString const * const pStrTarballDigest = &a_pExtPackFile->m->strDigest; +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Refresh the data we have on the extension pack as it +- * may be made stale by direct meddling or some other user. +- */ +- ExtPack *pExtPack; +- hrc = refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (pExtPack && a_fReplace) +- hrc = pExtPack->callUninstallHookAndClose(m->pVirtualBox, false /*a_ForcedRemoval*/); +- else if (pExtPack) +- hrc = setError(E_FAIL, +- tr("Extension pack '%s' is already installed." +- " In case of a reinstallation, please uninstall it first"), +- pStrName->c_str()); +- } +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the privileged helper binary that performs the actual +- * installation. Then create an object for the packet (we do this +- * even on failure, to be on the safe side). +- */ +- hrc = runSetUidToRootHelper(a_pstrDisplayInfo, +- "install", +- "--base-dir", m->strBaseDir.c_str(), +- "--cert-dir", m->strCertificatDirPath.c_str(), +- "--name", pStrName->c_str(), +- "--tarball", pStrTarball->c_str(), +- "--sha-256", pStrTarballDigest->c_str(), +- pExtPack ? "--replace" : (const char *)NULL, +- (const char *)NULL); +- if (SUCCEEDED(hrc)) +- { +- hrc = refreshExtPack(pStrName->c_str(), true /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc) && pExtPack) +- { +- RTERRINFOSTATIC ErrInfo; +- RTErrInfoInitStatic(&ErrInfo); +- pExtPack->callInstalledHook(m->pVirtualBox, &autoLock, &ErrInfo.Core); +- if (RT_SUCCESS(ErrInfo.Core.rc)) +- LogRel(("ExtPackManager: Successfully installed extension pack '%s'.\n", pStrName->c_str())); +- else +- { +- LogRel(("ExtPackManager: Installated hook for '%s' failed: %Rrc - %s\n", +- pStrName->c_str(), ErrInfo.Core.rc, ErrInfo.Core.pszMsg)); +- +- /* +- * Uninstall the extpack if the error indicates that. +- */ +- if (ErrInfo.Core.rc == VERR_EXTPACK_UNSUPPORTED_HOST_UNINSTALL) +- runSetUidToRootHelper(a_pstrDisplayInfo, +- "uninstall", +- "--base-dir", m->strBaseDir.c_str(), +- "--name", pStrName->c_str(), +- "--forced", +- (const char *)NULL); +- hrc = setError(E_FAIL, tr("The installation hook failed: %Rrc - %s"), +- ErrInfo.Core.rc, ErrInfo.Core.pszMsg); +- } +- } +- else if (SUCCEEDED(hrc)) +- hrc = setError(E_FAIL, tr("Installing extension pack '%s' failed under mysterious circumstances"), +- pStrName->c_str()); +- } +- else +- { +- ErrorInfoKeeper Eik; +- refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, NULL); +- } +- } +- +- /* +- * Do VirtualBoxReady callbacks now for any freshly installed +- * extension pack (old ones will not be called). +- */ +- if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- autoLock.release(); +- callAllVirtualBoxReadyHooks(); +- } +- } +- +- return hrc; +-} +- +-/** +- * Thread wrapper around doUninstall. +- * +- * @returns VINF_SUCCESS (ignored) +- * @param hThread The thread handle (ignored). +- * @param pvJob The job structure. +- */ +-/*static*/ DECLCALLBACK(int) ExtPackManager::doUninstallThreadProc(RTTHREAD hThread, void *pvJob) +-{ +- PEXTPACKUNINSTALLJOB pJob = (PEXTPACKUNINSTALLJOB)pvJob; +- HRESULT hrc = pJob->ptrExtPackMgr->doUninstall(&pJob->strName, pJob->fForcedRemoval, &pJob->strDisplayInfo); +- pJob->ptrProgress->notifyComplete(hrc); +- delete pJob; +- +- NOREF(hThread); +- return VINF_SUCCESS; +-} +- +-/** +- * Worker for IExtPackManager::Uninstall. +- * +- * Called on a worker thread via doUninstallThreadProc. +- * +- * @returns COM status code. +- * @param a_pstrName The name of the extension pack to uninstall. +- * @param a_fForcedRemoval Whether to be skip and ignore certain bits of +- * the extpack feedback. To deal with misbehaving +- * extension pack hooks. +- * @param a_pstrDisplayInfo Host specific display information hacks. +- */ +-HRESULT ExtPackManager::doUninstall(Utf8Str const *a_pstrName, bool a_fForcedRemoval, Utf8Str const *a_pstrDisplayInfo) +-{ +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Refresh the data we have on the extension pack as it may be made +- * stale by direct meddling or some other user. +- */ +- ExtPack *pExtPack; +- hrc = refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (!pExtPack) +- { +- LogRel(("ExtPackManager: Extension pack '%s' is not installed, so nothing to uninstall.\n", a_pstrName->c_str())); +- hrc = S_OK; /* nothing to uninstall */ +- } +- else +- { +- /* +- * Call the uninstall hook and unload the main dll. +- */ +- hrc = pExtPack->callUninstallHookAndClose(m->pVirtualBox, a_fForcedRemoval); +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the set-uid-to-root binary that performs the +- * uninstallation. Then refresh the object. +- * +- * This refresh is theorically subject to races, but it's of +- * the don't-do-that variety. +- */ +- const char *pszForcedOpt = a_fForcedRemoval ? "--forced" : NULL; +- hrc = runSetUidToRootHelper(a_pstrDisplayInfo, +- "uninstall", +- "--base-dir", m->strBaseDir.c_str(), +- "--name", a_pstrName->c_str(), +- pszForcedOpt, /* Last as it may be NULL. */ +- (const char *)NULL); +- if (SUCCEEDED(hrc)) +- { +- hrc = refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (!pExtPack) +- LogRel(("ExtPackManager: Successfully uninstalled extension pack '%s'.\n", a_pstrName->c_str())); +- else +- hrc = setError(E_FAIL, +- tr("Uninstall extension pack '%s' failed under mysterious circumstances"), +- a_pstrName->c_str()); +- } +- } +- else +- { +- ErrorInfoKeeper Eik; +- refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, NULL); +- } +- } +- } +- } +- +- /* +- * Do VirtualBoxReady callbacks now for any freshly installed +- * extension pack (old ones will not be called). +- */ +- if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- autoLock.release(); +- callAllVirtualBoxReadyHooks(); +- } +- } +- +- return hrc; +-} +- +- +-/** +- * Calls the pfnVirtualBoxReady hook for all working extension packs. +- * +- * @remarks The caller must not hold any locks. +- */ +-void ExtPackManager::callAllVirtualBoxReadyHooks(void) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- /* advancing below */) +- { +- if ((*it)->callVirtualBoxReadyHook(m->pVirtualBox, &autoLock)) +- it = m->llInstalledExtPacks.begin(); +- else +- it++; +- } +-} +- +-/** +- * Calls the pfnConsoleReady hook for all working extension packs. +- * +- * @param a_pConsole The console interface. +- * @remarks The caller must not hold any locks. +- */ +-void ExtPackManager::callAllConsoleReadyHooks(IConsole *a_pConsole) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- /* advancing below */) +- { +- if ((*it)->callConsoleReadyHook(a_pConsole, &autoLock)) +- it = m->llInstalledExtPacks.begin(); +- else +- it++; +- } +-} +- +-/** +- * Calls the pfnVMCreated hook for all working extension packs. +- * +- * @param a_pMachine The machine interface of the new VM. +- */ +-void ExtPackManager::callAllVmCreatedHooks(IMachine *a_pMachine) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- (*it)->callVmCreatedHook(m->pVirtualBox, a_pMachine, &autoLock); +-} +- +-/** +- * Calls the pfnVMConfigureVMM hook for all working extension packs. +- * +- * @returns VBox status code. Stops on the first failure, expecting the caller +- * to signal this to the caller of the CFGM constructor. +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. +- */ +-int ExtPackManager::callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return Global::vboxStatusCodeFromCOM(hrc); +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- { +- int vrc; +- (*it)->callVmConfigureVmmHook(a_pConsole, a_pVM, &autoLock, &vrc); +- if (RT_FAILURE(vrc)) +- return vrc; +- } +- +- return VINF_SUCCESS; +-} +- +-/** +- * Calls the pfnVMPowerOn hook for all working extension packs. +- * +- * @returns VBox status code. Stops on the first failure, expecting the caller +- * to not power on the VM. +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. +- */ +-int ExtPackManager::callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return Global::vboxStatusCodeFromCOM(hrc); +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- { +- int vrc; +- (*it)->callVmPowerOnHook(a_pConsole, a_pVM, &autoLock, &vrc); +- if (RT_FAILURE(vrc)) +- return vrc; +- } +- +- return VINF_SUCCESS; +-} +- +-/** +- * Calls the pfnVMPowerOff hook for all working extension packs. +- * +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. Can be NULL. +- */ +-void ExtPackManager::callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- (*it)->callVmPowerOffHook(a_pConsole, a_pVM, &autoLock); +-} +- +- +-/** +- * Checks that the specified extension pack contains a VRDE module and that it +- * is shipshape. +- * +- * @returns S_OK if ok, appropriate failure status code with details. +- * @param a_pstrExtPack The name of the extension pack. +- */ +-HRESULT ExtPackManager::checkVrdeExtPack(Utf8Str const *a_pstrExtPack) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pstrExtPack->c_str()); +- if (pExtPack) +- hrc = pExtPack->checkVrde(); +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); +- } +- +- return hrc; +-} +- +-/** +- * Gets the full path to the VRDE library of the specified extension pack. +- * +- * This will do extacly the same as checkVrdeExtPack and then resolve the +- * library path. +- * +- * @returns S_OK if a path is returned, COM error status and message return if +- * not. +- * @param a_pstrExtPack The extension pack. +- * @param a_pstrVrdeLibrary Where to return the path. +- */ +-int ExtPackManager::getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pstrExtPack->c_str()); +- if (pExtPack) +- hrc = pExtPack->getVrdpLibraryName(a_pstrVrdeLibrary); +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); +- } +- +- return hrc; +-} +- +-/** +- * Gets the name of the default VRDE extension pack. +- * +- * @returns S_OK or some COM error status on red tape failure. +- * @param a_pstrExtPack Where to return the extension pack name. Returns +- * empty if no extension pack wishes to be the default +- * VRDP provider. +- */ +-HRESULT ExtPackManager::getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack) +-{ +- a_pstrExtPack->setNull(); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- if ((*it)->wantsToBeDefaultVrde()) +- { +- *a_pstrExtPack = (*it)->m->Desc.strName; +- break; +- } +- } +- } +- return hrc; +-} +- +-/** +- * Checks if an extension pack is (present and) usable. +- * +- * @returns @c true if it is, otherwise @c false. +- * @param a_pszExtPack The name of the extension pack. +- */ +-bool ExtPackManager::isExtPackUsable(const char *a_pszExtPack) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return false; +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pszExtPack); +- return pExtPack != NULL +- && pExtPack->m->fUsable; +-} +- +-/** +- * Dumps all extension packs to the release log. +- */ +-void ExtPackManager::dumpAllToReleaseLog(void) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- LogRel(("Installed Extension Packs:\n")); +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if (pExtPackData) +- { +- if (pExtPackData->fUsable) +- LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s)\n", +- pExtPackData->Desc.strName.c_str(), +- pExtPackData->Desc.strVersion.c_str(), +- pExtPackData->Desc.uRevision, +- pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", +- pExtPackData->Desc.strEdition.c_str(), +- pExtPackData->Desc.strVrdeModule.c_str() )); +- else +- LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s unusable because of '%s')\n", +- pExtPackData->Desc.strName.c_str(), +- pExtPackData->Desc.strVersion.c_str(), +- pExtPackData->Desc.uRevision, +- pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", +- pExtPackData->Desc.strEdition.c_str(), +- pExtPackData->Desc.strVrdeModule.c_str(), +- pExtPackData->strWhyUnusable.c_str() )); +- } +- else +- LogRel((" pExtPackData is NULL\n")); +- } +- +- if (!m->llInstalledExtPacks.size()) +- LogRel((" None installed!\n")); +-} +- +-/* vi: set tabstop=4 shiftwidth=4 expandtab: */ +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/ExtPackUtil.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,1385 +0,0 @@ +-/* $Id: ExtPackUtil.cpp $ */ +-/** @file +- * VirtualBox Main - Extension Pack Utilities and definitions, VBoxC, VBoxSVC, ++. +- */ +- +-/* +- * Copyright (C) 2010-2012 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +- +-/******************************************************************************* +-* Header Files * +-*******************************************************************************/ +-#include "../include/ExtPackUtil.h" +- +-#include <iprt/ctype.h> +-#include <iprt/dir.h> +-#include <iprt/file.h> +-#include <iprt/manifest.h> +-#include <iprt/param.h> +-#include <iprt/path.h> +-#include <iprt/sha.h> +-#include <iprt/string.h> +-#include <iprt/vfs.h> +-#include <iprt/tar.h> +-#include <iprt/zip.h> +-#include <iprt/cpp/xml.h> +- +-#include <VBox/log.h> +- +- +-/** +- * Worker for VBoxExtPackLoadDesc that loads the plug-in descriptors. +- * +- * @returns Same as VBoxExtPackLoadDesc. +- * @param pVBoxExtPackElm +- * @param pcPlugIns Where to return the number of plug-ins in the +- * array. +- * @param paPlugIns Where to return the plug-in descriptor array. +- * (RTMemFree it even on failure) +- */ +-static RTCString * +-vboxExtPackLoadPlugInDescs(const xml::ElementNode *pVBoxExtPackElm, +- uint32_t *pcPlugIns, PVBOXEXTPACKPLUGINDESC *paPlugIns) +-{ +- *pcPlugIns = 0; +- *paPlugIns = NULL; +- +- /** @todo plug-ins */ +- NOREF(pVBoxExtPackElm); +- +- return NULL; +-} +- +-/** +- * Clears the extension pack descriptor. +- * +- * @param a_pExtPackDesc The descriptor to clear. +- */ +-static void vboxExtPackClearDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- a_pExtPackDesc->strName.setNull(); +- a_pExtPackDesc->strDescription.setNull(); +- a_pExtPackDesc->strVersion.setNull(); +- a_pExtPackDesc->strEdition.setNull(); +- a_pExtPackDesc->uRevision = 0; +- a_pExtPackDesc->strMainModule.setNull(); +- a_pExtPackDesc->strVrdeModule.setNull(); +- a_pExtPackDesc->cPlugIns = 0; +- a_pExtPackDesc->paPlugIns = NULL; +- a_pExtPackDesc->fShowLicense = false; +-} +- +-/** +- * Initializes an extension pack descriptor so that it's safe to call free on +- * it whatever happens later on. +- * +- * @param a_pExtPackDesc The descirptor to initialize. +- */ +-void VBoxExtPackInitDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +-} +- +- +-/** +- * Load the extension pack descriptor from an XML document. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pDoc Pointer to the the XML document. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- */ +-static RTCString *vboxExtPackLoadDescFromDoc(xml::Document *a_pDoc, PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- /* +- * Get the main element and check its version. +- */ +- const xml::ElementNode *pVBoxExtPackElm = a_pDoc->getRootElement(); +- if ( !pVBoxExtPackElm +- || strcmp(pVBoxExtPackElm->getName(), "VirtualBoxExtensionPack") != 0) +- return new RTCString("No VirtualBoxExtensionPack element"); +- +- RTCString strFormatVersion; +- if (!pVBoxExtPackElm->getAttributeValue("version", strFormatVersion)) +- return new RTCString("Missing format version"); +- if (!strFormatVersion.equals("1.0")) +- return &(new RTCString("Unsupported format version: "))->append(strFormatVersion); +- +- /* +- * Read and validate mandatory bits. +- */ +- const xml::ElementNode *pNameElm = pVBoxExtPackElm->findChildElement("Name"); +- if (!pNameElm) +- return new RTCString("The 'Name' element is missing"); +- const char *pszName = pNameElm->getValue(); +- if (!VBoxExtPackIsValidName(pszName)) +- return &(new RTCString("Invalid name: "))->append(pszName); +- +- const xml::ElementNode *pDescElm = pVBoxExtPackElm->findChildElement("Description"); +- if (!pDescElm) +- return new RTCString("The 'Description' element is missing"); +- const char *pszDesc = pDescElm->getValue(); +- if (!pszDesc || *pszDesc == '\0') +- return new RTCString("The 'Description' element is empty"); +- if (strpbrk(pszDesc, "\n\r\t\v\b") != NULL) +- return new RTCString("The 'Description' must not contain control characters"); +- +- const xml::ElementNode *pVersionElm = pVBoxExtPackElm->findChildElement("Version"); +- if (!pVersionElm) +- return new RTCString("The 'Version' element is missing"); +- const char *pszVersion = pVersionElm->getValue(); +- if (!pszVersion || *pszVersion == '\0') +- return new RTCString("The 'Version' element is empty"); +- if (!VBoxExtPackIsValidVersionString(pszVersion)) +- return &(new RTCString("Invalid version string: "))->append(pszVersion); +- +- uint32_t uRevision; +- if (!pVersionElm->getAttributeValue("revision", uRevision)) +- uRevision = 0; +- +- const char *pszEdition; +- if (!pVersionElm->getAttributeValue("edition", pszEdition)) +- pszEdition = ""; +- if (!VBoxExtPackIsValidEditionString(pszEdition)) +- return &(new RTCString("Invalid edition string: "))->append(pszEdition); +- +- const xml::ElementNode *pMainModuleElm = pVBoxExtPackElm->findChildElement("MainModule"); +- if (!pMainModuleElm) +- return new RTCString("The 'MainModule' element is missing"); +- const char *pszMainModule = pMainModuleElm->getValue(); +- if (!pszMainModule || *pszMainModule == '\0') +- return new RTCString("The 'MainModule' element is empty"); +- if (!VBoxExtPackIsValidModuleString(pszMainModule)) +- return &(new RTCString("Invalid main module string: "))->append(pszMainModule); +- +- /* +- * The VRDE module, optional. +- * Accept both none and empty as tokens of no VRDE module. +- */ +- const char *pszVrdeModule = NULL; +- const xml::ElementNode *pVrdeModuleElm = pVBoxExtPackElm->findChildElement("VRDEModule"); +- if (pVrdeModuleElm) +- { +- pszVrdeModule = pVrdeModuleElm->getValue(); +- if (!pszVrdeModule || *pszVrdeModule == '\0') +- pszVrdeModule = NULL; +- else if (!VBoxExtPackIsValidModuleString(pszVrdeModule)) +- return &(new RTCString("Invalid VRDE module string: "))->append(pszVrdeModule); +- } +- +- /* +- * Whether to show the license, optional. (presense is enough here) +- */ +- const xml::ElementNode *pShowLicenseElm = pVBoxExtPackElm->findChildElement("ShowLicense"); +- bool fShowLicense = pShowLicenseElm != NULL; +- +- /* +- * Parse plug-in descriptions (last because of the manual memory management). +- */ +- uint32_t cPlugIns = 0; +- PVBOXEXTPACKPLUGINDESC paPlugIns = NULL; +- RTCString *pstrRet = vboxExtPackLoadPlugInDescs(pVBoxExtPackElm, &cPlugIns, &paPlugIns); +- if (pstrRet) +- { +- RTMemFree(paPlugIns); +- return pstrRet; +- } +- +- /* +- * Everything seems fine, fill in the return values and return successfully. +- */ +- a_pExtPackDesc->strName = pszName; +- a_pExtPackDesc->strDescription = pszDesc; +- a_pExtPackDesc->strVersion = pszVersion; +- a_pExtPackDesc->strEdition = pszEdition; +- a_pExtPackDesc->uRevision = uRevision; +- a_pExtPackDesc->strMainModule = pszMainModule; +- a_pExtPackDesc->strVrdeModule = pszVrdeModule; +- a_pExtPackDesc->cPlugIns = cPlugIns; +- a_pExtPackDesc->paPlugIns = paPlugIns; +- a_pExtPackDesc->fShowLicense = fShowLicense; +- +- return NULL; +-} +- +-/** +- * Reads the extension pack descriptor. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pszDir The directory containing the description file. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- * @param a_pObjInfo Where to store the object info for the file (unix +- * attribs). Optional. +- */ +-RTCString *VBoxExtPackLoadDesc(const char *a_pszDir, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +- +- /* +- * Validate, open and parse the XML file. +- */ +- char szFilePath[RTPATH_MAX]; +- int vrc = RTPathJoin(szFilePath, sizeof(szFilePath), a_pszDir, VBOX_EXTPACK_DESCRIPTION_NAME); +- if (RT_FAILURE(vrc)) +- return new RTCString("RTPathJoin failed with %Rrc", vrc); +- +- RTFSOBJINFO ObjInfo; +- vrc = RTPathQueryInfoEx(szFilePath, &ObjInfo, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- return &(new RTCString())->printf("RTPathQueryInfoEx failed with %Rrc", vrc); +- if (a_pObjInfo) +- *a_pObjInfo = ObjInfo; +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- { +- if (RTFS_IS_SYMLINK(ObjInfo.Attr.fMode)) +- return new RTCString("The XML file is symlinked, that is not allowed"); +- return &(new RTCString)->printf("The XML file is not a file (fMode=%#x)", ObjInfo.Attr.fMode); +- } +- +- xml::Document Doc; +- { +- xml::XmlFileParser Parser; +- try +- { +- Parser.read(szFilePath, Doc); +- } +- catch (xml::XmlError Err) +- { +- return new RTCString(Err.what()); +- } +- } +- +- /* +- * Hand the xml doc over to the common code. +- */ +- return vboxExtPackLoadDescFromDoc(&Doc, a_pExtPackDesc); +-} +- +-/** +- * Reads the extension pack descriptor. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pszDir The directory containing the description file. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- * @param a_pObjInfo Where to store the object info for the file (unix +- * attribs). Optional. +- */ +-RTCString *VBoxExtPackLoadDescFromVfsFile(RTVFSFILE hVfsFile, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +- +- /* +- * Query the object info. +- */ +- RTFSOBJINFO ObjInfo; +- int rc = RTVfsFileQueryInfo(hVfsFile, &ObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_FAILURE(rc)) +- return &(new RTCString)->printf("RTVfsFileQueryInfo failed: %Rrc", rc); +- if (a_pObjInfo) +- *a_pObjInfo = ObjInfo; +- +- /* +- * The simple approach, read the whole thing into memory and pass this to +- * the XML parser. +- */ +- +- /* Check the file size. */ +- if (ObjInfo.cbObject > _1M || ObjInfo.cbObject < 0) +- return &(new RTCString)->printf("The XML file is too large (%'RU64 bytes)", ObjInfo.cbObject); +- size_t const cbFile = (size_t)ObjInfo.cbObject; +- +- /* Rewind to the start of the file. */ +- rc = RTVfsFileSeek(hVfsFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return &(new RTCString)->printf("RTVfsFileSeek(,0,BEGIN) failed: %Rrc", rc); +- +- /* Allocate memory and read the file content into it. */ +- void *pvFile = RTMemTmpAlloc(cbFile); +- if (!pvFile) +- return &(new RTCString)->printf("RTMemTmpAlloc(%zu) failed", cbFile); +- +- RTCString *pstrErr = NULL; +- rc = RTVfsFileRead(hVfsFile, pvFile, cbFile, NULL); +- if (RT_FAILURE(rc)) +- pstrErr = &(new RTCString)->printf("RTVfsFileRead failed: %Rrc", rc); +- +- /* +- * Parse the file. +- */ +- xml::Document Doc; +- if (RT_SUCCESS(rc)) +- { +- xml::XmlMemParser Parser; +- RTCString strFileName = VBOX_EXTPACK_DESCRIPTION_NAME; +- try +- { +- Parser.read(pvFile, cbFile, strFileName, Doc); +- } +- catch (xml::XmlError Err) +- { +- pstrErr = new RTCString(Err.what()); +- rc = VERR_PARSE_ERROR; +- } +- } +- RTMemTmpFree(pvFile); +- +- /* +- * Hand the xml doc over to the common code. +- */ +- if (RT_SUCCESS(rc)) +- pstrErr = vboxExtPackLoadDescFromDoc(&Doc, a_pExtPackDesc); +- +- return pstrErr; +-} +- +-/** +- * Frees all resources associated with a extension pack descriptor. +- * +- * @param a_pExtPackDesc The extension pack descriptor which members +- * should be freed. +- */ +-void VBoxExtPackFreeDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- if (!a_pExtPackDesc) +- return; +- +- a_pExtPackDesc->strName.setNull(); +- a_pExtPackDesc->strDescription.setNull(); +- a_pExtPackDesc->strVersion.setNull(); +- a_pExtPackDesc->strEdition.setNull(); +- a_pExtPackDesc->uRevision = 0; +- a_pExtPackDesc->strMainModule.setNull(); +- a_pExtPackDesc->strVrdeModule.setNull(); +- a_pExtPackDesc->cPlugIns = 0; +- RTMemFree(a_pExtPackDesc->paPlugIns); +- a_pExtPackDesc->paPlugIns = NULL; +- a_pExtPackDesc->fShowLicense = false; +-} +- +-/** +- * Extract the extension pack name from the tarball path. +- * +- * @returns String containing the name on success, the caller must delete it. +- * NULL if no valid name was found or if we ran out of memory. +- * @param pszTarball The path to the tarball. +- */ +-RTCString *VBoxExtPackExtractNameFromTarballPath(const char *pszTarball) +-{ +- /* +- * Skip ahead to the filename part and count the number of characters +- * that matches the criteria for a mangled extension pack name. +- */ +- const char *pszSrc = RTPathFilename(pszTarball); +- if (!pszSrc) +- return NULL; +- +- size_t off = 0; +- while (RT_C_IS_ALNUM(pszSrc[off]) || pszSrc[off] == '_') +- off++; +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return NULL; +- +- /* +- * Return the unmangled name. +- */ +- return VBoxExtPackUnmangleName(pszSrc, off); +-} +- +-/** +- * Validates the extension pack name. +- * +- * @returns true if valid, false if not. +- * @param pszName The name to validate. +- * @sa VBoxExtPackExtractNameFromTarballPath +- */ +-bool VBoxExtPackIsValidName(const char *pszName) +-{ +- if (!pszName) +- return false; +- +- /* +- * Check the characters making up the name, only english alphabet +- * characters, decimal digits and spaces are allowed. +- */ +- size_t off = 0; +- while (pszName[off]) +- { +- if (!RT_C_IS_ALNUM(pszName[off]) && pszName[off] != ' ') +- return false; +- off++; +- } +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return false; +- +- return true; +-} +- +-/** +- * Checks if an alledged manged extension pack name. +- * +- * @returns true if valid, false if not. +- * @param pszMangledName The mangled name to validate. +- * @param cchMax The max number of chars to test. +- * @sa VBoxExtPackMangleName +- */ +-bool VBoxExtPackIsValidMangledName(const char *pszMangledName, size_t cchMax /*= RTSTR_MAX*/) +-{ +- if (!pszMangledName) +- return false; +- +- /* +- * Check the characters making up the name, only english alphabet +- * characters, decimal digits and underscores (=space) are allowed. +- */ +- size_t off = 0; +- while (off < cchMax && pszMangledName[off]) +- { +- if (!RT_C_IS_ALNUM(pszMangledName[off]) && pszMangledName[off] != '_') +- return false; +- off++; +- } +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return false; +- +- return true; +-} +- +-/** +- * Mangle an extension pack name so it can be used by a directory or file name. +- * +- * @returns String containing the mangled name on success, the caller must +- * delete it. NULL on failure. +- * @param pszName The unmangled name. +- * @sa VBoxExtPackUnmangleName, VBoxExtPackIsValidMangledName +- */ +-RTCString *VBoxExtPackMangleName(const char *pszName) +-{ +- AssertReturn(VBoxExtPackIsValidName(pszName), NULL); +- +- char szTmp[VBOX_EXTPACK_NAME_MAX_LEN + 1]; +- size_t off = 0; +- char ch; +- while ((ch = pszName[off]) != '\0') +- { +- if (ch == ' ') +- ch = '_'; +- szTmp[off++] = ch; +- } +- szTmp[off] = '\0'; +- Assert(VBoxExtPackIsValidMangledName(szTmp)); +- +- return new RTCString(szTmp, off); +-} +- +-/** +- * Unmangle an extension pack name (reverses VBoxExtPackMangleName). +- * +- * @returns String containing the mangled name on success, the caller must +- * delete it. NULL on failure. +- * @param pszMangledName The mangled name. +- * @param cchMax The max name length. RTSTR_MAX is fine. +- * @sa VBoxExtPackMangleName, VBoxExtPackIsValidMangledName +- */ +-RTCString *VBoxExtPackUnmangleName(const char *pszMangledName, size_t cchMax) +-{ +- AssertReturn(VBoxExtPackIsValidMangledName(pszMangledName, cchMax), NULL); +- +- char szTmp[VBOX_EXTPACK_NAME_MAX_LEN + 1]; +- size_t off = 0; +- char ch; +- while ( off < cchMax +- && (ch = pszMangledName[off]) != '\0') +- { +- if (ch == '_') +- ch = ' '; +- else +- AssertReturn(RT_C_IS_ALNUM(ch) || ch == ' ', NULL); +- szTmp[off++] = ch; +- } +- szTmp[off] = '\0'; +- AssertReturn(VBoxExtPackIsValidName(szTmp), NULL); +- +- return new RTCString(szTmp, off); +-} +- +-/** +- * Constructs the extension pack directory path. +- * +- * A combination of RTPathJoin and VBoxExtPackMangleName. +- * +- * @returns IPRT status code like RTPathJoin. +- * @param pszExtPackDir Where to return the directory path. +- * @param cbExtPackDir The size of the return buffer. +- * @param pszParentDir The parent directory (".../Extensions"). +- * @param pszName The extension pack name, unmangled. +- */ +-int VBoxExtPackCalcDir(char *pszExtPackDir, size_t cbExtPackDir, const char *pszParentDir, const char *pszName) +-{ +- AssertReturn(VBoxExtPackIsValidName(pszName), VERR_INTERNAL_ERROR_5); +- +- RTCString *pstrMangledName = VBoxExtPackMangleName(pszName); +- if (!pstrMangledName) +- return VERR_INTERNAL_ERROR_4; +- +- int vrc = RTPathJoin(pszExtPackDir, cbExtPackDir, pszParentDir, pstrMangledName->c_str()); +- delete pstrMangledName; +- +- return vrc; +-} +- +- +-/** +- * Validates the extension pack version string. +- * +- * @returns true if valid, false if not. +- * @param pszVersion The version string to validate. +- */ +-bool VBoxExtPackIsValidVersionString(const char *pszVersion) +-{ +- if (!pszVersion || *pszVersion == '\0') +- return false; +- +- /* 1.x.y.z... */ +- for (;;) +- { +- if (!RT_C_IS_DIGIT(*pszVersion)) +- return false; +- do +- pszVersion++; +- while (RT_C_IS_DIGIT(*pszVersion)); +- if (*pszVersion != '.') +- break; +- pszVersion++; +- } +- +- /* upper case string + numbers indicating the build type */ +- if (*pszVersion == '-' || *pszVersion == '_') +- { +- /** @todo Should probably restrict this to known build types (alpha, +- * beta, rc, ++). */ +- do +- pszVersion++; +- while ( RT_C_IS_DIGIT(*pszVersion) +- || RT_C_IS_UPPER(*pszVersion) +- || *pszVersion == '-' +- || *pszVersion == '_'); +- } +- +- return *pszVersion == '\0'; +-} +- +-/** +- * Validates the extension pack edition string. +- * +- * @returns true if valid, false if not. +- * @param pszEdition The edition string to validate. +- */ +-bool VBoxExtPackIsValidEditionString(const char *pszEdition) +-{ +- if (*pszEdition) +- { +- if (!RT_C_IS_UPPER(*pszEdition)) +- return false; +- +- do +- pszEdition++; +- while ( RT_C_IS_UPPER(*pszEdition) +- || RT_C_IS_DIGIT(*pszEdition) +- || *pszEdition == '-' +- || *pszEdition == '_'); +- } +- return *pszEdition == '\0'; +-} +- +-/** +- * Validates an extension pack module string. +- * +- * @returns true if valid, false if not. +- * @param pszModule The module string to validate. +- */ +-bool VBoxExtPackIsValidModuleString(const char *pszModule) +-{ +- if (!pszModule || *pszModule == '\0') +- return false; +- +- /* Restricted charset, no extensions (dots). */ +- while ( RT_C_IS_ALNUM(*pszModule) +- || *pszModule == '-' +- || *pszModule == '_') +- pszModule++; +- +- return *pszModule == '\0'; +-} +- +-/** +- * RTStrPrintfv wrapper. +- * +- * @returns @a rc +- * @param rc The status code to return. +- * @param pszError The error buffer. +- * @param cbError The size of the buffer. +- * @param pszFormat The error message format string. +- * @param ... Format arguments. +- */ +-static int vboxExtPackReturnError(int rc, char *pszError, size_t cbError, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- RTStrPrintfV(pszError, cbError, pszFormat, va); +- va_end(va); +- return rc; +-} +- +-/** +- * RTStrPrintfv wrapper. +- * +- * @param pszError The error buffer. +- * @param cbError The size of the buffer. +- * @param pszFormat The error message format string. +- * @param ... Format arguments. +- */ +-static void vboxExtPackSetError(char *pszError, size_t cbError, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- RTStrPrintfV(pszError, cbError, pszFormat, va); +- va_end(va); +-} +- +-/** +- * Verifies the manifest and its signature. +- * +- * @returns VBox status code, failures with message. +- * @param hManifestFile The xml from the extension pack. +- * @param pszExtPackName The expected extension pack name. This can be +- * NULL, in which we don't have any expectations. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackVerifyXml(RTVFSFILE hXmlFile, const char *pszExtPackName, char *pszError, size_t cbError) +-{ +- /* +- * Load the XML. +- */ +- VBOXEXTPACKDESC ExtPackDesc; +- RTCString *pstrErr = VBoxExtPackLoadDescFromVfsFile(hXmlFile, &ExtPackDesc, NULL); +- if (pstrErr) +- { +- RTStrCopy(pszError, cbError, pstrErr->c_str()); +- delete pstrErr; +- return VERR_PARSE_ERROR; +- } +- +- /* +- * Check the name. +- */ +- /** @todo drop this restriction after the old install interface is +- * dropped. */ +- int rc = VINF_SUCCESS; +- if ( pszExtPackName +- && !ExtPackDesc.strName.equalsIgnoreCase(pszExtPackName)) +- rc = vboxExtPackReturnError(VERR_NOT_EQUAL, pszError, cbError, +- "The name of the downloaded file and the name stored inside the extension pack does not match" +- " (xml='%s' file='%s')", ExtPackDesc.strName.c_str(), pszExtPackName); +- return rc; +-} +- +-/** +- * Verifies the manifest and its signature. +- * +- * @returns VBox status code, failures with message. +- * @param hOurManifest The manifest we compiled. +- * @param hManifestFile The manifest file in the extension pack. +- * @param hSignatureFile The manifest signature file. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackVerifyManifestAndSignature(RTMANIFEST hOurManifest, RTVFSFILE hManifestFile, RTVFSFILE hSignatureFile, +- char *pszError, size_t cbError) +-{ +- /* +- * Read the manifest from the extension pack. +- */ +- int rc = RTVfsFileSeek(hManifestFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTVfsFileSeek failed: %Rrc", rc); +- +- RTMANIFEST hTheirManifest; +- rc = RTManifestCreate(0 /*fFlags*/, &hTheirManifest); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- +- RTVFSIOSTREAM hVfsIos = RTVfsFileToIoStream(hManifestFile); +- rc = RTManifestReadStandard(hTheirManifest, hVfsIos); +- RTVfsIoStrmRelease(hVfsIos); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Compare the manifests. +- */ +- static const char *s_apszIgnoreEntries[] = +- { +- VBOX_EXTPACK_MANIFEST_NAME, +- VBOX_EXTPACK_SIGNATURE_NAME, +- "./" VBOX_EXTPACK_MANIFEST_NAME, +- "./" VBOX_EXTPACK_SIGNATURE_NAME, +- NULL +- }; +- char szError[RTPATH_MAX]; +- rc = RTManifestEqualsEx(hOurManifest, hTheirManifest, &s_apszIgnoreEntries[0], NULL, +- RTMANIFEST_EQUALS_IGN_MISSING_ATTRS /*fFlags*/, +- szError, sizeof(szError)); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Validate the manifest file signature. +- */ +- /** @todo implement signature stuff */ +- NOREF(hSignatureFile); +- +- } +- else if (rc == VERR_NOT_EQUAL && szError[0]) +- vboxExtPackSetError(pszError, cbError, "Manifest mismatch: %s", szError); +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEqualsEx failed: %Rrc", rc); +-#if 0 +- RTVFSIOSTREAM hVfsIosStdOut = NIL_RTVFSIOSTREAM; +- RTVfsIoStrmFromStdHandle(RTHANDLESTD_OUTPUT, RTFILE_O_WRITE, true, &hVfsIosStdOut); +- RTVfsIoStrmWrite(hVfsIosStdOut, "Our:\n", sizeof("Our:\n") - 1, true, NULL); +- RTManifestWriteStandard(hOurManifest, hVfsIosStdOut); +- RTVfsIoStrmWrite(hVfsIosStdOut, "Their:\n", sizeof("Their:\n") - 1, true, NULL); +- RTManifestWriteStandard(hTheirManifest, hVfsIosStdOut); +-#endif +- } +- else +- vboxExtPackSetError(pszError, cbError, "Error parsing '%s': %Rrc", VBOX_EXTPACK_MANIFEST_NAME, rc); +- +- RTManifestRelease(hTheirManifest); +- return rc; +-} +- +- +-/** +- * Verifies the file digest (if specified) and returns the SHA-256 of the file. +- * +- * @returns +- * @param hFileManifest Manifest containing a SHA-256 digest of the file +- * that was calculated as the file was processed. +- * @param pszFileDigest SHA-256 digest of the file. +- * @param pStrDigest Where to return the SHA-256 digest. Optional. +- * @param pszError Where to write an error message on failure. +- * @param cbError The size of the @a pszError buffer. +- */ +-static int vboxExtPackVerifyFileDigest(RTMANIFEST hFileManifest, const char *pszFileDigest, +- RTCString *pStrDigest, char *pszError, size_t cbError) +-{ +- /* +- * Extract the SHA-256 entry for the extpack file. +- */ +- char szCalculatedDigest[RTSHA256_DIGEST_LEN + 1]; +- int rc = RTManifestEntryQueryAttr(hFileManifest, "extpack", NULL /*no name*/, RTMANIFEST_ATTR_SHA256, +- szCalculatedDigest, sizeof(szCalculatedDigest), NULL); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Convert the two strings to binary form before comparing. +- * We convert the calculated hash even if we don't have anything to +- * compare with, just to validate it. +- */ +- uint8_t abCalculatedHash[RTSHA256_HASH_SIZE]; +- rc = RTSha256FromString(szCalculatedDigest, abCalculatedHash); +- if (RT_SUCCESS(rc)) +- { +- if ( pszFileDigest +- && *pszFileDigest != '\0') +- { +- uint8_t abFileHash[RTSHA256_HASH_SIZE]; +- rc = RTSha256FromString(pszFileDigest, abFileHash); +- if (RT_SUCCESS(rc)) +- { +- if (memcmp(abFileHash, abCalculatedHash, sizeof(abFileHash))) +- { +- vboxExtPackSetError(pszError, cbError, "The extension pack file has changed (SHA-256 mismatch)"); +- rc = VERR_NOT_EQUAL; +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "Bad SHA-256 '%s': %Rrc", szCalculatedDigest, rc); +- } +- +- /* +- * Set the output hash on success. +- */ +- if (pStrDigest && RT_SUCCESS(rc)) +- { +- try +- { +- *pStrDigest = szCalculatedDigest; +- } +- catch (std::bad_alloc) +- { +- rc = VERR_NO_MEMORY; +- } +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "Bad SHA-256 '%s': %Rrc", szCalculatedDigest, rc); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryGetAttr: %Rrc", rc); +- return rc; +-} +- +- +- +-/** +- * Validates a standard file. +- * +- * Generally all files are +- * +- * @returns VBox status code, failure message in @a pszError. +- * @param pszAdjName The adjusted member name. +- * @param enmType The VFS object type. +- * @param phVfsObj The pointer to the VFS object handle variable. +- * This is both input and output. +- * @param phVfsFile Where to store the handle to the memorized +- * file. This is NULL for license files. +- * @param pszError Where to write an error message on failure. +- * @param cbError The size of the @a pszError buffer. +- */ +-static int VBoxExtPackValidateStandardFile(const char *pszAdjName, RTVFSOBJTYPE enmType, +- PRTVFSOBJ phVfsObj, PRTVFSFILE phVfsFile, char *pszError, size_t cbError) +-{ +- int rc; +- +- /* +- * Make sure it's a file and that it isn't too large. +- */ +- if (phVfsFile && *phVfsFile != NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_DUPLICATE, pszError, cbError, +- "There can only be one '%s'", pszAdjName); +- else if (enmType != RTVFSOBJTYPE_IO_STREAM && enmType != RTVFSOBJTYPE_FILE) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "Standard member '%s' is not a file", pszAdjName); +- else +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(*phVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "Standard member '%s' is not a file", pszAdjName); +- else if (ObjInfo.cbObject >= _1M) +- rc = vboxExtPackReturnError(VERR_OUT_OF_RANGE, pszError, cbError, +- "Standard member '%s' is too large: %'RU64 bytes (max 1 MB)", +- pszAdjName, (uint64_t)ObjInfo.cbObject); +- else +- { +- /* +- * Make an in memory copy of the stream and check that the file +- * is UTF-8 clean. +- */ +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(*phVfsObj); +- RTVFSFILE hVfsFile; +- rc = RTVfsMemorizeIoStreamAsFile(hVfsIos, RTFILE_O_READ, &hVfsFile); +- if (RT_SUCCESS(rc)) +- { +- rc = RTVfsIoStrmValidateUtf8Encoding(hVfsIos, +- RTVFS_VALIDATE_UTF8_BY_RTC_3629 | RTVFS_VALIDATE_UTF8_NO_NULL, +- NULL); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Replace *phVfsObj with the memorized file. +- */ +- rc = RTVfsFileSeek(hVfsFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_SUCCESS(rc)) +- { +- RTVfsObjRelease(*phVfsObj); +- *phVfsObj = RTVfsObjFromFile(hVfsFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsFileSeek failed on '%s': %Rrc", pszAdjName, rc); +- } +- +- if (phVfsFile && RT_SUCCESS(rc)) +- *phVfsFile = hVfsFile; +- else +- RTVfsFileRelease(hVfsFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsMemorizeIoStreamAsFile failed on '%s': %Rrc", pszAdjName, rc); +- RTVfsIoStrmRelease(hVfsIos); +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszAdjName, rc); +- } +- return rc; +-} +- +- +-/** +- * Validates a name in an extension pack. +- * +- * We restrict the charset to try make sure the extension pack can be unpacked +- * on all file systems. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name to validate. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberName(const char *pszName, char *pszError, size_t cbError) +-{ +- if (RTPathStartsWithRoot(pszName)) +- return vboxExtPackReturnError(VERR_PATH_IS_NOT_RELATIVE, pszError, cbError, "'%s': starts with root spec", pszName); +- +- const char *pszErr = NULL; +- const char *psz = pszName; +- int ch; +- while ((ch = *psz) != '\0') +- { +- /* Character set restrictions. */ +- if (ch < 0 || ch >= 128) +- { +- pszErr = "Only 7-bit ASCII allowed"; +- break; +- } +- if (ch <= 31 || ch == 127) +- { +- pszErr = "No control characters are not allowed"; +- break; +- } +- if (ch == '\\') +- { +- pszErr = "Only backward slashes are not allowed"; +- break; +- } +- if (strchr("'\":;*?|[]<>(){}", ch)) +- { +- pszErr = "The characters ', \", :, ;, *, ?, |, [, ], <, >, (, ), { and } are not allowed"; +- break; +- } +- +- /* Take the simple way out and ban all ".." sequences. */ +- if ( ch == '.' +- && psz[1] == '.') +- { +- pszErr = "Double dot sequence are not allowed"; +- break; +- } +- +- /* Keep the tree shallow or the hardening checks will fail. */ +- if (psz - pszName > VBOX_EXTPACK_MAX_MEMBER_NAME_LENGTH) +- { +- pszErr = "Too long"; +- break; +- } +- +- /* advance */ +- psz++; +- } +- +- if (pszErr) +- return vboxExtPackReturnError(VERR_INVALID_NAME, pszError, cbError, +- "Bad member name '%s' (pos %zu): %s", pszName, (size_t)(psz - pszName), pszErr); +- return RTEXITCODE_SUCCESS; +-} +- +- +-/** +- * Validates a file in an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the file. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberFile(const char *pszName, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- int rc = vboxExtPackValidateMemberName(pszName, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(hVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (ObjInfo.cbObject >= 9*_1G64) +- rc = vboxExtPackReturnError(VERR_OUT_OF_RANGE, pszError, cbError, +- "'%s': too large (%'RU64 bytes)", +- pszName, (uint64_t)ObjInfo.cbObject); +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "The alleged file '%s' has a mode mask stating otherwise (%RTfmode)", +- pszName, ObjInfo.Attr.fMode); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszName, rc); +- } +- return rc; +-} +- +- +-/** +- * Validates a directory in an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the directory. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberDir(const char *pszName, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- int rc = vboxExtPackValidateMemberName(pszName, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(hVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (!RTFS_IS_DIRECTORY(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_DIRECTORY, pszError, cbError, +- "The alleged directory '%s' has a mode mask saying differently (%RTfmode)", +- pszName, ObjInfo.Attr.fMode); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszName, rc); +- } +- return rc; +-} +- +-/** +- * Validates a member of an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the directory. +- * @param enmType The object type. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-int VBoxExtPackValidateMember(const char *pszName, RTVFSOBJTYPE enmType, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- Assert(cbError > 0); +- *pszError = '\0'; +- +- int rc; +- if ( enmType == RTVFSOBJTYPE_FILE +- || enmType == RTVFSOBJTYPE_IO_STREAM) +- rc = vboxExtPackValidateMemberFile(pszName, hVfsObj, pszError, cbError); +- else if ( enmType == RTVFSOBJTYPE_DIR +- || enmType == RTVFSOBJTYPE_BASE) +- rc = vboxExtPackValidateMemberDir(pszName, hVfsObj, pszError, cbError); +- else +- rc = vboxExtPackReturnError(VERR_UNEXPECTED_FS_OBJ_TYPE, pszError, cbError, +- "'%s' is not a file or directory (enmType=%d)", pszName, enmType); +- return rc; +-} +- +- +-/** +- * Rewinds the tarball file handle and creates a gunzip | tar chain that +- * results in a filesystem stream. +- * +- * @returns VBox status code, failures with message. +- * @param hTarballFile The handle to the tarball file. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- * @param phTarFss Where to return the filesystem stream handle. +- * @param phFileManifest Where to return a manifest where the tarball is +- * gettting hashed. The entry will be called +- * "extpack" and be ready when the file system +- * stream is at an end. Optional. +- */ +-int VBoxExtPackOpenTarFss(RTFILE hTarballFile, char *pszError, size_t cbError, PRTVFSFSSTREAM phTarFss, PRTMANIFEST phFileManifest) +-{ +- Assert(cbError > 0); +- *pszError = '\0'; +- *phTarFss = NIL_RTVFSFSSTREAM; +- +- /* +- * Rewind the file and set up a VFS chain for it. +- */ +- int rc = RTFileSeek(hTarballFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "Failed seeking to the start of the tarball: %Rrc", rc); +- +- RTVFSIOSTREAM hTarballIos; +- rc = RTVfsIoStrmFromRTFile(hTarballFile, RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN, true /*fLeaveOpen*/, +- &hTarballIos); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTVfsIoStrmFromRTFile failed: %Rrc", rc); +- +- RTMANIFEST hFileManifest = NIL_RTMANIFEST; +- rc = RTManifestCreate(0 /*fFlags*/, &hFileManifest); +- if (RT_SUCCESS(rc)) +- { +- RTVFSIOSTREAM hPtIos; +- rc = RTManifestEntryAddPassthruIoStream(hFileManifest, hTarballIos, "extpack", RTMANIFEST_ATTR_SHA256, true /*read*/, &hPtIos); +- if (RT_SUCCESS(rc)) +- { +- RTVFSIOSTREAM hGunzipIos; +- rc = RTZipGzipDecompressIoStream(hPtIos, 0 /*fFlags*/, &hGunzipIos); +- if (RT_SUCCESS(rc)) +- { +- RTVFSFSSTREAM hTarFss; +- rc = RTZipTarFsStreamFromIoStream(hGunzipIos, 0 /*fFlags*/, &hTarFss); +- if (RT_SUCCESS(rc)) +- { +- RTVfsIoStrmRelease(hPtIos); +- RTVfsIoStrmRelease(hGunzipIos); +- RTVfsIoStrmRelease(hTarballIos); +- *phTarFss = hTarFss; +- if (phFileManifest) +- *phFileManifest = hFileManifest; +- else +- RTManifestRelease(hFileManifest); +- return VINF_SUCCESS; +- } +- +- vboxExtPackSetError(pszError, cbError, "RTZipTarFsStreamFromIoStream failed: %Rrc", rc); +- RTVfsIoStrmRelease(hGunzipIos); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTZipGzipDecompressIoStream failed: %Rrc", rc); +- RTVfsIoStrmRelease(hPtIos); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryAddPassthruIoStream failed: %Rrc", rc); +- RTManifestRelease(hFileManifest); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- +- RTVfsIoStrmRelease(hTarballIos); +- return rc; +-} +- +- +-/** +- * Validates the extension pack tarball prior to unpacking. +- * +- * Operations performed: +- * - Mandatory files. +- * - Manifest check. +- * - Manifest seal check. +- * - XML check, match name. +- * +- * @returns VBox status code, failures with message. +- * @param hTarballFile The handle to open the @a pszTarball file. +- * @param pszExtPackName The name of the extension pack name. NULL if +- * the name is not fixed. +- * @param pszTarball The name of the tarball in case we have to +- * complain about something. +- * @param pszTarballDigest The SHA-256 digest of the tarball. Empty string +- * if no digest available. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- * @param phValidManifest Where to optionally return the handle to fully +- * validated the manifest for the extension pack. +- * This includes all files. +- * @param phXmlFile Where to optionally return the memorized XML +- * file. +- * @param pStrDigest Where to return the digest of the file. +- * Optional. +- */ +-int VBoxExtPackValidateTarball(RTFILE hTarballFile, const char *pszExtPackName, +- const char *pszTarball, const char *pszTarballDigest, +- char *pszError, size_t cbError, +- PRTMANIFEST phValidManifest, PRTVFSFILE phXmlFile, RTCString *pStrDigest) +-{ +- /* +- * Clear return values. +- */ +- if (phValidManifest) +- *phValidManifest = NIL_RTMANIFEST; +- if (phXmlFile) +- *phXmlFile = NIL_RTVFSFILE; +- Assert(cbError > 1); +- *pszError = '\0'; +- NOREF(pszTarball); +- +- /* +- * Open the tar.gz filesystem stream and set up an manifest in-memory file. +- */ +- RTMANIFEST hFileManifest; +- RTVFSFSSTREAM hTarFss; +- int rc = VBoxExtPackOpenTarFss(hTarballFile, pszError, cbError, &hTarFss, &hFileManifest); +- if (RT_FAILURE(rc)) +- return rc; +- +- RTMANIFEST hOurManifest; +- rc = RTManifestCreate(0 /*fFlags*/, &hOurManifest); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Process the tarball (would be nice to move this to a function). +- */ +- RTVFSFILE hXmlFile = NIL_RTVFSFILE; +- RTVFSFILE hManifestFile = NIL_RTVFSFILE; +- RTVFSFILE hSignatureFile = NIL_RTVFSFILE; +- for (;;) +- { +- /* +- * Get the next stream object. +- */ +- char *pszName; +- RTVFSOBJ hVfsObj; +- RTVFSOBJTYPE enmType; +- rc = RTVfsFsStrmNext(hTarFss, &pszName, &enmType, &hVfsObj); +- if (RT_FAILURE(rc)) +- { +- if (rc != VERR_EOF) +- vboxExtPackSetError(pszError, cbError, "RTVfsFsStrmNext failed: %Rrc", rc); +- else +- rc = VINF_SUCCESS; +- break; +- } +- const char *pszAdjName = pszName[0] == '.' && pszName[1] == '/' ? &pszName[2] : pszName; +- +- /* +- * Check the type & name validity, performing special tests on +- * standard extension pack member files. +- * +- * N.B. We will always reach the end of the loop before breaking on +- * failure - cleanup reasons. +- */ +- rc = VBoxExtPackValidateMember(pszName, enmType, hVfsObj, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- PRTVFSFILE phVfsFile = NULL; +- if (!strcmp(pszAdjName, VBOX_EXTPACK_DESCRIPTION_NAME)) +- phVfsFile = &hXmlFile; +- else if (!strcmp(pszAdjName, VBOX_EXTPACK_MANIFEST_NAME)) +- phVfsFile = &hManifestFile; +- else if (!strcmp(pszAdjName, VBOX_EXTPACK_SIGNATURE_NAME)) +- phVfsFile = &hSignatureFile; +- else if (!strncmp(pszAdjName, VBOX_EXTPACK_LICENSE_NAME_PREFIX, sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX) - 1)) +- rc = VBoxExtPackValidateStandardFile(pszAdjName, enmType, &hVfsObj, NULL, pszError, cbError); +- if (phVfsFile) +- rc = VBoxExtPackValidateStandardFile(pszAdjName, enmType, &hVfsObj, phVfsFile, pszError, cbError); +- } +- +- /* +- * Add any I/O stream to the manifest +- */ +- if ( RT_SUCCESS(rc) +- && ( enmType == RTVFSOBJTYPE_FILE +- || enmType == RTVFSOBJTYPE_IO_STREAM)) +- { +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(hVfsObj); +- rc = RTManifestEntryAddIoStream(hOurManifest, hVfsIos, pszAdjName, RTMANIFEST_ATTR_SIZE | RTMANIFEST_ATTR_SHA256); +- if (RT_FAILURE(rc)) +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryAddIoStream failed on '%s': %Rrc", pszAdjName, rc); +- RTVfsIoStrmRelease(hVfsIos); +- } +- +- /* +- * Clean up and break out on failure. +- */ +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- if (RT_FAILURE(rc)) +- break; +- } +- +- /* +- * Check the integrity of the tarball file. +- */ +- if (RT_SUCCESS(rc)) +- { +- RTVfsFsStrmRelease(hTarFss); +- hTarFss = NIL_RTVFSFSSTREAM; +- rc = vboxExtPackVerifyFileDigest(hFileManifest, pszTarballDigest, pStrDigest, pszError, cbError); +- } +- +- /* +- * If we've successfully processed the tarball, verify that the +- * mandatory files are present. +- */ +- if (RT_SUCCESS(rc)) +- { +- if (hXmlFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_DESCRIPTION_NAME); +- if (hManifestFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_MANIFEST_NAME); +- if (hSignatureFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_SIGNATURE_NAME); +- } +- +- /* +- * Check the manifest and it's signature. +- */ +- if (RT_SUCCESS(rc)) +- rc = vboxExtPackVerifyManifestAndSignature(hOurManifest, hManifestFile, hSignatureFile, pszError, cbError); +- +- /* +- * Check the XML. +- */ +- if (RT_SUCCESS(rc)) +- rc = vboxExtPackVerifyXml(hXmlFile, pszExtPackName, pszError, cbError); +- +- /* +- * Returns objects. +- */ +- if (RT_SUCCESS(rc)) +- { +- if (phValidManifest) +- { +- RTManifestRetain(hOurManifest); +- *phValidManifest = hOurManifest; +- } +- if (phXmlFile) +- { +- RTVfsFileRetain(hXmlFile); +- *phXmlFile = hXmlFile; +- } +- } +- +- /* +- * Release our object references. +- */ +- RTManifestRelease(hOurManifest); +- RTVfsFileRelease(hXmlFile); +- RTVfsFileRelease(hManifestFile); +- RTVfsFileRelease(hSignatureFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- RTVfsFsStrmRelease(hTarFss); +- RTManifestRelease(hFileManifest); +- +- return rc; +-} +- +--- VirtualBox-4.1.18.orig/include/Makefile.kmk 2012-06-20 10:07:49.000000000 -0300 ++++ VirtualBox-4.1.18/include/Makefile.kmk 2012-07-24 21:11:57.007068865 -0300 +@@ -51,7 +51,6 @@ + VBox/vd-cache-plugin.h \ + VBox/vmm/uvm.h \ + VBox/vscsi.h \ +- $(wildcard VBox/ExtPack/*.h ) \ + iprt/alloca.h \ + iprt/tcp.h \ + iprt/localipc.h \ +--- VirtualBox-4.1.18.orig/src/Makefile.kmk 2012-06-20 10:07:57.000000000 -0300 ++++ VirtualBox-4.1.18/src/Makefile.kmk 2012-07-24 22:51:10.206996034 -0300 +@@ -26,14 +26,6 @@ + include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk + include $(PATH_SUB_CURRENT)/libs/Makefile.kmk + +-else if defined(VBOX_ONLY_EXTPACKS) +- include $(PATH_SUB_CURRENT)/bldprogs/Makefile.kmk +- include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk +- include $(PATH_SUB_CURRENT)/libs/Makefile.kmk +- ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- include $(PATH_SUB_CURRENT)/recompiler/Makefile.kmk +- endif +- + else if defined(VBOX_ONLY_TESTSUITE) + include $(PATH_SUB_CURRENT)/libs/Makefile.kmk + include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk +--- VirtualBox-4.1.18.orig/src/VBox/Makefile.kmk 2012-07-24 21:19:55.565641784 -0300 ++++ VirtualBox-4.1.18/src/VBox/Makefile.kmk 2012-07-24 22:12:55.429156962 -0300 +@@ -33,19 +33,6 @@ + include $(PATH_SUB_CURRENT)/HostDrivers/Makefile.kmk + include $(PATH_SUB_CURRENT)/Frontends/Makefile.kmk + +-else ifdef VBOX_ONLY_EXTPACKS +- include $(PATH_SUB_CURRENT)/Runtime/Makefile.kmk +- include $(PATH_SUB_CURRENT)/Devices/Makefile.kmk +- include $(PATH_SUB_CURRENT)/HostDrivers/Makefile.kmk +- include $(PATH_SUB_CURRENT)/ExtPacks/Makefile.kmk +- ifdef VBOX_WITH_VRDP +- include $(PATH_SUB_CURRENT)/RDP/Makefile.kmk +- endif +- include $(PATH_SUB_CURRENT)/VMM/Makefile.kmk +- ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- include $(PATH_SUB_CURRENT)/Disassembler/Makefile.kmk +- endif +- + else ifdef VBOX_ONLY_SDK + include $(PATH_SUB_CURRENT)/Main/Makefile.kmk + ifdef VBOX_WITH_VRDP +@@ -92,9 +79,6 @@ + if1of ($(KBUILD_TARGET_ARCH), amd64 x86) + include $(PATH_SUB_CURRENT)/NetworkServices/Makefile.kmk + endif +- ifndef VBOX_OSE +- include $(PATH_SUB_CURRENT)/ExtPacks/Makefile.kmk +- endif + ifdef VBOX_WITH_INSTALLER + include $(PATH_SUB_CURRENT)/Installer/Makefile.kmk # Keep this last. + endif +--- VirtualBox-4.1.18/src/libs/Makefile.kmk.orig 2012-07-24 21:23:26.938013023 -0300 ++++ VirtualBox-4.1.18/src/libs/Makefile.kmk 2012-07-24 21:43:42.557911752 -0300 +@@ -48,13 +48,6 @@ + include $(PATH_SUB_CURRENT)/kStuff/Makefile.kmk + endif + +-# OpenSSL. +-if !defined(VBOX_ONLY_SDK) \ +- && ( "$(SDK_VBOX_OPENSSL_INCS)" == "$(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS)" \ +- || defined(VBOX_WITH_EXTPACK_PUEL_BUILD)) +- include $(PATH_SUB_CURRENT)/openssl-0.9.8t/Makefile.kmk +-endif +- + # libjpeg for VRDP video redirection + if defined(VBOX_WITH_VRDP) && defined(VBOX_WITH_VRDP_VIDEO_CHANNEL) + include $(PATH_SUB_CURRENT)/jpeg-8a/Makefile.kmk +--- VirtualBox-4.1.18.orig/src/VBox/Devices/Makefile.kmk 2012-07-24 23:06:45.916276235 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/Makefile.kmk 2012-07-24 23:17:00.202963228 -0300 +@@ -21,9 +21,7 @@ + + # Include sub-makefiles. + include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk +-if defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS) +- include $(PATH_SUB_CURRENT)/PC/PXE/Makefile.kmk +-else if defined(VBOX_WITH_PXE_ROM) && !defined(VBOX_WITHOUT_ETHERBOOT) ++if defined(VBOX_WITH_PXE_ROM) && !defined(VBOX_WITHOUT_ETHERBOOT) + include $(PATH_SUB_CURRENT)/PC/Etherboot-src/Makefile.kmk + endif + if !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file. +@@ -57,9 +55,6 @@ + ifdef VBOX_WITH_USB + VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB + VBoxDDU_SDKS.win = WINPSDK W2K3DDK +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDU_DEFS += VBOX_WITH_EHCI_IMPL +- endif + ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN + VBoxDDU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN + endif +@@ -122,9 +117,6 @@ + VBoxDD_DEFS = VBOX_ACPI + ifdef VBOX_WITH_USB + VBoxDD_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDD_DEFS += VBOX_WITH_EHCI_IMPL +- endif + endif + ifdef VBOX_WITH_VUSB + VBoxDD_DEFS += VBOX_WITH_VUSB +@@ -446,11 +438,6 @@ + endif + ifdef VBOX_WITH_USB + DevicesR3_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- DevicesR3_DEFS += VBOX_WITH_EHCI_IMPL +- DevicesR3_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) + DevicesR3_DEFS += VBOX_WITH_PCI_PASSTHROUGH_IMPL +@@ -607,11 +594,6 @@ + + ifdef VBOX_WITH_USB + VBoxDDGC_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDGC_DEFS += VBOX_WITH_EHCI_IMPL +- VBoxDDGC_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + + ifdef VBOX_WITH_VIDEOHWACCEL +@@ -711,11 +693,6 @@ + endif + ifdef VBOX_WITH_USB + VBoxDDR0_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDR0_DEFS += VBOX_WITH_EHCI_IMPL +- VBoxDDR0_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + + if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +@@ -1204,49 +1181,5 @@ + + endif # !VBOX_ONLY_EXTPACKS + +-if defined(VBOX_WITH_EXTPACK_PUEL) && defined(VBOX_WITH_EXTPACK_PUEL_BUILD) +- # +- # The EHCI (USB 2.0) Extension Pack Modules. +- # +- if defined(VBOX_WITH_USB) +- DLLS += VBoxEhciR3 +- VBoxEhciR3_TEMPLATE = VBoxR3ExtPackPuel +- VBoxEhciR3_SOURCES = USB/DevEHCI.cpp +- +- SYSMODS += VBoxEhciR0 +- VBoxEhciR0_TEMPLATE = VBoxR0ExtPackPuel +- VBoxEhciR0_SOURCES = USB/DevEHCI.cpp +- +- ifdef VBOX_WITH_RAW_MODE +- SYSMODS += VBoxEhciRC +- VBoxEhciRC_TEMPLATE = VBoxRcExtPackPuel +- VBoxEhciRC_SOURCES = USB/DevEHCI.cpp +- endif +- endif +- +- if defined(VBOX_WITH_PCI_PASSTHROUGH) +- DLLS += VBoxPciRawR3 +- VBoxPciRawR3_TEMPLATE = VBoxR3ExtPackPuel +- VBoxPciRawR3_SOURCES = Bus/DevPciRaw.cpp +- +- DLLS += VBoxPciRawDrv +- VBoxPciRawDrv_TEMPLATE = VBoxR3ExtPackPuel +- VBoxPciRawDrv_SOURCES = Bus/DrvPciRaw.cpp +- +- SYSMODS += VBoxPciRawR0 +- VBoxPciRawR0_TEMPLATE = VBoxR0ExtPackPuel +- VBoxPciRawR0_SOURCES = Bus/DevPciRaw.cpp +- +- Bus/DevPciRaw.cpp_INCS = Bus +- endif +- +- # +- # The Intel PXE rom. +- # +- INSTALLS += VBoxExtPackPuelInsRoms +- VBoxExtPackPuelInsRoms_TEMPLATE = VBoxInsExtPackPuel +- VBoxExtPackPuelInsRoms_SOURCES = PC/PXE/PXE-Intel.rom=>PXE-Intel.rom +-endif # VBOX_WITH_EXTPACK_PUEL +- + include $(KBUILD_PATH)/subfooter.kmk + +--- VirtualBox-4.1.18.orig/src/VBox/Main/Makefile.kmk 2012-07-24 23:38:25.304126039 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/Makefile.kmk 2012-07-24 23:38:25.350789964 -0300 +@@ -230,14 +230,12 @@ + $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,) \ + $(if $(VBOX_USB_WITH_INOTIFY),VBOX_USB_WITH_INOTIFY,) \ + $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \ +- $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \ + $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \ + $(if $(VBOX_WITH_S3),VBOX_WITH_S3,) \ + $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) + ifdef VBOX_WITH_USB + VBoxSVC_DEFS += \ + VBOX_WITH_USB \ +- $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \ + $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,) + endif + VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE +@@ -290,7 +288,6 @@ + src-all/SharedFolderImpl.cpp \ + src-all/VirtualBoxBase.cpp \ + src-all/VirtualBoxErrorInfoImpl.cpp \ +- $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \ + src-server/ApplianceImpl.cpp \ + src-server/ApplianceImplExport.cpp \ + src-server/ApplianceImplImport.cpp \ +@@ -543,8 +540,6 @@ + $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \ + $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \ + $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \ +- $(if-expr defined(VBOX_WITH_EHCI) && defined(VBOX_WITH_USB),VBOX_WITH_EHCI,) \ +- $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \ + $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) + + VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE +@@ -602,7 +597,6 @@ + src-all/SharedFolderImpl.cpp \ + src-all/VirtualBoxBase.cpp \ + src-all/VirtualBoxErrorInfoImpl.cpp \ +- $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \ + $(if $(VBOX_WITH_USB_VIDEO),src-client/UsbWebcamInterface.cpp,) \ + $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \ + src-client/AdditionsFacilityImpl.cpp \ +@@ -711,22 +705,6 @@ + endif # !win + + +-# +-# The VBoxExtPackHelperApp. +-# +-ifdef VBOX_WITH_EXTPACK +- PROGRAMS += VBoxExtPackHelperApp +- VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot +- VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security +- VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows +- VBoxExtPackHelperApp_SOURCES = \ +- src-helper-apps/VBoxExtPackHelperApp.cpp \ +- src-all/ExtPackUtil.cpp +- VBoxExtPackHelperApp_LIBS = \ +- $(LIB_RUNTIME) +-endif # VBOX_WITH_EXTPACK +- +- + endif # !VBOX_ONLY_SDK (the ifndef is far above) + + +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/Makefile.kmk 2012-07-24 23:25:04.575825175 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/Makefile.kmk 2012-07-24 23:25:04.619156084 -0300 +@@ -888,7 +888,6 @@ + $(VBOX_MACOSX_ICON_FILE)=>Resources/virtualbox.icns \ + $(VBOX_BRAND_GUI_VBOX_64PX_PNG)=>Resources/virtualbox.png \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vbox.icns=>Resources/virtualbox-vbox.icns \ +- $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vbox-extpack.icns=>Resources/virtualbox-vbox-extpack.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-ovf.icns=>Resources/virtualbox-ovf.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-ova.icns=>Resources/virtualbox-ova.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vdi.icns=>Resources/virtualbox-vdi.icns \ +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-24 23:28:17.985011038 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-24 23:28:18.051673913 -0300 +@@ -167,18 +167,6 @@ + <file alias="status_check_32px.png">images/status_check_32px.png</file> + <file alias="status_error_16px.png">images/status_error_16px.png</file> + <file alias="status_error_32px.png">images/status_error_32px.png</file> +- <file alias="extension_pack_16px.png">images/extension_pack_16px.png</file> +- <file alias="extension_pack_disabled_16px.png">images/extension_pack_disabled_16px.png</file> +- <file alias="extension_pack_32px.png">images/extension_pack_32px.png</file> +- <file alias="extension_pack_disabled_32px.png">images/extension_pack_disabled_32px.png</file> +- <file alias="extension_pack_install_16px.png">images/extension_pack_install_16px.png</file> +- <file alias="extension_pack_install_disabled_16px.png">images/extension_pack_install_disabled_16px.png</file> +- <file alias="extension_pack_install_32px.png">images/extension_pack_install_32px.png</file> +- <file alias="extension_pack_install_disabled_32px.png">images/extension_pack_install_disabled_32px.png</file> +- <file alias="extension_pack_uninstall_16px.png">images/extension_pack_uninstall_16px.png</file> +- <file alias="extension_pack_uninstall_disabled_16px.png">images/extension_pack_uninstall_disabled_16px.png</file> +- <file alias="extension_pack_uninstall_32px.png">images/extension_pack_uninstall_32px.png</file> +- <file alias="extension_pack_uninstall_disabled_32px.png">images/extension_pack_uninstall_disabled_32px.png</file> + <file alias="proxy_16px.png">images/proxy_16px.png</file> + <file alias="proxy_disabled_16px.png">images/proxy_disabled_16px.png</file> + <file alias="proxy_32px.png">images/proxy_32px.png</file> +--- VirtualBox-4.1.18.orig/src/VBox/Installer/linux/Makefile.kmk 2012-07-25 00:32:00.780012664 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/linux/Makefile.kmk 2012-07-25 00:32:00.806677728 -0300 +@@ -170,11 +170,6 @@ + VBox.sh \ + VBox.png + +-ifdef VBOX_WITH_EXTPACK +- VBOX_LNX_STRIP_BIN += \ +- VBoxExtPackHelperApp +-endif +- + # Qt4 GUI + ifdef VBOX_WITH_QTGUI + include $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk +@@ -286,7 +281,7 @@ + + VBOX_MIME_ICONS = \ + $(addprefix $(PATH_ROOT)/src/VBox/Resources/other/,\ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/virtualbox-$(f).png))) + +--- VirtualBox-4.1.18.orig/src/VBox/Installer/win/Makefile.kmk 2012-07-25 00:34:52.253398525 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/win/Makefile.kmk 2012-07-25 00:34:52.300062531 -0300 +@@ -435,7 +435,6 @@ + -E 'VBOX_WITH_DEBUGGER_GUI=$(if-expr defined(VBOX_WITH_DEBUGGER_GUI) && defined(VBOX_WITH_QTGUI),yes,no)' \ + -E 'VBOX_WITH_DOCS_PACKING=$(if $(VBOX_WITH_DOCS_PACKING),yes,no)' \ + -E 'VBOX_WITH_EFIFW_PACKING=$(if $(VBOX_WITH_EFIFW_PACKING),yes,no)' \ +- -E 'VBOX_WITH_EXTPACK=$(if $(VBOX_WITH_EXTPACK),yes,no)' \ + -E 'VBOX_WITH_GUEST_CONTROL=$(if $(VBOX_WITH_GUEST_CONTROL),yes,no)' \ + -E 'VBOX_WITH_GUEST_PROPS=$(if $(VBOX_WITH_GUEST_PROPS),yes,no)' \ + -E 'VBOX_WITH_NETFLT=$(if $(VBOX_WITH_NETFLT),yes,no)' \ +--- VirtualBox-4.1.18.orig/src/VBox/Installer/darwin/Makefile.kmk 2012-07-25 00:36:55.929571374 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/darwin/Makefile.kmk 2012-07-25 00:36:55.959569630 -0300 +@@ -629,7 +629,6 @@ + MacOS/VirtualBoxVM \ + MacOS/VBoxNetAdpCtl \ + MacOS/VBoxNetDHCP \ +- MacOS/VBoxExtPackHelperApp \ + MacOS/VBoxBalloonCtrl + ifdef VBOX_WITH_WEBSERVICES + VBOX_DI_VBAPP_PROGS += \ +@@ -659,7 +658,6 @@ + Resources/virtualbox.icns \ + Resources/virtualbox.png \ + Resources/virtualbox-vbox.icns \ +- Resources/virtualbox-vbox-extpack.icns \ + Resources/virtualbox-ovf.icns \ + Resources/virtualbox-ova.icns \ + Resources/virtualbox-vdi.icns \ +--- VirtualBox-4.1.18/src/VBox/Installer/solaris/Makefile.kmk.orig 2012-07-25 00:38:48.476398293 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/solaris/Makefile.kmk 2012-07-25 00:38:48.516396159 -0300 +@@ -185,12 +185,12 @@ + + VBOX_MIME_ICONS = \ + $(addprefix $(PATH_ROOT)/src/VBox/Resources/other/,\ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/mimetypes/virtualbox-$(f).png))) + + SOLARIS_COMMON_ICONS = \ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + $(s)x$(s)/mimetypes/virtualbox-$(f).png)) + +@@ -210,7 +210,6 @@ + $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \ + $(if $(VBOX_WITH_NETADP),VBoxNetAdpCtl,) \ + VBoxNetDHCP \ +- $(if $(VBOX_WITH_EXTPACK),VBoxExtPackHelperApp,) \ + VBoxSVC \ + $(if $(VBOX_WITH_CROGL),VBoxTestOGL,) \ + VBoxXPCOMIPCD \ +--- VirtualBox-4.1.18.orig/src/VBox/Runtime/Makefile.kmk 2012-07-25 00:40:58.745522450 -0300 ++++ VirtualBox-4.1.18/src/VBox/Runtime/Makefile.kmk 2012-07-25 00:40:58.782186960 -0300 +@@ -53,15 +53,6 @@ + # + LIBRARIES += RuntimeR3 RuntimeBldProg + +-else ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- # +- # Build docs only - need just regular R3 runtime. +- # +- LIBRARIES += RuntimeBldProg +- LIBRARIES.solaris += RuntimeR0Stub +- LIBRARIES.win += RuntimeR0Stub RuntimeRCStub +- include $(PATH_SUB_CURRENT)/tools/Makefile.kmk +- + else # !VBOX_ONLY_ADDITIONS && !VBOX_ONLY_TESTSUITE && !VBOX_ONLY_DOCS + + # diff --git a/libre/virtualbox-modules/linux34.patch b/libre/virtualbox-libre-modules/linux34.patch index 05ec78557..05ec78557 100644 --- a/libre/virtualbox-modules/linux34.patch +++ b/libre/virtualbox-libre-modules/linux34.patch diff --git a/libre/virtualbox-libre-modules/os_blag.png b/libre/virtualbox-libre-modules/os_blag.png Binary files differnew file mode 100644 index 000000000..61995ca10 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_blag.png diff --git a/libre/virtualbox-libre-modules/os_blag_64.png b/libre/virtualbox-libre-modules/os_blag_64.png Binary files differnew file mode 100644 index 000000000..aa4463a97 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_blag_64.png diff --git a/libre/virtualbox-libre-modules/os_dragora.png b/libre/virtualbox-libre-modules/os_dragora.png Binary files differnew file mode 100644 index 000000000..d1df45880 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_dragora.png diff --git a/libre/virtualbox-libre-modules/os_dragora_64.png b/libre/virtualbox-libre-modules/os_dragora_64.png Binary files differnew file mode 100644 index 000000000..64bcecf20 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_dragora_64.png diff --git a/libre/virtualbox-libre-modules/os_dynebolic.png b/libre/virtualbox-libre-modules/os_dynebolic.png Binary files differnew file mode 100644 index 000000000..67b07d4c0 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_dynebolic.png diff --git a/libre/virtualbox-libre-modules/os_gnewsense.png b/libre/virtualbox-libre-modules/os_gnewsense.png Binary files differnew file mode 100644 index 000000000..76d9e38b3 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnewsense.png diff --git a/libre/virtualbox-libre-modules/os_gnewsense_64.png b/libre/virtualbox-libre-modules/os_gnewsense_64.png Binary files differnew file mode 100644 index 000000000..8859c34e8 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnewsense_64.png diff --git a/libre/virtualbox-libre-modules/os_gnu.png b/libre/virtualbox-libre-modules/os_gnu.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnu.png diff --git a/libre/virtualbox-libre-modules/os_gnu_64.png b/libre/virtualbox-libre-modules/os_gnu_64.png Binary files differnew file mode 100644 index 000000000..4161634e9 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnu_64.png diff --git a/libre/virtualbox-libre-modules/os_gnuhurd.png b/libre/virtualbox-libre-modules/os_gnuhurd.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnuhurd.png diff --git a/libre/virtualbox-libre-modules/os_gnulinux.png b/libre/virtualbox-libre-modules/os_gnulinux.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnulinux.png diff --git a/libre/virtualbox-libre-modules/os_gnulinux_64.png b/libre/virtualbox-libre-modules/os_gnulinux_64.png Binary files differnew file mode 100644 index 000000000..4161634e9 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_gnulinux_64.png diff --git a/libre/virtualbox-libre-modules/os_musix.png b/libre/virtualbox-libre-modules/os_musix.png Binary files differnew file mode 100644 index 000000000..fb7b94577 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_musix.png diff --git a/libre/virtualbox-libre-modules/os_musix_64.png b/libre/virtualbox-libre-modules/os_musix_64.png Binary files differnew file mode 100644 index 000000000..a1bbbbf3a --- /dev/null +++ b/libre/virtualbox-libre-modules/os_musix_64.png diff --git a/libre/virtualbox-libre-modules/os_os64base.png b/libre/virtualbox-libre-modules/os_os64base.png Binary files differnew file mode 100644 index 000000000..7aec20314 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_os64base.png diff --git a/libre/virtualbox-libre-modules/os_os64base.xcf b/libre/virtualbox-libre-modules/os_os64base.xcf Binary files differnew file mode 100644 index 000000000..d8e28e35e --- /dev/null +++ b/libre/virtualbox-libre-modules/os_os64base.xcf diff --git a/libre/virtualbox-libre-modules/os_osbase.png b/libre/virtualbox-libre-modules/os_osbase.png Binary files differnew file mode 100644 index 000000000..00f197fca --- /dev/null +++ b/libre/virtualbox-libre-modules/os_osbase.png diff --git a/libre/virtualbox-libre-modules/os_osbase.xcf b/libre/virtualbox-libre-modules/os_osbase.xcf Binary files differnew file mode 100644 index 000000000..c4463c857 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_osbase.xcf diff --git a/libre/virtualbox-libre-modules/os_parabola.png b/libre/virtualbox-libre-modules/os_parabola.png Binary files differnew file mode 100644 index 000000000..757abc484 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_parabola.png diff --git a/libre/virtualbox-libre-modules/os_parabola_64.png b/libre/virtualbox-libre-modules/os_parabola_64.png Binary files differnew file mode 100644 index 000000000..5ac7c2767 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_parabola_64.png diff --git a/libre/virtualbox-libre-modules/os_trisquel.png b/libre/virtualbox-libre-modules/os_trisquel.png Binary files differnew file mode 100644 index 000000000..c6f0d3d7a --- /dev/null +++ b/libre/virtualbox-libre-modules/os_trisquel.png diff --git a/libre/virtualbox-libre-modules/os_trisquel_64.png b/libre/virtualbox-libre-modules/os_trisquel_64.png Binary files differnew file mode 100644 index 000000000..ebca3dd43 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_trisquel_64.png diff --git a/libre/virtualbox-libre-modules/os_ututo.png b/libre/virtualbox-libre-modules/os_ututo.png Binary files differnew file mode 100644 index 000000000..e1dffb575 --- /dev/null +++ b/libre/virtualbox-libre-modules/os_ututo.png diff --git a/libre/virtualbox-libre-modules/os_ututo_64.png b/libre/virtualbox-libre-modules/os_ututo_64.png Binary files differnew file mode 100644 index 000000000..158468e0a --- /dev/null +++ b/libre/virtualbox-libre-modules/os_ututo_64.png diff --git a/libre/virtualbox-libre-modules/os_venenux.png b/libre/virtualbox-libre-modules/os_venenux.png Binary files differnew file mode 100644 index 000000000..5e0c1585d --- /dev/null +++ b/libre/virtualbox-libre-modules/os_venenux.png diff --git a/libre/virtualbox-modules/virtualbox-modules.install b/libre/virtualbox-libre-modules/virtualbox-libre-modules.install index b178686e2..3f2a12a3f 100644 --- a/libre/virtualbox-modules/virtualbox-modules.install +++ b/libre/virtualbox-libre-modules/virtualbox-libre-modules.install @@ -3,17 +3,17 @@ post_install() { ===> You must load vboxdrv module before starting VirtualBox: ===> # modprobe vboxdrv EOF - EXTRAMODULES='extramodules-3.4-LIBRE' + EXTRAMODULES='extramodules-3.5-LIBRE' depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_upgrade() { - EXTRAMODULES='extramodules-3.4-LIBRE' + EXTRAMODULES='extramodules-3.5-LIBRE' depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) echo 'In order to use the new version, reload all virtualbox modules manually.' } post_remove() { - EXTRAMODULES='extramodules-3.4-LIBRE' + EXTRAMODULES='extramodules-3.5-LIBRE' depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } diff --git a/libre/virtualbox-modules/virtualbox-parabola-modules.install b/libre/virtualbox-libre-modules/virtualbox-libre-parabola-modules.install index 31575fb9d..c3419c991 100644 --- a/libre/virtualbox-modules/virtualbox-parabola-modules.install +++ b/libre/virtualbox-libre-modules/virtualbox-libre-parabola-modules.install @@ -2,16 +2,16 @@ post_install() { cat << EOF ===> You may want to load vboxguest, vboxsf and vboxvideo EOF - EXTRAMODULES='extramodules-3.4-LIBRE' + EXTRAMODULES='extramodules-3.5-LIBRE' depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_upgrade() { - EXTRAMODULES='extramodules-3.4-LIBRE' + EXTRAMODULES='extramodules-3.5-LIBRE' depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_remove() { - EXTRAMODULES='extramodules-3.4-LIBRE' + EXTRAMODULES='extramodules-3.5-LIBRE' depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } diff --git a/libre/virtualbox-libre/.directory b/libre/virtualbox-libre/.directory new file mode 100644 index 000000000..0de6ba6b0 --- /dev/null +++ b/libre/virtualbox-libre/.directory @@ -0,0 +1,3 @@ +[Dolphin] +Timestamp=2012,7,26,5,49,47 +ViewMode=2 diff --git a/libre/virtualbox-libre/PKGBUILD b/libre/virtualbox-libre/PKGBUILD index 942aa5d1c..84761ac24 100644 --- a/libre/virtualbox-libre/PKGBUILD +++ b/libre/virtualbox-libre/PKGBUILD @@ -1,18 +1,17 @@ # $Id$ # Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar> # Maintainer (Parabola): Jorge López <jorginho@lavabit.com> -# Contributor (Parabola): André Silva <emulatorman@lavabit.com> -# Changes: -# * Adapt to linux-libre -# * virtualbox-{archlinux,parabola}-* -# * Removed unfree user manual -# * Package with --pkg "virtualbox-parabola-additions virtualbox-parabola-modules" -# Based on -#Maintainer: Ionut Biru <ibiru@archlinux.org> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> +# Maintainer: Ionut Biru <ibiru@archlinux.org> pkgbase=virtualbox-libre -pkgname=('virtualbox-libre' 'virtualbox-parabola-additions' 'virtualbox-sdk' 'virtualbox-source') +pkgname=('virtualbox-libre' + 'virtualbox-libre-parabola-additions' + 'virtualbox-libre-sdk' + 'virtualbox-libre-source' + 'virtualbox-libre-parabola-source') pkgver=4.1.18 -pkgrel=2 +pkgrel=4.1 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL' 'custom') @@ -21,11 +20,16 @@ makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libxcursor #'xorg-server-devel' 'xf86driproto' 'libxcomposite') [[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc') source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2 - 10-vboxdrv.rules vboxdrv-reference.patch LocalConfig.kmk vboxbuild - change_default_driver_dir.patch vbox-service.conf vbox-service.rc - vboxweb.conf vboxweb.rc) - -_extramodules=extramodules-3.4-LIBRE + 10-vboxdrv.rules vboxdrv-reference.patch LocalConfig.kmk ipv6_vnc.patch + change_default_driver_dir.patch vboxservice.conf vboxservice.rc vboxservice.service + vboxweb.conf vboxweb.rc vboxweb.service os_blag_64.png os_blag.png + os_dragora_64.png os_dragora.png os_dynebolic.png os_gnewsense_64.png os_gnewsense.png + os_gnu_64.png os_gnuhurd.png os_gnulinux_64.png os_gnulinux.png os_gnu.png + os_musix_64.png os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png + os_trisquel.png os_ututo_64.png os_ututo.png os_venenux.png libre.patch + free-distros.patch) + +_extramodules=extramodules-3.5-LIBRE _kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true build() { @@ -33,6 +37,29 @@ build() { patch -Np1 -i "$srcdir/vboxdrv-reference.patch" patch -Np1 -i "$srcdir/change_default_driver_dir.patch" + patch -Np1 -i "$srcdir/libre.patch" + patch -Np1 -i "$srcdir/free-distros.patch" + # FS#30401 + patch -Np2 -i "$srcdir/ipv6_vnc.patch" + + ## Removing Nonfree directories + rm -rv "./include/VBox/ExtPack" + rm -rv "./src/VBox/ExtPacks" + rm -rv "./src/VBox/Main/src-helper-apps" + + ## Removing Oracle VM VirtualBox Extension Pack icons + rm -v "./src/VBox/Resources/darwin/virtualbox-vbox-extpack.icns" + rm -v "./src/VBox/Resources/other/virtualbox-vbox-extpack-"{16px,20px,24px,32px,40px,48px,64px,72px,80px,96px,128px,256px,512px}.png + rm -v "./src/VBox/Resources/win/OSE/virtualbox-vbox-extpack.ico" + rm -v "./src/VBox/Frontends/VirtualBox/images/extension_pack_"{16px,32px,disabled{_16px,_32px},install{_16px,_32px},install_disabled{_16px,_32px},uninstall{_16px,_32px},uninstall_disabled{_16px,_32px}}.png + + ## Adding free distros icons + for i in {gnuhurd,dynebolic,venenux,{gnu{,linux},parabola,gnewsense,blag,dragora,ututo,musix,trisquel}{,_64}}; do + cp -v "$srcdir/os_${i}.png" "./src/VBox/Frontends/VirtualBox/images" + done + + ## Removing non-free OS icons + rm -v "./src/VBox/Frontends/VirtualBox/images/os_"{{{arch,turbo}linux,debian,fedora,gentoo,linux{24,26},macosx,mandriva,{free,net,open}bsd,redhat,solaris,opensuse,oracle{,solaris},ubuntu,win{2k{3,8},7,8,vista,xp},xandros}{,_64},dos,jrockitve,l4,linux{,22,_other},netware,qnx,os2{_other,ecs,warp{3,4,45}},win{2k,31,95,98,_other,me,nt4}}.png cp "$srcdir/LocalConfig.kmk" . @@ -48,24 +75,24 @@ build() { } package_virtualbox-libre() { - pkgdesc="Powerful x86 virtualization for enterprise as well as home use" - depends=('virtualbox-modules' 'libxml2' 'libxcursor' 'libxinerama' 'sdl' 'libxmu' 'curl' 'libvncserver' 'libpng') + pkgdesc="Powerful x86 virtualization for enterprise as well as home use (without Oracle VM VirtualBox Extension Pack and non-free OS options support)" + depends=('virtualbox-libre-modules' 'libxml2' 'libxcursor' 'libxinerama' 'sdl' 'libxmu' 'curl' 'libvncserver' 'libpng') optdepends=('qt: for VirtualBox GUI' 'vde2: Virtual Distributed Ethernet support' - 'virtualbox-sdk: developer kit' - 'virtualbox-source: host kernel source modules for non-stock kernels' + 'virtualbox-libre-sdk: developer kit' + 'virtualbox-libre-source: host kernel source modules for non-stock kernels' 'net-tools: for host-only or bridged networking') backup=('etc/vbox/vbox.cfg') replaces=('virtualbox' 'virtualbox-ose') conflicts=('virtualbox' 'virtualbox-ose') provides=("virtualbox=$pkgver") - install=virtualbox.install + install=virtualbox-libre.install source "$srcdir/VirtualBox-${pkgver}/env.sh" cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" - mkdir -p "$pkgdir"/usr/{bin,lib/virtualbox/components,lib/virtualbox/ExtensionPacks,share/virtualbox/nls} + install -dm755 "$pkgdir"/usr/{bin,lib/virtualbox/components,share/virtualbox/nls} #Binaries and Wrapper with Launchers @@ -86,7 +113,7 @@ package_virtualbox-libre() { #setuid root binaries install -m 4755 VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl -t "$pkgdir/usr/lib/virtualbox" #other binaries - install -m 0755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL VBoxBalloonCtrl vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox" + install -m 0755 VBoxManage VBoxSVC VBoxXPCOMIPCD VBoxTestOGL VBoxBalloonCtrl vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox" #language install -m 0755 nls/*.qm -t "$pkgdir/usr/share/virtualbox/nls" @@ -120,35 +147,38 @@ package_virtualbox-libre() { # install rc.d script install -D -m755 "$srcdir/vboxweb.rc" "$pkgdir/etc/rc.d/vboxweb" + # install systemd service + install -D -m644 "$srcdir/vboxweb.service" \ + "$pkgdir/usr/lib/systemd/system/vboxweb.service" # install sample config install -D -m644 "$srcdir/vboxweb.conf" "$pkgdir/etc/conf.d/vboxweb" } -package_virtualbox-source() { +package_virtualbox-libre-source() { pkgdesc="VirtualBox kernel modules source" - depends=(gcc make) - provides=(virtualbox-modules) + depends=(dkms gcc make) + replaces=('virtualbox-source' 'virtualbox-libre-modules') + conflicts=('virtualbox-source') + provides=("virtualbox-source=$pkgver" "virtualbox-libre-modules=$pkgver") optdepends=('linux-libre-headers' 'linux-libre-lts-headers') - install=virtualbox-source.install + install=virtualbox-libre-source.install + install -dm755 "$pkgdir/var/lib/dkms/vboxhost/$pkgver" source "$srcdir/VirtualBox-${pkgver}/env.sh" - mkdir -p $pkgdir/usr/lib/virtualbox - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" - - #sources for modules - cp -r src ${pkgdir}/usr/lib/virtualbox - #install compilation script - install -D -m 755 "${srcdir}/vboxbuild" "${pkgdir}/usr/bin/vboxbuild" + cp -r src "$pkgdir/var/lib/dkms/vboxhost/$pkgver/source" } -package_virtualbox-sdk() { +package_virtualbox-libre-sdk() { pkgdesc="VirtualBox Software Developer Kit (SDK)" depends=('python2') + replaces=('virtualbox-sdk') + conflicts=('virtualbox-sdk') + provides=("virtualbox-sdk=$pkgver") - mkdir -p "$pkgdir/usr/lib/virtualbox" + install -dm755 "$pkgdir/usr/lib/virtualbox" source "$srcdir/VirtualBox-${pkgver}/env.sh" cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" @@ -162,12 +192,14 @@ package_virtualbox-sdk() { mv sdk "$pkgdir/usr/lib/virtualbox" } -package_virtualbox-parabola-additions(){ +package_virtualbox-libre-parabola-additions(){ pkgdesc="Additions only for Parabola guests (userspace tools)" - depends=("virtualbox-parabola-modules=$pkgver" 'gcc-libs' 'libxmu' 'xorg-xrandr' 'libxfixes') + depends=('virtualbox-libre-parabola-modules' 'gcc-libs' 'libxmu' 'xorg-xrandr' 'libxfixes') replaces=('virtualbox-guest-additions' 'virtualbox-archlinux-additions') conflicts=('virtualbox-guest-additions' 'virtualbox-archlinux-additions') provides=("virtualbox-archlinux-additions=${pkgver}") + backup=('etc/conf.d/vboxservice') + install=virtualbox-libre-parabola-additions.install source "$srcdir/VirtualBox-${pkgver}/env.sh" @@ -189,18 +221,64 @@ package_virtualbox-parabola-additions(){ install -m755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so" # install rc.d script - install -D -m755 "$srcdir/vbox-service.rc" "$pkgdir/etc/rc.d/vbox-service" + install -D -m755 "$srcdir/vboxservice.rc" "$pkgdir/etc/rc.d/vboxservice" # install sample config - install -D -m644 "$srcdir/vbox-service.conf" "$pkgdir/etc/conf.d/vbox-service" + install -D -m644 "$srcdir/vboxservice.conf" "$pkgdir/etc/conf.d/vboxservice" + + # install systemd service file + install -D -m644 "$srcdir/vboxservice.service" \ + "$pkgdir/usr/lib/systemd/system/vboxservice.service" +} + +package_virtualbox-libre-parabola-source() { + pkgdesc='VirtualBox Additions kernel modules source' + depends=(dkms gcc make) + replaces=('virtualbox-archlinux-source' 'virtualbox-libre-parabola-modules') + conflicts=('virtualbox-archlinux-source') + provides=("virtualbox-archlinux-source=${pkgver}" "virtualbox-archlinux-modules=${pkgver}" "virtualbox-libre-parabola-modules=${pkgver}") + optdepends=('linux-libre-headers' + 'linux-libre-lts-headers') + install=virtualbox-libre-parabola-source.install + + install -dm755 "$pkgdir/var/lib/dkms/vboxguest/$pkgver" + source "$srcdir/VirtualBox-${pkgver}/env.sh" + cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" + cp -r src "$pkgdir/var/lib/dkms/vboxguest/$pkgver/source" } + md5sums=('38db0a87cba659b484af868b0c2bd3ac' '5f85710e0b8606de967716ded7b2d351' '755ab0dd9bcacf2c00d2275b1ca69547' 'a1ff1d1b4423556887e48a32978226a6' - '248078ab922f27424ba9919d4aa90dcc' + '4ff559f2bea335d59c4012048983ca91' '97e193f050574dd272a38e5ee5ebe62b' '3c08ad30b89add47d3f45121200a5360' - '208cf5f842eb2e3a5b6dcfc59080d26c' + '7d9823507206de9b8528a72af2f18d74' + '07c5f6d86c4b7839d719c8ee0c53653b' '3ac185709bfe688bb753c46e170d0546' - 'c159d683ba1947290fc2ad2c64194150') + 'c159d683ba1947290fc2ad2c64194150' + 'bc9efed88e0469cd7fc460d5a5cd7b4b' + '8538dba8686d7449cb481c9bae9d722a' + '545c925b46f2ac95e5f8ae407fad101a' + 'f6416f509c2e5460e4dc624e0a57f3c1' + 'bbfb59dd517c020a23701b480187a355' + 'efacfdb61918286ea9bc89866b8fd239' + '7c3eb09995e8bafeef414374e44ad4ce' + 'a49ed3ab6bd0fb084de0ab3dd97ae93e' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + 'a70022a468bd3e9daf01818d2d74ac3c' + '380eb2ab6cad3da198094585853c129c' + 'a60bb9a98abcc3c34156f9051d00df9a' + '3a908ef6952bcf987e63ef2fe4e98d24' + '02e87c39c353634cecacf98f1707fa15' + '0cf41a41e7a415d404d5584e047fd450' + '449cde3b58390284b59c5d663de3edc9' + 'c7951fe6888d939f3a7d0dafe477e82b' + '4da8eeb2ece7e475fc7a0d1003da26c6' + '5e4187af59726d71c5be48d0cd816c34' + 'a9e4724b56ddf99bb2e9a8fab8ad43ba' + 'f7d275fc52e5f3cfafd85646c2914063') diff --git a/libre/virtualbox-libre/free-distros.patch b/libre/virtualbox-libre/free-distros.patch new file mode 100644 index 000000000..7920fb6ab --- /dev/null +++ b/libre/virtualbox-libre/free-distros.patch @@ -0,0 +1,1383 @@ +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp 2012-07-25 14:51:03.569003667 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp 2012-07-25 14:51:03.652333615 -0300 +@@ -44,94 +44,38 @@ + * first matching string found, will be used. */ + static const osTypePattern gs_OSTypePattern[] = + { +- { QRegExp("DOS", Qt::CaseInsensitive), "DOS" }, + +- /* Windows */ +- { QRegExp("Wi.*98", Qt::CaseInsensitive), "Windows98" }, +- { QRegExp("Wi.*95", Qt::CaseInsensitive), "Windows95" }, +- { QRegExp("Wi.*Me", Qt::CaseInsensitive), "WindowsMe" }, +- { QRegExp("(Wi.*NT)|(NT4)", Qt::CaseInsensitive), "WindowsNT4" }, +- { QRegExp("((Wi.*XP)|(\\bXP\\b)).*64", Qt::CaseInsensitive), "WindowsXP_64" }, +- { QRegExp("(Wi.*XP)|(\\bXP\\b)", Qt::CaseInsensitive), "WindowsXP" }, +- { QRegExp("((Wi.*2003)|(W2K3)).*64", Qt::CaseInsensitive), "Windows2003_64" }, +- { QRegExp("(Wi.*2003)|(W2K3)", Qt::CaseInsensitive), "Windows2003" }, +- { QRegExp("((Wi.*V)|(Vista)).*64", Qt::CaseInsensitive), "WindowsVista_64" }, +- { QRegExp("(Wi.*V)|(Vista)", Qt::CaseInsensitive), "WindowsVista" }, +- { QRegExp("((Wi.*2008)|(W2K8)).*64", Qt::CaseInsensitive), "Windows2008_64" }, +- { QRegExp("(Wi.*2008)|(W2K8)", Qt::CaseInsensitive), "Windows2008" }, +- { QRegExp("(Wi.*2000)|(W2K)", Qt::CaseInsensitive), "Windows2000" }, +- { QRegExp("(Wi.*7.*64)|(W7.*64)", Qt::CaseInsensitive), "Windows7_64" }, +- { QRegExp("(Wi.*7)|(W7)", Qt::CaseInsensitive), "Windows7" }, +- { QRegExp("(Wi.*8.*64)|(W8.*64)", Qt::CaseInsensitive), "Windows8_64" }, +- { QRegExp("(Wi.*8)|(W8)", Qt::CaseInsensitive), "Windows8" }, +- { QRegExp("Wi.*3", Qt::CaseInsensitive), "Windows31" }, +- { QRegExp("Wi", Qt::CaseInsensitive), "WindowsXP" }, +- +- /* Solaris */ +- { QRegExp("((Op.*So)|(os20[01][0-9])|(So.*1[01])|(India)|(Neva)).*64", Qt::CaseInsensitive), "OpenSolaris_64" }, +- { QRegExp("(Op.*So)|(os20[01][0-9])|(So.*1[01])|(India)|(Neva)", Qt::CaseInsensitive), "OpenSolaris" }, +- { QRegExp("So.*64", Qt::CaseInsensitive), "Solaris_64" }, +- { QRegExp("So", Qt::CaseInsensitive), "Solaris" }, +- +- /* OS/2 */ +- { QRegExp("OS[/|!-]{,1}2.*W.*4.?5", Qt::CaseInsensitive), "OS2Warp45" }, +- { QRegExp("OS[/|!-]{,1}2.*W.*4", Qt::CaseInsensitive), "OS2Warp4" }, +- { QRegExp("OS[/|!-]{,1}2.*W", Qt::CaseInsensitive), "OS2Warp3" }, +- { QRegExp("(OS[/|!-]{,1}2.*e)|(eCS.*)", Qt::CaseInsensitive), "OS2eCS" }, +- { QRegExp("OS[/|!-]{,1}2", Qt::CaseInsensitive), "OS2" }, +- +- /* Code names for Linux distributions */ +- { QRegExp("((edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)).*64", Qt::CaseInsensitive), "Ubuntu_64" }, +- { QRegExp("(edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)", Qt::CaseInsensitive), "Ubuntu" }, +- { QRegExp("((sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)).*64", Qt::CaseInsensitive), "Debian_64" }, +- { QRegExp("(sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)", Qt::CaseInsensitive), "Debian" }, +- { QRegExp("((moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)).*64", Qt::CaseInsensitive), "Fedora_64" }, +- { QRegExp("(moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)", Qt::CaseInsensitive), "Fedora" }, +- +- /* Regular names of Linux distributions */ +- { QRegExp("Arc.*64", Qt::CaseInsensitive), "ArchLinux_64" }, +- { QRegExp("Arc", Qt::CaseInsensitive), "ArchLinux" }, +- { QRegExp("Deb.*64", Qt::CaseInsensitive), "Debian_64" }, +- { QRegExp("Deb", Qt::CaseInsensitive), "Debian" }, +- { QRegExp("((SU)|(Nov)|(SLE)).*64", Qt::CaseInsensitive), "OpenSUSE_64" }, +- { QRegExp("(SU)|(Nov)|(SLE)", Qt::CaseInsensitive), "OpenSUSE" }, +- { QRegExp("Fe.*64", Qt::CaseInsensitive), "Fedora_64" }, +- { QRegExp("Fe", Qt::CaseInsensitive), "Fedora" }, +- { QRegExp("((Gen)|(Sab)).*64", Qt::CaseInsensitive), "Gentoo_64" }, +- { QRegExp("(Gen)|(Sab)", Qt::CaseInsensitive), "Gentoo" }, +- { QRegExp("Man.*64", Qt::CaseInsensitive), "Mandriva_64" }, +- { QRegExp("Man", Qt::CaseInsensitive), "Mandriva" }, +- { QRegExp("((Red)|(rhel)|(cen)).*64", Qt::CaseInsensitive), "RedHat_64" }, +- { QRegExp("(Red)|(rhel)|(cen)", Qt::CaseInsensitive), "RedHat" }, +- { QRegExp("Tur.*64", Qt::CaseInsensitive), "Turbolinux_64" }, +- { QRegExp("Tur", Qt::CaseInsensitive), "Turbolinux" }, +- { QRegExp("Ub.*64", Qt::CaseInsensitive), "Ubuntu_64" }, +- { QRegExp("Ub", Qt::CaseInsensitive), "Ubuntu" }, +- { QRegExp("Xa.*64", Qt::CaseInsensitive), "Xandros_64" }, +- { QRegExp("Xa", Qt::CaseInsensitive), "Xandros" }, +- { QRegExp("((Or)|(oel)).*64", Qt::CaseInsensitive), "Oracle_64" }, +- { QRegExp("(Or)|(oel)", Qt::CaseInsensitive), "Oracle" }, +- { QRegExp("((Li)|(lnx)).*2.?2", Qt::CaseInsensitive), "Linux22" }, +- { QRegExp("((Li)|(lnx)).*2.?4.*64", Qt::CaseInsensitive), "Linux24_64" }, +- { QRegExp("((Li)|(lnx)).*2.?4", Qt::CaseInsensitive), "Linux24" }, +- { QRegExp("((((Li)|(lnx)).*2.?6)|(LFS)).*64", Qt::CaseInsensitive), "Linux26_64" }, +- { QRegExp("(((Li)|(lnx)).*2.?6)|(LFS)", Qt::CaseInsensitive), "Linux26" }, +- { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "Linux26_64" }, +- { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "Linux26" }, ++ /* Code names for GNU/Linux distributions */ ++ { QRegExp("((Taranis)|(Dagda)|(Brigantia)).*64", Qt::CaseInsensitive), "Trisquel_64" }, ++ { QRegExp("(Taranis)|(Dagda)|(Brigantia)", Qt::CaseInsensitive), "Trisquel" }, ++ { QRegExp("((metad)|(parkes)|(three)).*64", Qt::CaseInsensitive), "gNewSense_64" }, ++ { QRegExp("(deltah)|(metad)|(parkes)|(three)", Qt::CaseInsensitive), "gNewSense" }, ++ { QRegExp("((90k)|(119k)|(140k)|(160k)|(90000)|(119000)|(140000)|(160000)|(Spartakus)).*64", Qt::CaseInsensitive), "Blag_64" }, ++ { QRegExp("(90k)|(119k)|(140k)|(160k)|(90000)|(119000)|(140000)|(160000)|(Spartakus)", Qt::CaseInsensitive), "Blag" }, ++ ++ /* Regular names of GNU/Linux distributions and GNU-Hurd */ ++ { QRegExp("Pa.*64", Qt::CaseInsensitive), "Parabola_64" }, ++ { QRegExp("Pa", Qt::CaseInsensitive), "Parabola" }, ++ { QRegExp("((gNe)|(new)|(Sen)).*64", Qt::CaseInsensitive), "gNewSense_64" }, ++ { QRegExp("(gNe)|(new)|(Sen)", Qt::CaseInsensitive), "gNewSense" }, ++ { QRegExp("Bla.*64", Qt::CaseInsensitive), "Blag_64" }, ++ { QRegExp("Bla", Qt::CaseInsensitive), "Blag" }, ++ { QRegExp("Dra.*64", Qt::CaseInsensitive), "Dragora_64" }, ++ { QRegExp("Dra", Qt::CaseInsensitive), "Dragora" }, ++ { QRegExp("((Utu)|(XS)).*64", Qt::CaseInsensitive), "Ututo_64" }, ++ { QRegExp("(Utu)|(XS)", Qt::CaseInsensitive), "Ututo" }, ++ { QRegExp("Mus.*64", Qt::CaseInsensitive), "Musix_64" }, ++ { QRegExp("Mus", Qt::CaseInsensitive), "Musix" }, ++ { QRegExp("Tri.*64", Qt::CaseInsensitive), "Trisquel_64" }, ++ { QRegExp("Tri", Qt::CaseInsensitive), "Trisquel" }, ++ { QRegExp("Dyn", Qt::CaseInsensitive), "Dynebolic" }, ++ { QRegExp("Ven", Qt::CaseInsensitive), "Venenux" }, ++ { QRegExp("GNU", Qt::CaseInsensitive), "GNU" }, ++ { QRegExp("Hu", Qt::CaseInsensitive), "GNUHurd" }, ++ { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "GNULinux_64" }, ++ { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "GNULinux" }, + + /* Other */ +- { QRegExp("L4", Qt::CaseInsensitive), "L4" }, +- { QRegExp("((Fr.*B)|(fbsd)).*64", Qt::CaseInsensitive), "FreeBSD_64" }, +- { QRegExp("(Fr.*B)|(fbsd)", Qt::CaseInsensitive), "FreeBSD" }, +- { QRegExp("Op.*B.*64", Qt::CaseInsensitive), "OpenBSD_64" }, +- { QRegExp("Op.*B", Qt::CaseInsensitive), "OpenBSD" }, +- { QRegExp("Ne.*B.*64", Qt::CaseInsensitive), "NetBSD_64" }, +- { QRegExp("Ne.*B", Qt::CaseInsensitive), "NetBSD" }, +- { QRegExp("QN", Qt::CaseInsensitive), "QNX" }, +- { QRegExp("((Mac)|(Tig)|(Leop)|(osx)).*64", Qt::CaseInsensitive), "MacOS_64" }, +- { QRegExp("(Mac)|(Tig)|(Leop)|(osx)", Qt::CaseInsensitive), "MacOS" }, +- { QRegExp("Net", Qt::CaseInsensitive), "Netware" }, +- { QRegExp("Rocki", Qt::CaseInsensitive), "JRockitVE" }, + { QRegExp("Ot", Qt::CaseInsensitive), "Other" }, + }; + +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/Settings.cpp 2012-07-25 15:14:50.498764160 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/Settings.cpp 2012-07-25 15:14:50.548761649 -0300 +@@ -3227,40 +3227,18 @@ + } aConvertOSTypes[] = + { + { "unknown", "Other" }, +- { "dos", "DOS" }, +- { "win31", "Windows31" }, +- { "win95", "Windows95" }, +- { "win98", "Windows98" }, +- { "winme", "WindowsMe" }, +- { "winnt4", "WindowsNT4" }, +- { "win2k", "Windows2000" }, +- { "winxp", "WindowsXP" }, +- { "win2k3", "Windows2003" }, +- { "winvista", "WindowsVista" }, +- { "win2k8", "Windows2008" }, +- { "os2warp3", "OS2Warp3" }, +- { "os2warp4", "OS2Warp4" }, +- { "os2warp45", "OS2Warp45" }, +- { "ecs", "OS2eCS" }, +- { "linux22", "Linux22" }, +- { "linux24", "Linux24" }, +- { "linux26", "Linux26" }, +- { "archlinux", "ArchLinux" }, +- { "debian", "Debian" }, +- { "opensuse", "OpenSUSE" }, +- { "fedoracore", "Fedora" }, +- { "gentoo", "Gentoo" }, +- { "mandriva", "Mandriva" }, +- { "redhat", "RedHat" }, +- { "ubuntu", "Ubuntu" }, +- { "xandros", "Xandros" }, +- { "freebsd", "FreeBSD" }, +- { "openbsd", "OpenBSD" }, +- { "netbsd", "NetBSD" }, +- { "netware", "Netware" }, +- { "solaris", "Solaris" }, +- { "opensolaris", "OpenSolaris" }, +- { "l4", "L4" } ++ { "gnu", "GNU" }, ++ { "gnuhurd", "GNUHurd" }, ++ { "gnulinux", "GNULinux" }, ++ { "parabola", "Parabola" }, ++ { "gnewsense", "gNewSense" }, ++ { "blag", "Blag" }, ++ { "dragora", "Dragora" }, ++ { "ututo", "Ututo" }, ++ { "musix", "Musix" }, ++ { "trisquel", "Trisquel" }, ++ { "dynebolic", "Dynebolic" }, ++ { "venenux", "Venenux" }, + }; + + void MachineConfigFile::convertOldOSType_pre1_5(Utf8Str &str) +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/SettingsConverter.xsl 2012-07-25 15:21:04.553581275 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/SettingsConverter.xsl 2012-07-25 15:21:04.593579427 -0300 +@@ -729,40 +729,18 @@ + <xsl:attribute name="OSType"> + <xsl:choose> + <xsl:when test="@OSType='unknown'">Other</xsl:when> +- <xsl:when test="@OSType='dos'">DOS</xsl:when> +- <xsl:when test="@OSType='win31'">Windows31</xsl:when> +- <xsl:when test="@OSType='win95'">Windows95</xsl:when> +- <xsl:when test="@OSType='win98'">Windows98</xsl:when> +- <xsl:when test="@OSType='winme'">WindowsMe</xsl:when> +- <xsl:when test="@OSType='winnt4'">WindowsNT4</xsl:when> +- <xsl:when test="@OSType='win2k'">Windows2000</xsl:when> +- <xsl:when test="@OSType='winxp'">WindowsXP</xsl:when> +- <xsl:when test="@OSType='win2k3'">Windows2003</xsl:when> +- <xsl:when test="@OSType='winvista'">WindowsVista</xsl:when> +- <xsl:when test="@OSType='win2k8'">Windows2008</xsl:when> +- <xsl:when test="@OSType='os2warp3'">OS2Warp3</xsl:when> +- <xsl:when test="@OSType='os2warp4'">OS2Warp4</xsl:when> +- <xsl:when test="@OSType='os2warp45'">OS2Warp45</xsl:when> +- <xsl:when test="@OSType='ecs'">OS2eCS</xsl:when> +- <xsl:when test="@OSType='linux22'">Linux22</xsl:when> +- <xsl:when test="@OSType='linux24'">Linux24</xsl:when> +- <xsl:when test="@OSType='linux26'">Linux26</xsl:when> +- <xsl:when test="@OSType='archlinux'">ArchLinux</xsl:when> +- <xsl:when test="@OSType='debian'">Debian</xsl:when> +- <xsl:when test="@OSType='opensuse'">OpenSUSE</xsl:when> +- <xsl:when test="@OSType='fedoracore'">Fedora</xsl:when> +- <xsl:when test="@OSType='gentoo'">Gentoo</xsl:when> +- <xsl:when test="@OSType='mandriva'">Mandriva</xsl:when> +- <xsl:when test="@OSType='redhat'">RedHat</xsl:when> +- <xsl:when test="@OSType='ubuntu'">Ubuntu</xsl:when> +- <xsl:when test="@OSType='xandros'">Xandros</xsl:when> +- <xsl:when test="@OSType='freebsd'">FreeBSD</xsl:when> +- <xsl:when test="@OSType='openbsd'">OpenBSD</xsl:when> +- <xsl:when test="@OSType='netbsd'">NetBSD</xsl:when> +- <xsl:when test="@OSType='netware'">Netware</xsl:when> +- <xsl:when test="@OSType='solaris'">Solaris</xsl:when> +- <xsl:when test="@OSType='opensolaris'">OpenSolaris</xsl:when> +- <xsl:when test="@OSType='l4'">L4</xsl:when> ++ <xsl:when test="@OSType='gnu'">GNU</xsl:when> ++ <xsl:when test="@OSType='gnuhurd'">GNUHurd</xsl:when> ++ <xsl:when test="@OSType='gnulinux'">GNULinux</xsl:when> ++ <xsl:when test="@OSType='parabola'">Parabola</xsl:when> ++ <xsl:when test="@OSType='gnewsense'">gNewSense</xsl:when> ++ <xsl:when test="@OSType='blag'">Blag</xsl:when> ++ <xsl:when test="@OSType='dragora'">Dragora</xsl:when> ++ <xsl:when test="@OSType='ututo'">Ututo</xsl:when> ++ <xsl:when test="@OSType='musix'">Musix</xsl:when> ++ <xsl:when test="@OSType='trisquel'">Trisquel</xsl:when> ++ <xsl:when test="@OSType='dynebolic'">Dynebolic</xsl:when> ++ <xsl:when test="@OSType='venenux'">Venenux</xsl:when> + </xsl:choose> + </xsl:attribute> + <xsl:apply-templates select="@*[name()!='OSType']" mode="v1.5"/> +--- VirtualBox-4.1.18.orig/src/VBox/Main/xml/VirtualBox-settings-common.xsd 2012-07-25 15:04:37.856003691 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/xml/VirtualBox-settings-common.xsd 2012-07-25 15:04:37.892668156 -0300 +@@ -137,75 +137,27 @@ + <xsd:simpleType name="TGuestOSType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="Other"/> +- <xsd:enumeration value="DOS"/> +- <xsd:enumeration value="Netware"/> +- <xsd:enumeration value="L4"/> +- <xsd:enumeration value="Windows31"/> +- <xsd:enumeration value="Windows95"/> +- <xsd:enumeration value="Windows98"/> +- <xsd:enumeration value="WindowsMe"/> +- <xsd:enumeration value="WindowsNT4"/> +- <xsd:enumeration value="Windows2000"/> +- <xsd:enumeration value="WindowsXP"/> +- <xsd:enumeration value="WindowsXP_64"/> +- <xsd:enumeration value="Windows2003"/> +- <xsd:enumeration value="Windows2003_64"/> +- <xsd:enumeration value="WindowsVista"/> +- <xsd:enumeration value="WindowsVista_64"/> +- <xsd:enumeration value="Windows2008"/> +- <xsd:enumeration value="Windows2008_64"/> +- <xsd:enumeration value="Windows7"/> +- <xsd:enumeration value="Windows7_64"/> +- <xsd:enumeration value="Windows8"/> +- <xsd:enumeration value="Windows8_64"/> +- <xsd:enumeration value="WindowsNT"/> +- <xsd:enumeration value="OS2Warp3"/> +- <xsd:enumeration value="OS2Warp4"/> +- <xsd:enumeration value="OS2Warp45"/> +- <xsd:enumeration value="OS2eCS"/> +- <xsd:enumeration value="OS2"/> +- <xsd:enumeration value="Linux22"/> +- <xsd:enumeration value="Linux24"/> +- <xsd:enumeration value="Linux24_64"/> +- <xsd:enumeration value="Linux26"/> +- <xsd:enumeration value="Linux26_64"/> +- <xsd:enumeration value="ArchLinux"/> +- <xsd:enumeration value="ArchLinux_64"/> +- <xsd:enumeration value="Debian"/> +- <xsd:enumeration value="Debian_64"/> +- <xsd:enumeration value="OpenSUSE"/> +- <xsd:enumeration value="OpenSUSE_64"/> +- <xsd:enumeration value="Fedora"/> +- <xsd:enumeration value="Fedora_64"/> +- <xsd:enumeration value="Gentoo"/> +- <xsd:enumeration value="Gentoo_64"/> +- <xsd:enumeration value="Mandriva"/> +- <xsd:enumeration value="Mandriva_64"/> +- <xsd:enumeration value="RedHat"/> +- <xsd:enumeration value="RedHat_64"/> +- <xsd:enumeration value="Turbolinux"/> +- <xsd:enumeration value="Turbolinux_64"/> +- <xsd:enumeration value="Ubuntu"/> +- <xsd:enumeration value="Ubuntu_64"/> +- <xsd:enumeration value="Xandros"/> +- <xsd:enumeration value="Xandros_64"/> +- <xsd:enumeration value="Oracle"/> +- <xsd:enumeration value="Oracle_64"/> +- <xsd:enumeration value="Linux"/> +- <xsd:enumeration value="FreeBSD"/> +- <xsd:enumeration value="FreeBSD_64"/> +- <xsd:enumeration value="OpenBSD"/> +- <xsd:enumeration value="OpenBSD_64"/> +- <xsd:enumeration value="NetBSD"/> +- <xsd:enumeration value="NetBSD_64"/> +- <xsd:enumeration value="Solaris"/> +- <xsd:enumeration value="Solaris_64"/> +- <xsd:enumeration value="OpenSolaris"/> +- <xsd:enumeration value="OpenSolaris_64"/> +- <xsd:enumeration value="QNX"/> +- <xsd:enumeration value="MacOS"/> +- <xsd:enumeration value="MacOS_64"/> +- <xsd:enumeration value="JRockitVE"/> ++ <xsd:enumeration value="GNU"/> ++ <xsd:enumeration value="GNU_64"/> ++ <xsd:enumeration value="GNUHurd"/> ++ <xsd:enumeration value="GNULinux"/> ++ <xsd:enumeration value="GNULinux_64"/> ++ <xsd:enumeration value="Parabola"/> ++ <xsd:enumeration value="Parabola_64"/> ++ <xsd:enumeration value="gNewSense"/> ++ <xsd:enumeration value="gNewSense_64"/> ++ <xsd:enumeration value="Blag"/> ++ <xsd:enumeration value="Blag_64"/> ++ <xsd:enumeration value="Dragora"/> ++ <xsd:enumeration value="Dragora_64"/> ++ <xsd:enumeration value="Ututo"/> ++ <xsd:enumeration value="Ututo_64"/> ++ <xsd:enumeration value="Musix"/> ++ <xsd:enumeration value="Musix_64"/> ++ <xsd:enumeration value="Trisquel"/> ++ <xsd:enumeration value="Trisquel_64"/> ++ <xsd:enumeration value="Dynebolic"/> ++ <xsd:enumeration value="Venenux"/> + </xsd:restriction> + </xsd:simpleType> + +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-25 15:40:56.733096866 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-25 15:40:56.796426519 -0300 +@@ -1,75 +1,27 @@ + <!DOCTYPE RCC><RCC version="1.0"> + <qresource prefix="/"> +- <file alias="os_archlinux.png">images/os_archlinux.png</file> +- <file alias="os_archlinux_64.png">images/os_archlinux_64.png</file> +- <file alias="os_debian.png">images/os_debian.png</file> +- <file alias="os_debian_64.png">images/os_debian_64.png</file> +- <file alias="os_dos.png">images/os_dos.png</file> +- <file alias="os_fedora.png">images/os_fedora.png</file> +- <file alias="os_fedora_64.png">images/os_fedora_64.png</file> +- <file alias="os_freebsd.png">images/os_freebsd.png</file> +- <file alias="os_freebsd_64.png">images/os_freebsd_64.png</file> +- <file alias="os_gentoo.png">images/os_gentoo.png</file> +- <file alias="os_gentoo_64.png">images/os_gentoo_64.png</file> +- <file alias="os_jrockitve.png">images/os_jrockitve.png</file> +- <file alias="os_l4.png">images/os_l4.png</file> +- <file alias="os_linux_other.png">images/os_linux_other.png</file> +- <file alias="os_linux22.png">images/os_linux22.png</file> +- <file alias="os_linux24.png">images/os_linux24.png</file> +- <file alias="os_linux24_64.png">images/os_linux24_64.png</file> +- <file alias="os_linux26.png">images/os_linux26.png</file> +- <file alias="os_linux26_64.png">images/os_linux26_64.png</file> +- <file alias="os_mandriva.png">images/os_mandriva.png</file> +- <file alias="os_mandriva_64.png">images/os_mandriva_64.png</file> +- <file alias="os_netbsd.png">images/os_netbsd.png</file> +- <file alias="os_netbsd_64.png">images/os_netbsd_64.png</file> +- <file alias="os_netware.png">images/os_netware.png</file> +- <file alias="os_openbsd.png">images/os_openbsd.png</file> +- <file alias="os_openbsd_64.png">images/os_openbsd_64.png</file> +- <file alias="os_oraclesolaris.png">images/os_oraclesolaris.png</file> +- <file alias="os_oraclesolaris_64.png">images/os_oraclesolaris_64.png</file> +- <file alias="os_opensuse.png">images/os_opensuse.png</file> +- <file alias="os_opensuse_64.png">images/os_opensuse_64.png</file> +- <file alias="os_os2_other.png">images/os_os2_other.png</file> +- <file alias="os_os2ecs.png">images/os_os2ecs.png</file> +- <file alias="os_os2warp3.png">images/os_os2warp3.png</file> +- <file alias="os_os2warp4.png">images/os_os2warp4.png</file> +- <file alias="os_os2warp45.png">images/os_os2warp45.png</file> ++ <file alias="os_parabola.png">images/os_parabola.png</file> ++ <file alias="os_parabola_64.png">images/os_parabola_64.png</file> ++ <file alias="os_gnewsense.png">images/os_gnewsense.png</file> ++ <file alias="os_gnewsense_64.png">images/os_gnewsense_64.png</file> ++ <file alias="os_blag.png">images/os_blag.png</file> ++ <file alias="os_blag_64.png">images/os_blag_64.png</file> ++ <file alias="os_ututo.png">images/os_ututo.png</file> ++ <file alias="os_ututo_64.png">images/os_ututo_64.png</file> ++ <file alias="os_gnu.png">images/os_gnu.png</file> ++ <file alias="os_gnu_64.png">images/os_gnu_64.png</file> ++ <file alias="os_gnuhurd.png">images/os_gnuhurd.png</file> ++ <file alias="os_gnulinux.png">images/os_gnulinux.png</file> ++ <file alias="os_gnulinux_64.png">images/os_gnulinux_64.png</file> ++ <file alias="os_musix.png">images/os_musix.png</file> ++ <file alias="os_musix_64.png">images/os_musix_64.png</file> ++ <file alias="os_dragora.png">images/os_dragora.png</file> ++ <file alias="os_dragora_64.png">images/os_dragora_64.png</file> + <file alias="os_other.png">images/os_other.png</file> +- <file alias="os_qnx.png">images/os_qnx.png</file> +- <file alias="os_redhat.png">images/os_redhat.png</file> +- <file alias="os_redhat_64.png">images/os_redhat_64.png</file> +- <file alias="os_turbolinux.png">images/os_turbolinux.png</file> +- <file alias="os_turbolinux_64.png">images/os_turbolinux_64.png</file> +- <file alias="os_solaris.png">images/os_solaris.png</file> +- <file alias="os_solaris_64.png">images/os_solaris_64.png</file> +- <file alias="os_ubuntu.png">images/os_ubuntu.png</file> +- <file alias="os_ubuntu_64.png">images/os_ubuntu_64.png</file> +- <file alias="os_win_other.png">images/os_win_other.png</file> +- <file alias="os_win2k.png">images/os_win2k.png</file> +- <file alias="os_win2k3.png">images/os_win2k3.png</file> +- <file alias="os_win2k3_64.png">images/os_win2k3_64.png</file> +- <file alias="os_win2k8.png">images/os_win2k8.png</file> +- <file alias="os_win2k8_64.png">images/os_win2k8_64.png</file> +- <file alias="os_win31.png">images/os_win31.png</file> +- <file alias="os_win7.png">images/os_win7.png</file> +- <file alias="os_win7_64.png">images/os_win7_64.png</file> +- <file alias="os_win8.png">images/os_win8.png</file> +- <file alias="os_win8_64.png">images/os_win8_64.png</file> +- <file alias="os_win95.png">images/os_win95.png</file> +- <file alias="os_win98.png">images/os_win98.png</file> +- <file alias="os_winme.png">images/os_winme.png</file> +- <file alias="os_winnt4.png">images/os_winnt4.png</file> +- <file alias="os_winvista.png">images/os_winvista.png</file> +- <file alias="os_winvista_64.png">images/os_winvista_64.png</file> +- <file alias="os_winxp.png">images/os_winxp.png</file> +- <file alias="os_winxp_64.png">images/os_winxp_64.png</file> +- <file alias="os_xandros.png">images/os_xandros.png</file> +- <file alias="os_xandros_64.png">images/os_xandros_64.png</file> +- <file alias="os_oracle.png">images/os_oracle.png</file> +- <file alias="os_oracle_64.png">images/os_oracle_64.png</file> +- <file alias="os_macosx.png">images/os_macosx.png</file> +- <file alias="os_macosx_64.png">images/os_macosx_64.png</file> ++ <file alias="os_dynebolic.png">images/os_dynebolic.png</file> ++ <file alias="os_venenux.png">images/os_venenux.png</file> ++ <file alias="os_trisquel.png">images/os_trisquel.png</file> ++ <file alias="os_trisquel_64.png">images/os_trisquel_64.png</file> + <file alias="hd_16px.png">images/hd_16px.png</file> + <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file> + <file alias="hd_32px.png">images/hd_32px.png</file> +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/Global.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/src-all/Global.cpp 2012-07-25 19:32:44.482993976 -0300 +@@ -35,284 +35,90 @@ + VBOXOSTYPE_Unknown, VBOXOSHINT_NONE, + 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows31, "Windows 3.1", +- VBOXOSTYPE_Win31, VBOXOSHINT_NONE, +- 32, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows95, "Windows 95", +- VBOXOSTYPE_Win95, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows98, "Windows 98", +- VBOXOSTYPE_Win98, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsMe, "Windows Me", +- VBOXOSTYPE_WinMe, VBOXOSHINT_NONE, +- 64, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT4, "Windows NT 4", +- VBOXOSTYPE_WinNT4, VBOXOSHINT_NONE, +- 128, 16, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2000, "Windows 2000", +- VBOXOSTYPE_Win2k, VBOXOSHINT_USBTABLET, +- 168, 16, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsXP, "Windows XP", +- VBOXOSTYPE_WinXP, VBOXOSHINT_USBTABLET, +- 192, 16, 10 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsXP_64, "Windows XP (64 bit)", +- VBOXOSTYPE_WinXP_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 192, 16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2003, "Windows 2003", +- VBOXOSTYPE_Win2k3, VBOXOSHINT_USBTABLET, +- 256, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2003_64, "Windows 2003 (64 bit)", +- VBOXOSTYPE_Win2k3_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 256, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista, "Windows Vista", +- VBOXOSTYPE_WinVista, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsVista_64, "Windows Vista (64 bit)", +- VBOXOSTYPE_WinVista_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008, "Windows 2008", +- VBOXOSTYPE_Win2k8, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows2008_64, "Windows 2008 (64 bit)", +- VBOXOSTYPE_Win2k8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7, "Windows 7", +- VBOXOSTYPE_Win7, VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows7_64, "Windows 7 (64 bit)", +- VBOXOSTYPE_Win7_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8, "Windows 8", +- VBOXOSTYPE_Win8, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE, +- 1024,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_Windows8_64, "Windows 8 (64 bit)", +- VBOXOSTYPE_Win8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 1536,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA }, +- { "Windows", "Microsoft Windows", SchemaDefs_OSTypeId_WindowsNT, "Other Windows", +- VBOXOSTYPE_WinNT, VBOXOSHINT_NONE, +- 512, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux22, "Linux 2.2", +- VBOXOSTYPE_Linux22, VBOXOSHINT_RTCUTC, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux24, "Linux 2.4", +- VBOXOSTYPE_Linux24, VBOXOSHINT_RTCUTC, +- 128, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux24_64, "Linux 2.4 (64 bit)", +- VBOXOSTYPE_Linux24_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 128, 4, 4 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU", "GNU", SchemaDefs_OSTypeId_GNU, "GNU", ++ VBOXOSTYPE_GNU, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, ++ { "GNU", "GNU", SchemaDefs_OSTypeId_GNU_64, "GNU (64 bit)", ++ VBOXOSTYPE_GNU_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, ++ { "GNU-Hurd", "GNU-Hurd", SchemaDefs_OSTypeId_GNUHurd, "GNU-Hurd", ++ VBOXOSTYPE_GNUHurd, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26, "Linux 2.6", +- VBOXOSTYPE_Linux26, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_GNULinux, "GNU/Linux", ++ VBOXOSTYPE_GNULinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux26_64, "Linux 2.6 (64 bit)", +- VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_GNULinux_64, "GNU/Linux (64 bit)", ++ VBOXOSTYPE_GNULinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux, "Arch Linux", +- VBOXOSTYPE_ArchLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Parabola, "Parabola GNU/Linux-libre", ++ VBOXOSTYPE_Parabola, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_ArchLinux_64, "Arch Linux (64 bit)", +- VBOXOSTYPE_ArchLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Parabola_64, "Parabola GNU/Linux-libre (64 bit)", ++ VBOXOSTYPE_Parabola_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Debian, "Debian", +- VBOXOSTYPE_Debian, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_gNewSense, "gNewSense", ++ VBOXOSTYPE_gNewSense, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Debian_64, "Debian (64 bit)", +- VBOXOSTYPE_Debian_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_gNewSense_64, "gNewSense (64 bit)", ++ VBOXOSTYPE_gNewSense_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97}, +- { "Linux", "Linux", SchemaDefs_OSTypeId_OpenSUSE, "openSUSE", +- VBOXOSTYPE_OpenSUSE, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_OpenSUSE_64, "openSUSE (64 bit)", +- VBOXOSTYPE_OpenSUSE_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Fedora, "Fedora", +- VBOXOSTYPE_FedoraCore, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Blag, "Blag Linux and GNU", ++ VBOXOSTYPE_Blag, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Fedora_64, "Fedora (64 bit)", +- VBOXOSTYPE_FedoraCore_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Blag_64, "Blag Linux and GNU (64 bit)", ++ VBOXOSTYPE_Blag_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Gentoo, "Gentoo", +- VBOXOSTYPE_Gentoo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dragora, "Dragora", ++ VBOXOSTYPE_Dragora, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Gentoo_64, "Gentoo (64 bit)", +- VBOXOSTYPE_Gentoo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dragora_64, "Dragora (64 bit)", ++ VBOXOSTYPE_Dragora_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Mandriva, "Mandriva", +- VBOXOSTYPE_Mandriva, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Mandriva_64, "Mandriva (64 bit)", +- VBOXOSTYPE_Mandriva_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_RedHat, "Red Hat", +- VBOXOSTYPE_RedHat, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Ututo, "Ututo XS", ++ VBOXOSTYPE_Ututo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_RedHat_64, "Red Hat (64 bit)", +- VBOXOSTYPE_RedHat_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Ututo_64, "Ututo XS (64 bit)", ++ VBOXOSTYPE_Ututo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Turbolinux, "Turbolinux", +- VBOXOSTYPE_Turbolinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Musix, "Musix", ++ VBOXOSTYPE_Musix, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Turbolinux, "Turbolinux (64 bit)", +- VBOXOSTYPE_Turbolinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Musix_64, "Musix (64 bit)", ++ VBOXOSTYPE_Musix_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu, "Ubuntu", +- VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET, ++ StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97}, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Trisquel, "Trisquel", ++ VBOXOSTYPE_Trisquel, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Ubuntu_64, "Ubuntu (64 bit)", +- VBOXOSTYPE_Ubuntu_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Trisquel_64, "Trisquel (64 bit)", ++ VBOXOSTYPE_Trisquel_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, + 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros, "Xandros", +- VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Xandros_64, "Xandros (64 bit)", +- VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Dynebolic, "Dyne:bolic", ++ VBOXOSTYPE_Dynebolic, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 256, 4, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Oracle_64, "Oracle (64 bit)", +- VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC, +- 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, ++ { "GNU/Linux", "GNU/Linux", SchemaDefs_OSTypeId_Venenux, "Venenux", ++ VBOXOSTYPE_Venenux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, ++ 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, + StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Linux", "Linux", SchemaDefs_OSTypeId_Linux, "Other Linux", +- VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET, +- 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_Solaris, "Oracle Solaris 10 5/09 and earlier", +- VBOXOSTYPE_Solaris, VBOXOSHINT_NONE, +- 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_Solaris_64, "Oracle Solaris 10 5/09 and earlier (64 bit)", +- VBOXOSTYPE_Solaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_OpenSolaris, "Oracle Solaris 10 10/09 and later", +- VBOXOSTYPE_OpenSolaris, VBOXOSHINT_USBTABLET, +- 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Solaris", "Solaris", SchemaDefs_OSTypeId_OpenSolaris_64, "Oracle Solaris 10 10/09 and later (64 bit)", +- VBOXOSTYPE_OpenSolaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET, +- 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA, +- StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_FreeBSD, "FreeBSD", +- VBOXOSTYPE_FreeBSD, VBOXOSHINT_NONE, +- 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_FreeBSD_64, "FreeBSD (64 bit)", +- VBOXOSTYPE_FreeBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_OpenBSD, "OpenBSD", +- VBOXOSTYPE_OpenBSD, VBOXOSHINT_HWVIRTEX, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_OpenBSD_64, "OpenBSD (64 bit)", +- VBOXOSTYPE_OpenBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_NetBSD, "NetBSD", +- VBOXOSTYPE_NetBSD, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "BSD", "BSD", SchemaDefs_OSTypeId_NetBSD_64, "NetBSD (64 bit)", +- VBOXOSTYPE_NetBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC, +- 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp3, "OS/2 Warp 3", +- VBOXOSTYPE_OS2Warp3, VBOXOSHINT_HWVIRTEX, +- 48, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp4, "OS/2 Warp 4", +- VBOXOSTYPE_OS2Warp4, VBOXOSHINT_HWVIRTEX, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2Warp45, "OS/2 Warp 4.5", +- VBOXOSTYPE_OS2Warp45, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2eCS, "eComStation", +- VBOXOSTYPE_ECS, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "OS2", "IBM OS/2", SchemaDefs_OSTypeId_OS2, "Other OS/2", +- VBOXOSTYPE_OS2, VBOXOSHINT_HWVIRTEX, +- 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "MacOS", "Mac OS X", SchemaDefs_OSTypeId_MacOS, "Mac OS X Server", +- VBOXOSTYPE_MacOS, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET, +- 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0, +- StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, +- ChipsetType_ICH9, AudioControllerType_HDA }, +- { "MacOS", "Mac OS X", SchemaDefs_OSTypeId_MacOS_64, "Mac OS X Server (64 bit)", +- VBOXOSTYPE_MacOS_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_USBTABLET, +- 1024, 4, 20 * _1G64, NetworkAdapterType_I82543GC, 0, +- StorageControllerType_ICH6, StorageBus_IDE, StorageControllerType_IntelAhci, StorageBus_SATA, +- ChipsetType_ICH9, AudioControllerType_HDA }, +- { "Other", "Other", SchemaDefs_OSTypeId_DOS, "DOS", +- VBOXOSTYPE_DOS, VBOXOSHINT_NONE, +- 32, 4, 500 * _1M, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 }, +- { "Other", "Other", SchemaDefs_OSTypeId_Netware, "Netware", +- VBOXOSTYPE_Netware, VBOXOSHINT_HWVIRTEX, +- 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_L4, "L4", +- VBOXOSTYPE_L4, VBOXOSHINT_NONE, +- 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_QNX, "QNX", +- VBOXOSTYPE_QNX, VBOXOSHINT_HWVIRTEX, +- 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 }, +- { "Other", "Other", SchemaDefs_OSTypeId_JRockitVE, "JRockitVE", +- VBOXOSTYPE_JRockitVE, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE, +- 1024, 4, 8 * _1G64, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE, +- StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, AudioControllerType_AC97 }, + }; + + /** +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp 2012-07-25 21:44:01.290876720 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp 2012-07-25 22:00:57.819380802 -0300 +@@ -4875,75 +4875,27 @@ + static const char *kOSTypeIcons [][2] = + { + {"Other", ":/os_other.png"}, +- {"DOS", ":/os_dos.png"}, +- {"Netware", ":/os_netware.png"}, +- {"L4", ":/os_l4.png"}, +- {"Windows31", ":/os_win31.png"}, +- {"Windows95", ":/os_win95.png"}, +- {"Windows98", ":/os_win98.png"}, +- {"WindowsMe", ":/os_winme.png"}, +- {"WindowsNT4", ":/os_winnt4.png"}, +- {"Windows2000", ":/os_win2k.png"}, +- {"WindowsXP", ":/os_winxp.png"}, +- {"WindowsXP_64", ":/os_winxp_64.png"}, +- {"Windows2003", ":/os_win2k3.png"}, +- {"Windows2003_64", ":/os_win2k3_64.png"}, +- {"WindowsVista", ":/os_winvista.png"}, +- {"WindowsVista_64", ":/os_winvista_64.png"}, +- {"Windows2008", ":/os_win2k8.png"}, +- {"Windows2008_64", ":/os_win2k8_64.png"}, +- {"Windows7", ":/os_win7.png"}, +- {"Windows7_64", ":/os_win7_64.png"}, +- {"Windows8", ":/os_win8.png"}, +- {"Windows8_64", ":/os_win8_64.png"}, +- {"WindowsNT", ":/os_win_other.png"}, +- {"OS2Warp3", ":/os_os2warp3.png"}, +- {"OS2Warp4", ":/os_os2warp4.png"}, +- {"OS2Warp45", ":/os_os2warp45.png"}, +- {"OS2eCS", ":/os_os2ecs.png"}, +- {"OS2", ":/os_os2_other.png"}, +- {"Linux22", ":/os_linux22.png"}, +- {"Linux24", ":/os_linux24.png"}, +- {"Linux24_64", ":/os_linux24_64.png"}, +- {"Linux26", ":/os_linux26.png"}, +- {"Linux26_64", ":/os_linux26_64.png"}, +- {"ArchLinux", ":/os_archlinux.png"}, +- {"ArchLinux_64", ":/os_archlinux_64.png"}, +- {"Debian", ":/os_debian.png"}, +- {"Debian_64", ":/os_debian_64.png"}, +- {"OpenSUSE", ":/os_opensuse.png"}, +- {"OpenSUSE_64", ":/os_opensuse_64.png"}, +- {"Fedora", ":/os_fedora.png"}, +- {"Fedora_64", ":/os_fedora_64.png"}, +- {"Gentoo", ":/os_gentoo.png"}, +- {"Gentoo_64", ":/os_gentoo_64.png"}, +- {"Mandriva", ":/os_mandriva.png"}, +- {"Mandriva_64", ":/os_mandriva_64.png"}, +- {"RedHat", ":/os_redhat.png"}, +- {"RedHat_64", ":/os_redhat_64.png"}, +- {"Turbolinux", ":/os_turbolinux.png"}, +- {"Turbolinux_64", ":/os_turbolinux_64.png"}, +- {"Ubuntu", ":/os_ubuntu.png"}, +- {"Ubuntu_64", ":/os_ubuntu_64.png"}, +- {"Xandros", ":/os_xandros.png"}, +- {"Xandros_64", ":/os_xandros_64.png"}, +- {"Oracle", ":/os_oracle.png"}, +- {"Oracle_64", ":/os_oracle_64.png"}, +- {"Linux", ":/os_linux_other.png"}, +- {"FreeBSD", ":/os_freebsd.png"}, +- {"FreeBSD_64", ":/os_freebsd_64.png"}, +- {"OpenBSD", ":/os_openbsd.png"}, +- {"OpenBSD_64", ":/os_openbsd_64.png"}, +- {"NetBSD", ":/os_netbsd.png"}, +- {"NetBSD_64", ":/os_netbsd_64.png"}, +- {"Solaris", ":/os_solaris.png"}, +- {"Solaris_64", ":/os_solaris_64.png"}, +- {"OpenSolaris", ":/os_oraclesolaris.png"}, +- {"OpenSolaris_64", ":/os_oraclesolaris_64.png"}, +- {"QNX", ":/os_qnx.png"}, +- {"MacOS", ":/os_macosx.png"}, +- {"MacOS_64", ":/os_macosx_64.png"}, +- {"JRockitVE", ":/os_jrockitve.png"}, ++ {"GNU", ":/os_gnu.png"}, ++ {"GNU_64", ":/os_gnu_64.png"}, ++ {"GNUHurd", ":/os_gnuhurd.png"}, ++ {"GNULinux", ":/os_gnulinux.png"}, ++ {"GNULinux_64", ":/os_gnulinux_64.png"}, ++ {"Parabola", ":/os_parabola.png"}, ++ {"Parabola_64", ":/os_parabola_64.png"}, ++ {"gNewSense", ":/os_gnewsense.png"}, ++ {"gNewSense_64", ":/os_gnewsense_64.png"}, ++ {"Blag", ":/os_blag.png"}, ++ {"Blag_64", ":/os_blag_64.png"}, ++ {"Dragora", ":/os_dragora.png"}, ++ {"Dragora_64", ":/os_dragora_64.png"}, ++ {"Ututo", ":/os_ututo.png"}, ++ {"Ututo_64", ":/os_ututo_64.png"}, ++ {"Musix", ":/os_musix.png"}, ++ {"Musix_64", ":/os_musix_64.png"}, ++ {"Trisquel", ":/os_trisquel.png"}, ++ {"Trisquel_64", ":/os_trisquel_64.png"}, ++ {"Dynebolic", ":/os_dynebolic.png"}, ++ {"Venenux", ":/os_venenux.png"}, + }; + for (uint n = 0; n < SIZEOF_ARRAY (kOSTypeIcons); ++ n) + { +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp.orig 2012-06-20 10:16:38.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp 2012-07-25 22:07:51.232436783 -0300 +@@ -192,17 +192,10 @@ + if (typeIndex != -1) + mCbType->setCurrentIndex (typeIndex); + } +- /* Or select WinXP item for Windows family as default */ +- else if (familyId == "Windows") ++ /* Or select Parabola GNU/Linux-libre item for GNU/Linux family as default */ ++ else if (familyId == "GNU/Linux") + { +- int xpIndex = mCbType->findData ("WindowsXP", RoleTypeID); +- if (xpIndex != -1) +- mCbType->setCurrentIndex (xpIndex); +- } +- /* Or select Ubuntu item for Linux family as default */ +- else if (familyId == "Linux") +- { +- int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID); ++ int ubIndex = mCbType->findData ("Parabola", RoleTypeID); + if (ubIndex != -1) + mCbType->setCurrentIndex (ubIndex); + } +--- VirtualBox-4.1.18.orig/include/VBox/ostypes.h 2012-06-20 10:07:51.000000000 -0300 ++++ VirtualBox-4.1.18/include/VBox/ostypes.h 2012-07-25 23:20:57.322757456 -0300 +@@ -43,77 +43,27 @@ + typedef enum VBOXOSTYPE + { + VBOXOSTYPE_Unknown = 0, +- VBOXOSTYPE_DOS = 0x10000, +- VBOXOSTYPE_Win31 = 0x15000, +- VBOXOSTYPE_Win9x = 0x20000, +- VBOXOSTYPE_Win95 = 0x21000, +- VBOXOSTYPE_Win98 = 0x22000, +- VBOXOSTYPE_WinMe = 0x23000, +- VBOXOSTYPE_WinNT = 0x30000, +- VBOXOSTYPE_WinNT4 = 0x31000, +- VBOXOSTYPE_Win2k = 0x32000, +- VBOXOSTYPE_WinXP = 0x33000, +- VBOXOSTYPE_WinXP_x64 = 0x33100, +- VBOXOSTYPE_Win2k3 = 0x34000, +- VBOXOSTYPE_Win2k3_x64 = 0x34100, +- VBOXOSTYPE_WinVista = 0x35000, +- VBOXOSTYPE_WinVista_x64 = 0x35100, +- VBOXOSTYPE_Win2k8 = 0x36000, +- VBOXOSTYPE_Win2k8_x64 = 0x36100, +- VBOXOSTYPE_Win7 = 0x37000, +- VBOXOSTYPE_Win7_x64 = 0x37100, +- VBOXOSTYPE_Win8 = 0x38000, +- VBOXOSTYPE_Win8_x64 = 0x38100, +- VBOXOSTYPE_OS2 = 0x40000, +- VBOXOSTYPE_OS2Warp3 = 0x41000, +- VBOXOSTYPE_OS2Warp4 = 0x42000, +- VBOXOSTYPE_OS2Warp45 = 0x43000, +- VBOXOSTYPE_ECS = 0x44000, +- VBOXOSTYPE_Linux = 0x50000, +- VBOXOSTYPE_Linux_x64 = 0x50100, +- VBOXOSTYPE_Linux22 = 0x51000, +- VBOXOSTYPE_Linux24 = 0x52000, +- VBOXOSTYPE_Linux24_x64 = 0x52100, +- VBOXOSTYPE_Linux26 = 0x53000, +- VBOXOSTYPE_Linux26_x64 = 0x53100, +- VBOXOSTYPE_ArchLinux = 0x54000, +- VBOXOSTYPE_ArchLinux_x64 = 0x54100, +- VBOXOSTYPE_Debian = 0x55000, +- VBOXOSTYPE_Debian_x64 = 0x55100, +- VBOXOSTYPE_OpenSUSE = 0x56000, +- VBOXOSTYPE_OpenSUSE_x64 = 0x56100, +- VBOXOSTYPE_FedoraCore = 0x57000, +- VBOXOSTYPE_FedoraCore_x64 = 0x57100, +- VBOXOSTYPE_Gentoo = 0x58000, +- VBOXOSTYPE_Gentoo_x64 = 0x58100, +- VBOXOSTYPE_Mandriva = 0x59000, +- VBOXOSTYPE_Mandriva_x64 = 0x59100, +- VBOXOSTYPE_RedHat = 0x5A000, +- VBOXOSTYPE_RedHat_x64 = 0x5A100, +- VBOXOSTYPE_Turbolinux = 0x5B000, +- VBOXOSTYPE_Turbolinux_x64 = 0x5B100, +- VBOXOSTYPE_Ubuntu = 0x5C000, +- VBOXOSTYPE_Ubuntu_x64 = 0x5C100, +- VBOXOSTYPE_Xandros = 0x5D000, +- VBOXOSTYPE_Xandros_x64 = 0x5D100, +- VBOXOSTYPE_Oracle = 0x5E000, +- VBOXOSTYPE_Oracle_x64 = 0x5E100, +- VBOXOSTYPE_FreeBSD = 0x60000, +- VBOXOSTYPE_FreeBSD_x64 = 0x60100, +- VBOXOSTYPE_OpenBSD = 0x61000, +- VBOXOSTYPE_OpenBSD_x64 = 0x61100, +- VBOXOSTYPE_NetBSD = 0x62000, +- VBOXOSTYPE_NetBSD_x64 = 0x62100, +- VBOXOSTYPE_Netware = 0x70000, +- VBOXOSTYPE_Solaris = 0x80000, +- VBOXOSTYPE_Solaris_x64 = 0x80100, +- VBOXOSTYPE_OpenSolaris = 0x81000, +- VBOXOSTYPE_OpenSolaris_x64 = 0x81100, +- VBOXOSTYPE_L4 = 0x90000, +- VBOXOSTYPE_QNX = 0xA0000, +- VBOXOSTYPE_MacOS = 0xB0000, +- VBOXOSTYPE_MacOS_x64 = 0xB0100, +- VBOXOSTYPE_JRockitVE = 0xC0000, ++ VBOXOSTYPE_GNU = 0x10000, ++ VBOXOSTYPE_GNU_x64 = 0x10100, ++ VBOXOSTYPE_GNUHurd = 0x20000, ++ VBOXOSTYPE_GNULinux = 0x30000, ++ VBOXOSTYPE_GNULinux_x64 = 0x30100, ++ VBOXOSTYPE_Parabola = 0x31000, ++ VBOXOSTYPE_Parabola_x64 = 0x31100, ++ VBOXOSTYPE_gNewSense = 0x32000, ++ VBOXOSTYPE_gNewSense_x64 = 0x32100, ++ VBOXOSTYPE_Blag = 0x33000, ++ VBOXOSTYPE_Blag_x64 = 0x33100, ++ VBOXOSTYPE_Dragora = 0x34000, ++ VBOXOSTYPE_Dragora_x64 = 0x34100, ++ VBOXOSTYPE_Ututo = 0x35000, ++ VBOXOSTYPE_Ututo_x64 = 0x35100, ++ VBOXOSTYPE_Musix = 0x36000, ++ VBOXOSTYPE_Musix_x64 = 0x36100, ++ VBOXOSTYPE_Trisquel = 0x37000, ++ VBOXOSTYPE_Trisquel_x64 = 0x37100, ++ VBOXOSTYPE_Dynebolic = 0x38000, ++ VBOXOSTYPE_Venenux = 0x39000, + /** The bit number which indicates 64-bit or 32-bit. */ + #define VBOXOSTYPE_x64_BIT 8 + /** The mask which indicates 64-bit. */ +@@ -129,16 +79,11 @@ + typedef enum VBOXOSFAMILY + { + VBOXOSFAMILY_Unknown = 0, +- VBOXOSFAMILY_Windows32 = 1, +- VBOXOSFAMILY_Windows64 = 2, +- VBOXOSFAMILY_Linux32 = 3, +- VBOXOSFAMILY_Linux64 = 4, +- VBOXOSFAMILY_FreeBSD32 = 5, +- VBOXOSFAMILY_FreeBSD64 = 6, +- VBOXOSFAMILY_Solaris32 = 7, +- VBOXOSFAMILY_Solaris64 = 8, +- VBOXOSFAMILY_MacOSX32 = 9, +- VBOXOSFAMILY_MacOSX64 = 10, ++ VBOXOSFAMILY_GNU32 = 1, ++ VBOXOSFAMILY_GNU64 = 2, ++ VBOXOSFAMILY_GNUHurd = 3, ++ VBOXOSFAMILY_GNULinux32 = 4, ++ VBOXOSFAMILY_GNULinux64 = 5, + /** The usual 32-bit hack. */ + VBOXOSFAMILY_32BIT_HACK = 0x7fffffff + } VBOXOSFAMILY; +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-server/ApplianceImpl.cpp 2012-06-20 10:17:35.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/src-server/ApplianceImpl.cpp 2012-07-26 01:28:50.033551279 -0300 +@@ -49,94 +49,33 @@ + g_osTypes[] = + { + { ovf::CIMOSType_CIMOS_Unknown, SchemaDefs_OSTypeId_Other }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp3 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp4 }, +- { ovf::CIMOSType_CIMOS_OS2, SchemaDefs_OSTypeId_OS2Warp45 }, +- { ovf::CIMOSType_CIMOS_MSDOS, SchemaDefs_OSTypeId_DOS }, +- { ovf::CIMOSType_CIMOS_WIN3x, SchemaDefs_OSTypeId_Windows31 }, +- { ovf::CIMOSType_CIMOS_WIN95, SchemaDefs_OSTypeId_Windows95 }, +- { ovf::CIMOSType_CIMOS_WIN98, SchemaDefs_OSTypeId_Windows98 }, +- { ovf::CIMOSType_CIMOS_WINNT, SchemaDefs_OSTypeId_WindowsNT }, +- { ovf::CIMOSType_CIMOS_WINNT, SchemaDefs_OSTypeId_WindowsNT4 }, +- { ovf::CIMOSType_CIMOS_NetWare, SchemaDefs_OSTypeId_Netware }, +- { ovf::CIMOSType_CIMOS_NovellOES, SchemaDefs_OSTypeId_Netware }, +- { ovf::CIMOSType_CIMOS_Solaris, SchemaDefs_OSTypeId_Solaris }, +- { ovf::CIMOSType_CIMOS_SunOS, SchemaDefs_OSTypeId_Solaris }, +- { ovf::CIMOSType_CIMOS_FreeBSD, SchemaDefs_OSTypeId_FreeBSD }, +- { ovf::CIMOSType_CIMOS_NetBSD, SchemaDefs_OSTypeId_NetBSD }, +- { ovf::CIMOSType_CIMOS_QNX, SchemaDefs_OSTypeId_QNX }, +- { ovf::CIMOSType_CIMOS_Windows2000, SchemaDefs_OSTypeId_Windows2000 }, +- { ovf::CIMOSType_CIMOS_WindowsMe, SchemaDefs_OSTypeId_WindowsMe }, +- { ovf::CIMOSType_CIMOS_OpenBSD, SchemaDefs_OSTypeId_OpenBSD }, +- { ovf::CIMOSType_CIMOS_WindowsXP, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_WindowsXPEmbedded, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_WindowsEmbeddedforPointofService, SchemaDefs_OSTypeId_WindowsXP }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2003, SchemaDefs_OSTypeId_Windows2003 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2003_64, SchemaDefs_OSTypeId_Windows2003_64 }, +- { ovf::CIMOSType_CIMOS_WindowsXP_64, SchemaDefs_OSTypeId_WindowsXP_64 }, +- { ovf::CIMOSType_CIMOS_WindowsVista, SchemaDefs_OSTypeId_WindowsVista }, +- { ovf::CIMOSType_CIMOS_WindowsVista_64, SchemaDefs_OSTypeId_WindowsVista_64 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2008, SchemaDefs_OSTypeId_Windows2008 }, +- { ovf::CIMOSType_CIMOS_MicrosoftWindowsServer2008_64, SchemaDefs_OSTypeId_Windows2008_64 }, +- { ovf::CIMOSType_CIMOS_FreeBSD_64, SchemaDefs_OSTypeId_FreeBSD_64 }, +- { ovf::CIMOSType_CIMOS_MACOS, SchemaDefs_OSTypeId_MacOS }, +- { ovf::CIMOSType_CIMOS_MACOS, SchemaDefs_OSTypeId_MacOS_64 }, // there is no CIM 64-bit type for this +- +- // Linuxes +- { ovf::CIMOSType_CIMOS_RedHatEnterpriseLinux, SchemaDefs_OSTypeId_RedHat }, +- { ovf::CIMOSType_CIMOS_RedHatEnterpriseLinux_64, SchemaDefs_OSTypeId_RedHat_64 }, +- { ovf::CIMOSType_CIMOS_Solaris_64, SchemaDefs_OSTypeId_Solaris_64 }, +- { ovf::CIMOSType_CIMOS_SUSE, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_SLES, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_NovellLinuxDesktop, SchemaDefs_OSTypeId_OpenSUSE }, +- { ovf::CIMOSType_CIMOS_SUSE_64, SchemaDefs_OSTypeId_OpenSUSE_64 }, +- { ovf::CIMOSType_CIMOS_SLES_64, SchemaDefs_OSTypeId_OpenSUSE_64 }, +- { ovf::CIMOSType_CIMOS_LINUX, SchemaDefs_OSTypeId_Linux }, +- { ovf::CIMOSType_CIMOS_LINUX, SchemaDefs_OSTypeId_Linux22 }, +- { ovf::CIMOSType_CIMOS_SunJavaDesktopSystem, SchemaDefs_OSTypeId_Linux }, +- { ovf::CIMOSType_CIMOS_TurboLinux, SchemaDefs_OSTypeId_Turbolinux }, +- { ovf::CIMOSType_CIMOS_TurboLinux_64, SchemaDefs_OSTypeId_Turbolinux_64 }, +- { ovf::CIMOSType_CIMOS_Mandriva, SchemaDefs_OSTypeId_Mandriva }, +- { ovf::CIMOSType_CIMOS_Mandriva_64, SchemaDefs_OSTypeId_Mandriva_64 }, +- { ovf::CIMOSType_CIMOS_Ubuntu, SchemaDefs_OSTypeId_Ubuntu }, +- { ovf::CIMOSType_CIMOS_Ubuntu_64, SchemaDefs_OSTypeId_Ubuntu_64 }, +- { ovf::CIMOSType_CIMOS_Debian, SchemaDefs_OSTypeId_Debian }, +- { ovf::CIMOSType_CIMOS_Debian_64, SchemaDefs_OSTypeId_Debian_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_4_x, SchemaDefs_OSTypeId_Linux24 }, +- { ovf::CIMOSType_CIMOS_Linux_2_4_x_64, SchemaDefs_OSTypeId_Linux24_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Linux26 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Linux26_64 }, +- { ovf::CIMOSType_CIMOS_Linux_64, SchemaDefs_OSTypeId_Linux26_64 }, +- +- // types that we have support for but CIM doesn't +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_ArchLinux }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_ArchLinux_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Fedora }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Fedora_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Gentoo }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Gentoo_64 }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x, SchemaDefs_OSTypeId_Xandros }, +- { ovf::CIMOSType_CIMOS_Linux_2_6_x_64, SchemaDefs_OSTypeId_Xandros_64 }, +- { ovf::CIMOSType_CIMOS_Solaris, SchemaDefs_OSTypeId_OpenSolaris }, +- { ovf::CIMOSType_CIMOS_Solaris_64, SchemaDefs_OSTypeId_OpenSolaris_64 }, +- +- // types added with CIM 2.25.0 follow: +- { ovf::CIMOSType_CIMOS_WindowsServer2008R2, SchemaDefs_OSTypeId_Windows2008 }, // duplicate, see above +-// { ovf::CIMOSType_CIMOS_VMwareESXi = 104, // we can't run ESX in a VM +- { ovf::CIMOSType_CIMOS_Windows7, SchemaDefs_OSTypeId_Windows7 }, +- { ovf::CIMOSType_CIMOS_Windows7, SchemaDefs_OSTypeId_Windows7_64 }, // there is no CIM 64-bit type for this +- { ovf::CIMOSType_CIMOS_CentOS, SchemaDefs_OSTypeId_RedHat }, +- { ovf::CIMOSType_CIMOS_CentOS_64, SchemaDefs_OSTypeId_RedHat_64 }, +- { ovf::CIMOSType_CIMOS_OracleEnterpriseLinux, SchemaDefs_OSTypeId_Oracle }, +- { ovf::CIMOSType_CIMOS_OracleEnterpriseLinux_64, SchemaDefs_OSTypeId_Oracle_64 }, +- { ovf::CIMOSType_CIMOS_eComStation, SchemaDefs_OSTypeId_OS2eCS } +- +- // there are no CIM types for these, so these turn to "other" on export: +- // SchemaDefs_OSTypeId_OpenBSD +- // SchemaDefs_OSTypeId_OpenBSD_64 +- // SchemaDefs_OSTypeId_NetBSD +- // SchemaDefs_OSTypeId_NetBSD_64 ++ ++ // Custom OS ++ { ovf::CIMOSType_CIMOS_GNU, SchemaDefs_OSTypeId_GNU }, ++ { ovf::CIMOSType_CIMOS_GNU_64, SchemaDefs_OSTypeId_GNU_64 }, ++ { ovf::CIMOSType_CIMOS_GNUHurd, SchemaDefs_OSTypeId_GNUHurd }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_GNULinux }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_GNULinux_64 }, ++ ++ // GNU/Linux free distros ++ { ovf::CIMOSType_CIMOS_gNewSense, SchemaDefs_OSTypeId_gNewSense }, ++ { ovf::CIMOSType_CIMOS_gNewSense_64, SchemaDefs_OSTypeId_gNewSense_64 }, ++ { ovf::CIMOSType_CIMOS_Dragora, SchemaDefs_OSTypeId_Dragora }, ++ { ovf::CIMOSType_CIMOS_Dragora_64, SchemaDefs_OSTypeId_Dragora_64 }, ++ { ovf::CIMOSType_CIMOS_Musix, SchemaDefs_OSTypeId_Musix }, ++ { ovf::CIMOSType_CIMOS_Musix_64, SchemaDefs_OSTypeId_Musix_64 }, ++ { ovf::CIMOSType_CIMOS_Trisquel, SchemaDefs_OSTypeId_Trisquel }, ++ { ovf::CIMOSType_CIMOS_Trisquel_64, SchemaDefs_OSTypeId_Trisquel_64 }, ++ { ovf::CIMOSType_CIMOS_Dynebolic, SchemaDefs_OSTypeId_Dynebolic }, ++ { ovf::CIMOSType_CIMOS_Venenux, SchemaDefs_OSTypeId_Venenux }, ++ ++ // GNU/Linux free distros that we have support for but CIM doesn't ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Parabola }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Parabola_64 }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Blag }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Blag_64 }, ++ { ovf::CIMOSType_CIMOS_GNULinux, SchemaDefs_OSTypeId_Ututo }, ++ { ovf::CIMOSType_CIMOS_GNULinux_64, SchemaDefs_OSTypeId_Ututo_64 }, + + }; + +@@ -150,53 +89,34 @@ + /* These are the 32-Bit ones. They are sorted by priority. */ + static const osTypePattern g_osTypesPattern[] = + { +- {"Windows NT", SchemaDefs_OSTypeId_WindowsNT4}, +- {"Windows XP", SchemaDefs_OSTypeId_WindowsXP}, +- {"Windows 2000", SchemaDefs_OSTypeId_Windows2000}, +- {"Windows 2003", SchemaDefs_OSTypeId_Windows2003}, +- {"Windows Vista", SchemaDefs_OSTypeId_WindowsVista}, +- {"Windows 2008", SchemaDefs_OSTypeId_Windows2008}, +- {"SUSE", SchemaDefs_OSTypeId_OpenSUSE}, +- {"Novell", SchemaDefs_OSTypeId_OpenSUSE}, +- {"Red Hat", SchemaDefs_OSTypeId_RedHat}, +- {"Mandriva", SchemaDefs_OSTypeId_Mandriva}, +- {"Ubuntu", SchemaDefs_OSTypeId_Ubuntu}, +- {"Debian", SchemaDefs_OSTypeId_Debian}, +- {"QNX", SchemaDefs_OSTypeId_QNX}, +- {"Linux 2.4", SchemaDefs_OSTypeId_Linux24}, +- {"Linux 2.6", SchemaDefs_OSTypeId_Linux26}, +- {"Linux", SchemaDefs_OSTypeId_Linux}, +- {"OpenSolaris", SchemaDefs_OSTypeId_OpenSolaris}, +- {"Solaris", SchemaDefs_OSTypeId_OpenSolaris}, +- {"FreeBSD", SchemaDefs_OSTypeId_FreeBSD}, +- {"NetBSD", SchemaDefs_OSTypeId_NetBSD}, +- {"Windows 95", SchemaDefs_OSTypeId_Windows95}, +- {"Windows 98", SchemaDefs_OSTypeId_Windows98}, +- {"Windows Me", SchemaDefs_OSTypeId_WindowsMe}, +- {"Windows 3.", SchemaDefs_OSTypeId_Windows31}, +- {"DOS", SchemaDefs_OSTypeId_DOS}, +- {"OS2", SchemaDefs_OSTypeId_OS2} ++ ++ {"Parabola GNU/Linux-libre", SchemaDefs_OSTypeId_Parabola}, ++ {"gNewSense", SchemaDefs_OSTypeId_gNewSense}, ++ {"Blag Linux and GNU", SchemaDefs_OSTypeId_Blag}, ++ {"Dragora", SchemaDefs_OSTypeId_Dragora}, ++ {"Ututo XS", SchemaDefs_OSTypeId_Ututo}, ++ {"Musix", SchemaDefs_OSTypeId_Musix}, ++ {"Trisquel", SchemaDefs_OSTypeId_Trisquel}, ++ {"Dyne:bolic", SchemaDefs_OSTypeId_Dynebolic}, ++ {"Venenux", SchemaDefs_OSTypeId_Venenux}, ++ {"GNU", SchemaDefs_OSTypeId_GNU}, ++ {"GNU-Hurd", SchemaDefs_OSTypeId_GNUHurd}, ++ {"GNU/Linux", SchemaDefs_OSTypeId_GNULinux}, ++ + }; + + /* These are the 64-Bit ones. They are sorted by priority. */ + static const osTypePattern g_osTypesPattern64[] = + { +- {"Windows XP", SchemaDefs_OSTypeId_WindowsXP_64}, +- {"Windows 2003", SchemaDefs_OSTypeId_Windows2003_64}, +- {"Windows Vista", SchemaDefs_OSTypeId_WindowsVista_64}, +- {"Windows 2008", SchemaDefs_OSTypeId_Windows2008_64}, +- {"SUSE", SchemaDefs_OSTypeId_OpenSUSE_64}, +- {"Novell", SchemaDefs_OSTypeId_OpenSUSE_64}, +- {"Red Hat", SchemaDefs_OSTypeId_RedHat_64}, +- {"Mandriva", SchemaDefs_OSTypeId_Mandriva_64}, +- {"Ubuntu", SchemaDefs_OSTypeId_Ubuntu_64}, +- {"Debian", SchemaDefs_OSTypeId_Debian_64}, +- {"Linux 2.4", SchemaDefs_OSTypeId_Linux24_64}, +- {"Linux 2.6", SchemaDefs_OSTypeId_Linux26_64}, +- {"Linux", SchemaDefs_OSTypeId_Linux26_64}, +- {"OpenSolaris", SchemaDefs_OSTypeId_OpenSolaris_64}, +- {"Solaris", SchemaDefs_OSTypeId_OpenSolaris_64}, +- {"FreeBSD", SchemaDefs_OSTypeId_FreeBSD_64}, ++ {"Parabola GNU/Linux-libre", SchemaDefs_OSTypeId_Parabola_64}, ++ {"gNewSense", SchemaDefs_OSTypeId_gNewSense_64}, ++ {"Blag Linux and GNU", SchemaDefs_OSTypeId_Blag_64}, ++ {"Dragora", SchemaDefs_OSTypeId_Dragora_64}, ++ {"Ututo XS", SchemaDefs_OSTypeId_Ututo_64}, ++ {"Musix", SchemaDefs_OSTypeId_Musix_64}, ++ {"Trisquel", SchemaDefs_OSTypeId_Trisquel_64}, ++ {"GNU", SchemaDefs_OSTypeId_GNU_64}, ++ {"GNU/Linux", SchemaDefs_OSTypeId_GNULinux_64}, + }; + + /** +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ovfreader.h 2012-06-20 10:17:34.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/include/ovfreader.h 2012-07-26 03:51:21.807619186 -0300 +@@ -34,119 +34,24 @@ + + enum CIMOSType_T + { +- CIMOSType_CIMOS_Unknown = 0, +- CIMOSType_CIMOS_Other = 1, +- CIMOSType_CIMOS_MACOS = 2, +- CIMOSType_CIMOS_ATTUNIX = 3, +- CIMOSType_CIMOS_DGUX = 4, +- CIMOSType_CIMOS_DECNT = 5, +- CIMOSType_CIMOS_Tru64UNIX = 6, +- CIMOSType_CIMOS_OpenVMS = 7, +- CIMOSType_CIMOS_HPUX = 8, +- CIMOSType_CIMOS_AIX = 9, +- CIMOSType_CIMOS_MVS = 10, +- CIMOSType_CIMOS_OS400 = 11, +- CIMOSType_CIMOS_OS2 = 12, +- CIMOSType_CIMOS_JavaVM = 13, +- CIMOSType_CIMOS_MSDOS = 14, +- CIMOSType_CIMOS_WIN3x = 15, +- CIMOSType_CIMOS_WIN95 = 16, +- CIMOSType_CIMOS_WIN98 = 17, +- CIMOSType_CIMOS_WINNT = 18, +- CIMOSType_CIMOS_WINCE = 19, +- CIMOSType_CIMOS_NCR3000 = 20, +- CIMOSType_CIMOS_NetWare = 21, +- CIMOSType_CIMOS_OSF = 22, +- CIMOSType_CIMOS_DCOS = 23, +- CIMOSType_CIMOS_ReliantUNIX = 24, +- CIMOSType_CIMOS_SCOUnixWare = 25, +- CIMOSType_CIMOS_SCOOpenServer = 26, +- CIMOSType_CIMOS_Sequent = 27, +- CIMOSType_CIMOS_IRIX = 28, +- CIMOSType_CIMOS_Solaris = 29, +- CIMOSType_CIMOS_SunOS = 30, +- CIMOSType_CIMOS_U6000 = 31, +- CIMOSType_CIMOS_ASERIES = 32, +- CIMOSType_CIMOS_HPNonStopOS = 33, +- CIMOSType_CIMOS_HPNonStopOSS = 34, +- CIMOSType_CIMOS_BS2000 = 35, +- CIMOSType_CIMOS_LINUX = 36, +- CIMOSType_CIMOS_Lynx = 37, +- CIMOSType_CIMOS_XENIX = 38, +- CIMOSType_CIMOS_VM = 39, +- CIMOSType_CIMOS_InteractiveUNIX = 40, +- CIMOSType_CIMOS_BSDUNIX = 41, +- CIMOSType_CIMOS_FreeBSD = 42, +- CIMOSType_CIMOS_NetBSD = 43, +- CIMOSType_CIMOS_GNUHurd = 44, +- CIMOSType_CIMOS_OS9 = 45, +- CIMOSType_CIMOS_MACHKernel = 46, +- CIMOSType_CIMOS_Inferno = 47, +- CIMOSType_CIMOS_QNX = 48, +- CIMOSType_CIMOS_EPOC = 49, +- CIMOSType_CIMOS_IxWorks = 50, +- CIMOSType_CIMOS_VxWorks = 51, +- CIMOSType_CIMOS_MiNT = 52, +- CIMOSType_CIMOS_BeOS = 53, +- CIMOSType_CIMOS_HPMPE = 54, +- CIMOSType_CIMOS_NextStep = 55, +- CIMOSType_CIMOS_PalmPilot = 56, +- CIMOSType_CIMOS_Rhapsody = 57, +- CIMOSType_CIMOS_Windows2000 = 58, +- CIMOSType_CIMOS_Dedicated = 59, +- CIMOSType_CIMOS_OS390 = 60, +- CIMOSType_CIMOS_VSE = 61, +- CIMOSType_CIMOS_TPF = 62, +- CIMOSType_CIMOS_WindowsMe = 63, +- CIMOSType_CIMOS_CalderaOpenUNIX = 64, +- CIMOSType_CIMOS_OpenBSD = 65, +- CIMOSType_CIMOS_NotApplicable = 66, +- CIMOSType_CIMOS_WindowsXP = 67, +- CIMOSType_CIMOS_zOS = 68, +- CIMOSType_CIMOS_MicrosoftWindowsServer2003 = 69, +- CIMOSType_CIMOS_MicrosoftWindowsServer2003_64 = 70, +- CIMOSType_CIMOS_WindowsXP_64 = 71, +- CIMOSType_CIMOS_WindowsXPEmbedded = 72, +- CIMOSType_CIMOS_WindowsVista = 73, +- CIMOSType_CIMOS_WindowsVista_64 = 74, +- CIMOSType_CIMOS_WindowsEmbeddedforPointofService = 75, +- CIMOSType_CIMOS_MicrosoftWindowsServer2008 = 76, +- CIMOSType_CIMOS_MicrosoftWindowsServer2008_64 = 77, +- CIMOSType_CIMOS_FreeBSD_64 = 78, +- CIMOSType_CIMOS_RedHatEnterpriseLinux = 79, +- CIMOSType_CIMOS_RedHatEnterpriseLinux_64 = 80, +- CIMOSType_CIMOS_Solaris_64 = 81, +- CIMOSType_CIMOS_SUSE = 82, +- CIMOSType_CIMOS_SUSE_64 = 83, +- CIMOSType_CIMOS_SLES = 84, +- CIMOSType_CIMOS_SLES_64 = 85, +- CIMOSType_CIMOS_NovellOES = 86, +- CIMOSType_CIMOS_NovellLinuxDesktop = 87, +- CIMOSType_CIMOS_SunJavaDesktopSystem = 88, +- CIMOSType_CIMOS_Mandriva = 89, +- CIMOSType_CIMOS_Mandriva_64 = 90, +- CIMOSType_CIMOS_TurboLinux = 91, +- CIMOSType_CIMOS_TurboLinux_64 = 92, +- CIMOSType_CIMOS_Ubuntu = 93, +- CIMOSType_CIMOS_Ubuntu_64 = 94, +- CIMOSType_CIMOS_Debian = 95, +- CIMOSType_CIMOS_Debian_64 = 96, +- CIMOSType_CIMOS_Linux_2_4_x = 97, +- CIMOSType_CIMOS_Linux_2_4_x_64 = 98, +- CIMOSType_CIMOS_Linux_2_6_x = 99, +- CIMOSType_CIMOS_Linux_2_6_x_64 = 100, +- CIMOSType_CIMOS_Linux_64 = 101, +- CIMOSType_CIMOS_Other_64 = 102, +- // types added with CIM 2.25.0 follow: +- CIMOSType_CIMOS_WindowsServer2008R2 = 103, +- CIMOSType_CIMOS_VMwareESXi = 104, +- CIMOSType_CIMOS_Windows7 = 105, +- CIMOSType_CIMOS_CentOS = 106, +- CIMOSType_CIMOS_CentOS_64 = 107, +- CIMOSType_CIMOS_OracleEnterpriseLinux = 108, +- CIMOSType_CIMOS_OracleEnterpriseLinux_64 = 109, +- CIMOSType_CIMOS_eComStation = 110 +- // no new types added with CIM 2.26.0 ++ CIMOSType_CIMOS_Unknown = 0, ++ CIMOSType_CIMOS_Other = 1, ++ CIMOSType_CIMOS_Other_64 = 2, ++ CIMOSType_CIMOS_gNewSense = 3, ++ CIMOSType_CIMOS_gNewSense_64 = 4, ++ CIMOSType_CIMOS_Dragora = 5, ++ CIMOSType_CIMOS_Dragora_64 = 6, ++ CIMOSType_CIMOS_Musix = 7, ++ CIMOSType_CIMOS_Musix_64 = 8, ++ CIMOSType_CIMOS_Trisquel = 9, ++ CIMOSType_CIMOS_Trisquel_64 = 10, ++ CIMOSType_CIMOS_Dynebolic = 11, ++ CIMOSType_CIMOS_Venenux = 12, ++ CIMOSType_CIMOS_GNU = 13, ++ CIMOSType_CIMOS_GNU_64 = 14, ++ CIMOSType_CIMOS_GNUHurd = 15, ++ CIMOSType_CIMOS_GNULinux = 16, ++ CIMOSType_CIMOS_GNULinux_64 = 17 + }; + + +--- VirtualBox-4.1.18.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c 2012-06-20 10:09:01.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c 2012-07-26 15:32:55.309812685 -0300 +@@ -622,16 +622,16 @@ + * Call the common device extension initializer. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_X86) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) && defined(RT_ARCH_AMD64) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux26_x64; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux_x64; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_X86) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux; + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && defined(RT_ARCH_AMD64) +- VBOXOSTYPE enmOSType = VBOXOSTYPE_Linux24_x64; ++ VBOXOSTYPE enmOSType = VBOXOSTYPE_GNULinux_x64; + #else + # warning "huh? which arch + version is this?" +- VBOXOSTYPE enmOsType = VBOXOSTYPE_Linux; ++ VBOXOSTYPE enmOsType = VBOXOSTYPE_GNULinux; + #endif + rc = VBoxGuestInitDevExt(&g_DevExt, + g_IOPortBase, diff --git a/libre/virtualbox-libre/ipv6_vnc.patch b/libre/virtualbox-libre/ipv6_vnc.patch new file mode 100644 index 000000000..8f50aba1c --- /dev/null +++ b/libre/virtualbox-libre/ipv6_vnc.patch @@ -0,0 +1,20 @@ +diff -aur vanilla/VirtualBox-4.1.18/src/VBox/Frontends/VBoxHeadless/FramebufferVNC.cpp changed/VirtualBox-4.1.18/src/VBox/Frontends/VBoxHeadless/FramebufferVNC.cpp +--- vanilla/VirtualBox-4.1.18/src/VBox/Frontends/VBoxHeadless/FramebufferVNC.cpp 2012-06-20 15:15:53.000000000 +0200 ++++ changed/VirtualBox-4.1.18/src/VBox/Frontends/VBoxHeadless/FramebufferVNC.cpp 2012-07-16 16:24:22.448349886 +0200 +@@ -88,8 +88,16 @@ + + vncServer = rfbGetScreen(0, NULL, mWidth, mHeight, 8, 3, 1); + vncServer->screenData = (void*)this; ++#ifdef LIBVNCSERVER_IPv6 ++ if (mVncPort) { ++ vncServer->port = mVncPort; ++ vncServer->ipv6port = mVncPort; ++ } ++#else + if (mVncPort) + vncServer->port = mVncPort; ++#endif ++ + char *pszDesktopName; + rc = RTStrAPrintf(&pszDesktopName, "%s - VirtualBox", pszName); + if (rc >= 0) diff --git a/libre/virtualbox-libre/libre.patch b/libre/virtualbox-libre/libre.patch new file mode 100644 index 000000000..e51d0c0a7 --- /dev/null +++ b/libre/virtualbox-libre/libre.patch @@ -0,0 +1,5765 @@ +--- VirtualBox-4.1.18.orig/Config.kmk 2012-07-24 16:38:43.981310996 -0300 ++++ VirtualBox-4.1.18/Config.kmk 2012-07-24 16:38:44.001309865 -0300 +@@ -56,9 +56,6 @@ + PROPS_SYSMODS_ACCUMULATE_L += INTERMEDIATES + PROPS_MISCBINS_ACCUMULATE_L += INTERMEDIATES + +-# Misc names used bye the install paths below. +-VBOX_PUEL_MANGLED_NAME := Oracle_VM_VirtualBox_Extension_Pack +- + # Install paths + ## @todo This will change after 4.1 is branched off! + # What is now 'bin' and 'lib' will be moved down under 'staged/', except on +@@ -125,9 +122,6 @@ + endif + + INST_DOC = doc/ +-INST_EXTPACK = $(INST_BIN)ExtensionPacks/ +-INST_EXTPACK_CERTS = $(INST_BIN)ExtPackCertificates/ +-INST_EXTPACK_PUEL = $(INST_EXTPACK)$(VBOX_PUEL_MANGLED_NAME)/ + INST_PACKAGES = packages/ + + VBOX_PATH_SDK = $(patsubst %/,%,$(PATH_STAGE)/$(INST_SDK)) +@@ -136,7 +130,6 @@ + VBOX_PATH_ADDITIONS = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS)) + VBOX_PATH_ADDITIONS_ISO = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_ISO)) + VBOX_PATH_ADDITIONS_LIB = $(patsubst %/,%,$(PATH_STAGE)/$(INST_ADDITIONS_LIB)) +-VBOX_PATH_EXTPACK_PUEL= $(patsubst %/,%,$(PATH_STAGE)/$(INST_EXTPACK_PUEL)) + VBOX_PATH_PACKAGES = $(patsubst %/,%,$(PATH_STAGE)/$(INST_PACKAGES)) + + +@@ -208,7 +201,6 @@ + export VBOX_ADDITIONS_SH_MODE = release + export VBOX_DOCUMENTATION_SH_MODE = release + export VBOX_EFI_SH_MODE = release +- export VBOX_EXTPACKS_SH_MODE = release + endif + + # Some info on the vendor +@@ -361,8 +353,6 @@ + VBOX_WITH_USB = 1 + # Enable the USB 1.1 controller plus virtual USB HID devices. + VBOX_WITH_VUSB = 1 +-# Enable the USB 2.0 controller. +-VBOX_WITH_EHCI = 1 + # Enable the ISCSI feature. + VBOX_WITH_ISCSI = 1 + # Enable INIP support in the ISCSI feature. +@@ -430,9 +420,6 @@ + ifdef VBOX_WITH_USB + VBOX_WITH_VUSB = 1 + endif +-ifdef VBOX_WITH_EHCI +- VBOX_WITH_EHCI_IMPL = 1 +-endif + ifdef VBOX_WITH_PCI_PASSTHROUGH + VBOX_WITH_PCI_PASSTHROUGH_IMPL = 1 + endif +@@ -591,15 +578,6 @@ + ## @} + + +-## @name Extension pack +-## @{ +-# Enables the extension pack feature. +-VBOX_WITH_EXTPACK = 1 +-# Enables separating code into the Oracle VM VirtualBox Extension Pack, dubbed PUEL. +-VBOX_WITH_EXTPACK_PUEL = 1 +-# Enables building+packing the Oracle VM VirtualBox Extension Pack, includes VBOX_WITH_EXTPACK_PUEL +-VBOX_WITH_EXTPACK_PUEL_BUILD = 1 +-## @} + + ## @name Misc + ## @{ +@@ -777,14 +755,6 @@ + # Skip stuff. + # + +-ifdef VBOX_ONLY_EXTPACKS +- # Clear some VBOX_WITH_XXX variables instead of adding ifdefs all over the place. +- VBOX_WITH_DEBUGGER = +- VBOX_WITH_ADDITIONS = +- VBOX_WITH_VBOXDRV = +- VBOX_WITH_TESTCASES = +-endif +- + # VBOX_QUICK can be used by core developers to speed to the build + ifdef VBOX_QUICK + # undefine variables by assigning blank. +@@ -848,7 +818,6 @@ + VBOX_WITH_TESTSUITE= + VBOX_WITH_QTGUI= + VBOX_WITH_USB= +- VBOX_WITH_EHCI= + VBOX_WITH_DOCS= + VBOX_WITH_PDM_ASYNC_COMPLETION= + VBOX_WITH_KCHMVIEWER= +@@ -870,7 +839,6 @@ + VBOX_WITH_CROGL= + VBOX_WITH_DEBUGGER= + VBOX_WITH_DOCS= +- VBOX_WITH_EHCI= + VBOX_WITH_HARDENING= + VBOX_WITH_HEADLESS= + VBOX_WITH_HGCM= +@@ -952,9 +920,6 @@ + # + ifdef VBOX_OSE + VBOX_WITH_VRDP= +- VBOX_WITH_EHCI_IMPL= +- VBOX_WITH_EXTPACK_PUEL= +- VBOX_WITH_EXTPACK_PUEL_BUILD= + VBOX_WITH_PCI_PASSTHROUGH_IMPL= + VBOX_WITH_OS2_ADDITIONS_BIN= + VBOX_WITH_SECURELABEL= +@@ -1082,10 +1047,6 @@ + VBOX_WITH_KCHMVIEWER= + endif + +-ifdef VBOX_WITH_EXTPACK_PUEL_BUILD +- VBOX_WITH_EXTPACK_PUEL = 1 +-endif +- + # + # Mark OSE builds clearly, helps figuring out limitations more easily. + # +@@ -1679,9 +1640,6 @@ + # biossums (set BIOS checksums) + VBOX_BIOSSUMS ?= $(PATH_OBJ)/biossums/biossums$(HOSTSUFF_EXE) + +-# RTManifest (extension pack manifest utility) +-VBOX_RTMANIFEST ?= $(PATH_OBJ)/bldRTManifest/bldRTManifest$(HOSTSUFF_EXE) +- + # filesplitter (splits java files) + VBOX_FILESPLIT ?= $(PATH_OBJ)/filesplitter/filesplitter$(HOSTSUFF_EXE) + +@@ -2461,13 +2419,6 @@ + SDK_VBOX_OPENSSL2_LIBS = $(NO_SUCH_VARIABLE) + endif + +-SDK_VBoxOpenSslExtPack = Internal use only. +-SDK_VBoxOpenSslExtPack_INCS = $(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS) +-SDK_VBoxOpenSslExtPack_ORDERDEPS = $(crypto-headers_1_TARGET) +-SDK_VBoxOpenSslExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VBoxExtPack-libssl$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VBoxExtPack-libcrypto$(VBOX_SUFF_LIB) +- + SDK_VBOX_BLD_OPENSSL = . + SDK_VBOX_BLD_OPENSSL_EXTENDS = VBOX_OPENSSL + SDK_VBOX_BLD_OPENSSL_LIBS ?= \ +@@ -3817,100 +3768,6 @@ + endif + TEMPLATE_VBOXMAINCLIENTDLL_LDFLAGS.darwin = $(filter-out -bind_at_load,$(TEMPLATE_VBOXMAINCLIENTEXE_LDFLAGS.darwin)) + +- +- +-# +-# Templates used for building the extension packs. +-# +-ifdef VBOX_WITH_EXTPACK +- # Base templates (native or portable). +- TEMPLATE_VBoxR3ExtPack = For the ring-3 context extension pack modules. +- if 1 # Native for now. +- TEMPLATE_VBoxR3ExtPack_EXTENDS = VBOXR3DLLNOXCPT +- TEMPLATE_VBoxR3ExtPack_DEFS = $(TEMPLATE_VBOXR3DLLNOXCPT_DEFS) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 +- else +- TEMPLATE_VBoxR3ExtPack_EXTENDS = VBOXNOCRTGCC +- TEMPLATE_VBoxR3ExtPack_DEFS = $(TEMPLATE_VBOXNOCRTGCC_DEFS) VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R3 IPRT_NO_CRT IN_RING3 +- TEMPLATE_VBoxR3ExtPack_INCS = $(PATH_ROOT)/include/iprt/nocrt $(TEMPLATE_VBOXR3DLLNOXCPT_INCS) +- endif +- ifneq ($(KBUILD_TARGET),win) +- TEMPLATE_VBoxR3ExtPack_CXXFLAGS = $(TEMPLATE_VBOXR3DLLNOXCPT_CXXFLAGS) -fno-rtti +- endif +- TEMPLATE_VBoxR3ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- ifeq ($(KBUILD_TARGET),linux) +- TEMPLATE_VBoxR3ExtPack_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS)) +- else +- if !defined(VBOX_WITH_RUNPATH) && defined(VBOX_WITH_RELATIVE_RUNPATH) +- TEMPLATE_VBoxR3ExtPack_LDFLAGS = '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)/../../..' $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)', $(TEMPLATE_VBOXR3DLLNOXCPT_LDFLAGS)) +- endif +- endif +- ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- if1of ($(KBUILD_TARGET), win os2) +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(PATH_STAGE_LIB)/VMMR3Imp$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VBoxRTImp$(VBOX_SUFF_LIB) +- else +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(PATH_STAGE_LIB)/VMMR3Imp$(VBOX_SUFF_DLL) \ +- $(PATH_STAGE_LIB)/VBoxRTImp$(VBOX_SUFF_DLL) +- endif +- else +- TEMPLATE_VBoxR3ExtPack_LIBS = \ +- $(TEMPLATE_LIBS_VBOXR3) \ +- $(LIB_RUNTIME) \ +- $(LIB_VMM) +- endif +- +- TEMPLATE_VBoxR0ExtPack = For the ring-0 context extension pack modules. +- TEMPLATE_VBoxR0ExtPack_EXTENDS = VBoxR0 +- TEMPLATE_VBoxR0ExtPack_EXTENDS_BY = appending +- TEMPLATE_VBoxR0ExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- TEMPLATE_VBoxR0ExtPack_DEFS = VBOX_IN_EXTPACK VBOX_IN_EXTPACK_R0 +- if1of ($(VBOX_LDR_FMT), pe lx) +- TEMPLATE_VBoxR0ExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VMMR0Imp$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/SUPR0$(VBOX_SUFF_LIB) +- endif +- +- TEMPLATE_VBoxRcExtPack = For the raw-mode context extension pack modules. +- TEMPLATE_VBoxRcExtPack_EXTENDS = VBoxRc +- TEMPLATE_VBoxRcExtPack_EXTENDS_BY = appending +- TEMPLATE_VBoxRcExtPack_SYSSUFF = .rc +- TEMPLATE_VBoxRcExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- TEMPLATE_VBoxRcExtPack_DEFS = VBOX_IN_EXTPACK VBOX_IN_EXTPACK_RC +- if1of ($(VBOX_LDR_FMT32), pe lx) +- TEMPLATE_VBoxRcExtPack_LIBS = \ +- $(PATH_STAGE_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \ +- $(PATH_STAGE_LIB)/VMMRCImp$(VBOX_SUFF_LIB) +- endif +- +- TEMPLATE_VBoxInsExtPack = For the install targets of an extension pack. +- TEMPLATE_VBoxInsExtPack_MODE = 0644 +- TEMPLATE_VBoxInsExtPack_INST = $(INST_EXTPACK)YouShallOverrideThis/ +- +- # For each individual extension pack +- ifdef VBOX_WITH_EXTPACK_PUEL +- TEMPLATE_VBoxR3ExtPackPuel = For the ring-3 context modules in the PUEL extension pack. +- TEMPLATE_VBoxR3ExtPackPuel_EXTENDS = VBoxR3ExtPack +- TEMPLATE_VBoxR3ExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxR0ExtPackPuel = For the ring-0 context modules in the PUEL extension pack. +- TEMPLATE_VBoxR0ExtPackPuel_EXTENDS = VBoxR0ExtPack +- TEMPLATE_VBoxR0ExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxRcExtPackPuel = For the raw-mode context modules in the PUEL extension pack. +- TEMPLATE_VBoxRcExtPackPuel_EXTENDS = VBoxRcExtPack +- TEMPLATE_VBoxRcExtPackPuel_INST = $(INST_EXTPACK_PUEL)$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)/ +- +- TEMPLATE_VBoxInsExtPackPuel = For the install targets of an extension pack. +- TEMPLATE_VBoxInsExtPackPuel_EXTENDS = VBoxR0ExtPack +- TEMPLATE_VBoxInsExtPackPuel_INST = $(INST_EXTPACK_PUEL) +-endif +-endif # VBOX_WITH_EXTPACK +- +- + # + # Qt 4 + # Qt 4 +--- VirtualBox-4.1.18.orig/Makefile.kmk 2012-07-24 17:16:47.078929150 -0300 ++++ VirtualBox-4.1.18/Makefile.kmk 2012-07-24 17:16:47.125592981 -0300 +@@ -446,7 +446,6 @@ + include/VBox \ + include/VBox/vmm \ + include/VBox/com \ +- include/VBox/ExtPack \ + include/VBox/HostServices \ + include/VBox/GuestHost \ + include/VBox/HGSMI \ +@@ -862,191 +861,6 @@ + additions-build-linux.x86.combined \ + additions-packing + +- +-# +-# Build the extension packs, all of them. +-# +-# This is tailored (hardcoded) for the extension pack build box. +-# +-# The fetching must be done in serial fashion, while the building should be +-# more flexible wrt to -jN. +-# +-extpacks-fetch: +- + $(KMK) -C tools fetch VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=darwin BUILD_TARGET_ARCH=amd64 BUILD_TARGET=darwin VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=darwin BUILD_TARGET_ARCH=x86 BUILD_TARGET=darwin VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=freebsd BUILD_TARGET_ARCH=amd64 BUILD_TARGET=freebsd VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=freebsd BUILD_TARGET_ARCH=x86 BUILD_TARGET=freebsd VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=linux BUILD_TARGET_ARCH=amd64 BUILD_TARGET=linux VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=linux BUILD_TARGET_ARCH=x86 BUILD_TARGET=linux VBOX_ONLY_EXTPACKS=1 +-# + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=os2 BUILD_TARGET_ARCH=x86 BUILD_TARGET=os2 VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=amd64 BUILD_TARGET=solaris VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=solaris BUILD_TARGET_ARCH=x86 BUILD_TARGET=solaris VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=amd64 KBUILD_TARGET=win BUILD_TARGET_ARCH=amd64 BUILD_TARGET=win VBOX_ONLY_EXTPACKS=1 +- + $(KMK) -C tools fetch KBUILD_TARGET_ARCH=x86 KBUILD_TARGET=win BUILD_TARGET_ARCH=x86 BUILD_TARGET=win VBOX_ONLY_EXTPACKS=1 +- +- +-extpacks-build: \ +- extpacks-build-win.amd64 \ +- extpacks-build-win.x86 \ +- extpacks-build-solaris.amd64 \ +- extpacks-build-solaris.x86 \ +- extpacks-build-os2.x86 \ +- extpacks-build-linux.amd64 \ +- extpacks-build-linux.x86 \ +- extpacks-build-darwin.amd64 \ +- extpacks-build-darwin.x86 \ +- extpacks-build-freebsd.amd64 \ +- extpacks-build-freebsd.x86 +- +-VBOX_EXTPACKS_BUILD.amd64 = VBOX_ONLY_EXTPACKS=1 \ +- KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \ +- KBUILD_TARGET_ARCH=amd64 BUILD_TARGET_ARCH=amd64 \ +- VBOX_SVN_REV=$(VBOX_SVN_REV) +- +-VBOX_EXTPACKS_BUILD.x86 = VBOX_ONLY_EXTPACKS=1 \ +- KBUILD_TYPE=$(KBUILD_TYPE) BUILD_TYPE=$(KBUILD_TYPE) \ +- KBUILD_TARGET_ARCH=x86 BUILD_TARGET_ARCH=x86 \ +- VBOX_SVN_REV=$(VBOX_SVN_REV) +- +-# Automatically determine the extpack build subdir name. Used for figuring out +-# directory names inside the extension pack building VMs. +-VBOX_EXTPACKS_BUILD_SUBDIRNAME := $(lastword $(subst /, ,$(PATH_ROOT))) +- +-# When building in parallel on a Windows host, make sure we finish the host +-# bit before kicking off any UNIX guest or we'll run into file sharing issues. +-ifeq ($(KBUILD_TARGET),win) +-VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST = extpacks-build-win.x86 extpacks-build-win.amd64 +-else +-VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST = +-endif +- +-extpacks-build-win.amd64: +-ifeq ($(KBUILD_TARGET),win) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Windows/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.6 " echo $@ && cd e:/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-endif +- +-extpacks-build-win.x86: +-ifeq ($(KBUILD_TARGET),win) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Windows/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.16 " echo $@ && cd e:/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-endif +- +-ifeq ($(KBUILD_TARGET),solaris) +-extpacks-build-solaris.amd64: +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +- +-extpacks-build-solaris.x86: extpacks-build-solaris.amd64 +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) VBOX_WITH_COMBINED_SOLARIS_GUEST_PACKAGE=1 all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +- +-else +-# Serialize 32-bit and 64-bit ASSUMING the same VM builds both. +-extpacks-build-solaris.rsync-into-vm: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,solaris,*) . 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- +-extpacks-build-solaris.build-it: extpacks-build-solaris.rsync-into-vm +- $(call MSG_L1,Building Solaris/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.4 " echo $@/amd64 && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +- $(call MSG_L1,Building Solaris/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.4 " echo $@/x86 && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +- +-extpacks-build-solaris.rsync-out-of-vm: extpacks-build-solaris.build-it +- $(VBOX_KMK_TIME) rsync -a --delete 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/solaris.x86 out/ +- $(VBOX_KMK_TIME) rsync -a --delete 192.168.27.4:/mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/solaris.amd64 out/ +- +-.NOTPARALLEL: extpacks-build-solaris.rsync-out-of-vm extpacks-build-solaris.rsync-into-vm +-.PHONY: extpacks-build-solaris.rsync-out-of-vm extpacks-build-solaris.rsync-into-vm extpacks-build-solaris.build-it +- +-extpacks-build-solaris.amd64: extpacks-build-solaris.rsync-out-of-vm +-extpacks-build-solaris.x86: extpacks-build-solaris.rsync-out-of-vm +-endif +- +-extpacks-build-os2.x86: +-#ifeq ($(KBUILD_TARGET),os2) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.3 " cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) " +-#endif +- +-extpacks-build-linux.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.amd64) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Linux/amd64 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.12 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-endif +- +-extpacks-build-linux.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),linux.x86) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Linux/x86 extension packs) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.11 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-endif +- +-extpacks-build-freebsd.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-#ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),freebsd.amd64) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(call MSG_L1,Building FreeBSD/amd64 extension packs) +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.17 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +-#endif +- +-extpacks-build-freebsd.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-#ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),freebsd.x86) +-# + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-#else +-# $(call MSG_L1,Building FreeBSD/x86 extension packs) +-# $(VBOX_KMK_TIME) ssh vbox@192.168.27.7 " echo $@ && cd /mnt/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +-#endif +- +-extpacks-build-darwin.amd64: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.amd64) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.amd64) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Darwin/amd64 extension packs) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,darwin,amd64) . 192.168.27.15:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.15 " echo $@ && cd /Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.amd64) all" +- $(VBOX_KMK_TIME) rsync -am -v --delete 192.168.27.15:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/darwin.amd64 out/ +-endif +- +-extpacks-build-darwin.x86: $(VBOX_EXTPACKS_BUILD_WIN_HOST_FIRST) +-ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),darwin.x86) +- + $(VBOX_KMK_TIME) $(KMK) $(VBOX_EXTPACKS_BUILD.x86) all $(VBOX_EXTPACKS_HOST_BUILD_TWEAK) +-else +- $(call MSG_L1,Building Darwin/x86 extension packs) +- $(VBOX_KMK_TIME) $(call VBOX_RSYNC_IN_FN,darwin,x86) . 192.168.27.5:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) +- $(VBOX_KMK_TIME) ssh vbox@192.168.27.5 " echo $@ && cd /Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME) && tools/env.sh --no-wine kmk $(VBOX_EXTPACKS_BUILD.x86) all" +- $(VBOX_KMK_TIME) rsync -am -v --delete 192.168.27.5:/Users/vbox/tinderbox/$(VBOX_EXTPACKS_BUILD_SUBDIRNAME)/out/darwin.x86 out/ +-endif +- +- +-extpacks-packing: +- + $(KMK) VBOX_ONLY_EXTPACKS=1 \ +- VBOX_WITH_EXTPACK_OS_ARCHS="darwin.amd64 darwin.x86 linux.amd64 linux.x86 solaris.amd64 solaris.x86 win.amd64 win.x86" \ +- packing +-# +++ freebsd.amd64 freebsd.x86 os2.x86 ^^^ +- +-.PHONY: \ +- extpacks-build-win.x86 \ +- extpacks-build-win.amd64 \ +- extpacks-build-solaris.amd64 \ +- extpacks-build-solaris.x86 \ +- extpacks-build-os2.x86 \ +- extpacks-build-linux.amd64 \ +- extpacks-build-linux.x86 \ +- extpacks-build-freebsd.amd64 \ +- extpacks-build-freebsd.x86 \ +- extpacks-build-darwin.amd64 \ +- extpacks-build-darwin.x86 \ +- extpacks-packing +- +- + # + # Build the test suite, all of it. + # +--- VirtualBox-4.1.18.orig/src/VBox/Devices/build/VBoxDD.cpp 2012-06-20 10:15:51.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/build/VBoxDD.cpp 2012-07-24 16:18:03.964493454 -0300 +@@ -132,11 +132,6 @@ + if (RT_FAILURE(rc)) + return rc; + #endif +-#ifdef VBOX_WITH_EHCI_IMPL +- rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceEHCI); +- if (RT_FAILURE(rc)) +- return rc; +-#endif + #ifdef VBOX_ACPI + rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceACPI); + if (RT_FAILURE(rc)) +--- VirtualBox-4.1.18.orig/src/VBox/Devices/build/VBoxDD.h 2012-06-20 10:15:51.000000000 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/build/VBoxDD.h 2012-07-24 16:20:35.939205389 -0300 +@@ -62,7 +62,6 @@ + extern const PDMDEVREG g_DeviceICH6_HDA; + extern const PDMDEVREG g_DeviceAudioSniffer; + extern const PDMDEVREG g_DeviceOHCI; +-extern const PDMDEVREG g_DeviceEHCI; + extern const PDMDEVREG g_DeviceACPI; + extern const PDMDEVREG g_DeviceDMA; + extern const PDMDEVREG g_DeviceFloppyController; +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ExtPackManagerImpl.h 2012-06-20 10:17:33.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,245 +0,0 @@ +-/* $Id: ExtPackManagerImpl.h $ */ +-/** @file +- * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ____H_EXTPACKMANAGERIMPL +-#define ____H_EXTPACKMANAGERIMPL +- +-#include "VirtualBoxBase.h" +-#include <VBox/ExtPack/ExtPack.h> +-#include <iprt/fs.h> +- +-/** +- * An extension pack file. +- */ +-class ATL_NO_VTABLE ExtPackFile : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPackFile) +-{ +-public: +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPackFile, IExtPackFile) +- DECLARE_NOT_AGGREGATABLE(ExtPackFile) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPackFile) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPackFile) +- COM_INTERFACE_ENTRY(IExtPackBase) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPackFile) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initWithFile(const char *a_pszFile, const char *a_pszDigest, class ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPackBase interfaces +- * @{ */ +- STDMETHOD(COMGETTER(Name))(BSTR *a_pbstrName); +- STDMETHOD(COMGETTER(Description))(BSTR *a_pbstrDescription); +- STDMETHOD(COMGETTER(Version))(BSTR *a_pbstrVersion); +- STDMETHOD(COMGETTER(Revision))(ULONG *a_puRevision); +- STDMETHOD(COMGETTER(VRDEModule))(BSTR *a_pbstrVrdeModule); +- STDMETHOD(COMGETTER(PlugIns))(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)); +- STDMETHOD(COMGETTER(Usable))(BOOL *a_pfUsable); +- STDMETHOD(COMGETTER(WhyUnusable))(BSTR *a_pbstrWhy); +- STDMETHOD(COMGETTER(ShowLicense))(BOOL *a_pfShowIt); +- STDMETHOD(COMGETTER(License))(BSTR *a_pbstrHtmlLicense); +- STDMETHOD(QueryLicense)(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, +- IN_BSTR a_bstrFormat, BSTR *a_pbstrLicense); +- /** @} */ +- +- /** @name IExtPackFile interfaces +- * @{ */ +- STDMETHOD(COMGETTER(FilePath))(BSTR *a_pbstrPath); +- STDMETHOD(Install)(BOOL a_fReplace, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress); +- /** @} */ +- +-private: +- /** @name Misc init helpers +- * @{ */ +- HRESULT initFailed(const char *a_pszWhyFmt, ...); +- /** @} */ +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +- +- friend class ExtPackManager; +-}; +- +- +-/** +- * An installed extension pack. +- */ +-class ATL_NO_VTABLE ExtPack : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPack) +-{ +-public: +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPack, IExtPack) +- DECLARE_NOT_AGGREGATABLE(ExtPack) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPack) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPack) +- COM_INTERFACE_ENTRY(IExtPackBase) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPack) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPackBase interfaces +- * @{ */ +- STDMETHOD(COMGETTER(Name))(BSTR *a_pbstrName); +- STDMETHOD(COMGETTER(Description))(BSTR *a_pbstrDescription); +- STDMETHOD(COMGETTER(Version))(BSTR *a_pbstrVersion); +- STDMETHOD(COMGETTER(Revision))(ULONG *a_puRevision); +- STDMETHOD(COMGETTER(VRDEModule))(BSTR *a_pbstrVrdeModule); +- STDMETHOD(COMGETTER(PlugIns))(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)); +- STDMETHOD(COMGETTER(Usable))(BOOL *a_pfUsable); +- STDMETHOD(COMGETTER(WhyUnusable))(BSTR *a_pbstrWhy); +- STDMETHOD(COMGETTER(ShowLicense))(BOOL *a_pfShowIt); +- STDMETHOD(COMGETTER(License))(BSTR *a_pbstrHtmlLicense); +- STDMETHOD(QueryLicense)(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, +- IN_BSTR a_bstrFormat, BSTR *a_pbstrLicense); +- /** @} */ +- +- /** @name IExtPack interfaces +- * @{ */ +- STDMETHOD(QueryObject)(IN_BSTR a_bstrObjectId, IUnknown **a_ppUnknown); +- /** @} */ +- +- /** @name Internal interfaces used by ExtPackManager. +- * @{ */ +- bool callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo); +- HRESULT callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval); +- bool callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock); +- bool callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock); +- bool callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock); +- bool callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc); +- bool callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc); +- bool callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock); +- HRESULT checkVrde(void); +- HRESULT getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary); +- bool wantsToBeDefaultVrde(void) const; +- HRESULT refresh(bool *pfCanDelete); +- /** @} */ +- +-protected: +- /** @name Internal helper methods. +- * @{ */ +- void probeAndLoad(void); +- bool findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind, +- Utf8Str *a_ppStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const; +- static bool objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2); +- /** @} */ +- +- /** @name Extension Pack Helpers +- * @{ */ +- static DECLCALLBACK(int) hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt, +- VBOXEXTPACKMODKIND enmKind, char *pszFound, size_t cbFound, bool *pfNative); +- static DECLCALLBACK(int) hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath); +- static DECLCALLBACK(VBOXEXTPACKCTX) hlpGetContext(PCVBOXEXTPACKHLP pHlp); +- static DECLCALLBACK(int) hlpReservedN(PCVBOXEXTPACKHLP pHlp); +- /** @} */ +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +- +- friend class ExtPackManager; +-}; +- +- +-/** +- * Extension pack manager. +- */ +-class ATL_NO_VTABLE ExtPackManager : +- public VirtualBoxBase, +- VBOX_SCRIPTABLE_IMPL(IExtPackManager) +-{ +- /** @name COM and internal init/term/mapping cruft. +- * @{ */ +- VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(ExtPackManager, IExtPackManager) +- DECLARE_NOT_AGGREGATABLE(ExtPackManager) +- DECLARE_PROTECT_FINAL_CONSTRUCT() +- BEGIN_COM_MAP(ExtPackManager) +- VBOX_DEFAULT_INTERFACE_ENTRIES(IExtPackManager) +- END_COM_MAP() +- DECLARE_EMPTY_CTOR_DTOR(ExtPackManager) +- +- HRESULT FinalConstruct(); +- void FinalRelease(); +- HRESULT initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext); +- void uninit(); +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +- /** @} */ +- +- /** @name IExtPack interfaces +- * @{ */ +- STDMETHOD(COMGETTER(InstalledExtPacks))(ComSafeArrayOut(IExtPack *, a_paExtPacks)); +- STDMETHOD(Find)(IN_BSTR a_bstrName, IExtPack **a_pExtPack); +- STDMETHOD(OpenExtPackFile)(IN_BSTR a_bstrTarball, IExtPackFile **a_ppExtPackFile); +- STDMETHOD(Uninstall)(IN_BSTR a_bstrName, BOOL a_fForcedRemoval, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress); +- STDMETHOD(Cleanup)(void); +- STDMETHOD(QueryAllPlugInsForFrontend)(IN_BSTR a_bstrFrontend, ComSafeArrayOut(BSTR, a_pabstrPlugInModules)); +- STDMETHOD(IsExtPackUsable(IN_BSTR a_bstrExtPack, BOOL *aUsable)); +- /** @} */ +- +- /** @name Internal interfaces used by other Main classes. +- * @{ */ +- static DECLCALLBACK(int) doInstallThreadProc(RTTHREAD hThread, void *pvJob); +- HRESULT doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo); +- static DECLCALLBACK(int) doUninstallThreadProc(RTTHREAD hThread, void *pvJob); +- HRESULT doUninstall(const Utf8Str *a_pstrName, bool a_fForcedRemoval, const Utf8Str *a_pstrDisplayInfo); +- void callAllVirtualBoxReadyHooks(void); +- void callAllConsoleReadyHooks(IConsole *a_pConsole); +- void callAllVmCreatedHooks(IMachine *a_pMachine); +- int callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM); +- int callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM); +- void callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM); +- HRESULT checkVrdeExtPack(Utf8Str const *a_pstrExtPack); +- int getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary); +- HRESULT getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack); +- bool isExtPackUsable(const char *a_pszExtPack); +- void dumpAllToReleaseLog(void); +- /** @} */ +- +-private: +- HRESULT runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...); +- ExtPack *findExtPack(const char *a_pszName); +- void removeExtPack(const char *a_pszName); +- HRESULT refreshExtPack(const char *a_pszName, bool a_fUnsuableIsError, ExtPack **a_ppExtPack); +- +-private: +- struct Data; +- /** Pointer to the private instance. */ +- Data *m; +-}; +- +-#endif +-/* vi: set tabstop=4 shiftwidth=4 expandtab: */ +--- VirtualBox-4.1.18.orig/src/VBox/Main/include/ExtPackUtil.h 2012-06-20 10:17:33.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,137 +0,0 @@ +-/* $Id: ExtPackUtil.h $ */ +-/** @file +- * VirtualBox Main - Extension Pack Utilities and definitions, VBoxC, VBoxSVC, ++. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +-#ifndef ____H_EXTPACKUTIL +-#define ____H_EXTPACKUTIL +- +-#include <iprt/cpp/ministring.h> +-#include <iprt/fs.h> +-#include <iprt/vfs.h> +- +- +-/** @name VBOX_EXTPACK_DESCRIPTION_NAME +- * The name of the description file in an extension pack. */ +-#define VBOX_EXTPACK_DESCRIPTION_NAME "ExtPack.xml" +-/** @name VBOX_EXTPACK_DESCRIPTION_NAME +- * The name of the manifest file in an extension pack. */ +-#define VBOX_EXTPACK_MANIFEST_NAME "ExtPack.manifest" +-/** @name VBOX_EXTPACK_SIGNATURE_NAME +- * The name of the signature file in an extension pack. */ +-#define VBOX_EXTPACK_SIGNATURE_NAME "ExtPack.signature" +-/** @name VBOX_EXTPACK_LICENSE_NAME_PREFIX +- * The name prefix of a license file in an extension pack. There can be +- * several license files in a pack, the variations being on locale, language +- * and format (HTML, RTF, plain text). All extension packages shall include +- * a */ +-#define VBOX_EXTPACK_LICENSE_NAME_PREFIX "ExtPack-license" +-/** @name VBOX_EXTPACK_SUFFIX +- * The suffix of a extension pack tarball. */ +-#define VBOX_EXTPACK_SUFFIX ".vbox-extpack" +- +-/** The minimum length (strlen) of a extension pack name. */ +-#define VBOX_EXTPACK_NAME_MIN_LEN 3 +-/** The max length (strlen) of a extension pack name. */ +-#define VBOX_EXTPACK_NAME_MAX_LEN 64 +- +-/** The architecture-dependent application data subdirectory where the +- * extension packs are installed. Relative to RTPathAppPrivateArch. */ +-#define VBOX_EXTPACK_INSTALL_DIR "ExtensionPacks" +-/** The architecture-independent application data subdirectory where the +- * certificates are installed. Relative to RTPathAppPrivateNoArch. */ +-#define VBOX_EXTPACK_CERT_DIR "ExtPackCertificates" +- +-/** The maximum entry name length. +- * Play short and safe. */ +-#define VBOX_EXTPACK_MAX_MEMBER_NAME_LENGTH 128 +- +- +-/** +- * Plug-in descriptor. +- */ +-typedef struct VBOXEXTPACKPLUGINDESC +-{ +- /** The name. */ +- RTCString strName; +- /** The module name. */ +- RTCString strModule; +- /** The description. */ +- RTCString strDescription; +- /** The frontend or component which it plugs into. */ +- RTCString strFrontend; +-} VBOXEXTPACKPLUGINDESC; +-/** Pointer to a plug-in descriptor. */ +-typedef VBOXEXTPACKPLUGINDESC *PVBOXEXTPACKPLUGINDESC; +- +-/** +- * Extension pack descriptor +- * +- * This is the internal representation of the ExtPack.xml. +- */ +-typedef struct VBOXEXTPACKDESC +-{ +- /** The name. */ +- RTCString strName; +- /** The description. */ +- RTCString strDescription; +- /** The version string. */ +- RTCString strVersion; +- /** The edition string. */ +- RTCString strEdition; +- /** The internal revision number. */ +- uint32_t uRevision; +- /** The name of the main module. */ +- RTCString strMainModule; +- /** The name of the VRDE module, empty if none. */ +- RTCString strVrdeModule; +- /** The number of plug-in descriptors. */ +- uint32_t cPlugIns; +- /** Pointer to an array of plug-in descriptors. */ +- PVBOXEXTPACKPLUGINDESC paPlugIns; +- /** Whether to show the license prior to installation. */ +- bool fShowLicense; +-} VBOXEXTPACKDESC; +- +-/** Pointer to a extension pack descriptor. */ +-typedef VBOXEXTPACKDESC *PVBOXEXTPACKDESC; +-/** Pointer to a const extension pack descriptor. */ +-typedef VBOXEXTPACKDESC const *PCVBOXEXTPACKDESC; +- +- +-void VBoxExtPackInitDesc(PVBOXEXTPACKDESC a_pExtPackDesc); +-RTCString *VBoxExtPackLoadDesc(const char *a_pszDir, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo); +-RTCString *VBoxExtPackLoadDescFromVfsFile(RTVFSFILE hVfsFile, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo); +-RTCString *VBoxExtPackExtractNameFromTarballPath(const char *pszTarball); +-void VBoxExtPackFreeDesc(PVBOXEXTPACKDESC a_pExtPackDesc); +-bool VBoxExtPackIsValidName(const char *pszName); +-bool VBoxExtPackIsValidMangledName(const char *pszMangledName, size_t cchMax = RTSTR_MAX); +-RTCString *VBoxExtPackMangleName(const char *pszName); +-RTCString *VBoxExtPackUnmangleName(const char *pszMangledName, size_t cbMax); +-int VBoxExtPackCalcDir(char *pszExtPackDir, size_t cbExtPackDir, const char *pszParentDir, const char *pszName); +-bool VBoxExtPackIsValidVersionString(const char *pszVersion); +-bool VBoxExtPackIsValidEditionString(const char *pszEdition); +-bool VBoxExtPackIsValidModuleString(const char *pszModule); +- +-int VBoxExtPackValidateMember(const char *pszName, RTVFSOBJTYPE enmType, RTVFSOBJ hVfsObj, char *pszError, size_t cbError); +-int VBoxExtPackOpenTarFss(RTFILE hTarballFile, char *pszError, size_t cbError, PRTVFSFSSTREAM phTarFss, PRTMANIFEST phFileManifest); +-int VBoxExtPackValidateTarball(RTFILE hTarballFile, const char *pszExtPackName, +- const char *pszTarball, const char *pszTarballDigest, +- char *pszError, size_t cbError, +- PRTMANIFEST phValidManifest, PRTVFSFILE phXmlFile, RTCString *pStrDigest); +- +- +-#endif +- +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/ExtPackManagerImpl.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,3126 +0,0 @@ +-/* $Id: ExtPackManagerImpl.cpp $ */ +-/** @file +- * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC. +- */ +- +-/* +- * Copyright (C) 2010 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +- +-/******************************************************************************* +-* Header Files * +-*******************************************************************************/ +-#include "ExtPackManagerImpl.h" +-#include "ExtPackUtil.h" +- +-#include <iprt/buildconfig.h> +-#include <iprt/ctype.h> +-#include <iprt/dir.h> +-#include <iprt/env.h> +-#include <iprt/file.h> +-#include <iprt/ldr.h> +-#include <iprt/manifest.h> +-#include <iprt/param.h> +-#include <iprt/path.h> +-#include <iprt/pipe.h> +-#include <iprt/process.h> +-#include <iprt/string.h> +- +-#include <VBox/com/array.h> +-#include <VBox/com/ErrorInfo.h> +-#include <VBox/err.h> +-#include <VBox/log.h> +-#include <VBox/sup.h> +-#include <VBox/version.h> +-#include "AutoCaller.h" +-#include "Global.h" +-#include "ProgressImpl.h" +-#include "SystemPropertiesImpl.h" +-#include "VirtualBoxImpl.h" +- +- +-/******************************************************************************* +-* Defined Constants And Macros * +-*******************************************************************************/ +-/** @name VBOX_EXTPACK_HELPER_NAME +- * The name of the utility application we employ to install and uninstall the +- * extension packs. This is a set-uid-to-root binary on unixy platforms, which +- * is why it has to be a separate application. +- */ +-#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) +-# define VBOX_EXTPACK_HELPER_NAME "VBoxExtPackHelperApp.exe" +-#else +-# define VBOX_EXTPACK_HELPER_NAME "VBoxExtPackHelperApp" +-#endif +- +- +-/******************************************************************************* +-* Structures and Typedefs * +-*******************************************************************************/ +-struct ExtPackBaseData +-{ +-public: +- /** The extension pack descriptor (loaded from the XML, mostly). */ +- VBOXEXTPACKDESC Desc; +- /** The file system object info of the XML file. +- * This is for detecting changes and save time in refresh(). */ +- RTFSOBJINFO ObjInfoDesc; +- /** Whether it's usable or not. */ +- bool fUsable; +- /** Why it is unusable. */ +- Utf8Str strWhyUnusable; +-}; +- +-/** +- * Private extension pack data. +- */ +-struct ExtPackFile::Data : public ExtPackBaseData +-{ +-public: +- /** The path to the tarball. */ +- Utf8Str strExtPackFile; +- /** The SHA-256 hash of the file (as string). */ +- Utf8Str strDigest; +- /** The file handle of the extension pack file. */ +- RTFILE hExtPackFile; +- /** Our manifest for the tarball. */ +- RTMANIFEST hOurManifest; +- /** Pointer to the extension pack manager. */ +- ComObjPtr<ExtPackManager> ptrExtPackMgr; +- /** Pointer to the VirtualBox object so we can create a progress object. */ +- VirtualBox *pVirtualBox; +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** +- * Private extension pack data. +- */ +-struct ExtPack::Data : public ExtPackBaseData +-{ +-public: +- /** Where the extension pack is located. */ +- Utf8Str strExtPackPath; +- /** The file system object info of the extension pack directory. +- * This is for detecting changes and save time in refresh(). */ +- RTFSOBJINFO ObjInfoExtPack; +- /** The full path to the main module. */ +- Utf8Str strMainModPath; +- /** The file system object info of the main module. +- * This is used to determin whether to bother try reload it. */ +- RTFSOBJINFO ObjInfoMainMod; +- /** The module handle of the main extension pack module. */ +- RTLDRMOD hMainMod; +- +- /** The helper callbacks for the extension pack. */ +- VBOXEXTPACKHLP Hlp; +- /** Pointer back to the extension pack object (for Hlp methods). */ +- ExtPack *pThis; +- /** The extension pack registration structure. */ +- PCVBOXEXTPACKREG pReg; +- /** The current context. */ +- VBOXEXTPACKCTX enmContext; +- /** Set if we've made the pfnVirtualBoxReady or pfnConsoleReady call. */ +- bool fMadeReadyCall; +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** List of extension packs. */ +-typedef std::list< ComObjPtr<ExtPack> > ExtPackList; +- +-/** +- * Private extension pack manager data. +- */ +-struct ExtPackManager::Data +-{ +- /** The directory where the extension packs are installed. */ +- Utf8Str strBaseDir; +- /** The directory where the certificates this installation recognizes are +- * stored. */ +- Utf8Str strCertificatDirPath; +- /** The list of installed extension packs. */ +- ExtPackList llInstalledExtPacks; +- /** Pointer to the VirtualBox object, our parent. */ +- VirtualBox *pVirtualBox; +- /** The current context. */ +- VBOXEXTPACKCTX enmContext; +-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_DARWIN) +- /** File handle for the VBoxVMM libary which we slurp because ExtPacks depend on it. */ +- RTLDRMOD hVBoxVMM; +-#endif +- +- RTMEMEF_NEW_AND_DELETE_OPERATORS(); +-}; +- +-/** +- * Extension pack installation job. +- */ +-typedef struct EXTPACKINSTALLJOB +-{ +- /** Smart pointer to the extension pack file. */ +- ComPtr<ExtPackFile> ptrExtPackFile; +- /** The replace argument. */ +- bool fReplace; +- /** The display info argument. */ +- Utf8Str strDisplayInfo; +- /** Smart pointer to the extension manager. */ +- ComPtr<ExtPackManager> ptrExtPackMgr; +- /** Smart pointer to the progress object for this job. */ +- ComObjPtr<Progress> ptrProgress; +-} EXTPACKINSTALLJOB; +-/** Pointer to an extension pack installation job. */ +-typedef EXTPACKINSTALLJOB *PEXTPACKINSTALLJOB; +- +-/** +- * Extension pack uninstallation job. +- */ +-typedef struct EXTPACKUNINSTALLJOB +-{ +- /** Smart pointer to the extension manager. */ +- ComPtr<ExtPackManager> ptrExtPackMgr; +- /** The name of the extension pack. */ +- Utf8Str strName; +- /** The replace argument. */ +- bool fForcedRemoval; +- /** The display info argument. */ +- Utf8Str strDisplayInfo; +- /** Smart pointer to the progress object for this job. */ +- ComObjPtr<Progress> ptrProgress; +-} EXTPACKUNINSTALLJOB; +-/** Pointer to an extension pack uninstallation job. */ +-typedef EXTPACKUNINSTALLJOB *PEXTPACKUNINSTALLJOB; +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPackFile) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in initWithDir(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPackFile::FinalConstruct() +-{ +- m = NULL; +- return BaseFinalConstruct(); +-} +- +-/** +- * Initializes the extension pack by reading its file. +- * +- * @returns COM status code. +- * @param a_pszFile The path to the extension pack file. +- * @param a_pszDigest The SHA-256 digest of the file. Or an empty string. +- * @param a_pExtPackMgr Pointer to the extension pack manager. +- * @param a_pVirtualBox Pointer to the VirtualBox object. +- */ +-HRESULT ExtPackFile::initWithFile(const char *a_pszFile, const char *a_pszDigest, ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- /* +- * Allocate + initialize our private data. +- */ +- m = new ExtPackFile::Data; +- VBoxExtPackInitDesc(&m->Desc); +- RT_ZERO(m->ObjInfoDesc); +- m->fUsable = false; +- m->strWhyUnusable = tr("ExtPack::init failed"); +- m->strExtPackFile = a_pszFile; +- m->strDigest = a_pszDigest; +- m->hExtPackFile = NIL_RTFILE; +- m->hOurManifest = NIL_RTMANIFEST; +- m->ptrExtPackMgr = a_pExtPackMgr; +- m->pVirtualBox = a_pVirtualBox; +- +- RTCString *pstrTarName = VBoxExtPackExtractNameFromTarballPath(a_pszFile); +- if (pstrTarName) +- { +- m->Desc.strName = *pstrTarName; +- delete pstrTarName; +- pstrTarName = NULL; +- } +- +- autoInitSpan.setSucceeded(); +- +- /* +- * Try open the extension pack and check that it is a regular file. +- */ +- int vrc = RTFileOpen(&m->hExtPackFile, a_pszFile, +- RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN); +- if (RT_FAILURE(vrc)) +- { +- if (vrc == VERR_FILE_NOT_FOUND || vrc == VERR_PATH_NOT_FOUND) +- return initFailed(tr("'%s' file not found"), a_pszFile); +- return initFailed(tr("RTFileOpen('%s',,) failed with %Rrc"), a_pszFile, vrc); +- } +- +- RTFSOBJINFO ObjInfo; +- vrc = RTFileQueryInfo(m->hExtPackFile, &ObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_FAILURE(vrc)) +- return initFailed(tr("RTFileQueryInfo failed with %Rrc on '%s'"), vrc, a_pszFile); +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- return initFailed(tr("Not a regular file: %s"), a_pszFile); +- +- /* +- * Validate the tarball and extract the XML file. +- */ +- char szError[8192]; +- RTVFSFILE hXmlFile; +- vrc = VBoxExtPackValidateTarball(m->hExtPackFile, NULL /*pszExtPackName*/, a_pszFile, a_pszDigest, +- szError, sizeof(szError), &m->hOurManifest, &hXmlFile, &m->strDigest); +- if (RT_FAILURE(vrc)) +- return initFailed(tr("%s"), szError); +- +- /* +- * Parse the XML. +- */ +- RTCString strSavedName(m->Desc.strName); +- RTCString *pStrLoadErr = VBoxExtPackLoadDescFromVfsFile(hXmlFile, &m->Desc, &m->ObjInfoDesc); +- RTVfsFileRelease(hXmlFile); +- if (pStrLoadErr != NULL) +- { +- m->strWhyUnusable.printf(tr("Failed to the xml file: %s"), pStrLoadErr->c_str()); +- m->Desc.strName = strSavedName; +- delete pStrLoadErr; +- return S_OK; +- } +- +- /* +- * Match the tarball name with the name from the XML. +- */ +- /** @todo drop this restriction after the old install interface is +- * dropped. */ +- if (!strSavedName.equalsIgnoreCase(m->Desc.strName)) +- return initFailed(tr("Extension pack name mismatch between the downloaded file and the XML inside it (xml='%s' file='%s')"), +- m->Desc.strName.c_str(), strSavedName.c_str()); +- +- m->fUsable = true; +- m->strWhyUnusable.setNull(); +- return S_OK; +-} +- +-/** +- * Protected helper that formats the strWhyUnusable value. +- * +- * @returns S_OK +- * @param a_pszWhyFmt Why it failed, format string. +- * @param ... The format arguments. +- */ +-HRESULT ExtPackFile::initFailed(const char *a_pszWhyFmt, ...) +-{ +- va_list va; +- va_start(va, a_pszWhyFmt); +- m->strWhyUnusable.printfV(a_pszWhyFmt, va); +- va_end(va); +- return S_OK; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPackFile::FinalRelease() +-{ +- uninit(); +- BaseFinalRelease(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPackFile::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- VBoxExtPackFreeDesc(&m->Desc); +- RTFileClose(m->hExtPackFile); +- m->hExtPackFile = NIL_RTFILE; +- RTManifestRelease(m->hOurManifest); +- m->hOurManifest = NIL_RTMANIFEST; +- +- delete m; +- m = NULL; +- } +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Name)(BSTR *a_pbstrName) +-{ +- CheckComArgOutPointerValid(a_pbstrName); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strName); +- str.cloneTo(a_pbstrName); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Description)(BSTR *a_pbstrDescription) +-{ +- CheckComArgOutPointerValid(a_pbstrDescription); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strDescription); +- str.cloneTo(a_pbstrDescription); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Version)(BSTR *a_pbstrVersion) +-{ +- CheckComArgOutPointerValid(a_pbstrVersion); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* HACK ALERT: This is for easing backporting to 4.1. The edition stuff +- will be changed into a separate */ +- if (m->Desc.strEdition.isEmpty()) +- { +- Bstr str(m->Desc.strVersion); +- str.cloneTo(a_pbstrVersion); +- } +- else +- { +- RTCString strHack(m->Desc.strVersion); +- strHack.append('-'); +- strHack.append(m->Desc.strEdition); +- +- Bstr str(strHack); +- str.cloneTo(a_pbstrVersion); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Revision)(ULONG *a_puRevision) +-{ +- CheckComArgOutPointerValid(a_puRevision); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_puRevision = m->Desc.uRevision; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(VRDEModule)(BSTR *a_pbstrVrdeModule) +-{ +- CheckComArgOutPointerValid(a_pbstrVrdeModule); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strVrdeModule); +- str.cloneTo(a_pbstrVrdeModule); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(PlugIns)(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)) +-{ +- /** @todo implement plug-ins. */ +-#ifdef VBOX_WITH_XPCOM +- NOREF(a_paPlugIns); +- NOREF(a_paPlugInsSize); +-#endif +- ReturnComNotImplemented(); +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(Usable)(BOOL *a_pfUsable) +-{ +- CheckComArgOutPointerValid(a_pfUsable); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfUsable = m->fUsable; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(WhyUnusable)(BSTR *a_pbstrWhy) +-{ +- CheckComArgOutPointerValid(a_pbstrWhy); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strWhyUnusable.cloneTo(a_pbstrWhy); +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(ShowLicense)(BOOL *a_pfShowIt) +-{ +- CheckComArgOutPointerValid(a_pfShowIt); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfShowIt = m->Desc.fShowLicense; +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(License)(BSTR *a_pbstrHtmlLicense) +-{ +- Bstr bstrHtml("html"); +- return QueryLicense(Bstr::Empty.raw(), Bstr::Empty.raw(), bstrHtml.raw(), a_pbstrHtmlLicense); +-} +- +-/* Same as ExtPack::QueryLicense, should really explore the subject of base classes here... */ +-STDMETHODIMP ExtPackFile::QueryLicense(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, IN_BSTR a_bstrFormat, +- BSTR *a_pbstrLicense) +-{ +- /* +- * Validate input. +- */ +- CheckComArgOutPointerValid(a_pbstrLicense); +- CheckComArgNotNull(a_bstrPreferredLocale); +- CheckComArgNotNull(a_bstrPreferredLanguage); +- CheckComArgNotNull(a_bstrFormat); +- +- Utf8Str strPreferredLocale(a_bstrPreferredLocale); +- if (strPreferredLocale.length() != 2 && strPreferredLocale.length() != 0) +- return setError(E_FAIL, tr("The preferred locale is a two character string or empty.")); +- +- Utf8Str strPreferredLanguage(a_bstrPreferredLanguage); +- if (strPreferredLanguage.length() != 2 && strPreferredLanguage.length() != 0) +- return setError(E_FAIL, tr("The preferred lanuage is a two character string or empty.")); +- +- Utf8Str strFormat(a_bstrFormat); +- if ( !strFormat.equals("html") +- && !strFormat.equals("rtf") +- && !strFormat.equals("txt")) +- return setError(E_FAIL, tr("The license format can only have the values 'html', 'rtf' and 'txt'.")); +- +- /* +- * Combine the options to form a file name before locking down anything. +- */ +- char szName[sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX "-de_DE.html") + 2]; +- if (strPreferredLocale.isNotEmpty() && strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s_%s.%s", +- strPreferredLocale.c_str(), strPreferredLanguage.c_str(), strFormat.c_str()); +- else if (strPreferredLocale.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else if (strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-_%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX ".%s", strFormat.c_str()); +- +- /* +- * Lock the extension pack. We need a write lock here as there must not be +- * concurrent accesses to the tar file handle. +- */ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Do not permit this query on a pack that isn't considered usable (could +- * be marked so because of bad license files). +- */ +- if (!m->fUsable) +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- else +- { +- /* +- * Look it up in the manifest before scanning the tarball for it +- */ +- if (RTManifestEntryExists(m->hOurManifest, szName)) +- { +- RTVFSFSSTREAM hTarFss; +- char szError[8192]; +- int vrc = VBoxExtPackOpenTarFss(m->hExtPackFile, szError, sizeof(szError), &hTarFss, NULL); +- if (RT_SUCCESS(vrc)) +- { +- for (;;) +- { +- /* Get the first/next. */ +- char *pszName; +- RTVFSOBJ hVfsObj; +- RTVFSOBJTYPE enmType; +- vrc = RTVfsFsStrmNext(hTarFss, &pszName, &enmType, &hVfsObj); +- if (RT_FAILURE(vrc)) +- { +- if (vrc != VERR_EOF) +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTVfsFsStrmNext failed: %Rrc"), vrc); +- else +- hrc = setError(E_UNEXPECTED, tr("'%s' was found in the manifest but not in the tarball"), szName); +- break; +- } +- +- /* Is this it? */ +- const char *pszAdjName = pszName[0] == '.' && pszName[1] == '/' ? &pszName[2] : pszName; +- if ( !strcmp(pszAdjName, szName) +- && ( enmType == RTVFSOBJTYPE_IO_STREAM +- || enmType == RTVFSOBJTYPE_FILE)) +- { +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(hVfsObj); +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- +- /* Load the file into memory. */ +- RTFSOBJINFO ObjInfo; +- vrc = RTVfsIoStrmQueryInfo(hVfsIos, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(vrc)) +- { +- size_t cbFile = (size_t)ObjInfo.cbObject; +- void *pvFile = RTMemAllocZ(cbFile + 1); +- if (pvFile) +- { +- vrc = RTVfsIoStrmRead(hVfsIos, pvFile, cbFile, true /*fBlocking*/, NULL); +- if (RT_SUCCESS(vrc)) +- { +- /* try translate it into a string we can return. */ +- Bstr bstrLicense((const char *)pvFile, cbFile); +- if (bstrLicense.isNotEmpty()) +- { +- bstrLicense.detachTo(a_pbstrLicense); +- hrc = S_OK; +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, +- tr("The license file '%s' is empty or contains invalid UTF-8 encoding"), +- szName); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("Failed to read '%s': %Rrc"), szName, vrc); +- RTMemFree(pvFile); +- } +- else +- hrc = setError(E_OUTOFMEMORY, tr("Failed to allocate %zu bytes for '%s'"), cbFile, szName); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTVfsIoStrmQueryInfo on '%s': %Rrc"), szName, vrc); +- RTVfsIoStrmRelease(hVfsIos); +- break; +- } +- +- /* Release current. */ +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- } +- RTVfsFsStrmRelease(hTarFss); +- } +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("%s"), szError); +- } +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("The license file '%s' was not found in '%s'"), +- szName, m->strExtPackFile.c_str()); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::COMGETTER(FilePath)(BSTR *a_pbstrPath) +-{ +- CheckComArgOutPointerValid(a_pbstrPath); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strExtPackFile.cloneTo(a_pbstrPath); +- return hrc; +-} +- +-STDMETHODIMP ExtPackFile::Install(BOOL a_fReplace, IN_BSTR a_bstrDisplayInfo, IProgress **a_ppProgress) +-{ +- if (a_ppProgress) +- *a_ppProgress = NULL; +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- if (m->fUsable) +- { +- PEXTPACKINSTALLJOB pJob = NULL; +- try +- { +- pJob = new EXTPACKINSTALLJOB; +- pJob->ptrExtPackFile = this; +- pJob->fReplace = a_fReplace != FALSE; +- pJob->strDisplayInfo = a_bstrDisplayInfo; +- pJob->ptrExtPackMgr = m->ptrExtPackMgr; +- hrc = pJob->ptrProgress.createObject(); +- if (SUCCEEDED(hrc)) +- { +- Bstr bstrDescription = tr("Installing extension pack"); +- hrc = pJob->ptrProgress->init( +-#ifndef VBOX_COM_INPROC +- m->pVirtualBox, +-#endif +- static_cast<IExtPackFile *>(this), +- bstrDescription.raw(), +- FALSE /*aCancelable*/, +- NULL /*aId*/); +- } +- if (SUCCEEDED(hrc)) +- { +- ComPtr<Progress> ptrProgress = pJob->ptrProgress; +- int vrc = RTThreadCreate(NULL /*phThread*/, ExtPackManager::doInstallThreadProc, pJob, 0, +- RTTHREADTYPE_DEFAULT, 0 /*fFlags*/, "ExtPackInst"); +- if (RT_SUCCESS(vrc)) +- { +- pJob = NULL; /* the thread deletes it */ +- ptrProgress.queryInterfaceTo(a_ppProgress); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTThreadCreate failed with %Rrc"), vrc); +- } +- } +- catch (std::bad_alloc) +- { +- hrc = E_OUTOFMEMORY; +- } +- if (pJob) +- delete pJob; +- } +- else +- hrc = setError(E_FAIL, "%s", m->strWhyUnusable.c_str()); +- } +- return hrc; +-} +- +- +- +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPack) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in initWithDir(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPack::FinalConstruct() +-{ +- m = NULL; +- return S_OK; +-} +- +-/** +- * Initializes the extension pack by reading its file. +- * +- * @returns COM status code. +- * @param a_enmContext The context we're in. +- * @param a_pszName The name of the extension pack. This is also the +- * name of the subdirector under @a a_pszParentDir +- * where the extension pack is installed. +- * @param a_pszDir The extension pack directory name. +- */ +-HRESULT ExtPack::initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- static const VBOXEXTPACKHLP s_HlpTmpl = +- { +- /* u32Version = */ VBOXEXTPACKHLP_VERSION, +- /* uVBoxFullVersion = */ VBOX_FULL_VERSION, +- /* uVBoxVersionRevision = */ 0, +- /* u32Padding = */ 0, +- /* pszVBoxVersion = */ "", +- /* pfnFindModule = */ ExtPack::hlpFindModule, +- /* pfnGetFilePath = */ ExtPack::hlpGetFilePath, +- /* pfnGetContext = */ ExtPack::hlpGetContext, +- /* pfnReserved1 = */ ExtPack::hlpReservedN, +- /* pfnReserved2 = */ ExtPack::hlpReservedN, +- /* pfnReserved3 = */ ExtPack::hlpReservedN, +- /* pfnReserved4 = */ ExtPack::hlpReservedN, +- /* pfnReserved5 = */ ExtPack::hlpReservedN, +- /* pfnReserved6 = */ ExtPack::hlpReservedN, +- /* pfnReserved7 = */ ExtPack::hlpReservedN, +- /* pfnReserved8 = */ ExtPack::hlpReservedN, +- /* pfnReserved9 = */ ExtPack::hlpReservedN, +- /* u32EndMarker = */ VBOXEXTPACKHLP_VERSION +- }; +- +- /* +- * Allocate + initialize our private data. +- */ +- m = new Data; +- VBoxExtPackInitDesc(&m->Desc); +- m->Desc.strName = a_pszName; +- RT_ZERO(m->ObjInfoDesc); +- m->fUsable = false; +- m->strWhyUnusable = tr("ExtPack::init failed"); +- m->strExtPackPath = a_pszDir; +- RT_ZERO(m->ObjInfoExtPack); +- m->strMainModPath.setNull(); +- RT_ZERO(m->ObjInfoMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->Hlp = s_HlpTmpl; +- m->Hlp.pszVBoxVersion = RTBldCfgVersion(); +- m->Hlp.uVBoxInternalRevision = RTBldCfgRevision(); +- m->pThis = this; +- m->pReg = NULL; +- m->enmContext = a_enmContext; +- m->fMadeReadyCall = false; +- +- /* +- * Probe the extension pack (this code is shared with refresh()). +- */ +- probeAndLoad(); +- +- autoInitSpan.setSucceeded(); +- return S_OK; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPack::FinalRelease() +-{ +- uninit(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPack::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- if (m->hMainMod != NIL_RTLDRMOD) +- { +- AssertPtr(m->pReg); +- if (m->pReg->pfnUnload != NULL) +- m->pReg->pfnUnload(m->pReg); +- +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->pReg = NULL; +- } +- +- VBoxExtPackFreeDesc(&m->Desc); +- +- delete m; +- m = NULL; +- } +-} +- +- +-/** +- * Calls the installed hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pLock The write lock held by the caller. +- * @param pErrInfo Where to return error information. +- */ +-bool ExtPack::callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo) +-{ +- if ( m != NULL +- && m->hMainMod != NIL_RTLDRMOD) +- { +- if (m->pReg->pfnInstalled) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- pErrInfo->rc = m->pReg->pfnInstalled(m->pReg, a_pVirtualBox, pErrInfo); +- a_pLock->acquire(); +- return true; +- } +- } +- pErrInfo->rc = VINF_SUCCESS; +- return false; +-} +- +-/** +- * Calls the uninstall hook and closes the module. +- * +- * @returns S_OK or COM error status with error information. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_fForcedRemoval When set, we'll ignore complaints from the +- * uninstall hook. +- * @remarks The caller holds the manager's write lock, not released. +- */ +-HRESULT ExtPack::callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval) +-{ +- HRESULT hrc = S_OK; +- +- if ( m != NULL +- && m->hMainMod != NIL_RTLDRMOD) +- { +- if (m->pReg->pfnUninstall && !a_fForcedRemoval) +- { +- int vrc = m->pReg->pfnUninstall(m->pReg, a_pVirtualBox); +- if (RT_FAILURE(vrc)) +- { +- LogRel(("ExtPack pfnUninstall returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- if (!a_fForcedRemoval) +- hrc = setError(E_FAIL, tr("pfnUninstall returned %Rrc"), vrc); +- } +- } +- if (SUCCEEDED(hrc)) +- { +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +- m->pReg = NULL; +- } +- } +- +- return hrc; +-} +- +-/** +- * Calls the pfnVirtualBoxReady hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable +- && !m->fMadeReadyCall) +- { +- m->fMadeReadyCall = true; +- if (m->pReg->pfnVirtualBoxReady) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVirtualBoxReady(m->pReg, a_pVirtualBox); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnConsoleReady hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The Console interface. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable +- && !m->fMadeReadyCall) +- { +- m->fMadeReadyCall = true; +- if (m->pReg->pfnConsoleReady) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnConsoleReady(m->pReg, a_pConsole); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMCreate hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pVirtualBox The VirtualBox interface. +- * @param a_pMachine The machine interface of the new VM. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMCreated) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVMCreated(m->pReg, a_pVirtualBox, a_pMachine); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMConfigureVMM hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- * @param a_pvrc Where to return the status code of the +- * callback. This is always set. LogRel is +- * called on if a failure status is returned. +- */ +-bool ExtPack::callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc) +-{ +- *a_pvrc = VINF_SUCCESS; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMConfigureVMM) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- int vrc = m->pReg->pfnVMConfigureVMM(m->pReg, a_pConsole, a_pVM); +- *a_pvrc = vrc; +- a_pLock->acquire(); +- if (RT_FAILURE(vrc)) +- LogRel(("ExtPack pfnVMConfigureVMM returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMPowerOn hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- * @param a_pvrc Where to return the status code of the +- * callback. This is always set. LogRel is +- * called on if a failure status is returned. +- */ +-bool ExtPack::callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc) +-{ +- *a_pvrc = VINF_SUCCESS; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMPowerOn) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- int vrc = m->pReg->pfnVMPowerOn(m->pReg, a_pConsole, a_pVM); +- *a_pvrc = vrc; +- a_pLock->acquire(); +- if (RT_FAILURE(vrc)) +- LogRel(("ExtPack pfnVMPowerOn returned %Rrc for %s\n", vrc, m->Desc.strName.c_str())); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Calls the pfnVMPowerOff hook. +- * +- * @returns true if we left the lock, false if we didn't. +- * @param a_pConsole The console interface. +- * @param a_pVM The VM handle. +- * @param a_pLock The write lock held by the caller. +- */ +-bool ExtPack::callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock) +-{ +- if ( m != NULL +- && m->fUsable) +- { +- if (m->pReg->pfnVMPowerOff) +- { +- ComPtr<ExtPack> ptrSelfRef = this; +- a_pLock->release(); +- m->pReg->pfnVMPowerOff(m->pReg, a_pConsole, a_pVM); +- a_pLock->acquire(); +- return true; +- } +- } +- return false; +-} +- +-/** +- * Check if the extension pack is usable and has an VRDE module. +- * +- * @returns S_OK or COM error status with error information. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-HRESULT ExtPack::checkVrde(void) +-{ +- HRESULT hrc; +- if ( m != NULL +- && m->fUsable) +- { +- if (m->Desc.strVrdeModule.isNotEmpty()) +- hrc = S_OK; +- else +- hrc = setError(E_FAIL, tr("The extension pack '%s' does not include a VRDE module"), m->Desc.strName.c_str()); +- } +- else +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- return hrc; +-} +- +-/** +- * Same as checkVrde(), except that it also resolves the path to the module. +- * +- * @returns S_OK or COM error status with error information. +- * @param a_pstrVrdeLibrary Where to return the path on success. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-HRESULT ExtPack::getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary) +-{ +- HRESULT hrc = checkVrde(); +- if (SUCCEEDED(hrc)) +- { +- if (findModule(m->Desc.strVrdeModule.c_str(), NULL, VBOXEXTPACKMODKIND_R3, +- a_pstrVrdeLibrary, NULL /*a_pfNative*/, NULL /*a_pObjInfo*/)) +- hrc = S_OK; +- else +- hrc = setError(E_FAIL, tr("Failed to locate the VRDE module '%s' in extension pack '%s'"), +- m->Desc.strVrdeModule.c_str(), m->Desc.strName.c_str()); +- } +- return hrc; +-} +- +-/** +- * Check if this extension pack wishes to be the default VRDE provider. +- * +- * @returns @c true if it wants to and it is in a usable state, otherwise +- * @c false. +- * +- * @remarks Caller holds the extension manager lock for reading, no locking +- * necessary. +- */ +-bool ExtPack::wantsToBeDefaultVrde(void) const +-{ +- return m->fUsable +- && m->Desc.strVrdeModule.isNotEmpty(); +-} +- +-/** +- * Refreshes the extension pack state. +- * +- * This is called by the manager so that the on disk changes are picked up. +- * +- * @returns S_OK or COM error status with error information. +- * +- * @param a_pfCanDelete Optional can-delete-this-object output indicator. +- * +- * @remarks Caller holds the extension manager lock for writing. +- * @remarks Only called in VBoxSVC. +- */ +-HRESULT ExtPack::refresh(bool *a_pfCanDelete) +-{ +- if (a_pfCanDelete) +- *a_pfCanDelete = false; +- +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); /* for the COMGETTERs */ +- +- /* +- * Has the module been deleted? +- */ +- RTFSOBJINFO ObjInfoExtPack; +- int vrc = RTPathQueryInfoEx(m->strExtPackPath.c_str(), &ObjInfoExtPack, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if ( RT_FAILURE(vrc) +- || !RTFS_IS_DIRECTORY(ObjInfoExtPack.Attr.fMode)) +- { +- if (a_pfCanDelete) +- *a_pfCanDelete = true; +- return S_OK; +- } +- +- /* +- * We've got a directory, so try query file system object info for the +- * files we are interested in as well. +- */ +- RTFSOBJINFO ObjInfoDesc; +- char szDescFilePath[RTPATH_MAX]; +- vrc = RTPathJoin(szDescFilePath, sizeof(szDescFilePath), m->strExtPackPath.c_str(), VBOX_EXTPACK_DESCRIPTION_NAME); +- if (RT_SUCCESS(vrc)) +- vrc = RTPathQueryInfoEx(szDescFilePath, &ObjInfoDesc, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- RT_ZERO(ObjInfoDesc); +- +- RTFSOBJINFO ObjInfoMainMod; +- if (m->strMainModPath.isNotEmpty()) +- vrc = RTPathQueryInfoEx(m->strMainModPath.c_str(), &ObjInfoMainMod, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (m->strMainModPath.isEmpty() || RT_FAILURE(vrc)) +- RT_ZERO(ObjInfoMainMod); +- +- /* +- * If we have a usable module already, just verify that things haven't +- * changed since we loaded it. +- */ +- if (m->fUsable) +- { +- if (m->hMainMod == NIL_RTLDRMOD) +- probeAndLoad(); +- else if ( !objinfoIsEqual(&ObjInfoDesc, &m->ObjInfoDesc) +- || !objinfoIsEqual(&ObjInfoMainMod, &m->ObjInfoMainMod) +- || !objinfoIsEqual(&ObjInfoExtPack, &m->ObjInfoExtPack) ) +- { +- /** @todo not important, so it can wait. */ +- } +- } +- /* +- * Ok, it is currently not usable. If anything has changed since last time +- * reprobe the extension pack. +- */ +- else if ( !objinfoIsEqual(&ObjInfoDesc, &m->ObjInfoDesc) +- || !objinfoIsEqual(&ObjInfoMainMod, &m->ObjInfoMainMod) +- || !objinfoIsEqual(&ObjInfoExtPack, &m->ObjInfoExtPack) ) +- probeAndLoad(); +- +- return S_OK; +-} +- +-/** +- * Probes the extension pack, loading the main dll and calling its registration +- * entry point. +- * +- * This updates the state accordingly, the strWhyUnusable and fUnusable members +- * being the most important ones. +- */ +-void ExtPack::probeAndLoad(void) +-{ +- m->fUsable = false; +- m->fMadeReadyCall = false; +- +- /* +- * Query the file system info for the extension pack directory. This and +- * all other file system info we save is for the benefit of refresh(). +- */ +- int vrc = RTPathQueryInfoEx(m->strExtPackPath.c_str(), &m->ObjInfoExtPack, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("RTPathQueryInfoEx on '%s' failed: %Rrc"), m->strExtPackPath.c_str(), vrc); +- return; +- } +- if (!RTFS_IS_DIRECTORY(m->ObjInfoExtPack.Attr.fMode)) +- { +- if (RTFS_IS_SYMLINK(m->ObjInfoExtPack.Attr.fMode)) +- m->strWhyUnusable.printf(tr("'%s' is a symbolic link, this is not allowed"), m->strExtPackPath.c_str(), vrc); +- else if (RTFS_IS_FILE(m->ObjInfoExtPack.Attr.fMode)) +- m->strWhyUnusable.printf(tr("'%s' is a symbolic file, not a directory"), m->strExtPackPath.c_str(), vrc); +- else +- m->strWhyUnusable.printf(tr("'%s' is not a directory (fMode=%#x)"), m->strExtPackPath.c_str(), m->ObjInfoExtPack.Attr.fMode); +- return; +- } +- +- RTERRINFOSTATIC ErrInfo; +- RTErrInfoInitStatic(&ErrInfo); +- vrc = SUPR3HardenedVerifyDir(m->strExtPackPath.c_str(), true /*fRecursive*/, true /*fCheckFiles*/, &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("%s (rc=%Rrc)"), ErrInfo.Core.pszMsg, vrc); +- return; +- } +- +- /* +- * Read the description file. +- */ +- RTCString strSavedName(m->Desc.strName); +- RTCString *pStrLoadErr = VBoxExtPackLoadDesc(m->strExtPackPath.c_str(), &m->Desc, &m->ObjInfoDesc); +- if (pStrLoadErr != NULL) +- { +- m->strWhyUnusable.printf(tr("Failed to load '%s/%s': %s"), +- m->strExtPackPath.c_str(), VBOX_EXTPACK_DESCRIPTION_NAME, pStrLoadErr->c_str()); +- m->Desc.strName = strSavedName; +- delete pStrLoadErr; +- return; +- } +- +- /* +- * Make sure the XML name and directory matches. +- */ +- if (!m->Desc.strName.equalsIgnoreCase(strSavedName)) +- { +- m->strWhyUnusable.printf(tr("The description name ('%s') and directory name ('%s') does not match"), +- m->Desc.strName.c_str(), strSavedName.c_str()); +- m->Desc.strName = strSavedName; +- return; +- } +- +- /* +- * Load the main DLL and call the predefined entry point. +- */ +- bool fIsNative; +- if (!findModule(m->Desc.strMainModule.c_str(), NULL /* default extension */, VBOXEXTPACKMODKIND_R3, +- &m->strMainModPath, &fIsNative, &m->ObjInfoMainMod)) +- { +- m->strWhyUnusable.printf(tr("Failed to locate the main module ('%s')"), m->Desc.strMainModule.c_str()); +- return; +- } +- +- vrc = SUPR3HardenedVerifyPlugIn(m->strMainModPath.c_str(), &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->strWhyUnusable.printf(tr("%s"), ErrInfo.Core.pszMsg); +- return; +- } +- +- if (fIsNative) +- { +- vrc = SUPR3HardenedLdrLoadPlugIn(m->strMainModPath.c_str(), &m->hMainMod, &ErrInfo.Core); +- if (RT_FAILURE(vrc)) +- { +- m->hMainMod = NIL_RTLDRMOD; +- m->strWhyUnusable.printf(tr("Failed to load the main module ('%s'): %Rrc - %s"), +- m->strMainModPath.c_str(), vrc, ErrInfo.Core.pszMsg); +- return; +- } +- } +- else +- { +- m->strWhyUnusable.printf(tr("Only native main modules are currently supported")); +- return; +- } +- +- /* +- * Resolve the predefined entry point. +- */ +- PFNVBOXEXTPACKREGISTER pfnRegistration; +- vrc = RTLdrGetSymbol(m->hMainMod, VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, (void **)&pfnRegistration); +- if (RT_SUCCESS(vrc)) +- { +- RTErrInfoClear(&ErrInfo.Core); +- vrc = pfnRegistration(&m->Hlp, &m->pReg, &ErrInfo.Core); +- if ( RT_SUCCESS(vrc) +- && !RTErrInfoIsSet(&ErrInfo.Core) +- && VALID_PTR(m->pReg)) +- { +- if ( VBOXEXTPACK_IS_MAJOR_VER_EQUAL(m->pReg->u32Version, VBOXEXTPACKREG_VERSION) +- && m->pReg->u32EndMarker == m->pReg->u32Version) +- { +- if ( (!m->pReg->pfnInstalled || RT_VALID_PTR(m->pReg->pfnInstalled)) +- && (!m->pReg->pfnUninstall || RT_VALID_PTR(m->pReg->pfnUninstall)) +- && (!m->pReg->pfnVirtualBoxReady || RT_VALID_PTR(m->pReg->pfnVirtualBoxReady)) +- && (!m->pReg->pfnConsoleReady || RT_VALID_PTR(m->pReg->pfnConsoleReady)) +- && (!m->pReg->pfnUnload || RT_VALID_PTR(m->pReg->pfnUnload)) +- && (!m->pReg->pfnVMCreated || RT_VALID_PTR(m->pReg->pfnVMCreated)) +- && (!m->pReg->pfnVMConfigureVMM || RT_VALID_PTR(m->pReg->pfnVMConfigureVMM)) +- && (!m->pReg->pfnVMPowerOn || RT_VALID_PTR(m->pReg->pfnVMPowerOn)) +- && (!m->pReg->pfnVMPowerOff || RT_VALID_PTR(m->pReg->pfnVMPowerOff)) +- && (!m->pReg->pfnQueryObject || RT_VALID_PTR(m->pReg->pfnQueryObject)) +- ) +- { +- /* +- * We're good! +- */ +- m->fUsable = true; +- m->strWhyUnusable.setNull(); +- return; +- } +- +- m->strWhyUnusable = tr("The registration structure contains on or more invalid function pointers"); +- } +- else +- m->strWhyUnusable.printf(tr("Unsupported registration structure version %u.%u"), +- RT_HIWORD(m->pReg->u32Version), RT_LOWORD(m->pReg->u32Version)); +- } +- else +- m->strWhyUnusable.printf(tr("%s returned %Rrc, pReg=%p ErrInfo='%s'"), +- VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, vrc, m->pReg, ErrInfo.Core.pszMsg); +- m->pReg = NULL; +- } +- else +- m->strWhyUnusable.printf(tr("Failed to resolve exported symbol '%s' in the main module: %Rrc"), +- VBOX_EXTPACK_MAIN_MOD_ENTRY_POINT, vrc); +- +- RTLdrClose(m->hMainMod); +- m->hMainMod = NIL_RTLDRMOD; +-} +- +-/** +- * Finds a module. +- * +- * @returns true if found, false if not. +- * @param a_pszName The module base name (no extension). +- * @param a_pszExt The extension. If NULL we use default +- * extensions. +- * @param a_enmKind The kind of module to locate. +- * @param a_pStrFound Where to return the path to the module we've +- * found. +- * @param a_pfNative Where to return whether this is a native module +- * or an agnostic one. Optional. +- * @param a_pObjInfo Where to return the file system object info for +- * the module. Optional. +- */ +-bool ExtPack::findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind, +- Utf8Str *a_pStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const +-{ +- /* +- * Try the native path first. +- */ +- char szPath[RTPATH_MAX]; +- int vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), RTBldCfgTargetDotArch()); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- const char *pszDefExt; +- switch (a_enmKind) +- { +- case VBOXEXTPACKMODKIND_RC: pszDefExt = ".rc"; break; +- case VBOXEXTPACKMODKIND_R0: pszDefExt = ".r0"; break; +- case VBOXEXTPACKMODKIND_R3: pszDefExt = RTLdrGetSuff(); break; +- default: +- AssertFailedReturn(false); +- } +- vrc = RTStrCat(szPath, sizeof(szPath), pszDefExt); +- AssertLogRelRCReturn(vrc, false); +- } +- +- RTFSOBJINFO ObjInfo; +- if (!a_pObjInfo) +- a_pObjInfo = &ObjInfo; +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = true; +- *a_pStrFound = szPath; +- return true; +- } +- +- /* +- * Try the platform agnostic modules. +- */ +- /* gcc.x86/module.rel */ +- char szSubDir[32]; +- RTStrPrintf(szSubDir, sizeof(szSubDir), "%s.%s", RTBldCfgCompiler(), RTBldCfgTargetArch()); +- vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), szSubDir); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- vrc = RTStrCat(szPath, sizeof(szPath), ".rel"); +- AssertLogRelRCReturn(vrc, false); +- } +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = false; +- *a_pStrFound = szPath; +- return true; +- } +- +- /* x86/module.rel */ +- vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), RTBldCfgTargetArch()); +- AssertLogRelRCReturn(vrc, false); +- vrc = RTPathAppend(szPath, sizeof(szPath), a_pszName); +- AssertLogRelRCReturn(vrc, false); +- if (!a_pszExt) +- { +- vrc = RTStrCat(szPath, sizeof(szPath), ".rel"); +- AssertLogRelRCReturn(vrc, false); +- } +- vrc = RTPathQueryInfo(szPath, a_pObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_SUCCESS(vrc) && RTFS_IS_FILE(a_pObjInfo->Attr.fMode)) +- { +- if (a_pfNative) +- *a_pfNative = false; +- *a_pStrFound = szPath; +- return true; +- } +- +- return false; +-} +- +-/** +- * Compares two file system object info structures. +- * +- * @returns true if equal, false if not. +- * @param pObjInfo1 The first. +- * @param pObjInfo2 The second. +- * @todo IPRT should do this, really. +- */ +-/* static */ bool ExtPack::objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2) +-{ +- if (!RTTimeSpecIsEqual(&pObjInfo1->ModificationTime, &pObjInfo2->ModificationTime)) +- return false; +- if (!RTTimeSpecIsEqual(&pObjInfo1->ChangeTime, &pObjInfo2->ChangeTime)) +- return false; +- if (!RTTimeSpecIsEqual(&pObjInfo1->BirthTime, &pObjInfo2->BirthTime)) +- return false; +- if (pObjInfo1->cbObject != pObjInfo2->cbObject) +- return false; +- if (pObjInfo1->Attr.fMode != pObjInfo2->Attr.fMode) +- return false; +- if (pObjInfo1->Attr.enmAdditional == pObjInfo2->Attr.enmAdditional) +- { +- switch (pObjInfo1->Attr.enmAdditional) +- { +- case RTFSOBJATTRADD_UNIX: +- if (pObjInfo1->Attr.u.Unix.uid != pObjInfo2->Attr.u.Unix.uid) +- return false; +- if (pObjInfo1->Attr.u.Unix.gid != pObjInfo2->Attr.u.Unix.gid) +- return false; +- if (pObjInfo1->Attr.u.Unix.INodeIdDevice != pObjInfo2->Attr.u.Unix.INodeIdDevice) +- return false; +- if (pObjInfo1->Attr.u.Unix.INodeId != pObjInfo2->Attr.u.Unix.INodeId) +- return false; +- if (pObjInfo1->Attr.u.Unix.GenerationId != pObjInfo2->Attr.u.Unix.GenerationId) +- return false; +- break; +- default: +- break; +- } +- } +- return true; +-} +- +- +-/** +- * @interface_method_impl{VBOXEXTPACKHLP,pfnFindModule} +- */ +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt, VBOXEXTPACKMODKIND enmKind, +- char *pszFound, size_t cbFound, bool *pfNative) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pszName, VERR_INVALID_POINTER); +- AssertPtrNullReturn(pszExt, VERR_INVALID_POINTER); +- AssertPtrReturn(pszFound, VERR_INVALID_POINTER); +- AssertPtrNullReturn(pfNative, VERR_INVALID_POINTER); +- AssertReturn(enmKind > VBOXEXTPACKMODKIND_INVALID && enmKind < VBOXEXTPACKMODKIND_END, VERR_INVALID_PARAMETER); +- +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- /* +- * This is just a wrapper around findModule. +- */ +- Utf8Str strFound; +- if (pThis->findModule(pszName, pszExt, enmKind, &strFound, pfNative, NULL)) +- return RTStrCopy(pszFound, cbFound, strFound.c_str()); +- return VERR_FILE_NOT_FOUND; +-} +- +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pszFilename, VERR_INVALID_POINTER); +- AssertPtrReturn(pszPath, VERR_INVALID_POINTER); +- AssertReturn(cbPath > 0, VERR_BUFFER_OVERFLOW); +- +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- /* +- * This is a simple RTPathJoin, no checking if things exists or anything. +- */ +- int vrc = RTPathJoin(pszPath, cbPath, pThis->m->strExtPackPath.c_str(), pszFilename); +- if (RT_FAILURE(vrc)) +- RT_BZERO(pszPath, cbPath); +- return vrc; +-} +- +-/*static*/ DECLCALLBACK(VBOXEXTPACKCTX) +-ExtPack::hlpGetContext(PCVBOXEXTPACKHLP pHlp) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pHlp, VBOXEXTPACKCTX_INVALID); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VBOXEXTPACKCTX_INVALID); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VBOXEXTPACKCTX_INVALID); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VBOXEXTPACKCTX_INVALID); +- +- return pThis->m->enmContext; +-} +- +-/*static*/ DECLCALLBACK(int) +-ExtPack::hlpReservedN(PCVBOXEXTPACKHLP pHlp) +-{ +- /* +- * Validate the input and get our bearings. +- */ +- AssertPtrReturn(pHlp, VERR_INVALID_POINTER); +- AssertReturn(pHlp->u32Version == VBOXEXTPACKHLP_VERSION, VERR_INVALID_POINTER); +- ExtPack::Data *m = RT_FROM_CPP_MEMBER(pHlp, Data, Hlp); +- AssertPtrReturn(m, VERR_INVALID_POINTER); +- ExtPack *pThis = m->pThis; +- AssertPtrReturn(pThis, VERR_INVALID_POINTER); +- +- return VERR_NOT_IMPLEMENTED; +-} +- +- +- +- +- +-STDMETHODIMP ExtPack::COMGETTER(Name)(BSTR *a_pbstrName) +-{ +- CheckComArgOutPointerValid(a_pbstrName); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strName); +- str.cloneTo(a_pbstrName); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Description)(BSTR *a_pbstrDescription) +-{ +- CheckComArgOutPointerValid(a_pbstrDescription); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strDescription); +- str.cloneTo(a_pbstrDescription); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Version)(BSTR *a_pbstrVersion) +-{ +- CheckComArgOutPointerValid(a_pbstrVersion); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* HACK ALERT: This is for easing backporting to 4.1. The edition stuff +- will be changed into a separate */ +- if (m->Desc.strEdition.isEmpty()) +- { +- Bstr str(m->Desc.strVersion); +- str.cloneTo(a_pbstrVersion); +- } +- else +- { +- RTCString strHack(m->Desc.strVersion); +- strHack.append('-'); +- strHack.append(m->Desc.strEdition); +- +- Bstr str(strHack); +- str.cloneTo(a_pbstrVersion); +- } +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Revision)(ULONG *a_puRevision) +-{ +- CheckComArgOutPointerValid(a_puRevision); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_puRevision = m->Desc.uRevision; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(VRDEModule)(BSTR *a_pbstrVrdeModule) +-{ +- CheckComArgOutPointerValid(a_pbstrVrdeModule); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- Bstr str(m->Desc.strVrdeModule); +- str.cloneTo(a_pbstrVrdeModule); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(PlugIns)(ComSafeArrayOut(IExtPackPlugIn *, a_paPlugIns)) +-{ +- /** @todo implement plug-ins. */ +-#ifdef VBOX_WITH_XPCOM +- NOREF(a_paPlugIns); +- NOREF(a_paPlugInsSize); +-#endif +- ReturnComNotImplemented(); +-} +- +-STDMETHODIMP ExtPack::COMGETTER(Usable)(BOOL *a_pfUsable) +-{ +- CheckComArgOutPointerValid(a_pfUsable); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfUsable = m->fUsable; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(WhyUnusable)(BSTR *a_pbstrWhy) +-{ +- CheckComArgOutPointerValid(a_pbstrWhy); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- m->strWhyUnusable.cloneTo(a_pbstrWhy); +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(ShowLicense)(BOOL *a_pfShowIt) +-{ +- CheckComArgOutPointerValid(a_pfShowIt); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- *a_pfShowIt = m->Desc.fShowLicense; +- return hrc; +-} +- +-STDMETHODIMP ExtPack::COMGETTER(License)(BSTR *a_pbstrHtmlLicense) +-{ +- Bstr bstrHtml("html"); +- return QueryLicense(Bstr::Empty.raw(), Bstr::Empty.raw(), bstrHtml.raw(), a_pbstrHtmlLicense); +-} +- +-STDMETHODIMP ExtPack::QueryLicense(IN_BSTR a_bstrPreferredLocale, IN_BSTR a_bstrPreferredLanguage, IN_BSTR a_bstrFormat, +- BSTR *a_pbstrLicense) +-{ +- /* +- * Validate input. +- */ +- CheckComArgOutPointerValid(a_pbstrLicense); +- CheckComArgNotNull(a_bstrPreferredLocale); +- CheckComArgNotNull(a_bstrPreferredLanguage); +- CheckComArgNotNull(a_bstrFormat); +- +- Utf8Str strPreferredLocale(a_bstrPreferredLocale); +- if (strPreferredLocale.length() != 2 && strPreferredLocale.length() != 0) +- return setError(E_FAIL, tr("The preferred locale is a two character string or empty.")); +- +- Utf8Str strPreferredLanguage(a_bstrPreferredLanguage); +- if (strPreferredLanguage.length() != 2 && strPreferredLanguage.length() != 0) +- return setError(E_FAIL, tr("The preferred lanuage is a two character string or empty.")); +- +- Utf8Str strFormat(a_bstrFormat); +- if ( !strFormat.equals("html") +- && !strFormat.equals("rtf") +- && !strFormat.equals("txt")) +- return setError(E_FAIL, tr("The license format can only have the values 'html', 'rtf' and 'txt'.")); +- +- /* +- * Combine the options to form a file name before locking down anything. +- */ +- char szName[sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX "-de_DE.html") + 2]; +- if (strPreferredLocale.isNotEmpty() && strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s_%s.%s", +- strPreferredLocale.c_str(), strPreferredLanguage.c_str(), strFormat.c_str()); +- else if (strPreferredLocale.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else if (strPreferredLanguage.isNotEmpty()) +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX "-_%s.%s", strPreferredLocale.c_str(), strFormat.c_str()); +- else +- RTStrPrintf(szName, sizeof(szName), VBOX_EXTPACK_LICENSE_NAME_PREFIX ".%s", strFormat.c_str()); +- +- /* +- * Effectuate the query. +- */ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); /* paranoia */ +- +- if (!m->fUsable) +- hrc = setError(E_FAIL, tr("%s"), m->strWhyUnusable.c_str()); +- else +- { +- char szPath[RTPATH_MAX]; +- int vrc = RTPathJoin(szPath, sizeof(szPath), m->strExtPackPath.c_str(), szName); +- if (RT_SUCCESS(vrc)) +- { +- void *pvFile; +- size_t cbFile; +- vrc = RTFileReadAllEx(szPath, 0, RTFOFF_MAX, RTFILE_RDALL_O_DENY_READ, &pvFile, &cbFile); +- if (RT_SUCCESS(vrc)) +- { +- Bstr bstrLicense((const char *)pvFile, cbFile); +- if (bstrLicense.isNotEmpty()) +- { +- bstrLicense.detachTo(a_pbstrLicense); +- hrc = S_OK; +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("The license file '%s' is empty or contains invalid UTF-8 encoding"), +- szPath); +- RTFileReadAllFree(pvFile, cbFile); +- } +- else if (vrc == VERR_FILE_NOT_FOUND || vrc == VERR_PATH_NOT_FOUND) +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("The license file '%s' was not found in extension pack '%s'"), +- szName, m->Desc.strName.c_str()); +- else +- hrc = setError(VBOX_E_FILE_ERROR, tr("Failed to open the license file '%s': %Rrc"), szPath, vrc); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTPathJoin failed: %Rrc"), vrc); +- } +- } +- return hrc; +-} +- +- +-STDMETHODIMP ExtPack::QueryObject(IN_BSTR a_bstrObjectId, IUnknown **a_ppUnknown) +-{ +- com::Guid ObjectId; +- CheckComArgGuid(a_bstrObjectId, ObjectId); +- CheckComArgOutPointerValid(a_ppUnknown); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- if ( m->pReg +- && m->pReg->pfnQueryObject) +- { +- void *pvUnknown = m->pReg->pfnQueryObject(m->pReg, ObjectId.raw()); +- if (pvUnknown) +- *a_ppUnknown = (IUnknown *)pvUnknown; +- else +- hrc = E_NOINTERFACE; +- } +- else +- hrc = E_NOINTERFACE; +- } +- return hrc; +-} +- +- +- +- +-DEFINE_EMPTY_CTOR_DTOR(ExtPackManager) +- +-/** +- * Called by ComObjPtr::createObject when creating the object. +- * +- * Just initialize the basic object state, do the rest in init(). +- * +- * @returns S_OK. +- */ +-HRESULT ExtPackManager::FinalConstruct() +-{ +- m = NULL; +- return S_OK; +-} +- +-/** +- * Initializes the extension pack manager. +- * +- * @returns COM status code. +- * @param a_pVirtualBox Pointer to the VirtualBox object. +- * @param a_enmContext The context we're in. +- */ +-HRESULT ExtPackManager::initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext) +-{ +- AutoInitSpan autoInitSpan(this); +- AssertReturn(autoInitSpan.isOk(), E_FAIL); +- +- /* +- * Figure some stuff out before creating the instance data. +- */ +- char szBaseDir[RTPATH_MAX]; +- int rc = RTPathAppPrivateArchTop(szBaseDir, sizeof(szBaseDir)); +- AssertLogRelRCReturn(rc, E_FAIL); +- rc = RTPathAppend(szBaseDir, sizeof(szBaseDir), VBOX_EXTPACK_INSTALL_DIR); +- AssertLogRelRCReturn(rc, E_FAIL); +- +- char szCertificatDir[RTPATH_MAX]; +- rc = RTPathAppPrivateNoArch(szCertificatDir, sizeof(szCertificatDir)); +- AssertLogRelRCReturn(rc, E_FAIL); +- rc = RTPathAppend(szCertificatDir, sizeof(szCertificatDir), VBOX_EXTPACK_CERT_DIR); +- AssertLogRelRCReturn(rc, E_FAIL); +- +- /* +- * Allocate and initialize the instance data. +- */ +- m = new Data; +- m->strBaseDir = szBaseDir; +- m->strCertificatDirPath = szCertificatDir; +- m->pVirtualBox = a_pVirtualBox; +- m->enmContext = a_enmContext; +- +- /* +- * Slurp in VBoxVMM which is used by VBoxPuelMain. +- */ +-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_DARWIN) +- if (a_enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- int vrc = SUPR3HardenedLdrLoadAppPriv("VBoxVMM", &m->hVBoxVMM, RTLDRLOAD_FLAGS_GLOBAL, NULL); +- if (RT_FAILURE(vrc)) +- m->hVBoxVMM = NIL_RTLDRMOD; +- /* cleanup in ::uninit()? */ +- } +-#endif +- +- /* +- * Go looking for extensions. The RTDirOpen may fail if nothing has been +- * installed yet, or if root is paranoid and has revoked our access to them. +- * +- * We ASSUME that there are no files, directories or stuff in the directory +- * that exceed the max name length in RTDIRENTRYEX. +- */ +- HRESULT hrc = S_OK; +- PRTDIR pDir; +- int vrc = RTDirOpen(&pDir, szBaseDir); +- if (RT_SUCCESS(vrc)) +- { +- for (;;) +- { +- RTDIRENTRYEX Entry; +- vrc = RTDirReadEx(pDir, &Entry, NULL /*pcbDirEntry*/, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- AssertLogRelMsg(vrc == VERR_NO_MORE_FILES, ("%Rrc\n", vrc)); +- break; +- } +- if ( RTFS_IS_DIRECTORY(Entry.Info.Attr.fMode) +- && strcmp(Entry.szName, ".") != 0 +- && strcmp(Entry.szName, "..") != 0 +- && VBoxExtPackIsValidMangledName(Entry.szName) ) +- { +- /* +- * All directories are extensions, the shall be nothing but +- * extensions in this subdirectory. +- */ +- char szExtPackDir[RTPATH_MAX]; +- vrc = RTPathJoin(szExtPackDir, sizeof(szExtPackDir), m->strBaseDir.c_str(), Entry.szName); +- AssertLogRelRC(vrc); +- if (RT_SUCCESS(vrc)) +- { +- RTCString *pstrName = VBoxExtPackUnmangleName(Entry.szName, RTSTR_MAX); +- AssertLogRel(pstrName); +- if (pstrName) +- { +- ComObjPtr<ExtPack> NewExtPack; +- HRESULT hrc2 = NewExtPack.createObject(); +- if (SUCCEEDED(hrc2)) +- hrc2 = NewExtPack->initWithDir(a_enmContext, pstrName->c_str(), szExtPackDir); +- delete pstrName; +- if (SUCCEEDED(hrc2)) +- m->llInstalledExtPacks.push_back(NewExtPack); +- else if (SUCCEEDED(rc)) +- hrc = hrc2; +- } +- else +- hrc = E_UNEXPECTED; +- } +- else +- hrc = E_UNEXPECTED; +- } +- } +- RTDirClose(pDir); +- } +- /* else: ignore, the directory probably does not exist or something. */ +- +- if (SUCCEEDED(hrc)) +- autoInitSpan.setSucceeded(); +- return hrc; +-} +- +-/** +- * COM cruft. +- */ +-void ExtPackManager::FinalRelease() +-{ +- uninit(); +-} +- +-/** +- * Do the actual cleanup. +- */ +-void ExtPackManager::uninit() +-{ +- /* Enclose the state transition Ready->InUninit->NotReady */ +- AutoUninitSpan autoUninitSpan(this); +- if (!autoUninitSpan.uninitDone() && m != NULL) +- { +- delete m; +- m = NULL; +- } +-} +- +- +-STDMETHODIMP ExtPackManager::COMGETTER(InstalledExtPacks)(ComSafeArrayOut(IExtPack *, a_paExtPacks)) +-{ +- CheckComArgOutSafeArrayPointerValid(a_paExtPacks); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- SafeIfaceArray<IExtPack> SaExtPacks(m->llInstalledExtPacks); +- SaExtPacks.detachTo(ComSafeArrayOutArg(a_paExtPacks)); +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Find(IN_BSTR a_bstrName, IExtPack **a_pExtPack) +-{ +- CheckComArgNotNull(a_bstrName); +- CheckComArgOutPointerValid(a_pExtPack); +- Utf8Str strName(a_bstrName); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ComPtr<ExtPack> ptrExtPack = findExtPack(strName.c_str()); +- if (!ptrExtPack.isNull()) +- ptrExtPack.queryInterfaceTo(a_pExtPack); +- else +- hrc = VBOX_E_OBJECT_NOT_FOUND; +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::OpenExtPackFile(IN_BSTR a_bstrTarballAndDigest, IExtPackFile **a_ppExtPackFile) +-{ +- CheckComArgNotNull(a_bstrTarballAndDigest); +- CheckComArgOutPointerValid(a_ppExtPackFile); +- AssertReturn(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON, E_UNEXPECTED); +- +- /* The API can optionally take a ::SHA-256=<hex-digest> attribute at the +- end of the file name. This is just a temporary measure for +- backporting, in 4.2 we'll add another parameter to the method. */ +- Utf8Str strTarball; +- Utf8Str strDigest; +- Utf8Str strTarballAndDigest(a_bstrTarballAndDigest); +- size_t offSha256 = strTarballAndDigest.find("::SHA-256="); +- if (offSha256 == Utf8Str::npos) +- strTarball = strTarballAndDigest; +- else +- { +- strTarball = strTarballAndDigest.substr(0, offSha256); +- strDigest = strTarballAndDigest.substr(offSha256 + sizeof("::SHA-256=") - 1); +- } +- +- ComObjPtr<ExtPackFile> NewExtPackFile; +- HRESULT hrc = NewExtPackFile.createObject(); +- if (SUCCEEDED(hrc)) +- hrc = NewExtPackFile->initWithFile(strTarball.c_str(), strDigest.c_str(), this, m->pVirtualBox); +- if (SUCCEEDED(hrc)) +- NewExtPackFile.queryInterfaceTo(a_ppExtPackFile); +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Uninstall(IN_BSTR a_bstrName, BOOL a_fForcedRemoval, IN_BSTR a_bstrDisplayInfo, +- IProgress **a_ppProgress) +-{ +- CheckComArgNotNull(a_bstrName); +- if (a_ppProgress) +- *a_ppProgress = NULL; +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- PEXTPACKUNINSTALLJOB pJob = NULL; +- try +- { +- pJob = new EXTPACKUNINSTALLJOB; +- pJob->ptrExtPackMgr = this; +- pJob->strName = a_bstrName; +- pJob->fForcedRemoval = a_fForcedRemoval != FALSE; +- pJob->strDisplayInfo = a_bstrDisplayInfo; +- hrc = pJob->ptrProgress.createObject(); +- if (SUCCEEDED(hrc)) +- { +- Bstr bstrDescription = tr("Uninstalling extension pack"); +- hrc = pJob->ptrProgress->init( +-#ifndef VBOX_COM_INPROC +- m->pVirtualBox, +-#endif +- static_cast<IExtPackManager *>(this), +- bstrDescription.raw(), +- FALSE /*aCancelable*/, +- NULL /*aId*/); +- } +- if (SUCCEEDED(hrc)) +- { +- ComPtr<Progress> ptrProgress = pJob->ptrProgress; +- int vrc = RTThreadCreate(NULL /*phThread*/, ExtPackManager::doUninstallThreadProc, pJob, 0, +- RTTHREADTYPE_DEFAULT, 0 /*fFlags*/, "ExtPackUninst"); +- if (RT_SUCCESS(vrc)) +- { +- pJob = NULL; /* the thread deletes it */ +- ptrProgress.queryInterfaceTo(a_ppProgress); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("RTThreadCreate failed with %Rrc"), vrc); +- } +- } +- catch (std::bad_alloc) +- { +- hrc = E_OUTOFMEMORY; +- } +- if (pJob) +- delete pJob; +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::Cleanup(void) +-{ +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the set-uid-to-root binary that performs the cleanup. +- * +- * Take the write lock to prevent conflicts with other calls to this +- * VBoxSVC instance. +- */ +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- hrc = runSetUidToRootHelper(NULL, +- "cleanup", +- "--base-dir", m->strBaseDir.c_str(), +- (const char *)NULL); +- } +- +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::QueryAllPlugInsForFrontend(IN_BSTR a_bstrFrontend, ComSafeArrayOut(BSTR, a_pabstrPlugInModules)) +-{ +- CheckComArgNotNull(a_bstrFrontend); +- Utf8Str strName(a_bstrFrontend); +- CheckComArgOutSafeArrayPointerValid(a_pabstrPlugInModules); +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- com::SafeArray<BSTR> saPaths((size_t)0); +- /** @todo implement plug-ins */ +- saPaths.detachTo(ComSafeArrayOutArg(a_pabstrPlugInModules)); +- } +- return hrc; +-} +- +-STDMETHODIMP ExtPackManager::IsExtPackUsable(IN_BSTR a_bstrExtPack, BOOL *aUsable) +-{ +- CheckComArgNotNull(a_bstrExtPack); +- Utf8Str strExtPack(a_bstrExtPack); +- *aUsable = isExtPackUsable(strExtPack.c_str()); +- return S_OK; +-} +- +-/** +- * Finds the success indicator string in the stderr output ofr hte helper app. +- * +- * @returns Pointer to the indicator. +- * @param psz The stderr output string. Can be NULL. +- * @param cch The size of the string. +- */ +-static char *findSuccessIndicator(char *psz, size_t cch) +-{ +- static const char s_szSuccessInd[] = "rcExit=RTEXITCODE_SUCCESS"; +- Assert(!cch || strlen(psz) == cch); +- if (cch < sizeof(s_szSuccessInd) - 1) +- return NULL; +- char *pszInd = &psz[cch - sizeof(s_szSuccessInd) + 1]; +- if (strcmp(s_szSuccessInd, pszInd)) +- return NULL; +- return pszInd; +-} +- +-/** +- * Runs the helper application that does the privileged operations. +- * +- * @returns S_OK or a failure status with error information set. +- * @param a_pstrDisplayInfo Platform specific display info hacks. +- * @param a_pszCommand The command to execute. +- * @param ... The argument strings that goes along with the +- * command. Maximum is about 16. Terminated by a +- * NULL. +- */ +-HRESULT ExtPackManager::runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...) +-{ +- /* +- * Calculate the path to the helper application. +- */ +- char szExecName[RTPATH_MAX]; +- int vrc = RTPathAppPrivateArch(szExecName, sizeof(szExecName)); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- vrc = RTPathAppend(szExecName, sizeof(szExecName), VBOX_EXTPACK_HELPER_NAME); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- /* +- * Convert the variable argument list to a RTProcCreate argument vector. +- */ +- const char *apszArgs[20]; +- unsigned cArgs = 0; +- +- LogRel(("ExtPack: Executing '%s'", szExecName)); +- apszArgs[cArgs++] = &szExecName[0]; +- +- if ( a_pstrDisplayInfo +- && a_pstrDisplayInfo->isNotEmpty()) +- { +- LogRel((" '--display-info-hack' '%s'", a_pstrDisplayInfo->c_str())); +- apszArgs[cArgs++] = "--display-info-hack"; +- apszArgs[cArgs++] = a_pstrDisplayInfo->c_str(); +- } +- +- LogRel(("'%s'", a_pszCommand)); +- apszArgs[cArgs++] = a_pszCommand; +- +- va_list va; +- va_start(va, a_pszCommand); +- const char *pszLastArg; +- for (;;) +- { +- AssertReturn(cArgs < RT_ELEMENTS(apszArgs) - 1, E_UNEXPECTED); +- pszLastArg = va_arg(va, const char *); +- if (!pszLastArg) +- break; +- LogRel((" '%s'", pszLastArg)); +- apszArgs[cArgs++] = pszLastArg; +- }; +- va_end(va); +- +- LogRel(("\n")); +- apszArgs[cArgs] = NULL; +- +- /* +- * Create a PIPE which we attach to stderr so that we can read the error +- * message on failure and report it back to the caller. +- */ +- RTPIPE hPipeR; +- RTHANDLE hStdErrPipe; +- hStdErrPipe.enmType = RTHANDLETYPE_PIPE; +- vrc = RTPipeCreate(&hPipeR, &hStdErrPipe.u.hPipe, RTPIPE_C_INHERIT_WRITE); +- AssertLogRelRCReturn(vrc, E_UNEXPECTED); +- +- /* +- * Spawn the process. +- */ +- HRESULT hrc; +- RTPROCESS hProcess; +- vrc = RTProcCreateEx(szExecName, +- apszArgs, +- RTENV_DEFAULT, +- 0 /*fFlags*/, +- NULL /*phStdIn*/, +- NULL /*phStdOut*/, +- &hStdErrPipe, +- NULL /*pszAsUser*/, +- NULL /*pszPassword*/, +- &hProcess); +- if (RT_SUCCESS(vrc)) +- { +- vrc = RTPipeClose(hStdErrPipe.u.hPipe); +- hStdErrPipe.u.hPipe = NIL_RTPIPE; +- +- /* +- * Read the pipe output until the process completes. +- */ +- RTPROCSTATUS ProcStatus = { -42, RTPROCEXITREASON_ABEND }; +- size_t cbStdErrBuf = 0; +- size_t offStdErrBuf = 0; +- char *pszStdErrBuf = NULL; +- do +- { +- /* +- * Service the pipe. Block waiting for output or the pipe breaking +- * when the process terminates. +- */ +- if (hPipeR != NIL_RTPIPE) +- { +- char achBuf[1024]; +- size_t cbRead; +- vrc = RTPipeReadBlocking(hPipeR, achBuf, sizeof(achBuf), &cbRead); +- if (RT_SUCCESS(vrc)) +- { +- /* grow the buffer? */ +- size_t cbBufReq = offStdErrBuf + cbRead + 1; +- if ( cbBufReq > cbStdErrBuf +- && cbBufReq < _256K) +- { +- size_t cbNew = RT_ALIGN_Z(cbBufReq, 16); // 1024 +- void *pvNew = RTMemRealloc(pszStdErrBuf, cbNew); +- if (pvNew) +- { +- pszStdErrBuf = (char *)pvNew; +- cbStdErrBuf = cbNew; +- } +- } +- +- /* append if we've got room. */ +- if (cbBufReq <= cbStdErrBuf) +- { +- memcpy(&pszStdErrBuf[offStdErrBuf], achBuf, cbRead); +- offStdErrBuf = offStdErrBuf + cbRead; +- pszStdErrBuf[offStdErrBuf] = '\0'; +- } +- } +- else +- { +- AssertLogRelMsg(vrc == VERR_BROKEN_PIPE, ("%Rrc\n", vrc)); +- RTPipeClose(hPipeR); +- hPipeR = NIL_RTPIPE; +- } +- } +- +- /* +- * Service the process. Block if we have no pipe. +- */ +- if (hProcess != NIL_RTPROCESS) +- { +- vrc = RTProcWait(hProcess, +- hPipeR == NIL_RTPIPE ? RTPROCWAIT_FLAGS_BLOCK : RTPROCWAIT_FLAGS_NOBLOCK, +- &ProcStatus); +- if (RT_SUCCESS(vrc)) +- hProcess = NIL_RTPROCESS; +- else +- AssertLogRelMsgStmt(vrc == VERR_PROCESS_RUNNING, ("%Rrc\n", vrc), hProcess = NIL_RTPROCESS); +- } +- } while ( hPipeR != NIL_RTPIPE +- || hProcess != NIL_RTPROCESS); +- +- LogRel(("ExtPack: enmReason=%d iStatus=%d stderr='%s'\n", +- ProcStatus.enmReason, ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : "")); +- +- /* +- * Look for rcExit=RTEXITCODE_SUCCESS at the end of the error output, +- * cut it as it is only there to attest the success. +- */ +- if (offStdErrBuf > 0) +- { +- RTStrStripR(pszStdErrBuf); +- offStdErrBuf = strlen(pszStdErrBuf); +- } +- +- char *pszSuccessInd = findSuccessIndicator(pszStdErrBuf, offStdErrBuf); +- if (pszSuccessInd) +- { +- *pszSuccessInd = '\0'; +- offStdErrBuf = pszSuccessInd - pszStdErrBuf; +- } +- else if ( ProcStatus.enmReason == RTPROCEXITREASON_NORMAL +- && ProcStatus.iStatus == 0) +- ProcStatus.iStatus = offStdErrBuf ? 667 : 666; +- +- /* +- * Compose the status code and, on failure, error message. +- */ +- if ( ProcStatus.enmReason == RTPROCEXITREASON_NORMAL +- && ProcStatus.iStatus == 0) +- hrc = S_OK; +- else if (ProcStatus.enmReason == RTPROCEXITREASON_NORMAL) +- { +- AssertMsg(ProcStatus.iStatus != 0, ("%s\n", pszStdErrBuf)); +- hrc = setError(E_FAIL, tr("The installer failed with exit code %d: %s"), +- ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- } +- else if (ProcStatus.enmReason == RTPROCEXITREASON_SIGNAL) +- hrc = setError(E_UNEXPECTED, tr("The installer was killed by signal #d (stderr: %s)"), +- ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- else if (ProcStatus.enmReason == RTPROCEXITREASON_ABEND) +- hrc = setError(E_UNEXPECTED, tr("The installer aborted abnormally (stderr: %s)"), +- offStdErrBuf ? pszStdErrBuf : ""); +- else +- hrc = setError(E_UNEXPECTED, tr("internal error: enmReason=%d iStatus=%d stderr='%s'"), +- ProcStatus.enmReason, ProcStatus.iStatus, offStdErrBuf ? pszStdErrBuf : ""); +- +- RTMemFree(pszStdErrBuf); +- } +- else +- hrc = setError(VBOX_E_IPRT_ERROR, tr("Failed to launch the helper application '%s' (%Rrc)"), szExecName, vrc); +- +- RTPipeClose(hPipeR); +- RTPipeClose(hStdErrPipe.u.hPipe); +- +- return hrc; +-} +- +-/** +- * Finds an installed extension pack. +- * +- * @returns Pointer to the extension pack if found, NULL if not. (No reference +- * counting problem here since the caller must be holding the lock.) +- * @param a_pszName The name of the extension pack. +- */ +-ExtPack *ExtPackManager::findExtPack(const char *a_pszName) +-{ +- size_t cchName = strlen(a_pszName); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if ( pExtPackData +- && pExtPackData->Desc.strName.length() == cchName +- && pExtPackData->Desc.strName.equalsIgnoreCase(a_pszName)) +- return (*it); +- } +- return NULL; +-} +- +-/** +- * Removes an installed extension pack from the internal list. +- * +- * The package is expected to exist! +- * +- * @param a_pszName The name of the extension pack. +- */ +-void ExtPackManager::removeExtPack(const char *a_pszName) +-{ +- size_t cchName = strlen(a_pszName); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if ( pExtPackData +- && pExtPackData->Desc.strName.length() == cchName +- && pExtPackData->Desc.strName.equalsIgnoreCase(a_pszName)) +- { +- m->llInstalledExtPacks.erase(it); +- return; +- } +- } +- AssertMsgFailed(("%s\n", a_pszName)); +-} +- +-/** +- * Refreshes the specified extension pack. +- * +- * This may remove the extension pack from the list, so any non-smart pointers +- * to the extension pack object may become invalid. +- * +- * @returns S_OK and *a_ppExtPack on success, COM status code and error +- * message on failure. Note that *a_ppExtPack can be NULL. +- * +- * @param a_pszName The extension to update.. +- * @param a_fUnusableIsError If @c true, report an unusable extension pack +- * as an error. +- * @param a_ppExtPack Where to store the pointer to the extension +- * pack of it is still around after the refresh. +- * This is optional. +- * +- * @remarks Caller holds the extension manager lock. +- * @remarks Only called in VBoxSVC. +- */ +-HRESULT ExtPackManager::refreshExtPack(const char *a_pszName, bool a_fUnusableIsError, ExtPack **a_ppExtPack) +-{ +- Assert(m->pVirtualBox != NULL); /* Only called from VBoxSVC. */ +- +- HRESULT hrc; +- ExtPack *pExtPack = findExtPack(a_pszName); +- if (pExtPack) +- { +- /* +- * Refresh existing object. +- */ +- bool fCanDelete; +- hrc = pExtPack->refresh(&fCanDelete); +- if (SUCCEEDED(hrc)) +- { +- if (fCanDelete) +- { +- removeExtPack(a_pszName); +- pExtPack = NULL; +- } +- } +- } +- else +- { +- /* +- * Do this check here, otherwise VBoxExtPackCalcDir() will fail with a strange +- * error. +- */ +- bool fValid = VBoxExtPackIsValidName(a_pszName); +- if (!fValid) +- return setError(E_FAIL, "Invalid extension pack name specified"); +- +- /* +- * Does the dir exist? Make some special effort to deal with case +- * sensitivie file systems (a_pszName is case insensitive and mangled). +- */ +- char szDir[RTPATH_MAX]; +- int vrc = VBoxExtPackCalcDir(szDir, sizeof(szDir), m->strBaseDir.c_str(), a_pszName); +- AssertLogRelRCReturn(vrc, E_FAIL); +- +- RTDIRENTRYEX Entry; +- RTFSOBJINFO ObjInfo; +- vrc = RTPathQueryInfoEx(szDir, &ObjInfo, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- bool fExists = RT_SUCCESS(vrc) && RTFS_IS_DIRECTORY(ObjInfo.Attr.fMode); +- if (!fExists) +- { +- PRTDIR pDir; +- vrc = RTDirOpen(&pDir, m->strBaseDir.c_str()); +- if (RT_SUCCESS(vrc)) +- { +- const char *pszMangledName = RTPathFilename(szDir); +- for (;;) +- { +- vrc = RTDirReadEx(pDir, &Entry, NULL /*pcbDirEntry*/, RTFSOBJATTRADD_NOTHING, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- { +- AssertLogRelMsg(vrc == VERR_NO_MORE_FILES, ("%Rrc\n", vrc)); +- break; +- } +- if ( RTFS_IS_DIRECTORY(Entry.Info.Attr.fMode) +- && !RTStrICmp(Entry.szName, pszMangledName)) +- { +- /* +- * The installed extension pack has a uses different case. +- * Update the name and directory variables. +- */ +- vrc = RTPathJoin(szDir, sizeof(szDir), m->strBaseDir.c_str(), Entry.szName); /* not really necessary */ +- AssertLogRelRCReturnStmt(vrc, RTDirClose(pDir), E_UNEXPECTED); +- a_pszName = Entry.szName; +- fExists = true; +- break; +- } +- } +- RTDirClose(pDir); +- } +- } +- if (fExists) +- { +- /* +- * We've got something, create a new extension pack object for it. +- */ +- ComObjPtr<ExtPack> ptrNewExtPack; +- hrc = ptrNewExtPack.createObject(); +- if (SUCCEEDED(hrc)) +- hrc = ptrNewExtPack->initWithDir(m->enmContext, a_pszName, szDir); +- if (SUCCEEDED(hrc)) +- { +- m->llInstalledExtPacks.push_back(ptrNewExtPack); +- if (ptrNewExtPack->m->fUsable) +- LogRel(("ExtPackManager: Found extension pack '%s'.\n", a_pszName)); +- else +- LogRel(("ExtPackManager: Found bad extension pack '%s': %s\n", +- a_pszName, ptrNewExtPack->m->strWhyUnusable.c_str() )); +- pExtPack = ptrNewExtPack; +- } +- } +- else +- hrc = S_OK; +- } +- +- /* +- * Report error if not usable, if that is desired. +- */ +- if ( SUCCEEDED(hrc) +- && pExtPack +- && a_fUnusableIsError +- && !pExtPack->m->fUsable) +- hrc = setError(E_FAIL, "%s", pExtPack->m->strWhyUnusable.c_str()); +- +- if (a_ppExtPack) +- *a_ppExtPack = pExtPack; +- return hrc; +-} +- +-/** +- * Thread wrapper around doInstall. +- * +- * @returns VINF_SUCCESS (ignored) +- * @param hThread The thread handle (ignored). +- * @param pvJob The job structure. +- */ +-/*static*/ DECLCALLBACK(int) ExtPackManager::doInstallThreadProc(RTTHREAD hThread, void *pvJob) +-{ +- PEXTPACKINSTALLJOB pJob = (PEXTPACKINSTALLJOB)pvJob; +- HRESULT hrc = pJob->ptrExtPackMgr->doInstall(pJob->ptrExtPackFile, pJob->fReplace, &pJob->strDisplayInfo); +- pJob->ptrProgress->notifyComplete(hrc); +- delete pJob; +- +- NOREF(hThread); +- return VINF_SUCCESS; +-} +- +-/** +- * Worker for IExtPackFile::Install. +- * +- * Called on a worker thread via doInstallThreadProc. +- * +- * @returns COM status code. +- * @param a_pExtPackFile The extension pack file, caller checks that +- * it's usable. +- * @param a_fReplace Whether to replace any existing extpack or just +- * fail. +- * @param a_pstrDisplayInfo Host specific display information hacks. +- * @param a_ppProgress Where to return a progress object some day. Can +- * be NULL. +- */ +-HRESULT ExtPackManager::doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo) +-{ +- AssertReturn(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON, E_UNEXPECTED); +- RTCString const * const pStrName = &a_pExtPackFile->m->Desc.strName; +- RTCString const * const pStrTarball = &a_pExtPackFile->m->strExtPackFile; +- RTCString const * const pStrTarballDigest = &a_pExtPackFile->m->strDigest; +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Refresh the data we have on the extension pack as it +- * may be made stale by direct meddling or some other user. +- */ +- ExtPack *pExtPack; +- hrc = refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (pExtPack && a_fReplace) +- hrc = pExtPack->callUninstallHookAndClose(m->pVirtualBox, false /*a_ForcedRemoval*/); +- else if (pExtPack) +- hrc = setError(E_FAIL, +- tr("Extension pack '%s' is already installed." +- " In case of a reinstallation, please uninstall it first"), +- pStrName->c_str()); +- } +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the privileged helper binary that performs the actual +- * installation. Then create an object for the packet (we do this +- * even on failure, to be on the safe side). +- */ +- hrc = runSetUidToRootHelper(a_pstrDisplayInfo, +- "install", +- "--base-dir", m->strBaseDir.c_str(), +- "--cert-dir", m->strCertificatDirPath.c_str(), +- "--name", pStrName->c_str(), +- "--tarball", pStrTarball->c_str(), +- "--sha-256", pStrTarballDigest->c_str(), +- pExtPack ? "--replace" : (const char *)NULL, +- (const char *)NULL); +- if (SUCCEEDED(hrc)) +- { +- hrc = refreshExtPack(pStrName->c_str(), true /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc) && pExtPack) +- { +- RTERRINFOSTATIC ErrInfo; +- RTErrInfoInitStatic(&ErrInfo); +- pExtPack->callInstalledHook(m->pVirtualBox, &autoLock, &ErrInfo.Core); +- if (RT_SUCCESS(ErrInfo.Core.rc)) +- LogRel(("ExtPackManager: Successfully installed extension pack '%s'.\n", pStrName->c_str())); +- else +- { +- LogRel(("ExtPackManager: Installated hook for '%s' failed: %Rrc - %s\n", +- pStrName->c_str(), ErrInfo.Core.rc, ErrInfo.Core.pszMsg)); +- +- /* +- * Uninstall the extpack if the error indicates that. +- */ +- if (ErrInfo.Core.rc == VERR_EXTPACK_UNSUPPORTED_HOST_UNINSTALL) +- runSetUidToRootHelper(a_pstrDisplayInfo, +- "uninstall", +- "--base-dir", m->strBaseDir.c_str(), +- "--name", pStrName->c_str(), +- "--forced", +- (const char *)NULL); +- hrc = setError(E_FAIL, tr("The installation hook failed: %Rrc - %s"), +- ErrInfo.Core.rc, ErrInfo.Core.pszMsg); +- } +- } +- else if (SUCCEEDED(hrc)) +- hrc = setError(E_FAIL, tr("Installing extension pack '%s' failed under mysterious circumstances"), +- pStrName->c_str()); +- } +- else +- { +- ErrorInfoKeeper Eik; +- refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, NULL); +- } +- } +- +- /* +- * Do VirtualBoxReady callbacks now for any freshly installed +- * extension pack (old ones will not be called). +- */ +- if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- autoLock.release(); +- callAllVirtualBoxReadyHooks(); +- } +- } +- +- return hrc; +-} +- +-/** +- * Thread wrapper around doUninstall. +- * +- * @returns VINF_SUCCESS (ignored) +- * @param hThread The thread handle (ignored). +- * @param pvJob The job structure. +- */ +-/*static*/ DECLCALLBACK(int) ExtPackManager::doUninstallThreadProc(RTTHREAD hThread, void *pvJob) +-{ +- PEXTPACKUNINSTALLJOB pJob = (PEXTPACKUNINSTALLJOB)pvJob; +- HRESULT hrc = pJob->ptrExtPackMgr->doUninstall(&pJob->strName, pJob->fForcedRemoval, &pJob->strDisplayInfo); +- pJob->ptrProgress->notifyComplete(hrc); +- delete pJob; +- +- NOREF(hThread); +- return VINF_SUCCESS; +-} +- +-/** +- * Worker for IExtPackManager::Uninstall. +- * +- * Called on a worker thread via doUninstallThreadProc. +- * +- * @returns COM status code. +- * @param a_pstrName The name of the extension pack to uninstall. +- * @param a_fForcedRemoval Whether to be skip and ignore certain bits of +- * the extpack feedback. To deal with misbehaving +- * extension pack hooks. +- * @param a_pstrDisplayInfo Host specific display information hacks. +- */ +-HRESULT ExtPackManager::doUninstall(Utf8Str const *a_pstrName, bool a_fForcedRemoval, Utf8Str const *a_pstrDisplayInfo) +-{ +- Assert(m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- /* +- * Refresh the data we have on the extension pack as it may be made +- * stale by direct meddling or some other user. +- */ +- ExtPack *pExtPack; +- hrc = refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (!pExtPack) +- { +- LogRel(("ExtPackManager: Extension pack '%s' is not installed, so nothing to uninstall.\n", a_pstrName->c_str())); +- hrc = S_OK; /* nothing to uninstall */ +- } +- else +- { +- /* +- * Call the uninstall hook and unload the main dll. +- */ +- hrc = pExtPack->callUninstallHookAndClose(m->pVirtualBox, a_fForcedRemoval); +- if (SUCCEEDED(hrc)) +- { +- /* +- * Run the set-uid-to-root binary that performs the +- * uninstallation. Then refresh the object. +- * +- * This refresh is theorically subject to races, but it's of +- * the don't-do-that variety. +- */ +- const char *pszForcedOpt = a_fForcedRemoval ? "--forced" : NULL; +- hrc = runSetUidToRootHelper(a_pstrDisplayInfo, +- "uninstall", +- "--base-dir", m->strBaseDir.c_str(), +- "--name", a_pstrName->c_str(), +- pszForcedOpt, /* Last as it may be NULL. */ +- (const char *)NULL); +- if (SUCCEEDED(hrc)) +- { +- hrc = refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack); +- if (SUCCEEDED(hrc)) +- { +- if (!pExtPack) +- LogRel(("ExtPackManager: Successfully uninstalled extension pack '%s'.\n", a_pstrName->c_str())); +- else +- hrc = setError(E_FAIL, +- tr("Uninstall extension pack '%s' failed under mysterious circumstances"), +- a_pstrName->c_str()); +- } +- } +- else +- { +- ErrorInfoKeeper Eik; +- refreshExtPack(a_pstrName->c_str(), false /*a_fUnusableIsError*/, NULL); +- } +- } +- } +- } +- +- /* +- * Do VirtualBoxReady callbacks now for any freshly installed +- * extension pack (old ones will not be called). +- */ +- if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON) +- { +- autoLock.release(); +- callAllVirtualBoxReadyHooks(); +- } +- } +- +- return hrc; +-} +- +- +-/** +- * Calls the pfnVirtualBoxReady hook for all working extension packs. +- * +- * @remarks The caller must not hold any locks. +- */ +-void ExtPackManager::callAllVirtualBoxReadyHooks(void) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- /* advancing below */) +- { +- if ((*it)->callVirtualBoxReadyHook(m->pVirtualBox, &autoLock)) +- it = m->llInstalledExtPacks.begin(); +- else +- it++; +- } +-} +- +-/** +- * Calls the pfnConsoleReady hook for all working extension packs. +- * +- * @param a_pConsole The console interface. +- * @remarks The caller must not hold any locks. +- */ +-void ExtPackManager::callAllConsoleReadyHooks(IConsole *a_pConsole) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- /* advancing below */) +- { +- if ((*it)->callConsoleReadyHook(a_pConsole, &autoLock)) +- it = m->llInstalledExtPacks.begin(); +- else +- it++; +- } +-} +- +-/** +- * Calls the pfnVMCreated hook for all working extension packs. +- * +- * @param a_pMachine The machine interface of the new VM. +- */ +-void ExtPackManager::callAllVmCreatedHooks(IMachine *a_pMachine) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- (*it)->callVmCreatedHook(m->pVirtualBox, a_pMachine, &autoLock); +-} +- +-/** +- * Calls the pfnVMConfigureVMM hook for all working extension packs. +- * +- * @returns VBox status code. Stops on the first failure, expecting the caller +- * to signal this to the caller of the CFGM constructor. +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. +- */ +-int ExtPackManager::callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return Global::vboxStatusCodeFromCOM(hrc); +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- { +- int vrc; +- (*it)->callVmConfigureVmmHook(a_pConsole, a_pVM, &autoLock, &vrc); +- if (RT_FAILURE(vrc)) +- return vrc; +- } +- +- return VINF_SUCCESS; +-} +- +-/** +- * Calls the pfnVMPowerOn hook for all working extension packs. +- * +- * @returns VBox status code. Stops on the first failure, expecting the caller +- * to not power on the VM. +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. +- */ +-int ExtPackManager::callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return Global::vboxStatusCodeFromCOM(hrc); +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- { +- int vrc; +- (*it)->callVmPowerOnHook(a_pConsole, a_pVM, &autoLock, &vrc); +- if (RT_FAILURE(vrc)) +- return vrc; +- } +- +- return VINF_SUCCESS; +-} +- +-/** +- * Calls the pfnVMPowerOff hook for all working extension packs. +- * +- * @param a_pConsole The console interface for the VM. +- * @param a_pVM The VM handle. Can be NULL. +- */ +-void ExtPackManager::callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- ComPtr<ExtPackManager> ptrSelfRef = this; /* paranoia */ +- ExtPackList llExtPacks = m->llInstalledExtPacks; +- +- for (ExtPackList::iterator it = llExtPacks.begin(); it != llExtPacks.end(); it++) +- (*it)->callVmPowerOffHook(a_pConsole, a_pVM, &autoLock); +-} +- +- +-/** +- * Checks that the specified extension pack contains a VRDE module and that it +- * is shipshape. +- * +- * @returns S_OK if ok, appropriate failure status code with details. +- * @param a_pstrExtPack The name of the extension pack. +- */ +-HRESULT ExtPackManager::checkVrdeExtPack(Utf8Str const *a_pstrExtPack) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pstrExtPack->c_str()); +- if (pExtPack) +- hrc = pExtPack->checkVrde(); +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); +- } +- +- return hrc; +-} +- +-/** +- * Gets the full path to the VRDE library of the specified extension pack. +- * +- * This will do extacly the same as checkVrdeExtPack and then resolve the +- * library path. +- * +- * @returns S_OK if a path is returned, COM error status and message return if +- * not. +- * @param a_pstrExtPack The extension pack. +- * @param a_pstrVrdeLibrary Where to return the path. +- */ +-int ExtPackManager::getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pstrExtPack->c_str()); +- if (pExtPack) +- hrc = pExtPack->getVrdpLibraryName(a_pstrVrdeLibrary); +- else +- hrc = setError(VBOX_E_OBJECT_NOT_FOUND, tr("No extension pack by the name '%s' was found"), a_pstrExtPack->c_str()); +- } +- +- return hrc; +-} +- +-/** +- * Gets the name of the default VRDE extension pack. +- * +- * @returns S_OK or some COM error status on red tape failure. +- * @param a_pstrExtPack Where to return the extension pack name. Returns +- * empty if no extension pack wishes to be the default +- * VRDP provider. +- */ +-HRESULT ExtPackManager::getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack) +-{ +- a_pstrExtPack->setNull(); +- +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (SUCCEEDED(hrc)) +- { +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- if ((*it)->wantsToBeDefaultVrde()) +- { +- *a_pstrExtPack = (*it)->m->Desc.strName; +- break; +- } +- } +- } +- return hrc; +-} +- +-/** +- * Checks if an extension pack is (present and) usable. +- * +- * @returns @c true if it is, otherwise @c false. +- * @param a_pszExtPack The name of the extension pack. +- */ +-bool ExtPackManager::isExtPackUsable(const char *a_pszExtPack) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return false; +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- ExtPack *pExtPack = findExtPack(a_pszExtPack); +- return pExtPack != NULL +- && pExtPack->m->fUsable; +-} +- +-/** +- * Dumps all extension packs to the release log. +- */ +-void ExtPackManager::dumpAllToReleaseLog(void) +-{ +- AutoCaller autoCaller(this); +- HRESULT hrc = autoCaller.rc(); +- if (FAILED(hrc)) +- return; +- AutoReadLock autoLock(this COMMA_LOCKVAL_SRC_POS); +- +- LogRel(("Installed Extension Packs:\n")); +- for (ExtPackList::iterator it = m->llInstalledExtPacks.begin(); +- it != m->llInstalledExtPacks.end(); +- it++) +- { +- ExtPack::Data *pExtPackData = (*it)->m; +- if (pExtPackData) +- { +- if (pExtPackData->fUsable) +- LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s)\n", +- pExtPackData->Desc.strName.c_str(), +- pExtPackData->Desc.strVersion.c_str(), +- pExtPackData->Desc.uRevision, +- pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", +- pExtPackData->Desc.strEdition.c_str(), +- pExtPackData->Desc.strVrdeModule.c_str() )); +- else +- LogRel((" %s (Version: %s r%u%s%s; VRDE Module: %s unusable because of '%s')\n", +- pExtPackData->Desc.strName.c_str(), +- pExtPackData->Desc.strVersion.c_str(), +- pExtPackData->Desc.uRevision, +- pExtPackData->Desc.strEdition.isEmpty() ? "" : " ", +- pExtPackData->Desc.strEdition.c_str(), +- pExtPackData->Desc.strVrdeModule.c_str(), +- pExtPackData->strWhyUnusable.c_str() )); +- } +- else +- LogRel((" pExtPackData is NULL\n")); +- } +- +- if (!m->llInstalledExtPacks.size()) +- LogRel((" None installed!\n")); +-} +- +-/* vi: set tabstop=4 shiftwidth=4 expandtab: */ +--- VirtualBox-4.1.18.orig/src/VBox/Main/src-all/ExtPackUtil.cpp 2012-06-20 10:17:34.000000000 -0300 ++++ /dev/null 2012-07-24 14:48:18.638572110 -0300 +@@ -1,1385 +0,0 @@ +-/* $Id: ExtPackUtil.cpp $ */ +-/** @file +- * VirtualBox Main - Extension Pack Utilities and definitions, VBoxC, VBoxSVC, ++. +- */ +- +-/* +- * Copyright (C) 2010-2012 Oracle Corporation +- * +- * This file is part of VirtualBox Open Source Edition (OSE), as +- * available from http://www.virtualbox.org. This file is free software; +- * you can redistribute it and/or modify it under the terms of the GNU +- * General Public License (GPL) as published by the Free Software +- * Foundation, in version 2 as it comes in the "COPYING" file of the +- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the +- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. +- */ +- +- +-/******************************************************************************* +-* Header Files * +-*******************************************************************************/ +-#include "../include/ExtPackUtil.h" +- +-#include <iprt/ctype.h> +-#include <iprt/dir.h> +-#include <iprt/file.h> +-#include <iprt/manifest.h> +-#include <iprt/param.h> +-#include <iprt/path.h> +-#include <iprt/sha.h> +-#include <iprt/string.h> +-#include <iprt/vfs.h> +-#include <iprt/tar.h> +-#include <iprt/zip.h> +-#include <iprt/cpp/xml.h> +- +-#include <VBox/log.h> +- +- +-/** +- * Worker for VBoxExtPackLoadDesc that loads the plug-in descriptors. +- * +- * @returns Same as VBoxExtPackLoadDesc. +- * @param pVBoxExtPackElm +- * @param pcPlugIns Where to return the number of plug-ins in the +- * array. +- * @param paPlugIns Where to return the plug-in descriptor array. +- * (RTMemFree it even on failure) +- */ +-static RTCString * +-vboxExtPackLoadPlugInDescs(const xml::ElementNode *pVBoxExtPackElm, +- uint32_t *pcPlugIns, PVBOXEXTPACKPLUGINDESC *paPlugIns) +-{ +- *pcPlugIns = 0; +- *paPlugIns = NULL; +- +- /** @todo plug-ins */ +- NOREF(pVBoxExtPackElm); +- +- return NULL; +-} +- +-/** +- * Clears the extension pack descriptor. +- * +- * @param a_pExtPackDesc The descriptor to clear. +- */ +-static void vboxExtPackClearDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- a_pExtPackDesc->strName.setNull(); +- a_pExtPackDesc->strDescription.setNull(); +- a_pExtPackDesc->strVersion.setNull(); +- a_pExtPackDesc->strEdition.setNull(); +- a_pExtPackDesc->uRevision = 0; +- a_pExtPackDesc->strMainModule.setNull(); +- a_pExtPackDesc->strVrdeModule.setNull(); +- a_pExtPackDesc->cPlugIns = 0; +- a_pExtPackDesc->paPlugIns = NULL; +- a_pExtPackDesc->fShowLicense = false; +-} +- +-/** +- * Initializes an extension pack descriptor so that it's safe to call free on +- * it whatever happens later on. +- * +- * @param a_pExtPackDesc The descirptor to initialize. +- */ +-void VBoxExtPackInitDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +-} +- +- +-/** +- * Load the extension pack descriptor from an XML document. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pDoc Pointer to the the XML document. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- */ +-static RTCString *vboxExtPackLoadDescFromDoc(xml::Document *a_pDoc, PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- /* +- * Get the main element and check its version. +- */ +- const xml::ElementNode *pVBoxExtPackElm = a_pDoc->getRootElement(); +- if ( !pVBoxExtPackElm +- || strcmp(pVBoxExtPackElm->getName(), "VirtualBoxExtensionPack") != 0) +- return new RTCString("No VirtualBoxExtensionPack element"); +- +- RTCString strFormatVersion; +- if (!pVBoxExtPackElm->getAttributeValue("version", strFormatVersion)) +- return new RTCString("Missing format version"); +- if (!strFormatVersion.equals("1.0")) +- return &(new RTCString("Unsupported format version: "))->append(strFormatVersion); +- +- /* +- * Read and validate mandatory bits. +- */ +- const xml::ElementNode *pNameElm = pVBoxExtPackElm->findChildElement("Name"); +- if (!pNameElm) +- return new RTCString("The 'Name' element is missing"); +- const char *pszName = pNameElm->getValue(); +- if (!VBoxExtPackIsValidName(pszName)) +- return &(new RTCString("Invalid name: "))->append(pszName); +- +- const xml::ElementNode *pDescElm = pVBoxExtPackElm->findChildElement("Description"); +- if (!pDescElm) +- return new RTCString("The 'Description' element is missing"); +- const char *pszDesc = pDescElm->getValue(); +- if (!pszDesc || *pszDesc == '\0') +- return new RTCString("The 'Description' element is empty"); +- if (strpbrk(pszDesc, "\n\r\t\v\b") != NULL) +- return new RTCString("The 'Description' must not contain control characters"); +- +- const xml::ElementNode *pVersionElm = pVBoxExtPackElm->findChildElement("Version"); +- if (!pVersionElm) +- return new RTCString("The 'Version' element is missing"); +- const char *pszVersion = pVersionElm->getValue(); +- if (!pszVersion || *pszVersion == '\0') +- return new RTCString("The 'Version' element is empty"); +- if (!VBoxExtPackIsValidVersionString(pszVersion)) +- return &(new RTCString("Invalid version string: "))->append(pszVersion); +- +- uint32_t uRevision; +- if (!pVersionElm->getAttributeValue("revision", uRevision)) +- uRevision = 0; +- +- const char *pszEdition; +- if (!pVersionElm->getAttributeValue("edition", pszEdition)) +- pszEdition = ""; +- if (!VBoxExtPackIsValidEditionString(pszEdition)) +- return &(new RTCString("Invalid edition string: "))->append(pszEdition); +- +- const xml::ElementNode *pMainModuleElm = pVBoxExtPackElm->findChildElement("MainModule"); +- if (!pMainModuleElm) +- return new RTCString("The 'MainModule' element is missing"); +- const char *pszMainModule = pMainModuleElm->getValue(); +- if (!pszMainModule || *pszMainModule == '\0') +- return new RTCString("The 'MainModule' element is empty"); +- if (!VBoxExtPackIsValidModuleString(pszMainModule)) +- return &(new RTCString("Invalid main module string: "))->append(pszMainModule); +- +- /* +- * The VRDE module, optional. +- * Accept both none and empty as tokens of no VRDE module. +- */ +- const char *pszVrdeModule = NULL; +- const xml::ElementNode *pVrdeModuleElm = pVBoxExtPackElm->findChildElement("VRDEModule"); +- if (pVrdeModuleElm) +- { +- pszVrdeModule = pVrdeModuleElm->getValue(); +- if (!pszVrdeModule || *pszVrdeModule == '\0') +- pszVrdeModule = NULL; +- else if (!VBoxExtPackIsValidModuleString(pszVrdeModule)) +- return &(new RTCString("Invalid VRDE module string: "))->append(pszVrdeModule); +- } +- +- /* +- * Whether to show the license, optional. (presense is enough here) +- */ +- const xml::ElementNode *pShowLicenseElm = pVBoxExtPackElm->findChildElement("ShowLicense"); +- bool fShowLicense = pShowLicenseElm != NULL; +- +- /* +- * Parse plug-in descriptions (last because of the manual memory management). +- */ +- uint32_t cPlugIns = 0; +- PVBOXEXTPACKPLUGINDESC paPlugIns = NULL; +- RTCString *pstrRet = vboxExtPackLoadPlugInDescs(pVBoxExtPackElm, &cPlugIns, &paPlugIns); +- if (pstrRet) +- { +- RTMemFree(paPlugIns); +- return pstrRet; +- } +- +- /* +- * Everything seems fine, fill in the return values and return successfully. +- */ +- a_pExtPackDesc->strName = pszName; +- a_pExtPackDesc->strDescription = pszDesc; +- a_pExtPackDesc->strVersion = pszVersion; +- a_pExtPackDesc->strEdition = pszEdition; +- a_pExtPackDesc->uRevision = uRevision; +- a_pExtPackDesc->strMainModule = pszMainModule; +- a_pExtPackDesc->strVrdeModule = pszVrdeModule; +- a_pExtPackDesc->cPlugIns = cPlugIns; +- a_pExtPackDesc->paPlugIns = paPlugIns; +- a_pExtPackDesc->fShowLicense = fShowLicense; +- +- return NULL; +-} +- +-/** +- * Reads the extension pack descriptor. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pszDir The directory containing the description file. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- * @param a_pObjInfo Where to store the object info for the file (unix +- * attribs). Optional. +- */ +-RTCString *VBoxExtPackLoadDesc(const char *a_pszDir, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +- +- /* +- * Validate, open and parse the XML file. +- */ +- char szFilePath[RTPATH_MAX]; +- int vrc = RTPathJoin(szFilePath, sizeof(szFilePath), a_pszDir, VBOX_EXTPACK_DESCRIPTION_NAME); +- if (RT_FAILURE(vrc)) +- return new RTCString("RTPathJoin failed with %Rrc", vrc); +- +- RTFSOBJINFO ObjInfo; +- vrc = RTPathQueryInfoEx(szFilePath, &ObjInfo, RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK); +- if (RT_FAILURE(vrc)) +- return &(new RTCString())->printf("RTPathQueryInfoEx failed with %Rrc", vrc); +- if (a_pObjInfo) +- *a_pObjInfo = ObjInfo; +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- { +- if (RTFS_IS_SYMLINK(ObjInfo.Attr.fMode)) +- return new RTCString("The XML file is symlinked, that is not allowed"); +- return &(new RTCString)->printf("The XML file is not a file (fMode=%#x)", ObjInfo.Attr.fMode); +- } +- +- xml::Document Doc; +- { +- xml::XmlFileParser Parser; +- try +- { +- Parser.read(szFilePath, Doc); +- } +- catch (xml::XmlError Err) +- { +- return new RTCString(Err.what()); +- } +- } +- +- /* +- * Hand the xml doc over to the common code. +- */ +- return vboxExtPackLoadDescFromDoc(&Doc, a_pExtPackDesc); +-} +- +-/** +- * Reads the extension pack descriptor. +- * +- * @returns NULL on success, pointer to an error message on failure (caller +- * deletes it). +- * @param a_pszDir The directory containing the description file. +- * @param a_pExtPackDesc Where to store the extension pack descriptor. +- * @param a_pObjInfo Where to store the object info for the file (unix +- * attribs). Optional. +- */ +-RTCString *VBoxExtPackLoadDescFromVfsFile(RTVFSFILE hVfsFile, PVBOXEXTPACKDESC a_pExtPackDesc, PRTFSOBJINFO a_pObjInfo) +-{ +- vboxExtPackClearDesc(a_pExtPackDesc); +- +- /* +- * Query the object info. +- */ +- RTFSOBJINFO ObjInfo; +- int rc = RTVfsFileQueryInfo(hVfsFile, &ObjInfo, RTFSOBJATTRADD_UNIX); +- if (RT_FAILURE(rc)) +- return &(new RTCString)->printf("RTVfsFileQueryInfo failed: %Rrc", rc); +- if (a_pObjInfo) +- *a_pObjInfo = ObjInfo; +- +- /* +- * The simple approach, read the whole thing into memory and pass this to +- * the XML parser. +- */ +- +- /* Check the file size. */ +- if (ObjInfo.cbObject > _1M || ObjInfo.cbObject < 0) +- return &(new RTCString)->printf("The XML file is too large (%'RU64 bytes)", ObjInfo.cbObject); +- size_t const cbFile = (size_t)ObjInfo.cbObject; +- +- /* Rewind to the start of the file. */ +- rc = RTVfsFileSeek(hVfsFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return &(new RTCString)->printf("RTVfsFileSeek(,0,BEGIN) failed: %Rrc", rc); +- +- /* Allocate memory and read the file content into it. */ +- void *pvFile = RTMemTmpAlloc(cbFile); +- if (!pvFile) +- return &(new RTCString)->printf("RTMemTmpAlloc(%zu) failed", cbFile); +- +- RTCString *pstrErr = NULL; +- rc = RTVfsFileRead(hVfsFile, pvFile, cbFile, NULL); +- if (RT_FAILURE(rc)) +- pstrErr = &(new RTCString)->printf("RTVfsFileRead failed: %Rrc", rc); +- +- /* +- * Parse the file. +- */ +- xml::Document Doc; +- if (RT_SUCCESS(rc)) +- { +- xml::XmlMemParser Parser; +- RTCString strFileName = VBOX_EXTPACK_DESCRIPTION_NAME; +- try +- { +- Parser.read(pvFile, cbFile, strFileName, Doc); +- } +- catch (xml::XmlError Err) +- { +- pstrErr = new RTCString(Err.what()); +- rc = VERR_PARSE_ERROR; +- } +- } +- RTMemTmpFree(pvFile); +- +- /* +- * Hand the xml doc over to the common code. +- */ +- if (RT_SUCCESS(rc)) +- pstrErr = vboxExtPackLoadDescFromDoc(&Doc, a_pExtPackDesc); +- +- return pstrErr; +-} +- +-/** +- * Frees all resources associated with a extension pack descriptor. +- * +- * @param a_pExtPackDesc The extension pack descriptor which members +- * should be freed. +- */ +-void VBoxExtPackFreeDesc(PVBOXEXTPACKDESC a_pExtPackDesc) +-{ +- if (!a_pExtPackDesc) +- return; +- +- a_pExtPackDesc->strName.setNull(); +- a_pExtPackDesc->strDescription.setNull(); +- a_pExtPackDesc->strVersion.setNull(); +- a_pExtPackDesc->strEdition.setNull(); +- a_pExtPackDesc->uRevision = 0; +- a_pExtPackDesc->strMainModule.setNull(); +- a_pExtPackDesc->strVrdeModule.setNull(); +- a_pExtPackDesc->cPlugIns = 0; +- RTMemFree(a_pExtPackDesc->paPlugIns); +- a_pExtPackDesc->paPlugIns = NULL; +- a_pExtPackDesc->fShowLicense = false; +-} +- +-/** +- * Extract the extension pack name from the tarball path. +- * +- * @returns String containing the name on success, the caller must delete it. +- * NULL if no valid name was found or if we ran out of memory. +- * @param pszTarball The path to the tarball. +- */ +-RTCString *VBoxExtPackExtractNameFromTarballPath(const char *pszTarball) +-{ +- /* +- * Skip ahead to the filename part and count the number of characters +- * that matches the criteria for a mangled extension pack name. +- */ +- const char *pszSrc = RTPathFilename(pszTarball); +- if (!pszSrc) +- return NULL; +- +- size_t off = 0; +- while (RT_C_IS_ALNUM(pszSrc[off]) || pszSrc[off] == '_') +- off++; +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return NULL; +- +- /* +- * Return the unmangled name. +- */ +- return VBoxExtPackUnmangleName(pszSrc, off); +-} +- +-/** +- * Validates the extension pack name. +- * +- * @returns true if valid, false if not. +- * @param pszName The name to validate. +- * @sa VBoxExtPackExtractNameFromTarballPath +- */ +-bool VBoxExtPackIsValidName(const char *pszName) +-{ +- if (!pszName) +- return false; +- +- /* +- * Check the characters making up the name, only english alphabet +- * characters, decimal digits and spaces are allowed. +- */ +- size_t off = 0; +- while (pszName[off]) +- { +- if (!RT_C_IS_ALNUM(pszName[off]) && pszName[off] != ' ') +- return false; +- off++; +- } +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return false; +- +- return true; +-} +- +-/** +- * Checks if an alledged manged extension pack name. +- * +- * @returns true if valid, false if not. +- * @param pszMangledName The mangled name to validate. +- * @param cchMax The max number of chars to test. +- * @sa VBoxExtPackMangleName +- */ +-bool VBoxExtPackIsValidMangledName(const char *pszMangledName, size_t cchMax /*= RTSTR_MAX*/) +-{ +- if (!pszMangledName) +- return false; +- +- /* +- * Check the characters making up the name, only english alphabet +- * characters, decimal digits and underscores (=space) are allowed. +- */ +- size_t off = 0; +- while (off < cchMax && pszMangledName[off]) +- { +- if (!RT_C_IS_ALNUM(pszMangledName[off]) && pszMangledName[off] != '_') +- return false; +- off++; +- } +- +- /* +- * Check min and max name limits. +- */ +- if ( off > VBOX_EXTPACK_NAME_MAX_LEN +- || off < VBOX_EXTPACK_NAME_MIN_LEN) +- return false; +- +- return true; +-} +- +-/** +- * Mangle an extension pack name so it can be used by a directory or file name. +- * +- * @returns String containing the mangled name on success, the caller must +- * delete it. NULL on failure. +- * @param pszName The unmangled name. +- * @sa VBoxExtPackUnmangleName, VBoxExtPackIsValidMangledName +- */ +-RTCString *VBoxExtPackMangleName(const char *pszName) +-{ +- AssertReturn(VBoxExtPackIsValidName(pszName), NULL); +- +- char szTmp[VBOX_EXTPACK_NAME_MAX_LEN + 1]; +- size_t off = 0; +- char ch; +- while ((ch = pszName[off]) != '\0') +- { +- if (ch == ' ') +- ch = '_'; +- szTmp[off++] = ch; +- } +- szTmp[off] = '\0'; +- Assert(VBoxExtPackIsValidMangledName(szTmp)); +- +- return new RTCString(szTmp, off); +-} +- +-/** +- * Unmangle an extension pack name (reverses VBoxExtPackMangleName). +- * +- * @returns String containing the mangled name on success, the caller must +- * delete it. NULL on failure. +- * @param pszMangledName The mangled name. +- * @param cchMax The max name length. RTSTR_MAX is fine. +- * @sa VBoxExtPackMangleName, VBoxExtPackIsValidMangledName +- */ +-RTCString *VBoxExtPackUnmangleName(const char *pszMangledName, size_t cchMax) +-{ +- AssertReturn(VBoxExtPackIsValidMangledName(pszMangledName, cchMax), NULL); +- +- char szTmp[VBOX_EXTPACK_NAME_MAX_LEN + 1]; +- size_t off = 0; +- char ch; +- while ( off < cchMax +- && (ch = pszMangledName[off]) != '\0') +- { +- if (ch == '_') +- ch = ' '; +- else +- AssertReturn(RT_C_IS_ALNUM(ch) || ch == ' ', NULL); +- szTmp[off++] = ch; +- } +- szTmp[off] = '\0'; +- AssertReturn(VBoxExtPackIsValidName(szTmp), NULL); +- +- return new RTCString(szTmp, off); +-} +- +-/** +- * Constructs the extension pack directory path. +- * +- * A combination of RTPathJoin and VBoxExtPackMangleName. +- * +- * @returns IPRT status code like RTPathJoin. +- * @param pszExtPackDir Where to return the directory path. +- * @param cbExtPackDir The size of the return buffer. +- * @param pszParentDir The parent directory (".../Extensions"). +- * @param pszName The extension pack name, unmangled. +- */ +-int VBoxExtPackCalcDir(char *pszExtPackDir, size_t cbExtPackDir, const char *pszParentDir, const char *pszName) +-{ +- AssertReturn(VBoxExtPackIsValidName(pszName), VERR_INTERNAL_ERROR_5); +- +- RTCString *pstrMangledName = VBoxExtPackMangleName(pszName); +- if (!pstrMangledName) +- return VERR_INTERNAL_ERROR_4; +- +- int vrc = RTPathJoin(pszExtPackDir, cbExtPackDir, pszParentDir, pstrMangledName->c_str()); +- delete pstrMangledName; +- +- return vrc; +-} +- +- +-/** +- * Validates the extension pack version string. +- * +- * @returns true if valid, false if not. +- * @param pszVersion The version string to validate. +- */ +-bool VBoxExtPackIsValidVersionString(const char *pszVersion) +-{ +- if (!pszVersion || *pszVersion == '\0') +- return false; +- +- /* 1.x.y.z... */ +- for (;;) +- { +- if (!RT_C_IS_DIGIT(*pszVersion)) +- return false; +- do +- pszVersion++; +- while (RT_C_IS_DIGIT(*pszVersion)); +- if (*pszVersion != '.') +- break; +- pszVersion++; +- } +- +- /* upper case string + numbers indicating the build type */ +- if (*pszVersion == '-' || *pszVersion == '_') +- { +- /** @todo Should probably restrict this to known build types (alpha, +- * beta, rc, ++). */ +- do +- pszVersion++; +- while ( RT_C_IS_DIGIT(*pszVersion) +- || RT_C_IS_UPPER(*pszVersion) +- || *pszVersion == '-' +- || *pszVersion == '_'); +- } +- +- return *pszVersion == '\0'; +-} +- +-/** +- * Validates the extension pack edition string. +- * +- * @returns true if valid, false if not. +- * @param pszEdition The edition string to validate. +- */ +-bool VBoxExtPackIsValidEditionString(const char *pszEdition) +-{ +- if (*pszEdition) +- { +- if (!RT_C_IS_UPPER(*pszEdition)) +- return false; +- +- do +- pszEdition++; +- while ( RT_C_IS_UPPER(*pszEdition) +- || RT_C_IS_DIGIT(*pszEdition) +- || *pszEdition == '-' +- || *pszEdition == '_'); +- } +- return *pszEdition == '\0'; +-} +- +-/** +- * Validates an extension pack module string. +- * +- * @returns true if valid, false if not. +- * @param pszModule The module string to validate. +- */ +-bool VBoxExtPackIsValidModuleString(const char *pszModule) +-{ +- if (!pszModule || *pszModule == '\0') +- return false; +- +- /* Restricted charset, no extensions (dots). */ +- while ( RT_C_IS_ALNUM(*pszModule) +- || *pszModule == '-' +- || *pszModule == '_') +- pszModule++; +- +- return *pszModule == '\0'; +-} +- +-/** +- * RTStrPrintfv wrapper. +- * +- * @returns @a rc +- * @param rc The status code to return. +- * @param pszError The error buffer. +- * @param cbError The size of the buffer. +- * @param pszFormat The error message format string. +- * @param ... Format arguments. +- */ +-static int vboxExtPackReturnError(int rc, char *pszError, size_t cbError, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- RTStrPrintfV(pszError, cbError, pszFormat, va); +- va_end(va); +- return rc; +-} +- +-/** +- * RTStrPrintfv wrapper. +- * +- * @param pszError The error buffer. +- * @param cbError The size of the buffer. +- * @param pszFormat The error message format string. +- * @param ... Format arguments. +- */ +-static void vboxExtPackSetError(char *pszError, size_t cbError, const char *pszFormat, ...) +-{ +- va_list va; +- va_start(va, pszFormat); +- RTStrPrintfV(pszError, cbError, pszFormat, va); +- va_end(va); +-} +- +-/** +- * Verifies the manifest and its signature. +- * +- * @returns VBox status code, failures with message. +- * @param hManifestFile The xml from the extension pack. +- * @param pszExtPackName The expected extension pack name. This can be +- * NULL, in which we don't have any expectations. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackVerifyXml(RTVFSFILE hXmlFile, const char *pszExtPackName, char *pszError, size_t cbError) +-{ +- /* +- * Load the XML. +- */ +- VBOXEXTPACKDESC ExtPackDesc; +- RTCString *pstrErr = VBoxExtPackLoadDescFromVfsFile(hXmlFile, &ExtPackDesc, NULL); +- if (pstrErr) +- { +- RTStrCopy(pszError, cbError, pstrErr->c_str()); +- delete pstrErr; +- return VERR_PARSE_ERROR; +- } +- +- /* +- * Check the name. +- */ +- /** @todo drop this restriction after the old install interface is +- * dropped. */ +- int rc = VINF_SUCCESS; +- if ( pszExtPackName +- && !ExtPackDesc.strName.equalsIgnoreCase(pszExtPackName)) +- rc = vboxExtPackReturnError(VERR_NOT_EQUAL, pszError, cbError, +- "The name of the downloaded file and the name stored inside the extension pack does not match" +- " (xml='%s' file='%s')", ExtPackDesc.strName.c_str(), pszExtPackName); +- return rc; +-} +- +-/** +- * Verifies the manifest and its signature. +- * +- * @returns VBox status code, failures with message. +- * @param hOurManifest The manifest we compiled. +- * @param hManifestFile The manifest file in the extension pack. +- * @param hSignatureFile The manifest signature file. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackVerifyManifestAndSignature(RTMANIFEST hOurManifest, RTVFSFILE hManifestFile, RTVFSFILE hSignatureFile, +- char *pszError, size_t cbError) +-{ +- /* +- * Read the manifest from the extension pack. +- */ +- int rc = RTVfsFileSeek(hManifestFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTVfsFileSeek failed: %Rrc", rc); +- +- RTMANIFEST hTheirManifest; +- rc = RTManifestCreate(0 /*fFlags*/, &hTheirManifest); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- +- RTVFSIOSTREAM hVfsIos = RTVfsFileToIoStream(hManifestFile); +- rc = RTManifestReadStandard(hTheirManifest, hVfsIos); +- RTVfsIoStrmRelease(hVfsIos); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Compare the manifests. +- */ +- static const char *s_apszIgnoreEntries[] = +- { +- VBOX_EXTPACK_MANIFEST_NAME, +- VBOX_EXTPACK_SIGNATURE_NAME, +- "./" VBOX_EXTPACK_MANIFEST_NAME, +- "./" VBOX_EXTPACK_SIGNATURE_NAME, +- NULL +- }; +- char szError[RTPATH_MAX]; +- rc = RTManifestEqualsEx(hOurManifest, hTheirManifest, &s_apszIgnoreEntries[0], NULL, +- RTMANIFEST_EQUALS_IGN_MISSING_ATTRS /*fFlags*/, +- szError, sizeof(szError)); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Validate the manifest file signature. +- */ +- /** @todo implement signature stuff */ +- NOREF(hSignatureFile); +- +- } +- else if (rc == VERR_NOT_EQUAL && szError[0]) +- vboxExtPackSetError(pszError, cbError, "Manifest mismatch: %s", szError); +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEqualsEx failed: %Rrc", rc); +-#if 0 +- RTVFSIOSTREAM hVfsIosStdOut = NIL_RTVFSIOSTREAM; +- RTVfsIoStrmFromStdHandle(RTHANDLESTD_OUTPUT, RTFILE_O_WRITE, true, &hVfsIosStdOut); +- RTVfsIoStrmWrite(hVfsIosStdOut, "Our:\n", sizeof("Our:\n") - 1, true, NULL); +- RTManifestWriteStandard(hOurManifest, hVfsIosStdOut); +- RTVfsIoStrmWrite(hVfsIosStdOut, "Their:\n", sizeof("Their:\n") - 1, true, NULL); +- RTManifestWriteStandard(hTheirManifest, hVfsIosStdOut); +-#endif +- } +- else +- vboxExtPackSetError(pszError, cbError, "Error parsing '%s': %Rrc", VBOX_EXTPACK_MANIFEST_NAME, rc); +- +- RTManifestRelease(hTheirManifest); +- return rc; +-} +- +- +-/** +- * Verifies the file digest (if specified) and returns the SHA-256 of the file. +- * +- * @returns +- * @param hFileManifest Manifest containing a SHA-256 digest of the file +- * that was calculated as the file was processed. +- * @param pszFileDigest SHA-256 digest of the file. +- * @param pStrDigest Where to return the SHA-256 digest. Optional. +- * @param pszError Where to write an error message on failure. +- * @param cbError The size of the @a pszError buffer. +- */ +-static int vboxExtPackVerifyFileDigest(RTMANIFEST hFileManifest, const char *pszFileDigest, +- RTCString *pStrDigest, char *pszError, size_t cbError) +-{ +- /* +- * Extract the SHA-256 entry for the extpack file. +- */ +- char szCalculatedDigest[RTSHA256_DIGEST_LEN + 1]; +- int rc = RTManifestEntryQueryAttr(hFileManifest, "extpack", NULL /*no name*/, RTMANIFEST_ATTR_SHA256, +- szCalculatedDigest, sizeof(szCalculatedDigest), NULL); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Convert the two strings to binary form before comparing. +- * We convert the calculated hash even if we don't have anything to +- * compare with, just to validate it. +- */ +- uint8_t abCalculatedHash[RTSHA256_HASH_SIZE]; +- rc = RTSha256FromString(szCalculatedDigest, abCalculatedHash); +- if (RT_SUCCESS(rc)) +- { +- if ( pszFileDigest +- && *pszFileDigest != '\0') +- { +- uint8_t abFileHash[RTSHA256_HASH_SIZE]; +- rc = RTSha256FromString(pszFileDigest, abFileHash); +- if (RT_SUCCESS(rc)) +- { +- if (memcmp(abFileHash, abCalculatedHash, sizeof(abFileHash))) +- { +- vboxExtPackSetError(pszError, cbError, "The extension pack file has changed (SHA-256 mismatch)"); +- rc = VERR_NOT_EQUAL; +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "Bad SHA-256 '%s': %Rrc", szCalculatedDigest, rc); +- } +- +- /* +- * Set the output hash on success. +- */ +- if (pStrDigest && RT_SUCCESS(rc)) +- { +- try +- { +- *pStrDigest = szCalculatedDigest; +- } +- catch (std::bad_alloc) +- { +- rc = VERR_NO_MEMORY; +- } +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "Bad SHA-256 '%s': %Rrc", szCalculatedDigest, rc); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryGetAttr: %Rrc", rc); +- return rc; +-} +- +- +- +-/** +- * Validates a standard file. +- * +- * Generally all files are +- * +- * @returns VBox status code, failure message in @a pszError. +- * @param pszAdjName The adjusted member name. +- * @param enmType The VFS object type. +- * @param phVfsObj The pointer to the VFS object handle variable. +- * This is both input and output. +- * @param phVfsFile Where to store the handle to the memorized +- * file. This is NULL for license files. +- * @param pszError Where to write an error message on failure. +- * @param cbError The size of the @a pszError buffer. +- */ +-static int VBoxExtPackValidateStandardFile(const char *pszAdjName, RTVFSOBJTYPE enmType, +- PRTVFSOBJ phVfsObj, PRTVFSFILE phVfsFile, char *pszError, size_t cbError) +-{ +- int rc; +- +- /* +- * Make sure it's a file and that it isn't too large. +- */ +- if (phVfsFile && *phVfsFile != NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_DUPLICATE, pszError, cbError, +- "There can only be one '%s'", pszAdjName); +- else if (enmType != RTVFSOBJTYPE_IO_STREAM && enmType != RTVFSOBJTYPE_FILE) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "Standard member '%s' is not a file", pszAdjName); +- else +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(*phVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "Standard member '%s' is not a file", pszAdjName); +- else if (ObjInfo.cbObject >= _1M) +- rc = vboxExtPackReturnError(VERR_OUT_OF_RANGE, pszError, cbError, +- "Standard member '%s' is too large: %'RU64 bytes (max 1 MB)", +- pszAdjName, (uint64_t)ObjInfo.cbObject); +- else +- { +- /* +- * Make an in memory copy of the stream and check that the file +- * is UTF-8 clean. +- */ +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(*phVfsObj); +- RTVFSFILE hVfsFile; +- rc = RTVfsMemorizeIoStreamAsFile(hVfsIos, RTFILE_O_READ, &hVfsFile); +- if (RT_SUCCESS(rc)) +- { +- rc = RTVfsIoStrmValidateUtf8Encoding(hVfsIos, +- RTVFS_VALIDATE_UTF8_BY_RTC_3629 | RTVFS_VALIDATE_UTF8_NO_NULL, +- NULL); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Replace *phVfsObj with the memorized file. +- */ +- rc = RTVfsFileSeek(hVfsFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_SUCCESS(rc)) +- { +- RTVfsObjRelease(*phVfsObj); +- *phVfsObj = RTVfsObjFromFile(hVfsFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsFileSeek failed on '%s': %Rrc", pszAdjName, rc); +- } +- +- if (phVfsFile && RT_SUCCESS(rc)) +- *phVfsFile = hVfsFile; +- else +- RTVfsFileRelease(hVfsFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsMemorizeIoStreamAsFile failed on '%s': %Rrc", pszAdjName, rc); +- RTVfsIoStrmRelease(hVfsIos); +- } +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszAdjName, rc); +- } +- return rc; +-} +- +- +-/** +- * Validates a name in an extension pack. +- * +- * We restrict the charset to try make sure the extension pack can be unpacked +- * on all file systems. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name to validate. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberName(const char *pszName, char *pszError, size_t cbError) +-{ +- if (RTPathStartsWithRoot(pszName)) +- return vboxExtPackReturnError(VERR_PATH_IS_NOT_RELATIVE, pszError, cbError, "'%s': starts with root spec", pszName); +- +- const char *pszErr = NULL; +- const char *psz = pszName; +- int ch; +- while ((ch = *psz) != '\0') +- { +- /* Character set restrictions. */ +- if (ch < 0 || ch >= 128) +- { +- pszErr = "Only 7-bit ASCII allowed"; +- break; +- } +- if (ch <= 31 || ch == 127) +- { +- pszErr = "No control characters are not allowed"; +- break; +- } +- if (ch == '\\') +- { +- pszErr = "Only backward slashes are not allowed"; +- break; +- } +- if (strchr("'\":;*?|[]<>(){}", ch)) +- { +- pszErr = "The characters ', \", :, ;, *, ?, |, [, ], <, >, (, ), { and } are not allowed"; +- break; +- } +- +- /* Take the simple way out and ban all ".." sequences. */ +- if ( ch == '.' +- && psz[1] == '.') +- { +- pszErr = "Double dot sequence are not allowed"; +- break; +- } +- +- /* Keep the tree shallow or the hardening checks will fail. */ +- if (psz - pszName > VBOX_EXTPACK_MAX_MEMBER_NAME_LENGTH) +- { +- pszErr = "Too long"; +- break; +- } +- +- /* advance */ +- psz++; +- } +- +- if (pszErr) +- return vboxExtPackReturnError(VERR_INVALID_NAME, pszError, cbError, +- "Bad member name '%s' (pos %zu): %s", pszName, (size_t)(psz - pszName), pszErr); +- return RTEXITCODE_SUCCESS; +-} +- +- +-/** +- * Validates a file in an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the file. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberFile(const char *pszName, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- int rc = vboxExtPackValidateMemberName(pszName, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(hVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (ObjInfo.cbObject >= 9*_1G64) +- rc = vboxExtPackReturnError(VERR_OUT_OF_RANGE, pszError, cbError, +- "'%s': too large (%'RU64 bytes)", +- pszName, (uint64_t)ObjInfo.cbObject); +- if (!RTFS_IS_FILE(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_FILE, pszError, cbError, +- "The alleged file '%s' has a mode mask stating otherwise (%RTfmode)", +- pszName, ObjInfo.Attr.fMode); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszName, rc); +- } +- return rc; +-} +- +- +-/** +- * Validates a directory in an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the directory. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-static int vboxExtPackValidateMemberDir(const char *pszName, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- int rc = vboxExtPackValidateMemberName(pszName, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- RTFSOBJINFO ObjInfo; +- rc = RTVfsObjQueryInfo(hVfsObj, &ObjInfo, RTFSOBJATTRADD_NOTHING); +- if (RT_SUCCESS(rc)) +- { +- if (!RTFS_IS_DIRECTORY(ObjInfo.Attr.fMode)) +- rc = vboxExtPackReturnError(VERR_NOT_A_DIRECTORY, pszError, cbError, +- "The alleged directory '%s' has a mode mask saying differently (%RTfmode)", +- pszName, ObjInfo.Attr.fMode); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTVfsObjQueryInfo failed on '%s': %Rrc", pszName, rc); +- } +- return rc; +-} +- +-/** +- * Validates a member of an extension pack. +- * +- * @returns VBox status code, failures with message. +- * @param pszName The name of the directory. +- * @param enmType The object type. +- * @param hVfsObj The VFS object. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- */ +-int VBoxExtPackValidateMember(const char *pszName, RTVFSOBJTYPE enmType, RTVFSOBJ hVfsObj, char *pszError, size_t cbError) +-{ +- Assert(cbError > 0); +- *pszError = '\0'; +- +- int rc; +- if ( enmType == RTVFSOBJTYPE_FILE +- || enmType == RTVFSOBJTYPE_IO_STREAM) +- rc = vboxExtPackValidateMemberFile(pszName, hVfsObj, pszError, cbError); +- else if ( enmType == RTVFSOBJTYPE_DIR +- || enmType == RTVFSOBJTYPE_BASE) +- rc = vboxExtPackValidateMemberDir(pszName, hVfsObj, pszError, cbError); +- else +- rc = vboxExtPackReturnError(VERR_UNEXPECTED_FS_OBJ_TYPE, pszError, cbError, +- "'%s' is not a file or directory (enmType=%d)", pszName, enmType); +- return rc; +-} +- +- +-/** +- * Rewinds the tarball file handle and creates a gunzip | tar chain that +- * results in a filesystem stream. +- * +- * @returns VBox status code, failures with message. +- * @param hTarballFile The handle to the tarball file. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- * @param phTarFss Where to return the filesystem stream handle. +- * @param phFileManifest Where to return a manifest where the tarball is +- * gettting hashed. The entry will be called +- * "extpack" and be ready when the file system +- * stream is at an end. Optional. +- */ +-int VBoxExtPackOpenTarFss(RTFILE hTarballFile, char *pszError, size_t cbError, PRTVFSFSSTREAM phTarFss, PRTMANIFEST phFileManifest) +-{ +- Assert(cbError > 0); +- *pszError = '\0'; +- *phTarFss = NIL_RTVFSFSSTREAM; +- +- /* +- * Rewind the file and set up a VFS chain for it. +- */ +- int rc = RTFileSeek(hTarballFile, 0, RTFILE_SEEK_BEGIN, NULL); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "Failed seeking to the start of the tarball: %Rrc", rc); +- +- RTVFSIOSTREAM hTarballIos; +- rc = RTVfsIoStrmFromRTFile(hTarballFile, RTFILE_O_READ | RTFILE_O_DENY_WRITE | RTFILE_O_OPEN, true /*fLeaveOpen*/, +- &hTarballIos); +- if (RT_FAILURE(rc)) +- return vboxExtPackReturnError(rc, pszError, cbError, "RTVfsIoStrmFromRTFile failed: %Rrc", rc); +- +- RTMANIFEST hFileManifest = NIL_RTMANIFEST; +- rc = RTManifestCreate(0 /*fFlags*/, &hFileManifest); +- if (RT_SUCCESS(rc)) +- { +- RTVFSIOSTREAM hPtIos; +- rc = RTManifestEntryAddPassthruIoStream(hFileManifest, hTarballIos, "extpack", RTMANIFEST_ATTR_SHA256, true /*read*/, &hPtIos); +- if (RT_SUCCESS(rc)) +- { +- RTVFSIOSTREAM hGunzipIos; +- rc = RTZipGzipDecompressIoStream(hPtIos, 0 /*fFlags*/, &hGunzipIos); +- if (RT_SUCCESS(rc)) +- { +- RTVFSFSSTREAM hTarFss; +- rc = RTZipTarFsStreamFromIoStream(hGunzipIos, 0 /*fFlags*/, &hTarFss); +- if (RT_SUCCESS(rc)) +- { +- RTVfsIoStrmRelease(hPtIos); +- RTVfsIoStrmRelease(hGunzipIos); +- RTVfsIoStrmRelease(hTarballIos); +- *phTarFss = hTarFss; +- if (phFileManifest) +- *phFileManifest = hFileManifest; +- else +- RTManifestRelease(hFileManifest); +- return VINF_SUCCESS; +- } +- +- vboxExtPackSetError(pszError, cbError, "RTZipTarFsStreamFromIoStream failed: %Rrc", rc); +- RTVfsIoStrmRelease(hGunzipIos); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTZipGzipDecompressIoStream failed: %Rrc", rc); +- RTVfsIoStrmRelease(hPtIos); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryAddPassthruIoStream failed: %Rrc", rc); +- RTManifestRelease(hFileManifest); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- +- RTVfsIoStrmRelease(hTarballIos); +- return rc; +-} +- +- +-/** +- * Validates the extension pack tarball prior to unpacking. +- * +- * Operations performed: +- * - Mandatory files. +- * - Manifest check. +- * - Manifest seal check. +- * - XML check, match name. +- * +- * @returns VBox status code, failures with message. +- * @param hTarballFile The handle to open the @a pszTarball file. +- * @param pszExtPackName The name of the extension pack name. NULL if +- * the name is not fixed. +- * @param pszTarball The name of the tarball in case we have to +- * complain about something. +- * @param pszTarballDigest The SHA-256 digest of the tarball. Empty string +- * if no digest available. +- * @param pszError Where to store an error message on failure. +- * @param cbError The size of the buffer @a pszError points to. +- * @param phValidManifest Where to optionally return the handle to fully +- * validated the manifest for the extension pack. +- * This includes all files. +- * @param phXmlFile Where to optionally return the memorized XML +- * file. +- * @param pStrDigest Where to return the digest of the file. +- * Optional. +- */ +-int VBoxExtPackValidateTarball(RTFILE hTarballFile, const char *pszExtPackName, +- const char *pszTarball, const char *pszTarballDigest, +- char *pszError, size_t cbError, +- PRTMANIFEST phValidManifest, PRTVFSFILE phXmlFile, RTCString *pStrDigest) +-{ +- /* +- * Clear return values. +- */ +- if (phValidManifest) +- *phValidManifest = NIL_RTMANIFEST; +- if (phXmlFile) +- *phXmlFile = NIL_RTVFSFILE; +- Assert(cbError > 1); +- *pszError = '\0'; +- NOREF(pszTarball); +- +- /* +- * Open the tar.gz filesystem stream and set up an manifest in-memory file. +- */ +- RTMANIFEST hFileManifest; +- RTVFSFSSTREAM hTarFss; +- int rc = VBoxExtPackOpenTarFss(hTarballFile, pszError, cbError, &hTarFss, &hFileManifest); +- if (RT_FAILURE(rc)) +- return rc; +- +- RTMANIFEST hOurManifest; +- rc = RTManifestCreate(0 /*fFlags*/, &hOurManifest); +- if (RT_SUCCESS(rc)) +- { +- /* +- * Process the tarball (would be nice to move this to a function). +- */ +- RTVFSFILE hXmlFile = NIL_RTVFSFILE; +- RTVFSFILE hManifestFile = NIL_RTVFSFILE; +- RTVFSFILE hSignatureFile = NIL_RTVFSFILE; +- for (;;) +- { +- /* +- * Get the next stream object. +- */ +- char *pszName; +- RTVFSOBJ hVfsObj; +- RTVFSOBJTYPE enmType; +- rc = RTVfsFsStrmNext(hTarFss, &pszName, &enmType, &hVfsObj); +- if (RT_FAILURE(rc)) +- { +- if (rc != VERR_EOF) +- vboxExtPackSetError(pszError, cbError, "RTVfsFsStrmNext failed: %Rrc", rc); +- else +- rc = VINF_SUCCESS; +- break; +- } +- const char *pszAdjName = pszName[0] == '.' && pszName[1] == '/' ? &pszName[2] : pszName; +- +- /* +- * Check the type & name validity, performing special tests on +- * standard extension pack member files. +- * +- * N.B. We will always reach the end of the loop before breaking on +- * failure - cleanup reasons. +- */ +- rc = VBoxExtPackValidateMember(pszName, enmType, hVfsObj, pszError, cbError); +- if (RT_SUCCESS(rc)) +- { +- PRTVFSFILE phVfsFile = NULL; +- if (!strcmp(pszAdjName, VBOX_EXTPACK_DESCRIPTION_NAME)) +- phVfsFile = &hXmlFile; +- else if (!strcmp(pszAdjName, VBOX_EXTPACK_MANIFEST_NAME)) +- phVfsFile = &hManifestFile; +- else if (!strcmp(pszAdjName, VBOX_EXTPACK_SIGNATURE_NAME)) +- phVfsFile = &hSignatureFile; +- else if (!strncmp(pszAdjName, VBOX_EXTPACK_LICENSE_NAME_PREFIX, sizeof(VBOX_EXTPACK_LICENSE_NAME_PREFIX) - 1)) +- rc = VBoxExtPackValidateStandardFile(pszAdjName, enmType, &hVfsObj, NULL, pszError, cbError); +- if (phVfsFile) +- rc = VBoxExtPackValidateStandardFile(pszAdjName, enmType, &hVfsObj, phVfsFile, pszError, cbError); +- } +- +- /* +- * Add any I/O stream to the manifest +- */ +- if ( RT_SUCCESS(rc) +- && ( enmType == RTVFSOBJTYPE_FILE +- || enmType == RTVFSOBJTYPE_IO_STREAM)) +- { +- RTVFSIOSTREAM hVfsIos = RTVfsObjToIoStream(hVfsObj); +- rc = RTManifestEntryAddIoStream(hOurManifest, hVfsIos, pszAdjName, RTMANIFEST_ATTR_SIZE | RTMANIFEST_ATTR_SHA256); +- if (RT_FAILURE(rc)) +- vboxExtPackSetError(pszError, cbError, "RTManifestEntryAddIoStream failed on '%s': %Rrc", pszAdjName, rc); +- RTVfsIoStrmRelease(hVfsIos); +- } +- +- /* +- * Clean up and break out on failure. +- */ +- RTVfsObjRelease(hVfsObj); +- RTStrFree(pszName); +- if (RT_FAILURE(rc)) +- break; +- } +- +- /* +- * Check the integrity of the tarball file. +- */ +- if (RT_SUCCESS(rc)) +- { +- RTVfsFsStrmRelease(hTarFss); +- hTarFss = NIL_RTVFSFSSTREAM; +- rc = vboxExtPackVerifyFileDigest(hFileManifest, pszTarballDigest, pStrDigest, pszError, cbError); +- } +- +- /* +- * If we've successfully processed the tarball, verify that the +- * mandatory files are present. +- */ +- if (RT_SUCCESS(rc)) +- { +- if (hXmlFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_DESCRIPTION_NAME); +- if (hManifestFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_MANIFEST_NAME); +- if (hSignatureFile == NIL_RTVFSFILE) +- rc = vboxExtPackReturnError(VERR_MISSING, pszError, cbError, "Mandator file '%s' is missing", VBOX_EXTPACK_SIGNATURE_NAME); +- } +- +- /* +- * Check the manifest and it's signature. +- */ +- if (RT_SUCCESS(rc)) +- rc = vboxExtPackVerifyManifestAndSignature(hOurManifest, hManifestFile, hSignatureFile, pszError, cbError); +- +- /* +- * Check the XML. +- */ +- if (RT_SUCCESS(rc)) +- rc = vboxExtPackVerifyXml(hXmlFile, pszExtPackName, pszError, cbError); +- +- /* +- * Returns objects. +- */ +- if (RT_SUCCESS(rc)) +- { +- if (phValidManifest) +- { +- RTManifestRetain(hOurManifest); +- *phValidManifest = hOurManifest; +- } +- if (phXmlFile) +- { +- RTVfsFileRetain(hXmlFile); +- *phXmlFile = hXmlFile; +- } +- } +- +- /* +- * Release our object references. +- */ +- RTManifestRelease(hOurManifest); +- RTVfsFileRelease(hXmlFile); +- RTVfsFileRelease(hManifestFile); +- RTVfsFileRelease(hSignatureFile); +- } +- else +- vboxExtPackSetError(pszError, cbError, "RTManifestCreate failed: %Rrc", rc); +- RTVfsFsStrmRelease(hTarFss); +- RTManifestRelease(hFileManifest); +- +- return rc; +-} +- +--- VirtualBox-4.1.18.orig/include/Makefile.kmk 2012-06-20 10:07:49.000000000 -0300 ++++ VirtualBox-4.1.18/include/Makefile.kmk 2012-07-24 21:11:57.007068865 -0300 +@@ -51,7 +51,6 @@ + VBox/vd-cache-plugin.h \ + VBox/vmm/uvm.h \ + VBox/vscsi.h \ +- $(wildcard VBox/ExtPack/*.h ) \ + iprt/alloca.h \ + iprt/tcp.h \ + iprt/localipc.h \ +--- VirtualBox-4.1.18.orig/src/Makefile.kmk 2012-06-20 10:07:57.000000000 -0300 ++++ VirtualBox-4.1.18/src/Makefile.kmk 2012-07-24 22:51:10.206996034 -0300 +@@ -26,14 +26,6 @@ + include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk + include $(PATH_SUB_CURRENT)/libs/Makefile.kmk + +-else if defined(VBOX_ONLY_EXTPACKS) +- include $(PATH_SUB_CURRENT)/bldprogs/Makefile.kmk +- include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk +- include $(PATH_SUB_CURRENT)/libs/Makefile.kmk +- ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- include $(PATH_SUB_CURRENT)/recompiler/Makefile.kmk +- endif +- + else if defined(VBOX_ONLY_TESTSUITE) + include $(PATH_SUB_CURRENT)/libs/Makefile.kmk + include $(PATH_SUB_CURRENT)/VBox/Makefile.kmk +--- VirtualBox-4.1.18.orig/src/VBox/Makefile.kmk 2012-07-24 21:19:55.565641784 -0300 ++++ VirtualBox-4.1.18/src/VBox/Makefile.kmk 2012-07-24 22:12:55.429156962 -0300 +@@ -33,19 +33,6 @@ + include $(PATH_SUB_CURRENT)/HostDrivers/Makefile.kmk + include $(PATH_SUB_CURRENT)/Frontends/Makefile.kmk + +-else ifdef VBOX_ONLY_EXTPACKS +- include $(PATH_SUB_CURRENT)/Runtime/Makefile.kmk +- include $(PATH_SUB_CURRENT)/Devices/Makefile.kmk +- include $(PATH_SUB_CURRENT)/HostDrivers/Makefile.kmk +- include $(PATH_SUB_CURRENT)/ExtPacks/Makefile.kmk +- ifdef VBOX_WITH_VRDP +- include $(PATH_SUB_CURRENT)/RDP/Makefile.kmk +- endif +- include $(PATH_SUB_CURRENT)/VMM/Makefile.kmk +- ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- include $(PATH_SUB_CURRENT)/Disassembler/Makefile.kmk +- endif +- + else ifdef VBOX_ONLY_SDK + include $(PATH_SUB_CURRENT)/Main/Makefile.kmk + ifdef VBOX_WITH_VRDP +@@ -92,9 +79,6 @@ + if1of ($(KBUILD_TARGET_ARCH), amd64 x86) + include $(PATH_SUB_CURRENT)/NetworkServices/Makefile.kmk + endif +- ifndef VBOX_OSE +- include $(PATH_SUB_CURRENT)/ExtPacks/Makefile.kmk +- endif + ifdef VBOX_WITH_INSTALLER + include $(PATH_SUB_CURRENT)/Installer/Makefile.kmk # Keep this last. + endif +--- VirtualBox-4.1.18/src/libs/Makefile.kmk.orig 2012-07-24 21:23:26.938013023 -0300 ++++ VirtualBox-4.1.18/src/libs/Makefile.kmk 2012-07-24 21:43:42.557911752 -0300 +@@ -48,13 +48,6 @@ + include $(PATH_SUB_CURRENT)/kStuff/Makefile.kmk + endif + +-# OpenSSL. +-if !defined(VBOX_ONLY_SDK) \ +- && ( "$(SDK_VBOX_OPENSSL_INCS)" == "$(SDK_VBOX_OPENSSL_VBOX_DEFAULT_INCS)" \ +- || defined(VBOX_WITH_EXTPACK_PUEL_BUILD)) +- include $(PATH_SUB_CURRENT)/openssl-0.9.8t/Makefile.kmk +-endif +- + # libjpeg for VRDP video redirection + if defined(VBOX_WITH_VRDP) && defined(VBOX_WITH_VRDP_VIDEO_CHANNEL) + include $(PATH_SUB_CURRENT)/jpeg-8a/Makefile.kmk +--- VirtualBox-4.1.18.orig/src/VBox/Devices/Makefile.kmk 2012-07-24 23:06:45.916276235 -0300 ++++ VirtualBox-4.1.18/src/VBox/Devices/Makefile.kmk 2012-07-24 23:17:00.202963228 -0300 +@@ -21,9 +21,7 @@ + + # Include sub-makefiles. + include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk +-if defined(VBOX_WITH_INTEL_PXE) || defined(VBOX_ONLY_EXTPACKS) +- include $(PATH_SUB_CURRENT)/PC/PXE/Makefile.kmk +-else if defined(VBOX_WITH_PXE_ROM) && !defined(VBOX_WITHOUT_ETHERBOOT) ++if defined(VBOX_WITH_PXE_ROM) && !defined(VBOX_WITHOUT_ETHERBOOT) + include $(PATH_SUB_CURRENT)/PC/Etherboot-src/Makefile.kmk + endif + if !defined(VBOX_ONLY_EXTPACKS) # Goes on almost to the end of the file. +@@ -57,9 +55,6 @@ + ifdef VBOX_WITH_USB + VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB + VBoxDDU_SDKS.win = WINPSDK W2K3DDK +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDU_DEFS += VBOX_WITH_EHCI_IMPL +- endif + ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN + VBoxDDU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN + endif +@@ -122,9 +117,6 @@ + VBoxDD_DEFS = VBOX_ACPI + ifdef VBOX_WITH_USB + VBoxDD_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDD_DEFS += VBOX_WITH_EHCI_IMPL +- endif + endif + ifdef VBOX_WITH_VUSB + VBoxDD_DEFS += VBOX_WITH_VUSB +@@ -446,11 +438,6 @@ + endif + ifdef VBOX_WITH_USB + DevicesR3_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- DevicesR3_DEFS += VBOX_WITH_EHCI_IMPL +- DevicesR3_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) + DevicesR3_DEFS += VBOX_WITH_PCI_PASSTHROUGH_IMPL +@@ -607,11 +594,6 @@ + + ifdef VBOX_WITH_USB + VBoxDDGC_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDGC_DEFS += VBOX_WITH_EHCI_IMPL +- VBoxDDGC_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + + ifdef VBOX_WITH_VIDEOHWACCEL +@@ -711,11 +693,6 @@ + endif + ifdef VBOX_WITH_USB + VBoxDDR0_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDR0_DEFS += VBOX_WITH_EHCI_IMPL +- VBoxDDR0_SOURCES += \ +- USB/DevEHCI.cpp +- endif + endif + + if defined(VBOX_WITH_PCI_PASSTHROUGH_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) +@@ -1204,49 +1181,5 @@ + + endif # !VBOX_ONLY_EXTPACKS + +-if defined(VBOX_WITH_EXTPACK_PUEL) && defined(VBOX_WITH_EXTPACK_PUEL_BUILD) +- # +- # The EHCI (USB 2.0) Extension Pack Modules. +- # +- if defined(VBOX_WITH_USB) +- DLLS += VBoxEhciR3 +- VBoxEhciR3_TEMPLATE = VBoxR3ExtPackPuel +- VBoxEhciR3_SOURCES = USB/DevEHCI.cpp +- +- SYSMODS += VBoxEhciR0 +- VBoxEhciR0_TEMPLATE = VBoxR0ExtPackPuel +- VBoxEhciR0_SOURCES = USB/DevEHCI.cpp +- +- ifdef VBOX_WITH_RAW_MODE +- SYSMODS += VBoxEhciRC +- VBoxEhciRC_TEMPLATE = VBoxRcExtPackPuel +- VBoxEhciRC_SOURCES = USB/DevEHCI.cpp +- endif +- endif +- +- if defined(VBOX_WITH_PCI_PASSTHROUGH) +- DLLS += VBoxPciRawR3 +- VBoxPciRawR3_TEMPLATE = VBoxR3ExtPackPuel +- VBoxPciRawR3_SOURCES = Bus/DevPciRaw.cpp +- +- DLLS += VBoxPciRawDrv +- VBoxPciRawDrv_TEMPLATE = VBoxR3ExtPackPuel +- VBoxPciRawDrv_SOURCES = Bus/DrvPciRaw.cpp +- +- SYSMODS += VBoxPciRawR0 +- VBoxPciRawR0_TEMPLATE = VBoxR0ExtPackPuel +- VBoxPciRawR0_SOURCES = Bus/DevPciRaw.cpp +- +- Bus/DevPciRaw.cpp_INCS = Bus +- endif +- +- # +- # The Intel PXE rom. +- # +- INSTALLS += VBoxExtPackPuelInsRoms +- VBoxExtPackPuelInsRoms_TEMPLATE = VBoxInsExtPackPuel +- VBoxExtPackPuelInsRoms_SOURCES = PC/PXE/PXE-Intel.rom=>PXE-Intel.rom +-endif # VBOX_WITH_EXTPACK_PUEL +- + include $(KBUILD_PATH)/subfooter.kmk + +--- VirtualBox-4.1.18.orig/src/VBox/Main/Makefile.kmk 2012-07-24 23:38:25.304126039 -0300 ++++ VirtualBox-4.1.18/src/VBox/Main/Makefile.kmk 2012-07-24 23:38:25.350789964 -0300 +@@ -230,14 +230,12 @@ + $(if $(VBOX_USB_WITH_SYSFS),VBOX_USB_WITH_SYSFS,) \ + $(if $(VBOX_USB_WITH_INOTIFY),VBOX_USB_WITH_INOTIFY,) \ + $(if $(VBOX_WITH_LIVE_MIGRATION),VBOX_WITH_LIVE_MIGRATION,) \ +- $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \ + $(if $(VBOX_WITH_VUSB),VBOX_WITH_VUSB,) \ + $(if $(VBOX_WITH_S3),VBOX_WITH_S3,) \ + $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) + ifdef VBOX_WITH_USB + VBoxSVC_DEFS += \ + VBOX_WITH_USB \ +- $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \ + $(if $(VBOX_WITH_NEW_USB_CODE_ON_DARWIN),VBOX_WITH_NEW_USB_CODE_ON_DARWIN,) + endif + VBoxSVC_DEFS.win += VBOX_COM_OUTOFPROC_MODULE +@@ -290,7 +288,6 @@ + src-all/SharedFolderImpl.cpp \ + src-all/VirtualBoxBase.cpp \ + src-all/VirtualBoxErrorInfoImpl.cpp \ +- $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \ + src-server/ApplianceImpl.cpp \ + src-server/ApplianceImplExport.cpp \ + src-server/ApplianceImplImport.cpp \ +@@ -543,8 +540,6 @@ + $(if $(VBOX_WITH_HGSMI),VBOX_WITH_HGSMI,) \ + $(if $(VBOX_WITH_VIDEOHWACCEL),VBOX_WITH_VIDEOHWACCEL,) \ + $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \ +- $(if-expr defined(VBOX_WITH_EHCI) && defined(VBOX_WITH_USB),VBOX_WITH_EHCI,) \ +- $(if $(VBOX_WITH_EXTPACK),VBOX_WITH_EXTPACK,) \ + $(if $(VBOX_WITH_PCI_PASSTHROUGH),VBOX_WITH_PCI_PASSTHROUGH,) + + VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE +@@ -602,7 +597,6 @@ + src-all/SharedFolderImpl.cpp \ + src-all/VirtualBoxBase.cpp \ + src-all/VirtualBoxErrorInfoImpl.cpp \ +- $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \ + $(if $(VBOX_WITH_USB_VIDEO),src-client/UsbWebcamInterface.cpp,) \ + $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \ + src-client/AdditionsFacilityImpl.cpp \ +@@ -711,22 +705,6 @@ + endif # !win + + +-# +-# The VBoxExtPackHelperApp. +-# +-ifdef VBOX_WITH_EXTPACK +- PROGRAMS += VBoxExtPackHelperApp +- VBoxExtPackHelperApp_TEMPLATE = VBoxR3SetUidToRoot +- VBoxExtPackHelperApp_LDFLAGS.darwin = -framework Security +- VBoxExtPackHelperApp_LDFLAGS.win = /SUBSYSTEM:windows +- VBoxExtPackHelperApp_SOURCES = \ +- src-helper-apps/VBoxExtPackHelperApp.cpp \ +- src-all/ExtPackUtil.cpp +- VBoxExtPackHelperApp_LIBS = \ +- $(LIB_RUNTIME) +-endif # VBOX_WITH_EXTPACK +- +- + endif # !VBOX_ONLY_SDK (the ifndef is far above) + + +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/Makefile.kmk 2012-07-24 23:25:04.575825175 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/Makefile.kmk 2012-07-24 23:25:04.619156084 -0300 +@@ -888,7 +888,6 @@ + $(VBOX_MACOSX_ICON_FILE)=>Resources/virtualbox.icns \ + $(VBOX_BRAND_GUI_VBOX_64PX_PNG)=>Resources/virtualbox.png \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vbox.icns=>Resources/virtualbox-vbox.icns \ +- $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vbox-extpack.icns=>Resources/virtualbox-vbox-extpack.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-ovf.icns=>Resources/virtualbox-ovf.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-ova.icns=>Resources/virtualbox-ova.icns \ + $(PATH_ROOT)/src/VBox/Resources/darwin/virtualbox-vdi.icns=>Resources/virtualbox-vdi.icns \ +--- VirtualBox-4.1.18.orig/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-24 23:28:17.985011038 -0300 ++++ VirtualBox-4.1.18/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc 2012-07-24 23:28:18.051673913 -0300 +@@ -167,18 +167,6 @@ + <file alias="status_check_32px.png">images/status_check_32px.png</file> + <file alias="status_error_16px.png">images/status_error_16px.png</file> + <file alias="status_error_32px.png">images/status_error_32px.png</file> +- <file alias="extension_pack_16px.png">images/extension_pack_16px.png</file> +- <file alias="extension_pack_disabled_16px.png">images/extension_pack_disabled_16px.png</file> +- <file alias="extension_pack_32px.png">images/extension_pack_32px.png</file> +- <file alias="extension_pack_disabled_32px.png">images/extension_pack_disabled_32px.png</file> +- <file alias="extension_pack_install_16px.png">images/extension_pack_install_16px.png</file> +- <file alias="extension_pack_install_disabled_16px.png">images/extension_pack_install_disabled_16px.png</file> +- <file alias="extension_pack_install_32px.png">images/extension_pack_install_32px.png</file> +- <file alias="extension_pack_install_disabled_32px.png">images/extension_pack_install_disabled_32px.png</file> +- <file alias="extension_pack_uninstall_16px.png">images/extension_pack_uninstall_16px.png</file> +- <file alias="extension_pack_uninstall_disabled_16px.png">images/extension_pack_uninstall_disabled_16px.png</file> +- <file alias="extension_pack_uninstall_32px.png">images/extension_pack_uninstall_32px.png</file> +- <file alias="extension_pack_uninstall_disabled_32px.png">images/extension_pack_uninstall_disabled_32px.png</file> + <file alias="proxy_16px.png">images/proxy_16px.png</file> + <file alias="proxy_disabled_16px.png">images/proxy_disabled_16px.png</file> + <file alias="proxy_32px.png">images/proxy_32px.png</file> +--- VirtualBox-4.1.18.orig/src/VBox/Installer/linux/Makefile.kmk 2012-07-25 00:32:00.780012664 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/linux/Makefile.kmk 2012-07-25 00:32:00.806677728 -0300 +@@ -170,11 +170,6 @@ + VBox.sh \ + VBox.png + +-ifdef VBOX_WITH_EXTPACK +- VBOX_LNX_STRIP_BIN += \ +- VBoxExtPackHelperApp +-endif +- + # Qt4 GUI + ifdef VBOX_WITH_QTGUI + include $(PATH_ROOT)/src/VBox/Frontends/VirtualBox/nls/ApprovedLanguages.kmk +@@ -286,7 +281,7 @@ + + VBOX_MIME_ICONS = \ + $(addprefix $(PATH_ROOT)/src/VBox/Resources/other/,\ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/virtualbox-$(f).png))) + +--- VirtualBox-4.1.18.orig/src/VBox/Installer/win/Makefile.kmk 2012-07-25 00:34:52.253398525 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/win/Makefile.kmk 2012-07-25 00:34:52.300062531 -0300 +@@ -435,7 +435,6 @@ + -E 'VBOX_WITH_DEBUGGER_GUI=$(if-expr defined(VBOX_WITH_DEBUGGER_GUI) && defined(VBOX_WITH_QTGUI),yes,no)' \ + -E 'VBOX_WITH_DOCS_PACKING=$(if $(VBOX_WITH_DOCS_PACKING),yes,no)' \ + -E 'VBOX_WITH_EFIFW_PACKING=$(if $(VBOX_WITH_EFIFW_PACKING),yes,no)' \ +- -E 'VBOX_WITH_EXTPACK=$(if $(VBOX_WITH_EXTPACK),yes,no)' \ + -E 'VBOX_WITH_GUEST_CONTROL=$(if $(VBOX_WITH_GUEST_CONTROL),yes,no)' \ + -E 'VBOX_WITH_GUEST_PROPS=$(if $(VBOX_WITH_GUEST_PROPS),yes,no)' \ + -E 'VBOX_WITH_NETFLT=$(if $(VBOX_WITH_NETFLT),yes,no)' \ +--- VirtualBox-4.1.18.orig/src/VBox/Installer/darwin/Makefile.kmk 2012-07-25 00:36:55.929571374 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/darwin/Makefile.kmk 2012-07-25 00:36:55.959569630 -0300 +@@ -629,7 +629,6 @@ + MacOS/VirtualBoxVM \ + MacOS/VBoxNetAdpCtl \ + MacOS/VBoxNetDHCP \ +- MacOS/VBoxExtPackHelperApp \ + MacOS/VBoxBalloonCtrl + ifdef VBOX_WITH_WEBSERVICES + VBOX_DI_VBAPP_PROGS += \ +@@ -659,7 +658,6 @@ + Resources/virtualbox.icns \ + Resources/virtualbox.png \ + Resources/virtualbox-vbox.icns \ +- Resources/virtualbox-vbox-extpack.icns \ + Resources/virtualbox-ovf.icns \ + Resources/virtualbox-ova.icns \ + Resources/virtualbox-vdi.icns \ +--- VirtualBox-4.1.18/src/VBox/Installer/solaris/Makefile.kmk.orig 2012-07-25 00:38:48.476398293 -0300 ++++ VirtualBox-4.1.18/src/VBox/Installer/solaris/Makefile.kmk 2012-07-25 00:38:48.516396159 -0300 +@@ -185,12 +185,12 @@ + + VBOX_MIME_ICONS = \ + $(addprefix $(PATH_ROOT)/src/VBox/Resources/other/,\ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + virtualbox-$(f)-$(s)px.png=>$(s)x$(s)/mimetypes/virtualbox-$(f).png))) + + SOLARIS_COMMON_ICONS = \ +- $(foreach f,ova ovf vbox vbox-extpack vdi vmdk vhd hdd, \ ++ $(foreach f,ova ovf vbox vdi vmdk vhd hdd, \ + $(foreach s,16 20 24 32 48 64 72 96 128 256,\ + $(s)x$(s)/mimetypes/virtualbox-$(f).png)) + +@@ -210,7 +210,6 @@ + $(if $(VBOX_WITH_VBOXSDL),VBoxSDL,) \ + $(if $(VBOX_WITH_NETADP),VBoxNetAdpCtl,) \ + VBoxNetDHCP \ +- $(if $(VBOX_WITH_EXTPACK),VBoxExtPackHelperApp,) \ + VBoxSVC \ + $(if $(VBOX_WITH_CROGL),VBoxTestOGL,) \ + VBoxXPCOMIPCD \ +--- VirtualBox-4.1.18.orig/src/VBox/Runtime/Makefile.kmk 2012-07-25 00:40:58.745522450 -0300 ++++ VirtualBox-4.1.18/src/VBox/Runtime/Makefile.kmk 2012-07-25 00:40:58.782186960 -0300 +@@ -53,15 +53,6 @@ + # + LIBRARIES += RuntimeR3 RuntimeBldProg + +-else ifdef VBOX_ONLY_EXTPACKS_USE_IMPLIBS +- # +- # Build docs only - need just regular R3 runtime. +- # +- LIBRARIES += RuntimeBldProg +- LIBRARIES.solaris += RuntimeR0Stub +- LIBRARIES.win += RuntimeR0Stub RuntimeRCStub +- include $(PATH_SUB_CURRENT)/tools/Makefile.kmk +- + else # !VBOX_ONLY_ADDITIONS && !VBOX_ONLY_TESTSUITE && !VBOX_ONLY_DOCS + + # diff --git a/libre/virtualbox-libre/os_blag.png b/libre/virtualbox-libre/os_blag.png Binary files differnew file mode 100644 index 000000000..61995ca10 --- /dev/null +++ b/libre/virtualbox-libre/os_blag.png diff --git a/libre/virtualbox-libre/os_blag_64.png b/libre/virtualbox-libre/os_blag_64.png Binary files differnew file mode 100644 index 000000000..aa4463a97 --- /dev/null +++ b/libre/virtualbox-libre/os_blag_64.png diff --git a/libre/virtualbox-libre/os_dragora.png b/libre/virtualbox-libre/os_dragora.png Binary files differnew file mode 100644 index 000000000..d1df45880 --- /dev/null +++ b/libre/virtualbox-libre/os_dragora.png diff --git a/libre/virtualbox-libre/os_dragora_64.png b/libre/virtualbox-libre/os_dragora_64.png Binary files differnew file mode 100644 index 000000000..64bcecf20 --- /dev/null +++ b/libre/virtualbox-libre/os_dragora_64.png diff --git a/libre/virtualbox-libre/os_dynebolic.png b/libre/virtualbox-libre/os_dynebolic.png Binary files differnew file mode 100644 index 000000000..67b07d4c0 --- /dev/null +++ b/libre/virtualbox-libre/os_dynebolic.png diff --git a/libre/virtualbox-libre/os_gnewsense.png b/libre/virtualbox-libre/os_gnewsense.png Binary files differnew file mode 100644 index 000000000..76d9e38b3 --- /dev/null +++ b/libre/virtualbox-libre/os_gnewsense.png diff --git a/libre/virtualbox-libre/os_gnewsense_64.png b/libre/virtualbox-libre/os_gnewsense_64.png Binary files differnew file mode 100644 index 000000000..8859c34e8 --- /dev/null +++ b/libre/virtualbox-libre/os_gnewsense_64.png diff --git a/libre/virtualbox-libre/os_gnu.png b/libre/virtualbox-libre/os_gnu.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre/os_gnu.png diff --git a/libre/virtualbox-libre/os_gnu_64.png b/libre/virtualbox-libre/os_gnu_64.png Binary files differnew file mode 100644 index 000000000..4161634e9 --- /dev/null +++ b/libre/virtualbox-libre/os_gnu_64.png diff --git a/libre/virtualbox-libre/os_gnuhurd.png b/libre/virtualbox-libre/os_gnuhurd.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre/os_gnuhurd.png diff --git a/libre/virtualbox-libre/os_gnulinux.png b/libre/virtualbox-libre/os_gnulinux.png Binary files differnew file mode 100644 index 000000000..26c4550f9 --- /dev/null +++ b/libre/virtualbox-libre/os_gnulinux.png diff --git a/libre/virtualbox-libre/os_gnulinux_64.png b/libre/virtualbox-libre/os_gnulinux_64.png Binary files differnew file mode 100644 index 000000000..4161634e9 --- /dev/null +++ b/libre/virtualbox-libre/os_gnulinux_64.png diff --git a/libre/virtualbox-libre/os_musix.png b/libre/virtualbox-libre/os_musix.png Binary files differnew file mode 100644 index 000000000..fb7b94577 --- /dev/null +++ b/libre/virtualbox-libre/os_musix.png diff --git a/libre/virtualbox-libre/os_musix_64.png b/libre/virtualbox-libre/os_musix_64.png Binary files differnew file mode 100644 index 000000000..a1bbbbf3a --- /dev/null +++ b/libre/virtualbox-libre/os_musix_64.png diff --git a/libre/virtualbox-libre/os_os64base.png b/libre/virtualbox-libre/os_os64base.png Binary files differnew file mode 100644 index 000000000..7aec20314 --- /dev/null +++ b/libre/virtualbox-libre/os_os64base.png diff --git a/libre/virtualbox-libre/os_os64base.xcf b/libre/virtualbox-libre/os_os64base.xcf Binary files differnew file mode 100644 index 000000000..d8e28e35e --- /dev/null +++ b/libre/virtualbox-libre/os_os64base.xcf diff --git a/libre/virtualbox-libre/os_osbase.png b/libre/virtualbox-libre/os_osbase.png Binary files differnew file mode 100644 index 000000000..00f197fca --- /dev/null +++ b/libre/virtualbox-libre/os_osbase.png diff --git a/libre/virtualbox-libre/os_osbase.xcf b/libre/virtualbox-libre/os_osbase.xcf Binary files differnew file mode 100644 index 000000000..c4463c857 --- /dev/null +++ b/libre/virtualbox-libre/os_osbase.xcf diff --git a/libre/virtualbox-libre/os_parabola.png b/libre/virtualbox-libre/os_parabola.png Binary files differnew file mode 100644 index 000000000..757abc484 --- /dev/null +++ b/libre/virtualbox-libre/os_parabola.png diff --git a/libre/virtualbox-libre/os_parabola_64.png b/libre/virtualbox-libre/os_parabola_64.png Binary files differnew file mode 100644 index 000000000..5ac7c2767 --- /dev/null +++ b/libre/virtualbox-libre/os_parabola_64.png diff --git a/libre/virtualbox-libre/os_trisquel.png b/libre/virtualbox-libre/os_trisquel.png Binary files differnew file mode 100644 index 000000000..c6f0d3d7a --- /dev/null +++ b/libre/virtualbox-libre/os_trisquel.png diff --git a/libre/virtualbox-libre/os_trisquel_64.png b/libre/virtualbox-libre/os_trisquel_64.png Binary files differnew file mode 100644 index 000000000..ebca3dd43 --- /dev/null +++ b/libre/virtualbox-libre/os_trisquel_64.png diff --git a/libre/virtualbox-libre/os_ututo.png b/libre/virtualbox-libre/os_ututo.png Binary files differnew file mode 100644 index 000000000..e1dffb575 --- /dev/null +++ b/libre/virtualbox-libre/os_ututo.png diff --git a/libre/virtualbox-libre/os_ututo_64.png b/libre/virtualbox-libre/os_ututo_64.png Binary files differnew file mode 100644 index 000000000..158468e0a --- /dev/null +++ b/libre/virtualbox-libre/os_ututo_64.png diff --git a/libre/virtualbox-libre/os_venenux.png b/libre/virtualbox-libre/os_venenux.png Binary files differnew file mode 100644 index 000000000..5e0c1585d --- /dev/null +++ b/libre/virtualbox-libre/os_venenux.png diff --git a/libre/virtualbox-libre/vbox-service.conf b/libre/virtualbox-libre/vboxservice.conf index 9d4ec629f..9d4ec629f 100644 --- a/libre/virtualbox-libre/vbox-service.conf +++ b/libre/virtualbox-libre/vboxservice.conf diff --git a/libre/virtualbox-libre/vbox-service.rc b/libre/virtualbox-libre/vboxservice.rc index 96233f66d..5a62d69a3 100644 --- a/libre/virtualbox-libre/vbox-service.rc +++ b/libre/virtualbox-libre/vboxservice.rc @@ -2,22 +2,22 @@ . /etc/rc.conf . /etc/rc.d/functions -. /etc/conf.d/vbox-service +. /etc/conf.d/${0##*/} name=VBoxService PID=$(pidof -o %PPID $name) case "$1" in start) - stat_busy "Starting $name service" + stat_busy 'Starting VirtualBox Guest Service' [[ -z "$PID" ]] && ${name} $VBOX_SERVICE_OPTION &>/dev/null \ - && { add_daemon vbox-service; stat_done; } \ + && { add_daemon ${0##*/}; stat_done; } \ || { stat_fail; exit 1; } ;; stop) - stat_busy "Stopping $name service" + stat_busy 'Stopping VirtualBox Guest Service' [[ -n "$PID" ]] && kill $PID &>/dev/null \ - && { rm_daemon vbox-service; stat_done; } \ + && { rm_daemon ${0##*/}; stat_done; } \ || { stat_fail; exit 1; } ;; restart) @@ -26,11 +26,11 @@ case "$1" in $0 start ;; status) - stat_busy "Checking $name status"; - ck_status vbox-service + stat_busy 'Checking VirtualBox Guest Service status' + ck_status ${0##*/} ;; *) - echo "usage: $0 {start|stop|restart|status}" + echo "usage: ${0##*/} {start|stop|restart|status}" >&2 exit 1 esac diff --git a/libre/virtualbox-libre/vboxservice.service b/libre/virtualbox-libre/vboxservice.service new file mode 100644 index 000000000..bbd61617d --- /dev/null +++ b/libre/virtualbox-libre/vboxservice.service @@ -0,0 +1,9 @@ +[Unit] +Description=VirtualBox Guest Service +ConditionVirtualization=oracle + +[Service] +ExecStart=/usr/bin/VBoxService -f + +[Install] +WantedBy=multi-user.target diff --git a/libre/virtualbox-libre/vboxweb.service b/libre/virtualbox-libre/vboxweb.service new file mode 100644 index 000000000..303381597 --- /dev/null +++ b/libre/virtualbox-libre/vboxweb.service @@ -0,0 +1,11 @@ +[Unit] +Description=VirtualBox Web Service +After=network.target + +[Service] +Type=forking +PIDFile=/run/vboxweb.pid +ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb.pid --background + +[Install] +WantedBy=multi-user.target diff --git a/libre/virtualbox-libre/virtualbox-libre-parabola-additions.install b/libre/virtualbox-libre/virtualbox-libre-parabola-additions.install new file mode 100644 index 000000000..38bbe807d --- /dev/null +++ b/libre/virtualbox-libre/virtualbox-libre-parabola-additions.install @@ -0,0 +1,31 @@ +#!/bin/sh + +# arg 1: the new package version +post_install() { + getent group vboxsf > /dev/null || groupadd -g 109 vboxsf + true +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install "$1" + # rename /etc/rc.d/vboxservice + if [ "`vercmp $2 4.1.18-3`" -lt 0 ]; then + cat << EOF +==> rc.d vbox-service script was renamed to vboxservice. +EOF + fi + # fix gid of vboxsf + if [ "`vercmp $2 4.1.18-4`" -lt 0 ]; then + groupmod -g 109 vboxsf + fi + true +} + +# arg 1: the old package version +post_remove() { + groupdel vboxsf >/dev/null 2>&1 || true +} + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/virtualbox-libre/virtualbox-libre-parabola-source.install b/libre/virtualbox-libre/virtualbox-libre-parabola-source.install new file mode 100644 index 000000000..966fb5681 --- /dev/null +++ b/libre/virtualbox-libre/virtualbox-libre-parabola-source.install @@ -0,0 +1,29 @@ +#!/bin/sh + +# arg 1: the new package version +post_install() { + cat << EOF +==> To build and install your modules run dkms install vboxguest/${1%-*} +==> To do this automatically at startup you can add dkms in your DAEMONS +EOF +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + pre_remove "$2" +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install "$1" +} + +# arg 1: the old package version +pre_remove() { + # Remove modules using dkms + [ -n "${1%-*}" ] && dkms remove vboxguest/${1%-*} --all >/dev/null || true +} + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/virtualbox-libre/virtualbox-libre-source.install b/libre/virtualbox-libre/virtualbox-libre-source.install new file mode 100644 index 000000000..6a3994c8d --- /dev/null +++ b/libre/virtualbox-libre/virtualbox-libre-source.install @@ -0,0 +1,29 @@ +#/bin/sh + +# arg 1: the new package version +post_install() { + cat << EOF +==> To build and install your modules run dkms install vboxhost/${1%-*} +==> To do this automatically at startup you can add dkms in your DAEMONS +EOF +} + +# arg 1: the new package version +# arg 2: the old package version +pre_upgrade() { + pre_remove "$2" +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install "$1" +} + +# arg 1: the old package version +pre_remove() { + # Remove modules using dkms + [ -n "${1%-*}" ] && dkms remove vboxhost/${1%-*} --all >/dev/null || true +} + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/virtualbox-libre/virtualbox-libre.install b/libre/virtualbox-libre/virtualbox-libre.install new file mode 100644 index 000000000..6913fe2ed --- /dev/null +++ b/libre/virtualbox-libre/virtualbox-libre.install @@ -0,0 +1,45 @@ +#!/bin/sh + +utils() { + if [ -x usr/bin/update-mime-database ]; then + update-mime-database usr/share/mime > /dev/null 2>&1 + fi + + if [ -x usr/bin/xdg-icon-resource ]; then + xdg-icon-resource forceupdate --theme hicolor > /dev/null 2>&1 + fi + + if [ -x usr/bin/update-desktop-database ]; then + usr/bin/update-desktop-database -q + fi + + if [ -x usr/bin/udevadm ]; then + usr/bin/udevadm control --reload + fi +} + +# arg 1: the new package version +post_install() { + getent group vboxusers >/dev/null || usr/sbin/groupadd -g 108 vboxusers + utils +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install "$1" + if [ "$(vercmp $2 4.1.6-1)" -lt 0 ]; then + cat << EOF +===> Starting with virtualbox version 4.1.6-1, kernel modules handling is done by virtualbox-modules. +===> Use virtualbox-source package if you don't use our stock linux package. +EOF + fi +} + +# arg 1: the old package version +post_remove() { + groupdel vboxusers >/dev/null 2>&1 || true + utils +} + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/virtualbox-libre/virtualbox-source.install b/libre/virtualbox-libre/virtualbox-source.install deleted file mode 100644 index 24d90b1c2..000000000 --- a/libre/virtualbox-libre/virtualbox-source.install +++ /dev/null @@ -1,12 +0,0 @@ -post_install() { -/bin/cat << EOF -===> To compile the modules do /usr/bin/vboxbuild -EOF - -} - -post_upgrade() { -/bin/cat << EOF -===> To recompile the modules do /usr/bin/vboxbuild -EOF -} diff --git a/libre/virtualbox-libre/virtualbox.install b/libre/virtualbox-libre/virtualbox.install deleted file mode 100644 index 29646e973..000000000 --- a/libre/virtualbox-libre/virtualbox.install +++ /dev/null @@ -1,34 +0,0 @@ -utils() { - if [ -x usr/bin/update-mime-database ]; then - update-mime-database usr/share/mime > /dev/null 2>&1 - fi - - if [ -x usr/bin/xdg-icon-resource ]; then - xdg-icon-resource forceupdate --theme hicolor > /dev/null 2>&1 - fi - - if [ -x usr/bin/update-desktop-database ]; then - usr/bin/update-desktop-database -q - fi -} - -post_install() { - getent group vboxusers >> /dev/null || usr/sbin/groupadd -g 108 vboxusers - utils -} - -post_upgrade() { - getent group vboxusers >> /dev/null || usr/sbin/groupadd -g 108 vboxusers - utils - if [ "$(vercmp $2 4.1.6-1)" -lt 0 ]; then -/bin/cat << EOF -===> Starting with virtualbox version 4.1.6-1, kernel modules handling is done by virtualbox-modules. -===> Use virtualbox-source package if you don't use our stock linux-libre package. -EOF - fi -} - -post_remove() { - groupdel vboxusers >/dev/null 2>&1 || true - utils -} diff --git a/libre/virtualbox-modules-lts/PKGBUILD b/libre/virtualbox-modules-lts/PKGBUILD deleted file mode 100644 index da8583e87..000000000 --- a/libre/virtualbox-modules-lts/PKGBUILD +++ /dev/null @@ -1,101 +0,0 @@ -# $Id$ -# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> -# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> -# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> -# Maintainer (Parabola): Jorge López <jorginho@lavabit.com> - -pkgbase=virtualbox-modules-lts -pkgname=('virtualbox-modules-lts' 'virtualbox-parabola-modules-lts') -pkgver=4.1.18 -pkgrel=2 -arch=('i686' 'x86_64') -url='http://virtualbox.org' -license=('GPL') -makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl' 'linux-libre-lts' 'linux-libre-lts-headers') -[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc') -source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2 - LocalConfig.kmk 60-vboxguest.rules) -md5sums=('38db0a87cba659b484af868b0c2bd3ac' - '4c88bd122677a35f68abd76eb01b378b' - 'ed1341881437455d9735875ddf455fbe') - -_extramodules=extramodules-3.0-LIBRE-LTS -_kernver=$(pacman -Q linux-libre-lts | awk '{ printf "%s-LIBRE-LTS", $2; exit }') - -export KERN_DIR=/usr/lib/modules/${_kernver}/build -export KERN_INCL=/usr/src/linux-${_kernver}/include/ - -build() { - cd "$srcdir/VirtualBox-${pkgver}" - - cp "$srcdir/LocalConfig.kmk" . - - ./configure \ - --with-linux=/usr/src/linux-${_kernver} \ - --disable-java \ - --disable-docs \ - --disable-xpcom \ - --disable-python \ - --disable-sdl-ttf \ - --disable-alsa \ - --disable-pulse \ - --disable-dbus \ - --disable-opengl \ - --build-headless \ - --nofatal - source ./env.sh - kmk all - - make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" - make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" -} - -package_virtualbox-parabola-modules-lts(){ - pkgdesc="Additions only for Parabola guests (long-term supported kernel modules)" - license=('GPL') - install=virtualbox-parabola-modules-lts.install - depends=('linux-libre-lts>=3.0' 'linux-libre-lts<3.1') - replaces=('virtualbox-archlinux-modules-lts') - conflicts=('virtualbox-archlinux-modules-lts') - provides=("virtualbox-parabola-modules=$pkgver" "virtualbox-archlinux-modules=$pkgver" "virtualbox-archlinux-modules-lts=$pkgver") - - source "$srcdir/VirtualBox-${pkgver}/env.sh" - - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" - - for module in vboxguest.ko vboxsf.ko vboxvideo.ko; do - install -D -m644 ${module} \ - "$pkgdir/usr/lib/modules/${_extramodules}/${module}" - done - - install -D -m 0644 "$srcdir/60-vboxguest.rules" \ - "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules" - - find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; -} - -package_virtualbox-modules-lts(){ - pkgdesc="Long-term supported kernel modules for VirtualBox" - license=('GPL') - install=virtualbox-modules-lts.install - depends=('linux-libre-lts>=3.0' 'linux-libre-lts<3.1') - provides=("virtualbox-modules=$pkgver") - - source "$srcdir/VirtualBox-${pkgver}/env.sh" - - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" - - install -D -m644 vboxdrv.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxdrv.ko" - - install -D -m644 vboxnetadp.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetadp.ko" - - install -D -m644 vboxnetflt.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetflt.ko" - - install -D -m644 vboxpci.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxpci.ko" - - find "${pkgdir}" -name '*.ko' -exec gzip -9 {} + -} diff --git a/libre/virtualbox-modules/PKGBUILD b/libre/virtualbox-modules/PKGBUILD deleted file mode 100644 index 50e9b0721..000000000 --- a/libre/virtualbox-modules/PKGBUILD +++ /dev/null @@ -1,104 +0,0 @@ -# $Id$ -#Maintainer: Ionut Biru <ibiru@archlinux.org> -#Maintainer (Parabola): Jorge López <jorginho@lavabit.com> -#Contributor (Parabola): André Silva <emulatorman@lavabit.com> - -pkgbase=virtualbox-modules -pkgname=('virtualbox-modules' 'virtualbox-parabola-modules') -pkgver=4.1.18 -pkgrel=2 -arch=('i686' 'x86_64') -url='http://virtualbox.org' -license=('GPL') -makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl' 'linux-libre-headers') -[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc') -source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2 - LocalConfig.kmk 60-vboxguest.rules) -md5sums=('38db0a87cba659b484af868b0c2bd3ac' - '4c88bd122677a35f68abd76eb01b378b' - 'ed1341881437455d9735875ddf455fbe') - -_extramodules=extramodules-3.4-LIBRE -_kernver="$(cat /usr/lib/modules/${_extramodules}/version || true)" - -export KERN_DIR=/usr/lib/modules/${_kernver}/build -export KERN_INCL=/usr/src/linux-${_kernver}/include/ - -build() { - cd "$srcdir/VirtualBox-${pkgver}" - - cp "$srcdir/LocalConfig.kmk" . - - ./configure \ - --with-linux=/usr/src/linux-${_kernver} \ - --disable-java \ - --disable-docs \ - --disable-xpcom \ - --disable-python \ - --disable-sdl-ttf \ - --disable-alsa \ - --disable-pulse \ - --disable-dbus \ - --disable-opengl \ - --build-headless \ - --nofatal - source ./env.sh - kmk all - - make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" - make -C "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" -} - -package_virtualbox-parabola-modules(){ - pkgdesc="Additions only for Parabola guests (kernel modules)" - license=('GPL') - install=virtualbox-parabola-modules.install - depends=('linux-libre>=3.4' 'linux-libre<3.5') - replaces=('virtualbox-archlinux-modules') - conflicts=('virtualbox-archlinux-modules') - provides=("virtualbox-archlinux-modules=$pkgver") - - source "$srcdir/VirtualBox-${pkgver}/env.sh" - - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions/src" - - for module in vboxguest.ko vboxsf.ko vboxvideo.ko; do - install -D -m644 ${module} \ - "$pkgdir/lib/modules/${_extramodules}/${module}" - done - - install -D -m 0644 "$srcdir/60-vboxguest.rules" \ - "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules" - - find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; - - sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-parabola-modules.install" -} - -package_virtualbox-modules(){ - pkgdesc="Kernel modules for VirtualBox" - license=('GPL') - install=virtualbox-modules.install - depends=('linux-libre>=3.4' 'linux-libre<3.5') - - source "$srcdir/VirtualBox-${pkgver}/env.sh" - - - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" - - install -D -m644 vboxdrv.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxdrv.ko" - - install -D -m644 vboxnetadp.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetadp.ko" - - install -D -m644 vboxnetflt.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetflt.ko" - - install -D -m644 vboxpci.ko \ - "$pkgdir/usr/lib/modules/${_extramodules}/vboxpci.ko" - - find "${pkgdir}" -name '*.ko' -exec gzip -9 {} + - - sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-modules.install" -} diff --git a/libre/xulrunner-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch b/libre/xulrunner-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch index 4da03a569..4a0507271 100644 --- a/libre/xulrunner-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch +++ b/libre/xulrunner-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch @@ -2,35 +2,20 @@ From: Mike Hommey <mh@glandium.org> Date: Tue, 5 Jun 2012 08:57:06 +0200
Subject: Bug 756390 - Make the "Reset Firefox" feature more generic
----
- browser/components/migration/content/migration.js | 15 ++++++++++-----
- browser/components/migration/content/migration.xul | 2 +-
- .../migration/src/BrowserProfileMigrators.manifest | 2 +-
- .../components/migration/src/FirefoxProfileMigrator.js | 2 +-
- browser/components/migration/src/ProfileMigrator.js | 4 ++++
- .../en-US/chrome/browser/migration/migration.dtd | 2 --
- .../en-US/chrome/browser/migration/migration.properties | 11 +++++------
- toolkit/content/aboutSupport.js | 8 ++++----
- toolkit/content/jar.mn | 2 +-
- toolkit/content/resetProfile.js | 6 ++----
- toolkit/profile/nsIProfileMigrator.idl | 10 +++++++++-
- toolkit/xre/nsAppRunner.cpp | 2 +-
- 83 files changed, 394 insertions(+), 382 deletions(-)
-
diff --git a/browser/components/migration/content/migration.js b/browser/components/migration/content/migration.js
-index ffb0c34..442a5ff 100644
+index 0e8ccf5..fa46c08 100644
--- a/browser/components/migration/content/migration.js
+++ b/browser/components/migration/content/migration.js
-@@ -314,7 +314,7 @@ var MigrationWizard = {
+@@ -249,7 +249,7 @@ var MigrationWizard = {
}
- var bundle = document.getElementById("brandBundle");
+ var brandBundle = document.getElementById("brandBundle");
- // These strings don't exist when not using official branding. If that's
+ // These strings may not exist when not using official branding. If that's
// the case, just skip this page.
try {
- var pageTitle = bundle.getString("homePageMigrationPageTitle");
-@@ -346,8 +346,8 @@ var MigrationWizard = {
+ var pageTitle = brandBundle.getString("homePageMigrationPageTitle");
+@@ -281,8 +281,8 @@ var MigrationWizard = {
case "chrome":
source = "sourceNameChrome";
break;
@@ -41,75 +26,107 @@ index ffb0c34..442a5ff 100644 break;
}
-@@ -357,8 +357,13 @@ var MigrationWizard = {
+@@ -292,7 +292,12 @@ var MigrationWizard = {
var oldHomePageURL = this._migrator.sourceHomePageURL;
if (oldHomePageURL && source) {
-- var bundle2 = document.getElementById("bundle");
-- var appName = bundle2.getString(source);
+- var appName = MigrationUtils.getLocalizedString(source);
+ var appName;
+ if (source == "brand") {
-+ appName = bundle.GetStringFromName("brandFullName");
++ appName = brandBundle.GetStringFromName("brandFullName");
+ } else {
-+ var bundle2 = document.getElementById("bundle");
-+ appName = bundle2.getString(source);
++ appName = MigrationUtils.getLocalizedString(source);
+ }
- var oldHomePageLabel = bundle.getFormattedString("homePageImport",
- [appName]);
+ var oldHomePageLabel =
+ brandBundle.getFormattedString("homePageImport", [appName]);
var oldHomePage = document.getElementById("oldHomePage");
diff --git a/browser/components/migration/content/migration.xul b/browser/components/migration/content/migration.xul
-index f8653b1..f3ac62a 100644
+index 4bcc1d9..c4db956 100644
--- a/browser/components/migration/content/migration.xul
+++ b/browser/components/migration/content/migration.xul
-@@ -76,7 +76,7 @@
- #endif
- #endif
+@@ -74,7 +74,7 @@
+ #elifdef XP_UNIX
<radio id="chrome" label="&importFromChrome.label;" accesskey="&importFromChrome.accesskey;"/>
+ #endif
- <radio id="firefox" label="&importFromFirefox.label;" accesskey="&importFromFirefox.accesskey;"/>
+ <radio id="self" hidden="true"/>
- <radio id="fromfile" label="&importFromHTMLFile.label;" accesskey="&importFromHTMLFile.accesskey;" hidden="true"/>
<radio id="nothing" label="&importFromNothing.label;" accesskey="&importFromNothing.accesskey;" hidden="true"/>
</radiogroup>
+ <label id="noSources" hidden="true">&noMigrationSources.label;</label>
diff --git a/browser/components/migration/src/BrowserProfileMigrators.manifest b/browser/components/migration/src/BrowserProfileMigrators.manifest
-index f49e481..e490ddf 100644
+index 527771f..782b38f 100644
--- a/browser/components/migration/src/BrowserProfileMigrators.manifest
+++ b/browser/components/migration/src/BrowserProfileMigrators.manifest
-@@ -3,4 +3,4 @@ contract @mozilla.org/toolkit/profile-migrator;1 {6F8BB968-C14F-4D6F-9733-6C6737
+@@ -3,7 +3,7 @@ contract @mozilla.org/toolkit/profile-migrator;1 {6F8BB968-C14F-4D6F-9733-6C6737
component {4cec1de4-1671-4fc3-a53e-6c539dc77a26} ChromeProfileMigrator.js
contract @mozilla.org/profile/migrator;1?app=browser&type=chrome {4cec1de4-1671-4fc3-a53e-6c539dc77a26}
component {91185366-ba97-4438-acba-48deaca63386} FirefoxProfileMigrator.js
-contract @mozilla.org/profile/migrator;1?app=browser&type=firefox {91185366-ba97-4438-acba-48deaca63386}
+contract @mozilla.org/profile/migrator;1?app=browser&type=self {91185366-ba97-4438-acba-48deaca63386}
+ component {3d2532e3-4932-4774-b7ba-968f5899d3a4} IEProfileMigrator.js
+ contract @mozilla.org/profile/migrator;1?app=browser&type=ie {3d2532e3-4932-4774-b7ba-968f5899d3a4}
+ component {4b609ecf-60b2-4655-9df4-dc149e474da1} SafariProfileMigrator.js
diff --git a/browser/components/migration/src/FirefoxProfileMigrator.js b/browser/components/migration/src/FirefoxProfileMigrator.js
-index 7b4a6e4..add5bc4 100644
+index 8f14f49..8dc175d 100644
--- a/browser/components/migration/src/FirefoxProfileMigrator.js
+++ b/browser/components/migration/src/FirefoxProfileMigrator.js
-@@ -448,7 +448,7 @@ FirefoxProfileMigrator.prototype = {
- ]),
+@@ -88,7 +88,7 @@ Object.defineProperty(FirefoxProfileMigrator.prototype, "startupOnlyMigrator", {
- classDescription: "Firefox Profile Migrator",
-- contractID: "@mozilla.org/profile/migrator;1?app=browser&type=firefox",
-+ contractID: "@mozilla.org/profile/migrator;1?app=browser&type=self",
- classID: Components.ID("{91185366-ba97-4438-acba-48deaca63386}")
- };
-diff --git a/browser/components/migration/src/ProfileMigrator.js b/browser/components/migration/src/ProfileMigrator.js
-index ea66675..fe4df10 100644
---- a/browser/components/migration/src/ProfileMigrator.js
-+++ b/browser/components/migration/src/ProfileMigrator.js
-@@ -51,6 +51,10 @@ ProfileMigrator.prototype = {
- params);
+ FirefoxProfileMigrator.prototype.classDescription = "Firefox Profile Migrator";
+-FirefoxProfileMigrator.prototype.contractID = "@mozilla.org/profile/migrator;1?app=browser&type=firefox";
++FirefoxProfileMigrator.prototype.contractID = "@mozilla.org/profile/migrator;1?app=browser&type=self";
+ FirefoxProfileMigrator.prototype.classID = Components.ID("{91185366-ba97-4438-acba-48deaca63386}");
+
+ const NSGetFactory = XPCOMUtils.generateNSGetFactory([FirefoxProfileMigrator]);
+diff --git a/browser/components/migration/src/MigrationUtils.jsm b/browser/components/migration/src/MigrationUtils.jsm
+index 9460e6d..8db6827 100644
+--- a/browser/components/migration/src/MigrationUtils.jsm
++++ b/browser/components/migration/src/MigrationUtils.jsm
+@@ -403,11 +403,6 @@ let MigrationUtils = Object.freeze({
+ * @see nsIStringBundle
+ */
+ getLocalizedString: function MU_getLocalizedString(aKey, aReplacements) {
+- const OVERRIDES = {
+- "4_firefox": "4_firefox_history_and_bookmarks"
+- };
+- aKey = OVERRIDES[aKey] || aKey;
+-
+ if (aReplacements === undefined)
+ return getMigrationBundle().GetStringFromName(aKey);
+ return getMigrationBundle().formatStringFromName(
+@@ -622,6 +617,17 @@ let MigrationUtils = Object.freeze({
},
-+ canMigrate: function PM__canMigrate(aMigratorKey) {
+ /**
++ * Returns whether a given migration type is supported.
++ *
++ * @param aKey Migrator key
++ * @returns whether the migrator key is supported.
++ */
++ canMigrate:
++ function MU_canMigrate(aMigratorKey) {
+ return "@mozilla.org/profile/migrator;1?app=browser&type=" + aMigratorKey in Cc;
+ },
+
- _toCString: function PM__toCString(aStr) {
- let cstr = Cc["@mozilla.org/supports-cstring;1"].
- createInstance(Ci.nsISupportsCString);
++ /**
+ * Cleans up references to migrators and nsIProfileInstance instances.
+ */
+ finishMigration: function MU_finishMigration() {
+diff --git a/browser/components/migration/src/ProfileMigrator.js b/browser/components/migration/src/ProfileMigrator.js
+index 744f117..59e5a4c 100644
+--- a/browser/components/migration/src/ProfileMigrator.js
++++ b/browser/components/migration/src/ProfileMigrator.js
+@@ -12,6 +12,7 @@ function ProfileMigrator() {
+
+ ProfileMigrator.prototype = {
+ migrate: MigrationUtils.startupMigration.bind(MigrationUtils),
++ canMigrate: MigrationUtils.canMigrate.bind(MigrationUtils),
+ QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIProfileMigrator]),
+ classDescription: "Profile Migrator",
+ contractID: "@mozilla.org/toolkit/profile-migrator;1",
diff --git a/browser/locales/en-US/chrome/browser/migration/migration.dtd b/browser/locales/en-US/chrome/browser/migration/migration.dtd
-index 86e9d0b..8df7864 100644
+index 0b4b776..ce26fbd 100644
--- a/browser/locales/en-US/chrome/browser/migration/migration.dtd
+++ b/browser/locales/en-US/chrome/browser/migration/migration.dtd
@@ -13,8 +13,6 @@
@@ -118,11 +135,11 @@ index 86e9d0b..8df7864 100644 <!ENTITY importFromChrome.accesskey "C">
-<!ENTITY importFromFirefox.label "Firefox">
-<!ENTITY importFromFirefox.accesskey "X">
- <!ENTITY importFromHTMLFile.label "From an HTML File">
- <!ENTITY importFromHTMLFile.accesskey "F">
+
+ <!ENTITY noMigrationSources.label "No programs that contain bookmarks, history or password data could be found.">
diff --git a/browser/locales/en-US/chrome/browser/migration/migration.properties b/browser/locales/en-US/chrome/browser/migration/migration.properties
-index 495ed78..0272654 100644
+index f522a66..be26460 100644
--- a/browser/locales/en-US/chrome/browser/migration/migration.properties
+++ b/browser/locales/en-US/chrome/browser/migration/migration.properties
@@ -4,7 +4,6 @@ profileName_format=%S %S
@@ -132,8 +149,8 @@ index 495ed78..0272654 100644 -sourceNameFirefox=Mozilla Firefox
importedBookmarksFolder=From %S
- importedSearchURLsFolder=Keyword Searches (From %S)
-@@ -21,27 +20,27 @@ importedSafariBookmarks=From Safari
+
+@@ -18,29 +17,29 @@ importedSafariReadingList=Reading List (From Safari)
2_ie=Cookies
2_safari=Cookies
2_chrome=Cookies
@@ -143,8 +160,8 @@ index 495ed78..0272654 100644 4_ie=Browsing History
4_safari=Browsing History
4_chrome=Browsing History
--4_firefox=Browsing History
-+4_self=Browsing History
+-4_firefox_history_and_bookmarks=Browsing History and Bookmarks
++4_self=Browsing History and Bookmarks
8_ie=Saved Form History
8_safari=Saved Form History
@@ -166,11 +183,14 @@ index 495ed78..0272654 100644 64_ie=Other Data
64_safari=Other Data
+ 64_chrome=Other Data
+-64_firefox=Bookmarks Backups
++64_self=Bookmarks Backups
diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js
-index c86d80c..ff1ccfe 100644
+index 957d4d8..1af3629 100644
--- a/toolkit/content/aboutSupport.js
+++ b/toolkit/content/aboutSupport.js
-@@ -608,13 +608,13 @@ function populateResetBox() {
+@@ -616,13 +616,13 @@ function populateResetBox() {
.getService(Ci.nsIToolkitProfileService);
let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
@@ -188,46 +208,43 @@ index c86d80c..ff1ccfe 100644 return;
document.getElementById("reset-box").style.visibility = "visible";
} catch (e) {
-diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
-index 6f0d2d6..da7342b 100644
---- a/toolkit/content/jar.mn
-+++ b/toolkit/content/jar.mn
-@@ -38,7 +38,7 @@ toolkit.jar:
- + content/global/mozilla.xhtml (mozilla.xhtml)
- *+ content/global/nsDragAndDrop.js (nsDragAndDrop.js)
- content/global/resetProfile.css (resetProfile.css)
--* content/global/resetProfile.js (resetProfile.js)
-+ content/global/resetProfile.js (resetProfile.js)
- * content/global/resetProfile.xul (resetProfile.xul)
- * content/global/treeUtils.js (treeUtils.js)
- *+ content/global/viewZoomOverlay.js (viewZoomOverlay.js)
diff --git a/toolkit/content/resetProfile.js b/toolkit/content/resetProfile.js
-index 975a9ed..d8e46b1 100644
+index 84de6cd..3126da6 100644
--- a/toolkit/content/resetProfile.js
+++ b/toolkit/content/resetProfile.js
-@@ -6,12 +6,10 @@ Components.utils.import("resource://gre/modules/Services.jsm");
+@@ -6,6 +6,7 @@ Components.utils.import("resource://gre/modules/Services.jsm");
// based on onImportItemsPageShow from migration.js
function onResetProfileLoad() {
--#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
--#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
- const MAX_MIGRATED_TYPES = 16;
++<<<<<<< HEAD
+ #expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+ #expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
+
+@@ -16,16 +17,22 @@ function onResetProfileLoad() {
+ "8_" + MOZ_APP_NAME, // Form History
+ "2_" + MOZ_APP_NAME, // Cookies
+ ];
++=======
++ Components.utils.import("resource:///modules/MigrationUtils.jsm");
++ const MAX_MIGRATED_TYPES = 16;
++>>>>>>> Bug 756390 - Make the "Reset Firefox" feature more generic
var migratedItems = document.getElementById("migratedItems");
- var bundle = Services.strings.createBundle("chrome://" + MOZ_BUILD_APP +
-+ var bundle = Services.strings.createBundle("chrome://browser" +
- "/locale/migration/migration.properties");
+- "/locale/migration/migration.properties");
- // Loop over possible data to migrate to give the user a list of what will be preserved. This
-@@ -21,7 +19,7 @@ function onResetProfileLoad() {
- var itemID = Math.pow(2, i);
+ // Loop over possible data to migrate to give the user a list of what will be preserved.
+ for (var itemStringName of MIGRATED_TYPES) {
try {
var checkbox = document.createElement("label");
-- checkbox.setAttribute("value", bundle.GetStringFromName(itemID + "_" + MOZ_APP_NAME));
-+ checkbox.setAttribute("value", bundle.GetStringFromName(itemID + "_self"));
++<<<<<<< HEAD
+ checkbox.setAttribute("value", bundle.GetStringFromName(itemStringName));
++=======
++ checkbox.setAttribute("value", MigrationUtils.getLocalizedString(itemID + "_self"));
++>>>>>>> Bug 756390 - Make the "Reset Firefox" feature more generic
migratedItems.appendChild(checkbox);
} catch (x) {
- // Catch exceptions when the string for a data type doesn't exist because it's not migrated
+ // Catch exceptions when the string for a data type doesn't exist.
diff --git a/toolkit/profile/nsIProfileMigrator.idl b/toolkit/profile/nsIProfileMigrator.idl
index e941336..5b264af 100644
--- a/toolkit/profile/nsIProfileMigrator.idl
@@ -257,15 +274,15 @@ index e941336..5b264af 100644 %{C++
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 32eef5c..dbe1580 100644
+index d2db0e2..45a4b0d 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
-@@ -3561,7 +3561,7 @@ XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
- if (gDoProfileReset) {
- // Automatically migrate from the current application if we just
- // reset the profile.
-- aKey = MOZ_APP_NAME;
-+ aKey = "self";
- pm->Migrate(&dirProvider, aKey);
- // Set the new profile as the default after migration.
- rv = SetCurrentProfileAsDefault(profileSvc, profD);
+@@ -3642,7 +3642,7 @@ XREMain::XRE_mainRun()
+ if (gDoProfileReset) {
+ // Automatically migrate from the current application if we just
+ // reset the profile.
+- aKey = MOZ_APP_NAME;
++ aKey = "self";
+ pm->Migrate(&mDirProvider, aKey);
+ // Set the new profile as the default after migration.
+ rv = SetCurrentProfileAsDefault(mProfileSvc, mProfD);
diff --git a/libre/xulrunner-libre/PKGBUILD b/libre/xulrunner-libre/PKGBUILD index 001eb5f48..8c332db12 100644 --- a/libre/xulrunner-libre/PKGBUILD +++ b/libre/xulrunner-libre/PKGBUILD @@ -4,10 +4,10 @@ # With many changes from iceweasel-libre. -# We're getting this from Debian Sid +# We're getting this from Debian Experimental _debname=iceweasel -_debver=13.0 -_debrel=1 +_debver=14.0.1 +_debrel=2 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } @@ -23,7 +23,6 @@ makedepends=('zip' 'unzip' 'pkg-config' 'diffutils' 'wireless_tools' 'yasm' 'mes url="http://wiki.mozilla.org/XUL:Xul_Runner" source=("${_debrepo}/`debfile ${_debname}`_${_debver}.orig.tar.bz2" "${_debrepo}/`debfile ${_debname}`_${_debver}-${_debrel}.debian.tar.gz" - "${_debrepo}/`debfile ${_debname}`_${_debver}-${_debrel}.dsc" mozconfig mozilla-pkgconfig.patch Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch) @@ -31,15 +30,13 @@ options=('!emptydirs') conflicts=('xulrunner') provides=("xulrunner=${_debver}") replaces=('xulrunner-oss' 'xulrunner') -md5sums=('e440446bb92dc1c0311346c68024590b' - 'cb8bfb543002a5d78db7e8661f9f87ec' - 'a9848e41461776bc4bf8d2de824b1204' +md5sums=('8e4f3987d37c8e73b168948d0771b872' + '8689c150a4d3a0a688ad2db6044feac6' 'f2f4f4a573f549e8b494e33b3ad226bc' '27271ce647a83906ef7a24605e840d61' - '41ce105f0c1877fe22e0c0ec45e09565') + '88350bc611361a1ff635f5c960c6d6ee') -dpkg-source() { - # This will simulate dpkg-source -x ${_debname}_${_debver}-${_debrel}.dsc +build() { export QUILT_PATCHES=debian/patches export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index' export QUILT_DIFF_ARGS='--no-timestamps' @@ -47,31 +44,18 @@ dpkg-source() { mv debian "${_debname}-${_debver}" cd "${_debname}-${_debver}" -# Doesn't apply and seems unimportant + # Doesn't apply and seems unimportant rm -v debian/patches/l10n/Place-google-and-gmail-before-yandex.patch || true -# This patch doesn't works in some parts due that has patches for others locales languages, source code doesn't has it + # This patch doesn't works in some parts due that has patches for others locales languages, source code doesn't has it rm -v debian/patches/debian-hacks/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch || true quilt push -a find .pc -name .timestamp -delete # why isn't "--no-timestamps" doing this? - cd .. -} - -build() { -# Don't run this if we're using -e -if [ $NOEXTRACT -eq 0 ]; then - msg2 "Applying Debian patches..." - cd "${srcdir}" - dpkg-source -x ${_debname}_${_debver}-${_debrel}.dsc - - msg2 "Starting normal build..." - mv "${_debname}-${_debver}" "$srcdir/mozilla-release" - cd "$srcdir/mozilla-release" cp "$srcdir/mozconfig" .mozconfig -# Adding fixed Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch + # Adding fixed Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch patch -Np1 -i "$srcdir/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch" # Fails, claiming the page size to have changed. @@ -79,29 +63,28 @@ if [ $NOEXTRACT -eq 0 ]; then #fix libdir/sdkdir - fedora patch -Np1 -i "$srcdir/mozilla-pkgconfig.patch" -fi - export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/xulrunner-${_debver}" + export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/xulrunner-${_debver::4}" export PYTHON="/usr/bin/python2" make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS" } package() { - cd "$srcdir/mozilla-release" + cd "${_debname}-${_debver}" make -j1 -f client.mk DESTDIR="$pkgdir" install - rm -rf "$pkgdir"/usr/lib/xulrunner-$pkgver/{dictionaries,hyphenation} - ln -sf /usr/share/hunspell "$pkgdir/usr/lib/xulrunner-${_debver}/dictionaries" - ln -sf /usr/share/hyphen "$pkgdir/usr/lib/xulrunner-${_debver}/hyphenation" + rm -rf "$pkgdir"/usr/lib/xulrunner-${_debver::4}/{dictionaries,hyphenation} + ln -sf /usr/share/hunspell "$pkgdir/usr/lib/xulrunner-${_debver::4}/dictionaries" + ln -sf /usr/share/hyphen "$pkgdir/usr/lib/xulrunner-${_debver::4}/hyphenation" # add xulrunner library path to ld.so.conf install -d $pkgdir/etc/ld.so.conf.d - echo "/usr/lib/xulrunner-${_debver}" > $pkgdir/etc/ld.so.conf.d/xulrunner.conf + echo "/usr/lib/xulrunner-${_debver::4}" > $pkgdir/etc/ld.so.conf.d/xulrunner.conf - chmod +x "${pkgdir}/usr/lib/xulrunner-devel-${_debver}/sdk/bin/xpt.py" - sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver}/sdk/bin/xpt.py" - sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver}/sdk/bin/header.py" - sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver}/sdk/bin/typelib.py" - sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver}/sdk/bin/xpidl.py" + chmod +x "${pkgdir}/usr/lib/xulrunner-devel-${_debver::4}/sdk/bin/xpt.py" + sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver::4}/sdk/bin/xpt.py" + sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver::4}/sdk/bin/header.py" + sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver::4}/sdk/bin/typelib.py" + sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-${_debver::4}/sdk/bin/xpidl.py" } diff --git a/libre/xulrunner-libre/gcc47.patch b/libre/xulrunner-libre/gcc47.patch deleted file mode 100644 index 5cea6769d..000000000 --- a/libre/xulrunner-libre/gcc47.patch +++ /dev/null @@ -1,77 +0,0 @@ - -# HG changeset patch -# User Martin Stránský <stransky@redhat.com> -# Date 1328886461 -3600 -# Node ID 87a5ed480992788832387ba91a77c69fbe9fe349 -# Parent 67017dd3b7f6650e6bcd5b6f545e0309e8de7049 -Bug 725655 - gcc 4.7 build failures (missing headers). r=benjamin - -diff --git a/ipc/chromium/src/base/file_util_linux.cc b/ipc/chromium/src/base/file_util_linux.cc ---- a/ipc/chromium/src/base/file_util_linux.cc -+++ b/ipc/chromium/src/base/file_util_linux.cc -@@ -1,15 +1,18 @@ - // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. - - #include "base/file_util.h" - - #include <fcntl.h> -+#if defined(ANDROID) || defined(OS_POSIX) -+#include <unistd.h> -+#endif - - #include <string> - #include <vector> - - #include "base/eintr_wrapper.h" - #include "base/file_path.h" - #include "base/string_util.h" - -diff --git a/ipc/chromium/src/base/message_pump_libevent.cc b/ipc/chromium/src/base/message_pump_libevent.cc ---- a/ipc/chromium/src/base/message_pump_libevent.cc -+++ b/ipc/chromium/src/base/message_pump_libevent.cc -@@ -1,16 +1,19 @@ - // Copyright (c) 2008 The Chromium Authors. All rights reserved. - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. - - #include "base/message_pump_libevent.h" - - #include <errno.h> - #include <fcntl.h> -+#if defined(ANDROID) || defined(OS_POSIX) -+#include <unistd.h> -+#endif - - #include "eintr_wrapper.h" - #include "base/logging.h" - #include "base/scoped_nsautorelease_pool.h" - #include "base/scoped_ptr.h" - #include "base/time.h" - #include "third_party/libevent/event.h" - -diff --git a/ipc/chromium/src/base/time_posix.cc b/ipc/chromium/src/base/time_posix.cc ---- a/ipc/chromium/src/base/time_posix.cc -+++ b/ipc/chromium/src/base/time_posix.cc -@@ -8,16 +8,19 @@ - #include <mach/mach_time.h> - #endif - #include <sys/time.h> - #ifdef ANDROID - #include <time64.h> - #else - #include <time.h> - #endif -+#if defined(ANDROID) || defined(OS_POSIX) -+#include <unistd.h> -+#endif - - #include <limits> - - #include "base/basictypes.h" - #include "base/logging.h" - - namespace base { - - diff --git a/pcr/d0_blind_id-git/PKGBUILD b/pcr/d0_blind_id-git/PKGBUILD new file mode 100644 index 000000000..bfda13205 --- /dev/null +++ b/pcr/d0_blind_id-git/PKGBUILD @@ -0,0 +1,44 @@ +# Maintainer: MrBougo <bougospam at gmail dot com> +pkgname=d0_blind_id-git +pkgver=20120716 +pkgrel=1 +pkgdesc="Cryptographic library for identification with Schnorr ID scheme and Blind RSA Signatures" +arch=('i686' 'x86_64') +url="http://github.com/divVerent/d0_blind_id" +license=('BSD') +depends=('gmp') +makedepends=('git') +conflicts=() +options=('!libtool') + +_gitroot="git://git.xonotic.org/xonotic/d0_blind_id.git" +_gitname="d0_blind_id" + +build() { + cd "$srcdir" + msg "Connecting to GIT server...." + + if [ -d $_gitname ] ; then + cd $_gitname && git pull origin + msg "The local files are updated." + else + git clone $_gitroot $_gitname + fi + + msg "GIT checkout done or server timeout" + msg "Starting make..." + + rm -rf "$srcdir/$_gitname-build" + git clone "$srcdir/$_gitname" "$srcdir/$_gitname-build" + cd "$srcdir/$_gitname-build" + + sh autogen.sh + ./configure --prefix=/usr + make +} + +package() { + cd "$srcdir/$_gitname-build" + make DESTDIR="$pkgdir/" install + install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING +} diff --git a/pcr/kervala_libsquish-hg/PKGBUILD b/pcr/kervala_libsquish-hg/PKGBUILD deleted file mode 100644 index f75e1aba7..000000000 --- a/pcr/kervala_libsquish-hg/PKGBUILD +++ /dev/null @@ -1,46 +0,0 @@ -# Maintainer: Jorge Araya <jorgean@lavabit.com> - -pkgname=kervala_libsquish-hg -pkgver=220 -pkgrel=1 -pkgdesc="Free Software DXT compression library, kervala's version" -arch=('i686' 'x86_64') -url="http://code.google.com/p/libsquish/" -license=('MIT') -makedepends=('mercurial' 'gcc-libs') -provides=('libsquish') -conflicts=('libsquish') -source=() - -_hgroot="http://hg.kervala.net" -_hgrepo="packaging" - -build() { - cd "$srcdir" - msg "Connecting to Mercurial server...." - - if [[ -d "$_hgrepo" ]]; then - cd "$_hgrepo" - hg pull -u - msg "The local files are updated." - else - hg clone "${_hgroot}/${_hgrepo}" - fi - - msg "Mercurial checkout done or server timeout" - msg "Starting build..." - - rm -rf "$srcdir/$_hgrepo-build" - cp -r "$srcdir/$_hgrepo" "$srcdir/$_hgrepo-build" - cd "$srcdir/$_hgrepo-build/squish" - make -} - -package() { - cd "$srcdir/$_hgrepo-build/squish" - mkdir -p ${pkgdir}/usr/local/include - mkdir -p ${pkgdir}/usr/local/lib - make -e INSTALL_DIR="$pkgdir/usr/local" install -} - -# vim:set ts=2 sw=2 et: diff --git a/pcr/kervalasquish-hg/PKGBUILD b/pcr/kervalasquish-hg/PKGBUILD new file mode 100644 index 000000000..e5e489950 --- /dev/null +++ b/pcr/kervalasquish-hg/PKGBUILD @@ -0,0 +1,72 @@ +# Maintainer: Jorge Araya <jorgean@lavabit.com> + +pkgname=kervalasquish-hg +pkgver=220 +pkgrel=2 +pkgdesc="Free Software DXT compression library, kervala's version" +arch=('i686' 'x86_64') +url="http://code.google.com/p/libsquish/" +license=('MIT') +makedepends=('mercurial' 'gcc-libs' 'cmake') +provides=('libsquish') +conflicts=('libsquish' + 'kervala_libsquish-hg' + 'kervalasquish-hg') + +_hgroot="http://hg.kervala.net" +_hgrepo="packaging" +cmakerepo="cmake" + +build() { + cd "$srcdir" + msg "Connecting to Kervala's Mercurial server for libsquish..." + + if [[ -d "$_hgrepo" ]]; then + cd "$_hgrepo" + hg pull -u + msg "The local files are updated." + else + hg clone "${_hgroot}/${_hgrepo}" + fi + + msg "Connecting to Kervala's Mercurial server for cmake modules..." + + if [[ -d $srcdir/$cmakerepo ]]; then + cd $srcdir/$cmakerepo + hg pull -u + msg "The local files are updated." + else + cd $srcdir + hg clone ${_hgroot}/${cmakerepo} + fi + + msg "Mercurial checkout done or server timeout" + msg "Starting build..." + + if [[ -d $_hgrepo-build ]]; then + rm -rf "$srcdir/$_hgrepo-build" + fi + + cp -r "$srcdir/$_hgrepo/squish" "$srcdir/$_hgrepo-build" + + if [[ ! -d $_hgrepo-build/CMakeModules ]]; then + mkdir "$srcdir/$_hgrepo-build/CMakeModules" + cp $srcdir/cmake/modules/common.cmake $srcdir/$_hgrepo-build/CMakeModules/ + fi + + if [[ -d $srcdir/$_hgrepo-build/build ]]; then + rm -rf $srcdir/$_hgrepo-build/build + fi + + mkdir "$srcdir/$_hgrepo-build/build" + cd "$srcdir/$_hgrepo-build/build" + cmake -DCMAKE_INSTALL_PREFIX=/usr .. + make +} + +package() { + cd "$srcdir/$_hgrepo-build/build" + make DESTDIR="${pkgdir}" install +} + +# vim:set ts=2 sw=2 et: diff --git a/pcr/minetest/PKGBUILD b/pcr/minetest/PKGBUILD new file mode 100644 index 000000000..8d11e3747 --- /dev/null +++ b/pcr/minetest/PKGBUILD @@ -0,0 +1,53 @@ +# Maintainer: Jorge Araya Navarro <jorgean@lavabit.com> +pkgname=minetest-git +pkgver=20120409 +pkgrel=1 +pkgdesc="An Infiniminer/Minecraft inspired game, git version." +arch=('i686' 'x86_64') +url="http://celeron.55.lt/~celeron55/minetest/" +license=('GPL') +makedepends=('git' 'cmake' 'irrlicht' 'mesa' 'libjpeg' 'bzip2' 'libpng' 'zlib' 'libvorbis') +depends=('libjpeg' 'bzip2' 'sqlite3' 'libgl' 'libxxf86vm' 'openal') +conflicts=('minetest' 'minetest-hg') + +_srcroot="https://github.com/celeron55/minetest.git" +_srcname="minetest" + +_gameroot="https://github.com/celeron55/minetest_game.git" +_gamename="minetest_game" + +build() { + cd "$srcdir" + + msg "Pulling sources..." + + if [ -d $_srcname ] ; then + cd $_srcname && git pull origin + msg "The local files are updated." + else + git clone $_srcroot $_gitname + fi + + msg "Pulling game..." + + cd "$srcdir/$_srcname/games/" + + if [ -d $_gamename ] ; then + cd $_gamename && git pull origin + msg "The local files are updated." + else + git clone $_gameroot $_gamename + fi + + + msg "GIT checkout done or server timeout" + msg "Starting make..." + + cd "$srcdir/$_srcname" + cmake . -DCMAKE_INSTALL_PREFIX=/usr + #install -d -m 755 ${pkgdir}/usr/share/applications + #install -d -m 755 ${pkgdir}/usr/share/icons/scalable/apps + #install -m 644 ${srcdir}/minetest.svg ${pkgdir}/usr/share/icons/scalable/apps + #install -m 644 ${srcdir}/minetest-git.desktop ${pkgdir}/usr/share/applications + make DESTDIR=${pkgdir} install +} diff --git a/pcr/ryzom-client/PKGBUILD b/pcr/ryzom-client/PKGBUILD new file mode 100644 index 000000000..74d999d29 --- /dev/null +++ b/pcr/ryzom-client/PKGBUILD @@ -0,0 +1,42 @@ +# Maintainer: Jorge Araya Navarro <jorgean@lavabit.com> +pkgname=('ryzom-client') +pkgver=0.8.0 +pkgrel=6 +arch=('x86_64' 'i686') +url="http://www.ryzom.com" +license=('AGPL3') +pkgdesc="An awesome free software 3D MMORPG game" +depends=('ryzom-data' 'ryzom-nel' 'luabind') +conflicts=('ryzom-client') +groups=('ryzom') + +makedepends=('kervalasquish-hg' 'cmake' 'bison' + 'lua' 'luabind' 'curl' 'libpng' 'libwww' + 'boost' 'ryzom-nel') + +auser="shackra" +achangeset="56d1642e24ac" + +source=("https://bitbucket.org/$auser/ryzom/get/$achangeset.tar.gz") + +build() { + cd "$srcdir/$auser-ryzom-$achangeset/code" + if [[ -d "ryzom-client" ]]; then + rm -rf "ryzom-client" + mkdir "ryzom-client" + else + mkdir "ryzom-client" + fi + + cd "ryzom-client" + cmake .. -Wno-dev -DFINAL_VERSION=ON -DWITH_RYZOM_CLIENT=ON -DWITH_LUA51=ON -DWITH_RYZOM_SERVER=OFF -DWITH_RYZOM_TOOLS=OFF -DWITH_LIBWWW_STATIC=ON -DWITH_NEL_TESTS=OFF -DWITH_NEL=OFF -DCMAKE_INSTALL_PREFIX=/usr -DRYZOM_ETC_PREFIX=/etc/ryzom -DRYZOM_SHARE_PREFIX=/usr/share/ryzom -DRYZOM_BIN_PREFIX=/usr/bin -DRYZOM_GAMES_PREFIX=/usr/bin -DWITH_SYMBOLS=ON + + make -j3 +} + +package() { + cd "$srcdir/$auser-ryzom-$achangeset/code/$pkgname" + make DESTDIR="$pkgdir" install +} + +sha256sums=('0abcf7daa01dab27a3b9a9276e521369693963be3a25624b3195023495212bc2')
\ No newline at end of file diff --git a/pcr/ryzom-data/PKGBUILD b/pcr/ryzom-data/PKGBUILD new file mode 100644 index 000000000..dfb8a116c --- /dev/null +++ b/pcr/ryzom-data/PKGBUILD @@ -0,0 +1,45 @@ +# Mantainer: Jorge Araya Navarro <jorgean@lavabit.com> +pkgname='ryzom-data' +group='ryzom' +pkgver=0.8.0 +pkgrel=1 +arch=('any') +url="http://media.ryzom.com/" +license=('CCPL:by-sa') +makedepends=('rsync' 'p7zip-libre') +conflicts=('ryzom-data') +pkgdesc="An awesome free software 3D MMORPG game. Game data." +source=("http://sourceforge.net/projects/ryzom/files/ryzom_client.7z/download" "updateryzomdata") +noextract=("download") +sha256sums=('fa9e44e1014f4ae8639f1ec092391a41f69fc343ce48dd39b55ffae06ec3291f' + 'b42f74fd21cdbf6734214e5576dbbe7e4cf171bf5d712011fbea6529bd0123fd') + +package() { + cd "$srcdir/" + + if [[ -d "data" ]]; then + rm -rf data + fi + + mv "download" "ryzom_client.7z" + msg "Extracting game data..." + 7z x ryzom_client.7z ryzom/data/ >& /dev/null + cd ryzom/data/ + + msg "Updating the official Ryzom game data, this can take a while..." + rsync -rtzvu --progress --stats --recursive --timeout=30 www.ryzom.com::ryzom/data/ ./ >& /dev/null + msg 'Update completed...' + + cd "$srcdir/ryzom/data" + + # creating directories + install -d -m 755 "${pkgdir}/usr/share/ryzom/data/fonts/" + install -d -m 755 "${pkgdir}/etc/cron.d/" + + # installing files + install -m 644 fonts/* "${pkgdir}/usr/share/ryzom/data/fonts/" + rm -rf fonts + + install -m 644 * "${pkgdir}/usr/share/ryzom/data/" + install -m 644 ${srcdir}/updateryzomdata "${pkgdir}/etc/cron.d/" +} diff --git a/pcr/ryzom-nel/PKGBUILD b/pcr/ryzom-nel/PKGBUILD new file mode 100644 index 000000000..f7dd7c580 --- /dev/null +++ b/pcr/ryzom-nel/PKGBUILD @@ -0,0 +1,53 @@ +# Maintainer: Jorge Araya Navarro <jorgean@lavabit.com> +pkgname='ryzom-nel' +pkgver=0.8.0 +pkgrel=10 +arch=('x86_64' 'i686') +conflicts=('ryzom-nel') +groups=('ryzom') + +pkgdesc="An awesome free software 3D MMORPG game, NeL engine" +url="http://www.ryzom.com" +license=('AGPL3') +depends=('freetype2' + 'libx11' + 'mesa' + 'libxxf86vm' + 'openal' + 'freealut' + 'libogg' + 'libvorbis' + 'libxml2' + 'libjpeg' + 'rrdtool' ) +makedepends=('cmake' 'bison' 'kervalasquish-hg') + +auser="shackra" +achangeset="56d1642e24ac" + +source=("https://bitbucket.org/$auser/ryzom/get/$achangeset.tar.gz") + +build() { + cd "$srcdir/$auser-ryzom-$achangeset/code" + + if [[ -d $pkgname ]]; then + rm -rf $pkgname + mkdir $pkgname + else + mkdir $pkgname + fi + + cd $pkgname + + #CMAKE_USE_RELATIVE_PATHS=true + cmake .. -Wno-dev -DWITH_RYZOM=OFF -DWITH_NEL_TESTS=OFF -DWITH_NEL=ON -DCMAKE_INSTALL_PREFIX=/usr -DNL_ETC_PREFIX=/etc/nel -DNL_DRIVER_PREFIX=/usr/lib/nel -DNL_SHARE_PREFIX=/usr/share/nel -DNL_BIN_PREFIX=/usr/bin -DNL_SBIN_PREFIX=/usr/sbin -DNL_LIB_PREFIX=/usr/lib/nel -DNL_DRIVER_PREFIX=/usr/lib/nel -DWITH_SYMBOLS=ON -DWITH_DRIVER_OPENGL=ON -DWITH_DRIVER_OPENAL=ON + + make -j3 +} + +package() { + cd "$srcdir/$auser-ryzom-$achangeset/code/$pkgname" + make DESTDIR="$pkgdir" install +} + +sha256sums=('0abcf7daa01dab27a3b9a9276e521369693963be3a25624b3195023495212bc2') diff --git a/pcr/xonotic-git/PKGBUILD b/pcr/xonotic-git/PKGBUILD new file mode 100644 index 000000000..2a032cd4a --- /dev/null +++ b/pcr/xonotic-git/PKGBUILD @@ -0,0 +1,197 @@ +# Maintainer: MrBougo <bougospam at gmail dot com> +# Contributor: wido <widomaker2k7@gmail.com> +# Contributor: Alexander Suhoverhov <cy at ngs dot ru> + +pkgname=xonotic-git +pkgver=20120718 +pkgrel=1 +pkgdesc="A free, fast-paced crossplatform first-person shooter" +arch=('i686' 'x86_64') +url="http://xonotic.org" +license=('GPL') +depends=( + 'd0_blind_id-git' + 'libxpm' + 'libjpeg>=8' + 'libpng>=1.4.0' + 'libmodplug' + 'libvorbis' + 'libxxf86dga' + 'libxxf86vm' + 'alsa-lib' + 'sdl' + 'curl' +) +makedepends=('git' 'p7zip' 'zip' 'unzip' 'vorbis-tools' 'sdl' 'mesa' 'imagemagick') +optdepends=( + 'libtheora: recording in ogv' + #'d0_blind_id-git: crypto libraries for player authentification' +) +provides=('xonotic' 'xonotic-data') +conflicts=('xonotic' 'xonotic-data') + +_gitroot="git://git.xonotic.org/xonotic/xonotic.git" +_gitname="xonotic" +_releasename="git-AUR" +_compression=5 + +# the jpeg and ogg variables can be modified, the function may also be skipped for raw data +# the values here are also used in the official -low builds +_compress() { + find $1 -type f -print0 | + git_src_repo=$2 \ + CACHEDIR="$srcdir"/datacache \ + do_jpeg=true \ + jpeg_qual_rgb=80 \ + jpeg_qual_a=97 \ + do_dds=false \ + do_ogg=true \ + ogg_qual=1 \ + del_src=true \ + xargs -0 "$srcdir"/$_gitname/misc/tools/cached-converter.sh +} + +_git_extract() { + _from=$1 + _to=$2 + shift 2 + { cd "$_from"; git archive --format=tar HEAD -- "$@"; } \ + | { + cd "$_to" + tar xvf - + } +} + +# 7z compresses nicely but can't deal with flags and symlinks +_mkzip() { + _archive=$1 + shift + _ziplist=`mktemp` + find "$@" -xtype f \( -executable -or -type l \) -print > "$_ziplist" + 7za a -tzip -mx=$_compression -x@"$_ziplist" "$_archive" "$@" || true + zip -$_compression -y -@<"$_ziplist" "$_archive" || true + rm -f "$_ziplist" +} + +#credit goes to omgwizard for the shallow clone idea +_update() { + cd "$srcdir"/$_gitname + sed 's/git clone/git clone --depth 1/g' --in-place=".PKGBUILD_BU" ./all + ./all update + mv -f ./all.PKGBUILD_BU ./all + cd "$OLDPWD" +} + +build() { + cd "$srcdir" + msg "Connecting to GIT server...." + + if [ -d $_gitname ] ; then + #future updates might introduce new subrepos, use shallow cloning anyway + cd $_gitname && _update + msg "The local files are updated." + else + git clone --depth 1 $_gitroot $_gitname + cd $_gitname + touch d0_blind_id.no + touch netradiant.no + _update + fi + + msg "GIT checkout done or server timeout" + + # BUILD + + msg "Copying sources..." + + rm -rf "$srcdir"/src + mkdir -p "$srcdir"/src/darkplaces "$srcdir"/src/fteqcc + _git_extract "$srcdir"/$_gitname/fteqcc "$srcdir"/src/fteqcc + _git_extract "$srcdir"/$_gitname/darkplaces "$srcdir"/src/darkplaces + _git_extract "$srcdir"/$_gitname/data/xonotic-data.pk3dir "$srcdir"/src \ + qcsrc Makefile check-cvars.sh + + msg "Fetching map binaries..." + cd "$srcdir"/$_gitname + ./all update-maps + + msg "Compiling the engine..." + cd "$srcdir"/src/darkplaces + CC="${CC:-gcc} -g -DSUPPORTIPV6" make release + + msg "Compiling fteqcc..." + cd "$srcdir"/src/fteqcc + make all + + msg "Compiling the game code" + cd "$srcdir"/src/ + make FTEQCC="../../fteqcc/fteqcc.bin" # relative to the directories containing progs.src + + msg "Building data pk3's..." + rm -rf "$srcdir"/temp # just in case it was interrupted previously + mkdir "$srcdir"/temp + cd "$srcdir"/temp + for _subrepo in font-nimbussansl font-xolonium xonotic-data xonotic-music xonotic-maps; do + mkdir $_subrepo + _git_extract "$srcdir"/$_gitname/data/$_subrepo.pk3dir "$srcdir"/temp/$_subrepo + done + + rm -rf "$srcdir"/temp/xonotic-data/qcsrc + mv "$srcdir"/src/progs.dat "$srcdir"/src/csprogs.dat "$srcdir"/src/menu.dat "$srcdir"/temp/xonotic-data + + cd "$srcdir"/temp/xonotic-maps + #2x40 question marks. That's as many as eight tens. And that's terrible. + for X in "$srcdir"/$_gitname/data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do + if [ -f "$X" ]; then + unzip "$X" + rm -f maps/*.log maps/*.irc maps/*.lin + fi + done + + msg "Compressing data..." + cd "$srcdir"/temp/ + # don't compress the font files + for _subrepo in xonotic-data xonotic-music xonotic-maps; do + _compress $_subrepo "$srcdir"/$_gitname/data/$_subrepo.pk3dir + done + + msg "Packing data..." + for _subrepo in font-nimbussansl font-xolonium xonotic-data xonotic-music xonotic-maps; do + cd "$srcdir"/temp/$_subrepo + _mkzip "$srcdir"/$_subrepo.pk3 * # this wildcard excludes dot files + done + + msg "Removing temporary files..." + rm -rf "$srcdir"/temp +} + +package() { + msg "Installing..." + mkdir -p "$pkgdir"/opt/$pkgname/ + _git_extract "$srcdir"/$_gitname/ "$pkgdir"/opt/$pkgname \ + Docs \ + server \ + xonotic-linux-glx.sh xonotic-linux-sdl.sh \ + key_0.d0pk + chmod 755 "$pkgdir"/opt/$pkgname/xonotic-linux-glx.sh \ + "$pkgdir"/opt/$pkgname/xonotic-linux-sdl.sh + + # Binaries -- those names are needed by the launcher script + case "$CARCH" in + x86_64) _arch="linux64" ;; + *) _arch="linux32" ;; + esac + install -m755 "$srcdir"/src/darkplaces/darkplaces-glx "$pkgdir"/opt/$pkgname/xonotic-$_arch-glx + install -m755 "$srcdir"/src/darkplaces/darkplaces-glx "$pkgdir"/opt/$pkgname/xonotic-$_arch-sdl + install -m755 "$srcdir"/src/darkplaces/darkplaces-dedicated "$pkgdir"/opt/$pkgname/xonotic-$_arch-dedicated + + mkdir -p "$pkgdir"/opt/$pkgname/data/ + mv -f "$srcdir"/*.pk3 "$pkgdir"/opt/$pkgname/data || true # those files are too big to be copied + + # Launch scripts + mkdir -p "$pkgdir"/usr/bin + mv -f "$pkgdir"/opt/$pkgname/server/server_linux.sh "$pkgdir"/opt/$pkgname/ + ln -sf /opt/$pkgname/xonotic-linux-glx.sh "$pkgdir"/usr/bin/xonotic-glx + ln -sf /opt/$pkgname/xonotic-linux-sdl.sh "$pkgdir"/usr/bin/xonotic-sdl + ln -sf /opt/$pkgname/server_linux.sh "$pkgdir"/usr/bin/xonotic-dedicated +} diff --git a/~fauno/pandoc/PKGBUILD b/~fauno/pandoc/PKGBUILD index b577f0cf1..410a3dd2b 100644 --- a/~fauno/pandoc/PKGBUILD +++ b/~fauno/pandoc/PKGBUILD @@ -4,7 +4,7 @@ # Run `makepkg -srp SRCBUILD` if you want to update the source tarball pkgname=pandoc -pkgver=1.9.4 +pkgver=1.9.4.2 pkgrel=1 pkgdesc='Conversion between markup formats (no Haskell libs)' url='http://johnmacfarlane.net/pandoc/' @@ -57,6 +57,6 @@ package() { find ${pkgdir}/usr/share -type f -exec chmod 644 {} \; find ${pkgdir}/usr/share -type d -exec chmod 755 {} \; } -md5sums=('dbf83bc5fae25877f8f1444c67fcc706' - '179a9b8a716e1de8e6afba3d43c3ebef' - 'ec809a0c1f787dc53c896c391d32ef6e') +md5sums=('3a9191e729a4547370f756ba831cad77' + 'a8da851ee560ce54c7c5044dfb5042f0' + '8dab4575128cf33941a577bfb500c417') diff --git a/~fauno/pandoc/SRCBUILD b/~fauno/pandoc/SRCBUILD index c8b13d906..68939a103 100644 --- a/~fauno/pandoc/SRCBUILD +++ b/~fauno/pandoc/SRCBUILD @@ -2,7 +2,7 @@ # Based on haskell-pandoc pkgname=pandoc -pkgver=1.9.4 +pkgver=1.9.4.2 pkgrel=1 pkgdesc='Conversion between markup formats (no Haskell libs)' url='http://johnmacfarlane.net/pandoc/' diff --git a/~mtjm/cups-usblp/PKGBUILD b/~mtjm/cups-usblp/PKGBUILD index 5f1c62325..62b12072a 100644 --- a/~mtjm/cups-usblp/PKGBUILD +++ b/~mtjm/cups-usblp/PKGBUILD @@ -1,31 +1,25 @@ -# $Id: PKGBUILD 149429 2012-02-07 16:59:12Z andyrtr $ +# $Id: PKGBUILD 164175 2012-07-26 17:37:45Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> _pkgname="cups" pkgname="cups-usblp" -pkgver=1.5.2 +pkgver=1.5.4 pkgrel=1 pkgdesc="The CUPS Printing System - daemon package with usblp backend" arch=('i686' 'x86_64' 'mips64el') license=('GPL') url="http://www.cups.org/" -depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'poppler>=0.12.3' 'dbus-core' 'hicolor-icon-theme') -makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'openslp' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'poppler>=0.12.3' - 'xinetd' 'gzip' 'autoconf' 'php' 'dbus-core' 'avahi' 'hicolor-icon-theme') +depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'libusb' 'dbus-core' 'libsystemd' 'hicolor-icon-theme') +makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'openslp' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'cups-filters' 'bc' + 'xinetd' 'gzip' 'autoconf' 'php' 'libusb' 'dbus-core' 'avahi' 'hicolor-icon-theme' 'systemd') optdepends=('php: for included phpcups.so module' - 'ghostscript: for non-PostScript printers to print with CUPS to convert PostScript to raster images' - 'foomatic-db: drivers use Ghostscript to convert PostScript to a printable form directly' - 'foomatic-db-engine: drivers use Ghostscript to convert PostScript to a printable form directly' 'xdg-utils: xdg .desktop file support') provides=("cups=${pkgver}") conflicts=("cups" "cups-libre") backup=(etc/cups/cupsd.conf - etc/cups/mime.convs - etc/cups/mime.types etc/cups/snmp.conf etc/cups/printers.conf etc/cups/classes.conf - etc/cups/client.conf etc/cups/subscriptions.conf etc/dbus-1/system.d/cups.conf etc/logrotate.d/cups @@ -40,22 +34,24 @@ source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2 cups-avahi-5-services.patch cups-no-export-ssllibs.patch cups-no-gcrypt.patch + cups-no-gzip-man.patch + cups-systemd-socket.patch cups cups.logrotate cups.pam) #options=('!emptydirs') -md5sums=('9471d2a7c920cfbb17133c32d2e6866f' - '8496c48a7ab5918ce546cfb72472def3' - '7df4c2e0a69bf072d7b7e96523df9dce' - '9a207c5d5189b1c2fc55907b7ed09372' - '5da4ba0837f9a685f146797fcfcd455e' - 'fe782a8fd4351741120d485d476abe8a' +md5sums=('de3006e5cf1ee78a9c6145ce62c4e982' + '12c8af5bcd3b8f84240280b3dfaf9e89' + 'cdc1322c8014297ae349e2db78a03c5a' + '1a5112f63958643f2888abc9418dbcac' + 'c37d1bf1bb76acc3fe93362c80d91b7c' + '5d302860559960042f3b47a91b97c5fe' '9b8467a1e51d360096b70e2c3c081e6c' '3733c23e77eb503bd94cc368e02830dc' + 'c9159ba1233902ba6ddbbe6885a46b72' + '4505b8b2c57a7c28ea79e08388bbbbb9' '9657daa21760bb0b5fa3d8b51d5e01a1' 'f861b18f4446c43918c8643dcbbd7f6d' '96f82c38f3f540b53f3e5144900acf17') -# move client.conf man page for next update to the client pkg. - build() { cd ${srcdir}/${_pkgname}-${pkgver} # http://www.cups.org/str.php?L3066 @@ -66,10 +62,15 @@ build() { patch -Np1 -i ${srcdir}/cups-avahi-4-poll.patch patch -Np1 -i ${srcdir}/cups-avahi-5-services.patch + # add systemd socket support - Fedora patch, also used in Gentoo + patch -Np1 -i ${srcdir}/cups-systemd-socket.patch + # Do not export SSL libs in cups-config patch -Np1 -i "${srcdir}/cups-no-export-ssllibs.patch" patch -Np1 -i "${srcdir}/cups-no-gcrypt.patch" + # don't zip man pages in make install, let makepkg do that / Fedora + patch -Np1 -i ${srcdir}/cups-no-gzip-man.patch # Rebuild configure script for --enable-avahi. aclocal -I config-scripts @@ -77,6 +78,7 @@ build() { ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --libdir=/usr/lib \ + --with-systemdsystemunitdir=/usr/lib/systemd/system \ --with-logdir=/var/log/cups \ --with-docdir=/usr/share/cups/doc \ --with-cups-user=daemon \ @@ -121,27 +123,32 @@ package() { chmod 755 ${pkgdir}/var/spool chmod 755 ${pkgdir}/etc - # serial backend needs to run as root (http://bugs.archlinux.org/task/20396) - chmod 700 ${pkgdir}/usr/lib/cups/backend/serial - # install ssl directory where to store the certs, solves some samba issues install -dm700 -g lp ${pkgdir}/etc/cups/ssl # remove directory from package, we create it in cups rc.d file rm -rf ${pkgdir}/var/run -# install -dm511 -g lp ${pkgdir}/var/run/cups/certs # install some more configuration files that will get filled by cupsd touch ${pkgdir}/etc/cups/printers.conf touch ${pkgdir}/etc/cups/classes.conf - touch ${pkgdir}/etc/cups/client.conf - echo "# see 'man client.conf'" >> ${pkgdir}/etc/cups/client.conf - echo "ServerName /var/run/cups/cups.sock # alternative: ServerName hostname-or-ip-address[:port] of a remote server" >> ${pkgdir}/etc/cups/client.conf touch ${pkgdir}/etc/cups/subscriptions.conf - chgrp lp ${pkgdir}/etc/cups/{printers.conf,classes.conf,client.conf,subscriptions.conf} + chgrp lp ${pkgdir}/etc/cups/{printers.conf,classes.conf,subscriptions.conf} # fix .desktop file sed -i 's|^Exec=htmlview http://localhost:631/|Exec=xdg-open http://localhost:631/|g' ${pkgdir}/usr/share/applications/cups.desktop # compress some driver files, adopted from Fedora find ${pkgdir}/usr/share/cups/model -name "*.ppd" | xargs gzip -n9f + + # remove client.conf man page + rm -f ${pkgdir}/usr/share/man/man5/client.conf.5 + + # remove files now part of cups-filters - check cups-filters INSTALL for packagers instructions + rm -v ${pkgdir}/usr/lib/cups/backend/{parallel,serial} + rm -v ${pkgdir}/usr/lib/cups/filter/{bannertops,commandtoescpx,commandtopclx,imagetops,imagetoraster,pdftops,rastertoescpx,rastertopclx,texttops} + rm -v ${pkgdir}/usr/share/cups/banners/* + rm -v ${pkgdir}/usr/share/cups/data/{testprint,psglyphs} + rm -v ${pkgdir}/usr/share/cups/fonts/* + # comment out all conversion rules which use any of the removed filters + perl -p -i -e 's:^(.*\s+(pdftops|texttops|imagetops|bannertops|imagetoraster)\s*)$:#\1:' ${pkgdir}/usr/share/cups/mime/mime.convs } diff --git a/~mtjm/cups-usblp/cups-avahi-1-config.patch b/~mtjm/cups-usblp/cups-avahi-1-config.patch index 663eb39df..304cd2607 100644 --- a/~mtjm/cups-usblp/cups-avahi-1-config.patch +++ b/~mtjm/cups-usblp/cups-avahi-1-config.patch @@ -1,6 +1,6 @@ -diff -up cups-1.5.0/config.h.in.avahi-1-config cups-1.5.0/config.h.in ---- cups-1.5.0/config.h.in.avahi-1-config 2011-06-16 21:12:16.000000000 +0100 -+++ cups-1.5.0/config.h.in 2011-08-05 15:04:09.535759988 +0100 +diff -up cups-1.5.2/config.h.in.avahi-1-config cups-1.5.2/config.h.in +--- cups-1.5.2/config.h.in.avahi-1-config 2011-06-16 21:12:16.000000000 +0100 ++++ cups-1.5.2/config.h.in 2012-03-14 15:04:51.365347165 +0000 @@ -390,6 +390,13 @@ @@ -15,9 +15,9 @@ diff -up cups-1.5.0/config.h.in.avahi-1-config cups-1.5.0/config.h.in * Do we have <sys/ioctl.h>? */ -diff -up cups-1.5.0/config-scripts/cups-dnssd.m4.avahi-1-config cups-1.5.0/config-scripts/cups-dnssd.m4 ---- cups-1.5.0/config-scripts/cups-dnssd.m4.avahi-1-config 2011-05-12 06:21:56.000000000 +0100 -+++ cups-1.5.0/config-scripts/cups-dnssd.m4 2011-08-05 15:04:09.525760307 +0100 +diff -up cups-1.5.2/config-scripts/cups-dnssd.m4.avahi-1-config cups-1.5.2/config-scripts/cups-dnssd.m4 +--- cups-1.5.2/config-scripts/cups-dnssd.m4.avahi-1-config 2011-05-12 06:21:56.000000000 +0100 ++++ cups-1.5.2/config-scripts/cups-dnssd.m4 2012-03-14 15:04:51.365347165 +0000 @@ -23,6 +23,21 @@ AC_ARG_WITH(dnssd-includes, [ --with-dn DNSSDLIBS="" DNSSD_BACKEND="" @@ -39,4 +39,4 @@ diff -up cups-1.5.0/config-scripts/cups-dnssd.m4.avahi-1-config cups-1.5.0/confi + if test x$enable_dnssd != xno; then AC_CHECK_HEADER(dns_sd.h, [ - case "$uname" in + case "$uname" in
\ No newline at end of file diff --git a/~mtjm/cups-usblp/cups-avahi-2-backend.patch b/~mtjm/cups-usblp/cups-avahi-2-backend.patch index 4c0d4989b..00e12a0a3 100644 --- a/~mtjm/cups-usblp/cups-avahi-2-backend.patch +++ b/~mtjm/cups-usblp/cups-avahi-2-backend.patch @@ -1,6 +1,6 @@ -diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c ---- cups-1.5.2/backend/dnssd.c.avahi-2-backend 2012-02-06 11:09:08.318644741 +0100 -+++ cups-1.5.2/backend/dnssd.c 2012-02-06 11:09:08.326644641 +0100 +diff -up cups-1.5.3/backend/dnssd.c.avahi-2-backend cups-1.5.3/backend/dnssd.c +--- cups-1.5.3/backend/dnssd.c.avahi-2-backend 2012-05-15 16:53:18.164774446 +0200 ++++ cups-1.5.3/backend/dnssd.c 2012-05-15 17:09:07.684155704 +0200 @@ -15,14 +15,21 @@ * * Contents: @@ -85,23 +85,24 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c static void browse_callback(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, -@@ -93,12 +131,6 @@ static void browse_local_callback(DNSSe - const char *regtype, +@@ -95,13 +133,6 @@ static void browse_local_callback(DNSSe const char *replyDomain, - void *context); + void *context) + __attribute__((nonnull(1,5,6,7,8))); -static int compare_devices(cups_device_t *a, cups_device_t *b); -static void exec_backend(char **argv); -static cups_device_t *get_device(cups_array_t *devices, - const char *serviceName, - const char *regtype, -- const char *replyDomain); +- const char *replyDomain) +- __attribute__((nonnull(1,2,3,4))); static void query_callback(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, -@@ -107,9 +139,118 @@ static void query_callback(DNSServiceRe - uint16_t rrclass, uint16_t rdlen, +@@ -111,10 +142,119 @@ static void query_callback(DNSServiceRe const void *rdata, uint32_t ttl, - void *context); + void *context) + __attribute__((nonnull(1,5,9,11))); +#endif /* HAVE_DNSSD */ +#ifdef HAVE_AVAHI +static void avahi_client_callback (AvahiClient *client, @@ -117,7 +118,6 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c + AvahiLookupResultFlags flags, + void *context); +#endif /* HAVE_AVAHI */ -+ +static cups_device_t * find_device (cups_array_t *devices, + cups_txt_records_t *txt, + cups_device_t *dkey); @@ -126,9 +126,11 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c +static cups_device_t *get_device(cups_array_t *devices, + const char *serviceName, + const char *regtype, -+ const char *replyDomain); ++ const char *replyDomain) ++ __attribute__((nonnull(1,2,3,4))); static void sigterm_handler(int sig); - static void unquote(char *dst, const char *src, size_t dstsize); + static void unquote(char *dst, const char *src, size_t dstsize) + __attribute__((nonnull(1,2))); +#ifdef HAVE_AVAHI +static AvahiSimplePoll *simple_poll = NULL; @@ -174,7 +176,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c + */ + + datalen = *data++; -+ if (!datalen || (data + datalen) >= txt->dataend) ++ if (!datalen || (data + datalen) > txt->dataend) + return NULL; + txt->datanext = data + datalen; + @@ -217,7 +219,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c /* * 'main()' - Browse for printers. -@@ -120,6 +261,13 @@ main(int argc, /* I - Number of comm +@@ -125,6 +265,13 @@ main(int argc, /* I - Number of comm char *argv[]) /* I - Command-line arguments */ { const char *name; /* Backend name */ @@ -231,7 +233,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c DNSServiceRef main_ref, /* Main service reference */ fax_ipp_ref, /* IPP fax service reference */ ipp_ref, /* IPP service reference */ -@@ -133,12 +281,11 @@ main(int argc, /* I - Number of comm +@@ -138,12 +285,11 @@ main(int argc, /* I - Number of comm pdl_datastream_ref, /* AppSocket service reference */ printer_ref, /* LPD service reference */ riousbprint_ref; /* Remote IO service reference */ @@ -249,7 +251,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* Actions for POSIX signals */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ -@@ -198,6 +345,49 @@ main(int argc, /* I - Number of comm +@@ -203,6 +349,49 @@ main(int argc, /* I - Number of comm * Browse for different kinds of printers... */ @@ -299,7 +301,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c if (DNSServiceCreateConnection(&main_ref) != kDNSServiceErr_NoError) { perror("ERROR: Unable to create service connection"); -@@ -258,6 +448,7 @@ main(int argc, /* I - Number of comm +@@ -263,6 +452,7 @@ main(int argc, /* I - Number of comm riousbprint_ref = main_ref; DNSServiceBrowse(&riousbprint_ref, kDNSServiceFlagsShareConnection, 0, "_riousbprint._tcp", NULL, browse_callback, devices); @@ -307,7 +309,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c /* * Loop until we are killed... -@@ -265,6 +456,9 @@ main(int argc, /* I - Number of comm +@@ -270,6 +460,9 @@ main(int argc, /* I - Number of comm while (!job_canceled) { @@ -317,7 +319,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c FD_ZERO(&input); FD_SET(fd, &input); -@@ -284,11 +478,35 @@ main(int argc, /* I - Number of comm +@@ -289,11 +482,35 @@ main(int argc, /* I - Number of comm } else { @@ -353,7 +355,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c cups_device_t *best; /* Best matching device */ char device_uri[1024]; /* Device URI */ int count; /* Number of queries */ -@@ -302,6 +520,7 @@ main(int argc, /* I - Number of comm +@@ -307,6 +524,7 @@ main(int argc, /* I - Number of comm if (device->sent) sent ++; @@ -361,7 +363,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c if (device->ref) count ++; -@@ -333,14 +552,23 @@ main(int argc, /* I - Number of comm +@@ -338,14 +556,23 @@ main(int argc, /* I - Number of comm count ++; } } @@ -386,7 +388,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c if (!best) best = device; -@@ -401,6 +629,7 @@ main(int argc, /* I - Number of comm +@@ -406,6 +633,7 @@ main(int argc, /* I - Number of comm } @@ -394,7 +396,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c /* * 'browse_callback()' - Browse devices. */ -@@ -489,6 +718,7 @@ browse_local_callback( +@@ -494,6 +722,7 @@ browse_local_callback( device->fullName); device->sent = 1; } @@ -402,7 +404,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c /* -@@ -569,6 +799,41 @@ exec_backend(char **argv) /* I - Comman +@@ -574,6 +803,41 @@ exec_backend(char **argv) /* I - Comman /* @@ -444,7 +446,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c * 'get_device()' - Create or update a device. */ -@@ -589,20 +854,7 @@ get_device(cups_array_t *devices, /* I - +@@ -594,20 +858,7 @@ get_device(cups_array_t *devices, /* I - */ key.name = (char *)serviceName; @@ -466,7 +468,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c for (device = cupsArrayFind(devices, &key); device; -@@ -622,8 +874,14 @@ get_device(cups_array_t *devices, /* I - +@@ -627,8 +878,14 @@ get_device(cups_array_t *devices, /* I - free(device->domain); device->domain = strdup(replyDomain); @@ -481,7 +483,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c free(device->fullName); device->fullName = strdup(fullName); } -@@ -643,6 +901,9 @@ get_device(cups_array_t *devices, /* I - +@@ -648,6 +905,9 @@ get_device(cups_array_t *devices, /* I - device->domain = strdup(replyDomain); device->type = key.type; device->priority = 50; @@ -491,7 +493,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c cupsArrayAdd(devices, device); -@@ -650,13 +911,20 @@ get_device(cups_array_t *devices, /* I - +@@ -655,13 +915,20 @@ get_device(cups_array_t *devices, /* I - * Set the "full name" of this service, which is used for queries... */ @@ -512,7 +514,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c /* * 'query_callback()' - Process query data. */ -@@ -680,7 +948,7 @@ query_callback( +@@ -685,7 +952,7 @@ query_callback( *ptr; /* Pointer into string */ cups_device_t dkey, /* Search key */ *device; /* Device */ @@ -521,7 +523,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c fprintf(stderr, "DEBUG2: query_callback(sdRef=%p, flags=%x, " "interfaceIndex=%d, errorCode=%d, fullName=\"%s\", " -@@ -714,94 +982,233 @@ query_callback( +@@ -719,94 +986,233 @@ query_callback( if ((ptr = strstr(name, "._")) != NULL) *ptr = '\0'; @@ -638,7 +640,8 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c else - dkey.type = CUPS_DEVICE_RIOUSBPRINT; + fprintf (stderr, "DEBUG: Ignoring TXT record for \"%s\"...\n", name); -+ + +- for (device = cupsArrayFind(devices, &dkey); + avahi_service_resolver_free (resolver); +} + @@ -713,8 +716,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c +} +#endif /* HAVE_AVAHI */ + - -- for (device = cupsArrayFind(devices, &dkey); ++ +/* + * 'find_device()' - Find a device from its name and domain. + */ @@ -817,7 +819,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c { /* * Add USB device ID information... -@@ -856,6 +1263,10 @@ query_callback( +@@ -861,6 +1267,10 @@ query_callback( if (device->type == CUPS_DEVICE_PRINTER) device->sent = 1; } @@ -828,7 +830,7 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c } if (device->device_id) -@@ -912,11 +1323,9 @@ query_callback( +@@ -917,11 +1327,9 @@ query_callback( } } @@ -841,9 +843,9 @@ diff -up cups-1.5.2/backend/dnssd.c.avahi-2-backend cups-1.5.2/backend/dnssd.c /* * 'sigterm_handler()' - Handle termination signals... */ -diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-support.c ---- cups-1.5.2/cups/http-support.c.avahi-2-backend 2011-09-26 20:46:46.000000000 +0200 -+++ cups-1.5.2/cups/http-support.c 2012-02-06 11:09:08.327644629 +0100 +diff -up cups-1.5.3/cups/http-support.c.avahi-2-backend cups-1.5.3/cups/http-support.c +--- cups-1.5.3/cups/http-support.c.avahi-2-backend 2012-02-15 02:06:12.000000000 +0100 ++++ cups-1.5.3/cups/http-support.c 2012-05-15 17:04:51.045944634 +0200 @@ -43,6 +43,10 @@ * http_copy_decode() - Copy and decode a URI. * http_copy_encode() - Copy and encode a URI. @@ -892,7 +894,7 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup /* * 'httpAssembleURI()' - Assemble a uniform resource identifier from its -@@ -1431,6 +1458,9 @@ _httpResolveURI( +@@ -1434,6 +1461,9 @@ _httpResolveURI( if (strstr(hostname, "._tcp")) { @@ -902,7 +904,7 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup #ifdef HAVE_DNSSD # ifdef WIN32 # pragma comment(lib, "dnssd.lib") -@@ -1449,6 +1479,17 @@ _httpResolveURI( +@@ -1452,6 +1482,17 @@ _httpResolveURI( fd_set input_set; /* Input set for select() */ struct timeval stimeout; /* Timeout value for select() */ #endif /* HAVE_POLL */ @@ -920,7 +922,7 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup if (options & _HTTP_RESOLVE_STDERR) fprintf(stderr, "DEBUG: Resolving \"%s\"...\n", hostname); -@@ -1485,9 +1526,16 @@ _httpResolveURI( +@@ -1488,9 +1529,16 @@ _httpResolveURI( if (domain) *domain++ = '\0'; @@ -937,7 +939,7 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup resolved_uri[0] = '\0'; DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", " -@@ -1501,6 +1549,7 @@ _httpResolveURI( +@@ -1504,6 +1552,7 @@ _httpResolveURI( uri = NULL; @@ -945,7 +947,7 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError) { localref = ref; -@@ -1608,6 +1657,36 @@ _httpResolveURI( +@@ -1611,6 +1660,36 @@ _httpResolveURI( DNSServiceRefDeallocate(ref); } @@ -982,7 +984,7 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup if (options & _HTTP_RESOLVE_STDERR) { -@@ -1619,13 +1698,13 @@ _httpResolveURI( +@@ -1622,13 +1701,13 @@ _httpResolveURI( fputs("STATE: -connecting-to-device,offline-report\n", stderr); } @@ -998,10 +1000,10 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup if ((options & _HTTP_RESOLVE_STDERR) && !uri) _cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer.")); -@@ -1914,6 +1993,116 @@ http_resolve_cb( +@@ -1916,6 +1995,115 @@ http_resolve_cb( + } #endif /* HAVE_DNSSD */ - +#ifdef HAVE_AVAHI +/* + * 'avahi_resolve_uri_client_cb()' - Avahi client callback for resolving URI. @@ -1111,7 +1113,6 @@ diff -up cups-1.5.2/cups/http-support.c.avahi-2-backend cups-1.5.2/cups/http-sup +} +#endif /* HAVE_AVAHI */ + -+ + /* - * End of "$Id: http-support.c 10017 2011-09-26 18:46:46Z mike $". - */ + * End of "$Id: http-support.c 10284 2012-02-15 01:06:12Z mike $".
\ No newline at end of file diff --git a/~mtjm/cups-usblp/cups-avahi-3-timeouts.patch b/~mtjm/cups-usblp/cups-avahi-3-timeouts.patch index 1c547c042..daf852a0f 100644 --- a/~mtjm/cups-usblp/cups-avahi-3-timeouts.patch +++ b/~mtjm/cups-usblp/cups-avahi-3-timeouts.patch @@ -1,6 +1,6 @@ -diff -up cups-1.5.0/scheduler/cupsd.h.avahi-3-timeouts cups-1.5.0/scheduler/cupsd.h ---- cups-1.5.0/scheduler/cupsd.h.avahi-3-timeouts 2011-05-11 23:17:34.000000000 +0100 -+++ cups-1.5.0/scheduler/cupsd.h 2011-10-07 13:20:41.522867324 +0100 +diff -up cups-1.5.2/scheduler/cupsd.h.avahi-3-timeouts cups-1.5.2/scheduler/cupsd.h +--- cups-1.5.2/scheduler/cupsd.h.avahi-3-timeouts 2011-05-11 23:17:34.000000000 +0100 ++++ cups-1.5.2/scheduler/cupsd.h 2012-03-14 15:06:36.509476983 +0000 @@ -140,6 +140,15 @@ extern const char *cups_hstrerror(int); typedef void (*cupsd_selfunc_t)(void *data); @@ -50,9 +50,9 @@ diff -up cups-1.5.0/scheduler/cupsd.h.avahi-3-timeouts cups-1.5.0/scheduler/cups /* * End of "$Id: cupsd.h 9766 2011-05-11 22:17:34Z mike $". -diff -up cups-1.5.0/scheduler/main.c.avahi-3-timeouts cups-1.5.0/scheduler/main.c ---- cups-1.5.0/scheduler/main.c.avahi-3-timeouts 2011-10-07 13:20:36.875954675 +0100 -+++ cups-1.5.0/scheduler/main.c 2011-10-07 13:20:41.524867282 +0100 +diff -up cups-1.5.2/scheduler/main.c.avahi-3-timeouts cups-1.5.2/scheduler/main.c +--- cups-1.5.2/scheduler/main.c.avahi-3-timeouts 2012-03-14 15:04:17.655305548 +0000 ++++ cups-1.5.2/scheduler/main.c 2012-03-14 15:06:36.511476986 +0000 @@ -146,6 +146,10 @@ main(int argc, /* I - Number of comm int launchd_idle_exit; /* Idle exit on select timeout? */ @@ -116,8 +116,8 @@ diff -up cups-1.5.0/scheduler/main.c.avahi-3-timeouts cups-1.5.0/scheduler/main. + * See if there are any scheduled timed callbacks to run. + */ + -+ tmo = cupsdNextTimeout (&tmo_delay); -+ if (tmo) ++ if ((tmo = cupsdNextTimeout(&tmo_delay)) != NULL && ++ (now + tmo_delay) < timeout) + { + timeout = tmo_delay; + why = "run a timed callback"; @@ -127,9 +127,9 @@ diff -up cups-1.5.0/scheduler/main.c.avahi-3-timeouts cups-1.5.0/scheduler/main. /* * Check whether we are accepting new connections... */ -diff -up cups-1.5.0/scheduler/Makefile.avahi-3-timeouts cups-1.5.0/scheduler/Makefile ---- cups-1.5.0/scheduler/Makefile.avahi-3-timeouts 2011-10-07 13:20:36.955953170 +0100 -+++ cups-1.5.0/scheduler/Makefile 2011-10-07 13:20:41.521867343 +0100 +diff -up cups-1.5.2/scheduler/Makefile.avahi-3-timeouts cups-1.5.2/scheduler/Makefile +--- cups-1.5.2/scheduler/Makefile.avahi-3-timeouts 2012-03-14 15:04:17.685305586 +0000 ++++ cups-1.5.2/scheduler/Makefile 2012-03-14 15:06:36.508476980 +0000 @@ -39,7 +39,8 @@ CUPSDOBJS = \ server.o \ statbuf.o \ @@ -140,9 +140,9 @@ diff -up cups-1.5.0/scheduler/Makefile.avahi-3-timeouts cups-1.5.0/scheduler/Mak LIBOBJS = \ filter.o \ mime.o \ -diff -up cups-1.5.0/scheduler/timeout.c.avahi-3-timeouts cups-1.5.0/scheduler/timeout.c ---- cups-1.5.0/scheduler/timeout.c.avahi-3-timeouts 2011-10-07 13:20:41.525867259 +0100 -+++ cups-1.5.0/scheduler/timeout.c 2011-10-07 13:20:41.525867259 +0100 +diff -up cups-1.5.2/scheduler/timeout.c.avahi-3-timeouts cups-1.5.2/scheduler/timeout.c +--- cups-1.5.2/scheduler/timeout.c.avahi-3-timeouts 2012-03-14 15:06:36.552477037 +0000 ++++ cups-1.5.2/scheduler/timeout.c 2012-03-14 15:06:36.552477037 +0000 @@ -0,0 +1,235 @@ +/* + * "$Id$" diff --git a/~mtjm/cups-usblp/cups-avahi-4-poll.patch b/~mtjm/cups-usblp/cups-avahi-4-poll.patch index 189e83da6..d7fa5fd56 100644 --- a/~mtjm/cups-usblp/cups-avahi-4-poll.patch +++ b/~mtjm/cups-usblp/cups-avahi-4-poll.patch @@ -1,6 +1,6 @@ -diff -up cups-1.5.0/scheduler/avahi.c.avahi-4-poll cups-1.5.0/scheduler/avahi.c ---- cups-1.5.0/scheduler/avahi.c.avahi-4-poll 2011-10-11 10:56:50.102288037 +0100 -+++ cups-1.5.0/scheduler/avahi.c 2011-10-11 10:56:50.102288037 +0100 +diff -up cups-1.5.2/scheduler/avahi.c.avahi-4-poll cups-1.5.2/scheduler/avahi.c +--- cups-1.5.2/scheduler/avahi.c.avahi-4-poll 2012-03-14 15:07:29.477542381 +0000 ++++ cups-1.5.2/scheduler/avahi.c 2012-03-14 15:07:29.477542381 +0000 @@ -0,0 +1,441 @@ +/* + * "$Id$" @@ -443,9 +443,9 @@ diff -up cups-1.5.0/scheduler/avahi.c.avahi-4-poll cups-1.5.0/scheduler/avahi.c +/* + * End of "$Id$". + */ -diff -up cups-1.5.0/scheduler/avahi.h.avahi-4-poll cups-1.5.0/scheduler/avahi.h ---- cups-1.5.0/scheduler/avahi.h.avahi-4-poll 2011-10-11 10:56:50.102288037 +0100 -+++ cups-1.5.0/scheduler/avahi.h 2011-10-11 10:56:50.119287724 +0100 +diff -up cups-1.5.2/scheduler/avahi.h.avahi-4-poll cups-1.5.2/scheduler/avahi.h +--- cups-1.5.2/scheduler/avahi.h.avahi-4-poll 2012-03-14 15:07:29.477542381 +0000 ++++ cups-1.5.2/scheduler/avahi.h 2012-03-14 15:07:29.477542381 +0000 @@ -0,0 +1,69 @@ +/* + * "$Id$" @@ -516,9 +516,9 @@ diff -up cups-1.5.0/scheduler/avahi.h.avahi-4-poll cups-1.5.0/scheduler/avahi.h +/* + * End of "$Id$". + */ -diff -up cups-1.5.0/scheduler/Makefile.avahi-4-poll cups-1.5.0/scheduler/Makefile ---- cups-1.5.0/scheduler/Makefile.avahi-4-poll 2011-10-11 10:56:45.868365861 +0100 -+++ cups-1.5.0/scheduler/Makefile 2011-10-11 10:56:50.101288055 +0100 +diff -up cups-1.5.2/scheduler/Makefile.avahi-4-poll cups-1.5.2/scheduler/Makefile +--- cups-1.5.2/scheduler/Makefile.avahi-4-poll 2012-03-14 15:06:36.508476980 +0000 ++++ cups-1.5.2/scheduler/Makefile 2012-03-14 15:07:29.476542380 +0000 @@ -17,6 +17,7 @@ include ../Makedefs CUPSDOBJS = \ diff --git a/~mtjm/cups-usblp/cups-avahi-5-services.patch b/~mtjm/cups-usblp/cups-avahi-5-services.patch index 9713bbc53..820b3c32b 100644 --- a/~mtjm/cups-usblp/cups-avahi-5-services.patch +++ b/~mtjm/cups-usblp/cups-avahi-5-services.patch @@ -1,6 +1,6 @@ -diff -up cups-1.5.0/cgi-bin/admin.c.avahi-5-services cups-1.5.0/cgi-bin/admin.c ---- cups-1.5.0/cgi-bin/admin.c.avahi-5-services 2011-05-20 04:49:49.000000000 +0100 -+++ cups-1.5.0/cgi-bin/admin.c 2011-10-19 11:53:32.123177998 +0100 +diff -up cups-1.5.2/cgi-bin/admin.c.avahi-5-services cups-1.5.2/cgi-bin/admin.c +--- cups-1.5.2/cgi-bin/admin.c.avahi-5-services 2011-08-17 22:01:53.000000000 +0100 ++++ cups-1.5.2/cgi-bin/admin.c 2012-03-14 15:08:25.701611799 +0000 @@ -1643,7 +1643,7 @@ do_config_server(http_t *http) /* I - H else local_protocols[0] = '\0'; @@ -31,10 +31,75 @@ diff -up cups-1.5.0/cgi-bin/admin.c.avahi-5-services cups-1.5.0/cgi-bin/admin.c #ifdef HAVE_LDAP cgiSetVariable("HAVE_LDAP", "1"); -diff -up cups-1.5.0/scheduler/client.c.avahi-5-services cups-1.5.0/scheduler/client.c ---- cups-1.5.0/scheduler/client.c.avahi-5-services 2011-06-10 22:16:18.000000000 +0100 -+++ cups-1.5.0/scheduler/client.c 2011-10-19 11:53:32.127177926 +0100 -@@ -4987,7 +4987,7 @@ valid_host(cupsd_client_t *con) /* I - +diff -up cups-1.5.2/scheduler/avahi.h.avahi-5-services cups-1.5.2/scheduler/avahi.h +--- cups-1.5.2/scheduler/avahi.h.avahi-5-services 2012-03-14 15:07:29.477542381 +0000 ++++ cups-1.5.2/scheduler/avahi.h 2012-03-14 15:08:25.701611799 +0000 +@@ -3,7 +3,7 @@ + * + * Avahi poll implementation for the CUPS scheduler. + * +- * Copyright (C) 2010, 2011 Red Hat, Inc. ++ * Copyright (C) 2010, 2011, 2012 Red Hat, Inc. + * Authors: + * Tim Waugh <twaugh@redhat.com> + * +@@ -32,37 +32,40 @@ + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +-#include <config.h> ++#ifndef _CUPS_AVAHI_H_ ++# define _CUPS_AVAHI_H_ + +-#ifdef HAVE_AVAHI +-# include <avahi-client/client.h> +-# include <avahi-client/publish.h> +-#endif /* HAVE_AVAHI */ ++/* ++ * Include necessary headers... ++ */ + +-#ifdef HAVE_AUTHORIZATION_H +-# include <Security/Authorization.h> +-#endif /* HAVE_AUTHORIZATION_H */ ++# include <config.h> + ++# ifdef HAVE_AVAHI ++# include <avahi-client/client.h> ++# include <avahi-client/publish.h> ++# endif /* HAVE_AVAHI */ + +-#ifdef HAVE_AVAHI ++# ifdef HAVE_AVAHI + typedef struct + { + AvahiPoll api; + cups_array_t *watched_fds; + cups_array_t *timeouts; + } AvahiCupsPoll; +-#endif /* HAVE_AVAHI */ ++# endif /* HAVE_AVAHI */ + + /* + * Prototypes... + */ + +-#ifdef HAVE_AVAHI ++# ifdef HAVE_AVAHI + extern AvahiCupsPoll * avahi_cups_poll_new(void); + extern void avahi_cups_poll_free(AvahiCupsPoll *cups_poll); + extern const AvahiPoll *avahi_cups_poll_get(AvahiCupsPoll *cups_poll); +-#endif /* HAVE_AVAHI */ ++# endif /* HAVE_AVAHI */ + ++#endif /* !_CUPS_AVAHI_H_ */ + + /* + * End of "$Id$". +diff -up cups-1.5.2/scheduler/client.c.avahi-5-services cups-1.5.2/scheduler/client.c +--- cups-1.5.2/scheduler/client.c.avahi-5-services 2012-01-13 23:00:22.000000000 +0000 ++++ cups-1.5.2/scheduler/client.c 2012-03-14 15:08:25.703611797 +0000 +@@ -4989,7 +4989,7 @@ valid_host(cupsd_client_t *con) /* I - !strncmp(host, "[::1]:", 6)); } @@ -43,7 +108,7 @@ diff -up cups-1.5.0/scheduler/client.c.avahi-5-services cups-1.5.0/scheduler/cli /* * Check if the hostname is something.local (Bonjour); if so, allow it. */ -@@ -4996,7 +4996,7 @@ valid_host(cupsd_client_t *con) /* I - +@@ -4998,7 +4998,7 @@ valid_host(cupsd_client_t *con) /* I - (!_cups_strcasecmp(end, ".local") || !_cups_strncasecmp(end, ".local:", 7) || !_cups_strcasecmp(end, ".local.") || !_cups_strncasecmp(end, ".local.:", 8))) return (1); @@ -52,10 +117,10 @@ diff -up cups-1.5.0/scheduler/client.c.avahi-5-services cups-1.5.0/scheduler/cli /* * Check if the hostname is an IP address... -diff -up cups-1.5.0/scheduler/conf.c.avahi-5-services cups-1.5.0/scheduler/conf.c ---- cups-1.5.0/scheduler/conf.c.avahi-5-services 2011-10-19 11:53:31.895182225 +0100 -+++ cups-1.5.0/scheduler/conf.c 2011-10-19 11:53:32.131177850 +0100 -@@ -651,7 +651,7 @@ cupsdReadConfiguration(void) +diff -up cups-1.5.2/scheduler/conf.c.avahi-5-services cups-1.5.2/scheduler/conf.c +--- cups-1.5.2/scheduler/conf.c.avahi-5-services 2012-03-14 15:04:17.636305526 +0000 ++++ cups-1.5.2/scheduler/conf.c 2012-03-14 15:08:25.706611803 +0000 +@@ -652,7 +652,7 @@ cupsdReadConfiguration(void) Browsing = CUPS_DEFAULT_BROWSING; DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED; @@ -64,9 +129,9 @@ diff -up cups-1.5.0/scheduler/conf.c.avahi-5-services cups-1.5.0/scheduler/conf. cupsdSetString(&DNSSDRegType, "_ipp._tcp,_cups"); #endif /* HAVE_DNSSD */ -diff -up cups-1.5.0/scheduler/dirsvc.c.avahi-5-services cups-1.5.0/scheduler/dirsvc.c ---- cups-1.5.0/scheduler/dirsvc.c.avahi-5-services 2011-10-19 11:53:32.011180075 +0100 -+++ cups-1.5.0/scheduler/dirsvc.c 2011-10-19 11:53:58.916681461 +0100 +diff -up cups-1.5.2/scheduler/dirsvc.c.avahi-5-services cups-1.5.2/scheduler/dirsvc.c +--- cups-1.5.2/scheduler/dirsvc.c.avahi-5-services 2012-03-14 15:04:17.674305572 +0000 ++++ cups-1.5.2/scheduler/dirsvc.c 2012-03-14 15:08:25.709611806 +0000 @@ -27,6 +27,7 @@ * ldap_connect() - Start new LDAP connection * ldap_reconnect() - Reconnect to LDAP Server @@ -799,15 +864,31 @@ diff -up cups-1.5.0/scheduler/dirsvc.c.avahi-5-services cups-1.5.0/scheduler/dir /* * De-register the individual printers -@@ -2906,6 +3292,7 @@ dnssdStop(void) - p = (cupsd_printer_t *)cupsArrayNext(Printers)) - dnssdDeregisterPrinter(p); - -+#ifdef HAVE_DNSSD - /* +@@ -2910,12 +3296,23 @@ dnssdStop(void) * Shutdown the rest of the service refs... */ -@@ -2926,14 +3313,17 @@ dnssdStop(void) + ++#ifdef HAVE_DNSSD + if (WebIFRef) + { + DNSServiceRefDeallocate(WebIFRef); + WebIFRef = NULL; + } ++#endif /* HAVE_DNSSD */ ++#ifdef HAVE_AVAHI ++ if (AvahiWebIFGroup) ++ { ++ avahi_entry_group_reset (AvahiWebIFGroup); ++ avahi_entry_group_free (AvahiWebIFGroup); ++ AvahiWebIFGroup = NULL; ++ } ++#endif /* HAVE_AVAHI */ + ++#ifdef HAVE_DNSSD + if (RemoteRef) + { + DNSServiceRefDeallocate(RemoteRef); +@@ -2926,14 +3323,17 @@ dnssdStop(void) DNSServiceRefDeallocate(DNSSDRef); DNSSDRef = NULL; @@ -825,7 +906,7 @@ diff -up cups-1.5.0/scheduler/dirsvc.c.avahi-5-services cups-1.5.0/scheduler/dir /* * 'dnssdUpdate()' - Handle DNS-SD queries. */ -@@ -2955,6 +3345,153 @@ dnssdUpdate(void) +@@ -2955,6 +3355,153 @@ dnssdUpdate(void) #endif /* HAVE_DNSSD */ @@ -979,9 +1060,9 @@ diff -up cups-1.5.0/scheduler/dirsvc.c.avahi-5-services cups-1.5.0/scheduler/dir /* * 'get_auth_info_required()' - Get the auth-info-required value to advertise. */ -diff -up cups-1.5.0/scheduler/dirsvc.h.avahi-5-services cups-1.5.0/scheduler/dirsvc.h ---- cups-1.5.0/scheduler/dirsvc.h.avahi-5-services 2011-03-21 02:12:14.000000000 +0000 -+++ cups-1.5.0/scheduler/dirsvc.h 2011-10-19 11:53:32.138177721 +0100 +diff -up cups-1.5.2/scheduler/dirsvc.h.avahi-5-services cups-1.5.2/scheduler/dirsvc.h +--- cups-1.5.2/scheduler/dirsvc.h.avahi-5-services 2011-03-21 02:12:14.000000000 +0000 ++++ cups-1.5.2/scheduler/dirsvc.h 2012-03-14 15:08:25.711611808 +0000 @@ -31,6 +31,10 @@ # endif /* HAVE_LDAP_SSL_H */ #endif /* HAVE_LDAP */ @@ -1054,10 +1135,10 @@ diff -up cups-1.5.0/scheduler/dirsvc.h.avahi-5-services cups-1.5.0/scheduler/dir #ifdef HAVE_LDAP extern void cupsdUpdateLDAPBrowse(void); #endif /* HAVE_LDAP */ -diff -up cups-1.5.0/scheduler/ipp.c.avahi-5-services cups-1.5.0/scheduler/ipp.c ---- cups-1.5.0/scheduler/ipp.c.avahi-5-services 2011-10-19 11:53:31.978180686 +0100 -+++ cups-1.5.0/scheduler/ipp.c 2011-10-19 11:53:32.147177555 +0100 -@@ -6096,7 +6096,7 @@ copy_printer_attrs( +diff -up cups-1.5.2/scheduler/ipp.c.avahi-5-services cups-1.5.2/scheduler/ipp.c +--- cups-1.5.2/scheduler/ipp.c.avahi-5-services 2012-03-14 15:04:17.665305560 +0000 ++++ cups-1.5.2/scheduler/ipp.c 2012-03-14 15:08:25.715611813 +0000 +@@ -6099,7 +6099,7 @@ copy_printer_attrs( ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(curtime)); @@ -1066,7 +1147,7 @@ diff -up cups-1.5.0/scheduler/ipp.c.avahi-5-services cups-1.5.0/scheduler/ipp.c if (!ra || cupsArrayFind(ra, "printer-dns-sd-name")) { if (printer->reg_name) -@@ -6106,7 +6106,7 @@ copy_printer_attrs( +@@ -6109,7 +6109,7 @@ copy_printer_attrs( ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, "printer-dns-sd-name", 0); } @@ -1075,9 +1156,9 @@ diff -up cups-1.5.0/scheduler/ipp.c.avahi-5-services cups-1.5.0/scheduler/ipp.c if (!ra || cupsArrayFind(ra, "printer-error-policy")) ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME, -diff -up cups-1.5.0/scheduler/main.c.avahi-5-services cups-1.5.0/scheduler/main.c ---- cups-1.5.0/scheduler/main.c.avahi-5-services 2011-10-19 11:53:32.101178406 +0100 -+++ cups-1.5.0/scheduler/main.c 2011-10-19 11:53:32.151177479 +0100 +diff -up cups-1.5.2/scheduler/main.c.avahi-5-services cups-1.5.2/scheduler/main.c +--- cups-1.5.2/scheduler/main.c.avahi-5-services 2012-03-14 15:06:36.511476986 +0000 ++++ cups-1.5.2/scheduler/main.c 2012-03-14 15:08:25.718611817 +0000 @@ -120,6 +120,10 @@ main(int argc, /* I - Number of comm cupsd_listener_t *lis; /* Current listener */ time_t current_time, /* Current time */ @@ -1116,9 +1197,9 @@ diff -up cups-1.5.0/scheduler/main.c.avahi-5-services cups-1.5.0/scheduler/main. #endif /* HAVE_AVAHI */ #ifndef __APPLE__ -diff -up cups-1.5.0/scheduler/printers.c.avahi-5-services cups-1.5.0/scheduler/printers.c ---- cups-1.5.0/scheduler/printers.c.avahi-5-services 2011-10-19 11:53:31.916181835 +0100 -+++ cups-1.5.0/scheduler/printers.c 2011-10-19 11:53:32.156177388 +0100 +diff -up cups-1.5.2/scheduler/printers.c.avahi-5-services cups-1.5.2/scheduler/printers.c +--- cups-1.5.2/scheduler/printers.c.avahi-5-services 2012-03-14 15:04:17.646305537 +0000 ++++ cups-1.5.2/scheduler/printers.c 2012-03-14 15:08:25.720611819 +0000 @@ -883,9 +883,9 @@ cupsdDeletePrinter( cupsdClearString(&p->alert); cupsdClearString(&p->alert_description); @@ -1149,9 +1230,9 @@ diff -up cups-1.5.0/scheduler/printers.c.avahi-5-services cups-1.5.0/scheduler/p } -diff -up cups-1.5.0/scheduler/printers.h.avahi-5-services cups-1.5.0/scheduler/printers.h ---- cups-1.5.0/scheduler/printers.h.avahi-5-services 2011-03-18 18:42:46.000000000 +0000 -+++ cups-1.5.0/scheduler/printers.h 2011-10-19 11:53:32.157177369 +0100 +diff -up cups-1.5.2/scheduler/printers.h.avahi-5-services cups-1.5.2/scheduler/printers.h +--- cups-1.5.2/scheduler/printers.h.avahi-5-services 2011-03-18 18:42:46.000000000 +0000 ++++ cups-1.5.2/scheduler/printers.h 2012-03-14 15:08:25.721611820 +0000 @@ -16,6 +16,9 @@ #ifdef HAVE_DNSSD # include <dns_sd.h> diff --git a/~mtjm/cups-usblp/cups-no-gzip-man.patch b/~mtjm/cups-usblp/cups-no-gzip-man.patch new file mode 100644 index 000000000..6786c4430 --- /dev/null +++ b/~mtjm/cups-usblp/cups-no-gzip-man.patch @@ -0,0 +1,18 @@ +diff -up cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man cups-1.5b1/config-scripts/cups-manpages.m4 +--- cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man 2011-05-12 07:21:56.000000000 +0200 ++++ cups-1.5b1/config-scripts/cups-manpages.m4 2011-05-23 17:25:50.000000000 +0200 +@@ -69,10 +69,10 @@ case "$uname" in + ;; + Linux* | GNU* | Darwin*) + # Linux, GNU Hurd, and Mac OS X +- MAN1EXT=1.gz +- MAN5EXT=5.gz +- MAN7EXT=7.gz +- MAN8EXT=8.gz ++ MAN1EXT=1 ++ MAN5EXT=5 ++ MAN7EXT=7 ++ MAN8EXT=8 + MAN8DIR=8 + ;; + *) diff --git a/~mtjm/cups-usblp/cups-systemd-socket.patch b/~mtjm/cups-usblp/cups-systemd-socket.patch new file mode 100644 index 000000000..09d17d415 --- /dev/null +++ b/~mtjm/cups-usblp/cups-systemd-socket.patch @@ -0,0 +1,527 @@ +diff -up cups-1.5.2/config.h.in.systemd-socket cups-1.5.2/config.h.in +--- cups-1.5.2/config.h.in.systemd-socket 2012-03-16 14:50:57.089449755 +0000 ++++ cups-1.5.2/config.h.in 2012-03-16 14:50:57.146449787 +0000 +@@ -503,6 +503,13 @@ + + + /* ++ * Do we have systemd support? ++ */ ++ ++#undef HAVE_SYSTEMD ++ ++ ++/* + * Various scripting languages... + */ + +diff -up cups-1.5.2/config-scripts/cups-systemd.m4.systemd-socket cups-1.5.2/config-scripts/cups-systemd.m4 +--- cups-1.5.2/config-scripts/cups-systemd.m4.systemd-socket 2012-03-16 14:50:57.146449787 +0000 ++++ cups-1.5.2/config-scripts/cups-systemd.m4 2012-03-16 14:50:57.146449787 +0000 +@@ -0,0 +1,36 @@ ++dnl ++dnl "$Id$" ++dnl ++dnl systemd stuff for CUPS. ++ ++dnl Find whether systemd is available ++ ++SDLIBS="" ++AC_ARG_WITH([systemdsystemunitdir], ++ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), ++ [], [with_systemdsystemunitdir=$($PKGCONFIG --variable=systemdsystemunitdir systemd)]) ++if test "x$with_systemdsystemunitdir" != xno; then ++ AC_MSG_CHECKING(for libsystemd-daemon) ++ if $PKGCONFIG --exists libsystemd-daemon; then ++ AC_MSG_RESULT(yes) ++ SDCFLAGS=`$PKGCONFIG --cflags libsystemd-daemon` ++ SDLIBS=`$PKGCONFIG --libs libsystemd-daemon` ++ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) ++ AC_DEFINE(HAVE_SYSTEMD) ++ else ++ AC_MSG_RESULT(no) ++ fi ++fi ++ ++if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then ++ SYSTEMD_UNITS="cups.service cups.socket cups.path" ++else ++ SYSTEMD_UNITS="" ++fi ++ ++AC_SUBST(SYSTEMD_UNITS) ++AC_SUBST(SDLIBS) ++ ++dnl ++dnl "$Id$" ++dnl +diff -up cups-1.5.2/configure.in.systemd-socket cups-1.5.2/configure.in +--- cups-1.5.2/configure.in.systemd-socket 2011-08-31 02:36:33.000000000 +0100 ++++ cups-1.5.2/configure.in 2012-03-16 14:50:57.146449787 +0000 +@@ -37,6 +37,7 @@ sinclude(config-scripts/cups-pam.m4) + sinclude(config-scripts/cups-largefile.m4) + sinclude(config-scripts/cups-dnssd.m4) + sinclude(config-scripts/cups-launchd.m4) ++sinclude(config-scripts/cups-systemd.m4) + sinclude(config-scripts/cups-defaults.m4) + sinclude(config-scripts/cups-pdf.m4) + sinclude(config-scripts/cups-scripting.m4) +@@ -71,6 +72,9 @@ AC_OUTPUT(Makedefs + conf/snmp.conf + cups-config + data/testprint ++ data/cups.service ++ data/cups.socket ++ data/cups.path + desktop/cups.desktop + doc/help/ref-cupsd-conf.html + doc/help/standard.html +diff -up cups-1.5.2/cups/usersys.c.systemd-socket cups-1.5.2/cups/usersys.c +--- cups-1.5.2/cups/usersys.c.systemd-socket 2012-03-16 14:50:57.054449734 +0000 ++++ cups-1.5.2/cups/usersys.c 2012-03-16 14:50:57.148449788 +0000 +@@ -778,7 +778,7 @@ cups_read_client_conf( + struct stat sockinfo; /* Domain socket information */ + + if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) && +- (sockinfo.st_mode & S_IRWXO) == S_IRWXO) ++ (sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH)) + cups_server = CUPS_DEFAULT_DOMAINSOCKET; + else + #endif /* CUPS_DEFAULT_DOMAINSOCKET */ +diff -up cups-1.5.2/data/cups.path.in.systemd-socket cups-1.5.2/data/cups.path.in +--- cups-1.5.2/data/cups.path.in.systemd-socket 2012-03-16 14:50:57.148449788 +0000 ++++ cups-1.5.2/data/cups.path.in 2012-03-16 14:50:57.148449788 +0000 +@@ -0,0 +1,8 @@ ++[Unit] ++Description=CUPS Printer Service Spool ++ ++[Path] ++PathExistsGlob=@CUPS_REQUESTS@/d* ++ ++[Install] ++WantedBy=multi-user.target +diff -up cups-1.5.2/data/cups.service.in.systemd-socket cups-1.5.2/data/cups.service.in +--- cups-1.5.2/data/cups.service.in.systemd-socket 2012-03-16 14:50:57.149449788 +0000 ++++ cups-1.5.2/data/cups.service.in 2012-03-16 14:50:57.149449788 +0000 +@@ -0,0 +1,10 @@ ++[Unit] ++Description=CUPS Printing Service ++ ++[Service] ++ExecStart=@sbindir@/cupsd -f ++PrivateTmp=true ++ ++[Install] ++Also=cups.socket cups.path ++WantedBy=printer.target +diff -up cups-1.5.2/data/cups.socket.in.systemd-socket cups-1.5.2/data/cups.socket.in +--- cups-1.5.2/data/cups.socket.in.systemd-socket 2012-03-16 14:50:57.150449788 +0000 ++++ cups-1.5.2/data/cups.socket.in 2012-03-16 14:50:57.150449788 +0000 +@@ -0,0 +1,11 @@ ++[Unit] ++Description=CUPS Printing Service Sockets ++ ++[Socket] ++ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@ ++ListenStream=631 ++ListenDatagram=0.0.0.0:631 ++BindIPv6Only=ipv6-only ++ ++[Install] ++WantedBy=sockets.target +diff -up cups-1.5.2/data/Makefile.systemd-socket cups-1.5.2/data/Makefile +--- cups-1.5.2/data/Makefile.systemd-socket 2011-05-12 06:21:56.000000000 +0100 ++++ cups-1.5.2/data/Makefile 2012-03-16 14:50:57.151449789 +0000 +@@ -112,6 +112,12 @@ install-data: + $(INSTALL_DATA) $$file $(DATADIR)/ppdc; \ + done + $(INSTALL_DIR) -m 755 $(DATADIR)/profiles ++ if test "x$(SYSTEMD_UNITS)" != "x" ; then \ ++ $(INSTALL_DIR) -m 755 $(SYSTEMDUNITDIR); \ ++ for file in $(SYSTEMD_UNITS); do \ ++ $(INSTALL_DATA) $$file $(SYSTEMDUNITDIR); \ ++ done; \ ++ fi + + + # +@@ -159,6 +165,9 @@ uninstall: + -$(RMDIR) $(DATADIR)/charsets + -$(RMDIR) $(DATADIR)/banners + -$(RMDIR) $(DATADIR) ++ for file in $(SYSTEMD_UNITS); do \ ++ $(RM) $(SYSTEMDUNITDIR)/$$file; \ ++ done + + + # +diff -up cups-1.5.2/Makedefs.in.systemd-socket cups-1.5.2/Makedefs.in +--- cups-1.5.2/Makedefs.in.systemd-socket 2012-03-16 14:50:57.081449751 +0000 ++++ cups-1.5.2/Makedefs.in 2012-03-16 14:50:57.152449790 +0000 +@@ -143,6 +143,7 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ + CXXLIBS = @CXXLIBS@ + DBUS_NOTIFIER = @DBUS_NOTIFIER@ + DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@ ++SYSTEMD_UNITS = @SYSTEMD_UNITS@ + DNSSD_BACKEND = @DNSSD_BACKEND@ + DSOFLAGS = -L../cups @DSOFLAGS@ + DSOLIBS = @DSOLIBS@ $(COMMONLIBS) +@@ -151,6 +152,7 @@ FONTS = @FONTS@ + IMGLIBS = @IMGLIBS@ + IMGFILTERS = @IMGFILTERS@ + LAUNCHDLIBS = @LAUNCHDLIBS@ ++SDLIBS = @SDLIBS@ + LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \ + -L../scheduler @LDARCHFLAGS@ \ + @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM) +@@ -267,6 +269,7 @@ PAMFILE = @PAMFILE@ + + DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@ + DBUSDIR = @DBUSDIR@ ++SYSTEMDUNITDIR = $(BUILDROOT)@systemdsystemunitdir@ + + + # +diff -up cups-1.5.2/scheduler/client.h.systemd-socket cups-1.5.2/scheduler/client.h +--- cups-1.5.2/scheduler/client.h.systemd-socket 2011-03-25 21:25:38.000000000 +0000 ++++ cups-1.5.2/scheduler/client.h 2012-03-16 14:50:57.153449791 +0000 +@@ -75,6 +75,9 @@ typedef struct + int fd; /* File descriptor for this server */ + http_addr_t address; /* Bind address of socket */ + http_encryption_t encryption; /* To encrypt or not to encrypt... */ ++#ifdef HAVE_SYSTEMD ++ int is_systemd; /* Is this a systemd socket? */ ++#endif /* HAVE_SYSTEMD */ + } cupsd_listener_t; + + +diff -up cups-1.5.2/scheduler/dirsvc.c.systemd-socket cups-1.5.2/scheduler/dirsvc.c +--- cups-1.5.2/scheduler/dirsvc.c.systemd-socket 2012-03-16 14:50:57.112449768 +0000 ++++ cups-1.5.2/scheduler/dirsvc.c 2012-03-16 14:50:57.155449792 +0000 +@@ -1512,7 +1512,7 @@ cupsdStartBrowsing(void) + } + } + +- if (BrowseSocket >= 0) ++ if (BrowseSocket >= 0 && !BrowseSocketIsSystemd) + { + /* + * Bind the socket to browse port... +@@ -1556,13 +1556,17 @@ cupsdStartBrowsing(void) + cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to set broadcast mode - %s.", + strerror(errno)); + ++ if (!BrowseSocketIsSystemd) ++ { + #ifdef WIN32 +- closesocket(BrowseSocket); ++ closesocket(BrowseSocket); + #else +- close(BrowseSocket); ++ close(BrowseSocket); + #endif /* WIN32 */ + +- BrowseSocket = -1; ++ BrowseSocket = -1; ++ } ++ + BrowseLocalProtocols &= ~BROWSE_CUPS; + BrowseRemoteProtocols &= ~BROWSE_CUPS; + +@@ -1885,15 +1889,22 @@ cupsdStopBrowsing(void) + if (((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_CUPS) && + BrowseSocket >= 0) + { +- /* +- * Close the socket and remove it from the input selection set. +- */ ++ if (!BrowseSocketIsSystemd) ++ { ++ /* ++ * Close the socket. ++ */ + + #ifdef WIN32 +- closesocket(BrowseSocket); ++ closesocket(BrowseSocket); + #else +- close(BrowseSocket); ++ close(BrowseSocket); + #endif /* WIN32 */ ++ } ++ ++ /* ++ * Remove it from the input selection set. ++ */ + + cupsdRemoveSelect(BrowseSocket); + BrowseSocket = -1; +@@ -5693,11 +5704,14 @@ update_cups_browse(void) + strerror(errno)); + cupsdLogMessage(CUPSD_LOG_ERROR, "CUPS browsing turned off."); + ++ if (!BrowseSocketIsSystemd) ++ { + #ifdef WIN32 +- closesocket(BrowseSocket); ++ closesocket(BrowseSocket); + #else +- close(BrowseSocket); ++ close(BrowseSocket); + #endif /* WIN32 */ ++ } + + cupsdRemoveSelect(BrowseSocket); + BrowseSocket = -1; +diff -up cups-1.5.2/scheduler/dirsvc.h.systemd-socket cups-1.5.2/scheduler/dirsvc.h +--- cups-1.5.2/scheduler/dirsvc.h.systemd-socket 2012-03-16 14:50:57.113449769 +0000 ++++ cups-1.5.2/scheduler/dirsvc.h 2012-03-16 14:50:57.157449792 +0000 +@@ -100,6 +100,8 @@ VAR int Browsing VALUE(TRUE), + /* Short names for remote printers? */ + BrowseSocket VALUE(-1), + /* Socket for browsing */ ++ BrowseSocketIsSystemd VALUE(0), ++ /* BrowseSocket is systemd-provided? */ + BrowsePort VALUE(IPP_PORT), + /* Port number for broadcasts */ + BrowseInterval VALUE(DEFAULT_INTERVAL), +diff -up cups-1.5.2/scheduler/listen.c.systemd-socket cups-1.5.2/scheduler/listen.c +--- cups-1.5.2/scheduler/listen.c.systemd-socket 2011-04-16 00:38:13.000000000 +0100 ++++ cups-1.5.2/scheduler/listen.c 2012-03-16 14:50:57.158449792 +0000 +@@ -401,7 +401,11 @@ cupsdStopListening(void) + lis; + lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) + { +- if (lis->fd != -1) ++ if (lis->fd != -1 ++#ifdef HAVE_SYSTEMD ++ && !lis->is_systemd ++#endif /* HAVE_SYSTEMD */ ++ ) + { + #ifdef WIN32 + closesocket(lis->fd); +diff -up cups-1.5.2/scheduler/main.c.systemd-socket cups-1.5.2/scheduler/main.c +--- cups-1.5.2/scheduler/main.c.systemd-socket 2012-03-16 14:50:57.121449773 +0000 ++++ cups-1.5.2/scheduler/main.c 2012-03-16 14:51:55.409483636 +0000 +@@ -26,6 +26,8 @@ + * launchd_checkin() - Check-in with launchd and collect the listening + * fds. + * launchd_checkout() - Update the launchd KeepAlive file as needed. ++ * systemd_checkin() - Check-in with systemd and collect the ++ * listening fds. + * parent_handler() - Catch USR1/CHLD signals... + * process_children() - Process all dead children... + * select_timeout() - Calculate the select timeout value. +@@ -62,6 +64,10 @@ + # endif /* !LAUNCH_JOBKEY_SERVICEIPC */ + #endif /* HAVE_LAUNCH_H */ + ++#ifdef HAVE_SYSTEMD ++#include <systemd/sd-daemon.h> ++#endif /* HAVE_SYSTEMD */ ++ + #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) + # include <malloc.h> + #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ +@@ -78,6 +84,9 @@ + static void launchd_checkin(void); + static void launchd_checkout(void); + #endif /* HAVE_LAUNCHD */ ++#ifdef HAVE_SYSTEMD ++static void systemd_checkin(void); ++#endif /* HAVE_SYSTEMD */ + static void parent_handler(int sig); + static void process_children(void); + static void sigchld_handler(int sig); +@@ -537,6 +546,13 @@ main(int argc, /* I - Number of comm + } + #endif /* HAVE_LAUNCHD */ + ++#ifdef HAVE_SYSTEMD ++ /* ++ * If we were started by systemd get the listen sockets file descriptors... ++ */ ++ systemd_checkin(); ++#endif /* HAVE_SYSTEMD */ ++ + /* + * Startup the server... + */ +@@ -759,6 +775,15 @@ main(int argc, /* I - Number of comm + } + #endif /* HAVE_LAUNCHD */ + ++#ifdef HAVE_SYSTEMD ++ /* ++ * If we were started by systemd get the listen sockets file ++ * descriptors... ++ */ ++ ++ systemd_checkin(); ++#endif /* HAVE_SYSTEMD */ ++ + /* + * Startup the server... + */ +@@ -1584,6 +1609,139 @@ launchd_checkout(void) + } + #endif /* HAVE_LAUNCHD */ + ++#ifdef HAVE_SYSTEMD ++static void ++systemd_checkin(void) ++{ ++ int n, fd; ++ ++ n = sd_listen_fds(0); ++ if (n < 0) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Failed to acquire sockets from systemd - %s", ++ strerror(-n)); ++ exit(EXIT_FAILURE); ++ return; ++ } ++ ++ if (n == 0) ++ return; ++ ++ for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd ++) ++ { ++ http_addr_t addr; ++ socklen_t addrlen = sizeof (addr); ++ int r; ++ cupsd_listener_t *lis; ++ char s[256]; ++ ++ r = sd_is_socket(fd, AF_UNSPEC, SOCK_STREAM, 1); ++ if (r < 0) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to verify socket type - %s", ++ strerror(-r)); ++ continue; ++ } ++ ++ if (!r) ++ { ++ if (Browsing && ++ ((BrowseLocalProtocols | BrowseRemoteProtocols) & BROWSE_CUPS)) ++ { ++ r = sd_is_socket(fd, AF_UNSPEC, SOCK_DGRAM, 0); ++ if (r < 0) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to verify socket type - %s", ++ strerror(-r)); ++ continue; ++ } ++ ++ if (r) ++ { ++ /* ++ * This is the browse socket. ++ */ ++ ++ char addrstr[256]; ++ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen)) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to get local address - %s", ++ strerror(errno)); ++ continue; ++ } ++ ++ httpAddrString (&addr, addrstr, sizeof (addrstr)); ++ BrowseSocket = fd; ++ BrowseSocketIsSystemd = 1; ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "systemd_checkin: Matched browse (port %d) with fd %d:%s...", ++ BrowsePort, fd, addrstr); ++ continue; ++ } ++ ++ } ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Socket not of the right type"); ++ continue; ++ } ++ ++ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen)) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to get local address - %s", ++ strerror(errno)); ++ continue; ++ } ++ ++ /* ++ * Try to match the systemd socket address to one of the listeners... ++ */ ++ ++ for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners); ++ lis; ++ lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) ++ if (httpAddrEqual(&lis->address, &addr)) ++ break; ++ ++ if (lis) ++ { ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "systemd_checkin: Matched existing listener %s with fd %d...", ++ httpAddrString(&(lis->address), s, sizeof(s)), fd); ++ } ++ else ++ { ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "systemd_checkin: Adding new listener %s with fd %d...", ++ httpAddrString(&addr, s, sizeof(s)), fd); ++ ++ if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to allocate listener - " ++ "%s.", strerror(errno)); ++ exit(EXIT_FAILURE); ++ } ++ ++ cupsArrayAdd(Listeners, lis); ++ ++ memcpy(&lis->address, &addr, sizeof(lis->address)); ++ } ++ ++ lis->fd = fd; ++ lis->is_systemd = 1; ++ ++# ifdef HAVE_SSL ++ if (_httpAddrPort(&(lis->address)) == 443) ++ lis->encryption = HTTP_ENCRYPT_ALWAYS; ++# endif /* HAVE_SSL */ ++ } ++} ++#endif /* HAVE_SYSTEMD */ + + /* + * 'parent_handler()' - Catch USR1/CHLD signals... +diff -up cups-1.5.2/scheduler/Makefile.systemd-socket cups-1.5.2/scheduler/Makefile +--- cups-1.5.2/scheduler/Makefile.systemd-socket 2012-03-16 14:50:57.130449778 +0000 ++++ cups-1.5.2/scheduler/Makefile 2012-03-16 14:50:57.160449794 +0000 +@@ -382,7 +382,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu + $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \ + $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ + $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \ +- $(LIBGSSAPI) $(LIBWRAP) ++ $(LIBGSSAPI) $(LIBWRAP) $(SDLIBS) + + cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC) + echo Linking $@... +@@ -390,7 +390,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a + $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ + ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \ + $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \ +- $(LIBWRAP) ++ $(LIBWRAP) $(SDLIBS) + + + # |