diff options
Diffstat (limited to 'libre')
277 files changed, 32400 insertions, 2181 deletions
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/atool.changelog b/libre/atool-libre/atool.changelog new file mode 100644 index 000000000..ce0b12c2b --- /dev/null +++ b/libre/atool-libre/atool.changelog @@ -0,0 +1,18 @@ +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 + +2008-10-05 Jaroslav Lichtblau <dragonlord@aur.archlinux.org> + * Updated to major version 0.36.0 + +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..d5b1e5313 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.1 +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=('7775ff82a7fe2a1de7eb8a76322718c845a1f225') 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 6fc5679e7..6e3228359 100644 --- a/libre/blender-libre/PKGBUILD +++ b/libre/blender-libre/PKGBUILD @@ -1,22 +1,11 @@ # $Id$ -# Contributor: John Sowiak <john@archlinux.org> -# Contributor: tobias <tobias@archlinux.org> -# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> -# Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> -# Apparently, the blender guys refuse to release source tarballs for -# intermediate releases that deal mainly with binaries but incorporate tiny -# minor changes from svn. Since I'm sick and tired of the urges of users that -# look for release numbers only, we make a messy PKGBUILD that can checkout svn -# release if necessary. - -_svn=true _pkgname=blender pkgname=blender-libre -true && pkgver=2.63a # Hack for svn -true && pkgrel=2 -epoch=4 -pkgdesc="A fully integrated 3D graphics creation suite without cuda-toolkit recommendation" +pkgver=2.63a +pkgrel=5 +pkgdesc="A fully integrated 3D graphics creation suite (without nonfree cuda-toolkit support)" arch=('i686' 'x86_64' 'mips64el') license=('GPL') url="http://www.blender.org" @@ -24,45 +13,23 @@ depends=('libpng' 'libtiff' 'openexr' 'python' 'desktop-file-utils' 'shared-mime-info' 'hicolor-icon-theme' 'xdg-utils' 'glew' 'freetype2' 'openal' 'ffmpeg' 'fftw' 'boost-libs' 'opencollada' 'openimageio' 'libsndfile' 'jack') -makedepends=('cmake' 'boost' 'subversion') +makedepends=('cmake' 'boost') replaces=("${_pkgname}") conflicts=("${_pkgname}") provides=("${_pkgname}=${pkgver}") -options=(!strip) -install=blender.install -if [[ $_svn = false ]]; then - source=(http://download.blender.org/source/$_pkgname-$pkgver.tar.gz) - md5sums=('31a60b3ce5466d965cb7e2648995e092') -else - source=(ffmpeg-0.11.patch) - md5sums=('168db32487e363e71fd4671e204afccf') -fi - -_svntrunk="https://svn.blender.org/svnroot/bf-blender/trunk/blender" -_svnmod="blender" +install=${_pkgname}.install +source=(http://download.${_pkgname}.org/source/${_pkgname}-${pkgver}.tar.gz + ffmpeg-0.11.patch + boost-1.50.patch) +md5sums=('31a60b3ce5466d965cb7e2648995e092' + '9e5649403e51654615d30b10bc460217' + '0bab80da07d980c47b8ce3cb998edaef') build() { -if [[ $_svn = true ]]; then - cd "$srcdir" - msg "Connecting to SVN server...." - - if [[ -d "$_svnmod/.svn" ]]; then - (cd "$_svnmod" && svn up ) - else - svn co "$_svntrunk" --config-dir ./ "$_svnmod" - fi + cd "${srcdir}/${_pkgname}-${pkgver}" - msg "SVN checkout done or server timeout" - msg "Starting build..." - - rm -rf "$srcdir/$_svnmod-build" - cp -r "$srcdir/$_svnmod" "$srcdir/$_svnmod-build" - cd "$srcdir/$_svnmod-build" -else - cd "$srcdir/$_pkgname-$pkgver" -fi - - patch -Np0 < "$srcdir"/ffmpeg-0.11.patch + 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 @@ -96,26 +63,11 @@ fi 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 } package() { - if [[ $_svn = true ]]; then - cd "$srcdir/$_svnmod-build/build" - else - cd "$srcdir/$_pkgname-$pkgver/build" - fi + 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/blender-libre/ffmpeg-0.11.patch b/libre/blender-libre/ffmpeg-0.11.patch index bc67052bf..45144140c 100644 --- a/libre/blender-libre/ffmpeg-0.11.patch +++ b/libre/blender-libre/ffmpeg-0.11.patch @@ -1,104 +1,101 @@ -Index: intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp -=================================================================== ---- intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp (revision 47422) -+++ intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp (working copy) +diff -Naur blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp +--- blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2012-05-10 11:45:40.000000000 -0300 ++++ blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2012-07-10 18:12:55.727129720 -0300 @@ -143,23 +143,23 @@ - - switch(m_codecCtx->sample_fmt) - { + + switch(m_codecCtx->sample_fmt) + { - case SAMPLE_FMT_U8: + case AV_SAMPLE_FMT_U8: - m_convert = AUD_convert_u8_float; - m_specs.format = AUD_FORMAT_U8; - break; + m_convert = AUD_convert_u8_float; + m_specs.format = AUD_FORMAT_U8; + break; - case SAMPLE_FMT_S16: + case AV_SAMPLE_FMT_S16: - m_convert = AUD_convert_s16_float; - m_specs.format = AUD_FORMAT_S16; - break; + m_convert = AUD_convert_s16_float; + m_specs.format = AUD_FORMAT_S16; + break; - case SAMPLE_FMT_S32: + case AV_SAMPLE_FMT_S32: - m_convert = AUD_convert_s32_float; - m_specs.format = AUD_FORMAT_S32; - break; + m_convert = AUD_convert_s32_float; + m_specs.format = AUD_FORMAT_S32; + break; - case SAMPLE_FMT_FLT: + case AV_SAMPLE_FMT_FLT: - m_convert = AUD_convert_copy<float>; - m_specs.format = AUD_FORMAT_FLOAT32; - break; + m_convert = AUD_convert_copy<float>; + m_specs.format = AUD_FORMAT_FLOAT32; + break; - case SAMPLE_FMT_DBL: + case AV_SAMPLE_FMT_DBL: - m_convert = AUD_convert_double_float; - m_specs.format = AUD_FORMAT_FLOAT64; - break; + m_convert = AUD_convert_double_float; + m_specs.format = AUD_FORMAT_FLOAT64; + break; @@ -189,7 +189,7 @@ - } - catch(AUD_Exception&) - { + } + catch(AUD_Exception&) + { - av_close_input_file(m_formatCtx); + avformat_close_input(&m_formatCtx); - throw; - } + throw; + } } @@ -227,7 +227,7 @@ - } - catch(AUD_Exception&) - { + } + catch(AUD_Exception&) + { - av_close_input_stream(m_formatCtx); + avformat_close_input(&m_formatCtx); - av_free(m_aviocontext); - throw; - } + av_free(m_aviocontext); + throw; + } @@ -239,7 +239,7 @@ - - if(m_aviocontext) - { + + if(m_aviocontext) + { - av_close_input_stream(m_formatCtx); + avformat_close_input(&m_formatCtx); - av_free(m_aviocontext); - } - else -Index: intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp -=================================================================== ---- intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp (revision 47422) -+++ intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp (working copy) + av_free(m_aviocontext); + } + else +diff -Naur blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp +--- blender-2.63a.orig/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp 2012-05-10 11:45:40.000000000 -0300 ++++ blender-2.63a/intern/audaspace/ffmpeg/AUD_FFMPEGWriter.cpp 2012-07-10 18:14:55.893790273 -0300 @@ -133,23 +133,23 @@ - { - case AUD_FORMAT_U8: - m_convert = AUD_convert_float_u8; + { + case AUD_FORMAT_U8: + m_convert = AUD_convert_float_u8; - m_codecCtx->sample_fmt = SAMPLE_FMT_U8; + m_codecCtx->sample_fmt = AV_SAMPLE_FMT_U8; - break; - case AUD_FORMAT_S16: - m_convert = AUD_convert_float_s16; + break; + case AUD_FORMAT_S16: + m_convert = AUD_convert_float_s16; - m_codecCtx->sample_fmt = SAMPLE_FMT_S16; + m_codecCtx->sample_fmt = AV_SAMPLE_FMT_S16; - break; - case AUD_FORMAT_S32: - m_convert = AUD_convert_float_s32; + break; + case AUD_FORMAT_S32: + m_convert = AUD_convert_float_s32; - m_codecCtx->sample_fmt = SAMPLE_FMT_S32; + m_codecCtx->sample_fmt = AV_SAMPLE_FMT_S32; - break; - case AUD_FORMAT_FLOAT32: - m_convert = AUD_convert_copy<float>; + break; + case AUD_FORMAT_FLOAT32: + m_convert = AUD_convert_copy<float>; - m_codecCtx->sample_fmt = SAMPLE_FMT_FLT; + m_codecCtx->sample_fmt = AV_SAMPLE_FMT_FLT; - break; - case AUD_FORMAT_FLOAT64: - m_convert = AUD_convert_float_double; + break; + case AUD_FORMAT_FLOAT64: + m_convert = AUD_convert_float_double; - m_codecCtx->sample_fmt = SAMPLE_FMT_DBL; + m_codecCtx->sample_fmt = AV_SAMPLE_FMT_DBL; - break; - default: - AUD_THROW(AUD_ERROR_FFMPEG, format_error); -Index: intern/ffmpeg/ffmpeg_compat.h -=================================================================== ---- intern/ffmpeg/ffmpeg_compat.h (revision 47422) -+++ intern/ffmpeg/ffmpeg_compat.h (working copy) + break; + default: + AUD_THROW(AUD_ERROR_FFMPEG, format_error); +diff -Naur blender-2.63a.orig/intern/ffmpeg/ffmpeg_compat.h blender-2.63a/intern/ffmpeg/ffmpeg_compat.h +--- blender-2.63a.orig/intern/ffmpeg/ffmpeg_compat.h 2012-05-10 11:46:17.000000000 -0300 ++++ blender-2.63a/intern/ffmpeg/ffmpeg_compat.h 2012-07-10 18:17:04.823783714 -0300 @@ -76,6 +76,10 @@ #define FFMPEG_FFV1_ALPHA_SUPPORTED #endif - + +#if ((LIBAVFORMAT_VERSION_MAJOR < 53) || ((LIBAVFORMAT_VERSION_MAJOR == 53) && (LIBAVFORMAT_VERSION_MINOR < 24)) || ((LIBAVFORMAT_VERSION_MAJOR == 53) && (LIBAVFORMAT_VERSION_MINOR < 24) && (LIBAVFORMAT_VERSION_MICRO < 2))) +#define avformat_close_input(x) av_close_input_file(*(x)) +#endif @@ -106,31 +103,30 @@ Index: intern/ffmpeg/ffmpeg_compat.h #ifndef FFMPEG_HAVE_AVIO #define AVIO_FLAG_WRITE URL_WRONLY #define avio_open url_fopen -Index: source/blender/blenkernel/intern/writeffmpeg.c -=================================================================== ---- source/blender/blenkernel/intern/writeffmpeg.c (revision 47422) -+++ source/blender/blenkernel/intern/writeffmpeg.c (working copy) -@@ -42,6 +42,7 @@ +diff -Naur blender-2.63a.orig/source/blender/blenkernel/intern/writeffmpeg.c blender-2.63a/source/blender/blenkernel/intern/writeffmpeg.c +--- blender-2.63a.orig/source/blender/blenkernel/intern/writeffmpeg.c 2012-05-10 11:50:20.000000000 -0300 ++++ blender-2.63a/source/blender/blenkernel/intern/writeffmpeg.c 2012-07-10 18:27:00.213753426 -0300 +@@ -36,6 +36,7 @@ #include <libavformat/avformat.h> #include <libavcodec/avcodec.h> #include <libavutil/rational.h> +#include <libavutil/samplefmt.h> #include <libswscale/swscale.h> #include <libavcodec/opt.h> - -@@ -615,7 +616,7 @@ - - c->sample_rate = rd->ffcodecdata.audio_mixrate; - c->bit_rate = ffmpeg_audio_bitrate * 1000; + +@@ -612,7 +613,7 @@ + + c->sample_rate = rd->ffcodecdata.audio_mixrate; + c->bit_rate = ffmpeg_audio_bitrate*1000; - c->sample_fmt = SAMPLE_FMT_S16; + c->sample_fmt = AV_SAMPLE_FMT_S16; - c->channels = rd->ffcodecdata.audio_channels; - codec = avcodec_find_encoder(c->codec_id); - if (!codec) { -@@ -657,11 +658,21 @@ + c->channels = rd->ffcodecdata.audio_channels; + codec = avcodec_find_encoder(c->codec_id); + if (!codec) { +@@ -654,11 +655,21 @@ } /* essential functions -- start, append, end */ - + +static void ffmpeg_dict_set_int(AVDictionary **dict, const char *key, int value) +{ + char buffer[32]; @@ -142,134 +138,132 @@ Index: source/blender/blenkernel/intern/writeffmpeg.c + static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, ReportList *reports) { - /* Handle to the output file */ - AVFormatContext *of; - AVOutputFormat *fmt; + /* Handle to the output file */ + AVFormatContext* of; + AVOutputFormat* fmt; + AVDictionary *opts = NULL; - char name[256]; - const char **exts; - -@@ -707,13 +718,14 @@ - of->oformat = fmt; - of->packet_size = rd->ffcodecdata.mux_packet_size; - if (ffmpeg_audio_codec != CODEC_ID_NONE) { + char name[256]; + const char ** exts; + +@@ -704,13 +715,14 @@ + of->oformat = fmt; + of->packet_size= rd->ffcodecdata.mux_packet_size; + if (ffmpeg_audio_codec != CODEC_ID_NONE) { - of->mux_rate = rd->ffcodecdata.mux_rate; + ffmpeg_dict_set_int(&opts, "muxrate", rd->ffcodecdata.mux_rate); - } - else { + } + else { - of->mux_rate = 0; + av_dict_set(&opts, "muxrate", "0", 0); - } - -- of->preload = (int)(0.5 * AV_TIME_BASE); -+ ffmpeg_dict_set_int(&opts, "preload", (int)(0.5 * AV_TIME_BASE)); + } + +- of->preload = (int)(0.5*AV_TIME_BASE); ++ ffmpeg_dict_set_int(&opts, "preload", (int)(0.5*AV_TIME_BASE)); + - of->max_delay = (int)(0.7 * AV_TIME_BASE); - - fmt->audio_codec = ffmpeg_audio_codec; -@@ -776,6 +788,7 @@ - fmt->audio_codec = CODEC_ID_PCM_S16LE; - if (ffmpeg_audio_codec != CODEC_ID_NONE && rd->ffcodecdata.audio_mixrate != 48000 && rd->ffcodecdata.audio_channels != 2) { - BKE_report(reports, RPT_ERROR, "FFMPEG only supports 48khz / stereo audio for DV!"); + of->max_delay = (int)(0.7*AV_TIME_BASE); + + fmt->audio_codec = ffmpeg_audio_codec; +@@ -773,6 +785,7 @@ + fmt->audio_codec = CODEC_ID_PCM_S16LE; + if (ffmpeg_audio_codec != CODEC_ID_NONE && rd->ffcodecdata.audio_mixrate != 48000 && rd->ffcodecdata.audio_channels != 2) { + BKE_report(reports, RPT_ERROR, "FFMPEG only supports 48khz / stereo audio for DV!"); + av_dict_free(&opts); - return 0; - } - } -@@ -785,6 +798,7 @@ - printf("alloc video stream %p\n", video_stream); - if (!video_stream) { - BKE_report(reports, RPT_ERROR, "Error initializing video stream."); + return 0; + } + } +@@ -782,6 +795,7 @@ + printf("alloc video stream %p\n", video_stream); + if (!video_stream) { + BKE_report(reports, RPT_ERROR, "Error initializing video stream."); + av_dict_free(&opts); - return 0; - } - } -@@ -793,27 +807,26 @@ - audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of); - if (!audio_stream) { - BKE_report(reports, RPT_ERROR, "Error initializing audio stream."); + return 0; + } + } +@@ -790,27 +804,27 @@ + audio_stream = alloc_audio_stream(rd, fmt->audio_codec, of); + if (!audio_stream) { + BKE_report(reports, RPT_ERROR, "Error initializing audio stream."); + av_dict_free(&opts); - return 0; - } - } + return 0; + } + } - if (av_set_parameters(of, NULL) < 0) { - BKE_report(reports, RPT_ERROR, "Error setting output parameters."); - return 0; - } - if (!(fmt->flags & AVFMT_NOFILE)) { - if (avio_open(&of->pb, name, AVIO_FLAG_WRITE) < 0) { - BKE_report(reports, RPT_ERROR, "Could not open file for writing."); + if (!(fmt->flags & AVFMT_NOFILE)) { + if (avio_open(&of->pb, name, AVIO_FLAG_WRITE) < 0) { + BKE_report(reports, RPT_ERROR, "Could not open file for writing."); + av_dict_free(&opts); - return 0; - } - } -- + return 0; + } + } + - if (av_write_header(of) < 0) { + if (avformat_write_header(of, NULL) < 0) { - BKE_report(reports, RPT_ERROR, "Could not initialize streams. Probably unsupported codec combination."); -+ av_dict_free(&opts); - return 0; - } - - outfile = of; - av_dump_format(of, 0, name, 1); + BKE_report(reports, RPT_ERROR, "Could not initialize streams. Probably unsupported codec combination."); ++ av_dict_free(&opts); + return 0; + } + + outfile = of; + av_dump_format(of, 0, name, 1); + av_dict_free(&opts); - - return 1; + + return 1; } -Index: source/blender/imbuf/intern/anim_movie.c -=================================================================== ---- source/blender/imbuf/intern/anim_movie.c (revision 47422) -+++ source/blender/imbuf/intern/anim_movie.c (working copy) -@@ -445,7 +445,7 @@ - int i, videoStream; - - AVCodec *pCodec; +diff -Naur blender-2.63a.orig/source/blender/imbuf/intern/anim_movie.c blender-2.63a/source/blender/imbuf/intern/anim_movie.c +--- blender-2.63a.orig/source/blender/imbuf/intern/anim_movie.c 2012-05-10 11:50:59.000000000 -0300 ++++ blender-2.63a/source/blender/imbuf/intern/anim_movie.c 2012-07-10 18:30:19.413743294 -0300 +@@ -436,7 +436,7 @@ + int i, videoStream; + + AVCodec *pCodec; - AVFormatContext *pFormatCtx; + AVFormatContext *pFormatCtx = NULL; - AVCodecContext *pCodecCtx; - int frs_num; - double frs_den; -@@ -464,7 +464,7 @@ - - do_init_ffmpeg(); - -- if (av_open_input_file(&pFormatCtx, anim->name, NULL, 0, NULL) != 0) { -+ if (avformat_open_input(&pFormatCtx, anim->name, NULL, NULL) != 0) { - return -1; - } - -@@ -998,7 +998,8 @@ - ret = av_seek_frame(anim->pFormatCtx, - -1, - pos, AVSEEK_FLAG_BYTE); + AVCodecContext *pCodecCtx; + int frs_num; + double frs_den; +@@ -455,7 +455,7 @@ + + do_init_ffmpeg(); + +- if (av_open_input_file(&pFormatCtx, anim->name, NULL, 0, NULL)!=0) { ++ if (avformat_open_input(&pFormatCtx, anim->name, NULL, NULL)!=0) { + return -1; + } + +@@ -990,7 +990,8 @@ + ret = av_seek_frame(anim->pFormatCtx, + -1, + pos, AVSEEK_FLAG_BYTE); - av_update_cur_dts(anim->pFormatCtx, v_st, dts); + // XXX: need double verification + // av_update_cur_dts(anim->pFormatCtx, v_st, dts); - } - else { - av_log(anim->pFormatCtx, AV_LOG_DEBUG, -Index: source/blender/imbuf/intern/indexer.c -=================================================================== ---- source/blender/imbuf/intern/indexer.c (revision 47422) -+++ source/blender/imbuf/intern/indexer.c (working copy) -@@ -531,13 +531,6 @@ - rv->c->flags |= CODEC_FLAG_GLOBAL_HEADER; - } - + } + else { + av_log(anim->pFormatCtx, AV_LOG_DEBUG, +diff -Naur blender-2.63a.orig/source/blender/imbuf/intern/indexer.c blender-2.63a/source/blender/imbuf/intern/indexer.c +--- blender-2.63a.orig/source/blender/imbuf/intern/indexer.c 2012-05-10 11:50:59.000000000 -0300 ++++ blender-2.63a/source/blender/imbuf/intern/indexer.c 2012-07-10 18:38:25.737051891 -0300 +@@ -533,13 +533,6 @@ + rv->c->flags |= CODEC_FLAG_GLOBAL_HEADER; + } + - if (av_set_parameters(rv->of, NULL) < 0) { - fprintf(stderr, "Couldn't set output parameters? " -- "Proxy not built!\n"); +- "Proxy not built!\n"); - av_free(rv->of); - return 0; - } - - if (avio_open(&rv->of->pb, fname, AVIO_FLAG_WRITE) < 0) { - fprintf(stderr, "Couldn't open outputfile! " - "Proxy not built!\n"); -@@ -574,7 +567,12 @@ - NULL, NULL, NULL); - } - + if (avio_open(&rv->of->pb, fname, AVIO_FLAG_WRITE) < 0) { + fprintf(stderr, "Couldn't open outputfile! " + "Proxy not built!\n"); +@@ -576,7 +569,12 @@ + NULL, NULL, NULL); + } + - av_write_header(rv->of); + if (avformat_write_header(rv->of, NULL) < 0) { + fprintf(stderr, "Couldn't set output parameters? " @@ -277,95 +271,92 @@ Index: source/blender/imbuf/intern/indexer.c + av_free(rv->of); + return 0; + } - - return rv; + + return rv; } -@@ -737,7 +735,7 @@ - memset(context->proxy_ctx, 0, sizeof(context->proxy_ctx)); - memset(context->indexer, 0, sizeof(context->indexer)); - +@@ -739,7 +737,7 @@ + memset(context->proxy_ctx, 0, sizeof(context->proxy_ctx)); + memset(context->indexer, 0, sizeof(context->indexer)); + - if (av_open_input_file(&context->iFormatCtx, anim->name, NULL, 0, NULL) != 0) { + if (avformat_open_input(&context->iFormatCtx, anim->name, NULL, NULL) != 0) { - MEM_freeN(context); - return NULL; - } -Index: source/blender/imbuf/intern/util.c -=================================================================== ---- source/blender/imbuf/intern/util.c (revision 47422) -+++ source/blender/imbuf/intern/util.c (working copy) -@@ -247,7 +247,7 @@ - - static int isffmpeg(const char *filename) + MEM_freeN(context); + return NULL; + } +diff -Naur blender-2.63a.orig/source/blender/imbuf/intern/util.c blender-2.63a/source/blender/imbuf/intern/util.c +--- blender-2.63a.orig/source/blender/imbuf/intern/util.c 2012-05-10 11:50:59.000000000 -0300 ++++ blender-2.63a/source/blender/imbuf/intern/util.c 2012-07-10 18:40:49.950377886 -0300 +@@ -243,7 +243,7 @@ + + static int isffmpeg (const char *filename) { - AVFormatContext *pFormatCtx; + AVFormatContext *pFormatCtx = NULL; - unsigned int i; - int videoStream; - AVCodec *pCodec; -@@ -268,7 +268,7 @@ - return 0; - } - -- if (av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL) != 0) { -+ if (avformat_open_input(&pFormatCtx, filename, NULL, NULL) != 0) { - if (UTIL_DEBUG) fprintf(stderr, "isffmpeg: av_open_input_file failed\n"); - return 0; - } -Index: source/gameengine/VideoTexture/VideoFFmpeg.cpp -=================================================================== ---- source/gameengine/VideoTexture/VideoFFmpeg.cpp (revision 47422) -+++ source/gameengine/VideoTexture/VideoFFmpeg.cpp (working copy) + unsigned int i; + int videoStream; + AVCodec *pCodec; +@@ -261,7 +261,7 @@ + BLI_testextensie(filename, ".cin") || + BLI_testextensie(filename, ".wav")) return 0; + +- if (av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)!=0) { ++ if (avformat_open_input(&pFormatCtx, filename, NULL, NULL)!=0) { + if (UTIL_DEBUG) fprintf(stderr, "isffmpeg: av_open_input_file failed\n"); + return 0; + } +diff -Naur blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.cpp blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.cpp +--- blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.cpp 2012-05-10 11:48:50.000000000 -0300 ++++ blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.cpp 2012-07-10 18:56:03.696998071 -0300 @@ -162,14 +162,14 @@ } - - + + -int VideoFFmpeg::openStream(const char *filename, AVInputFormat *inputFormat, AVFormatParameters *formatParams) +int VideoFFmpeg::openStream(const char *filename, AVInputFormat *inputFormat, AVDictionary **formatParams) { - AVFormatContext *formatCtx; + AVFormatContext *formatCtx = NULL; - int i, videoStream; - AVCodec *codec; - AVCodecContext *codecCtx; - + int i, videoStream; + AVCodec *codec; + AVCodecContext *codecCtx; + - if (av_open_input_file(&formatCtx, filename, inputFormat, 0, formatParams)!=0) + if (avformat_open_input(&formatCtx, filename, inputFormat, formatParams)!=0) - return -1; - - if (av_find_stream_info(formatCtx)<0) + return -1; + + if (av_find_stream_info(formatCtx)<0) @@ -545,11 +545,7 @@ - // but it is really not desirable to seek on http file, so force streaming. - // It would be good to find this information from the context but there are no simple indication - !strncmp(filename, "http://", 7) || + // but it is really not desirable to seek on http file, so force streaming. + // It would be good to find this information from the context but there are no simple indication + !strncmp(filename, "http://", 7) || -#ifdef FFMPEG_PB_IS_POINTER - (m_formatCtx->pb && m_formatCtx->pb->is_streamed) -#else - m_formatCtx->pb.is_streamed -#endif + (m_formatCtx->pb && !m_formatCtx->pb->seekable) - ) - { - // the file is in fact a streaming source, treat as cam to prevent seeking -@@ -586,14 +582,12 @@ + ) + { + // the file is in fact a streaming source, treat as cam to prevent seeking +@@ -586,13 +582,11 @@ { - // open camera source - AVInputFormat *inputFormat; + // open camera source + AVInputFormat *inputFormat; - AVFormatParameters formatParams; - AVRational frameRate; + AVDictionary *formatParams = NULL; - char filename[28], rateStr[20]; - char *p; - - do_init_ffmpeg(); - + char *p, filename[28], rateStr[20]; + + do_init_ffmpeg(); + - memset(&formatParams, 0, sizeof(formatParams)); #ifdef WIN32 - // video capture on windows only through Video For Windows driver - inputFormat = av_find_input_format("vfwcap"); -@@ -623,7 +617,13 @@ - sprintf(filename, "/dev/dv1394/%d", camIdx); - } else - { + // video capture on windows only through Video For Windows driver + inputFormat = av_find_input_format("vfwcap"); +@@ -622,7 +616,13 @@ + sprintf(filename, "/dev/dv1394/%d", camIdx); + } else + { - inputFormat = av_find_input_format("video4linux"); + const char *formats[] = {"video4linux2,v4l2", "video4linux2", "video4linux"}; + int i, formatsCount = sizeof(formats) / sizeof(char*); @@ -374,23 +365,23 @@ Index: source/gameengine/VideoTexture/VideoFFmpeg.cpp + if (inputFormat) + break; + } - sprintf(filename, "/dev/video%d", camIdx); - } - if (!inputFormat) -@@ -637,20 +637,22 @@ - if ((p = strchr(filename, ':')) != 0) - *p = 0; - } + sprintf(filename, "/dev/video%d", camIdx); + } + if (!inputFormat) +@@ -636,20 +636,22 @@ + if ((p = strchr(filename, ':')) != 0) + *p = 0; + } - if (file && (p = strchr(file, ':')) != NULL) - formatParams.standard = p+1; + if (file && (p = strchr(file, ':')) != NULL) { + av_dict_set(&formatParams, "standard", p+1, 0); + } #endif - //frame rate - if (m_captRate <= 0.f) - m_captRate = defFrameRate; - sprintf(rateStr, "%f", m_captRate); + //frame rate + if (m_captRate <= 0.f) + m_captRate = defFrameRate; + sprintf(rateStr, "%f", m_captRate); - av_parse_video_rate(&frameRate, rateStr); - // populate format parameters - // need to specify the time base = inverse of rate @@ -406,26 +397,25 @@ Index: source/gameengine/VideoTexture/VideoFFmpeg.cpp + BLI_snprintf(video_size, sizeof(video_size), "%dx%d", m_captWidth, m_captHeight); + av_dict_set(&formatParams, "video_size", video_size, 0); + } - - if (openStream(filename, inputFormat, &formatParams) != 0) - return; -@@ -665,6 +667,8 @@ - // no need to thread if the system has a single core - m_isThreaded = true; - } + + if (openStream(filename, inputFormat, &formatParams) != 0) + return; +@@ -664,6 +666,8 @@ + // no need to thread if the system has a single core + m_isThreaded = true; + } + + av_dict_free(&formatParams); } - + // play video -Index: source/gameengine/VideoTexture/VideoFFmpeg.h -=================================================================== ---- source/gameengine/VideoTexture/VideoFFmpeg.h (revision 47422) -+++ source/gameengine/VideoTexture/VideoFFmpeg.h (working copy) +diff -Naur blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.h blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.h +--- blender-2.63a.orig/source/gameengine/VideoTexture/VideoFFmpeg.h 2012-05-10 11:48:50.000000000 -0300 ++++ blender-2.63a/source/gameengine/VideoTexture/VideoFFmpeg.h 2012-07-10 18:57:21.710327435 -0300 @@ -46,10 +46,6 @@ # define FFMPEG_CODEC_IS_POINTER 1 #endif - + -#if LIBAVFORMAT_VERSION_INT >= (52 << 16) -# define FFMPEG_PB_IS_POINTER 1 -#endif @@ -434,11 +424,11 @@ Index: source/gameengine/VideoTexture/VideoFFmpeg.h static inline AVCodecContext* get_codec_from_stream(AVStream* stream) { @@ -172,7 +168,7 @@ - double actFrameRate (void) { return m_frameRate * m_baseFrameRate; } - - /// common function to video file and capture + double actFrameRate (void) { return m_frameRate * m_baseFrameRate; } + + /// common function to video file and capture - int openStream(const char *filename, AVInputFormat *inputFormat, AVFormatParameters *formatParams); + int openStream(const char *filename, AVInputFormat *inputFormat, AVDictionary **formatParams); - - /// check if a frame is available and load it in pFrame, return true if a frame could be retrieved - AVFrame* grabFrame(long frame); + + /// check if a frame is available and load it in pFrame, return true if a frame could be retrieved + AVFrame* grabFrame(long frame); diff --git a/libre/cdfs-libre/PKGBUILD b/libre/cdfs-libre/PKGBUILD new file mode 100644 index 000000000..700c6b818 --- /dev/null +++ b/libre/cdfs-libre/PKGBUILD @@ -0,0 +1,40 @@ +# $Id$ +# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> +# Contributor: J. Santiago Hirschfeld <jsantiagoh@yahoo.com.ar> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> + +_pkgname=cdfs +pkgname=cdfs-libre +pkgver=2.6.27 +pkgrel=27 +pkgdesc="File system module libre that 'exports' all tracks and boot images on a CD as normal files." +arch=(i686 x86_64) +url="http://www.elis.UGent.be/~ronsse/cdfs/" +license=('GPL') +makedepends=('linux-libre-headers') +replaces=('cdfs') +conflicts=('cdfs') +provides=("cdfs=${pkgver}") +install=cdfs.install +source=("http://www.elis.UGent.be/~ronsse/cdfs/download/$_pkgname-$pkgver.tar.bz2" + "cdfs-3.0.patch" + "cdfs-3.2.patch" + "cdfs-3.4.patch") +md5sums=('ac64c014a90e3c488394832ea29605b3' + 'aba7da94a9dcbb8a93ea423cb6958fef' + 'e934407b3460257a301822ffc4ab3933' + '9215e7bdac728bd2f889fb525e543454') + +build() { + _kernver=`pacman -Q linux-libre | cut -d . -f 2 | cut -f 1 -d -` + depends=("linux-libre>=3.${_kernver}" "linux-libre<3.`expr ${_kernver} + 1`") + _kernverfull=`cat /usr/lib/modules/extramodules-3.${_kernver}-LIBRE/version` + + cd $srcdir/$_pkgname-$pkgver + patch -p1 <$srcdir/cdfs-3.0.patch + patch -p1 <$srcdir/cdfs-3.2.patch + patch -p1 <$srcdir/cdfs-3.4.patch + make KDIR=/usr/lib/modules/${_kernverfull}/build + install -Dm0644 cdfs.ko $pkgdir/usr/lib/modules/extramodules-3.${_kernver}-LIBRE/cdfs.ko + sed -i "s|extramodules-.*-LIBRE|extramodules-3.${_kernver}-LIBRE|" $startdir/cdfs.install +} diff --git a/libre/cdfs-libre/cdfs-3.0.patch b/libre/cdfs-libre/cdfs-3.0.patch new file mode 100644 index 000000000..20194b848 --- /dev/null +++ b/libre/cdfs-libre/cdfs-3.0.patch @@ -0,0 +1,274 @@ +diff -wbBur cdfs-2.6.27/cddata.c cdfs-2.6.27.my/cddata.c +--- cdfs-2.6.27/cddata.c 2009-12-21 17:04:03.000000000 +0300 ++++ cdfs-2.6.27.my/cddata.c 2011-07-24 21:18:44.000000000 +0400 +@@ -83,7 +83,7 @@ + #else + .mmap = generic_file_readonly_mmap, + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27) +- .sendfile = generic_file_sendfile ++// .sendfile = generic_file_sendfile + #else + .splice_read = generic_file_splice_read + #endif +diff -wbBur cdfs-2.6.27/root.c cdfs-2.6.27.my/root.c +--- cdfs-2.6.27/root.c 2009-12-21 16:38:31.000000000 +0300 ++++ cdfs-2.6.27.my/root.c 2011-07-25 13:16:59.000000000 +0400 +@@ -32,19 +30,14 @@ + * Added code to transform /proc/cdfs into a sequential synthetic file. * + *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ + +- + #include <linux/seq_file.h> +- +-#ifndef OLD_KERNEL + #include <linux/statfs.h> +-#endif ++#include <linux/sched.h> + + extern struct seq_operations cdfs_operations; + extern struct _track_info *dummy_track_p; + +-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24) + struct inode *cdfs_iget(struct super_block *sp, unsigned long ino); +-#endif + /*============================================================================* + * cdfs_open() * + * Description: * +@@ -115,15 +108,8 @@ + + /********************************************************************/ + +-#ifdef OLD_KERNEL +-static struct super_block * cdfs_mount(struct super_block *sb, void *data, int silent){ +- kdev_t dev = sb->s_dev; +- int i, j, t; +- struct cdrom_tochdr hdr; +-#else + static int cdfs_fill_super(struct super_block *sb, void *data, int silent){ + int i, t; +-#endif + struct cdrom_tocentry entry; + int no_audio=0, no_data=0; + cd * this_cd; +@@ -131,24 +117,13 @@ + + PRINT("cdfs_mount\n"); + +-#ifdef OLD_KERNEL +- MOD_INC_USE_COUNT; +- +- set_blocksize(dev, CD_FRAMESIZE); // voor bread met ide-cd +-#else + sb_set_blocksize(sb, CD_FRAMESIZE); // voor bread met ide-cd +-#endif + + sb->s_blocksize = CD_FRAMESIZE; + sb->s_blocksize_bits = 11; + + if (!(this_cd = cdfs_info(sb) = kmalloc(sizeof(cd), GFP_KERNEL))){ +-#ifdef OLD_KERNEL +- MOD_DEC_USE_COUNT; +- return NULL; +-#else + return -ENOMEM; +-#endif + } + + this_cd->mode = MODE; +@@ -160,13 +135,8 @@ + + // Initialize cache for maximum sector size + if (!(this_cd->cache = kmalloc(CD_FRAMESIZE_RAWER*CACHE_SIZE, GFP_KERNEL))) { +-#ifdef OLD_KERNEL +- MOD_DEC_USE_COUNT; +- return NULL; +-#else + kfree(cdfs_info(sb)); + return -ENOMEM; +-#endif + } + + // Cache is still invalid +@@ -183,23 +153,13 @@ + if (this_cd->toc_scsi){ + if (cdfs_toc_read_full(sb)){ + printk("TOC read failed\n"); +-#ifdef OLD_KERNEL +- MOD_DEC_USE_COUNT; +- return NULL; +-#else + goto invalid; +-#endif + } + } else { + //if (cdfs_ioctl(sb, CDROMREADTOCHDR, (unsigned long)&hdr)){ + if (cdfs_toc_read(sb)){ + printk("cdfs_toc_read failed\n"); +-#ifdef OLD_KERNEL +- MOD_DEC_USE_COUNT; +- return NULL; +-#else + goto invalid; +-#endif + } + } + +@@ -365,11 +325,7 @@ + sb->s_flags |= MS_RDONLY; + sb->s_op = &cdfs_ops; + /* always get inode status */ +-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24) + retinode=cdfs_iget(sb, 0); +-#else +- retinode=iget(sb, 0); +-#endif + if ( IS_ERR(retinode) ) + return PTR_ERR(retinode); + +@@ -379,16 +335,12 @@ + + cdfs_proc_cd = this_cd; + +-#ifdef OLD_KERNEL +- return sb; +-#else + return 0; + + invalid: + kfree(this_cd->cache); + kfree(cdfs_info(sb)); + return -EINVAL; +-#endif + } + + /************************************************************************/ +@@ -410,27 +362,12 @@ + // Remove /proc entry + cdfs_proc_cd = NULL; + kfree(cdfs_info(sb)); +- +-#ifdef OLD_KERNEL +- MOD_DEC_USE_COUNT; +-#endif +- + } + + /************************************************************************/ + +-#ifdef OLD_KERNEL +-static int cdfs_statfs(struct super_block *sb, struct statfs *buf) { +- cd * this_cd = cdfs_info(sb); +-#else +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) + static int cdfs_statfs(struct dentry *d, struct kstatfs *buf) { + cd * this_cd = cdfs_info(d->d_sb); +-#else +-static int cdfs_statfs(struct super_block *sb, struct kstatfs *buf) { +- cd * this_cd = cdfs_info(sb); +-#endif +-#endif + PRINT("rmfs_statfs\n"); + + buf->f_type = CDFS_MAGIC; +@@ -460,11 +397,7 @@ + + /************************************************************************/ + +-#ifdef OLD_KERNEL +-static struct dentry * cdfs_lookup(struct inode *dir, struct dentry *dentry){ +-#else + static struct dentry * cdfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd){ +-#endif + struct inode * inode; + int i; + cd * this_cd = cdfs_info(dir->i_sb); +@@ -480,15 +413,9 @@ + /* Use goto and read inode with iget()/cdfs_iget() */ + /* Thanks to David Howells for patch and Master class in his mail */ + found: +-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24) + inode = cdfs_iget(dir->i_sb, i); + if (IS_ERR(inode)) + return ERR_CAST(inode); +-#else +- inode = iget(dir->i_sb, i); +- if (!inode) +- return ERR_PTR(-ENOMEM); +-#endif + d_add(dentry, inode); + return NULL; + } +@@ -529,12 +456,8 @@ + i->i_fop = &cdfs_dir_operations; + } else { /* file */ + i->i_size = this_cd->track[i->i_ino].size; +-#ifdef OLD_KERNEL +- i->i_mtime = i->i_atime = i->i_ctime = this_cd->track[i->i_ino].time; +-#else + i->i_mtime.tv_sec = i->i_atime.tv_sec = i->i_ctime.tv_sec = this_cd->track[i->i_ino].time; + i->i_mtime.tv_nsec = i->i_atime.tv_nsec = i->i_ctime.tv_nsec = 0; +-#endif + i->i_mode = this_cd->mode; + if ((this_cd->track[i->i_ino].type==DATA) && this_cd->track[i->i_ino].iso_size) { + i->i_fop = &cdfs_cddata_file_operations; +@@ -587,33 +510,21 @@ + /******************************************************************/ + + static struct super_operations cdfs_ops = { +-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25) +- .read_inode = cdfs_read_inode, +-#endif + .put_super = cdfs_umount, + .statfs = cdfs_statfs + }; + +-#ifdef OLD_KERNEL +-static DECLARE_FSTYPE_DEV(cdfs_fs_type, FSNAME, cdfs_mount); +-#else +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) +-static int cdfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt) { +- return get_sb_bdev(fs_type, flags, dev_name, data, cdfs_fill_super, mnt); +-#else +-static struct super_block *cdfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data) { +- return get_sb_bdev(fs_type, flags, dev_name, data, cdfs_fill_super); +-#endif +-} ++//static int cdfs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, struct vfsmount *mnt) { ++// return get_sb_bdev(fs_type, flags, dev_name, data, cdfs_fill_super, mnt); ++//} + + static struct file_system_type cdfs_fs_type = { + .owner = THIS_MODULE, + .name = "cdfs", +- .get_sb = cdfs_get_sb, ++// .get_sb = cdfs_get_sb, + .kill_sb = kill_block_super, + .fs_flags = FS_REQUIRES_DEV + }; +-#endif + + /******************************************************/ + +@@ -621,10 +532,6 @@ + MODULE_DESCRIPTION("CDfs: a CD filesystem"); + MODULE_LICENSE("GPL"); + +-#ifdef OLD_KERNEL +-EXPORT_NO_SYMBOLS; +-#endif +- + /******************************************************************/ + + static int __init cdfs_init(void) { +@@ -676,11 +583,7 @@ + + if (!options) return; + +-#ifdef OLD_KERNEL +- for (this_char = strtok(options,","); this_char; this_char = strtok(NULL,",")) { +-#else + while ((this_char = strsep(&options,",")) != NULL) { +-#endif + + if (!strcmp(this_char,"single")) + this_cd->single=TRUE; diff --git a/libre/cdfs-libre/cdfs-3.2.patch b/libre/cdfs-libre/cdfs-3.2.patch new file mode 100644 index 000000000..d3300bdbc --- /dev/null +++ b/libre/cdfs-libre/cdfs-3.2.patch @@ -0,0 +1,12 @@ +diff -wbBur cdfs-2.6.27/root.c cdfs-2.6.27.my/root.c +--- cdfs-2.6.27/root.c 2009-12-21 16:38:31.000000000 +0300 ++++ cdfs-2.6.27.my/root.c 2012-01-18 11:23:03.000000000 +0400 +@@ -517,7 +517,7 @@ + + i->i_uid = this_cd->uid; + i->i_gid = this_cd->gid; +- i->i_nlink = 1; ++ i->__i_nlink = 1; + i->i_op = &cdfs_inode_operations; + i->i_fop = NULL; + i->i_data.a_ops = NULL; diff --git a/libre/cdfs-libre/cdfs-3.4.patch b/libre/cdfs-libre/cdfs-3.4.patch new file mode 100644 index 000000000..5c2cb9b24 --- /dev/null +++ b/libre/cdfs-libre/cdfs-3.4.patch @@ -0,0 +1,12 @@ +diff -wbBur cdfs-2.6.27/root.c cdfs-2.6.27.my/root.c +--- cdfs-2.6.27/root.c 2009-12-21 16:38:31.000000000 +0300 ++++ cdfs-2.6.27.my/root.c 2012-06-15 17:09:27.000000000 +0400 +@@ -375,7 +375,7 @@ + + PRINT("retinode = %ld\n", retinode->i_ino); + +- sb->s_root = d_alloc_root(retinode); ++ sb->s_root = d_make_root(retinode); + + cdfs_proc_cd = this_cd; + diff --git a/libre/cdfs-libre/cdfs.install b/libre/cdfs-libre/cdfs.install new file mode 100644 index 000000000..1c3cb4f8e --- /dev/null +++ b/libre/cdfs-libre/cdfs.install @@ -0,0 +1,14 @@ +post_install() { + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_upgrade() { + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_remove() { + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} diff --git a/libre/clementine-libre/PKGBUILD b/libre/clementine-libre/PKGBUILD index c22a7a230..307000501 100644 --- a/libre/clementine-libre/PKGBUILD +++ b/libre/clementine-libre/PKGBUILD @@ -3,12 +3,12 @@ #Contributor: BlackEagle <ike.devolder@gmail.com> #Contributor: Dany Martineau <dany.luc.martineau@gmail.com> #Maintainer (Parabola): Kete <kete@ninthfloor.org> -#Contributor (Parabola): André Silva <andre.paulista@adinet.com.uy> +#Contributor (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=clementine pkgname=clementine-libre pkgver=1.0.1 -pkgrel=4 +pkgrel=7 pkgdesc="A music player and library organizer, without spotify support" url="http://www.clementine-player.org/" license=('GPL') @@ -27,11 +27,13 @@ provides=("clementine=$pkgver") source=(http://clementine-player.googlecode.com/files/${_pkgname}-${pkgver}.tar.gz clementine-fix-albumcoverfetch-crash.patch clementine-fresh-start.patch + imobiledevice.patch remove-and-disable-spotify.patch remove-nonfree-references-on-translations.patch) sha1sums=('e05320da689e2fad744fd3e68518bc4103ecf0fd' 'fddd2e784181ce1dcc7809e7122cbade0af7b01f' 'd8abab4b8fb2d5284a2f43107505325e62d4af5f' + 'a04cec00e38651de78bfaa6b6d73532c3786de11' '2fef46eaffa7b5cd61afbf19b1dc909d11972a34' '745bc4fd639d7ef3230592c6275fb43b8956f3d5') install=clementine.install @@ -45,6 +47,9 @@ build() { # http://code.google.com/p/clementine-player/issues/detail?id=2752 patch -Np1 -i ../clementine-fix-albumcoverfetch-crash.patch + # Use libimobiledevice new "udid" field instead of "uuid". + patch -Np1 -i ../imobiledevice.patch + # https://labs.parabola.nu/issues/99 patch -Np1 -i ../remove-and-disable-spotify.patch patch -Np1 -i ../remove-nonfree-references-on-translations.patch diff --git a/libre/clementine-libre/clementine-1.0.1-global-menu.patch b/libre/clementine-libre/clementine-1.0.1-global-menu.patch new file mode 100644 index 000000000..91f93e058 --- /dev/null +++ b/libre/clementine-libre/clementine-1.0.1-global-menu.patch @@ -0,0 +1,17 @@ +diff -Naur clementine-1.0.1.ori/src/main.cpp clementine-1.0.1/src/main.cpp +--- clementine-1.0.1.ori/src/main.cpp 2012-01-22 07:43:26.000000000 -0500 ++++ clementine-1.0.1/src/main.cpp 2012-07-05 13:58:49.040596906 -0400 +@@ -280,13 +280,6 @@ + UniversalEncodingHandler handler; + TagLib::ID3v1::Tag::setStringHandler(&handler); + +-#ifdef Q_OS_LINUX +- // Force Clementine's menu to be shown in the Clementine window and not in +- // the Unity global menubar thing. See: +- // https://bugs.launchpad.net/unity/+bug/775278 +- setenv("QT_X11_NO_NATIVE_MENUBAR", "1", true); +-#endif +- + // Initialise logging + logging::Init(); + logging::SetLevels(options.log_levels()); diff --git a/libre/clementine-libre/imobiledevice.patch b/libre/clementine-libre/imobiledevice.patch new file mode 100644 index 000000000..9d387fd2f --- /dev/null +++ b/libre/clementine-libre/imobiledevice.patch @@ -0,0 +1,50 @@ +--- clementine-1.0.1/src/CMakeLists.txt.orig 2012-04-12 09:26:47.932990539 +0100 ++++ clementine-1.0.1/src/CMakeLists.txt 2012-04-12 09:28:40.553993173 +0100 +@@ -17,6 +17,10 @@ + include_directories(../3rdparty/qtwin) + endif(WIN32) + ++if(ENABLE_IMOBILEDEVICE AND IMOBILEDEVICE_VERSION VERSION_GREATER 1.1.1) ++ set(IMOBILEDEVICE_USES_UDIDS ON) ++endif() ++ + include_directories(${CMAKE_BINARY_DIR}) + include_directories(${GLIB_INCLUDE_DIRS}) + include_directories(${LIBXML_INCLUDE_DIRS}) +@@ -1008,6 +1012,7 @@ + ${USBMUXD_LIBRARIES} + gstafcsrc + ) ++ link_directories(${IMOBILEDEVICE_LIBRARY_DIRS}) + link_directories(${USBMUXD_LIBRARY_DIRS}) + endif(HAVE_IMOBILEDEVICE) + +--- clementine-1.0.1/src/config.h.in.orig 2011-12-02 21:24:43.000000000 +0000 ++++ clementine-1.0.1/src/config.h.in 2012-04-12 09:28:40.554993154 +0100 +@@ -38,6 +38,7 @@ + #cmakedefine HAVE_SPOTIFY + #cmakedefine HAVE_STATIC_SQLITE + #cmakedefine HAVE_WIIMOTEDEV ++#cmakedefine IMOBILEDEVICE_USES_UDIDS + #cmakedefine LEOPARD + #cmakedefine SNOW_LEOPARD + #cmakedefine USE_INSTALL_PREFIX +--- clementine-1.0.1/src/devices/ilister.cpp.orig 2012-04-12 09:28:38.407993781 +0100 ++++ clementine-1.0.1/src/devices/ilister.cpp 2012-04-12 09:28:40.554993154 +0100 +@@ -1,3 +1,4 @@ ++#include "config.h" + #include "ilister.h" + #include "imobiledeviceconnection.h" + +@@ -17,7 +18,11 @@ + void iLister::EventCallback(const idevice_event_t* event, void* context) { + iLister* me = reinterpret_cast<iLister*>(context); + ++#ifdef IMOBILEDEVICE_USES_UDIDS ++ const char* uuid = event->udid; ++#else + const char* uuid = event->uuid; ++#endif + + switch (event->event) { + case IDEVICE_DEVICE_ADD: diff --git a/libre/crosstool-ng/PKGBUILD b/libre/crosstool-ng/PKGBUILD index 35b477457..2760a224f 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' 'mips64el') @@ -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..03ef8945d 100644 --- a/libre/cups-filters-libre/PKGBUILD +++ b/libre/cups-filters-libre/PKGBUILD @@ -1,37 +1,43 @@ -# $Id$ +# $Id: PKGBUILD 166387 2012-09-07 13:33:10Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgname=cups-filters-libre _pkgname=cups-filters -pkgver=1.0.18 -pkgrel=3 +pkgver=1.0.24 +pkgrel=1 pkgdesc="OpenPrinting CUPS Filters" -arch=('i686' 'x86_64') +arch=('i686' 'x86_64' 'mips64el') url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting" license=('GPL') -depends=('lcms2' 'poppler>=0.20.1') -makedepends=('ghostscript') +depends=('lcms2' 'poppler>=0.20.3' 'qpdf') +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) +options=(!libtool) source=(http://www.openprinting.org/download/cups-filters/$_pkgname-$pkgver.tar.gz) -md5sums=(63972b426b7224915cdbb42b2a937374'') - +md5sums=('242ea48cd41f8546d71b00bf2b06c564') replaces=("${_pkgname}") conflicts=("${_pkgname}") provides=("${_pkgname}=${pkgver}") build() { cd "$srcdir/$_pkgname-$pkgver" - ./configure --prefix=/usr --sysconfdir=/etc + ./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/doublecmd-libre/PKGBUILD b/libre/doublecmd-libre/PKGBUILD new file mode 100644 index 000000000..5eee8985c --- /dev/null +++ b/libre/doublecmd-libre/PKGBUILD @@ -0,0 +1,62 @@ +# $Id$ +# Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com> +# Contributor: (sirocco AT ngs.ru) + +_pkgbase=doublecmd +pkgbase=doublecmd-libre +pkgname=('doublecmd-gtk2-libre' 'doublecmd-qt-libre') +pkgver=0.5.4 +_helpver=0.5.1 +pkgrel=2.1 +url="http://doublecmd.sourceforge.net/" +arch=('i686' 'x86_64') +license=('GPL') +install="$_pkgbase.install" +makedepends=('lazarus' 'qt4pas' 'gtk2') +optdepends=('lua: scripting' 'p7zip: support for 7zip archives') +source=("http://downloads.sourceforge.net/project/$_pkgbase/Double%20Commander%20Source/$_pkgbase-$pkgver-src.tar.gz" + "http://downloads.sourceforge.net/project/$_pkgbase/Double%20Commander%20Source/$_pkgbase-help-$_helpver-src.tar.gz" +) +sha256sums=('480b83279adeba007ad5c54f455733fae3d9c9ee61762e6b5a63e2e67b1cd7b7' + 'd9f518e05e089b71aaa31c7d4af8177e77594a02be2c316e85e061e63b4c03e5') + +build() { + cp -a $_pkgbase-$pkgver $_pkgbase-gtk + cp -a $_pkgbase-$pkgver $_pkgbase-qt + + cd "$srcdir/$_pkgbase-gtk" + ./build.sh beta gtk2 + + cd "$srcdir/$_pkgbase-qt" + ./build.sh beta qt +} + +package_doublecmd-gtk2-libre() { + pkgdesc="twin-panel (commander-style) file manager (GTK)" + depends=('gtk2') + conflicts=('doublecmd-gtk2') + replaces=('doublecmd-gtk2') + provides=("doublecmd-gtk2=${pkgver}" 'doublecmd') + cd "$srcdir/$_pkgbase-gtk" + sed -e 's/LIB_SUFFIX=.*/LIB_SUFFIX=/g' -i ./install/linux/install.sh + ./install/linux/install.sh --install-prefix="$pkgdir" + + # install doc + cd "$srcdir/$_pkgbase-help-$_helpver" + cp -a * "$pkgdir/usr/share/$_pkgbase/doc/" +} + +package_doublecmd-qt-libre() { + pkgdesc="twin-panel (commander-style) file manager (QT)" + depends=('qt4pas') + conflicts=('doublecmd-qt') + replaces=('doublecmd-qt') + provides=("doublecmd-qt=${pkgver}" 'doublecmd') + cd "$srcdir/$_pkgbase-qt" + sed -e 's/LIB_SUFFIX=.*/LIB_SUFFIX=/g' -i ./install/linux/install.sh + ./install/linux/install.sh --install-prefix="$pkgdir" + + # install doc + cd "$srcdir/$_pkgbase-help-$_helpver" + cp -a * "$pkgdir/usr/share/$_pkgbase/doc/" +} diff --git a/libre/doublecmd-libre/doublecmd.install b/libre/doublecmd-libre/doublecmd.install new file mode 100644 index 000000000..40d56528f --- /dev/null +++ b/libre/doublecmd-libre/doublecmd.install @@ -0,0 +1,34 @@ +update_icons() { + + # Setup Menus + if which update-desktop-database + then + update-desktop-database -q /usr/share/applications + fi + + # Setup MIME types + if which update-mime-database + then + update-mime-database /usr/share/mime >/dev/null + fi + + # Setup Icons + touch -c /usr/share/icons/hicolor + if which gtk-update-icon-cache + then + gtk-update-icon-cache -tq /usr/share/icons/hicolor + fi + +} + +post_install() { + update_icons +} + +post_upgrade() { + update_icons +} + +post_remove() { + update_icons +} diff --git a/libre/dpkg/PKGBUILD b/libre/dpkg/PKGBUILD index 23817afc0..a55d219e0 100644 --- a/libre/dpkg/PKGBUILD +++ b/libre/dpkg/PKGBUILD @@ -10,7 +10,7 @@ debfile() { echo -n "$_debrepo"; echo -n "$@"|sed -r 's@(.).*@\1/&@'; } # TODO: split into (dpkg dpkg-devtools dselect dpkg-perl) pkgname=dpkg -pkgver=1.16.2 +pkgver=1.16.4.3 pkgrel=1 pkgdesc="The Debian Package Manager and utilities. Don't use it instead of 'pacman'." arch=('i686' 'x86_64' 'mips64el') @@ -47,3 +47,9 @@ package() { md5sums=('629ba7ee2024e6a5c0ff807aa2db02f8' 'bc36609f6191c5b509fae58c21966c95' '24ab12e79989a2e7f31653fb1dd3cdf9') +md5sums=('39c74a948c6fe4c02ed9f15556fe179d' + 'bc36609f6191c5b509fae58c21966c95' + '24ab12e79989a2e7f31653fb1dd3cdf9') +md5sums=('39c74a948c6fe4c02ed9f15556fe179d' + 'bc36609f6191c5b509fae58c21966c95' + '24ab12e79989a2e7f31653fb1dd3cdf9') diff --git a/libre/dvdrip-libre/PKGBUILD b/libre/dvdrip-libre/PKGBUILD index 9d9ec3ca0..2f706868a 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' 'mips64el') license=('custom') diff --git a/libre/epdfview-libre/PKGBUILD b/libre/epdfview-libre/PKGBUILD index fa89351f7..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.1 +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..49e837e02 100644 --- a/libre/filesystem/PKGBUILD +++ b/libre/filesystem/PKGBUILD @@ -1,24 +1,31 @@ -# $Id: PKGBUILD 162111 2012-06-20 09:33:31Z tomegun $ +# $Id: PKGBUILD 165634 2012-08-27 20:15:48Z 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.8 +pkgrel=1.2 pkgdesc='Base filesystem for Parabola' arch=('any') license=('GPL') url='https://parabolagnulinux.org' groups=('base') install='filesystem.install' +makedepends=('asciidoc') depends=('iana-etc' 'bash' 'coreutils') backup=('etc/fstab' 'etc/crypttab' 'etc/group' 'etc/hosts' 'etc/ld.so.conf' 'etc/passwd' 'etc/shadow' 'etc/gshadow' 'etc/resolv.conf' 'etc/motd' 'etc/nsswitch.conf' 'etc/shells' 'etc/host.conf' 'etc/securetty' 'etc/profile' 'etc/issue') source=('group' 'issue' 'nsswitch.conf' 'securetty' 'host.conf' 'ld.so.conf' 'passwd' 'shadow' 'fstab' 'crypttab' 'hosts' 'motd' 'os-release' 'resolv.conf' - 'shells' 'gshadow' 'profile' 'modprobe.d.usb-load-ehci-first') + 'shells' 'gshadow' 'profile' 'modprobe.d.usb-load-ehci-first' 'parabola.7.txt' + 'locale.sh') + +build() { + cd ${srcdir} + a2x -d manpage -f manpage parabola.7.txt +} package() { cd ${pkgdir} @@ -47,6 +54,7 @@ package() { done touch etc/arch-release install -D -m644 ${srcdir}/modprobe.d.usb-load-ehci-first usr/lib/modprobe.d/usb-load-ehci-first.conf + install -m755 ${srcdir}/locale.sh etc/profile.d/locale.sh # setup /var for d in cache/man local opt log/old lib/misc empty; do @@ -69,6 +77,10 @@ package() { install -d -m755 usr/share/man/man${d} done + # + # install parabola(7) manpage + # + install -D -m644 ${srcdir}/parabola.7 usr/share/man/man7/parabola.7 # # setup /usr/local hierarchy @@ -87,7 +99,7 @@ md5sums=('45940618da782cc391c59f88ab3333c3' '8a9042a2cedf6b6b47eb8973f14289cb' 'b8355d9d2782f424f4cedcf682651be0' 'ca716f853860199c1286e7939b2f2666' - 'e5d8323a4dbee7a6d0d2a19cbf4b819f' + '1745349eb24ed21b4cfaa6f423bddb76' '7bc65f234dfb6abf24e7c3b03e86f4ff' 'd41d8cd98f00b204e9800998ecf8427e' '0e145e18fea8fd190b30d45764f5707c' @@ -95,4 +107,6 @@ md5sums=('45940618da782cc391c59f88ab3333c3' '22518e922891f9359f971f4f5b4e793c' 'f95416882cef800edef08382a1176b7d' 'f3b6ae7db8adffaaa4bffc6099dcbd50' - 'a8a962370cd0128465d514e6a1f74130') + 'a8a962370cd0128465d514e6a1f74130' + '3674fcb22044d2946934e7826aa0c632' + '3807d07215d9116331fe1cf8feeaa0f8') 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/filesystem/locale.sh b/libre/filesystem/locale.sh new file mode 100644 index 000000000..5fd4174d5 --- /dev/null +++ b/libre/filesystem/locale.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +unset LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES \ + LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION + +if [ -n "$XDG_CONFIG_HOME" ] && [ -r "$XDG_CONFIG_HOME/locale.conf" ]; then + . "$XDG_CONFIG_HOME/locale.conf" +elif [ -n $HOME ] && [ -r $HOME/.config/locale.conf ]; then + . "$HOME/.config/locale.conf" +elif [ -r /etc/locale.conf ]; then + . /etc/locale.conf +elif [ -r /etc/rc.conf ]; then + LANG=$(. /etc/rc.conf 2>/dev/null; echo "$LOCALE") +fi + +export LANG="${LANG:-C}" +[ -n "$LC_CTYPE" ] && export LC_CTYPE +[ -n "$LC_NUMERIC" ] && export LC_NUMERIC +[ -n "$LC_TIME" ] && export LC_TIME +[ -n "$LC_COLLATE" ] && export LC_COLLATE +[ -n "$LC_MONETARY" ] && export LC_MONETARY +[ -n "$LC_MESSAGES" ] && export LC_MESSAGES +[ -n "$LC_PAPER" ] && export LC_PAPER +[ -n "$LC_NAME" ] && export LC_NAME +[ -n "$LC_ADDRESS" ] && export LC_ADDRESS +[ -n "$LC_TELEPHONE" ] && export LC_TELEPHONE +[ -n "$LC_MEASUREMENT" ] && export LC_MEASUREMENT +[ -n "$LC_IDENTIFICATION" ] && export LC_IDENTIFICATION diff --git a/libre/filesystem/parabola.7.txt b/libre/filesystem/parabola.7.txt new file mode 100644 index 000000000..f7da03147 --- /dev/null +++ b/libre/filesystem/parabola.7.txt @@ -0,0 +1,81 @@ +///// +vim:set ts=4 sw=4 syntax=asciidoc noet: +///// +parabola(7) +============ + +NAME +---- +parabola - basic configuration + +SYNOPSIS +-------- +Overview of the basic configuration of Parabola GNU/Linux-libre. + +DESCRIPTION +----------- +Parabola exposes the user to the system without hiding any details. This manpage gives a +brief overview of the configuration files that should be set up on a fresh install. + +INITSCRIPTS[[I]] +---------------- +The initscripts are configured in rc.conf. Here you configure what daemons to start on boot, what storage +technologies should be enabled and, optionally, a basic network setup. + +HOSTNAME[[H]] +------------- +The hostname of the machine should be set in /etc/hostname. Additionally, either /etc/hosts should be +configured accordingly, or nss-myhostname should be used. This is needed so the hostname can always +be resolved to the current machine, which is required by some programs. + +LOCALIZATION[[L]] +----------------- +Various locales may be enabled in /etc/locale.gen, and generated by locale-gen. The system-wide locale to be used +can be configured in /etc/locale.conf. These settings can be overridden on a par-user basis by keeping a +user-spcefic locale.conf in $HOME/.config/locale.conf. The user-specific file will take precedence if it exists. + +VIRTUAL CONSOLE[[V]] +-------------------- +The virtual console is configured in /etc/vconsole.conf. It allows you to set a font and a keyboard layout, among +other things. Note that these settings only apply to the console, and not if you use X. + +TIME[[T]] +--------- +The local timezone is configured by *symlinking* /etc/localtime to the correct zoneinfo file under +/usr/share/zoneinfo/. E.g., + + /etc/localtime -> /usr/share/zoneinfo/Europe/Paris + +The real-time clock, which keeps track of time when the computer is off, can be configured to either +be in UTC or in localtime in /etc/adjtime. The default is UTC. + +FILESYSTEMS[[F]] +---------------- +Filesystems are configured in /etc/fstab, and encryption mappings are configured in /etc/crypttab. + +INITRAMFS[[R]] +-------------- +The initramfs is generated by mkinitcpio, and can be configured in /etc/mkinitcpio.conf. + +PACKAGE MANAGER[[P]] +-------------------- +The package manager, pacman, is configured in /etc/pacman.conf. + +BOOTLOADER[[B]] +--------------- +GRUB's configuration is generated from /etc/default/grub by grub-mkconfig. Syslinux is configured in /boot/syslinux/syslinux.cfg + +MODULES[[M]] +------------ +Most modules should be loaded on-demand. Modules to be unconditionally loaded at boot can be specified in /etc/modules-load.d/, +and modules to be blacklisted from auto-loading can be configured in /etc/modprobe.d/. + +SEE ALSO +-------- + +rc.conf(5), hostname(5), hosts(5), nsswitch.conf(5), locale.conf(5), vconsole.conf(5), timezone(3), hwclock(8), fstab(5), crypttab(5), +mkinitcpio(8), pacman(8), pacman.conf(5), grub-mkconfig(8), syslinux(1), modules-load.d(5), modprobe.d(5) + +AUTHORS +------- +Written by Tom Gundersen. Rebranded for Parabola by Nicolás Reynolds and André Silva. 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/ghostscript-libre/PKGBUILD b/libre/ghostscript-libre/PKGBUILD index b89a3095b..656f49fb5 100644 --- a/libre/ghostscript-libre/PKGBUILD +++ b/libre/ghostscript-libre/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 149732 2012-02-09 20:34:33Z andyrtr $ +# $Id: PKGBUILD 165015 2012-08-08 19:40:10Z andyrtr $ # Maintainer: AndyRTR <andyrtr@archlinux.org> -# Maintainer (Parabola): xihh -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): Joshua Haase <hahj87@gmail.com> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=ghostscript pkgname=ghostscript-libre -pkgver=9.05 +pkgver=9.06 pkgrel=1 pkgdesc="An interpreter for the PostScript language without non-free files" arch=('i686' 'x86_64' 'mips64el') @@ -15,18 +15,19 @@ makedepends=('gtk2' 'gnutls') optdepends=('texlive-core: needed for dvipdf' 'gtk2: needed for gsx') conflicts=('ghostscript') -replaces=('ghostscript-lrpng' 'ghostscript') -provides=('ghostscript-lprng' "ghostscript=$pkgver") +replaces=('ghostscript') +provides=("ghostscript=$pkgver") url="http://www.ghostscript.com/" source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2) options=('!libtool' '!makeflags') -md5sums=('8bcef1f33ddf8a4d12b2cf8da385c191') +md5sums=('46f9ebe40dc52755287b30704270db11') build() { cd ${srcdir}/ghostscript-${pkgver} # delete non-free packages grep -l "are not altered" Resource/CMap/* | xargs rm -fv + grep -l "not be copied" Resource/CMap/* | xargs rm -fv # force it to use system-libs rm -rf jpeg libpng zlib jasper expat tiff lcms freetype diff --git a/libre/grub-legacy/040_all_grub-0.96-nxstack.patch b/libre/grub-legacy/040_all_grub-0.96-nxstack.patch new file mode 100644 index 000000000..121941c75 --- /dev/null +++ b/libre/grub-legacy/040_all_grub-0.96-nxstack.patch @@ -0,0 +1,623 @@ +Fix NX segfaulting on amd64. + +Patch by Peter Jones. + +http://lists.gnu.org/archive/html/bug-grub/2005-03/msg00011.html + +--- grub-0.97/grub/asmstub.c ++++ grub-0.97/grub/asmstub.c +@@ -42,6 +42,7 @@ + #include <sys/time.h> + #include <termios.h> + #include <signal.h> ++#include <sys/mman.h> + + #ifdef __linux__ + # include <sys/ioctl.h> /* ioctl */ +@@ -79,7 +80,7 @@ + struct apm_info apm_bios_info; + + /* Emulation requirements. */ +-char *grub_scratch_mem = 0; ++void *grub_scratch_mem = 0; + + struct geometry *disks = 0; + +@@ -103,14 +104,62 @@ + static unsigned int serial_speed; + #endif /* SIMULATE_SLOWNESS_OF_SERIAL */ + ++/* This allocates page-aligned storage of the specified size, which must be ++ * a multiple of the page size as determined by calling sysconf(_SC_PAGESIZE) ++ */ ++#ifdef __linux__ ++static void * ++grub_mmap_alloc(size_t len) ++{ ++ int mmap_flags = MAP_ANONYMOUS|MAP_PRIVATE|MAP_EXECUTABLE; ++ ++#ifdef MAP_32BIT ++ mmap_flags |= MAP_32BIT; ++#endif ++ /* Mark the simulated stack executable, as GCC uses stack trampolines ++ * to implement nested functions. */ ++ return mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, mmap_flags, -1, 0); ++} ++#else /* !defined(__linux__) */ ++static void * ++grub_mmap_alloc(size_t len) ++{ ++ int fd = 0, offset = 0, ret = 0; ++ void *pa = MAP_FAILED; ++ char template[] = "/tmp/grub_mmap_alloc_XXXXXX"; ++ errno_t e; ++ ++ fd = mkstemp(template); ++ if (fd < 0) ++ return pa; ++ ++ unlink(template); ++ ++ ret = ftruncate(fd, len); ++ if (ret < 0) ++ return pa; ++ ++ /* Mark the simulated stack executable, as GCC uses stack trampolines ++ * to implement nested functions. */ ++ pa = mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, ++ MAP_PRIVATE|MAP_EXECUTABLE, fd, offset); ++ ++ e = errno; ++ close(fd); ++ errno = e; ++ return pa; ++} ++#endif /* defined(__linux__) */ ++ + /* The main entry point into this mess. */ + int + grub_stage2 (void) + { + /* These need to be static, because they survive our stack transitions. */ + static int status = 0; +- static char *realstack; +- char *scratch, *simstack; ++ static void *realstack; ++ void *simstack_alloc_base, *simstack; ++ size_t simstack_size, page_size; + int i; + + /* We need a nested function so that we get a clean stack frame, +@@ -140,9 +189,35 @@ + } + + assert (grub_scratch_mem == 0); +- scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15); +- assert (scratch); +- grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4); ++ ++ /* Allocate enough pages for 0x100000 + EXTENDED_SIZE + 15, and ++ * make sure the memory is aligned to a multiple of the system's ++ * page size */ ++ page_size = sysconf (_SC_PAGESIZE); ++ simstack_size = ( 0x100000 + EXTENDED_MEMSIZE + 15); ++ if (simstack_size % page_size) ++ { ++ /* If we're not on a page_size boundary, round up to the next one */ ++ simstack_size &= ~(page_size-1); ++ simstack_size += page_size; ++ } ++ ++ /* Add one for a PROT_NONE boundary page at each end. */ ++ simstack_size += 2 * page_size; ++ ++ simstack_alloc_base = grub_mmap_alloc(simstack_size); ++ assert (simstack_alloc_base != MAP_FAILED); ++ ++ /* mark pages above and below our simstack area as innaccessable. ++ * If the implementation we're using doesn't support that, then the ++ * new protection modes are undefined. It's safe to just ignore ++ * them, though. It'd be nice if we knew that we'd get a SEGV for ++ * touching the area, but that's all. it'd be nice to have. */ ++ mprotect (simstack_alloc_base, page_size, PROT_NONE); ++ mprotect ((void *)((unsigned long)simstack_alloc_base + ++ simstack_size - page_size), page_size, PROT_NONE); ++ ++ grub_scratch_mem = (void *)((unsigned long)simstack_alloc_base + page_size); + + /* FIXME: simulate the memory holes using mprot, if available. */ + +@@ -215,7 +290,7 @@ + device_map = 0; + free (disks); + disks = 0; +- free (scratch); ++ munmap(simstack_alloc_base, simstack_size); + grub_scratch_mem = 0; + + if (serial_device) +--- grub-0.97/stage2/builtins.c ++++ grub-0.97/stage2/builtins.c +@@ -131,63 +131,98 @@ + } + + ++/* blocklist_read_helper nee disk_read_blocklist_func was a nested ++ * function, to which pointers were taken and exposed globally. Even ++ * in the GNU-C nested functions extension, they have local linkage, ++ * and aren't guaranteed to be accessable *at all* outside of their ++ * containing scope. ++ * ++ * Above and beyond all of that, the variables within blocklist_func_context ++ * are originally local variables, with local (not even static) linkage, ++ * from within blocklist_func. These were each referenced by ++ * disk_read_blocklist_func, which is only called from other functions ++ * through a globally scoped pointer. ++ * ++ * The documentation in GCC actually uses the words "all hell will break ++ * loose" to describe this scenario. ++ * ++ * Also, "start_sector" was also used uninitialized, but gcc doesn't warn ++ * about it (possibly because of the scoping madness?) ++ */ ++ ++static struct { ++ int start_sector; ++ int num_sectors; ++ int num_entries; ++ int last_length; ++} blocklist_func_context = { ++ .start_sector = 0, ++ .num_sectors = 0, ++ .num_entries = 0, ++ .last_length = 0 ++}; ++ ++/* Collect contiguous blocks into one entry as many as possible, ++ and print the blocklist notation on the screen. */ ++static void ++blocklist_read_helper (int sector, int offset, int length) ++{ ++ int *start_sector = &blocklist_func_context.start_sector; ++ int *num_sectors = &blocklist_func_context.num_sectors; ++ int *num_entries = &blocklist_func_context.num_entries; ++ int *last_length = &blocklist_func_context.last_length; ++ ++ if (*num_sectors > 0) ++ { ++ if (*start_sector + *num_sectors == sector ++ && offset == 0 && *last_length == SECTOR_SIZE) ++ { ++ *num_sectors++; ++ *last_length = length; ++ return; ++ } ++ else ++ { ++ if (*last_length == SECTOR_SIZE) ++ grub_printf ("%s%d+%d", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors); ++ else if (*num_sectors > 1) ++ grub_printf ("%s%d+%d,%d[0-%d]", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors-1, ++ *start_sector + *num_sectors-1 - part_start, ++ *last_length); ++ else ++ grub_printf ("%s%d[0-%d]", *num_entries ? "," : "", ++ *start_sector - part_start, *last_length); ++ *num_entries++; ++ *num_sectors = 0; ++ } ++ } ++ ++ if (offset > 0) ++ { ++ grub_printf("%s%d[%d-%d]", *num_entries ? "," : "", ++ sector-part_start, offset, offset+length); ++ *num_entries++; ++ } ++ else ++ { ++ *start_sector = sector; ++ *num_sectors = 1; ++ *last_length = length; ++ } ++} ++ + /* blocklist */ + static int + blocklist_func (char *arg, int flags) + { + char *dummy = (char *) RAW_ADDR (0x100000); +- int start_sector; +- int num_sectors = 0; +- int num_entries = 0; +- int last_length = 0; +- +- auto void disk_read_blocklist_func (int sector, int offset, int length); +- +- /* Collect contiguous blocks into one entry as many as possible, +- and print the blocklist notation on the screen. */ +- auto void disk_read_blocklist_func (int sector, int offset, int length) +- { +- if (num_sectors > 0) +- { +- if (start_sector + num_sectors == sector +- && offset == 0 && last_length == SECTOR_SIZE) +- { +- num_sectors++; +- last_length = length; +- return; +- } +- else +- { +- if (last_length == SECTOR_SIZE) +- grub_printf ("%s%d+%d", num_entries ? "," : "", +- start_sector - part_start, num_sectors); +- else if (num_sectors > 1) +- grub_printf ("%s%d+%d,%d[0-%d]", num_entries ? "," : "", +- start_sector - part_start, num_sectors-1, +- start_sector + num_sectors-1 - part_start, +- last_length); +- else +- grub_printf ("%s%d[0-%d]", num_entries ? "," : "", +- start_sector - part_start, last_length); +- num_entries++; +- num_sectors = 0; +- } +- } +- +- if (offset > 0) +- { +- grub_printf("%s%d[%d-%d]", num_entries ? "," : "", +- sector-part_start, offset, offset+length); +- num_entries++; +- } +- else +- { +- start_sector = sector; +- num_sectors = 1; +- last_length = length; +- } +- } + ++ int *start_sector = &blocklist_func_context.start_sector; ++ int *num_sectors = &blocklist_func_context.num_sectors; ++ int *num_entries = &blocklist_func_context.num_entries; ++ + /* Open the file. */ + if (! grub_open (arg)) + return 1; +@@ -204,15 +241,15 @@ + grub_printf (")"); + + /* Read in the whole file to DUMMY. */ +- disk_read_hook = disk_read_blocklist_func; ++ disk_read_hook = blocklist_read_helper; + if (! grub_read (dummy, -1)) + goto fail; + + /* The last entry may not be printed yet. Don't check if it is a + * full sector, since it doesn't matter if we read too much. */ +- if (num_sectors > 0) +- grub_printf ("%s%d+%d", num_entries ? "," : "", +- start_sector - part_start, num_sectors); ++ if (*num_sectors > 0) ++ grub_printf ("%s%d+%d", *num_entries ? "," : "", ++ *start_sector - part_start, *num_sectors); + + grub_printf ("\n"); + +@@ -1868,6 +1905,77 @@ + + + /* install */ ++static struct { ++ int saved_sector; ++ int installaddr; ++ int installlist; ++ char *stage2_first_buffer; ++} install_func_context = { ++ .saved_sector = 0, ++ .installaddr = 0, ++ .installlist = 0, ++ .stage2_first_buffer = NULL, ++}; ++ ++/* Save the first sector of Stage2 in STAGE2_SECT. */ ++/* Formerly disk_read_savesect_func with local scope inside install_func */ ++static void ++install_savesect_helper(int sector, int offset, int length) ++{ ++ if (debug) ++ printf ("[%d]", sector); ++ ++ /* ReiserFS has files which sometimes contain data not aligned ++ on sector boundaries. Returning an error is better than ++ silently failing. */ ++ if (offset != 0 || length != SECTOR_SIZE) ++ errnum = ERR_UNALIGNED; ++ ++ install_func_context.saved_sector = sector; ++} ++ ++/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and INSTALLSECT. */ ++/* Formerly disk_read_blocklist_func with local scope inside install_func */ ++static void ++install_blocklist_helper (int sector, int offset, int length) ++{ ++ int *installaddr = &install_func_context.installaddr; ++ int *installlist = &install_func_context.installlist; ++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; ++ /* Was the last sector full? */ ++ static int last_length = SECTOR_SIZE; ++ ++ if (debug) ++ printf("[%d]", sector); ++ ++ if (offset != 0 || last_length != SECTOR_SIZE) ++ { ++ /* We found a non-sector-aligned data block. */ ++ errnum = ERR_UNALIGNED; ++ return; ++ } ++ ++ last_length = length; ++ ++ if (*((unsigned long *) (*installlist - 4)) ++ + *((unsigned short *) *installlist) != sector ++ || *installlist == (int) *stage2_first_buffer + SECTOR_SIZE + 4) ++ { ++ *installlist -= 8; ++ ++ if (*((unsigned long *) (*installlist - 8))) ++ errnum = ERR_WONT_FIT; ++ else ++ { ++ *((unsigned short *) (*installlist + 2)) = (*installaddr >> 4); ++ *((unsigned long *) (*installlist - 4)) = sector; ++ } ++ } ++ ++ *((unsigned short *) *installlist) += 1; ++ *installaddr += 512; ++} ++ + static int + install_func (char *arg, int flags) + { +@@ -1875,8 +1983,12 @@ + char *stage1_buffer = (char *) RAW_ADDR (0x100000); + char *stage2_buffer = stage1_buffer + SECTOR_SIZE; + char *old_sect = stage2_buffer + SECTOR_SIZE; +- char *stage2_first_buffer = old_sect + SECTOR_SIZE; +- char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; ++ /* stage2_first_buffer used to be defined as: ++ * char *stage2_first_buffer = old_sect + SECTOR_SIZE; */ ++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer; ++ /* and stage2_second_buffer was: ++ * char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; */ ++ char *stage2_second_buffer = old_sect + SECTOR_SIZE + SECTOR_SIZE; + /* XXX: Probably SECTOR_SIZE is reasonable. */ + char *config_filename = stage2_second_buffer + SECTOR_SIZE; + char *dummy = config_filename + SECTOR_SIZE; +@@ -1885,10 +1997,11 @@ + int src_drive, src_partition, src_part_start; + int i; + struct geometry dest_geom, src_geom; +- int saved_sector; ++ int *saved_sector = &install_func_context.saved_sector; + int stage2_first_sector, stage2_second_sector; + char *ptr; +- int installaddr, installlist; ++ int *installaddr = &install_func_context.installaddr; ++ int *installlist = &install_func_context.installlist; + /* Point to the location of the name of a configuration file in Stage 2. */ + char *config_file_location; + /* If FILE is a Stage 1.5? */ +@@ -1897,67 +2010,13 @@ + int is_open = 0; + /* If LBA is forced? */ + int is_force_lba = 0; +- /* Was the last sector full? */ +- int last_length = SECTOR_SIZE; +- ++ ++ *stage2_first_buffer = old_sect + SECTOR_SIZE; + #ifdef GRUB_UTIL + /* If the Stage 2 is in a partition mounted by an OS, this will store + the filename under the OS. */ + char *stage2_os_file = 0; + #endif /* GRUB_UTIL */ +- +- auto void disk_read_savesect_func (int sector, int offset, int length); +- auto void disk_read_blocklist_func (int sector, int offset, int length); +- +- /* Save the first sector of Stage2 in STAGE2_SECT. */ +- auto void disk_read_savesect_func (int sector, int offset, int length) +- { +- if (debug) +- printf ("[%d]", sector); +- +- /* ReiserFS has files which sometimes contain data not aligned +- on sector boundaries. Returning an error is better than +- silently failing. */ +- if (offset != 0 || length != SECTOR_SIZE) +- errnum = ERR_UNALIGNED; +- +- saved_sector = sector; +- } +- +- /* Write SECTOR to INSTALLLIST, and update INSTALLADDR and +- INSTALLSECT. */ +- auto void disk_read_blocklist_func (int sector, int offset, int length) +- { +- if (debug) +- printf("[%d]", sector); +- +- if (offset != 0 || last_length != SECTOR_SIZE) +- { +- /* We found a non-sector-aligned data block. */ +- errnum = ERR_UNALIGNED; +- return; +- } +- +- last_length = length; +- +- if (*((unsigned long *) (installlist - 4)) +- + *((unsigned short *) installlist) != sector +- || installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4) +- { +- installlist -= 8; +- +- if (*((unsigned long *) (installlist - 8))) +- errnum = ERR_WONT_FIT; +- else +- { +- *((unsigned short *) (installlist + 2)) = (installaddr >> 4); +- *((unsigned long *) (installlist - 4)) = sector; +- } +- } +- +- *((unsigned short *) installlist) += 1; +- installaddr += 512; +- } + + /* First, check the GNU-style long option. */ + while (1) +@@ -1987,10 +2049,10 @@ + addr = skip_to (0, file); + + /* Get the installation address. */ +- if (! safe_parse_maxint (&addr, &installaddr)) ++ if (! safe_parse_maxint (&addr, installaddr)) + { + /* ADDR is not specified. */ +- installaddr = 0; ++ *installaddr = 0; + ptr = addr; + errnum = 0; + } +@@ -2084,17 +2146,17 @@ + = (dest_drive & BIOS_FLAG_FIXED_DISK); + + /* Read the first sector of Stage 2. */ +- disk_read_hook = disk_read_savesect_func; +- if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) ++ disk_read_hook = install_savesect_helper; ++ if (grub_read (*stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +- stage2_first_sector = saved_sector; ++ stage2_first_sector = *saved_sector; + + /* Read the second sector of Stage 2. */ + if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +- stage2_second_sector = saved_sector; ++ stage2_second_sector = *saved_sector; + + /* Check for the version of Stage 2. */ + if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS)) +@@ -2110,27 +2172,27 @@ + + /* If INSTALLADDR is not specified explicitly in the command-line, + determine it by the Stage 2 id. */ +- if (! installaddr) ++ if (! *installaddr) + { + if (! is_stage1_5) + /* Stage 2. */ +- installaddr = 0x8000; ++ *installaddr = 0x8000; + else + /* Stage 1.5. */ +- installaddr = 0x2000; ++ *installaddr = 0x2000; + } + + *((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR)) + = stage2_first_sector; + *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS)) +- = installaddr; ++ = *installaddr; + *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT)) +- = installaddr >> 4; ++ = *installaddr >> 4; + +- i = (int) stage2_first_buffer + SECTOR_SIZE - 4; ++ i = (int) *stage2_first_buffer + SECTOR_SIZE - 4; + while (*((unsigned long *) i)) + { +- if (i < (int) stage2_first_buffer ++ if (i < (int) *stage2_first_buffer + || (*((int *) (i - 4)) & 0x80000000) + || *((unsigned short *) i) >= 0xA00 + || *((short *) (i + 2)) == 0) +@@ -2144,13 +2206,13 @@ + i -= 8; + } + +- installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4; +- installaddr += SECTOR_SIZE; ++ *installlist = (int) *stage2_first_buffer + SECTOR_SIZE + 4; ++ *installaddr += SECTOR_SIZE; + + /* Read the whole of Stage2 except for the first sector. */ + grub_seek (SECTOR_SIZE); + +- disk_read_hook = disk_read_blocklist_func; ++ disk_read_hook = install_blocklist_helper; + if (! grub_read (dummy, -1)) + goto fail; + +@@ -2233,7 +2295,7 @@ + /* Skip the first sector. */ + grub_seek (SECTOR_SIZE); + +- disk_read_hook = disk_read_savesect_func; ++ disk_read_hook = install_savesect_helper; + if (grub_read (stage2_buffer, SECTOR_SIZE) != SECTOR_SIZE) + goto fail; + +@@ -2303,7 +2365,7 @@ + else + #endif /* GRUB_UTIL */ + { +- if (! devwrite (saved_sector - part_start, 1, stage2_buffer)) ++ if (! devwrite (*saved_sector - part_start, 1, stage2_buffer)) + goto fail; + } + } +@@ -2325,7 +2387,7 @@ + goto fail; + } + +- if (fwrite (stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) ++ if (fwrite (*stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE) + { + fclose (fp); + errnum = ERR_WRITE; +@@ -2352,7 +2414,7 @@ + goto fail; + + if (! devwrite (stage2_first_sector - src_part_start, 1, +- stage2_first_buffer)) ++ *stage2_first_buffer)) + goto fail; + + if (! devwrite (stage2_second_sector - src_part_start, 1, +--- grub-0.97/stage2/shared.h ++++ grub-0.97/stage2/shared.h +@@ -36,8 +36,8 @@ + + /* Maybe redirect memory requests through grub_scratch_mem. */ + #ifdef GRUB_UTIL +-extern char *grub_scratch_mem; +-# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem) ++extern void *grub_scratch_mem; ++# define RAW_ADDR(x) ((x) + (unsigned long) grub_scratch_mem) + # define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4) + #else + # define RAW_ADDR(x) (x) diff --git a/libre/grub-legacy/05-grub-0.97-initrdaddr.diff b/libre/grub-legacy/05-grub-0.97-initrdaddr.diff new file mode 100644 index 000000000..ccf5f3e54 --- /dev/null +++ b/libre/grub-legacy/05-grub-0.97-initrdaddr.diff @@ -0,0 +1,16 @@ +--- grub-0.96/stage2/boot.c ++++ grub-0.96/stage2/boot.c +@@ -824,8 +824,11 @@ + moveto = (mbi.mem_upper + 0x400) << 10; + + moveto = (moveto - len) & 0xfffff000; +- max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203 +- ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS); ++ max_addr = LINUX_INITRD_MAX_ADDRESS; ++ if (lh->header == LINUX_MAGIC_SIGNATURE && ++ lh->version >= 0x0203 && ++ lh->initrd_addr_max < max_addr) ++ max_addr = lh->initrd_addr_max; + if (moveto + len >= max_addr) + moveto = (max_addr - len) & 0xfffff000; + diff --git a/libre/grub-legacy/PKGBUILD b/libre/grub-legacy/PKGBUILD new file mode 100644 index 000000000..d63a33ec9 --- /dev/null +++ b/libre/grub-legacy/PKGBUILD @@ -0,0 +1,107 @@ +# $Id: PKGBUILD 141999 2011-11-03 21:16:38Z ronald $ +# Maintainer: Ronald van Haren <ronald.archlinux.org> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Jorge López <jorginho@adinet.com.uy> + +pkgname=grub +pkgver=0.97 +pkgrel=21.4 +pkgdesc="A GNU multiboot boot loader (Parabola rebranded)" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.gnu.org/software/grub/" +groups=('base') +depends=('ncurses' 'diffutils' 'sed') +optdepends=('xfsprogs: freezing of xfs /boot in install-grub script') +source=(ftp://alpha.gnu.org/gnu/grub/grub-$pkgver.tar.gz + menu.lst + install-grub + 040_all_grub-0.96-nxstack.patch + 05-grub-0.97-initrdaddr.diff + i2o.patch + special-devices.patch + more-raid.patch + intelmac.patch + grub-inode-size.patch + ext4.patch + grub-0.97-ldflags-objcopy-remove-build-id.patch) +backup=('boot/grub/menu.lst') +install=grub.install +sha1sums=('2580626c4579bd99336d3af4482c346c95dac4fb' + 'e13bf0f91510fd6bb9451e6eb1b2a6e4a03e8b5f' + '3e23bfee50285c8c7b9ef9ec07964310278b1e09' + '157b81dbad3576536b08642242accfa1aeb093a9' + 'adbb4685c98797ffb4dc83561ec75698991dddbd' + 'f2e0dff29a7c8a45e90aa07298a1b2a9a9d29afc' + 'c5e2c94ed0e759590b9eb38c9d979f075d19d7c0' + '45fe668a3779664fb292591f426976b6c784d6c8' + '066d7ab1ae442f88e94c9e4f1867ac6682965d06' + '0436aa6fa0b6f768289172f983a3f4b69384629e' + 'a36f34e51efed540f1ddafd78e9c9f6d83e4c8d4' + '61c4b58d2eaa3c1561d8e9d8fc41341ce8882869') + +#set destination architecture here +#DESTARCH="i686" +DESTARCH="x86_64" + + +build() { + cd $srcdir/$pkgname-$pkgver + fgrep -rlZ pkglib_DATA --include Makefile.am . | xargs -0 sed -i 's/pkglib_DATA/pkgdata_DATA/g' + + # optimizations break the build -- disable them + # adding special devices to grub, patches are from fedora + patch -Np1 -i ../special-devices.patch + patch -Np1 -i ../i2o.patch + patch -Np1 -i ../more-raid.patch + patch -Np1 -i ../intelmac.patch + # Add support for bigger inode size to e2fs_stage1_5 + patch -Np1 -i ../grub-inode-size.patch + # Add ext4 support + # http://www.mail-archive.com/bug-grub@gnu.org/msg11458.html + patch -Np1 -i ../ext4.patch + # binutils fix + patch -Np1 -i ../grub-0.97-ldflags-objcopy-remove-build-id.patch + + sed -e'/^AC_PROG_CC/ a\AM_PROG_CC_C_O\ ' -i "${srcdir}/${pkgname}-${pkgver}/configure.ac" + sed -e'/^AC_PROG_CC/ a\AM_PROG_AS\ ' -i "${srcdir}/${pkgname}-${pkgver}/configure.ac" + + ## recreate ./configure script with the required changes in LDFLAGS and objcopy + aclocal + autoconf + autoreconf + automake + + #arch64 fixes for static build + if [ "$CARCH" = "x86_64" ]; then ## correcting problems for new wersion of autotools + + echo "this package has to be built on i686, won't compile on x86_64" + sleep 5 + else + if [ "$DESTARCH" = "x86_64" ]; then + # patch from gentoo for fixing a segfault + patch -Np1 -i ../040_all_grub-0.96-nxstack.patch + # patch from frugalware to make it boot when more than 2GB ram installed + patch -Np1 -i ../05-grub-0.97-initrdaddr.diff + CFLAGS="-static -fno-strict-aliasing" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \ + --mandir=/usr/share/man --infodir=/usr/share/info + else + CFLAGS="-fno-strict-aliasing" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \ + --mandir=/usr/share/man --infodir=/usr/share/info + fi + fi +} + +package() { + cd $srcdir/$pkgname-$pkgver + + CFLAGS= make + make DESTDIR=$pkgdir install + install -D -m644 ../menu.lst $pkgdir/boot/grub/menu.lst + install -D -m755 ../install-grub $pkgdir/sbin/install-grub + + if [ "$DESTARCH" = "x86_64" ]; then + # fool makepkg into building a x86_64 package + export CARCH="x86_64" + fi +} diff --git a/libre/grub-legacy/ext4.patch b/libre/grub-legacy/ext4.patch new file mode 100644 index 000000000..8a2f9bdb0 --- /dev/null +++ b/libre/grub-legacy/ext4.patch @@ -0,0 +1,263 @@ +diff -ruNp grub-0.97/stage2/fsys_ext2fs.c grub-0.97-patch/stage2/fsys_ext2fs.c +--- grub-0.97/stage2/fsys_ext2fs.c 2004-08-08 20:19:18.000000000 +0200 ++++ grub-0.97-patch/stage2/fsys_ext2fs.c 2007-12-29 16:25:19.000000000 ++0100 +@@ -51,6 +51,9 @@ typedef unsigned int __u32; + #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) + #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) + ++/* Inode flags */ ++#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ ++ + /* include/linux/ext2_fs.h */ + struct ext2_super_block + { +@@ -191,6 +194,42 @@ struct ext2_dir_entry + #define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ + ~EXT2_DIR_ROUND) + ++/* linux/ext4_fs_extents.h */ ++/* ++ * This is the extent on-disk structure. ++ * It's used at the bottom of the tree. ++ */ ++struct ext4_extent { ++ __u32 ee_block; /* first logical block extent covers */ ++ __u16 ee_len; /* number of blocks covered by extent */ ++ __u16 ee_start_hi; /* high 16 bits of physical block */ ++ __u32 ee_start; /* low 32 bits of physical block */ ++}; ++ ++/* ++ * This is index on-disk structure. ++ * It's used at all the levels except the bottom. ++ */ ++struct ext4_extent_idx { ++ __u32 ei_block; /* index covers logical blocks from 'block' */ ++ __u32 ei_leaf; /* pointer to the physical block of the next * ++ * level. leaf or next index could be there */ ++ __u16 ei_leaf_hi; /* high 16 bits of physical block */ ++ __u16 ei_unused; ++}; ++ ++/* ++ * Each block (leaves and indexes), even inode-stored has header. ++ */ ++struct ext4_extent_header { ++ __u16 eh_magic; /* probably will support different formats */ ++ __u16 eh_entries; /* number of valid entries */ ++ __u16 eh_max; /* capacity of store in entries */ ++ __u16 eh_depth; /* has tree real underlying blocks? */ ++ __u32 eh_generation; /* generation of the tree */ ++}; ++ ++#define EXT4_EXT_MAGIC 0xf30a + + /* ext2/super.c */ + #define log2(n) ffz(~(n)) +@@ -279,6 +318,26 @@ ext2_rdfsb (int fsblock, int buffer) + EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) buffer); + } + ++/* Walk through extents index tree to find the good leaf */ ++static struct ext4_extent_header * ++ext4_recurse_extent_index(struct ext4_extent_header *extent_block, int logical_block) ++{ ++ int i; ++ struct ext4_extent_idx *index = (struct ext4_extent_idx *) (extent_block + 1); ++ if (extent_block->eh_magic != EXT4_EXT_MAGIC) ++ return NULL; ++ if (extent_block->eh_depth == 0) ++ return extent_block; ++ for (i = 0; i < extent_block->eh_entries; i++) ++ { ++ if (logical_block < index[i].ei_block) ++ break; ++ } ++ if (i == 0 || !ext2_rdfsb(index[i-1].ei_leaf, DATABLOCK1)) ++ return NULL; ++ return (ext4_recurse_extent_index((struct ext4_extent_header *) DATABLOCK1, logical_block)); ++} ++ + /* from + ext2/inode.c:ext2_bmap() + */ +--- grub-0.97/stage2/fsys_ext2fs.c~ 2008-12-28 20:19:00.000000000 +0100 ++++ grub-0.97/stage2/fsys_ext2fs.c 2008-12-28 20:19:00.000000000 +0100 +@@ -366,83 +366,106 @@ + } + printf ("logical block %d\n", logical_block); + #endif /* E2DEBUG */ +- +- /* if it is directly pointed to by the inode, return that physical addr */ +- if (logical_block < EXT2_NDIR_BLOCKS) +- { +-#ifdef E2DEBUG +- printf ("returning %d\n", (unsigned char *) (INODE->i_block[logical_block])); +- printf ("returning %d\n", INODE->i_block[logical_block]); +-#endif /* E2DEBUG */ +- return INODE->i_block[logical_block]; +- } +- /* else */ +- logical_block -= EXT2_NDIR_BLOCKS; +- /* try the indirect block */ +- if (logical_block < EXT2_ADDR_PER_BLOCK (SUPERBLOCK)) ++ /* standard ext2 inode */ ++ if (!(INODE->i_flags & EXT4_EXTENTS_FL)) + { +- if (mapblock1 != 1 +- && !ext2_rdfsb (INODE->i_block[EXT2_IND_BLOCK], DATABLOCK1)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- mapblock1 = 1; +- return ((__u32 *) DATABLOCK1)[logical_block]; +- } +- /* else */ +- logical_block -= EXT2_ADDR_PER_BLOCK (SUPERBLOCK); +- /* now try the double indirect block */ +- if (logical_block < (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2))) +- { +- int bnum; +- if (mapblock1 != 2 +- && !ext2_rdfsb (INODE->i_block[EXT2_DIND_BLOCK], DATABLOCK1)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- mapblock1 = 2; +- if ((bnum = (((__u32 *) DATABLOCK1) +- [logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)])) +- != mapblock2 +- && !ext2_rdfsb (bnum, DATABLOCK2)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- mapblock2 = bnum; ++ /* if it is directly pointed to by the inode, return that physical addr */ ++ if (logical_block < EXT2_NDIR_BLOCKS) ++ { ++#ifdef E2DEBUG ++ printf ("returning %d\n", (unsigned char *) (INODE->i_block[logical_block])); ++ printf ("returning %d\n", INODE->i_block[logical_block]); ++#endif /* E2DEBUG */ ++ return INODE->i_block[logical_block]; ++ } ++ /* else */ ++ logical_block -= EXT2_NDIR_BLOCKS; ++ /* try the indirect block */ ++ if (logical_block < EXT2_ADDR_PER_BLOCK (SUPERBLOCK)) ++ { ++ if (mapblock1 != 1 ++ && !ext2_rdfsb (INODE->i_block[EXT2_IND_BLOCK], DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock1 = 1; ++ return ((__u32 *) DATABLOCK1)[logical_block]; ++ } ++ /* else */ ++ logical_block -= EXT2_ADDR_PER_BLOCK (SUPERBLOCK); ++ /* now try the double indirect block */ ++ if (logical_block < (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2))) ++ { ++ int bnum; ++ if (mapblock1 != 2 ++ && !ext2_rdfsb (INODE->i_block[EXT2_DIND_BLOCK], DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock1 = 2; ++ if ((bnum = (((__u32 *) DATABLOCK1) ++ [logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)])) ++ != mapblock2 ++ && !ext2_rdfsb (bnum, DATABLOCK2)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock2 = bnum; ++ return ((__u32 *) DATABLOCK2) ++ [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; ++ } ++ /* else */ ++ mapblock2 = -1; ++ logical_block -= (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2)); ++ if (mapblock1 != 3 ++ && !ext2_rdfsb (INODE->i_block[EXT2_TIND_BLOCK], DATABLOCK1)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ mapblock1 = 3; ++ if (!ext2_rdfsb (((__u32 *) DATABLOCK1) ++ [logical_block >> (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) ++ * 2)], ++ DATABLOCK2)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ if (!ext2_rdfsb (((__u32 *) DATABLOCK2) ++ [(logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)) ++ & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)], ++ DATABLOCK2)) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } + return ((__u32 *) DATABLOCK2) +- [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; +- } +- /* else */ +- mapblock2 = -1; +- logical_block -= (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2)); +- if (mapblock1 != 3 +- && !ext2_rdfsb (INODE->i_block[EXT2_TIND_BLOCK], DATABLOCK1)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; ++ [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; + } +- mapblock1 = 3; +- if (!ext2_rdfsb (((__u32 *) DATABLOCK1) +- [logical_block >> (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) +- * 2)], +- DATABLOCK2)) +- { +- errnum = ERR_FSYS_CORRUPT; +- return -1; +- } +- if (!ext2_rdfsb (((__u32 *) DATABLOCK2) +- [(logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)) +- & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)], +- DATABLOCK2)) ++ /* inode is in extents format */ ++ else + { ++ int i; ++ struct ext4_extent_header *extent_hdr = ext4_recurse_extent_index((struct ext4_extent_header *) INODE->i_block, logical_block); ++ struct ext4_extent *extent = (struct ext4_extent *) (extent_hdr + 1); ++ if ( extent_hdr == NULL || extent_hdr->eh_magic != EXT4_EXT_MAGIC) ++ { ++ errnum = ERR_FSYS_CORRUPT; ++ return -1; ++ } ++ for (i = 0; i<extent_hdr->eh_entries; i++) ++ { ++ if (extent[i].ee_block <= logical_block && logical_block < extent[i].ee_block + extent[i].ee_len && !(extent[i].ee_len>>15)) ++ return (logical_block - extent[i].ee_block + extent[i].ee_start); ++ } ++ /* We should not arrive here */ + errnum = ERR_FSYS_CORRUPT; + return -1; + } +- return ((__u32 *) DATABLOCK2) +- [logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)]; + } + + /* preconditions: all preconds of ext2fs_block_map */ diff --git a/libre/grub-legacy/grub-0.97-gpt.patch b/libre/grub-legacy/grub-0.97-gpt.patch new file mode 100644 index 000000000..7b1a55cd8 --- /dev/null +++ b/libre/grub-legacy/grub-0.97-gpt.patch @@ -0,0 +1,315 @@ +diff -ruBbd --unidirectional-new-file grub-0.96/stage2/builtins.c grub-0.96-patched/stage2/builtins.c +--- grub-0.96/stage2/builtins.c 2004-06-20 09:33:04.000000000 -0400 ++++ grub-0.96-patched/stage2/builtins.c 2007-01-04 13:56:06.000000000 -0500 +@@ -1229,14 +1229,15 @@ + for (drive = 0x80; drive < 0x88; drive++) + { + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int type, entry; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int type, entry, gpt_count, gpt_size; + char buf[SECTOR_SIZE]; + + current_drive = drive; + while (next_partition (drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, buf)) ++ &ext_offset, &gpt_offset, ++ &gpt_count, &gpt_size, buf)) + { + if (type != PC_SLICE_TYPE_NONE + && ! IS_PC_SLICE_TYPE_BSD (type) +@@ -2806,8 +2807,8 @@ + { + int new_type; + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int entry, type; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int entry, type, gpt_count, gpt_size; + char mbr[512]; + + /* Get the drive and the partition. */ +@@ -2844,7 +2845,14 @@ + /* Look for the partition. */ + while (next_partition (current_drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, mbr)) ++ &ext_offset, &gpt_offset, &gpt_count, &gpt_size, mbr)) ++ /* The partition may not be a GPT partition. */ ++ if (gpt_offset != 0) ++ { ++ errnum = ERR_BAD_ARGUMENT; ++ return 1; ++ } ++ + { + if (part == current_partition) + { +diff -ruBbd --unidirectional-new-file grub-0.96/stage2/disk_io.c grub-0.96-patched/stage2/disk_io.c +--- grub-0.96/stage2/disk_io.c 2004-05-23 12:35:24.000000000 -0400 ++++ grub-0.96-patched/stage2/disk_io.c 2007-01-04 14:01:08.000000000 -0500 +@@ -21,6 +21,7 @@ + + #include <shared.h> + #include <filesys.h> ++#include <gpt.h> + + #ifdef SUPPORT_NETBOOT + # define GRUB 1 +@@ -502,8 +503,8 @@ + set_partition_hidden_flag (int hidden) + { + unsigned long part = 0xFFFFFF; +- unsigned long start, len, offset, ext_offset; +- int entry, type; ++ unsigned long start, len, offset, ext_offset, gpt_offset; ++ int entry, type, gpt_count, gpt_size; + char mbr[512]; + + /* The drive must be a hard disk. */ +@@ -524,7 +525,14 @@ + /* Look for the partition. */ + while (next_partition (current_drive, 0xFFFFFF, &part, &type, + &start, &len, &offset, &entry, +- &ext_offset, mbr)) ++ &ext_offset, &gpt_offset, &gpt_count, &gpt_size, mbr)) ++ /* The partition may not be a GPT partition. */ ++ if (gpt_offset != 0) ++ { ++ errnum = ERR_BAD_ARGUMENT; ++ return 1; ++ } ++ + { + if (part == current_partition) + { +@@ -577,11 +585,14 @@ + unsigned long *partition, int *type, + unsigned long *start, unsigned long *len, + unsigned long *offset, int *entry, +- unsigned long *ext_offset, char *buf) ++ unsigned long *ext_offset, ++ unsigned long *gpt_offset, int *gpt_count, ++ int *gpt_size, char *buf) + { + /* Forward declarations. */ + auto int next_bsd_partition (void); + auto int next_pc_slice (void); ++ auto int next_gpt_slice(void); + + /* Get next BSD partition in current PC slice. */ + int next_bsd_partition (void) +@@ -666,6 +677,40 @@ + return 0; + } + ++ /* If this is a GPT partition table, read it as such. */ ++ if (*entry == -1 && *offset == 0 && PC_SLICE_TYPE (buf, 0) == PC_SLICE_TYPE_GPT) ++ { ++ struct grub_gpt_header *hdr = (struct grub_gpt_header *) buf; ++ ++ /* Read in the GPT Partition table header. */ ++ if (! rawread (drive, 1, 0, SECTOR_SIZE, buf)) ++ return 0; ++ ++ if (hdr->magic == GPT_HEADER_MAGIC && hdr->version == 0x10000) ++ { ++ /* Let gpt_offset point to the first entry in the GPT ++ partition table. This can also be used by callers of ++ next_partition to determine if a entry comes from a ++ GPT partition table or not. */ ++ *gpt_offset = hdr->partitions; ++ *gpt_count = hdr->maxpart; ++ *gpt_size = hdr->partentry_size; ++ ++ return next_gpt_slice(); ++ } ++ else ++ { ++ /* This is not a valid header for a GPT partition table. ++ Re-read the MBR or the boot sector of the extended ++ partition. */ ++ if (! rawread (drive, *offset, 0, SECTOR_SIZE, buf)) ++ return 0; ++ } ++ } ++ ++ /* Not a GPT partition. */ ++ *gpt_offset = 0; ++ + /* Increase the entry number. */ + (*entry)++; + +@@ -710,6 +755,43 @@ + return 1; + } + ++ /* Get the next GPT slice. */ ++ int next_gpt_slice (void) ++ { ++ struct grub_gpt_partentry *gptentry = (struct grub_gpt_partentry *) buf; ++ /* Make GPT partitions show up as PC slices. */ ++ int pc_slice_no = (*partition & 0xFF0000) >> 16; ++ ++ /* If this is the first time... */ ++ if (pc_slice_no == 0xFF) ++ { ++ pc_slice_no = -1; ++ *entry = -1; ++ } ++ ++ do { ++ (*entry)++; ++ ++ if (*entry >= *gpt_count) ++ { ++ errnum = ERR_NO_PART; ++ return 0; ++ } ++ /* Read in the GPT Partition table entry. */ ++ if (! rawread (drive, (*gpt_offset) + GPT_ENTRY_SECTOR (*gpt_size, *entry), GPT_ENTRY_INDEX (*gpt_size, *entry), *gpt_size, buf)) ++ return 0; ++ } while (! (gptentry->type1 && gptentry->type2)); ++ ++ pc_slice_no++; ++ *start = gptentry->start; ++ *len = gptentry->end - gptentry->start + 1; ++ *type = PC_SLICE_TYPE_EXT2FS; ++ *entry = pc_slice_no; ++ *partition = (*entry << 16) | 0xFFFF; ++ ++ return 1; ++ } ++ + /* Start the body of this function. */ + + #ifndef STAGE1_5 +@@ -717,6 +799,9 @@ + return 0; + #endif + ++ if (*partition != 0xFFFFFF && *gpt_offset != 0) ++ return next_gpt_slice (); ++ + /* If previous partition is a BSD partition or a PC slice which + contains BSD partitions... */ + if ((*partition != 0xFFFFFF && IS_PC_SLICE_TYPE_BSD (*type & 0xff)) +@@ -755,6 +840,9 @@ + unsigned long dest_partition = current_partition; + unsigned long part_offset; + unsigned long ext_offset; ++ unsigned long gpt_offset; ++ int gpt_count; ++ int gpt_size; + int entry; + char buf[SECTOR_SIZE]; + int bsd_part, pc_slice; +@@ -766,7 +854,8 @@ + int ret = next_partition (current_drive, dest_partition, + ¤t_partition, ¤t_slice, + &part_start, &part_length, +- &part_offset, &entry, &ext_offset, buf); ++ &part_offset, &entry, &ext_offset, ++ &gpt_offset, &gpt_count, &gpt_size, buf); + bsd_part = (current_partition >> 8) & 0xFF; + pc_slice = current_partition >> 16; + return ret; +diff -ruBbd --unidirectional-new-file grub-0.96/stage2/gpt.h grub-0.96-patched/stage2/gpt.h +--- grub-0.96/stage2/gpt.h 1969-12-31 19:00:00.000000000 -0500 ++++ grub-0.96-patched/stage2/gpt.h 2007-01-04 13:52:14.000000000 -0500 +@@ -0,0 +1,68 @@ ++/* ++ * GRUB -- GRand Unified Bootloader ++ * Copyright (C) 2002,2005,2006 Free Software Foundation, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ */ ++ ++#ifndef _GPT_H ++#define _GPT_H ++ ++typedef signed char grub_int8_t; ++typedef signed short grub_int16_t; ++typedef signed int grub_int32_t; ++typedef signed long long int grub_int64_t; ++typedef unsigned char grub_uint8_t; ++typedef unsigned short grub_uint16_t; ++typedef unsigned int grub_uint32_t; ++typedef unsigned long long int grub_uint64_t; ++ ++struct grub_gpt_header ++{ ++ grub_uint64_t magic; ++ grub_uint32_t version; ++ grub_uint32_t headersize; ++ grub_uint32_t crc32; ++ grub_uint32_t unused1; ++ grub_uint64_t primary; ++ grub_uint64_t backup; ++ grub_uint64_t start; ++ grub_uint64_t end; ++ grub_uint8_t guid[16]; ++ grub_uint64_t partitions; ++ grub_uint32_t maxpart; ++ grub_uint32_t partentry_size; ++ grub_uint32_t partentry_crc32; ++} __attribute__ ((packed)); ++ ++struct grub_gpt_partentry ++{ ++ grub_uint64_t type1; ++ grub_uint64_t type2; ++ grub_uint8_t guid[16]; ++ grub_uint64_t start; ++ grub_uint64_t end; ++ grub_uint8_t attrib; ++ char name[72]; ++} __attribute__ ((packed)); ++ ++#define GPT_HEADER_MAGIC 0x5452415020494645UL ++ ++#define GPT_ENTRY_SECTOR(size,entry) \ ++ ((((entry) * (size) + 1) & ~(SECTOR_SIZE - 1)) >> SECTOR_BITS) ++#define GPT_ENTRY_INDEX(size,entry) \ ++ ((((entry) * (size) + 1) & (SECTOR_SIZE - 1)) - 1) ++ ++#endif /* _GPT_H */ +diff -ruBbd --unidirectional-new-file grub-0.96/stage2/pc_slice.h grub-0.96-patched/stage2/pc_slice.h +--- grub-0.96/stage2/pc_slice.h 2003-07-09 07:45:53.000000000 -0400 ++++ grub-0.96-patched/stage2/pc_slice.h 2007-01-04 13:52:14.000000000 -0500 +@@ -115,6 +115,7 @@ + #define PC_SLICE_TYPE_LINUX_EXTENDED 0x85 + #define PC_SLICE_TYPE_VSTAFS 0x9e + #define PC_SLICE_TYPE_DELL_UTIL 0xde ++#define PC_SLICE_TYPE_GPT 0xee + #define PC_SLICE_TYPE_LINUX_RAID 0xfd + + +diff -ruBbd --unidirectional-new-file grub-0.96/stage2/shared.h grub-0.96-patched/stage2/shared.h +--- grub-0.96/stage2/shared.h 2004-06-19 12:40:09.000000000 -0400 ++++ grub-0.96-patched/stage2/shared.h 2007-01-04 13:52:15.000000000 -0500 +@@ -934,7 +934,9 @@ + unsigned long *partition, int *type, + unsigned long *start, unsigned long *len, + unsigned long *offset, int *entry, +- unsigned long *ext_offset, char *buf); ++ unsigned long *ext_offset, ++ unsigned long *gpt_offset, int *gpt_count, ++ int *gpt_size, char *buf); + + /* Sets device to the one represented by the SAVED_* parameters. */ + int make_saved_active (void); diff --git a/libre/grub-legacy/grub-0.97-ldflags-objcopy-remove-build-id.patch b/libre/grub-legacy/grub-0.97-ldflags-objcopy-remove-build-id.patch new file mode 100644 index 000000000..2b7cc32d0 --- /dev/null +++ b/libre/grub-legacy/grub-0.97-ldflags-objcopy-remove-build-id.patch @@ -0,0 +1,196 @@ +diff --git a/Makefile.in b/Makefile.in +index 6652366..ba058eb 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -112,6 +112,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +diff --git a/acinclude.m4 b/acinclude.m4 +index 368839c..32b3fa6 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -57,7 +57,7 @@ else + fi + grub_cv_prog_objcopy_absolute=yes + for link_addr in 2000 8000 7C00; do +- if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec]); then : ++ if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr -Wl,--build-id=none conftest.o -o conftest.exec]); then : + else + AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr]) + fi +diff --git a/configure.ac b/configure.ac +index bb9e1d9..9ac5c9f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -115,6 +115,9 @@ if test "x$ac_cv_prog_gcc" = xyes; then + fi + fi + ++LOADER_LDFLAGS="-Wl,--build-id=none" ++AC_SUBST(LOADER_LDFLAGS) ++ + AC_SUBST(STAGE1_CFLAGS) + AC_SUBST(STAGE2_CFLAGS) + AC_SUBST(GRUB_CFLAGS) +diff --git a/docs/Makefile.in b/docs/Makefile.in +index 3e2de4b..7b2c94d 100644 +--- a/docs/Makefile.in ++++ b/docs/Makefile.in +@@ -131,6 +131,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +diff --git a/grub/Makefile.in b/grub/Makefile.in +index 136c38f..7c23ebe 100644 +--- a/grub/Makefile.in ++++ b/grub/Makefile.in +@@ -108,6 +108,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +diff --git a/lib/Makefile.in b/lib/Makefile.in +index 3dae206..449e126 100644 +--- a/lib/Makefile.in ++++ b/lib/Makefile.in +@@ -107,6 +107,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +diff --git a/netboot/Makefile.in b/netboot/Makefile.in +index 75ac299..0275768 100644 +--- a/netboot/Makefile.in ++++ b/netboot/Makefile.in +@@ -108,6 +108,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +diff --git a/stage1/Makefile.am b/stage1/Makefile.am +index 0afc285..3d83356 100644 +--- a/stage1/Makefile.am ++++ b/stage1/Makefile.am +@@ -5,7 +5,7 @@ CLEANFILES = $(nodist_pkglib_DATA) + + # We can't use builtins or standard includes. + AM_CCASFLAGS = $(STAGE1_CFLAGS) -fno-builtin -nostdinc +-LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 ++LDFLAGS = $(LOADER_LDFLAGS) -nostdlib -Wl,-N,-Ttext,7C00 + + noinst_PROGRAMS = stage1.exec + stage1_exec_SOURCES = stage1.S stage1.h +diff --git a/stage1/Makefile.in b/stage1/Makefile.in +index 7134bdf..ee4477f 100644 +--- a/stage1/Makefile.in ++++ b/stage1/Makefile.in +@@ -110,9 +110,10 @@ INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 ++LDFLAGS = $(LOADER_LDFLAGS) -nostdlib -Wl,-N,-Ttext,7C00 + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +diff --git a/stage2/Makefile.am b/stage2/Makefile.am +index f8e6d42..ff6f347 100644 +--- a/stage2/Makefile.am ++++ b/stage2/Makefile.am +@@ -55,11 +55,11 @@ noinst_PROGRAMS = pre_stage2.exec start.exec start_eltorito.exec \ + endif + MOSTLYCLEANFILES = $(noinst_PROGRAMS) + +-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 +-START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 +-NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 +-PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 ++PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 $(LOADER_LDFLAGS) ++START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 $(LOADER_LDFLAGS) ++NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 $(LOADER_LDFLAGS) ++PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) ++START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) + + if NETBOOT_SUPPORT + NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 +@@ -82,7 +82,7 @@ endif + STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ + $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) + +-STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 ++STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 $(LOADER_LDFLAGS) + STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 + + # For stage2 target. +diff --git a/stage2/Makefile.in b/stage2/Makefile.in +index d0062bd..88b2038 100644 +--- a/stage2/Makefile.in ++++ b/stage2/Makefile.in +@@ -355,6 +355,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +@@ -468,11 +469,11 @@ libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \ + @DISKLESS_SUPPORT_FALSE@noinst_DATA = pre_stage2 start start_eltorito + @DISKLESS_SUPPORT_TRUE@noinst_DATA = pre_stage2 start start_eltorito nbloader pxeloader diskless + MOSTLYCLEANFILES = $(noinst_PROGRAMS) +-PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 +-START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 +-NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 +-PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 +-START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 ++PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 $(LOADER_LDFLAGS) ++START_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 $(LOADER_LDFLAGS) ++NBLOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,0 $(LOADER_LDFLAGS) ++PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) ++START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 $(LOADER_LDFLAGS) + @NETBOOT_SUPPORT_FALSE@NETBOOT_FLAGS = + @NETBOOT_SUPPORT_TRUE@NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1 + @SERIAL_SUPPORT_FALSE@SERIAL_FLAGS = +@@ -482,7 +483,7 @@ START_ELTORITO_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 + STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \ + $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) + +-STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 ++STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 $(LOADER_LDFLAGS) + STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 + + # For stage2 target. +diff --git a/util/Makefile.in b/util/Makefile.in +index e700cf7..cd3bf51 100644 +--- a/util/Makefile.in ++++ b/util/Makefile.in +@@ -113,6 +113,7 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ ++LOADER_LDFLAGS = @LOADER_LDFLAGS@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ diff --git a/libre/grub-legacy/grub-inode-size.patch b/libre/grub-legacy/grub-inode-size.patch new file mode 100644 index 000000000..f5ceb110b --- /dev/null +++ b/libre/grub-legacy/grub-inode-size.patch @@ -0,0 +1,100 @@ +diff -Naur grub-0.97-800/stage2/fsys_ext2fs.c grub-0.97-810/stage2/fsys_ext2fs.c +--- grub-0.97-800/stage2/fsys_ext2fs.c 2008-07-21 00:40:21.668879475 -0600 ++++ grub-0.97-810/stage2/fsys_ext2fs.c 2008-07-21 01:01:11.063953773 -0600 +@@ -79,7 +79,52 @@ + __u32 s_rev_level; /* Revision level */ + __u16 s_def_resuid; /* Default uid for reserved blocks */ + __u16 s_def_resgid; /* Default gid for reserved blocks */ +- __u32 s_reserved[235]; /* Padding to the end of the block */ ++ /* ++ * These fields are for EXT2_DYNAMIC_REV superblocks only. ++ * ++ * Note: the difference between the compatible feature set and ++ * the incompatible feature set is that if there is a bit set ++ * in the incompatible feature set that the kernel doesn't ++ * know about, it should refuse to mount the filesystem. ++ * ++ * e2fsck's requirements are more strict; if it doesn't know ++ * about a feature in either the compatible or incompatible ++ * feature set, it must abort and not try to meddle with ++ * things it doesn't understand... ++ */ ++ __u32 s_first_ino; /* First non-reserved inode */ ++ __u16 s_inode_size; /* size of inode structure */ ++ __u16 s_block_group_nr; /* block group # of this superblock */ ++ __u32 s_feature_compat; /* compatible feature set */ ++ __u32 s_feature_incompat; /* incompatible feature set */ ++ __u32 s_feature_ro_compat; /* readonly-compatible feature set */ ++ __u8 s_uuid[16]; /* 128-bit uuid for volume */ ++ char s_volume_name[16]; /* volume name */ ++ char s_last_mounted[64]; /* directory where last mounted */ ++ __u32 s_algorithm_usage_bitmap; /* For compression */ ++ /* ++ * Performance hints. Directory preallocation should only ++ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. ++ */ ++ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ ++ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ ++ __u16 s_reserved_gdt_blocks;/* Per group table for online growth */ ++ /* ++ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. ++ */ ++ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ ++ __u32 s_journal_inum; /* inode number of journal file */ ++ __u32 s_journal_dev; /* device number of journal file */ ++ __u32 s_last_orphan; /* start of list of inodes to delete */ ++ __u32 s_hash_seed[4]; /* HTREE hash seed */ ++ __u8 s_def_hash_version; /* Default hash version to use */ ++ __u8 s_jnl_backup_type; /* Default type of journal backup */ ++ __u16 s_reserved_word_pad; ++ __u32 s_default_mount_opts; ++ __u32 s_first_meta_bg; /* First metablock group */ ++ __u32 s_mkfs_time; /* When the filesystem was created */ ++ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ ++ __u32 s_reserved[172]; /* Padding to the end of the block */ + }; + + struct ext2_group_desc +@@ -218,6 +263,14 @@ + #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32)) + #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s))) + ++#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ ++#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ ++#define EXT2_GOOD_OLD_INODE_SIZE 128 ++#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ ++ EXT2_GOOD_OLD_INODE_SIZE : \ ++ (s)->s_inode_size) ++#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) ++ + /* linux/ext2_fs.h */ + #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) + /* kind of from ext2/super.c */ +@@ -553,7 +606,7 @@ + gdp = GROUP_DESC; + ino_blk = gdp[desc].bg_inode_table + + (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group)) +- >> log2 (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode))); ++ >> log2 (EXT2_INODES_PER_BLOCK (SUPERBLOCK))); + #ifdef E2DEBUG + printf ("inode table fsblock=%d\n", ino_blk); + #endif /* E2DEBUG */ +@@ -565,13 +618,12 @@ + /* reset indirect blocks! */ + mapblock2 = mapblock1 = -1; + +- raw_inode = INODE + +- ((current_ino - 1) +- & (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode) - 1)); ++ raw_inode = (struct ext2_inode *)((char *)INODE + ++ ((current_ino - 1) & (EXT2_INODES_PER_BLOCK (SUPERBLOCK) - 1)) * ++ EXT2_INODE_SIZE (SUPERBLOCK)); + #ifdef E2DEBUG + printf ("ipb=%d, sizeof(inode)=%d\n", +- (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode)), +- sizeof (struct ext2_inode)); ++ EXT2_INODES_PER_BLOCK (SUPERBLOCK), EXT2_INODE_SIZE (SUPERBLOCK)); + printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode); + printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE); + for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode; + diff --git a/libre/grub-legacy/grub.install b/libre/grub-legacy/grub.install new file mode 100644 index 000000000..c1f077d59 --- /dev/null +++ b/libre/grub-legacy/grub.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(grub.info multiboot.info) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + done +} diff --git a/libre/grub-legacy/i2o.patch b/libre/grub-legacy/i2o.patch new file mode 100644 index 000000000..2af846c90 --- /dev/null +++ b/libre/grub-legacy/i2o.patch @@ -0,0 +1,45 @@ +Only in grub-0.94/docs: grub.info +Only in grub-0.94/docs: multiboot.info +diff -ur grub-0.94/lib/device.c grub-0.94.new/lib/device.c +--- grub-0.94/lib/device.c 2004-05-07 04:50:36.375238696 +0200 ++++ grub-0.94.new/lib/device.c 2004-05-07 04:48:57.611253104 +0200 +@@ -419,6 +419,12 @@ + { + sprintf (name, "/dev/rd/c%dd%d", controller, drive); + } ++ ++static void ++get_i2o_disk_name (char *name, int unit) ++{ ++ sprintf (name, "/dev/i2o/hd%c", unit + 'a'); ++} + #endif + + /* Check if DEVICE can be read. If an error occurs, return zero, +@@ -789,6 +795,26 @@ + } + } + } ++ ++ /* I2O disks. */ ++ for (i = 0; i < 8; i++) ++ { ++ char name[16]; ++ ++ get_i2o_disk_name (name, i); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ + #endif /* __linux__ */ + + /* OK, close the device map file if opened. */ diff --git a/libre/grub-legacy/install-grub b/libre/grub-legacy/install-grub new file mode 100644 index 000000000..affc9c38a --- /dev/null +++ b/libre/grub-legacy/install-grub @@ -0,0 +1,204 @@ +#!/bin/bash + +# +# This is a little helper script that tries to convert linux-style device +# names to grub-style. It's not very smart, so it +# probably won't work for more complicated setups. +# +# If it doesn't work for you, try installing grub manually: +# +# # mkdir -p /boot/grub +# # cp /usr/lib/grub/i386-pc/* /boot/grub/ +# +# Then start up the 'grub' shell and run something like the following: +# +# grub> root (hd0,0) +# grub> setup (hd0) +# +# The "root" line should point to the partition your kernel is located on, +# /boot if you have a separate boot partition, otherwise your root (/). +# +# The "setup" line tells grub which disc/partition to install the +# bootloader to. In the example above, it will install to the MBR of the +# primary master hard drive. +# + +usage() { + echo "usage: install-grub <install_device> [boot_device]" + echo + echo "where <install_device> is the device where Grub will be installed" + echo "and [boot_device] is the partition that contains the /boot" + echo "directory (auto-detected if omitted)" + echo + echo "examples: install-grub /dev/hda" + echo " install-grub /dev/hda /dev/hda1" + echo + exit 0 +} + +## new install-grub, code was taken from setup script +ROOTDEV=${1} +PART_ROOT=${2} + +if [ "${ROOTDEV}" = "" ]; then + usage +fi +if [ "${PART_ROOT}" = "" ]; then + PART_ROOT=$(mount | grep "on /boot type" | cut -d' ' -f 1) +fi +if [ "$PART_ROOT" = "" ]; then + PART_ROOT=$(mount | grep "on / type" | cut -d' ' -f 1) +fi +if [ "${PART_ROOT}" = "" ]; then + echo "error: could not determine BOOT_DEVICE, please specify manually" >&2 + exit 1 +fi + + +get_grub_map() { + [ -e /tmp/dev.map ] && rm /tmp/dev.map + /sbin/grub --no-floppy --device-map /tmp/dev.map >/tmp/grub.log 2>&1 <<EOF +quit +EOF +} + +mapdev() { + partition_flag=0 + device_found=0 + devs=$(cat /tmp/dev.map | grep -v fd | sed 's/ *\t/ /' | sed ':a;$!N;$!ba;s/\n/ /g') + linuxdevice=$(echo $1 | cut -b1-8) + if [ "$(echo ${1} | egrep '[0-9]$')" ]; then + # /dev/hdXY + pnum=$(echo ${1} | cut -b9-) + pnum=$((${pnum}-1)) + partition_flag=1 + fi + for dev in ${devs}; do + if [ "(" = $(echo ${dev} | cut -b1) ]; then + grubdevice="${dev}" + else + if [ "${dev}" = "${linuxdevice}" ]; then + device_found=1 + break + fi + fi + done + if [ "${device_found}" = "1" ]; then + if [ "${partition_flag}" = "0" ]; then + echo "${grubdevice}" + else + grubdevice_stringlen=${#grubdevice} + let grubdevice_stringlen-- + grubdevice=$(echo $grubdevice | cut -b1-$grubdevice_stringlen) + echo "${grubdevice},${pnum})" + fi + else + echo " DEVICE NOT FOUND" + fi +} + +dogrub() { + get_grub_map + if [ ! -f /boot/grub/menu.lst ]; then + echo "Error: Couldn't find /boot/grub/menu.lst. Is GRUB installed?" + exit 1 + fi + # try to auto-configure GRUB... + if [ "${PART_ROOT}" != "" -a "$S_GRUB" != "1" ]; then + grubdev=$(mapdev ${PART_ROOT}) + # look for a separately-mounted /boot partition + bootdev=$(mount | grep /boot | cut -d' ' -f 1) + if [ "${grubdev}" != "" -o "${bootdev}" != "" ]; then + cp /boot/grub/menu.lst /tmp/.menu.lst + # remove the default entries by truncating the file at our little tag (#-*) + head -n $(cat /tmp/.menu.lst | grep -n '#-\*' | cut -d: -f 1) /tmp/.menu.lst >/boot/grub/menu.lst + rm -f /tmp/.menu.lst + + for kernel in /boot/vmlinuz-linux* /boot/vmlinuz26-*; do + if [ ${kernel} == "/boot/vmlinuz-linux*" ] || [ ${kernel} == "/boot/vmlinuz26-*" ] ; then + echo > /dev/null + else + VMLINUZ=$( echo ${kernel} | cut -c 7- ) + + if [ "$( echo ${VMLINUZ} | cut -c -13 )" = "vmlinuz-linux" ]; then # new naming scheme for linux > 3.0 + extension=$( echo ${VMLINUZ} | cut -c 14- ) + INITRAMFS_BASENAME=initramfs-linux${extension} + else # old naming scheme for lts kernel + extension=$( echo ${VMLINUZ} | cut -c 10- ) + INITRAMFS_BASENAME=kernel26${extension} + fi + + echo "" >>/boot/grub/menu.lst + echo "# (0) Parabola GNU/Linux-libre" >>/boot/grub/menu.lst + echo "title Parabola GNU/Linux-libre - ${VMLINUZ}" >>/boot/grub/menu.lst + subdir= + if [ "${bootdev}" != "" ]; then + grubdev=$(mapdev ${bootdev}) + else + subdir="/boot" + fi + echo "root ${grubdev}" >>/boot/grub/menu.lst + echo "kernel ${subdir}/${VMLINUZ} root=${PART_ROOT} ro" >>/boot/grub/menu.lst + echo "initrd ${subdir}/${INITRAMFS_BASENAME}.img" >>/boot/grub/menu.lst + echo "" >>/boot/grub/menu.lst + + # adding fallback/full image + echo "# (1) Parabola GNU/Linux-libre" >>/boot/grub/menu.lst + echo "title Parabola GNU/Linux-libre Fallback - ${VMLINUZ}" >>/boot/grub/menu.lst + echo "root ${grubdev}" >>/boot/grub/menu.lst + echo "kernel ${subdir}/${VMLINUZ} root=${PART_ROOT} ro" >>/boot/grub/menu.lst + echo "initrd ${subdir}/${INITRAMFS_BASENAME}-fallback.img" >>/boot/grub/menu.lst + echo "" >>/boot/grub/menu.lst + fi + done + fi + fi + + echo "Installing the GRUB bootloader..." + cp -a /usr/lib/grub/i386-pc/* /boot/grub/ + sync + + # freeze xfs filesystems to enable grub installation on xfs filesystems + if [ -x /usr/sbin/xfs_freeze ]; then + [ "$(stat -fLc %T /boot)" == "xfs" ] && /usr/sbin/xfs_freeze -f /boot > /dev/null 2>&1 + [ "$(stat -fLc %T /)" == "xfs" ] && /usr/sbin/xfs_freeze -f / > /dev/null 2>&1 + fi + + # look for a separately-mounted /boot partition + bootpart=$(mount | grep /boot | cut -d' ' -f 1) + if [ "${bootpart}" = "" ]; then + bootpart=${PART_ROOT} + fi + bootpart=$(mapdev ${bootpart}) + bootdev=$(mapdev ${ROOTDEV}) + if [ "${bootpart}" = "" ]; then + echo "Error: Missing/Invalid root device: ${bootpart}" + exit 1 + fi + + echo ${bootpart} + echo ${bootdev} + /sbin/grub --no-floppy --batch >/tmp/grub.log 2>&1 <<EOF +root ${bootpart} +setup ${bootdev} +quit +EOF + cat /tmp/grub.log + + # unfreeze xfs filesystems + if [ -x /usr/sbin/xfs_freeze ]; then + [ "$(stat -fLc %T /boot)" == "xfs" ] && /usr/sbin/xfs_freeze -u /boot > /dev/null 2>&1 + [ "$(stat -fLc %T /)" == "xfs" ] && /usr/sbin/xfs_freeze -u / > /dev/null 2>&1 + fi + if grep "Error [0-9]*: " /tmp/grub.log >/dev/null; then + echo "Error installing GRUB. (see /tmp/grub.log for output)" + exit 1 + fi + echo "GRUB was successfully installed." + + rm -f /tmp/grub.log + + exit 0 +} + +dogrub diff --git a/libre/grub-legacy/intelmac.patch b/libre/grub-legacy/intelmac.patch new file mode 100644 index 000000000..a3fabc733 --- /dev/null +++ b/libre/grub-legacy/intelmac.patch @@ -0,0 +1,67 @@ +--- grub-0.97.orig/stage2/asm.S 2004-06-19 18:55:22.000000000 +0200 ++++ grub-0.97/stage2/asm.S 2006-04-21 11:10:52.000000000 +0200 +@@ -1651,7 +1651,29 @@ + jnz 3f + ret + +-3: /* use keyboard controller */ ++3: /* ++ * try to switch gateA20 using PORT92, the "Fast A20 and Init" ++ * register ++ */ ++ mov $0x92, %dx ++ inb %dx, %al ++ /* skip the port92 code if it's unimplemented (read returns 0xff) */ ++ cmpb $0xff, %al ++ jz 6f ++ ++ /* set or clear bit1, the ALT_A20_GATE bit */ ++ movb 4(%esp), %ah ++ testb %ah, %ah ++ jz 4f ++ orb $2, %al ++ jmp 5f ++4: and $0xfd, %al ++ ++ /* clear the INIT_NOW bit don't accidently reset the machine */ ++5: and $0xfe, %al ++ outb %al, %dx ++ ++6: /* use keyboard controller */ + pushl %eax + + call gloop1 +@@ -1661,9 +1683,12 @@ + + gloopint1: + inb $K_STATUS ++ cmpb $0xff, %al ++ jz gloopint1_done + andb $K_IBUF_FUL, %al + jnz gloopint1 + ++gloopint1_done: + movb $KB_OUTPUT_MASK, %al + cmpb $0, 0x8(%esp) + jz gdoit +@@ -1684,6 +1709,8 @@ + + gloop1: + inb $K_STATUS ++ cmpb $0xff, %al ++ jz gloop2ret + andb $K_IBUF_FUL, %al + jnz gloop1 + +@@ -1991,6 +2018,11 @@ + ENTRY(console_getkey) + push %ebp + ++wait_for_key: ++ call EXT_C(console_checkkey) ++ incl %eax ++ jz wait_for_key ++ + call EXT_C(prot_to_real) + .code16 + diff --git a/libre/grub-legacy/menu.lst b/libre/grub-legacy/menu.lst new file mode 100644 index 000000000..f405baa91 --- /dev/null +++ b/libre/grub-legacy/menu.lst @@ -0,0 +1,43 @@ +# Config file for GRUB - The GNU GRand Unified Bootloader +# /boot/grub/menu.lst + +# DEVICE NAME CONVERSIONS +# +# Linux Grub +# ------------------------- +# /dev/fd0 (fd0) +# /dev/sda (hd0) +# /dev/sdb2 (hd1,1) +# /dev/sda3 (hd0,2) +# + +# FRAMEBUFFER RESOLUTION SETTINGS +# +-------------------------------------------------+ +# | 640x480 800x600 1024x768 1280x1024 +# ----+-------------------------------------------- +# 256 | 0x301=769 0x303=771 0x305=773 0x307=775 +# 32K | 0x310=784 0x313=787 0x316=790 0x319=793 +# 64K | 0x311=785 0x314=788 0x317=791 0x31A=794 +# 16M | 0x312=786 0x315=789 0x318=792 0x31B=795 +# +-------------------------------------------------+ +# for more details and different resolutions see +# https://wiki.archlinux.org/index.php/GRUB#Framebuffer_resolution + +# general configuration: +timeout 5 +default 0 +color magenta/black white/magenta + +# boot sections follow +# each is implicitly numbered from 0 in the order of appearance below +# +# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line. +# +#-* + +# (0) Parabola GNU/Linux-libre +title Parabola GNU/Linux-libre [/boot/vmlinuz-linux-libre] +root (hd0,0) +kernel /vmlinuz-linux-libre root=/dev/sda3 ro +initrd /initramfs-linux-libre.img + diff --git a/libre/grub-legacy/more-raid.patch b/libre/grub-legacy/more-raid.patch new file mode 100644 index 000000000..39db23474 --- /dev/null +++ b/libre/grub-legacy/more-raid.patch @@ -0,0 +1,100 @@ +--- grub-0.95/lib/device.c.moreraid 2004-11-30 17:09:36.736099360 -0500 ++++ grub-0.95/lib/device.c 2004-11-30 17:12:17.319686944 -0500 +@@ -544,6 +544,17 @@ + } + + static void ++get_cciss_disk_name (char * name, int controller, int drive) ++{ ++ sprintf (name, "/dev/cciss/c%dd%d", controller, drive); ++} ++ ++static void ++get_cpqarray_disk_name (char * name, int controller, int drive) ++{ ++ sprintf (name, "/dev/ida/c%dd%d", controller, drive); ++} ++static void + get_ataraid_disk_name (char *name, int unit) + { + sprintf (name, "/dev/ataraid/d%c", unit + '0'); +@@ -920,7 +931,7 @@ + + for (controller = 0; controller < 8; controller++) + { +- for (drive = 0; drive < 15; drive++) ++ for (drive = 0; drive < 32; drive++) + { + char name[24]; + +@@ -940,6 +951,70 @@ + } + } + #endif /* __linux__ */ ++ ++#ifdef __linux__ ++ /* This is for cciss - we have ++ /dev/cciss/c<controller>d<logical drive>p<partition>. ++ ++ cciss driver currently supports up to 8 controllers, 16 logical ++ drives, and 7 partitions. */ ++ { ++ int controller, drive; ++ ++ for (controller = 0; controller < 8; controller++) ++ { ++ for (drive = 0; drive < 16; drive++) ++ { ++ char name[24]; ++ ++ get_cciss_disk_name (name, controller, drive); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ } ++ } ++#endif /* __linux__ */ ++ ++#ifdef __linux__ ++ /* This is for cpqarray - we have ++ /dev/ida/c<controller>d<logical drive>p<partition>. ++ ++ cpqarray driver currently supports up to 8 controllers, 16 logical ++ drives, and 15 partitions. */ ++ { ++ int controller, drive; ++ ++ for (controller = 0; controller < 8; controller++) ++ { ++ for (drive = 0; drive < 15; drive++) ++ { ++ char name[24]; ++ ++ get_cpqarray_disk_name (name, controller, drive); ++ if (check_device (name)) ++ { ++ (*map)[num_hd + 0x80] = strdup (name); ++ assert ((*map)[num_hd + 0x80]); ++ ++ /* If the device map file is opened, write the map. */ ++ if (fp) ++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name); ++ ++ num_hd++; ++ } ++ } ++ } ++ } ++#endif /* __linux__ */ + + /* OK, close the device map file if opened. */ + if (fp) diff --git a/libre/grub-legacy/rePKGBUILD b/libre/grub-legacy/rePKGBUILD new file mode 100644 index 000000000..a73289fb5 --- /dev/null +++ b/libre/grub-legacy/rePKGBUILD @@ -0,0 +1,37 @@ +# Maintainer: Nicolas Reynolds <fauno@kiwwwi.com.ar> +# Contributor: André Silva <emulatorman@lavabit.com> +source PKGBUILD +CARCH=i686 +unset build package md5sums source +_repo=core +source=(PKGBUILD + #http://mirrors.kernel.org/archlinux/${_repo}/os/${CARCH}/${pkgname%}-$pkgver-$pkgrel-$CARCH$PKGEXT + http://mirrors.kernel.org/archlinux/${_repo}/os/${CARCH}/${pkgname%}-$pkgver-21-$CARCH$PKGEXT + # files for pkg modifications + menu.lst + install-grub + ) +options=(!strip) + +build() { + cd "${srcdir}/" + #rm PKGBUILD .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-$pkgrel-$CARCH$PKGEXT + rm PKGBUILD .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-21-$CARCH$PKGEXT + # put actions for package modifications below this line + + rm -v boot/grub/menu.lst sbin/install-grub +} + +package() { + cd ${srcdir} + cp -a ./* ${pkgdir} + + install -D -m644 menu.lst $pkgdir/boot/grub/menu.lst + install -D -m755 install-grub $pkgdir/sbin/install-grub + + rm -v menu.lst install-grub ${pkgdir}/menu.lst ${pkgdir}/install-grub + +} + + +# vim:set ts=2 sw=2 et: diff --git a/libre/grub-legacy/special-devices.patch b/libre/grub-legacy/special-devices.patch new file mode 100644 index 000000000..894f3e887 --- /dev/null +++ b/libre/grub-legacy/special-devices.patch @@ -0,0 +1,18 @@ +--- grub-0.93/lib/device.c.raid 2002-05-20 05:53:46.000000000 -0400 ++++ grub-0.93/lib/device.c 2002-12-28 23:24:10.000000000 -0500 +@@ -689,7 +689,14 @@ + if (strcmp (dev + strlen(dev) - 5, "/disc") == 0) + strcpy (dev + strlen(dev) - 5, "/part"); + } +- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1); ++ ++ sprintf (dev + strlen(dev), "%s%d", ++ /* Compaq smart and others */ ++ (strncmp(dev, "/dev/ida/", 9) == 0 || ++ strncmp(dev, "/dev/ataraid/", 13) == 0 || ++ strncmp(dev, "/dev/cciss/", 11) == 0 || ++ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "", ++ ((partition >> 16) & 0xFF) + 1); + + /* Open the partition. */ + fd = open (dev, O_RDWR); diff --git a/libre/grub/05_archtheme b/libre/grub/05_archtheme new file mode 100644 index 000000000..4d1b6fb20 --- /dev/null +++ b/libre/grub/05_archtheme @@ -0,0 +1,6 @@ +#!/bin/bash -e + +cat << EOF +set menu_color_normal=light-blue/black +set menu_color_highlight=light-cyan/blue +EOF diff --git a/libre/grub/20_memtest86+ b/libre/grub/20_memtest86+ new file mode 100644 index 000000000..1d3096f6b --- /dev/null +++ b/libre/grub/20_memtest86+ @@ -0,0 +1,29 @@ +#! /bin/sh -e +######################################################## +# This script generates a memtest86+ entry on grub.cfg # +# if memtest is installed on the system. # +######################################################## + +prefix="/usr" +exec_prefix="${prefix}" + +datarootdir="/usr/share" +datadir="${datarootdir}" + +. "${datadir}/grub/grub-mkconfig_lib" + +MEMTEST86_IMAGE="/boot/memtest86+/memtest.bin" +CLASS="--class memtest86 --class gnu --class tool" + +if [ -e $MEMTEST86_IMAGE ] && is_path_readable_by_grub $MEMTEST86_IMAGE; then + # image exists, create menu entry + echo "Found memtest86+ image: $MEMTEST86_IMAGE" >&2 + cat << EOF +menuentry "Memory test (memtest86+)" $CLASS { +EOF + prepare_grub_to_access_device `${grub_probe} --target=device $MEMTEST86_IMAGE` | sed -e "s/^/ /" + cat << EOF + linux16 (\$root)`make_system_path_relative_to_its_root $MEMTEST86_IMAGE` +} +EOF +fi diff --git a/libre/grub/PKGBUILD b/libre/grub/PKGBUILD index ace2f8986..8a1c01434 100644 --- a/libre/grub/PKGBUILD +++ b/libre/grub/PKGBUILD @@ -1,107 +1,250 @@ -# $Id: PKGBUILD 141999 2011-11-03 21:16:38Z ronald $ # Maintainer: Ronald van Haren <ronald.archlinux.org> +# Contributor: Keshav P R <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> -# Maintainer (Parabola): Jorge López <jorginho@adinet.com.uy> - -pkgname=grub -pkgver=0.97 -pkgrel=21.4 -pkgdesc="A GNU multiboot boot loader (Parabola rebranded)" -arch=('i686' 'x86_64' 'mips64el') -license=('GPL') -url="http://www.gnu.org/software/grub/" -groups=('base') -depends=('ncurses' 'diffutils' 'sed') -optdepends=('xfsprogs: freezing of xfs /boot in install-grub script') -source=(ftp://alpha.gnu.org/gnu/grub/grub-$pkgver.tar.gz - menu.lst - install-grub - 040_all_grub-0.96-nxstack.patch - 05-grub-0.97-initrdaddr.diff - i2o.patch - special-devices.patch - more-raid.patch - intelmac.patch - grub-inode-size.patch - ext4.patch - grub-0.97-ldflags-objcopy-remove-build-id.patch) -backup=('boot/grub/menu.lst') -install=grub.install -sha1sums=('2580626c4579bd99336d3af4482c346c95dac4fb' - 'e13bf0f91510fd6bb9451e6eb1b2a6e4a03e8b5f' - '3e23bfee50285c8c7b9ef9ec07964310278b1e09' - '157b81dbad3576536b08642242accfa1aeb093a9' - 'adbb4685c98797ffb4dc83561ec75698991dddbd' - 'f2e0dff29a7c8a45e90aa07298a1b2a9a9d29afc' - 'c5e2c94ed0e759590b9eb38c9d979f075d19d7c0' - '45fe668a3779664fb292591f426976b6c784d6c8' - '066d7ab1ae442f88e94c9e4f1867ac6682965d06' - '0436aa6fa0b6f768289172f983a3f4b69384629e' - 'a36f34e51efed540f1ddafd78e9c9f6d83e4c8d4' - '61c4b58d2eaa3c1561d8e9d8fc41341ce8882869') - -#set destination architecture here -#DESTARCH="i686" -DESTARCH="x86_64" +_grub_lua_ver=24 +_grub_ntldr_ver=21 +_grub_915_ver=9 + +pkgname=('grub-common' 'grub-bios' 'grub-efi-i386') +pkgbase=grub +pkgver=2.00 +pkgrel=1 +url="https://www.gnu.org/software/grub/" +arch=('i686' 'x86_64') +license=('GPL3') +makedepends=('xz' 'bdf-unifont' 'ttf-dejavu' 'python' 'autogen' + 'texinfo' 'help2man' 'gettext' 'device-mapper' 'fuse') + +source=("http://ftp.gnu.org/gnu/grub/grub-${pkgver}.tar.xz" + "ftp://ftp.archlinux.org/other/grub2/grub2_extras_lua_r${_grub_lua_ver}.tar.xz" + "ftp://ftp.archlinux.org/other/grub2/grub2_extras_ntldr-img_r${_grub_ntldr_ver}.tar.xz" + "ftp://ftp.archlinux.org/other/grub2/grub2_extras_915resolution_r${_grub_915_ver}.tar.xz" + 'parabola_grub_mkconfig_fixes.patch' + 'grub.default' + 'grub.cfg' + '20_memtest86+' + 'grub_bzr_export.sh') + +noextract=("grub2_extras_lua_r${_grub_lua_ver}.tar.xz" + "grub2_extras_ntldr-img_r${_grub_ntldr_ver}.tar.xz" + "grub2_extras_915resolution_r${_grub_915_ver}.tar.xz") + +sha1sums=('274d91e96b56a5b9dd0a07accff69dbb6dfb596b' + '89290031b974780c6df76893836d2477d4add895' + 'eb4b35b4c36b64f9405cbcbc538cb205171c1c0a' + 'd5ae2efec25616028a9d89e98b6e454f1c4c415f' + '31aa740fc225b3f3ed4917843038f9e8658a71be' + '79a0e597f19e15bd4c256384e0ef998bc6d06cc8' + 'fb69af1ff6c0b7fdf7ce7d42d0f048edc1a50a45' + 'ce35d7ae75cd1b5b677e894e528f96add40e77b9' + '0cfd4e51cdb14a92f06cfd3c607f2aa21f3e55fc') + +_build_grub-common_and_bios() { + + ## copy the source for building the common/bios package + cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub_bios-${pkgver}" + cd "${srcdir}/grub_bios-${pkgver}" + + ## Apply Parabola specific fixes to enable grub-mkconfig detect Libre kernels and initramfs + patch -Np1 -i "${srcdir}/parabola_grub_mkconfig_fixes.patch" + echo + + ## fix unifont.bdf location so that grub-mkfont can create *.pf2 files + sed 's|/usr/share/fonts/unifont|/usr/share/fonts/unifont /usr/share/fonts/misc|g' -i "${srcdir}/grub_bios-${pkgver}/configure.ac" + + ## fix DejaVuSans.ttf location so that grub-mkfont can create *.pf2 files for starfield theme + sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "${srcdir}/grub_bios-${pkgver}/configure.ac" + + ## add the grub-extra sources + export GRUB_CONTRIB="${srcdir}/grub_bios-${pkgver}/grub-extras/" + install -d "${srcdir}/grub_bios-${pkgver}/grub-extras" + + bsdtar xf "${srcdir}/grub2_extras_lua_r${_grub_lua_ver}.tar.xz" \ + -C "${srcdir}/grub_bios-${pkgver}/grub-extras" + + bsdtar xf "${srcdir}/grub2_extras_ntldr-img_r${_grub_ntldr_ver}.tar.xz" \ + -C "${srcdir}/grub_bios-${pkgver}/grub-extras" + + bsdtar xf "${srcdir}/grub2_extras_915resolution_r${_grub_915_ver}.tar.xz" \ + -C "${srcdir}/grub_bios-${pkgver}/grub-extras" + + ## Requires python2 + # sed 's|python |python2 |g' -i "${srcdir}/grub_bios-${pkgver}/autogen.sh" + + ## start the actual build process + cd "${srcdir}/grub_bios-${pkgver}" + ./autogen.sh + echo + + CFLAGS="" ./configure \ + --with-platform="pc" \ + --target="i386" \ + --host="${CARCH}-unknown-linux-gnu" \ + "${_EFIEMU}" \ + --enable-mm-debug \ + --enable-nls \ + --enable-device-mapper \ + --enable-cache-stats \ + --enable-grub-mkfont \ + --enable-grub-mount \ + --prefix="/usr" \ + --bindir="/usr/bin" \ + --sbindir="/usr/sbin" \ + --mandir="/usr/share/man" \ + --infodir="/usr/share/info" \ + --datarootdir="/usr/share" \ + --sysconfdir="/etc" \ + --program-prefix="" \ + --with-bootdir="/boot" \ + --with-grubdir="grub" \ + --disable-werror + echo + + CFLAGS="" make + echo + +} + +_build_grub-efi-i386() { + + ## copy the source for building the efi package + cp -r "${srcdir}/grub-${pkgver}" "${srcdir}/grub_efi-${pkgver}" + cd "${srcdir}/grub_efi-${pkgver}" + + export GRUB_CONTRIB="${srcdir}/grub_efi-${pkgver}/grub-extras/" + install -d "${srcdir}/grub_efi-${pkgver}/grub-extras" + + bsdtar xf "${srcdir}/grub2_extras_lua_r${_grub_lua_ver}.tar.xz" \ + -C "${srcdir}/grub_efi-${pkgver}/grub-extras" + + cd "${srcdir}/grub_efi-${pkgver}" + ./autogen.sh + echo + + CFLAGS="" ./configure \ + --with-platform="efi" \ + --target="i386" \ + --host="${CARCH}-unknown-linux-gnu" \ + --disable-efiemu \ + --enable-mm-debug \ + --enable-nls \ + --enable-device-mapper \ + --enable-cache-stats \ + --enable-grub-mkfont \ + --enable-grub-mount \ + --prefix="/usr" \ + --bindir="/usr/bin" \ + --sbindir="/usr/sbin" \ + --mandir="/usr/share/man" \ + --infodir="/usr/share/info" \ + --datarootdir="/usr/share" \ + --sysconfdir="/etc" \ + --program-prefix="" \ + --with-bootdir="/boot" \ + --with-grubdir="grub" \ + --disable-werror + echo + + CFLAGS="" make + echo + +} build() { - cd $srcdir/$pkgname-$pkgver - fgrep -rlZ pkglib_DATA --include Makefile.am . | xargs -0 sed -i 's/pkglib_DATA/pkgdata_DATA/g' - - # optimizations break the build -- disable them - # adding special devices to grub, patches are from fedora - patch -Np1 -i ../special-devices.patch - patch -Np1 -i ../i2o.patch - patch -Np1 -i ../more-raid.patch - patch -Np1 -i ../intelmac.patch - # Add support for bigger inode size to e2fs_stage1_5 - patch -Np1 -i ../grub-inode-size.patch - # Add ext4 support - # http://www.mail-archive.com/bug-grub@gnu.org/msg11458.html - patch -Np1 -i ../ext4.patch - # binutils fix - patch -Np1 -i ../grub-0.97-ldflags-objcopy-remove-build-id.patch - - sed -e'/^AC_PROG_CC/ a\AM_PROG_CC_C_O\ ' -i "${srcdir}/${pkgname}-${pkgver}/configure.ac" - sed -e'/^AC_PROG_CC/ a\AM_PROG_AS\ ' -i "${srcdir}/${pkgname}-${pkgver}/configure.ac" - - ## recreate ./configure script with the required changes in LDFLAGS and objcopy - aclocal - autoconf - autoreconf - automake - - #arch64 fixes for static build - if [ "$CARCH" = "x86_64" ]; then ## correcting problems for new wersion of autotools - - echo "this package has to be built on i686, won't compile on x86_64" - sleep 5 - else - if [ "$DESTARCH" = "x86_64" ]; then - # patch from gentoo for fixing a segfault - patch -Np1 -i ../040_all_grub-0.96-nxstack.patch - # patch from frugalware to make it boot when more than 2GB ram installed - patch -Np1 -i ../05-grub-0.97-initrdaddr.diff - CFLAGS="-static -fno-strict-aliasing" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \ - --mandir=/usr/share/man --infodir=/usr/share/info - else - CFLAGS="-fno-strict-aliasing" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \ - --mandir=/usr/share/man --infodir=/usr/share/info - fi - fi + + ## set architecture dependent variables + if [[ "${CARCH}" == 'x86_64' ]]; then + _EFIEMU="--enable-efiemu" + else + _EFIEMU="--disable-efiemu" + fi + + _HOST="${CARCH}" + + cd "${srcdir}/grub-${pkgver}" + # _get_locale_files + + _build_grub-common_and_bios + echo + + _build_grub-efi-i386 + echo + +} + +package_grub-common() { + + pkgdesc="GNU GRand Unified Bootloader - Utilities and Common Files (Parabola rebranded)" + depends=('sh' 'xz' 'freetype2' 'gettext' 'device-mapper' 'fuse') + conflicts=('grub-legacy' 'grub') + replaces=('grub2-common') + provides=('grub2-common') + backup=('boot/grub/grub.cfg' 'etc/default/grub' 'etc/grub.d/40_custom') + optdepends=('libisoburn: provides xorriso for generating grub rescue iso using grub-mkrescue' + 'os-prober: to detect other OSes when generating grub.cfg in BIOS systems' + 'mtools: for grub-mkrescue FAT FS support') + install="grub.install" + options=('strip' 'purge' 'docs' 'zipman' '!emptydirs') + + cd "${srcdir}/grub_bios-${pkgver}" + make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install + echo + + ## install extra /etc/grub.d/ files + install -D -m0755 "${srcdir}/20_memtest86+" "${pkgdir}/etc/grub.d/20_memtest86+" + + ## install /etc/default/grub (used by grub-mkconfig) + install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub" + + ## install grub.cfg (needed so it doesn't get removed on upgrading because it was previously here) + install -D -m0644 "${srcdir}/grub.cfg" "${pkgdir}/boot/grub/grub.cfg" + + # remove platform specific files + rm -rf "${pkgdir}/usr/lib/grub/i386-pc/" + } -package() { - cd $srcdir/$pkgname-$pkgver +package_grub-bios() { + + pkgdesc="GNU GRand Unified Bootloader - i386 PC BIOS Modules" + depends=("grub-common=${pkgver}") + options=('!strip' '!emptydirs') + replaces=('grub2-bios') + provides=('grub2-bios') + + cd "${srcdir}/grub_bios-${pkgver}" + make DESTDIR="${pkgdir}/" install + echo + + ## remove non platform-specific files + rm -rf "${pkgdir}"/{boot,etc,usr/{share,bin,sbin}} + + ## remove gdb debugging related files + rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.module || true + rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.image || true + rm -f "${pkgdir}/usr/lib/grub/i386-pc"/{kernel.exec,gdb_grub,gmodule.pl} || true + +} + +package_grub-efi-i386() { + + pkgdesc="GNU GRand Unified Bootloader - i386 UEFI Modules" + depends=("grub-common=${pkgver}" 'dosfstools' 'efibootmgr') + options=('!strip' '!emptydirs') + replaces=('grub2-efi-i386') + provides=('grub2-efi-i386') + + cd "${srcdir}/grub_efi-${pkgver}" + make DESTDIR="${pkgdir}/" install + echo + + ## remove non platform-specific files + rm -rf "${pkgdir}"/{boot,etc,usr/{share,bin,sbin}} - CFLAGS= make - make DESTDIR=$pkgdir install - install -D -m644 ../menu.lst $pkgdir/boot/grub/menu.lst - install -D -m755 ../install-grub $pkgdir/sbin/install-grub + ## remove gdb debugging related files + rm -f "${pkgdir}/usr/lib/grub/i386-efi"/*.module || true + rm -f "${pkgdir}/usr/lib/grub/i386-efi"/*.image || true + rm -f "${pkgdir}/usr/lib/grub/i386-efi"/{kernel.exec,gdb_grub,gmodule.pl} || true - if [ "$DESTARCH" = "x86_64" ]; then - # fool makepkg into building a x86_64 package - export CARCH="x86_64" - fi } diff --git a/libre/grub/fix_stack_pointer_handling_16_relocator.patch b/libre/grub/fix_stack_pointer_handling_16_relocator.patch new file mode 100644 index 000000000..edc0ef502 --- /dev/null +++ b/libre/grub/fix_stack_pointer_handling_16_relocator.patch @@ -0,0 +1,13 @@ +diff --git a/grub-core/lib/i386/relocator16.S b/grub-core/lib/i386/relocator16.S +index c3768f4..982415d 100644 +--- a/grub-core/lib/i386/relocator16.S ++++ b/grub-core/lib/i386/relocator16.S +@@ -130,7 +130,7 @@ VARIABLE(grub_relocator16_ss) + .byte 0xb8 + VARIABLE(grub_relocator16_sp) + .word 0 +- movw %ax, %ss ++ movzwl %ax, %esp + + /* movw imm32, %edx. */ + .byte 0x66, 0xba diff --git a/libre/grub/grub-install.fix b/libre/grub/grub-install.fix new file mode 100644 index 000000000..29e74bd44 --- /dev/null +++ b/libre/grub/grub-install.fix @@ -0,0 +1,11 @@ +=== modified file 'grub-core/kern/emu/hostdisk.c' +--- grub-core/kern/emu/hostdisk.c 2012-04-18 21:48:52 +0000 ++++ grub-core/kern/emu/hostdisk.c 2012-04-19 18:35:06 +0000 +@@ -1081,7 +1081,7 @@ + { + int fd; + grub_disk_addr_t max = ~0ULL; +- fd = open_device (disk, sector, O_RDONLY, &max); ++ fd = open_device (disk, sector, O_WRONLY, &max); + if (fd < 0) + return grub_errno; diff --git a/libre/grub/grub-mkconfig-Use_outside_GRUB_PREFIX_if_defined.patch b/libre/grub/grub-mkconfig-Use_outside_GRUB_PREFIX_if_defined.patch new file mode 100644 index 000000000..e1de26859 --- /dev/null +++ b/libre/grub/grub-mkconfig-Use_outside_GRUB_PREFIX_if_defined.patch @@ -0,0 +1,15 @@ +diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in +index 859c2e8..c4391dc 100644 +--- a/util/grub-mkconfig.in ++++ b/util/grub-mkconfig.in +@@ -40,7 +40,9 @@ self=`basename $0` + grub_probe="${sbindir}/`echo grub-probe | sed "${transform}"`" + grub_script_check="${bindir}/`echo grub-script-check | sed "${transform}"`" + +-GRUB_PREFIX=`echo '/@bootdirname@/@grubdirname@' | sed "s,//*,/,g"` ++if test -z "${GRUB_PREFIX}"; then ++ GRUB_PREFIX=`echo '/@bootdirname@/@grubdirname@' | sed "s,//*,/,g"` ++fi + + . "${datadir}/@PACKAGE@/grub-mkconfig_lib" + diff --git a/libre/grub/grub.cfg b/libre/grub/grub.cfg new file mode 100644 index 000000000..7f583e102 --- /dev/null +++ b/libre/grub/grub.cfg @@ -0,0 +1,139 @@ +# +# DO NOT EDIT THIS FILE +# +# It is automatically generated by grub-mkconfig using templates +# from /etc/grub.d and settings from /etc/default/grub +# + +### BEGIN /etc/grub.d/00_header ### +insmod part_gpt +insmod part_msdos +if [ -s $prefix/grubenv ]; then + load_env +fi +set default="0" + +if [ x"${feature_menuentry_id}" = xy ]; then + menuentry_id_option="--id" +else + menuentry_id_option="" +fi + +export menuentry_id_option + +if [ "${prev_saved_entry}" ]; then + set saved_entry="${prev_saved_entry}" + save_env saved_entry + set prev_saved_entry= + save_env prev_saved_entry + set boot_once=true +fi + +function savedefault { + if [ -z "${boot_once}" ]; then + saved_entry="${chosen}" + save_env saved_entry + fi +} + +function load_video { + if [ x$feature_all_video_module = xy ]; then + insmod all_video + else + insmod efi_gop + insmod efi_uga + insmod ieee1275_fb + insmod vbe + insmod vga + insmod video_bochs + insmod video_cirrus + fi +} + +if [ x$feature_default_font_path = xy ] ; then + font=unicode +else +insmod part_msdos +insmod ext2 +set root='hd0,msdos5' +if [ x$feature_platform_search_hint = xy ]; then + search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 ad4103fa-d940-47ca-8506-301d8071d467 +else + search --no-floppy --fs-uuid --set=root ad4103fa-d940-47ca-8506-301d8071d467 +fi + font="/usr/share/grub/unicode.pf2" +fi + +if loadfont $font ; then + set gfxmode=auto + load_video + insmod gfxterm + set locale_dir=$prefix/locale + set lang=en_US + insmod gettext +fi +terminal_input console +terminal_output gfxterm +set timeout=5 +### END /etc/grub.d/00_header ### + +### BEGIN /etc/grub.d/10_linux ### +menuentry 'Parabola GNU/Linux-libre, with Linux-libre core repo kernel' --class parabola --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-ad4103fa-d940-47ca-8506-301d8071d467' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_msdos + insmod ext2 + set root='hd0,msdos5' + if [ x$feature_platform_search_hint = xy ]; then + search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 ad4103fa-d940-47ca-8506-301d8071d467 + else + search --no-floppy --fs-uuid --set=root ad4103fa-d940-47ca-8506-301d8071d467 + fi + echo 'Loading Linux libre core repo kernel ...' + linux /boot/vmlinuz-linux-libre root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 ro quiet + echo 'Loading initial ramdisk ...' + initrd /boot/initramfs-linux-libre.img +} +menuentry 'Parabola GNU/Linux-libre, with Linux libre repo kernel (Fallback initramfs)' --class parabola --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-ad4103fa-d940-47ca-8506-301d8071d467' { + load_video + set gfxpayload=keep + insmod gzio + insmod part_msdos + insmod ext2 + set root='hd0,msdos5' + if [ x$feature_platform_search_hint = xy ]; then + search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5 ad4103fa-d940-47ca-8506-301d8071d467 + else + search --no-floppy --fs-uuid --set=root ad4103fa-d940-47ca-8506-301d8071d467 + fi + echo 'Loading Linux libre core repo kernel ...' + linux /boot/vmlinuz-linux-libre root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 ro quiet + echo 'Loading initial ramdisk ...' + initrd /boot/initramfs-linux-libre-fallback.img +} + +### END /etc/grub.d/10_linux ### + +### BEGIN /etc/grub.d/20_linux_xen ### +### END /etc/grub.d/20_linux_xen ### + +### BEGIN /etc/grub.d/20_memtest86+ ### +### END /etc/grub.d/20_memtest86+ ### + +### BEGIN /etc/grub.d/30_os-prober ### +### END /etc/grub.d/30_os-prober ### + +### BEGIN /etc/grub.d/40_custom ### +# This file provides an easy way to add custom menu entries. Simply type the +# menu entries you want to add after this comment. Be careful not to change +# the 'exec tail' line above. +### END /etc/grub.d/40_custom ### + +### BEGIN /etc/grub.d/41_custom ### +if [ -f ${config_directory}/custom.cfg ]; then + source ${config_directory}/custom.cfg +elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then + source $prefix/custom.cfg; +fi +### END /etc/grub.d/41_custom ### diff --git a/libre/grub/grub.default b/libre/grub/grub.default new file mode 100644 index 000000000..2ceb40543 --- /dev/null +++ b/libre/grub/grub.default @@ -0,0 +1,47 @@ +GRUB_DEFAULT=0 +GRUB_TIMEOUT=5 +GRUB_DISTRIBUTOR="Parabola GNU/Linux-libre" +GRUB_CMDLINE_LINUX_DEFAULT="quiet" +GRUB_CMDLINE_LINUX="" + +# Preload both GPT and MBR modules so that they are not missed +GRUB_PRELOAD_MODULES="part_gpt part_msdos" + +# Uncomment to enable Hidden Menu, and optionally hide the timeout count +#GRUB_HIDDEN_TIMEOUT=5 +#GRUB_HIDDEN_TIMEOUT_QUIET=true + +# Uncomment to use basic console +GRUB_TERMINAL_INPUT=console + +# Uncomment to disable graphical terminal +#GRUB_TERMINAL_OUTPUT=console + +# The resolution used on graphical terminal +# note that you can use only modes which your graphic card supports via VBE +# you can see them in real GRUB with the command `vbeinfo' +GRUB_GFXMODE=auto + +# Uncomment to allow the kernel use the same resolution used by grub +GRUB_GFXPAYLOAD_LINUX=keep + +# Uncomment if you want GRUB to pass to the Linux kernel the old parameter +# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx" +#GRUB_DISABLE_LINUX_UUID=true + +# Uncomment to disable generation of recovery mode menu entries +GRUB_DISABLE_RECOVERY=true + +# Uncomment and set to the desired menu colors. Used by normal and wallpaper +# modes only. Entries specified as foreground/background. +GRUB_COLOR_NORMAL="magenta/black" +GRUB_COLOR_HIGHLIGHT="white/magenta" + +# Uncomment one of them for the gfx desired, a image background or a gfxtheme +#GRUB_BACKGROUND="/path/to/wallpaper" +#GRUB_THEME="/path/to/gfxtheme" + +# Uncomment to get a beep at GRUB start +#GRUB_INIT_TUNE="480 440 1" + +#GRUB_SAVEDEFAULT="true" diff --git a/libre/grub/grub.install b/libre/grub/grub.install index c1f077d59..9188b357a 100644 --- a/libre/grub/grub.install +++ b/libre/grub/grub.install @@ -1,20 +1,33 @@ -infodir=/usr/share/info -filelist=(grub.info multiboot.info) +infodir="usr/share/info" +filelist=('grub.info' 'grub-dev.info') post_install() { - [ -x usr/bin/install-info ] || return 0 + if [ -f /boot/grub/grub.cfg.pacsave ]; then + echo "Copying /boot/grub/grub.cfg.pacsave to /boot/grub/grub.cfg" + install -D -m0644 /boot/grub/grub.cfg.pacsave /boot/grub/grub.cfg + fi + + cat << 'EOM' +Generating grub.cfg.example config file... +This may fail on some machines running a custom kernel. +EOM + + grub-mkconfig -o /boot/grub/grub.cfg.example 2> /dev/null + echo "done." + for file in ${filelist[@]}; do - install-info $infodir/$file.gz $infodir/dir 2> /dev/null + install-info ${infodir}/${file}.gz ${infodir}/dir 2> /dev/null done } post_upgrade() { - post_install $1 + for file in ${filelist[@]}; do + install-info ${infodir}/${file}.gz ${infodir}/dir 2> /dev/null + done } pre_remove() { - [ -x usr/bin/install-info ] || return 0 for file in ${filelist[@]}; do - install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null + install-info --delete ${infodir}/${file} ${infodir}/dir 2> /dev/null done } diff --git a/libre/grub/grub2.install b/libre/grub/grub2.install new file mode 100644 index 000000000..000533553 --- /dev/null +++ b/libre/grub/grub2.install @@ -0,0 +1,33 @@ +infodir=usr/share/info +filelist=(grub.info grub-dev.info) + +post_install() { + if [ -f /boot/grub/grub.cfg.pacsave ]; then + echo "Copying /boot/grub/grub.cfg.pacsave to /boot/grub/grub.cfg" + install -Dm644 /boot/grub/grub.cfg.pacsave /boot/grub/grub.cfg + fi + + cat << 'EOM' +Generating grub.cfg.example config file... +This may fail on some machines running a custom kernel. +EOM + + grub-mkconfig -o /boot/grub/grub.cfg.example 2> /dev/null + echo "done." + + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + for file in ${filelist[@]}; do + install-info $infodir/$file.gz $infodir/dir 2> /dev/null + done +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/libre/grub/grub2_automake_1.11.2_pkglib_to_pkgdata.patch b/libre/grub/grub2_automake_1.11.2_pkglib_to_pkgdata.patch new file mode 100644 index 000000000..0e396b210 --- /dev/null +++ b/libre/grub/grub2_automake_1.11.2_pkglib_to_pkgdata.patch @@ -0,0 +1,134 @@ +diff --git a/ChangeLog_Keshav b/ChangeLog_Keshav +new file mode 100644 +index 0000000..0eafd65 +--- /dev/null ++++ b/ChangeLog_Keshav +@@ -0,0 +1,12 @@ ++2012-01-04 Keshav P R <the.ridikulus.rat@gmail.com> ++ ++ Fixes for automake 1.11.2 ++ ++ * conf/Makefile.common: Change pkglib_SCRIPTS to pkgdata_SCRIPTS. ++ * conf/Makefile.common: Change pkglib_DATA to pkgdata_DATA. ++ * Makefile.am: Likewise. ++ * gentpl.py: Likewise. ++ * util/grub-mkstandalone.in: Likewise. ++ * util/grub-mknetdir.in: Likewise. ++ * util/grub-mkrescue.in: Likewise. ++ * util/grub-mkstandalone.in: Likewise. +diff --git a/Makefile.am b/Makefile.am +index c5f486e..395b0dd 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -101,8 +101,8 @@ CLEANFILES += widthspec.h + # Install config.h into platformdir + platform_HEADERS = config.h + +-pkglib_DATA += grub-mkconfig_lib +-pkglib_DATA += update-grub_lib ++pkgdata_DATA += grub-mkconfig_lib ++pkgdata_DATA += update-grub_lib + + + if COND_i386_coreboot +diff --git a/conf/Makefile.common b/conf/Makefile.common +index 751188b..bbd59cc 100644 +--- a/conf/Makefile.common ++++ b/conf/Makefile.common +@@ -137,7 +137,7 @@ KERNEL_HEADER_FILES = + + man_MANS = + noinst_DATA = +-pkglib_DATA = ++pkgdata_DATA = + bin_SCRIPTS = + sbin_SCRIPTS = + bin_PROGRAMS = +@@ -147,7 +147,7 @@ check_SCRIPTS = + grubconf_DATA = + check_PROGRAMS = + noinst_SCRIPTS = +-pkglib_SCRIPTS = ++pkgdata_SCRIPTS = + noinst_PROGRAMS = + grubconf_SCRIPTS = + noinst_LIBRARIES = +diff --git a/gentpl.py b/gentpl.py +index 3008b80..a935f4d 100644 +--- a/gentpl.py ++++ b/gentpl.py +@@ -512,7 +512,7 @@ def script(platform): + r += "[+ ENDIF +]" + + r += rule("[+ name +]", platform_sources(platform) + " $(top_builddir)/config.status", """ +-$(top_builddir)/config.status --file=-:$< | sed -e 's,@pkglib_DATA@,$(pkglib_DATA),g' > $@ ++$(top_builddir)/config.status --file=-:$< | sed -e 's,@pkgdata_DATA@,$(pkgdata_DATA),g' > $@ + chmod a+x [+ name +] + """) + +diff --git a/util/grub-mknetdir.in b/util/grub-mknetdir.in +index e5a2172..7f6a36d 100644 +--- a/util/grub-mknetdir.in ++++ b/util/grub-mknetdir.in +@@ -30,7 +30,7 @@ PACKAGE_VERSION=@PACKAGE_VERSION@ + host_os=@host_os@ + localedir=@datadir@/locale + datarootdir=@datarootdir@ +-pkglib_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst" ++pkgdata_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst" + + self=`basename $0` + +@@ -183,7 +183,7 @@ process_input_dir () + cp -f "$file" "$grubdir/" + fi + done +- for file in ${pkglib_DATA}; do ++ for file in ${pkgdata_DATA}; do + if test -f "${input_dir}/${file}"; then + cp -f "${input_dir}/${file}" "$grubdir/" + fi +diff --git a/util/grub-mkrescue.in b/util/grub-mkrescue.in +index eff7708..f6b96d4 100644 +--- a/util/grub-mkrescue.in ++++ b/util/grub-mkrescue.in +@@ -27,7 +27,7 @@ libdir=@libdir@ + PACKAGE_NAME=@PACKAGE_NAME@ + PACKAGE_TARNAME=@PACKAGE_TARNAME@ + PACKAGE_VERSION=@PACKAGE_VERSION@ +-pkglib_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst" ++pkgdata_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst" + + self=`basename $0` + +@@ -163,7 +163,7 @@ process_input_dir () + cp -f "$file" ${iso9660_dir}/boot/grub/${platform}/ + fi + done +- for file in ${pkglib_DATA}; do ++ for file in ${pkgdata_DATA}; do + if test -f "${input_dir}/${file}"; then + cp -f "${input_dir}/${file}" ${iso9660_dir}/boot/grub/${platform}/ + fi +diff --git a/util/grub-mkstandalone.in b/util/grub-mkstandalone.in +index b0dbf9b..92b7306 100644 +--- a/util/grub-mkstandalone.in ++++ b/util/grub-mkstandalone.in +@@ -27,7 +27,7 @@ libdir=@libdir@ + PACKAGE_NAME=@PACKAGE_NAME@ + PACKAGE_TARNAME=@PACKAGE_TARNAME@ + PACKAGE_VERSION=@PACKAGE_VERSION@ +-pkglib_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst" ++pkgdata_DATA="moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst" + + self=`basename $0` + +@@ -163,7 +163,7 @@ for file in "${source_directory}/"*.mod "${source_directory}/"efiemu32.o "${sour + fi + done + +-for file in ${pkglib_DATA}; do ++for file in ${pkgdata_DATA}; do + if test -f "${source_directory}/${file}"; then + cp -f "${source_directory}/${file}" "${memdisk_dir}"/boot/grub/ + fi diff --git a/libre/grub/grub2_bzr_export.sh b/libre/grub/grub2_bzr_export.sh new file mode 100644 index 000000000..f40588f82 --- /dev/null +++ b/libre/grub/grub2_bzr_export.sh @@ -0,0 +1,113 @@ +#!/bin/bash + +## For actual repos + +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/lua lua +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/gpxe gpxe +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/ntldr-img ntldr-img +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/915resolution 915resolution + +## For launchpad mirror + +# bzr branch lp:~the-ridikulus-rat/grub/grub2-extras-lua lua +# bzr branch lp:~the-ridikulus-rat/grub/grub2-extras-gpxe gpxe +# bzr branch lp:~the-ridikulus-rat/grub/grub2-extras-ntldr-img ntldr-img +# bzr branch lp:~the-ridikulus-rat/grub/grub2-extras-915resolution 915resolution + +## grub-extras zfs is integrated into grub2 bzr main repo and is no longer needed separately. + +_WD="${PWD}/" +_OUTPUT_DIR="${_WD}/" + +_ACTUAL_PKGVER="1.99" + +_GRUB2_BZR_REPO_DIR="${_WD}/grub2_BZR/" +_GRUB2_BZR_EXP_REPO_DIR="${_WD}/grub2_experimental_BZR/" +_GRUB2_EXTRAS_REPOS_DIR="${_WD}/grub2_extras_BZR/" + +_MAIN_SNAPSHOT() { + + cd "${_GRUB2_BZR_REPO_DIR}/" + echo + + _REVNUM="$(bzr revno ${_GRUB2_BZR_REPO_DIR})" + bzr export --root="grub-${_ACTUAL_PKGVER}" --format="tar" "${_OUTPUT_DIR}/grub2_r${_REVNUM}.tar" + echo + + cd "${_OUTPUT_DIR}/" + + xz -9 "${_OUTPUT_DIR}/grub2_r${_REVNUM}.tar" + echo + +} + +_EXP_SNAPSHOT() { + + cd "${_GRUB2_BZR_EXP_REPO_DIR}/" + echo + + _REVNUM="$(bzr revno ${_GRUB2_BZR_EXP_REPO_DIR})" + bzr export --root="grub-${_ACTUAL_PKGVER}" --format="tar" "${_OUTPUT_DIR}/grub2_exp_r${_REVNUM}.tar" + echo + + cd "${_OUTPUT_DIR}/" + + xz -9 "${_OUTPUT_DIR}/grub2_exp_r${_REVNUM}.tar" + echo + +} + +_EXTRAS_SNAPSHOT() { + + cd "${_GRUB2_EXTRAS_REPOS_DIR}/${_GRUB2_EXTRAS_NAME}/" + echo + + _REVNUM="$(bzr revno ${_GRUB2_EXTRAS_REPOS_DIR}/${_GRUB2_EXTRAS_NAME})" + bzr export --root="${_GRUB2_EXTRAS_NAME}" --format=tar "${_OUTPUT_DIR}/grub2_extras_${_GRUB2_EXTRAS_NAME}_r${_REVNUM}.tar" + echo + + cd "${_OUTPUT_DIR}/" + echo + + xz -9 "${_OUTPUT_DIR}/grub2_extras_${_GRUB2_EXTRAS_NAME}_r${_REVNUM}.tar" + echo + +} + +echo + +set -x -e + +echo + +_MAIN_SNAPSHOT + +echo + +# _EXP_SNAPSHOT + +echo + +_GRUB2_EXTRAS_NAME="lua" +_EXTRAS_SNAPSHOT + +_GRUB2_EXTRAS_NAME="gpxe" +_EXTRAS_SNAPSHOT + +_GRUB2_EXTRAS_NAME="ntldr-img" +_EXTRAS_SNAPSHOT + +_GRUB2_EXTRAS_NAME="915resolution" +_EXTRAS_SNAPSHOT + +echo + +set +x +e + +echo + +unset _WD +unset _OUTPUT_DIR +unset _GRUB2_BZR_REPO_DIR +unset _GRUB2_EXTRAS_REPOS_DIR +unset _GRUB2_EXTRAS_NAME diff --git a/libre/grub/grub_bzr_export.sh b/libre/grub/grub_bzr_export.sh new file mode 100644 index 000000000..ff8f99ecc --- /dev/null +++ b/libre/grub/grub_bzr_export.sh @@ -0,0 +1,113 @@ +#!/usr/bin/env bash + +## For actual repos + +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/lua lua +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/gpxe gpxe +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/ntldr-img ntldr-img +# bzr branch bzr://bzr.savannah.gnu.org/grub-extras/915resolution 915resolution + +## For launchpad mirror + +# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-lua lua +# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-gpxe gpxe +# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-ntldr-img ntldr-img +# bzr branch lp:~the-ridikulus-rat/grub/grub-extras-915resolution 915resolution + +## grub-extras zfs is integrated into grub bzr main repo and is no longer needed separately. + +_WD="${PWD}/" +_OUTPUT_DIR="${_WD}/" + +_ACTUAL_PKGVER="2.00" + +_GRUB_BZR_REPO_DIR="${_WD}/grub_mainline_BZR/" +_GRUB_BZR_EXP_REPO_DIR="${_WD}/grub_experimental_BZR/" +_GRUB_EXTRAS_REPOS_DIR="${_WD}/grub_extras_BZR/" + +_MAIN_SNAPSHOT() { + + cd "${_GRUB_BZR_REPO_DIR}/" + echo + + _REVNUM="$(bzr revno ${_GRUB_BZR_REPO_DIR})" + bzr export --root="grub-${_ACTUAL_PKGVER}" --format="tar" "${_OUTPUT_DIR}/grub_r${_REVNUM}.tar" + echo + + cd "${_OUTPUT_DIR}/" + + xz -9 "${_OUTPUT_DIR}/grub_r${_REVNUM}.tar" + echo + +} + +_EXP_SNAPSHOT() { + + cd "${_GRUB_BZR_EXP_REPO_DIR}/" + echo + + _REVNUM="$(bzr revno ${_GRUB_BZR_EXP_REPO_DIR})" + bzr export --root="grub-${_ACTUAL_PKGVER}" --format="tar" "${_OUTPUT_DIR}/grub_exp_r${_REVNUM}.tar" + echo + + cd "${_OUTPUT_DIR}/" + + xz -9 "${_OUTPUT_DIR}/grub_exp_r${_REVNUM}.tar" + echo + +} + +_EXTRAS_SNAPSHOT() { + + cd "${_GRUB_EXTRAS_REPOS_DIR}/${_GRUB_EXTRAS_NAME}/" + echo + + _REVNUM="$(bzr revno ${_GRUB_EXTRAS_REPOS_DIR}/${_GRUB_EXTRAS_NAME})" + bzr export --root="${_GRUB_EXTRAS_NAME}" --format="tar" "${_OUTPUT_DIR}/grub_extras_${_GRUB_EXTRAS_NAME}_r${_REVNUM}.tar" + echo + + cd "${_OUTPUT_DIR}/" + echo + + xz -9 "${_OUTPUT_DIR}/grub_extras_${_GRUB_EXTRAS_NAME}_r${_REVNUM}.tar" + echo + +} + +echo + +set -x -e + +echo + +_MAIN_SNAPSHOT + +echo + +# _EXP_SNAPSHOT + +echo + +_GRUB_EXTRAS_NAME="lua" +_EXTRAS_SNAPSHOT + +# _GRUB_EXTRAS_NAME="gpxe" +# _EXTRAS_SNAPSHOT + +_GRUB_EXTRAS_NAME="ntldr-img" +_EXTRAS_SNAPSHOT + +_GRUB_EXTRAS_NAME="915resolution" +_EXTRAS_SNAPSHOT + +echo + +set +x +e + +echo + +unset _WD +unset _OUTPUT_DIR +unset _GRUB_BZR_REPO_DIR +unset _GRUB_EXTRAS_REPOS_DIR +unset _GRUB_EXTRAS_NAME diff --git a/libre/grub/grub_extras_lua_args_fix.patch b/libre/grub/grub_extras_lua_args_fix.patch new file mode 100644 index 000000000..5cb317ce3 --- /dev/null +++ b/libre/grub/grub_extras_lua_args_fix.patch @@ -0,0 +1,13 @@ +diff --git a/grub-extras/lua/grub_lib.c b/grub-extras/lua/grub_lib.c +index 9014320..055d620 100644 +--- a/grub-extras/lua/grub_lib.c ++++ b/grub-extras/lua/grub_lib.c +@@ -466,7 +466,7 @@ grub_lua_add_menu (lua_State *state) + if (! p) + return push_result (state); + +- grub_normal_add_menu_entry (n, args, NULL, NULL, NULL, NULL, p, 0); ++ grub_normal_add_menu_entry (n, args, NULL, NULL, NULL, NULL, NULL, p, 0); + } + else + { diff --git a/libre/grub/parabola-mkconfig.patch b/libre/grub/parabola-mkconfig.patch new file mode 100644 index 000000000..7c18a4cc2 --- /dev/null +++ b/libre/grub/parabola-mkconfig.patch @@ -0,0 +1,32 @@ +diff -ru grub-1.99.orig/util/grub.d/10_linux.in grub-1.99/util/grub.d/10_linux.in +--- grub-1.99.orig/util/grub.d/10_linux.in 2011-08-11 15:54:52.051246328 +0200 ++++ grub-1.99/util/grub.d/10_linux.in 2011-08-11 15:55:41.297910793 +0200 +@@ -134,7 +134,7 @@ + + case x`uname -m` in + xi?86 | xx86_64) +- list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* /boot/vmlinuz26-* ; do ++ list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* /boot/vmlinuz26-* /boot/vmlinuz26 ; do + if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi + done` ;; + *) +@@ -163,7 +163,8 @@ + "initrd-${alt_version}" "initramfs-${alt_version}.img" \ + "initramfs-genkernel-${version}" \ + "initramfs-genkernel-${alt_version}" \ +- "${basename/vmlinuz/kernel}.img"; do ++ "${basename/vmlinuz/kernel}.img" \ ++ "${basename/vmlinuz/initramfs}.img"; do + if test -e "${dirname}/${i}" ; then + initrd="$i" + break +@@ -194,7 +195,8 @@ + linux_entry "${OS}" "${version}" false \ + "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" + for i in "initramfs-${version}-fallback.img" \ +- "${basename/vmlinuz/kernel}-fallback.img"; do ++ "${basename/vmlinuz/kernel}-fallback.img" \ ++ "${basename/vmlinuz/initramfs}-fallback.img"; do + if test -e "${dirname}/${i}"; then + initrd="$i" + linux_entry "${OS}" "${version}" true \ diff --git a/libre/grub/parabola_grub_mkconfig_fixes.patch b/libre/grub/parabola_grub_mkconfig_fixes.patch new file mode 100644 index 000000000..19022aec6 --- /dev/null +++ b/libre/grub/parabola_grub_mkconfig_fixes.patch @@ -0,0 +1,152 @@ +diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in +index 516be86..5f37db2 100644 +--- a/util/grub-mkconfig.in ++++ b/util/grub-mkconfig.in +@@ -213,6 +213,8 @@ export GRUB_DEFAULT \ + GRUB_THEME \ + GRUB_GFXPAYLOAD_LINUX \ + GRUB_DISABLE_OS_PROBER \ ++ GRUB_COLOR_NORMAL \ ++ GRUB_COLOR_HIGHLIGHT \ + GRUB_INIT_TUNE \ + GRUB_SAVEDEFAULT \ + GRUB_ENABLE_CRYPTODISK \ +diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in +index 765bfdc..b148558 100644 +--- a/util/grub.d/00_header.in ++++ b/util/grub.d/00_header.in +@@ -115,6 +115,14 @@ cat <<EOF + + EOF + ++if [ x$GRUB_COLOR_NORMAL != x ] && [ x$GRUB_COLOR_HIGHLIGHT != x ] ; then ++ cat << EOF ++set menu_color_normal=$GRUB_COLOR_NORMAL ++set menu_color_highlight=$GRUB_COLOR_HIGHLIGHT ++ ++EOF ++fi ++ + serial=0; + gfxterm=0; + for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index 14402e8..64c9bb5 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -31,7 +31,7 @@ + if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then + OS=GNU/Linux + else +- OS="${GRUB_DISTRIBUTOR} GNU/Linux" ++ OS="${GRUB_DISTRIBUTOR}" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}" + fi + +@@ -87,6 +87,8 @@ linux_entry () + case $type in + recovery) + title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;; ++ fallback) ++ title="$(gettext_printf "%s, with Linux %s (Fallback initramfs)" "${os}" "${version}")" ;; + *) + title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;; + esac +@@ -100,7 +102,7 @@ linux_entry () + else + echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/" + fi +- if [ x$type != xrecovery ] ; then ++ if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then + save_default_entry | sed -e "s/^/\t/" + fi + +@@ -132,7 +134,8 @@ linux_entry () + fi + printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/" + fi +- message="$(gettext_printf "Loading Linux %s ..." ${version})" ++ ++ message="$(gettext_printf "Loading Linux %s ..." "${version}")" + sed "s/^/$submenu_indentation/" << EOF + echo '$message' + linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} +@@ -190,7 +193,22 @@ while [ "x$list" != "x" ] ; do + alt_version=`echo $version | sed -e "s,\.old$,,g"` + linux_root_device_thisversion="${LINUX_ROOT_DEVICE}" + ++ if test -e "/etc/arch-release" ; then ++ if echo "${basename}" | grep -q 'vmlinuz-linux' ; then ++ version="`echo "${basename}" | sed -e 's,vmlinuz-linux,,g'`" ++ ++ if [ "x${version}" = "x" ] ; then ++ version="core repo kernel" ++ else ++ version="`echo "${version}" | sed -e 's,-,,g'`" ++ version="${version} kernel" ++ fi ++ fi ++ fi ++ + initrd= ++ initrd_arch="`echo "${basename}" | sed -e 's,vmlinuz,initramfs,g'`" ++ + for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \ + "initrd-${version}" "initramfs-${version}.img" \ + "initrd.img-${alt_version}" "initrd-${alt_version}.img" \ +@@ -198,7 +216,8 @@ while [ "x$list" != "x" ] ; do + "initramfs-genkernel-${version}" \ + "initramfs-genkernel-${alt_version}" \ + "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \ +- "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do ++ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" \ ++ "${initrd_arch}.img" ; do + if test -e "${dirname}/${i}" ; then + initrd="$i" + break +@@ -226,6 +245,22 @@ while [ "x$list" != "x" ] ; do + linux_root_device_thisversion=${GRUB_DEVICE} + fi + ++ if test -e "/etc/arch-release" ; then ++ is_first_entry="false" ++ ++ linux_entry "${OS}" "${version}" true \ ++ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" ++ ++ for i in "${initrd_arch}-fallback.img" "initramfs-${version}-fallback.img" ; do ++ if test -e "${dirname}/${i}" ; then ++ initrd="${i}" ++ linux_entry "${OS}" "${version}" fallback \ ++ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" ++ break ++ fi ++ done ++ fi ++ + if [ "x$is_first_entry" = xtrue ]; then + linux_entry "${OS}" "${version}" simple \ + "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" +@@ -239,8 +274,11 @@ while [ "x$list" != "x" ] ; do + echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {" + fi + ++ if ! test -e "/etc/arch-release" ; then + linux_entry "${OS}" "${version}" advanced \ + "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" ++ fi ++ + if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then + linux_entry "${OS}" "${version}" recovery \ + "single ${GRUB_CMDLINE_LINUX}" +@@ -252,8 +290,10 @@ done + + # If at least one kernel was found, then we need to + # add a closing '}' for the submenu command. ++if ! test -e "/etc/arch-release" ; then + if [ x"$is_first_entry" != xtrue ]; then + echo '}' + fi ++fi + + echo "$title_correction_code" 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/PKGBUILD b/libre/hardinfo/PKGBUILD index c712a39af..a66dc20df 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' 'mips64el') 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..d146e02dd 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 @@ -10,18 +11,18 @@ # - Run 'make'. It will take care of everything else for you. _debname=iceape -_debver=2.7.5 +_debver=2.7.6 _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[@]} do echo $pkgbase-$lang | tr A-Z a-z done)) -_pkgver=2.7.5 +_pkgver=2.7.6 pkgver=${_debver}.${_debrel} pkgrel=1 @@ -57,25 +58,26 @@ package_iceape-i18n-$(echo $lang | tr A-Z a-z)() { " done -md5sums=('03a75ce1325fc748d0943cd39659e8ca' - '9fc2070dc6db8d94f322cb5e27523ea4' - '6cb55fe51fca1de674ca32b10edc7c8b' - '138121b288c269aa418ca0c33eb65326' - '8fd47eed7c79fe29c74a81d9b4a4864a' - 'f253842c0a377e86c6c62f7db27db32d' - 'b93caebe5ceb08d2cde78fe40fff3c0c' - 'a36d0776b736609b1e72b8530cc9e755' - '9acd2d8e4fd39700aa99a21681403a72' - '60703c83180e8bb3abdcfbf26bf1289d' - 'dc708663d015830fb11e800f48d7492c' - '313e6a88a602e09b5f08d6ff8ccdc89a' - '31debae1dca6035695805d0de55c71f3' - '1f927d23eb1db49db3ffe2d3ee5e3da5' - '4b5e52235ce8a52d1144d5f6e45a069c' - '81d1a28544f9a6e92eafc48e57a45a35' - 'bb32f5938b885d2de225e4d8e2471d28' - '69d447db48244cc1546d0ce3447e8ab8' - '16d36a140dfbd9a001b28f4fcbc81df8' - '211bb03760a2eacf685f27f03e71da4d' - '83225015ad8f023ff0d9f9643c295e4c' - '67d3ec1632a4ed2aaf8e7a5df0284b1e') +md5sums=('ee7f337bb32aee98a9f2be1936843106' + '10102b3e8f81dbd91dacddb892ba68b9' + 'fef4de4746cc36bcf911fb0f7a7b2338' + 'd31e21bb4917155e159941400b86b9a8' + '76e7c36cc0fd7e200c8b0d220d05f084' + '804fbc692db4523e31fbe337c37cd958' + '7bd3d6b9d4bdfcd5c53002ed695c3be9' + 'b875123775d4aa52b747e9ef897cee4c' + 'a5ecf997b5afa853fd46840f1e9cc01e' + '352872240f6e1812fb27599f2d43ed5e' + '7f680543cca22102660e39d775ea4f1f' + '19c47a8901163e23fc937b2076812147' + '7c1b1105b5a70008c12b3a5195c5a789' + '3306f9408c61f622a185fd9e218199ef' + '88f466e2bd3ec4236f76d92b22cc5e12' + '8c655118c3cfc0063581f11f11f23817' + '0d481cfdd69a591881e358f6a4d45e3e' + '457aea13f02af3aa2bc690ab438e1f37' + '9b72f83a7e1142ab8839fd2350437dfc' + '7e640437184ff9874d50bba9ddd8b800' + '2f00074f37b3785df5781a750e4a8293' + '9b4295c47829adcc3832d2b9524c6a95' + '1dea8892db29f13a37acdb02ba635f80') diff --git a/libre/iceape-libre/PKGBUILD b/libre/iceape-libre/PKGBUILD index 25498025b..e1079d74e 100644 --- a/libre/iceape-libre/PKGBUILD +++ b/libre/iceape-libre/PKGBUILD @@ -1,9 +1,9 @@ -# 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 <emulatorman@lavabit.com> # We're getting this from Debian Sid _debname=iceape -_debver=2.7.5 +_debver=2.7.7 _debrel=1 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } @@ -11,7 +11,7 @@ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } _pkgname=${_debname} pkgname=${_debname}-libre pkgver=${_debver}.${_debrel} -pkgrel=2 +pkgrel=1 pkgdesc="A libre version of Debian Iceape, the Internet Suite based on Mozilla Seamonkey." arch=('i586' 'i686' 'x86_64' 'mips64el') license=('GPL2' 'MPL' 'LGPL') @@ -29,13 +29,13 @@ source=("${_debrepo}/`debfile ${_debname}`_${_debver}.orig.tar.bz2" ${_pkgname}-2.0-lang.patch clrf.patch libre.patch) -md5sums=('7a6e671485a75cd9495f346e0f8e4dcb' - '174e572e9d7b1b62a8e437f70fe771ba' +md5sums=('c1b1a38a1ee2d9ea7c4320ab6a45e380' + '0cb9bb2194cf4f9e4eb3e3d4281fef6e' '60ba9e8f2fafd20e41268af534a55ea7' '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-i18n/PKGBUILD b/libre/icecat-i18n/PKGBUILD index e6f2e82b8..aebc6cef0 100644 --- a/libre/icecat-i18n/PKGBUILD +++ b/libre/icecat-i18n/PKGBUILD @@ -1,7 +1,8 @@ # Maintainer: Luke Shumaker <lukeshu@sbcglobal.net> # Contributor: fauno <fauno@kiwwwi.com.ar> # Contributor: Figue <ffigue@gmail.com> -# Contributor: emulatorman <andre.paulista@adinet.com.uy> +# Maintainer : Márcio Silva <coadde@lavabit.com> +# Maintainer : André Silva <emulatorman@lavabit.com> # Based on firefox-i18n package @@ -10,125 +11,230 @@ # - (optionally) edit PKGBUILD.in # - Run 'make'. It will take care of everything else for you. -_langpacks=(af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-US 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 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) +_langpacks=( + af + ak + ar + as + ast + be + bg + bn-BD + bn-IN + br + bs + ca + cs + csb + cy + da + de + el + en-GB + en-US + 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='icecat-i18n' -pkgname=($(for lang in ${_langpacks[@]} - do echo icecat-i18n-$lang | tr A-Z a-z - done)) -_pkgver=12.0 -pkgver=12.0 -pkgrel=2 -pkgdesc="Language packs for GNUzilla IceCat." -arch=('any') -license=('MPL') -url="http://www.gnu.org/software/gnuzilla/" -depends=("icecat=${pkgver}") -source=($(for lang in ${_langpacks[@]} - do echo http://ftp.gnu.org/gnu/gnuzilla/lang/$pkgver/$lang.xpi - done)) -noextract=($(for lang in ${_langpacks[@]} - do echo $lang.xpi - done)) +pkgbase=icecat-i18n +pkgname=( + $(for lang in ${_langpacks[@]} + do echo icecat-i18n-$lang | tr A-Z a-z + done) +) +_pkgver=14.0 +pkgver=14.0 +pkgrel=1 +pkgdesc='Language packs for GNUzilla IceCat.' +arch=( + any +) +license=( + MPL +) +url=http://www.gnu.org/software/gnuzilla/ +depends=( + ${pkgbase%-i18n}=$pkgver +) +source=( + $(for lang in ${_langpacks[@]} + do echo http://ftp.gnu.org/gnu/gnuzilla/lang/$pkgver/$lang.xpi + done) +) +noextract=( + $(for lang in ${_langpacks[@]} + do echo $lang.xpi + done) +) build() { - cd "${srcdir}" + cd $srcdir } -_path="/usr/lib/icecat/extensions/" +_path=/usr/lib/${pkgbase%-i18n}/extensions/ for lang in ${_langpacks[@]} do eval " package_icecat-i18n-$(echo $lang | tr A-Z a-z) () { - install -Dm644 '$srcdir/$lang.xpi' \"\${pkgdir}\"'${_path}langpack-$lang@firefox.mozilla.org.xpi' + install -Dm644 $srcdir/$lang.xpi \"\${pkgdir}\"'${_path}langpack-${lang}@firefox.mozilla.org.xpi' } " done -md5sums=('334d06cd9e32b2c3df5129dba4f0f474' - '99954e582ddb9bbd8965e6468e7d9799' - 'a2b777edb9a595b4c427716458ffdeb6' - '2d1796a37f2e927b5939de257dddab4e' - '17589c7d8994d4f62fd95fddc2c0c796' - '27f9d4029dbab73d9f5c6a7c169c1811' - '5d13f0aeb780e4d3693bf62be21e6e11' - 'c47f6aaa0b33261e7277f6d807e88396' - '0d87bb53f0b71634c189eeb3f3d64bc5' - '2ada422bef681cee2bd7e667a9090d6a' - 'fc8bc018c6d41c2fcb883734e37b518a' - '5e9b488cd52a42e235169de3a4b4cea2' - '0b781ce69f571797d3dc1fd5b70d882c' - '5ae943ee2293fd427a0072f1c95dd2e9' - '15d2a2076008efefdb7d031f4d0b1663' - '71a45cefe3b5f45de4ff784ca1a4fe1e' - '98e6f6de8c0184f339cc1b88e31e285b' - '43f9c2a3e9580b6a2adcc36dba4c0755' - 'a12665f7c8e6121e82c6c0be91da3f2a' - '7268181e8190cb62685c365fb99d9102' - '6f60912c53bd21acd99ee11abd5862d9' - '25f2c8a6665f6aef75204b1bcd0c0ff1' - '6e3516383f6eaad4bc1abe5fdd212d26' - 'c76f8a91086735c8252eab0d90e163e6' - '85cf430e36e70713b715fca4e1ac3410' - '60f3573882bbd1dc0ed0f16518660bf9' - '6c51beefb2da7add8c8c635efc2fc565' - 'e2d4d8182716b329249619d227d449f1' - '28facbc470554488b0a722cb0c3d53d3' - '3b167b50c188ef190fbad18077aacc0d' - 'f8edd8921fb8fa24099d1725fc478a2b' - '5b90202d9288d073e5f401b498355c13' - 'ec8478b6e0420484de8d7332bafafac2' - '9d932bc91062a58b0509b5395403c708' - 'bba6d905218c4a2b3d6e289e3ef35186' - 'b32d1ad6e5c8ed52cde0ea351290fd17' - 'd0d1d307c87ec8c8102527944f05887e' - '2605d5226c23205f3c7cd5466059b802' - '2b800c1c729d3b65ae38050bd4c06af1' - '8744ce05e573acefa9f802e53da2aea4' - 'edd3e216b37ee32fd517c2b49e85439a' - 'd9786706c058b1e4acac62f07deac285' - '6377004ddaa6731734696509be6dda53' - 'c73bd01ab8c5a25e234e51082978f7f5' - 'b44a3df07e663803234c72f359d06422' - '81c646a84b4f56d4721bec4013c123bf' - '9b678f5dbb7243b9e5751d04b988b640' - 'c237afb9ed6819a6219383590a8ee448' - 'b27c9236866dd55ee01a6e3929752767' - '8d527119a84f22840a919bc35ed612c0' - '1b51158c8c218544654245c418943c3a' - '1314bbc8cde2babcf6e807f7f958152c' - '59eb9146f16189932d9d5eea536cd8af' - 'a427b45282c6f8f4f1646050e9a93f71' - '618771f03f807603b2efed2760f6004c' - '56ca63d8c797d47fd3b6c094390990d7' - '24bde56465d7ab923fed3e23eca59d42' - 'ff9858a371df54c25f77ea4a5d1091f9' - '6135b885b12ccc64d5c93f385d5c62ad' - 'f98347a6ae9db6faef247373fd5092df' - 'e58f094448b085636c9e9435ef22fb53' - 'ed073cd4a1f3bbdcec1ee56334d8b9d3' - '988a1c279f94941bd4ab3b90cfad0bbe' - 'd8bc3ee80be944051f975a2534651ce1' - 'bd94ef18efe11eeee93a0ff1dc602301' - '20a8381c88b1735c558316936469c1a9' - '064d6f05f7b4c1ce8c5e0f083eccef15' - 'c22c4fb9da7cdee2cb29119e7c4f3696' - '50071d48b92f373713f6f8ee483b6f7d' - '518fbbf3838332da2e561565d29281bf' - '2a5a42ad2110e7e24c967233fdc0dc2c' - 'd21424a551ff625034b6e015f0eddcc4' - '829a1e6fe575e761f97564f68a1859ec' - 'd1047468370b7cbb766ed688107ca879' - '27f3609a99c3be8e59cfc700e251a5d7' - 'c7eb3ef0bedc610065713da9a55e2bf9' - '9125fcb792da1e58f00c43ec5b7bce97' - '5b9dd2a8ac84aace97a6095042ea537b' - '13be748a3331f2a9fac691dec7173aa8' - '0b694233f5385e0e5898d4b64a683bbc' - 'ad037272aabcc3b58fd2141447113905' - '347f53738950c9927b19ec3462840696' - '4fc25f81dd0b744aaaea5705dd36d943' - '5c96e79fc7463907b1c635586c910a71' - '50b1dcbd0eaf9d62b3f9050598298933' - 'c40de39f9502a8789f8301581cad25b4') +sha512sums=( + 765390ba04d88b4b56cebab007f9f593e33c54fe3cd8dbbafdb48171db68e23cd4e1c3d8360f2ef641a537e27f1d6db1aa8a0bdade854d3151359ecab6676af9 + 2b21f849299e7185163ce99e91aa612f64094cdf792bb855eb8836be940c0ef1cdfd33da080a793def714874810b269373f0c80830f42919f967417356efb86f + 86a79b1a785c967d56bb492a1c5867c42ac00832813a72027cc0a51dd940c1020dc7c911109efd9eb4ef1a9d996eea6382cd0a03a6a53e3347f909a28a3a943d + 727e3f44812c9c56620b7871fcffb28ebabef460fc52f483402fae787d90f3f197703e0bbde689a744e1135602b5ee765023402e0d365812e8521f8cf9dd2791 + 06989be3fd8d73f7887dae3bac7b0bdc80c7a11b7e6c8630da0ee4652f0ffbd60e01c049242ab3b61555f84485ce9b2f098c80cf6dba41538442cdc5cbdded9b + bc9e19e9e216df4acb8d9bccae2e0e426ab402998934ad9393cf86a2a81c6d20c7ba622d1f312dd70a62c8659b611421904ba0aa5aa7e3eb7ece5ed578cbdd81 + f12d343a5b5f9f35d3d112f041baa29919bfda8bf4c22353ac899ee65eda438c6a9ed243e7a03fb659aff0f9c448bfa5146807b8d3eafa9dd7b8384d7a0d8124 + 11cedfcd91a550fa1f65d1eca4ebac97ecd7c823e7a41e74f908ae1dc0b36b7cbb0c91c2640de5a0ba61c6820c0101c195bb31482376880025b494b280c7274d + 51f0b5e575f99b718b5ca96416148cced3a2c3fcd512e7135d3062fbc6e3c0ede86cb5bbda4a0bed43f6bd73d5c493a97c5bfbf373a92edb48b4a299b27a4f4d + de166d28ba81758d002712c408eada0ca5955e9b6275bc5f491177496f79f8de9dd5d5cd10cda5bc7671c56d7b5d15e136910d671da58ab1363b4dae769b58c9 + 79c0d107c1c61cd6281e0c545f10389a9968b7f49f27a4ff531c729c608cfff9107430f6d7b323a9f00cd2259ef5787db817b7aaa226272e7347413e0a50be83 + a1f5399254c5ce261468dbf539072371a51796de02331e173f8c44704f95d7784280115f7ba1deb46874caeccdeb925d9fe540dc8b5ada5970df6274a06f3429 + 11a278717f5da5a6d284242863bda3142ba4263946104fdbd86545f741127a368138bd4f7d0bd7bf377795d5d36fc61544b585dc044d5a6ddf93ce077f1e747f + 34a995016f4d7bff5c972bb4ef252a0ddac4f0b36943c7e4f8fbb899827aec307a081a7a30f1cb1fdf8c84af82f8f32675c57c45c39f7e47f21aacb75438be48 + fc5d410a903912f05886c4573a3b199efae22f8c9810a7bfc6acf8b5851b1791d97bd562a9c77204b7cf9091e0731ffe332c640d8693165f69cb934e8d523e04 + ab03d3e5391f806b6733078501d8a767cf2267d126cba284d473de21a7c976e55bd7ba63e3489336232ee9f5a7672b8c436e19adcfc68fe2a69db4e08b6f4b19 + fa55b4a26a346c21f0b98c137c4fabbd7aaaa61de45da89ca26c78044d23be8333f2d0c849ec5a34ff7517a556a979ee98b1ce87f02174fcb695632bbbb5edeb + 1ac410bd9b30d917b77ebac3ba08e25adaa4a20a6a77d13229a0efedca7a3b650777a6ca71675fde69f06137b09150dd2dee89760b93801dcf14b2801e6e5ad8 + 0b37ef6936f78c0384c36be7ad174cb90b5ca55b77128de6cdb6663de191144392728fccabc2baca25cb2d0f1ba69b80598bbf531e18b473a9515b553c1f594c + e2d4d6f1fc470d17dfc35b193c20f23b07dfbe54cad1b4f47d2f534493ea297dbdaf15e6c9b1556049c2db314dde66701a0624ef8af8f85f9cebbbf30f50ab3f + c3874b81b84de34fd9cfbb8b009dd033e57ffc726f7b607d895a917e4eb7ef9770ec0e24e0c41cdcd82f29c8140438101c1d1263ee64fbe0117c6b1510c0ed54 + e06f5da5fd157045be13459635b881cd09c92cc5f56af7d745afbdb52889ff18e23a75475331cc13471d9e7aefe157f43ae83074856d81e4f4ad0a9b275d58a5 + f04c77b037b04bf69929cdd712126b6c08a786d7a66181b3e536ca97c750506963b699dd8c4374fc01a86e694100f3fd9ed15d88ada0ef52364f492c5f61bb16 + f538442bf340e7856522288498de54a28dd0b25f36ad7897d1e444e46e98d17c0e5432c6f40e02c49cacacbe5b6b87a4db0dfec3f79e52df91ef278e15afdd73 + 9154c78adb5ec3d4c5dcb69bd61fb2b9a98a908f3fb6344ca5ba2ac96145ab8e770ad786b2c704f522c9f6cf61fdaf256e309e85bf105bbd83df892840804fca + 5c80bddaf0e51984034aac3d211327f89209673cceee5fc30dc4d9958cf44f564ce7aae995795987885c560a427a0098958fdcbf4534f5c84ec9778a3cd555c5 + 1d8a8a3fe5b2ade77dbd7b6f7fee74cd82452ec4eeee42bcb590b6f919fbccd9d345dc1ac2c171d265882e3583b6826778df73713e23df4c4ca66cfed594971b + 6d060b98e0a1d27b87d2e3b4c038756897af223759a53e3ce31beca9244d27f71610e5bc87ffbc5c53aced569165067ebf07720e33ee2ac27105a981dbc201d4 + 646eaaedec5aca57f26c0e1a8cc415e1607efc72a1f37205c40a22ee38e334ec138851375b0091c5d5ea5d8c5d7a2e2e90422e6aec0ddf6079a46f09696911b0 + a7619e2cd951f2b6c87f54386159fbffe5ef3895b05ac5422c76403b8cfd31b05ce98e3dd1532b79e81629adab828149c7154ba861d0bd4760a24ba74a8f4293 + 06dc48e0368927111fc7b4d3ea86c1a8a3a4b077fe0bddd434cf388c9048d2ea0cbd6184becfb2d02005c2e3ed6351e019a086a705c558a8e1e2df0a2816516f + 5b2120ffe02f469c1b52f0c4d9255619781aeac36e40c8df700707c955118ec298b78474ac2a17cf9d2823f049e9e15596fc58c4cffb5ac07315f9a73f7e2ad3 + c3141419942b85f93b2d6f5643544987f57e2805f1586c40ba91b814876cdf635f2500d350ad2a335cf440405716ed8e212221a7a9140cd8a4c3edee67fd3658 + 5fab16a0210bb6d6bcd18701ec0ff669bf5a971dd9f6953186864e09758ca37283af88c7dfec120cef87b9372bad61ac76d8248dad2bea68ca86b3a6410bc446 + d793679d2b51ecf41c0265e9bd9549d8bdae7d1db2afee631088bbf0aee314f16037840fcef8a1241519b952cdebec7f3eecedf3583ccdb92514d855d8577eb8 + bf658f472d23871cb3b54f9100bf3e935985625b4607330dff318315b9b56eae913c020ec69b0465f6a5cb3ac508e39bc0597e65cc940c20db7a63e3728dd632 + be75a19e56a39b597a88133071ca8f8d8ad2931d9accf47db3370d72c5d0dc9fd1c206f70ba64643a1657198ee930eb8884f36e2f9a2e7dbafb9bcd624c1c993 + b2ba8025736c7c8b40661826908c046e9ba8d61c1f273594d043c56f62dec39ed8e27c428a9444b946c2f638bdf60af5b9c5bd90b578d37dcdd884a9b0766d83 + cb140b72c26eb8e0d150cfac0da9a74932f2764911764d2ba326a6c059547e8e6ad1a5b5f6630b55f8dff1290182672c0c6016cf863b22a0e17524a79c1b835e + 5b6426c3c68ead2e9dd4975d18d671bdead44e455ee2802935fa34d153a9a651af765f25731ff0cd462823c85e60b3ad13b9e4a340c80e5b6435d9cb74545a89 + 03501a4808ba5cb0c9a94b61843a33604fde88d00bac2cc0e141975cef5ccc2ad4de219bcc077b92191fa45ba228dff3920c206add564a4331ccfbe02a8f69db + 5277580baa12169d15396ee08d019f5a1fa4cca86ba52e0e2dd05b0f497599cd5c560638ed502b842328c3e767a0f2bffcb6cfdbeada4d7613ff9f9040bd416f + 6656d0508d65c6e860fe66f5d1180c6040f03ac0579a85dded1f3e2b3d26341be4da8c423029927443ac99dfd52a954aa21f1a06a729ecaa4dca1522ccdd9333 + 4dcc6b8f1305d3b9ee3b6f90a92d169d8c9a3d6aec52b92c320a9cad88fc7c26567a343e201d943c56e721c587d2bbd74bbcfdb29fc0a2691f85e9262fad5dbd + 046b6d47386940892f07a10f564b9bbd0fdf7094a0e1f468f42d4b33514d8122b54a78fd6de09ad442a497eba266ad459733a86eda417c87db91d988c9d1ce2d + 0334bb286b560fa28ce9763868110970043155a24f6fec9b01611639add7b2f98781692d4ef84244d67c91afe477a9b1984aaedcba570ad0169c77d904cf865f + 6dda8b0cd0b5862520812ad2e2d4a5ee7d4be030565dcec55cefb0ff3eb960fb1f18aa52ee437d96890ccc35483d93b4fa684ea042cbb530d038d99770e45760 + 5ba5df20669dd3b337dae8de5f909def9747f4c22c041108ca30398ff59004c4a37dbfe88c243d55af23ef85fbe4509d4a4ddda772626f5170573f89a6f7990b + 9dd8b244130b291d16390fabf3470235892ae2506f7020fb5e1a3dcf142a5f771e3ebc91a6b14036721dd216751764a2d5cd74a6f60db92cdbe62e97f69d6af5 + a64ef951b6f0e23d8407414b9c1a5f5c8eabf89d7680fcbedb5acb70a9ca7e4c3253437e2af23c4287ecb5638587bceed4a87edc990056b26199e8cd9b955275 + 57459b8e13110e89acaa042a3c7bcfdde40c8f5e7fe00277f38960e23a9e750b1a85fba35fff29c8eca0d0d6c2e38a357cc2692a80af70feef8816225a88805b + 33cd4be72524c0d0877760a882c79e47fff8036e455103a2587d2eb694715f081a5c95355a8a536df08da4a62c8872001db2a9a1431fe9803d2267a3e02334e9 + 5e653ab0eb49e89408b51f34a549f0f1ac20868d121f9688f04a53788748b69f7f4628355fb23de6c1f69aefbb244d646debf345bed8f98a9f16f1fbd785f116 + 04bcfcf4683ff0f0596e703ea280d843d42f5e883a7c252518c1cc1953b7a7391b38adcab720a020164fa6adfbdfc8f40255109641880c83815b4b5bdb218378 + 6d550a3a1b4e1c375e6754e0e81e049bb10c04ec87614266123076dbc71b518bac4dc03233c7f8fb022302e1d5f7ed0064efdf6a21a98d17b8b0600b04b540fb + a8a14d0095ed6cb5b6e06f9737cbd7923c4fbce394671e510e275198312144706fa3e3063f4f57a3cd4ec9b08714f8e6b9d01943613b0147502be77647cc9440 + 3fa8938e38ea904b31a086b7cf8221b5ec4aa3c125fab79a9c88e68cc799595117d2199b6fc80e8b7cc1a809e1a10c230a929f420e4ef25bbd04775a0dfd52e1 + 1cb6fca6e8214603b1d60f5c0a187514b002704d33811ce229129a223fd63d55b4aafb1ccd1ed21d003f32b983bff8f785c74b488673edb8a5027f336dfde5d4 + 6566215d680dabf8184ba6edd33ddeeec09d2e2544250e7cf5026c4ea420de6273568056ac403739649d1f2636764459525b847f9d6e21ff860d211bdd3a0eed + 2c085539c1ab882b0370b2112d517b8f1be1f5869560fa5c0242ccc159c01b9f1c770593e72cafa6eecc3e3e623fe33a9901b2e0d576d98c85219122cdb34317 + 1f7e9eb6351e8de6b709c0a31b1cfcbfa108288da5b5b99ea88235e568b84ee0a3eabd8814c5f4b9935caca467f4a8e4531317ba8abf2d6d3121def8682fa961 + fde912f0a7cfac59fad72a56ddfe6c7ff10fc51a53ac5b89229f08f18c4ff689eb15d2980d32433b640f62941e7b38c4bf147b7728c22849fb04da46a13ec707 + e8b4de904e52503028ba50ec96fc4cf151ccae03bf42240c680204fa1794233374db6a4cc3a2e13965c28af2984be9f55288b0a9f522ec0d1ae738829da04b52 + 5bf071de14dce19ef5faa4b0b35a0618eb65093283c22d4da16b45839b6b3cfd4314fb8173f419dd3596b9684fd7c6ca1258098e0b9c4167b1546987c0e93b1e + ba0af0ad267b49e2890e77568882eae7d34846208472bfa3299934ae6d40a9864e39340a8228dd6215988a3238dd59dc84856e0d7cb4375601b0018683e867e7 + 3aac042bc0107e8f5d25009266f61272edbb70cad3dd0e984344738995a2119df247a4664bbd1c2bf9f7f889d0f8cb7039b6e852208f2f0c6040ef8953072cc4 + 8c1621ad105104b6dff50fa769c2504d66ef0d1c716f954ab1eb83742efad48be22ec718d4520a262bc733b42c72ef1a0085d1a1868124c5c18a1b4141b89041 + 1da09d13349b54f21ccaa46c0d96c320ee940af10591755a55e8953187a6159b1e1ebe087e3061888dbdc43ee767ed59259312d10e04f1374c45a715d09935ff + f0430e711a97bc9b0603620ac4a9adf7f63916c5ccdea3db588679df6a36fc4ccf7a17c9f581f7fab679002c50e4f0b8708ae5a2ee9bce4cb1d39bcc2dc05aef + bef2db0771b5f7053366d0a2f4fc9cce96649af1aec497bb5f38b9fd3affa0fc662a194d2f69f8cc49121037350690b6506da6f6659c41bef734089c8c7da784 + b7585ac1320f12915f01359a573eeff3524fbe24a583476f12a18ce16389c00802f4e48ebc2d4ecdb002dbcca97a44ad5721b0445bcfe0dee220f7d90abef4a5 + 59e278a846484b7c57c978b66658031d23dfc297f63bd756f82701b700906f74322de60988cd481a84c48a7d5e828e411e2ca7e4e58f7f695016b6ffbd680af1 + 21dc4bcdece71d8d310e179c010dc6c4b089ab55315ba7c67aee7da5a93b3ffc22f27e0c10087137c594adf1114abdbeda2424d5ee8c4944e6ad2a780d93acfb + bf16ae0501316c61656147bdff8140e9f75bfbc9ee625e791b11531d019a6431d9c9ee4110f2d566ae4f11c8d6d4d035c3ebed1a0f6ee0d98f2ede52bcc91e16 + 32161e5a951c353456564b6b0a203e148986322eccf7169630bda6fe8e3913485d431940595a27ff3e9ed71d3a9f2b2a2fd2835363e5db69a2982273e321186c + 01f6d21908175d58123faa91ec0545a173226052632ef636a3b6ded2b77bd6554532eb94e2a87ae2a64ef62cceacf3fc800360232b11a51cc91dfde4397190d8 + 8f8275d5a4582b524a6dd31ee81afffe1ca8371a87f50cfb663ab397a5906f6ad485b7ed7c49781af9bce82ef5e34f2d3de883ed45a5972ccb187cdbdae9c7c7 + 7183274b7d97652ae635a971dd539d46d16a397eac1f3e51c93c53fb8abfd6eb01cdfd41f7c951847291b033a17e6566ea2b9a629dc5796f012bf1993ca14b40 + b35822f1b09062a9c5b6fa41e036657f68def07a15ee9d5f078d372fdc17bb36fa42f08c1a3ed73bb7eb63d290041f441a580c19ee1f2fe789575aa6361b0293 + c9d05ac24a63799805ebe257c11675c1400a014e0d8c408a02e9b3842ec7bf40922a76120297b6796bba3adff0d2449abe1068085176f0deec0463756e3b5c3d + 28ff49291b5cfc51acd878fee3e2de6693bc060ac8f4b1233d44cd5797bf2815c0a563f07decd38647d384f183fb9f945e1040d77bfde4503320a5af2b91482f + 8a137bc5d30e662a28fb809615ebf480503e278a5882aa81b71260d8c548b73e0401e458a6dc4cf0e9e9a61bbadb72a5d8c4e636d7ce616672bf7f10bd4dc810 + cfa399cf459b2487f260a7287b1ddfcbc8ecde9bda160f6f8036bbff7389a383be5acadbfad092b72cbf7d77d8b053fbe98b3df0ae6f01029b92e78bbbf681ba + 5553b2e0193fe0aa65cc88171b5358949906ee01292bc2b2aaf1bc7c330b703d998901999aa5dd923861886b589411b221ae00fc3323cc3bb23068dd21220601 + 502426fc851b9ce8782a7c73b6024492b8e7a46764eaaf2a3b4fef7546312dde9ae9d6a83619f93c3fa96e85767d0cae668f3f9d4cf16427d9b8e7f55163df41 + 5b48c402f4ac36366d157a30db3c36e0bbbf6f8601a498ef0d7cfac4899ed5a168826caae7427f949cef7c54fada0c4886b5f7b7c9efb933fc246781845d5db4 + e8b0a1580757da961551580dcb83fe5dca1a99e446fc9b0bf302e7eded06f4ad795650743b387c0ce05840f238940e0013019b4b36d9eaff1272057fe2949c0a + b2d8be6934966c477c07f6c7fbe341148b7cdb75aeb51ac0fbe15b72c933a2886454057237ae968a3ce7d3d8b7132b8d9f488dac8e68f6ed451c608c17738f27 +) diff --git a/libre/icecat/PKGBUILD b/libre/icecat/PKGBUILD index 8b0e01047..c90dc65f6 100644 --- a/libre/icecat/PKGBUILD +++ b/libre/icecat/PKGBUILD @@ -3,8 +3,8 @@ # Contributor: Figue <ffigue at gmail> # Contributor (Parabola): fauno <fauno@kiwwwi.com.ar> # Contributor (Parabola): vando <facundo@esdebian.org> -# Contributor (Parabola): emulatorman <andre.paulista@adinet.com.uy> -# Contributor (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Contributor (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> # Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com> # Thank you very much to the older contributors: # Contributor: evr <evanroman at gmail> @@ -14,104 +14,95 @@ # the value for 'browser.dictionaries.download.url' in 'libre.patch' _pgo=false - -_pkgname=icecat -pkgver=12.0 -pkgrel=1 - -if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi -if $_pgo; then - pkgname+='-pgo' -fi - -pkgdesc="The GNUzilla web browser, based on Mozilla Firefox. SafeBrowsing and other Google services disabled!" -arch=('i686' 'x86_64' 'mips64el') -license=('GPL2' 'MPL' 'LGPL') +pkgname=icecat +pkgver=14.0 +pkgrel=2 +pkgdesc='The GNUzilla web browser, based on Mozilla Firefox. SafeBrowsing and other Google services disabled!' +arch=(i686 x86_64 mips64el) +license=(GPL2 MPL LGPL) depends=( - 'alsa-lib' - 'dbus-glib' - 'desktop-file-utils' - 'gtk2' - 'hicolor-icon-theme' - 'hunspell' - 'libevent' - 'libnotify' - 'libvpx' - 'libxt' - 'mime-types' - 'mozilla-common' - 'mozilla-searchplugins' - 'nss>=3.13.1' - 'sqlite3' - 'startup-notification' + alsa-lib + dbus-glib + desktop-file-utils + gtk2 + hicolor-icon-theme + hunspell + libevent + libnotify + libvpx + libxt + mime-types + mozilla-common + mozilla-searchplugins + 'nss>=3.13.3' + sqlite3 + startup-notification ) makedepends=( - 'autoconf2.13' - 'diffutils' - 'imagemagick' - 'libidl2' - 'librsvg' - 'libxslt' - 'mesa' - 'pkg-config' - 'python2' - 'unzip' - 'wireless_tools' - 'zip' + autoconf2.13 + diffutils + imagemagick + libidl2 + librsvg + libxslt + mesa + pkg-config + python2 + unzip + wireless_tools + zip +) +optdepends=( + 'wireless_tools: Location detection via available WiFi networks' ) if $_pgo; then - makedepends+=('xorg-server-xvfb') + makedepends+=(xorg-server-xvfb) options=(!ccache) fi - -url="http://www.gnu.org/software/gnuzilla/" -install=icecat.install -source=(ftp://ftp.gnu.org/gnu/gnuzilla/${pkgver}/${pkgname}-${pkgver}.tar.xz - mozconfig - mozconfig.pgo - xulrunner-copy-stub.patch - libre.patch - icecat.desktop - icecat-safe.desktop - icecat-install-dir.patch - vendor.js - gcc47.patch - cairo.patch) - -md5sums=('04a5504c5c473354bcd20f7116360fee' - '3117865902d1a20ab61d75707be9888e' - 'ac29b01c189f20abae2f3eef1618ffc0' - '683c4540ab84c220937feb7d1a1450ee' - 'd403b0ae09306fef3870132e7fd33ed2' - 'e81ad01dbc16ba28bf92ba4b7c309ca7' - 'd93fe402b87cd000a869e1fd6badc6c9' - '268e65c8fcae6152e156c09760a18dfd' - '0d053487907de4376d67d8f499c5502b' - '79e471e0bd03b1d4e84fd3a6776bd619' - '721c59ffc14f14cb0d3a90b7e84df70e') - -if [ "$_pkgname" != "$pkgname" ]; then - provides+=("$_pkgname") - conflicts+=("$_pkgname") -fi +options=(!emptydirs) +url=http://www.gnu.org/software/gnuzilla/ +install=$pkgname.install +source=( + ftp://ftp.gnu.org/gnu/gnuzilla/${pkgver::4}/$pkgname-$pkgver.tar.gz + mozconfig + mozconfig.pgo + xulrunner-copy-stub.patch + libre.patch + $pkgname.desktop + $pkgname-safe.desktop + $pkgname-install-dir.patch + vendor.js + cairo.patch +) +md5sums=( + 6bb02202cd568e8a4f43239b8f52a4a7 + 3117865902d1a20ab61d75707be9888e + ac29b01c189f20abae2f3eef1618ffc0 + 3009b176cc5f9b1e416b1bf7c45b064b + 72e6bb9ebebe555b4ab961add3df3b27 + e81ad01dbc16ba28bf92ba4b7c309ca7 + d93fe402b87cd000a869e1fd6badc6c9 + b320085e7effa2890a79f4f45760614b + 0d053487907de4376d67d8f499c5502b + c8552d030494443218d88792f4dbbd0f +) build() { - export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$_pkgname" - export PYTHON="/usr/bin/python2" - mv "$_pkgname-$pkgver" "$srcdir/mozilla-build" - cd "$srcdir/mozilla-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 + mv $pkgname-$pkgver $srcdir/gnuzilla-build + cd $srcdir/gnuzilla-build + cp $srcdir/mozconfig .mozconfig # Load our build config, disable SafeSearch if $_pgo; then - cat "$srcdir/mozconfig.pgo" >> .mozconfig + cat $srcdir/mozconfig.pgo >> .mozconfig fi + patch -Np1 -i $srcdir/$pkgname-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/cairo.patch # fix cairo + + # Fix for use nspr, sqlite and nss external + sed -i 's/\(MOZ_PKG_FATAL_WARNINGS =\).*/\1 0/' \ + browser/installer/Makefile.in [ "$CARCH" = "mips64el" ] && echo "ac_add_options --disable-ipc" >> .mozconfig @@ -120,7 +111,7 @@ build() { browser/base/Makefile.in # This is a bug, we should fix it. - if [ "$CARCH" = "mips64el" ]; then + if [ $CARCH = mips64el ]; then # Fix MIPS N32 support. sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \ js/src/assembler/wtf/Platform.h @@ -134,44 +125,43 @@ build() { fi chmod +x build/unix/run-icecat.sh # fix bug for bad file permition + export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$pkgname" + export PYTHON=/usr/bin/python2 if $_pgo; then LD_PRELOAD="" /usr/bin/Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 :99 & - LD_PRELOAD="" DISPLAY=:99 make -j1 -f client.mk profiledbuild MOZ_MAKE_FLAGS="$MAKEFLAGS" + LD_PRELOAD="" DISPLAY=:99 make -j1 -f client.mk profiledbuild MOZ_MAKE_FLAGS=$MAKEFLAGS kill $! || true else - LD_PRELOAD="" make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS" + LD_PRELOAD="" make -j1 -f client.mk build MOZ_MAKE_FLAGS=$MAKEFLAGS fi } package() { - cd "$srcdir/mozilla-build" - make -j1 -f client.mk DESTDIR="$pkgdir" install + cd $srcdir/gnuzilla-build + make -j1 -f client.mk DESTDIR=$pkgdir install - install -m644 "$srcdir"/vendor.js "$pkgdir/usr/lib/$_pkgname/defaults/pref" + install -Dm644 $srcdir/vendor.js $pkgdir/usr/lib/$pkgname/defaults/pref - brandingdir="browser/branding/unofficial" - icondir="$pkgdir/usr/share/icons/hicolor" + brandingdir=browser/branding/unofficial + icondir=$pkgdir/usr/share/icons/hicolor for i in 16x16 32x32 48x48; do - install -Dm644 "$brandingdir/default${i/x*/}.png" "$icondir/$i/apps/$_pkgname.png" + install -Dm644 $brandingdir/default${i/x*/}.png $icondir/$i/apps/$pkgname.png done - install -d "$pkgdir/usr/share/applications" - install -m644 "$srcdir/icecat.desktop" "$pkgdir/usr/share/applications" - install -m644 "$srcdir/icecat-safe.desktop" "$pkgdir/usr/share/applications" + for d in $pkgname $pkgname-safe; do + install -Dm644 $srcdir/$d.desktop $pkgdir/usr/share/applications/$d.desktop + done - rm -rf "$pkgdir/usr/lib/$_pkgname/"{dictionaries,hyphenation,searchplugins,plugins} - ln -sf /usr/share/hunspell "$pkgdir/usr/lib/$_pkgname/dictionaries" - ln -sf /usr/share/hyphen "$pkgdir/usr/lib/$_pkgname/hyphenation" - ln -sf /usr/lib/mozilla/plugins "$pkgdir/usr/lib/$_pkgname/plugins" - ln -sf /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$_pkgname/searchplugins" + rm -rf $pkgdir/usr/lib/$pkgname/{dictionaries,hyphenation,searchplugins,plugins} + ln -sf /usr/share/hunspell $pkgdir/usr/lib/$pkgname/dictionaries + ln -sf /usr/share/hyphen $pkgdir/usr/lib/$pkgname/hyphenation + ln -sf /usr/lib/mozilla/plugins $pkgdir/usr/lib/$pkgname/plugins + ln -sf /usr/lib/mozilla/searchplugins $pkgdir/usr/lib/$pkgname/searchplugins # We don't want the development stuff - rm -rf "$pkgdir"/usr/{include,lib/$_pkgname-devel,share/idl} - - # Fix a bug with https-everywhere (duplicate rules) - #rm -f "$pkgdir/usr/lib/$pkgname/extensions/https-everywhere@eff.org/chrome/content/rules/GoogleMaps.xml~HEAD" + rm -rf $pkgdir/usr/{include,lib/$pkgname-devel,share/idl} # Workaround for now: https://bugzilla.mozilla.org/show_bug.cgi?id=658850 - ln -sf $_pkgname "$pkgdir/usr/lib/$_pkgname/$_pkgname-bin" + ln -sf $pkgname $pkgdir/usr/lib/$pkgname/$pkgname-bin } diff --git a/libre/icecat/cairo.patch b/libre/icecat/cairo.patch index 981eff883..a1fabee90 100644 --- a/libre/icecat/cairo.patch +++ b/libre/icecat/cairo.patch @@ -1,16 +1,6 @@ -From: Uli Schlachter <psychon@znc.in> -Date: Thu, 17 May 2012 10:51:11 +0200 -Subject: Bug 722975 - Make system cairo work again - ---- - gfx/thebes/gfxPlatform.cpp | 16 ++++------------ - 1 file changed, 4 insertions(+), 12 deletions(-) - -diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp -index fb06fba..a0edefc 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp -@@ -436,11 +436,9 @@ void SourceBufferDestroy(void *srcBuffer) +@@ -459,11 +459,9 @@ void SourceBufferDestroy(void *srcBuffer) static_cast<SourceSurface*>(srcBuffer)->Release(); } @@ -24,7 +14,7 @@ index fb06fba..a0edefc 100644 origSurf->SetData(&kSourceSurface, NULL, NULL); } -@@ -512,14 +510,8 @@ gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurfa +@@ -535,14 +533,8 @@ gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurfa imgSurface->Stride(), format); diff --git a/libre/icecat/icecat-install-dir.patch b/libre/icecat/icecat-install-dir.patch index 6609650da..eb698f307 100644 --- a/libre/icecat/icecat-install-dir.patch +++ b/libre/icecat/icecat-install-dir.patch @@ -1,9 +1,8 @@ -diff -Nur icecat-12.0.orig/config/autoconf.mk.in icecat-12.0/config/autoconf.mk.in ---- icecat-12.0.orig/config/autoconf.mk.in 2011-12-31 17:07:52.000000000 -0500 -+++ icecat-12.0/config/autoconf.mk.in 2011-12-31 17:11:18.000000000 -0500 +--- a/config/autoconf.mk.in ++++ b/config/autoconf.mk.in @@ -74,8 +74,8 @@ mandir = @mandir@ - idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION) + idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) -installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) -sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) @@ -12,9 +11,9 @@ diff -Nur icecat-12.0.orig/config/autoconf.mk.in icecat-12.0/config/autoconf.mk. DIST = $(DEPTH)/dist LIBXUL_SDK = @LIBXUL_SDK@ -diff -Nur icecat-12.0.orig/js/src/config/autoconf.mk.in icecat-12.0/js/src/config/autoconf.mk.in ---- icecat-12.0.orig/js/src/config/autoconf.mk.in 2011-12-20 18:28:21.000000000 -0500 -+++ icecat-12.0/js/src/config/autoconf.mk.in 2011-12-31 17:11:43.000000000 -0500 +diff -Nur a/js/src/config/autoconf.mk.in b/js/src/config/autoconf.mk.in +--- a/js/src/config/autoconf.mk.in ++++ b/js/src/config/autoconf.mk.in @@ -60,8 +60,8 @@ datadir = @datadir@ mandir = @mandir@ diff --git a/libre/icecat/libre.patch b/libre/icecat/libre.patch index ff7f6f4ed..18dfcc177 100644 --- a/libre/icecat/libre.patch +++ b/libre/icecat/libre.patch @@ -1,39 +1,144 @@ -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 -Nur a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js +--- a/browser/app/profile/firefox.js ++++ b/browser/app/profile/firefox.js +@@ -70,6 +70,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"); -+pref("extensions.getAddons.getWithPerformance.url", "http://www.gnu.org/s/gnuzilla/addons.html"); - 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 @@ + pref("extensions.getAddons.get.url","http://www.gnu.org/software/gnuzilla/addons.html"); ++pref("extensions.getAddons.getWithPerformance.url","http://www.gnu.org/s/gnuzilla/addons.html"); + 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"); +@@ -87,7 +88,7 @@ pref("extensions.update.autoUpdateDefault", true); // Dictionary download preference -pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/"); -+pref("browser.dictionaries.download.url", "about:blank"); ++pref("browser.dictionaries.download.url","http://www.gnu.org/software/gnuzilla/addons.html"); // The minimum delay in seconds for the timer to fire. // default=2 minutes -@@ -242,7 +243,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 -Nur a/browser/base/content/aboutHome.js b/browser/base/content/abouthome/aboutHome.js +--- a/browser/base/content/abouthome/aboutHome.js ++++ b/browser/base/content/abouthome/aboutHome.js +@@ -38,104 +38,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 +@@ -143,7 +45,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" ++ "https://www.gnu.org/software/gnuzilla/?WT.mc_ID=default1" ++, "http://www.gnu.org/software/gnuzilla/addons.html?src=snippet&WT.mc_ID=default2" + ]; + + const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day. +diff -Nur a/browser/locales/en-US/chrome/browser-region/region.properties b/browser/locales/en-US/chrome/browser-region/region.properties +--- a/browser/locales/en-US/chrome/browser-region/region.properties ++++ b/browser/locales/en-US/chrome/browser-region/region.properties @@ -1,28 +1,28 @@ # Default search engine -browser.search.defaultenginename=Google @@ -70,14 +175,66 @@ 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 # 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 -Nur a/browser/locales/generic/profile/bookmarks.html.in b/browser/locales/generic/profile/bookmarks.html.in +--- a/browser/locales/generic/profile/bookmarks.html.in ++++ b/browser/locales/generic/profile/bookmarks.html.in +@@ -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 -Nur a/build/pgo/blueprint/elements.html b/build/pgo/blueprint/elements.html +--- a/build/pgo/blueprint/elements.html ++++ b/build/pgo/blueprint/elements.html @@ -143,7 +143,7 @@ </p> <p> @@ -87,9 +244,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 -Nur a/dom/ipc/test.xul b/dom/ipc/test.xul +--- a/dom/ipc/test.xul ++++ b/dom/ipc/test.xul @@ -294,6 +294,6 @@ oncommand="document.getElementById('page').QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.delayRemoteDialogs = this.checked;"/> </toolbar> @@ -98,9 +255,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 -Nur a/layout/ipc/test-ipcbrowser.xul b/layout/ipc/test-ipcbrowser.xul +--- a/layout/ipc/test-ipcbrowser.xul ++++ b/layout/ipc/test-ipcbrowser.xul @@ -69,6 +69,6 @@ label="setViewportScale"/> </toolbar> @@ -109,42 +266,33 @@ 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 -Nur a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js +--- a/mobile/android/app/mobile.js ++++ b/mobile/android/app/mobile.js +@@ -230,13 +230,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", "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"); +-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", ""); -@@ -243,7 +243,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 -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 -Nur a/mobile/locales/en-US/chrome/region.properties b/mobile/locales/en-US/chrome/region.properties +--- a/mobile/locales/en-US/chrome/region.properties ++++ b/mobile/locales/en-US/chrome/region.properties @@ -1,18 +1,18 @@ # Default search engine -browser.search.defaultenginename=Google @@ -166,12 +314,12 @@ 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://duckduckgo.com/lite/?q=site%3A{moz:domain}+{searchTerms} +-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= # 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,21 +337,54 @@ 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 -@@ -47,7 +47,7 @@ - // SYNTAX HINTS: dashes are delimiters. Use underscores instead. - // The first character after a period must be alphabetic. +diff -Nur a/mobile/xul/app/mobile.js b/mobile/xul/app/mobile.js +--- a/mobile/xul/app/mobile.js ++++ b/mobile/xul/app/mobile.js +@@ -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", "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); + pref("accessibility.typeaheadfind.timeout", 5000); +diff -Nur a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js +--- a/modules/libpref/src/init/all.js ++++ b/modules/libpref/src/init/all.js +@@ -52,7 +52,7 @@ + * - Computed values (e.g. 50 * 1024) don't work. + */ --pref("keyword.URL", "http://www.google.com/search?ie=UTF-8&oe=utf-8&q="); -+pref("keyword.URL", "https://duckduckgo.com/lite/?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"); 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 a/toolkit/locales/en-US/chrome/global-region/region.properties b/toolkit/locales/en-US/chrome/global-region/region.properties +--- a/toolkit/locales/en-US/chrome/global-region/region.properties ++++ b/toolkit/locales/en-US/chrome/global-region/region.properties @@ -4,10 +4,10 @@ pluginStartupMessage=Starting Plugin for type @@ -214,157 +395,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 - -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" - ]; ++more_plugins_label= ++more_plugins_url=about:blank ++pluginupdates_label= ++pluginupdates_url=about:blank ++plugindoc_label= ++plugindoc_url=about:blank - const SNIPPETS_UPDATE_INTERVAL_MS = 86400000; // 1 Day. diff --git a/libre/icecat/xulrunner-copy-stub.patch b/libre/icecat/xulrunner-copy-stub.patch index d69bb4b16..8ccf127df 100644 --- a/libre/icecat/xulrunner-copy-stub.patch +++ b/libre/icecat/xulrunner-copy-stub.patch @@ -1,6 +1,6 @@ ---- icecat-12.0/browser/app/Makefile.in~ 2011-12-25 16:19:29.000000000 -0500 -+++ icecat-12.0/browser/app/Makefile.in 2011-12-25 16:19:55.000000000 -0500 -@@ -224,7 +224,7 @@ +--- a/browser/app/Makefile.in ++++ b/browser/app/Makefile.in +@@ -233,7 +233,7 @@ else ifdef LIBXUL_SDK libs:: diff --git a/libre/iceweasel-i18n/PKGBUILD b/libre/iceweasel-i18n/PKGBUILD index 9e0469437..47a48dc9c 100644 --- a/libre/iceweasel-i18n/PKGBUILD +++ b/libre/iceweasel-i18n/PKGBUILD @@ -9,18 +9,18 @@ # - Run 'make'. It will take care of everything else for you. _debname=iceweasel -_debver=13.0.1 -_debrel=2 +_debver=15.0 +_debrel=1 _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=15.0 pkgver=${_debver}.${_debrel} pkgrel=1 @@ -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=('41a9b0d39466ec63707c77feb010f97c' + 'a868d76268f52f911683dce647af46b5' + '9eec699d60ca812ffbbf5939522b8393' + '388f4fbbe2266ba7b4896075c2bdbaef' + 'c64bc2261a3a5767f714a460255b15d5' + '2fc0a0395c1d92dd2529291258b7240b' + '0f59e1738c1b37d54b3bb05c2f7853a3' + '68ebd3ec4fc55187dafbfe599f62112e' + 'be4852fbb9c11b36648205f8f1f6cbd1' + 'e68a36c7cefc90e3c61f7d134bb838c7' + 'd242789df2d520b65fc88c1d3df0eae0' + 'e6c527cde3251a8409f16ea0bb278b03' + 'beeba513659afd8e0887a44a9cc44a57' + 'e8f4d9eee6eb1c270f99ddf08359c672' + '618fa08cfbe2ff33581ace766b2828fb' + '0d31f1a718ed91b6b1df885b205c7a75' + 'd823ae880fb0a193d107bc9546206299' + '4c446ef16e61f335f93eace4251f5d8c' + '2129b44ef2edd6223ff731e05aae5112' + 'ca4b27e3b8b9235235b0c59e7fb5e343' + 'ce2f7887eb064983923d917b094d14c2' + '8a5b6b934eb27b706aa52945256f32cf' + 'd6396fe6459c597572a10d1e02f195eb' + '78281b9ebd8a78f37ff6a8af07518cb7' + '36add693276f7d5c73f59e927d4645e4' + '93cafe70ca3b3b36ba0a56b4b4b4a7f9' + '6d911ee10f75ad316861ee6b8c435887' + 'ccd8d4f9ed54aa56e728508e42ec3538' + '4ef4fb5ef6b814bb414e4fed06ca7b14' + '7b49e8f2479c32c9435151a8e139f411' + '4f5974e5d1ec83a598892b729bbca5dc' + '3caf262ec4e12a3166cccbf2e163ec82' + 'eb4be46606957c856cf5d87c337184ca' + '45001918dacec18fb0db953c56e04032' + '766c6f9a84f6930317603d2014bd0a84' + 'bfe20727eb714f616c4a5cdee7300584' + 'fc6701b477ad209a3edb1429b529027f' + '5fb299bd54fd3fa10cf91d88d77df4e0' + '3b1988b200c303747aebfde97cb9333d' + '79bd597a764676dd1fddcf5e0a2aa646' + '9f63e8b4493063c770b835e80f883b66' + 'e9524c247402faaa8b767a93a5e5773a' + '457ae04a4f7437c0b16d1c021be71574' + '77828bdeef9d6e9b78719be537cb0491' + '4bb2c8bd527aed47ef0c50b3861fb2a4' + '4d94a161e882de38616c8344d1d2994a' + '098f4d49f2335cab2a5070c35d5f69e4' + '0deda71dbfb0b07b378de1de9209e047' + '331fab3aae394ef3a3674f4582d0b538' + '4daa8de8b393385d03379ed49b421bb3' + '60534b0e61dd9499ddb3ff3a29026b2f' + '519299dfc4764e987ece840b630fa8c9' + 'a13a1bc158353eadedd4d9a22f7a78fd' + '39804bd399a955cde36db0e7bfc0afd2' + '1c24d64463fb742fddb438939302a770' + 'a3246566714da549faaefed6a082747e' + '7d06acae2f3a3bc15344502cdef25bf0' + '68b3f9e98df3ddcca5458695297a6581' + '6cc30b2ec4e75c45a41bcd328385e285' + 'a0df4e646a376f8dce539309a057c340' + '8745389d916b522df730ea457fcc7b20' + '4982a6a88b3bf883b21633e3561a41d7' + '41ddec979a26c2fd6b212285cfa26b3c' + '7ac36674bd749e11c2a28cb646ed420c' + 'ba855d101c76ead73e7d4d7a74839a2b' + '4f2abadda53b3f0c0eeeb2bbefc96991' + '67e448c17a2ee9f981743427e6e69d69' + '90a365963d579ecb9d2681f0510b665f' + '92d635cf265e0eec023d80034b0d1cd0' + 'edd7160a59c4210b64bd384ee3196f76' + 'cd3c038c61d7ce643a01808ed88d92d0' + 'e5e07573a583ffc660f6ec846658b266' + '99e79e501170ca8a452d25eed5cfeab6' + 'dd6e06943820e0731d3b1697ac12d353' + 'c263cdeff3879481dc6b7cf44df9364a' + '3656bf7eba6a1042f3fa19c8cb494339' + '923313a52e0bf228fe2d41345401b296' + '1ba11249737fc1e2e61952e17fe764ec' + '8103d1b2f18f25df4b7702e3f1fc23ef' + '5d9cdf21c5bbd7bab97b10d9784f538e' + '4c032777e914f0e30cfeb2d1627f2b14' + '45a462e14b8e2c44d064f4bb6dffd3f5' + '075d374f6ee205df5b0f56629c0234fa' + '49517a540428d07cbf6809d96eecdd85' + '60f7b29f1325a6de41c45af2cb2423ba' + '8a000cb0afcb6655f7c626c05a313873' + '90e94eef2a30d9c20ecb0103d0203981')
\ No newline at end of file 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..240c3d4e8 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,99 +26,131 @@ 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 f030756..23e37ff 100644
--- a/browser/components/migration/content/migration.xul
+++ b/browser/components/migration/content/migration.xul
-@@ -76,7 +76,7 @@
- #endif
- #endif
+@@ -42,7 +42,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 d7fec75..d531b83 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}
+ #ifdef HAS_IE_MIGRATOR
+ component {3d2532e3-4932-4774-b7ba-968f5899d3a4} IEProfileMigrator.js
+ contract @mozilla.org/profile/migrator;1?app=browser&type=ie {3d2532e3-4932-4774-b7ba-968f5899d3a4}
diff --git a/browser/components/migration/src/FirefoxProfileMigrator.js b/browser/components/migration/src/FirefoxProfileMigrator.js
-index 7b4a6e4..add5bc4 100644
+index a6598fe..8f83da8 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 0669aa8..19552e3 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 21cf405..f3c1a6b 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 @@
+@@ -17,8 +17,6 @@
<!ENTITY importFromSafari.accesskey "S">
<!ENTITY importFromChrome.label "Chrome">
<!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 ab82d85..915f6b8 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
+@@ -8,7 +8,6 @@ profileName_format=%S %S
sourceNameIE=Internet Explorer
sourceNameSafari=Safari
sourceNameChrome=Google Chrome
-sourceNameFirefox=Mozilla Firefox
importedBookmarksFolder=From %S
- importedSearchURLsFolder=Keyword Searches (From %S)
-@@ -21,27 +20,27 @@ importedSafariBookmarks=From Safari
+
+@@ -22,22 +21,22 @@ 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
@@ -141,36 +177,14 @@ index 495ed78..0272654 100644 32_ie=Favorites
32_safari=Bookmarks
- 32_chrome=Bookmarks
--32_firefox=Bookmarks
-+32_self=Bookmarks
-
+@@ -46,4 +45,4 @@ importedSafariReadingList=Reading List (From Safari)
64_ie=Other Data
64_safari=Other Data
-diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js
-index c86d80c..ff1ccfe 100644
---- a/toolkit/content/aboutSupport.js
-+++ b/toolkit/content/aboutSupport.js
-@@ -608,13 +608,13 @@ function populateResetBox() {
- .getService(Ci.nsIToolkitProfileService);
- let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
-
--#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
--#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
--
- // Only show the reset box for the default profile if the self-migrator used for reset exists.
- try {
- if (!currentProfileDir.equals(profileService.selectedProfile.rootDir) ||
-- !("@mozilla.org/profile/migrator;1?app=" + MOZ_BUILD_APP + "&type=" + MOZ_APP_NAME in Cc))
-+ !("@mozilla.org/toolkit/profile-migrator;1" in Cc))
-+ return;
-+ let pm = Cc["@mozilla.org/toolkit/profile-migrator;1"].createInstance(Ci.nsIProfileMigrator);
-+ if (!("canMigrate" in pm) || !pm.canMigrate("self"))
- return;
- document.getElementById("reset-box").style.visibility = "visible";
- } catch (e) {
+ 64_chrome=Other Data
+-64_firefox=Bookmarks Backups
++64_self=Bookmarks Backups
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
-index 6f0d2d6..da7342b 100644
+index 697b217..b6e1709 100644
--- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn
@@ -38,7 +38,7 @@ toolkit.jar:
@@ -180,40 +194,55 @@ index 6f0d2d6..da7342b 100644 -* content/global/resetProfile.js (resetProfile.js)
+ content/global/resetProfile.js (resetProfile.js)
* content/global/resetProfile.xul (resetProfile.xul)
+ * content/global/resetProfileProgress.xul (resetProfileProgress.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 dcb4065..09c1146 100644
--- a/toolkit/content/resetProfile.js
+++ b/toolkit/content/resetProfile.js
-@@ -6,12 +6,10 @@ Components.utils.import("resource://gre/modules/Services.jsm");
+@@ -36,13 +36,13 @@ function resetSupported() {
+ getService(Ci.nsIToolkitProfileService);
+ let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
- // 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;
-
- 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");
+-#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+-
+ // Reset is only supported for the default profile if the self-migrator used for reset exists.
+ try {
+- return currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
+- ("@mozilla.org/profile/migrator;1?app=" + MOZ_BUILD_APP + "&type=" + MOZ_APP_NAME in Cc);
++ if (currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
++ "@mozilla.org/toolkit/profile-migrator;1" in Cc) {
++ let pm = Cc["@mozilla.org/toolkit/profile-migrator;1"].createInstance(Ci.nsIProfileMigrator);
++ return ("canMigrate" in pm) && pm.canMigrate("self");
++ }
+ } catch (e) {
+ // Catch exception when there is no selected profile.
+ Cu.reportError(e);
+@@ -53,9 +53,6 @@ function resetSupported() {
+ function getMigratedData() {
+ Components.utils.import("resource:///modules/MigrationUtils.jsm");
- // 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);
+-#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+-#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
+-
+ // From migration.properties
+ const MIGRATED_TYPES = [
+ 4, // History and Bookmarks
+@@ -68,7 +65,7 @@ function getMigratedData() {
+ let dataTypes = [];
+ for (let itemID 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"));
- migratedItems.appendChild(checkbox);
+- let typeName = MigrationUtils.getLocalizedString(itemID + "_" + MOZ_APP_NAME);
++ let typeName = MigrationUtils.getLocalizedString(itemID + "_self");
+ dataTypes.push(typeName);
} 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
+index f35c227..7062886 100644
--- a/toolkit/profile/nsIProfileMigrator.idl
+++ b/toolkit/profile/nsIProfileMigrator.idl
-@@ -69,7 +69,7 @@ interface nsIProfileStartup : nsISupports
+@@ -37,7 +37,7 @@ interface nsIProfileStartup : nsISupports
* @client Toolkit (Startup code)
* @obtainable service, contractid("@mozilla.org/toolkit/profile-migrator;1")
*/
@@ -222,7 +251,7 @@ index e941336..5b264af 100644 interface nsIProfileMigrator : nsISupports
{
/**
-@@ -92,6 +92,14 @@ interface nsIProfileMigrator : nsISupports
+@@ -60,6 +60,14 @@ interface nsIProfileMigrator : nsISupports
* @note The startup code ignores COM exceptions thrown from this method.
*/
void migrate(in nsIProfileStartup aStartup, in ACString aKey);
@@ -238,15 +267,15 @@ index e941336..5b264af 100644 %{C++
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 32eef5c..dbe1580 100644
+index e5d3042..6de3390 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);
+@@ -3650,7 +3650,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);
+ }
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD index a54e9d948..59435e71a 100644 --- a/libre/iceweasel-libre/PKGBUILD +++ b/libre/iceweasel-libre/PKGBUILD @@ -12,10 +12,10 @@ _pgo=false -# We're getting this from Debian Sid +# We're getting this from Debian Experimental _debname=iceweasel -_debver=13.0.1 -_debrel=2 +_debver=15.0 +_debrel=1 _debrepo=http://ftp.debian.org/debian/pool/main/ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; } @@ -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=('aa5a7f08f55a2b02a71c86f30ef75a25' + 'b93090724434e3801375730744e79950' 'eab149c1994ab14392e55af3abb08e80' 'ac29b01c189f20abae2f3eef1618ffc0' 'a485a2b5dc544a8a2bd40c985d2e5813' - '54bd934ac23839601c7d23a60fbefe6a' + '6d8816d2577263556d76f1aa4527b55b' 'e529742c0a425648087bc3ce537fe4c5' '0d053487907de4376d67d8f499c5502b' - 'efda47526ba76ef926b236bf2cda2456') + '52e52f840a49eb1d14be1c0065b03a93' + 'c52fac65c1e06290a5108b75c31ace79') 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 @@ -126,7 +129,7 @@ package() { cd "${srcdir}/${DEBIAN_BUILD}" make -j1 -f client.mk DESTDIR="$pkgdir" install - install -m644 "$srcdir"/vendor.js "$pkgdir/usr/lib/$_pkgname/defaults/pref" + install -Dm644 "$srcdir"/vendor.js "$pkgdir/usr/lib/$_pkgname/defaults/preferences/vendor.js" # I don't even know why we're hitting the objdir, and ConnOS didn't. _brandingdir=debian/branding 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..cde66e1db 100644 --- a/libre/initscripts/PKGBUILD +++ b/libre/initscripts/PKGBUILD @@ -1,32 +1,36 @@ -# $Id: PKGBUILD 160065 2012-05-29 18:46:25Z tomegun $ +# $Id: PKGBUILD 164178 2012-07-26 23:40:45Z tomegun $ # Maintainer: Tom Gundersen <teg@jklm.no> # Contributor: Thomas Bächler <thomas@archlinux.org> # Contributor: Aaron Griffin <aaron@archlinux.org> # Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar> pkgname=initscripts -pkgver=2012.06.28 +pkgver=2012.09.1 pkgrel=1 pkgdesc="System initialization/bootup scripts (Parabola branding)" arch=('any') url="https://parabolagnulinux.org" license=('GPL2') groups=('base') -backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown etc/conf.d/wireless) +provides=('initscripts-systemd') +conflicts=('initscripts-systemd') +replaces=('initscripts-systemd') +backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown) depends=('glibc' 'bash' 'coreutils' 'systemd-tools' 'iproute2' 'ncurses' 'findutils' 'sysvinit') -optdepends=('bridge-utils: Network bridging support' - 'dhcpcd: DHCP network configuration' - 'net-tools: legacy network support' - 'wireless_tools: Wireless networking') +optdepends=('dhcpcd: DHCP network configuration' + 'bridge-utils: Legacy network bridging support' + 'net-tools: Legacy network support' + 'wireless_tools: Legacy wireless networking') makedepends=(asciidoc) install=initscripts.install -source=("https://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.xz" - 'wireless.conf.d') +source=("https://repo.parabolagnulinux.org/other/${pkgname}-${pkgver}.tar.xz"{,.sig}) package() { cd ${srcdir}/${pkgname}-${pkgver} make DESTDIR=${pkgdir} install - install -D -m644 ${srcdir}/wireless.conf.d ${pkgdir}/etc/conf.d/wireless + + # moved to filesystem + rm -rf ${pkgdir}/etc/profile.d } -md5sums=('21651eaba1fd34542c78f39c755cd171' - '027576534885b8d5dded9be546057b12') +md5sums=('16039aeb4c996194d9466a8c66a06f5a' + '522804c7981c32c3c779964844d64377') diff --git a/libre/kdebase-konqueror-libre/PKGBUILD b/libre/kdebase-konqueror-libre/PKGBUILD index 550ad4b3f..f69e561be 100644 --- a/libre/kdebase-konqueror-libre/PKGBUILD +++ b/libre/kdebase-konqueror-libre/PKGBUILD @@ -1,12 +1,12 @@ -# $Id: PKGBUILD 160829 2012-06-06 16:14:38Z andrea $ +# $Id: PKGBUILD 165939 2012-09-03 21:49:19Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> # Maintainer (Parabola): Michał Masłowski <mtjm@mtjm.eu> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname='kdebase-konqueror' pkgname='kdebase-konqueror-libre' -pkgver=4.8.4 +pkgver=4.9.1 pkgrel=1 arch=('i686' 'x86_64' 'mips64el') url="http://kde.org/applications/internet/konqueror/" @@ -15,7 +15,7 @@ groups=('kde' 'kdebase') makedepends=('kdelibs' 'cmake' 'automoc4' 'tidyhtml') source=("http://download.kde.org/stable/${pkgver}/src/kde-baseapps-${pkgver}.tar.xz" "konq-about-fsdg.diff") -sha1sums=('a1d6951b27c868c738a36dbd21702b658f3d6245' +sha1sums=('9014332fd6fb18999c8290a3cbb498793d8caa2f' 'f41541371414dcbe5e76687835e648112b3ff364') pkgdesc='KDE File Manager & Web Browser' depends=('kdebase-dolphin' 'kdebase-keditbookmarks') diff --git a/libre/kdebase-runtime-libre/PKGBUILD b/libre/kdebase-runtime-libre/PKGBUILD new file mode 100644 index 000000000..ba6273763 --- /dev/null +++ b/libre/kdebase-runtime-libre/PKGBUILD @@ -0,0 +1,57 @@ +# $Id$ +# Maintainer: Andrea Scarpino <andrea@archlinux.org> +# Contributor: Pierre Schmitz <pierre@archlinux.de> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> + +_pkgname=kdebase-runtime +pkgname=kdebase-runtime-libre +pkgver=4.9.1 +pkgrel=1 +pkgdesc="Plugins and applications necessary for the running of KDE applications (without non-privacy search providers)" +arch=('i686' 'x86_64' 'mips64el') +url='https://projects.kde.org/projects/kde/kde-runtime' +license=('GPL' 'LGPL') +depends=('nepomuk-core' 'smbclient' 'libssh' 'libcanberra' 'oxygen-icons' 'xorg-xauth' + 'kactivities') +makedepends=('pkg-config' 'cmake' 'automoc4' 'kdepimlibs' 'openslp' 'doxygen' + 'networkmanager') +optdepends=('kdepimlibs: to generate drkonqi reports' + 'htdig: to build the search index in khelpcenter' + 'rarian: needed by khelpcenter' + 'gdb: drkonq crash handler') +replaces=("${_pkgname}") +conflicts=("${_pkgname}") +provides=("${_pkgname}=${pkgver}") +install="${_pkgname}.install" +source=("http://download.kde.org/stable/${pkgver}/src/kde-runtime-${pkgver}.tar.xz" + 'duckduckgo_lite.desktop') +sha1sums=('4b67e0f12617c478ee29546da4d98f605cd35dec' + '265d4ca95c3a022b5f6f1d5daea6f8e3a25dee85') + +build() { + cd "${srcdir}" + +# Removing non-privacy search providers + rm -v kde-runtime-${pkgver}/kurifilter-plugins/ikws/searchproviders/{7digital,acronym,altavista,amazon{,_mp3},amg,austronaut,backports,baidu,bing,blip,cia,dbug,deb,duckduckgo{,_info,_shopping},facebook,ecosia,feedster,flickr,flickrcc,froogle,google,google_advanced,google_code,google_groups,google_images,google_lucky,google_maps,google_movie,google_news,gracenote,imdb,jeeves,katatudo,magnatune,metacrawler,msdn,nl-telephone,nl-teletekst,python,rpmfind,tvtome,uspto,vimeo,vivisimo,voila,yahoo,yahoo_image,yahoo_local,yahoo_shopping,yahoo_video,youtube}.desktop + +# Adding DuckDuckGo Lite + cp -v duckduckgo_lite.desktop "kde-runtime-${pkgver}/kurifilter-plugins/ikws/searchproviders" + + mkdir build + cd build + cmake ../kde-runtime-${pkgver} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DWITH_QNtrack=OFF \ + -DWITH_Xine=OFF + make +} + +package() { + cd "$srcdir/build" + make DESTDIR="$pkgdir" install + rm -f "${pkgdir}/usr/share/icons/hicolor/index.theme" + + ln -sf /usr/lib/kde4/libexec/kdesu "${pkgdir}/usr/bin/" +} diff --git a/libre/kdebase-runtime-libre/duckduckgo_lite.desktop b/libre/kdebase-runtime-libre/duckduckgo_lite.desktop new file mode 100644 index 000000000..2b875b4c1 --- /dev/null +++ b/libre/kdebase-runtime-libre/duckduckgo_lite.desktop @@ -0,0 +1,113 @@ +[Desktop Entry] +Charset= +Hidden=false +Keys=duckduckgo,dd,dukgo +Name=Duck Duck Go Lite +Name[ar]=Duck Duck Go Lite +Name[ast]=Duck Duck Go Lite +Name[bg]=Duck Duck Go Lite +Name[bn]=Duck Duck Go Lite +Name[bs]=Dak dak go lite +Name[ca]=Duck Duck Go Lite +Name[ca@valencia]=Duck Duck Go Lite +Name[cs]=Duck Duck Go Lite +Name[da]=Duck Duck Go Lite +Name[de]=Duck Duck Go Lite +Name[el]=Duck Duck Go Lite +Name[en_GB]=Duck Duck Go Lite +Name[eo]=Duck Duck Go Lite +Name[es]=Duck Duck Go Lite +Name[et]=Duck Duck Go Lite +Name[eu]=Duck Duck Go Lite +Name[fa]=Duck Duck Go Lite +Name[fi]=Duck Duck Go Lite +Name[fr]=Duck Duck Go Lite +Name[ga]=Duck Duck Go Lite +Name[gl]=Duck Duck Go Lite +Name[gu]=Duck Duck Go Lite +Name[he]=Duck Duck Go Lite +Name[hi]=Duck Duck Go Lite +Name[hr]=Duck Duck Go Lite +Name[hu]=Duck Duck Go Lite +Name[ia]=Duck Duck Go Lite +Name[id]=Duck Duck Go Lite +Name[is]=Duck Duck Go Lite +Name[it]=Duck Duck Go Lite +Name[ja]=Duck Duck Go Lite +Name[kk]=Duck Duck Go Lite +Name[km]=Duck Duck Go Lite +Name[kn]=Duck Duck Go Lite +Name[ko]=Duck Duck Go Lite +Name[lt]=Duck Duck Go Lite +Name[lv]=Duck Duck Go Lite +Name[ml]=Duck Duck Go Lite +Name[nb]=Duck Duck Go Lite +Name[nds]=Duck Duck Go Lite +Name[nl]=Duck Duck Go Lite +Name[nn]=Duck Duck Go Lite +Name[pa]=Duck Duck Go Lite +Name[pl]=Duck Duck Go Lite +Name[pt]=Duck Duck Go Lite +Name[pt_BR]=Duck Duck Go Lite +Name[ro]=Duck Duck Go Lite +Name[ru]=Поиск Duck Duck Go Lite +Name[si]=Duck Duck Go Lite +Name[sk]=Duck Duck Go Lite +Name[sl]=Duck Duck Go Lite +Name[sr]=Duck Duck Go Lite +Name[sr@ijekavian]=Duck Duck Go Lite +Name[sr@ijekavianlatin]=Duck Duck Go Lite +Name[sr@latin]=Duck Duck Go Lite +Name[sv]=Duck Duck Go Lite +Name[tg]=Duck Duck Go Lite +Name[th]=Duck Duck Go Lite +Name[tr]=Duck Duck Go Lite +Name[ug]=Duck Duck Go Lite +Name[uk]=Duck Duck Go Lite +Name[vi]=Duck Duck Go Lite +Name[wa]=Duck Duck Go Lite +Name[x-test]=xxDuck Duck Go Litexx +Name[zh_CN]=Duck Duck Go Lite +Name[zh_TW]=Duck Duck Go Lite +Query=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[bg]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[bn]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[ca]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[cs]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[da]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[de]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[el]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[eo]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[es]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[et]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[fi]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[fr]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[gl]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[hi]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[hu]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[ia]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[it]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[kk]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[km]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[nb]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[nl]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[pa]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[pl]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[pt]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[pt_BR]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[ro]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[ru]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[sl]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[sr]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[sr@ijekavian]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[sr@ijekavianlatin]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[sr@latin]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[sv]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[tr]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[uk]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[wa]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[x-test]=xxhttp://duckduckgo.com/lite/?q=\\{@}&t=KDExx +Query[zh_CN]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +Query[zh_TW]=http://duckduckgo.com/lite/?q=\\{@}&t=KDE +ServiceTypes=SearchProvider +Type=Service diff --git a/libre/kdebase-runtime-libre/kdebase-runtime.install b/libre/kdebase-runtime-libre/kdebase-runtime.install new file mode 100644 index 000000000..c77e68041 --- /dev/null +++ b/libre/kdebase-runtime-libre/kdebase-runtime.install @@ -0,0 +1,13 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-mime-database usr/share/mime &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/libre/kdelibs-libre/PKGBUILD b/libre/kdelibs-libre/PKGBUILD index 25084c92c..e5fdb1ea6 100644 --- a/libre/kdelibs-libre/PKGBUILD +++ b/libre/kdelibs-libre/PKGBUILD @@ -1,35 +1,33 @@ -# $Id: PKGBUILD 162798 2012-06-30 15:30:51Z andrea $ +# $Id: PKGBUILD 165921 2012-09-03 21:48:13Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org # Contributor: Pierre Schmitz <pierre@archlinux.de> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=kdelibs pkgname=kdelibs-libre -pkgver=4.8.4 -pkgrel=4 +pkgver=4.9.1 +pkgrel=1 pkgdesc="KDE Core Libraries" arch=('i686' 'x86_64' 'mips64el') -url='http://www.kde.org' +url='https://projects.kde.org/projects/kde/kdelibs' license=('GPL' 'LGPL' 'FDL') depends=('strigi' 'attica' 'libxss' 'soprano' 'krb5' 'grantlee' 'shared-desktop-ontologies' 'qca' 'libdbusmenu-qt' 'polkit-qt' 'shared-mime-info' 'enchant' 'giflib' 'jasper' 'openexr' 'docbook-xsl' 'upower' 'udisks' 'libxcursor' 'phonon' 'qtwebkit' - 'media-player-info') + 'media-player-info' 'libxtst') makedepends=('cmake' 'automoc4' 'avahi' 'libgl' 'hspell') provides=("kdelibs=$pkgver") -replaces=('kdelibs-experimental' 'kdelibs') +replaces=('kdelibs') conflicts=('kdelibs') install=${_pkgname}.install source=("http://download.kde.org/stable/${pkgver}/src/${_pkgname}-${pkgver}.tar.xz" 'kde-applications-menu.patch' 'use-pythondontwritebytecode.patch' - 'fix-application-crashes.patch' 'khtml-fsdg.diff') -sha1sums=('35cd199a30d84eb37b2b213fed5ee3adf810ea49' +sha1sums=('33fb26ec7735122b2bb084b79f8fcffb826c58f0' '86ee8c8660f19de8141ac99cd6943964d97a1ed7' 'bbacbbe2194f3961cd7557d98a9ddef158ca11aa' - 'c271c712bf202f517015b597d61cfe1aed0db82b' 'a1502a964081ad583a00cf90c56e74bf60121830') build() { @@ -40,9 +38,7 @@ build() { # Set PYTHONDONTWRITEBYTECODE (KDEBUG#276151) patch -p0 -i "${srcdir}"/use-pythondontwritebytecode.patch - - # KDEBUG 301453 - patch -p1 -i "${srcdir}"/fix-application-crashes.patch + # Don't ask the user to download a plugin, it's probably nonfree. patch -p1 -i "${srcdir}"/khtml-fsdg.diff diff --git a/libre/kdenetwork-kopete-libre/PKGBUILD b/libre/kdenetwork-kopete-libre/PKGBUILD index 66a48fea5..2bf71321c 100644 --- a/libre/kdenetwork-kopete-libre/PKGBUILD +++ b/libre/kdenetwork-kopete-libre/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 160882 2012-06-06 16:17:23Z andrea $ +# $Id: PKGBUILD 165994 2012-09-03 21:52:07Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> pkgbase=kdenetwork pkgname=('kdenetwork-kopete-libre') -pkgver=4.8.4 +pkgver=4.9.1 pkgrel=1 arch=('i686' 'x86_64' 'mips64el') url='http://www.kde.org' license=('GPL' 'LGPL' 'FDL') groups=('kde' 'kdenetwork') makedepends=('cmake' 'automoc4' 'boost' 'speex' 'ortp' 'libotr' 'ppp' - 'qca-ossl' 'kdebase-workspace' 'kdebase-lib' 'libvncserver' 'libmsn' - 'v4l-utils' 'libidn' 'rdesktop' 'qimageblitz' 'libxdamage' 'libgadu' - 'libktorrent' 'libmms' 'mediastreamer') - source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.xz") -sha1sums=('b3926c5cd929cec209421c2f1cb8659cc1c82458') + 'qca-ossl' 'kdebase-workspace' 'kdebase-lib' 'libvncserver' + 'v4l-utils' 'libidn' 'qimageblitz' 'libxdamage' 'libgadu' 'libmsn' + 'libktorrent' 'libmms' 'mediastreamer' 'telepathy-qt') +source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.xz") +sha1sums=('22f8cde8b5617ba7e401d82b0669a06899b17320') build() { cd "${srcdir}" diff --git a/libre/kdeutils-ark-libre/PKGBUILD b/libre/kdeutils-ark-libre/PKGBUILD index 5558e73f4..a71990231 100644 --- a/libre/kdeutils-ark-libre/PKGBUILD +++ b/libre/kdeutils-ark-libre/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 160887 2012-06-06 16:17:38Z andrea $ +# $Id: PKGBUILD 165999 2012-09-03 21:52:22Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=kdeutils-ark pkgname=kdeutils-ark-libre -pkgver=4.8.4 +pkgver=4.9.1 pkgrel=1 pkgdesc='Archiving Tool' url='http://kde.org/applications/utilities/ark/' @@ -14,12 +14,12 @@ groups=('kde' 'kdeutils') depends=('kdebase-runtime' 'kdebase-lib' 'libarchive' 'qjson') makedepends=('cmake' 'automoc4') optdepends=('p7zip' 'zip' 'unzip' 'ununrar') +install=${_pkgname}.install provides=("kdeutils-ark=$pkgver") replaces=('kdeutils-ark') conflicts=('kdeutils-ark') -install=${_pkgname}.install source=("http://download.kde.org/stable/${pkgver}/src/ark-${pkgver}.tar.xz") -sha1sums=('1d0d311beb8beeee7f33a58baef7f95192eb69ac') +sha1sums=('2f7d32b9f99913d14801b56f0c858eda128a7b91') build() { cd "${srcdir}" diff --git a/libre/libcl-libre/PKGBUILD b/libre/libcl-libre/PKGBUILD new file mode 100644 index 000000000..a564c2ffb --- /dev/null +++ b/libre/libcl-libre/PKGBUILD @@ -0,0 +1,98 @@ +# Maintainer: Márcio Silva <coadde@lavabit.com> + +pkgname=libcl-libre +true && pkgver=9.0.git20120905 +true && pkgrel=1 +arch=( + i686 + x86_64 + mips64el +) +makedepends=( + clang + dri2proto + git + glproto + imake + libdrm + libxdamage + libxext + libxml2 + llvm + python2 +) +license=( + MIT + Khronos + LGPL +) +url=http://mesa3d.sourceforge.net +depends=( + gcc-libs + libdrm + libffi + libxcb + udev +) +conflicts=( + ${pkgname%-libre} +) +provides=( + ${pkgname%-libre} +) +replaces=( + ${pkgname%-libre} +) +pkgdesc='A libre version of OpenCL library and ICD loader, (Mesa OpenCL)' +#source=( +# ftp://ftp.freedesktop.org/pub/mesa/$pkgver/MesaLib-$pkgver.tar.bz2 +#) +#sha512sums=( +# b7e8879e92252d0588d9eeeed904fd502ce1f48551b9a97f52aeb1318c79a80fab27504521107d61fbb5d986b2d778d89023a892baf9f1c5a5d2ee3746fefa57 +#) + +_gitroot=git://anongit.freedesktop.org/git/mesa/mesa +_gitname=mesa + +build() { + msg 'Connecting to git.freedesktop.org GIT server....' + if [ -d $_gitname ] ; then + cd $_gitname && git pull origin + else + git clone $_gitroot --depth 1 + fi + msg 'GIT checkout done or server timeout' + msg 'Starting make...' + + cd $srcdir + + # Cleanup and prepare the build dir + [ -d build ] && rm -rf build + cp -r $_gitname build + cd build + + #cd $srcdir/Mesa-$pkgver + + autoreconf -vfi + ./autogen.sh --prefix=/usr \ + --enable-opencl \ + --enable-gallium-llvm \ + --enable-r600-llvm-compiler \ + --with-clang-libdir=/usr/lib \ + --with-dri-drivers=nouveau,radeon,swrast \ + --with-gallium-drivers=r300,r600,nouveau,swrast + make +} + +package() { + make -C $srcdir/build/src/gallium/targets/opencl DESTDIR=$pkgdir install + + cd $srcdir/build + #install -m755 -d $pkgdir/usr/lib/opencl + install -m755 -d $pkgdir/usr/share/licenses/${pkgname%-libre} + #bin/minstall src/gallium/targets/opencl/libOpenCL.la $pkgdir/usr/lib + #bin/minstall lib/libOpenCL.so* $pkgdir/usr/lib + #bin/minstall src/gallium/targets/pipe-loader/*.so $pkgdir/usr/lib/${pkgname%-libre} + bin/minstall docs/COPYING $pkgdir/usr/share/licenses/${pkgname%-libre} + bin/minstall docs/license.html $pkgdir/usr/share/licenses/${pkgname%-libre} +} diff --git a/libre/libdrm-libre/COPYING b/libre/libdrm-libre/COPYING new file mode 100644 index 000000000..6e74c337c --- /dev/null +++ b/libre/libdrm-libre/COPYING @@ -0,0 +1,48 @@ + Copyright 2005 Adam Jackson. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation on the rights to use, copy, modify, merge, + publish, distribute, sub license, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NON-INFRINGEMENT. IN NO EVENT SHALL ADAM JACKSON BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +------------------------------------------------------------------------ + + Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS + SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. diff --git a/libre/libdrm-libre/PKGBUILD b/libre/libdrm-libre/PKGBUILD new file mode 100644 index 000000000..1746710cb --- /dev/null +++ b/libre/libdrm-libre/PKGBUILD @@ -0,0 +1,90 @@ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> + +pkgname=libdrm-libre +pkgver=2.4.39 +pkgrel=1 +pkgdesc='Userspace interface to kernel DRM services, without VMWare Graphics KMS API (vmwgfx)' +arch=( + i686 + x86_64 + mips64el +:) +license=( + MIT +) +depends=( + libpciaccess + ) +makedepends=( + cairo + valgrind +) +options=( + !libtool +) +url=http://dri.freedesktop.org/ +provides=( + ${pkgname%-libre}=$pkgver + ${pkgname%-libre}-git + $pkgname-git +) +conflicts=( + ${pkgname%-libre} + ${pkgname%-libre}-git + $pkgname-git + ${pkgname%-libre}-new + ${pkgname%-libre}-nouveau + ${pkgname%-libre}-old +) +replaces=( + ${pkgname%-libre} + ${pkgname%-libre}-git + ${pkgname%-libre}-new + ${pkgname%-libre}-nouveau +) + +source=( + http://dri.freedesktop.org/${pkgname%-libre}/${pkgname%-libre}-$pkgver.tar.bz2 + COPYING +) +sha512sums=( + 51b849d501adbf6c9d65847d2e6b41e426137af8cdb1335d19e22939128b7cdae8685c27d750db3aad7b1c43e7bb5a448634491dcd86873ba98293d56320eb1f + b0ca349b882a4326b19f81f22804fabdb6fb7aef31cdc7b16b0a7ae191bfbb50c7daddb2fc4e6c33f1136af06d060a273de36f6f3412ea326f16fa4309fda660 +) + +build() { + cd ${pkgname%-libre}-$pkgver + + sed -i '/PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)/d;/AC_SUBST(PTHREADSTUBS_CFLAGS)/d;/AC_SUBST(PTHREADSTUBS_LIBS)/d' \ + configure.ac + sed -i '/ $(PTHREADSTUBS_CFLAGS) /d;s/ @PTHREADSTUBS_LIBS@//' \ + exynos/Makefile.am + sed -i '/ $(PTHREADSTUBS_CFLAGS) /d;/ @PTHREADSTUBS_LIBS@ /d' \ + intel/Makefile.am + sed -i '/ $(PTHREADSTUBS_CFLAGS) /d;s/ @PTHREADSTUBS_LIBS@//' \ + nouveau/Makefile.am + sed -i '/ $(PTHREADSTUBS_CFLAGS) /d;s/ @PTHREADSTUBS_LIBS@//' \ + omap/Makefile.am + sed -i '/ $(PTHREADSTUBS_CFLAGS) /d;s/ @PTHREADSTUBS_LIBS@//' \ + radeon/Makefile.am + + #libtoolize --force + autoreconf --force --install + ./configure --prefix=/usr \ + --disable-vmwgfx-experimental-api \ + --enable-udev + make V=0 +} + +check() { +cd ${pkgname%-libre}-$pkgver + make -k check +} + +package() { +cd ${pkgname%-libre}-$pkgver + make DESTDIR=$pkgdir install + install -m755 -d $pkgdir/usr/share/licenses/${pkgname%-libre} + install -m644 ../COPYING $pkgdir/usr/share/licenses/${pkgname%-libre} +} diff --git a/libre/libquicktime-libre/PKGBUILD b/libre/libquicktime-libre/PKGBUILD index 2a624348b..0538d1c76 100644 --- a/libre/libquicktime-libre/PKGBUILD +++ b/libre/libquicktime-libre/PKGBUILD @@ -1,11 +1,11 @@ # $Id$ # Maintainer: Mateusz Herych <heniekk@gmail.com> -# Contributor (Parabola): Jorge Lopez <jorginho@adinet.com.uy> +# Contributor (Parabola): Jorge Lopez <jorginho@lavabit.com> pkgname=libquicktime-libre _pkgname=libquicktime pkgver=1.2.4 -pkgrel=1 +pkgrel=2 pkgdesc="A library for reading and writing quicktime files (no unfree faac support)." arch=('i686' 'x86_64' 'mips64el') license=('GPL') 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/liferea-libre/PKGBUILD b/libre/liferea-libre/PKGBUILD index ec48b73d5..c41112a07 100644 --- a/libre/liferea-libre/PKGBUILD +++ b/libre/liferea-libre/PKGBUILD @@ -1,12 +1,12 @@ -# $Id: PKGBUILD 161863 2012-06-15 23:14:52Z eric $ +# $Id: PKGBUILD 165910 2012-09-03 19:19:26Z eric $ # Maintainer: Eric Bélanger <eric@archlinux.org> # Contributor (Parabola): bitlord -# Contributor (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Contributor (Parabola): André Silva <emulatorman@lavabit.com> _pkgname=liferea pkgname=liferea-libre -pkgver=1.8.6 -pkgrel=1 +pkgver=1.8.8 +pkgrel=1.2 pkgdesc="A desktop news aggregator for online news feeds and weblogs" arch=('i686' 'x86_64' 'mips64el') url="http://liferea.sourceforge.net/" @@ -18,23 +18,23 @@ depends=('gconf' 'libwebkit' 'libnotify' 'libunique' 'json-glib' 'hicolor-icon-t makedepends=('intltool') options=('!libtool' '!emptydirs') install=liferea.install -source=(http://downloads.sourceforge.net/sourceforge/${_pkgname}/${_pkgname}-${pkgver}.tar.gz +source=(http://downloads.sourceforge.net/sourceforge/liferea/liferea-${pkgver}.tar.gz remove-non-free-suggestions.patch) -sha1sums=('c469d87da4b0512270376aa360c7a955d02153c3' +sha1sums=('9dfbf5ff8bd91060bdea93d74c37a8a828a2edfe' '0d68c567c3d37932a49709c58c37c3f138fd19cb') build() { - cd "${srcdir}/${_pkgname}-${pkgver}" + cd "${srcdir}/liferea-${pkgver}" patch -Np1 -i "$srcdir/remove-non-free-suggestions.patch" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-schemas-install make } package() { - cd "${srcdir}/${_pkgname}-${pkgver}" + cd "${srcdir}/liferea-${pkgver}" make DESTDIR="${pkgdir}" install install -d "${pkgdir}/usr/share/gconf/schemas" - gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" "${pkgdir}"/etc/gconf/schemas/*.schemas + gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${_pkgname}.schemas" "${pkgdir}"/etc/gconf/schemas/*.schemas rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas } diff --git a/libre/liferea-libre/liferea.install b/libre/liferea-libre/liferea.install index 7d812ccdb..3e1aa5820 100644 --- a/libre/liferea-libre/liferea.install +++ b/libre/liferea-libre/liferea.install @@ -1,7 +1,7 @@ -pkgname=liferea +pkgname=liferea-libre post_install() { - usr/sbin/gconfpkg --install ${pkgname} + usr/sbin/gconfpkg --install ${_pkgname} gtk-update-icon-cache -q -t -f usr/share/icons/hicolor } @@ -14,7 +14,7 @@ post_upgrade() { } pre_remove() { - usr/sbin/gconfpkg --uninstall ${pkgname} + usr/sbin/gconfpkg --uninstall ${_pkgname} } post_remove() { diff --git a/libre/linux-libre-api-headers/PKGBUILD b/libre/linux-libre-api-headers/PKGBUILD index c229767b1..cf2fdca23 100644 --- a/libre/linux-libre-api-headers/PKGBUILD +++ b/libre/linux-libre-api-headers/PKGBUILD @@ -1,15 +1,15 @@ -# $Id: PKGBUILD 162855 2012-07-02 09:35:36Z allan $ +# $Id: PKGBUILD 165111 2012-08-11 08:21:11Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> # toolchain build order: linux-libre-api-headers->glibc->binutils->gcc->binutils->glibc pkgname=linux-libre-api-headers -_basekernel=3.4 -_sublevel=4 +_basekernel=3.5 +_sublevel=1 pkgver=${_basekernel}.${_sublevel} pkgrel=1 -pkgdesc="Kernel Libre headers sanitized for use in userspace" +pkgdesc="Kernel libre headers sanitized for use in userspace" arch=('i686' 'x86_64' 'mips64el') url="http://www.gnu.org/software/libc" license=('GPL2') @@ -18,8 +18,8 @@ conflicts=('linux-api-headers') replaces=('linux-api-headers') 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") -md5sums=('a5e128ca059cceb8b69148b41ff4ac6f' - 'e9bb311ab329555a61696b1a18df2d34') +md5sums=('2407fc9563a74acaf38aa0c06516eb1c' + '67b650dd355fbca16035510df063420b') build() { cd ${srcdir}/linux-${_basekernel} diff --git a/libre/linux-libre-lts/.directory b/libre/linux-libre-lts/.directory index 89e875be9..3bbc4dedd 100644 --- a/libre/linux-libre-lts/.directory +++ b/libre/linux-libre-lts/.directory @@ -1,2 +1,3 @@ [Dolphin] -Timestamp=2012,4,16,17,55,34 +Timestamp=2012,8,9,22,54,43 +Version=3 diff --git a/libre/linux-libre-lts/PKGBUILD b/libre/linux-libre-lts/PKGBUILD index f4807a4d8..03c280487 100644 --- a/libre/linux-libre-lts/PKGBUILD +++ b/libre/linux-libre-lts/PKGBUILD @@ -4,15 +4,13 @@ # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> # Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> -pkgbase=linux-libre-lts -pkgname=('linux-libre-lts' 'linux-libre-lts-headers') # Build stock -LIBRE kernel -# pkgname=linux-custom # Build kernel with a different name -_kernelname=-LIBRE-LTS +pkgbase=linux-libre-lts # Build stock -LIBRE-LTS kernel +#pkgbase=linux-libre-custom # Build kernel with a different name _basekernel=3.0 -_sublevel=36 +_sublevel=42 pkgver=${_basekernel}.${_sublevel} -_lxopkgver=${_basekernel}.36 # nearly always the same as pkgver -pkgrel=2 +pkgrel=1 +_lxopkgver=${_basekernel}.41 # nearly always the same as pkgver arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" license=('GPL2') @@ -23,18 +21,18 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn # the main kernel config files 'config.i686' 'config.x86_64' # standard config files for mkinitcpio ramdisk - "${pkgname}.preset" + "${pkgbase}.preset" 'Kbuild' 'Kbuild.platforms' 'boot-logo.patch' 'change-default-console-loglevel.patch' 'i915-fix-ghost-tv-output.patch' 'ext4-options.patch' - "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2") + "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2") md5sums=('5f64180fe7df4e574dac5911b78f5067' - '150413437fe54d4822e9e43189e37319' - '9cfcf3807201ce44aa720571232a10ce' - '8bb5c5aa217202c3ac3798ba7798e07d' + '8f1c9341d99e941b07d1d6f85f1953aa' + '8cd05778fc1c2d8145b3b9932b4e3164' + '87a54dc6251cf2adf35f72ddeddb6ea8' 'c072b17032e80debc6a8626299245d46' '2967cecc3af9f954ccc822fd63dca6ff' '8267264d9a8966e57fdacd1fa1fc65c4' @@ -42,13 +40,16 @@ md5sums=('5f64180fe7df4e574dac5911b78f5067' '9d3c56a4b999c8bfbd4018089a62f662' '263725f20c0b9eb9c353040792d644e5' 'f36222e7ce20c8e4dc27376f9be60f6c' - '7102cdd847f0bd7102f0ad01fa43f454') + '1f082cc9e5a18e227f7a044ff429914a') if [ "$CARCH" != "mips64el" ]; then # Don't use the Loongson-specific patches on non-mips64el arches. unset source[${#source[@]}-1] unset md5sums[${#md5sums[@]}-1] fi +_kernelname=${pkgbase#linux-libre} +_localversionname=-LIBRE-LTS + build() { cd "${srcdir}/linux-${_basekernel}" @@ -92,7 +93,7 @@ build() { sed -ri -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \ -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \ -e "s|CONFIG_UEVENT_HELPER_PATH=.*|CONFIG_UEVENT_HELPER_PATH=\"\"|g" \ - -e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" \ + -e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" \ -e "s;(CONFIG_USB(_COMMON|_EHCI_HCD|_OHCI_HCD|_STORAGE.*|_UAS)?)=.*;\1=y;g" \ ./.config else @@ -100,7 +101,8 @@ build() { fi if [ "${_kernelname}" != "" ]; then - sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config + sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" ./.config + sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config fi # set extraversion to pkgrel @@ -120,15 +122,22 @@ build() { #make oldconfig # using old config from previous kernel version # ... or manually edit .config + # rewrite configuration + yes "" | make config >/dev/null + + # save configuration for later reuse + if [ "${CARCH}" = "x86_64" ]; then + cat .config > "${startdir}/config.x86_64.last" + else + cat .config > "${startdir}/config.i686.last" + fi + #################### # stop here # this is useful to configure the kernel - #msg "Stopping build" - #return 1 + #msg "Stopping build"; return 1 #################### - yes "" | make config - # build! if [ "$CARCH" == "mips64el" ]; then # The build system passes it directly to linker, disable to avoid @@ -136,21 +145,22 @@ build() { export LDFLAGS="" # bzImage is arch-specific and not supported on mips; vmlinux is # useful for oprofile. - make ${MAKEFLAGS} vmlinux vmlinuz modules + make ${MAKEFLAGS} LOCALVERSION= vmlinux vmlinuz modules else - make ${MAKEFLAGS} bzImage modules + make ${MAKEFLAGS} LOCALVERSION= bzImage modules fi } -package_linux-libre-lts() { - pkgdesc="The Linux-libre Kernel and modules - stable longtime supported kernel package suitable for servers" +_package() { + pkgdesc="The ${pkgbase} kernel and modules - stable longtime supported kernel package suitable for servers" + [ "${pkgbase}" = "linux-libre" ] && groups=('base') depends=('coreutils' 'kmod') optdepends=('crda: to set the correct wireless channels of your country') - provides=('kernel26-lts' "linux-lts=$pkgver") - conflicts=('kernel26-lts' 'kernel26-libre-lts' 'linux-lts') - replaces=('kernel26-lts' 'kernel26-libre-lts' 'linux-lts') - backup=("etc/mkinitcpio.d/${pkgname}.preset") - install=${pkgname}.install + provides=("kernel26${_kernelname}=${pkgver}" "linux${_kernelname}=${pkgver}") + conflicts=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}") + replaces=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}") + backup=("etc/mkinitcpio.d/${pkgbase}.preset") + install=${pkgbase}.install if [ "$CARCH" = "mips64el" ]; then optdepends+=('mkinitcpio: to make the initramfs (needs reinstall of this package)') conflicts+=('mkinitcpio<0.7') @@ -164,35 +174,42 @@ package_linux-libre-lts() { [ $CARCH = "mips64el" ] && KARCH=mips # get kernel version - _kernver="$(make kernelrelease)" + _kernver="$(make LOCALVERSION= kernelrelease)" + _basekernel=${_kernver%%-*} + _basekernel=${_basekernel%.*} mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot} - make INSTALL_MOD_PATH="${pkgdir}" modules_install + make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install if [ "$CARCH" == "mips64el" ]; then - cp vmlinuz "${pkgdir}/boot/vmlinuz-${pkgname}" - cp vmlinux "${pkgdir}/boot/vmlinux-${pkgname}" + cp vmlinuz "${pkgdir}/boot/vmlinuz-${pkgbase}" + cp vmlinux "${pkgdir}/boot/vmlinux-${pkgbase}" else - cp "arch/${KARCH}/boot/bzImage" "${pkgdir}/boot/vmlinuz-${pkgname}" + cp "arch/${KARCH}/boot/bzImage" "${pkgdir}/boot/vmlinuz-${pkgbase}" fi # add vmlinux install -D -m644 vmlinux "${pkgdir}/usr/src/linux-${_kernver}/vmlinux" # install fallback mkinitcpio.conf file and preset file for kernel - install -D -m644 "${srcdir}/${pkgname}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset" + install -D -m644 "${srcdir}/${pkgbase}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" # set correct depmod command for install sed \ - -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgname}\"|g" \ - -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgname}.img\"|g" \ - -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgname}-fallback.img\"|g" \ - -i "${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset" + -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \ + -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \ + -i "${startdir}/${pkgbase}.install" + sed \ + -e "1s|'linux*.*'|'${pkgbase}'|" \ + -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \ + -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \ + -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \ + -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" # mkinitcpio 0.7 relies on bzImage to find the kernel version if [ "$CARCH" == "mips64el" ]; then - sed -e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|g" \ - -i "${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset" + sed -e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|" \ + -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" fi # remove build and source links @@ -202,10 +219,10 @@ package_linux-libre-lts() { # gzip -9 all modules to save 100MB of space find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; # make room for external modules - ln -s "../extramodules-${_basekernel}${_kernelname:--LIBRE-LTS}" "${pkgdir}/lib/modules/${_kernver}/extramodules" + ln -s "../extramodules-${_basekernel}${_localversionname:--LIBRE-LTS}" "${pkgdir}/lib/modules/${_kernver}/extramodules" # add real version for building modules and running depmod from post_install/upgrade - mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--LIBRE-LTS}" - echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--LIBRE-LTS}/version" + mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE-LTS}" + echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE-LTS}/version" # move module tree /lib -> /usr/lib mv "$pkgdir/lib" "$pkgdir/usr" @@ -214,11 +231,11 @@ package_linux-libre-lts() { depmod -b "$pkgdir" -F System.map "$_kernver" } -package_linux-libre-lts-headers() { - pkgdesc="Header files and scripts for building modules for linux-libre-lts longtime supported kernel" - provides=('kernel26-lts-headers' "linux-lts-headers=${pkgver}") - conflicts=('kernel26-lts-headers' 'kernel26-libre-lts-headers' 'linux-lts-headers') - replaces=('kernel26-lts-headers' 'kernel26-libre-lts-headers' 'linux-lts-headers') +_package-headers() { + pkgdesc="Header files and scripts for building modules for ${pkgbase} kernel" + provides=("kernel26${_kernelname}-headers=${pkgver}" "linux${_kernelname}-headers=${pkgver}") + conflicts=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers") + replaces=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers") KARCH=x86 [ $CARCH = "mips64el" ] && KARCH=mips @@ -226,7 +243,7 @@ package_linux-libre-lts-headers() { # In case of repackaging this is empty if [ -z "${_kernver}" ]; then cd "${srcdir}/linux-${_basekernel}" - _kernver="$(make kernelrelease)" + _kernver="$(make LOCALVERSION= kernelrelease)" fi install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}" @@ -357,10 +374,19 @@ package_linux-libre-lts-headers() { done # remove unneeded architectures - rm -rf "${pkgdir}"/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,microblaze,mn10300,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,um,unicore32,v850,xtensa} + rm -rf "${pkgdir}"/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa} if [ "$CARCH" = "mips64el" ]; then rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/x86 else rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/mips fi } + +pkgname=("${pkgbase}" "${pkgbase}-headers") +for _p in ${pkgname[@]}; do + eval "package_${_p}() { + _package${_p#${pkgbase}} + }" +done + +# vim:set ts=8 sts=2 sw=2 et: diff --git a/libre/linux-libre-lts/config.i686 b/libre/linux-libre-lts/config.i686 index 83bab0f8c..f4e10c441 100644 --- a/libre/linux-libre-lts/config.i686 +++ b/libre/linux-libre-lts/config.i686 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux/i386 3.0.29-1 Kernel Configuration +# Linux/i386 3.0.40-2 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -62,7 +62,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" CONFIG_LOCALVERSION="-LIBRE-LTS" -CONFIG_LOCALVERSION_AUTO=y +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y @@ -106,13 +106,14 @@ CONFIG_IRQ_FORCED_THREADING=y # # RCU Subsystem # -CONFIG_TREE_PREEMPT_RCU=y -CONFIG_PREEMPT_RCU=y +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_PREEMPT_RCU is not set # CONFIG_RCU_TRACE is not set CONFIG_RCU_FANOUT=32 # CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set # CONFIG_TREE_RCU_TRACE is not set -# CONFIG_RCU_BOOST is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 @@ -192,9 +193,11 @@ CONFIG_TRACEPOINTS=y CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y -# CONFIG_KPROBES is not set +CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_OPTPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -251,27 +254,27 @@ CONFIG_PADATA=y # CONFIG_INLINE_SPIN_LOCK_BH is not set # CONFIG_INLINE_SPIN_LOCK_IRQ is not set # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set -# CONFIG_INLINE_SPIN_UNLOCK is not set +CONFIG_INLINE_SPIN_UNLOCK=y # CONFIG_INLINE_SPIN_UNLOCK_BH is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_READ_TRYLOCK is not set # CONFIG_INLINE_READ_LOCK is not set # CONFIG_INLINE_READ_LOCK_BH is not set # CONFIG_INLINE_READ_LOCK_IRQ is not set # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set -# CONFIG_INLINE_READ_UNLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y # CONFIG_INLINE_READ_UNLOCK_BH is not set -# CONFIG_INLINE_READ_UNLOCK_IRQ is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_WRITE_TRYLOCK is not set # CONFIG_INLINE_WRITE_LOCK is not set # CONFIG_INLINE_WRITE_LOCK_BH is not set # CONFIG_INLINE_WRITE_LOCK_IRQ is not set # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set -# CONFIG_INLINE_WRITE_UNLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y # CONFIG_INLINE_WRITE_UNLOCK_BH is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set # CONFIG_MUTEX_SPIN_ON_OWNER is not set CONFIG_FREEZER=y @@ -359,9 +362,9 @@ CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y # CONFIG_IRQ_TIME_ACCOUNTING is not set -# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y +# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -992,7 +995,9 @@ CONFIG_IP_DCCP_TFRC_LIB=y # DCCP Kernel Hacking # # CONFIG_IP_DCCP_DEBUG is not set +CONFIG_NET_DCCPPROBE=m CONFIG_IP_SCTP=m +CONFIG_NET_SCTPPROBE=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set @@ -1104,6 +1109,7 @@ CONFIG_XPS=y # Network testing # CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m CONFIG_NET_DROP_MONITOR=y CONFIG_HAMRADIO=y @@ -3805,6 +3811,7 @@ CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y +# CONFIG_DRM_I810 is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_MGA=m @@ -5311,7 +5318,6 @@ CONFIG_TIMER_STATS=y # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set # CONFIG_DEBUG_KMEMLEAK is not set -# CONFIG_DEBUG_PREEMPT is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set @@ -5342,7 +5348,7 @@ CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -# CONFIG_RCU_CPU_STALL_VERBOSE is not set +# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set @@ -5378,7 +5384,6 @@ CONFIG_FTRACE=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y # CONFIG_IRQSOFF_TRACER is not set -# CONFIG_PREEMPT_TRACER is not set CONFIG_SCHED_TRACER=y CONFIG_FTRACE_SYSCALLS=y CONFIG_BRANCH_PROFILE_NONE=y @@ -5386,6 +5391,7 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENT=y CONFIG_DYNAMIC_FTRACE=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_MCOUNT_RECORD=y @@ -5417,6 +5423,7 @@ CONFIG_DEBUG_RODATA=y CONFIG_DOUBLEFAULT=y # CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 diff --git a/libre/linux-libre-lts/config.x86_64 b/libre/linux-libre-lts/config.x86_64 index fa7be5e5b..80f5a7aca 100644 --- a/libre/linux-libre-lts/config.x86_64 +++ b/libre/linux-libre-lts/config.x86_64 @@ -1,6 +1,6 @@ # # Automatically generated make config: don't edit -# Linux/x86_64 3.0.26-1 Kernel Configuration +# Linux/x86_64 3.0.40-2 Kernel Configuration # CONFIG_64BIT=y # CONFIG_X86_32 is not set @@ -63,7 +63,7 @@ CONFIG_EXPERIMENTAL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_CROSS_COMPILE="" CONFIG_LOCALVERSION="-LIBRE-LTS" -CONFIG_LOCALVERSION_AUTO=y +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_HAVE_KERNEL_GZIP=y CONFIG_HAVE_KERNEL_BZIP2=y CONFIG_HAVE_KERNEL_LZMA=y @@ -107,13 +107,14 @@ CONFIG_IRQ_FORCED_THREADING=y # # RCU Subsystem # -CONFIG_TREE_PREEMPT_RCU=y -CONFIG_PREEMPT_RCU=y +CONFIG_TREE_RCU=y +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_PREEMPT_RCU is not set # CONFIG_RCU_TRACE is not set CONFIG_RCU_FANOUT=64 # CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set # CONFIG_TREE_RCU_TRACE is not set -# CONFIG_RCU_BOOST is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=19 @@ -193,9 +194,11 @@ CONFIG_TRACEPOINTS=y CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y -# CONFIG_KPROBES is not set +CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_OPTPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -252,27 +255,27 @@ CONFIG_PADATA=y # CONFIG_INLINE_SPIN_LOCK_BH is not set # CONFIG_INLINE_SPIN_LOCK_IRQ is not set # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set -# CONFIG_INLINE_SPIN_UNLOCK is not set +CONFIG_INLINE_SPIN_UNLOCK=y # CONFIG_INLINE_SPIN_UNLOCK_BH is not set -# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_READ_TRYLOCK is not set # CONFIG_INLINE_READ_LOCK is not set # CONFIG_INLINE_READ_LOCK_BH is not set # CONFIG_INLINE_READ_LOCK_IRQ is not set # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set -# CONFIG_INLINE_READ_UNLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y # CONFIG_INLINE_READ_UNLOCK_BH is not set -# CONFIG_INLINE_READ_UNLOCK_IRQ is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set # CONFIG_INLINE_WRITE_TRYLOCK is not set # CONFIG_INLINE_WRITE_LOCK is not set # CONFIG_INLINE_WRITE_LOCK_BH is not set # CONFIG_INLINE_WRITE_LOCK_IRQ is not set # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set -# CONFIG_INLINE_WRITE_UNLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y # CONFIG_INLINE_WRITE_UNLOCK_BH is not set -# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set # CONFIG_MUTEX_SPIN_ON_OWNER is not set CONFIG_FREEZER=y @@ -341,9 +344,9 @@ CONFIG_NR_CPUS=64 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y # CONFIG_IRQ_TIME_ACCOUNTING is not set -# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set -CONFIG_PREEMPT=y +# CONFIG_PREEMPT is not set CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y @@ -960,7 +963,9 @@ CONFIG_IP_DCCP_TFRC_LIB=y # DCCP Kernel Hacking # # CONFIG_IP_DCCP_DEBUG is not set +CONFIG_NET_DCCPPROBE=m CONFIG_IP_SCTP=m +CONFIG_NET_SCTPPROBE=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set @@ -1070,10 +1075,9 @@ CONFIG_BPF_JIT=y # Network testing # CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m CONFIG_NET_DROP_MONITOR=y CONFIG_HAMRADIO=y -# CONFIG_CAN is not set -CONFIG_IRDA=m # # Packet Radio protocols @@ -1093,6 +1097,8 @@ CONFIG_BAYCOM_SER_FDX=m CONFIG_BAYCOM_SER_HDX=m CONFIG_BAYCOM_PAR=m CONFIG_YAM=m +# CONFIG_CAN is not set +CONFIG_IRDA=m # # IrDA protocols @@ -3621,6 +3627,7 @@ CONFIG_DRM_TDFX=m CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_KMS=y +# CONFIG_DRM_I810 is not set CONFIG_DRM_I915=m CONFIG_DRM_I915_KMS=y CONFIG_DRM_MGA=m @@ -5052,7 +5059,6 @@ CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set -# CONFIG_DEBUG_PREEMPT is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set @@ -5082,7 +5088,7 @@ CONFIG_FRAME_POINTER=y # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set CONFIG_RCU_CPU_STALL_TIMEOUT=60 -# CONFIG_RCU_CPU_STALL_VERBOSE is not set +# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set @@ -5118,7 +5124,6 @@ CONFIG_FTRACE=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_GRAPH_TRACER=y # CONFIG_IRQSOFF_TRACER is not set -# CONFIG_PREEMPT_TRACER is not set CONFIG_SCHED_TRACER=y CONFIG_FTRACE_SYSCALLS=y CONFIG_BRANCH_PROFILE_NONE=y @@ -5126,6 +5131,7 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENT=y CONFIG_DYNAMIC_FTRACE=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_MCOUNT_RECORD=y @@ -5157,6 +5163,7 @@ CONFIG_DEBUG_RODATA=y # CONFIG_IOMMU_DEBUG is not set # CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 diff --git a/libre/linux-libre-lts/linux-libre-lts.install b/libre/linux-libre-lts/linux-libre-lts.install index 8a688091d..05124e7ab 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.42-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' @@ -33,7 +33,7 @@ post_install () { post_upgrade() { pacman -Q grub &>/dev/null hasgrub=$? - pacman -Q grub2-common &>/dev/null + pacman -Q grub-common &>/dev/null hasgrub2=$? pacman -Q lilo &>/dev/null haslilo=$? diff --git a/libre/linux-libre-manpages/PKGBUILD b/libre/linux-libre-manpages/PKGBUILD index 1422f451f..e6cc4238c 100644 --- a/libre/linux-libre-manpages/PKGBUILD +++ b/libre/linux-libre-manpages/PKGBUILD @@ -1,18 +1,18 @@ -# $Id$ +# $Id: PKGBUILD 142395 2011-11-08 23:03:12Z thomas $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Maintainer: Thomas Baechler <thomas@archlinux.org> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> pkgname=linux-libre-manpages pkgver=3.1 -pkgrel=1 -pkgdesc="Kernel hackers manual - Section 9 manpages that comes with the Linux-libre kernel." +pkgrel=1.2 +pkgdesc="Kernel libre hackers manual - Section 9 manpages that comes with the linux-libre kernel" arch=('any') url="http://linux-libre.fsfla.org/" license=('GPL2') makedepends=('xmlto' 'docbook-xsl') -replaces=('kernel26-manpages' 'linux-manpages') -conflicts=('kernel26-manpages' 'linux-manpages') +replaces=('kernel26-manpages' 'kernel26-libre-manpages' 'linux-manpages') +conflicts=('kernel26-manpages' 'kernel26-libre-manpages' 'linux-manpages') provides=('kernel26-manpages' 'linux-manpages') source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/linux-libre-${pkgver}-gnu.tar.xz") md5sums=('38703cdbb0b9107e7220bc094c5e36b1') diff --git a/libre/linux-libre-tools/PKGBUILD b/libre/linux-libre-tools/PKGBUILD index def346093..802800fa0 100644 --- a/libre/linux-libre-tools/PKGBUILD +++ b/libre/linux-libre-tools/PKGBUILD @@ -3,29 +3,43 @@ # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> pkgbase=linux-libre-tools -_pkgname=('perf' 'cpupower' 'x86_energy_perf_policy') -pkgname=('perf-libre' 'cpupower-libre' 'x86_energy_perf_policy-libre') -_basekernel=3.4 +pkgname=('perf-libre' 'cpupower-libre' 'x86_energy_perf_policy-libre' 'usbip-libre') +_basekernel=3.5 #_sublevel=1 #pkgver=${_basekernel}.${_sublevel} pkgver=${_basekernel} -pkgrel=3 +pkgrel=5 license=('GPL2') arch=('i686' 'x86_64' 'mips64el') url='http://linux-libre.fsfla.org/' options=('!strip') -makedepends=('asciidoc' 'xmlto') # split packages need all package dependencies set manually in makedepends -makedepends+=('python2' 'libnewt' 'elfutils' 'pciutils') +# kernel source deps +makedepends=('asciidoc' 'xmlto') +# perf-libre deps +makedepends+=('perl' 'python2' 'libnewt' 'elfutils') +# cpupower-libre deps +makedepends+=('pciutils') +# usbip-libre deps +makedepends+=('glib2' 'sysfsutils') +groups=("$pkgbase") 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" - 'cpupower.rc' 'cpupower.conf' - 'cpupower.service') -md5sums=('a5e128ca059cceb8b69148b41ff4ac6f' - '73dbc931e86b3b73d6e2338dcbee81a4' + 'cpupower.rc' + 'cpupower.systemd' + 'cpupower.service' + 'usbipd.conf' + 'usbipd.rc' + 'usbipd.service') +md5sums=('2407fc9563a74acaf38aa0c06516eb1c' '18d5aa9e4c6bb23bb02bf65e155e0f0e' - '20870541e88109d2f153be3c58a277f1') + '1d9214637968b91706b6e616a100d44b' + 'c0d17b5295fe964623c772a2dd981771' + '2450e8ff41b30eb58d43b5fffbfde1f4' + 'e8fac9c45a628015644b4150b139278a' + '8a3831d962ff6a9968c0c20fd601cdec' + 'ba7c1c513314dd21fb2334fb8417738f') build() { # apply stable patching set @@ -34,41 +48,50 @@ build() { patch -Np1 -i "${srcdir}/patch-${_basekernel}-gnu-${pkgver}-gnu" fi - msg2 'Build perf' + msg2 'Build perf-libre' 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 \ all man popd - msg2 'Build cpupower' + msg2 'Build cpupower-libre' pushd linux-$pkgver/tools/power/cpupower # we cannot use --as-needed LDFLAGS=${LDFLAGS:+"$LDFLAGS,--no-as-needed"} make VERSION=$pkgver-$pkgrel popd - msg2 'Build x86_energy_perf_policy' + msg2 'Build x86_energy_perf_policy-libre' pushd linux-$pkgver/tools/power/x86/x86_energy_perf_policy make popd + + msg2 'Build usbip-libre' + pushd linux-$pkgver/drivers/staging/usbip/userspace + ./autogen.sh + ./configure --prefix=/usr + make + popd } package_perf-libre() { pkgdesc='Linux-libre kernel performance auditing tool' - depends=('python2' 'libnewt' 'elfutils') + depends=('perl' 'python2' 'libnewt' 'elfutils') replaces=('perf') conflicts=('perf') provides=("perf=$pkgver") 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 \ @@ -78,7 +101,7 @@ package_perf-libre() { package_cpupower-libre() { pkgdesc='Linux-libre kernel tool to examine and tune power saving related features of your processor' backup=('etc/conf.d/cpupower') - depends=('pciutils') + depends=('bash' 'pciutils') replaces=('cpupower') conflicts=('cpupower' 'cpufrequtils') provides=("cpupower=$pkgver") @@ -90,21 +113,43 @@ package_cpupower-libre() { docdir='/usr/share/doc/cpupower' \ install install-man popd - # install rc.d script - install -D -m 755 cpupower.rc "$pkgdir/etc/rc.d/cpupower" - install -D -m 644 cpupower.conf "$pkgdir/etc/conf.d/cpupower" - install -D -m 644 cpupower.service "$pkgdir/usr/lib/systemd/system/cpupower.service" + # install startup scripts + install -Dm 755 cpupower.rc "$pkgdir/etc/rc.d/cpupower" + install -Dm 644 cpupower.conf "$pkgdir/etc/conf.d/cpupower" + install -Dm 644 cpupower.service "$pkgdir/usr/lib/systemd/system/cpupower.service" + install -Dm 755 cpupower.systemd "$pkgdir/usr/lib/systemd/scripts/cpupower" } package_x86_energy_perf_policy-libre() { pkgdesc='Read or write MSR_IA32_ENERGY_PERF_BIAS' + depends=('glibc') replaces=('x86_energy_perf_policy') conflicts=('x86_energy_perf_policy') provides=("x86_energy_perf_policy=$pkgver") cd linux-$pkgver/tools/power/x86/x86_energy_perf_policy - install -D -m 755 x86_energy_perf_policy "$pkgdir/usr/bin/x86_energy_perf_policy" - install -D -m 644 x86_energy_perf_policy.8 "$pkgdir/usr/share/man/man8/x86_energy_perf_policy.8" + install -Dm 755 x86_energy_perf_policy "$pkgdir/usr/bin/x86_energy_perf_policy" + install -Dm 644 x86_energy_perf_policy.8 "$pkgdir/usr/share/man/man8/x86_energy_perf_policy.8" +} + +package_usbip-libre() { + pkgdesc='An USB device sharing system over IP network' + depends=('glib2' 'sysfsutils') + options=('!libtool') + replaces=('usbip') + conflicts=('usbip') + provides=("usbip=$pkgver") + + pushd linux-$pkgver/drivers/staging/usbip/userspace + make install DESTDIR="$pkgdir" + popd + # module loading + install -Dm 644 /dev/null "$pkgdir/usr/lib/modules-load.d/$pkgname.conf" + printf 'usbip-core\nusbip-host\n' > "$pkgdir/usr/lib/modules-load.d/$pkgname.conf" + # install daemon scripts + install -Dm 755 usbipd.rc "$pkgdir/etc/rc.d/usbipd" + install -Dm 644 usbipd.conf "$pkgdir/etc/conf.d/usbipd" + install -Dm 644 usbipd.service "$pkgdir/usr/lib/systemd/system/usbipd.service" } # vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/linux-libre-tools/cpupower.pmutils b/libre/linux-libre-tools/cpupower.pmutils new file mode 100644 index 000000000..fb93cd7c1 --- /dev/null +++ b/libre/linux-libre-tools/cpupower.pmutils @@ -0,0 +1,37 @@ +#!/bin/bash + +[[ -x /usr/bin/cpupower ]] || exit $NA + +CPUPOWER_GOVERNOR_AC=${CPUPOWER_GOVERNOR_AC:-ondemand} +CPUPOWER_GOVERNOR_BAT=${CPUPOWER_GOVERNOR_BAT:-conservative} + +help() { + cat <<EOF +-------- +$0: Select cpupower frequency governor. + +Parameters: +CPUPOWER_GOVERNOR_AC = Governor to use on AC. +Defaults to ondemand. + +CPUPOWER_GOVERNOR_BAT = Governor to use on battery. +Defaults to conservative. + +EOF +} + +cpupow() { + printf 'Setting cpupower frequency governor to %s...' "$1" + cpupower -c all frequency-set -g "$1" +} + +case $1 in + true) cpupow "$CPUPOWER_GOVERNOR_BAT" ;; + false) cpupow "$CPUPOWER_GOVERNOR_AC" ;; + help) help;; + *) exit $NA ;; +esac + +exit 0 + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/linux-libre-tools/cpupower.rc b/libre/linux-libre-tools/cpupower.rc index 27a491e95..2c4441c4e 100644 --- a/libre/linux-libre-tools/cpupower.rc +++ b/libre/linux-libre-tools/cpupower.rc @@ -2,40 +2,16 @@ . /etc/rc.conf . /etc/rc.d/functions - -[[ -f /etc/conf.d/cpupower ]] && . /etc/conf.d/cpupower +. /etc/conf.d/${0##*/} case "$1" in start|restart) - stat_busy "Setting cpupower rules" - declare -i fail=0 - - # frequency-set options - declare -a params=() - params+=(${governor:+-g $governor}) - params+=(${min_freq:+-d $min_freq}) - params+=(${max_freq:+-u $max_freq}) - params+=(${freq:+-f $freq}) - if ((${#params[@]} > 0)); then - cpupower frequency-set "${params[@]}" >/dev/null || fail=1 - fi - - # set options - declare -a params=() - params+=(${mc_scheduler:+-m $mc_scheduler}) - params+=(${smp_scheduler:+-s $smp_scheduler}) - params+=(${perf_bias:+-b $perf_bias}) - if ((${#params[@]} > 0)); then - cpupower set "${params[@]}" >/dev/null || fail=1 - fi - - # print failure if any - (($fail > 0)) && stat_fail && exit 1 || stat_done + status 'Setting cpupower rules' /usr/lib/systemd/scripts/cpupower || exit 1 ;; *) - echo "usage: ${0##*/} {start|restart}" + echo "usage: ${0##*/} {start|restart}" >&2 + exit 1 + ;; esac -true - # vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/linux-libre-tools/cpupower.service b/libre/linux-libre-tools/cpupower.service index f77cfdc97..aaeba2b08 100644 --- a/libre/linux-libre-tools/cpupower.service +++ b/libre/linux-libre-tools/cpupower.service @@ -3,7 +3,7 @@ Description=Apply cpupower configuration [Service] Type=oneshot -ExecStart=/etc/rc.d/cpupower start +ExecStart=/usr/lib/systemd/scripts/cpupower RemainAfterExit=yes [Install] diff --git a/libre/linux-libre-tools/cpupower.systemd b/libre/linux-libre-tools/cpupower.systemd new file mode 100644 index 000000000..f45b02bc8 --- /dev/null +++ b/libre/linux-libre-tools/cpupower.systemd @@ -0,0 +1,32 @@ +#!/bin/bash + +. /etc/conf.d/cpupower + +declare -i fail=0 + +# parse frequency options +declare -a params=() +params+=(${governor:+-g $governor}) +params+=(${min_freq:+-d $min_freq}) +params+=(${max_freq:+-u $max_freq}) +params+=(${freq:+-f $freq}) + +# apply frequency options +if ((${#params[@]} > 0)); then + cpupower frequency-set "${params[@]}" >/dev/null || fail=1 +fi + +# parse cpu options +declare -a params=() +params+=(${mc_scheduler:+-m $mc_scheduler}) +params+=(${smp_scheduler:+-s $smp_scheduler}) +params+=(${perf_bias:+-b $perf_bias}) + +# apply cpu options +if ((${#params[@]} > 0)); then + cpupower set "${params[@]}" >/dev/null || fail=1 +fi + +exit $fail + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/linux-libre-tools/usbipd.conf b/libre/linux-libre-tools/usbipd.conf new file mode 100644 index 000000000..5990b857a --- /dev/null +++ b/libre/linux-libre-tools/usbipd.conf @@ -0,0 +1,3 @@ +# vim:set ts=2 sw=2 ft=sh noet: + +DAEMON_OPTS='' diff --git a/libre/linux-libre-tools/usbipd.rc b/libre/linux-libre-tools/usbipd.rc new file mode 100644 index 000000000..15a1bcf00 --- /dev/null +++ b/libre/linux-libre-tools/usbipd.rc @@ -0,0 +1,34 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/${0##*/} + +DAEMON=/usr/sbin/usbipd +PID=$(pidof -o %PPID $DAEMON) +DAEMON_OPTS="--daemon $DAEMON_OPTS" + +case "$1" in + start) + stat_busy "Starting ${0##*/} daemon" + [[ ! $PID ]] && $DAEMON $DAEMON_OPTS && add_daemon ${0##*/} && stat_done && exit 0 + stat_fail + ;; + stop) + stat_busy "Stopping ${0##*/} daemon" + [[ $PID ]] && kill $PID &> /dev/null && rm_daemon ${0##*/} && stat_done && exit 0 + stat_fail + ;; + restart) + $0 stop + $0 start + exit 0 + ;; + *) + echo "usage: ${0##*/} {start|stop|restart}" >&2 + ;; +esac + +exit 1 + +# vim:set ts=2 sw=2 ft=sh et: diff --git a/libre/linux-libre-tools/usbipd.service b/libre/linux-libre-tools/usbipd.service new file mode 100644 index 000000000..ac2f5f7c1 --- /dev/null +++ b/libre/linux-libre-tools/usbipd.service @@ -0,0 +1,8 @@ +[Unit] +Description=USB/IP server + +[Service] +ExecStart=/usr/sbin/usbipd + +[Install] +WantedBy=multi-user.target diff --git a/libre/linux-libre/.directory b/libre/linux-libre/.directory index f39ceed05..e6f3e33d1 100644 --- a/libre/linux-libre/.directory +++ b/libre/linux-libre/.directory @@ -1,5 +1,6 @@ [Dolphin] -Timestamp=2012,4,8,18,21,16 +Timestamp=2012,8,9,22,54,19 +Version=3 [Settings] HiddenFilesShown=true diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD index 077df9256..f1b856977 100644 --- a/libre/linux-libre/PKGBUILD +++ b/libre/linux-libre/PKGBUILD @@ -7,15 +7,13 @@ # Maintainer (Parabola): Michał Masłowski <mtjm@mtjm.eu> # Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> -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 +pkgbase=linux-libre # Build stock -LIBRE kernel +#pkgbase=linux-libre-custom # Build kernel with a different name +_basekernel=3.5 +_sublevel=3 pkgver=${_basekernel}.${_sublevel} -_lxopkgver=${_basekernel}.4 # nearly always the same as pkgver -pkgrel=3 +pkgrel=1 +_lxopkgver=${_basekernel}.2 # nearly always the same as pkgver arch=('i686' 'x86_64' 'mips64el') url="http://linux-libre.fsfla.org/" license=('GPL2') @@ -26,32 +24,37 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn # the main kernel config files 'config.i686' 'config.x86_64' # standard config files for mkinitcpio ramdisk - "${pkgname}.preset" + "${pkgbase}.preset" 'Kbuild' 'Kbuild.platforms' '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' + 'alsa-powersave-3.5.x.patch' + 'watchdog-3.5.x.patch' + 'i915-i2c-crash-3.5.x.patch' + "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2") +md5sums=('2407fc9563a74acaf38aa0c06516eb1c' + '861f5f97c75b1a572fc5078605248ea3' + '3ba164b409d8024fdd433f3cc4ae1fea' + 'fa1e2ab2f036974199374f015f5a2c46' 'e49ac236dfeef709f91a3d993ea7b62c' '2967cecc3af9f954ccc822fd63dca6ff' '8267264d9a8966e57fdacd1fa1fc65c4' '04b21c79df0a952c22d681dd4f4562df' '9d3c56a4b999c8bfbd4018089a62f662' - '263725f20c0b9eb9c353040792d644e5' - '80a46681386bb87813989faeb92bdd9a' - '86910efeadb5d1e5d5416ff1a9dacb33') + 'c1d58e712112cf8f95e7831012a1e67a' + 'ae13ed1e92bba07e9b17cf5c8d89683c' + 'ff4a203dd52e4dfb5d60948bb667d06d' + 'd822cc131b20090f39b0d448b0e1f8be') if [ "$CARCH" != "mips64el" ]; then # Don't use the Loongson-specific patches on non-mips64el arches. unset source[${#source[@]}-1] unset md5sums[${#md5sums[@]}-1] fi +_kernelname=${pkgbase#linux-libre} +_localversionname=-LIBRE + build() { cd "${srcdir}/linux-${_basekernel}" @@ -62,21 +65,17 @@ build() { # Add freedo as boot logo patch -Np1 -i "${srcdir}/boot-logo.patch" - # add latest fixes from stable queue, if needed - # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git + # fix alsa powersave bug, probably fixed in 3.5.4 + # https://bugs.archlinux.org/task/31255 + patch -Np1 -i "${srcdir}/alsa-powersave-3.5.x.patch" - # Some chips detect a ghost TV output - # mailing list discussion: http://lists.freedesktop.org/archives/intel-gfx/2011-April/010371.html - # Arch Linux bug report: FS#19234 - # - # It is unclear why this patch wasn't merged upstream, it was accepted, - # then dropped because the reasoning was unclear. However, it is clearly - # needed. - patch -Np1 -i "${srcdir}/i915-fix-ghost-tv-output.patch" + # fix broken watchdog + # https://bugzilla.kernel.org/show_bug.cgi?id=44991 + patch -Np1 -i "${srcdir}/watchdog-3.5.x.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" + # fix i915 i2c crash + # https://bugzilla.kernel.org/show_bug.cgi?id=46381 + patch -Np1 -i "${srcdir}/i915-i2c-crash-3.5.x.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 @@ -95,18 +94,22 @@ build() { # https://git.kernel.org/?p=linux/hotplug/udev.git;a=blob_plain;f=README # and make USB storage support builtin (e.g. for booting from USB # disks without slowly loading an initramfs) +# since 3.4 rtl8187 supports adhoc mode, so batman-adv is enabled again sed -ri -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \ -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \ -e "s|CONFIG_UEVENT_HELPER_PATH=.*|CONFIG_UEVENT_HELPER_PATH=\"\"|g" \ - -e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" \ + -e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" \ -e "s;(CONFIG_USB(_COMMON|_EHCI_HCD|_OHCI_HCD|_STORAGE.*|_UAS)?)=.*;\1=y;g" \ + -e "s|# CONFIG_BATMAN_ADV is not set|CONFIG_BATMAN_ADV=m|g" \ ./.config + echo -e "CONFIG_BATMAN_ADV_BLA=y\nCONFIG_BATMAN_ADV_DEBUG=n" >> .config else cat "${srcdir}/config.${CARCH}" > ./.config # simpler fi if [ "${_kernelname}" != "" ]; then - sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config + sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" ./.config + sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config fi # set extraversion to pkgrel @@ -126,15 +129,22 @@ build() { #make oldconfig # using old config from previous kernel version # ... or manually edit .config + # rewrite configuration + yes "" | make config >/dev/null + + # save configuration for later reuse + if [ "${CARCH}" = "x86_64" ]; then + cat .config > "${startdir}/config.x86_64.last" + else + cat .config > "${startdir}/config.i686.last" + fi + #################### # stop here # this is useful to configure the kernel - #msg "Stopping build" - #return 1 + #msg "Stopping build"; return 1 #################### - yes "" | make config - # build! if [ "$CARCH" == "mips64el" ]; then # The build system passes it directly to linker, disable to avoid @@ -142,22 +152,22 @@ build() { export LDFLAGS="" # bzImage is arch-specific and not supported on mips; vmlinux is # useful for oprofile. - make ${MAKEFLAGS} vmlinux vmlinuz modules + make ${MAKEFLAGS} LOCALVERSION= vmlinux vmlinuz modules else - make ${MAKEFLAGS} bzImage modules + make ${MAKEFLAGS} LOCALVERSION= bzImage modules fi } -package_linux-libre() { - pkgdesc="The Linux-libre Kernel and modules" - groups=('base') +_package() { + pkgdesc="The ${pkgbase} kernel and modules" + [ "${pkgbase}" = "linux-libre" ] && groups=('base') depends=('coreutils' 'kmod') optdepends=('crda: to set the correct wireless channels of your country') - provides=('kernel26' "linux=$pkgver") - conflicts=('kernel26' 'kernel26-libre' 'linux') - replaces=('kernel26' 'kernel26-libre' 'linux') - backup=("etc/mkinitcpio.d/${pkgname}.preset") - install=${pkgname}.install + provides=("kernel26${_kernelname}=${pkgver}" "linux${_kernelname}=${pkgver}") + conflicts=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}") + replaces=("kernel26${_kernelname}" "kernel26-libre${_kernelname}" "linux${_kernelname}") + backup=("etc/mkinitcpio.d/${pkgbase}.preset") + install=${pkgbase}.install if [ "$CARCH" = "mips64el" ]; then optdepends+=('mkinitcpio: to make the initramfs (needs reinstall of this package)') conflicts+=('mkinitcpio<0.7') @@ -171,35 +181,42 @@ package_linux-libre() { [ $CARCH = "mips64el" ] && KARCH=mips # get kernel version - _kernver="$(make kernelrelease)" + _kernver="$(make LOCALVERSION= kernelrelease)" + _basekernel=${_kernver%%-*} + _basekernel=${_basekernel%.*} mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot} - make INSTALL_MOD_PATH="${pkgdir}" modules_install + make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install if [ "$CARCH" == "mips64el" ]; then - cp vmlinuz "${pkgdir}/boot/vmlinuz-${pkgname}" - cp vmlinux "${pkgdir}/boot/vmlinux-${pkgname}" + cp vmlinuz "${pkgdir}/boot/vmlinuz-${pkgbase}" + cp vmlinux "${pkgdir}/boot/vmlinux-${pkgbase}" else - cp "arch/${KARCH}/boot/bzImage" "${pkgdir}/boot/vmlinuz-${pkgname}" + cp "arch/${KARCH}/boot/bzImage" "${pkgdir}/boot/vmlinuz-${pkgbase}" fi # add vmlinux install -D -m644 vmlinux "${pkgdir}/usr/src/linux-${_kernver}/vmlinux" # install fallback mkinitcpio.conf file and preset file for kernel - install -D -m644 "${srcdir}/${pkgname}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset" + install -D -m644 "${srcdir}/${pkgbase}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" # set correct depmod command for install sed \ - -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgname}\"|g" \ - -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgname}.img\"|g" \ - -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgname}-fallback.img\"|g" \ - -i "${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset" + -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \ + -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \ + -i "${startdir}/${pkgbase}.install" + sed \ + -e "1s|'linux*.*'|'${pkgbase}'|" \ + -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \ + -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \ + -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \ + -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" # mkinitcpio 0.7 relies on bzImage to find the kernel version if [ "$CARCH" == "mips64el" ]; then - sed -e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|g" \ - -i "${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset" + sed -e "s|ALL_kver=.*|ALL_kver=\"${_kernver}\"|" \ + -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" fi # remove build and source links @@ -209,10 +226,10 @@ package_linux-libre() { # gzip -9 all modules to save 100MB of space find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; # make room for external modules - ln -s "../extramodules-${_basekernel}${_kernelname:--LIBRE}" "${pkgdir}/lib/modules/${_kernver}/extramodules" + ln -s "../extramodules-${_basekernel}${_localversionname:--LIBRE}" "${pkgdir}/lib/modules/${_kernver}/extramodules" # add real version for building modules and running depmod from post_install/upgrade - mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--LIBRE}" - echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--LIBRE}/version" + mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE}" + echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_localversionname:--LIBRE}/version" # move module tree /lib -> /usr/lib mv "$pkgdir/lib" "$pkgdir/usr" @@ -221,11 +238,11 @@ package_linux-libre() { depmod -b "$pkgdir" -F System.map "$_kernver" } -package_linux-libre-headers() { - pkgdesc="Header files and scripts for building modules for linux-libre kernel" - provides=('kernel26-headers' "linux-headers=${pkgver}") - conflicts=('kernel26-headers' 'kernel26-libre-headers' 'linux-headers') - replaces=('kernel26-headers' 'kernel26-libre-headers' 'linux-headers') +_package-headers() { + pkgdesc="Header files and scripts for building modules for ${pkgbase} kernel" + provides=("kernel26${_kernelname}-headers=${pkgver}" "linux${_kernelname}-headers=${pkgver}") + conflicts=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers") + replaces=("kernel26${_kernelname}-headers" "kernel26-libre${_kernelname}-headers" "linux${_kernelname}-headers") KARCH=x86 [ $CARCH = "mips64el" ] && KARCH=mips @@ -233,7 +250,7 @@ package_linux-libre-headers() { # In case of repackaging this is empty if [ -z "${_kernver}" ]; then cd "${srcdir}/linux-${_basekernel}" - _kernver="$(make kernelrelease)" + _kernver="$(make LOCALVERSION= kernelrelease)" fi install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}" @@ -289,7 +306,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 @@ -372,11 +389,11 @@ package_linux-libre-headers() { fi } -package_linux-libre-docs() { - pkgdesc="Kernel hackers manual - HTML documentation that comes with the Linux-libre kernel." - provides=('kernel26-docs' "linux-docs=$pkgver") - conflicts=('kernel26-docs' 'kernel26-libre-docs' 'linux-docs') - replaces=('kernel26-docs' 'kernel26-libre-docs' 'linux-docs') +_package-docs() { + pkgdesc="Kernel libre hackers manual - HTML documentation that comes with the ${pkgbase} kernel" + provides=("kernel26${_kernelname}-docs=${pkgver}" "linux${_kernelname}-docs=${pkgver}") + conflicts=("kernel26${_kernelname}-docs" "kernel26-libre${_kernelname}-docs" "linux${_kernelname}-docs") + replaces=("kernel26${_kernelname}-docs" "kernel26-libre${_kernelname}-docs" "linux${_kernelname}-docs") cd "${srcdir}/linux-${_basekernel}" @@ -388,3 +405,12 @@ package_linux-libre-docs() { # remove a file already in linux package rm -f "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile" } + +pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs") +for _p in ${pkgname[@]}; do + eval "package_${_p}() { + _package${_p#${pkgbase}} + }" +done + +# vim:set ts=8 sts=2 sw=2 et: diff --git a/libre/linux-libre/alsa-powersave-3.5.x.patch b/libre/linux-libre/alsa-powersave-3.5.x.patch new file mode 100644 index 000000000..189fd1ceb --- /dev/null +++ b/libre/linux-libre/alsa-powersave-3.5.x.patch @@ -0,0 +1,29 @@ +From: Takashi Iwai <tiwai@suse.de> +Date: Mon, 20 Aug 2012 19:25:22 +0000 (+0200) +Subject: ALSA: hda - Fix leftover codec->power_transition +X-Git-Tag: v3.6-rc3~14^2~1 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=commitdiff_plain;h=535b6c51fe8293c88ce919cdfc4390c67a1cb6d1 + +ALSA: hda - Fix leftover codec->power_transition + +When the codec turn-on operation is canceled by the immediate +power-on, the driver left the power_transition flag as is. +This caused the persistent avoidance of power-save behavior. + +Cc: <stable@vger.kernel.org> [v3.5+] +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + +diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c +index c3077d5..f560051 100644 +--- a/sound/pci/hda/hda_codec.c ++++ b/sound/pci/hda/hda_codec.c +@@ -4454,6 +4454,8 @@ static void __snd_hda_power_up(struct hda_codec *codec, bool wait_power_down) + * then there is no need to go through power up here. + */ + if (codec->power_on) { ++ if (codec->power_transition < 0) ++ codec->power_transition = 0; + spin_unlock(&codec->power_lock); + return; + } diff --git a/libre/linux-libre/avmfritz-only-few-bytes-are-transfered-on-a-conn.patch b/libre/linux-libre/avmfritz-only-few-bytes-are-transfered-on-a-conn.patch new file mode 100644 index 000000000..f8bb193c6 --- /dev/null +++ b/libre/linux-libre/avmfritz-only-few-bytes-are-transfered-on-a-conn.patch @@ -0,0 +1,48 @@ +From 285c08154eede7dc4387bfc925967c884594dcc9 Mon Sep 17 00:00:00 2001 +From: Karsten Keil <keil@b1-systems.de> +Date: Sat, 28 Jul 2012 20:10:04 +0200 +Subject: [PATCH] mISDN: Bugfix only few bytes are transfered on a connection + +The test for the fillempty condition was wrong in one place. +Changed the variable to the right boolean type. + +Signed-off-by: Karsten Keil <keil@b1-systems.de> +--- + drivers/isdn/hardware/mISDN/avmfritz.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/isdn/hardware/mISDN/avmfritz.c b/drivers/isdn/hardware/mISDN/avmfritz.c +index c08fc60..fa6ca47 100644 +--- a/drivers/isdn/hardware/mISDN/avmfritz.c ++++ b/drivers/isdn/hardware/mISDN/avmfritz.c +@@ -449,7 +449,8 @@ hdlc_fill_fifo(struct bchannel *bch) + { + struct fritzcard *fc = bch->hw; + struct hdlc_hw *hdlc; +- int count, fs, cnt = 0, idx, fillempty = 0; ++ int count, fs, cnt = 0, idx; ++ bool fillempty = false; + u8 *p; + u32 *ptr, val, addr; + +@@ -462,7 +463,7 @@ hdlc_fill_fifo(struct bchannel *bch) + return; + count = fs; + p = bch->fill; +- fillempty = 1; ++ fillempty = true; + } else { + count = bch->tx_skb->len - bch->tx_idx; + if (count <= 0) +@@ -477,7 +478,7 @@ hdlc_fill_fifo(struct bchannel *bch) + hdlc->ctrl.sr.cmd |= HDLC_CMD_XME; + } + ptr = (u32 *)p; +- if (fillempty) { ++ if (!fillempty) { + pr_debug("%s.B%d: %d/%d/%d", fc->name, bch->nr, count, + bch->tx_idx, bch->tx_skb->len); + bch->tx_idx += count; +-- +1.7.7 + diff --git a/libre/linux-libre/config.i686 b/libre/linux-libre/config.i686 index a6e1a6310..54db12ba1 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-2 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 @@ -196,9 +204,11 @@ CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y CONFIG_OPROFILE_NMI_TIMER=y -# CONFIG_KPROBES is not set +CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_UPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -206,7 +216,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 +230,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 +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_MPPARSE=y # CONFIG_X86_BIGSMP is not set @@ -325,7 +334,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_X86_32_IRIS=m CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_TIME_ACCOUNTING=y # CONFIG_XEN_PRIVILEGED_GUEST is not set CONFIG_KVM_CLOCK=y CONFIG_KVM_GUEST=y @@ -451,7 +460,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 +507,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 +647,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 +692,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 +720,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 +859,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 +1020,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,7 +1073,9 @@ CONFIG_IP_DCCP_TFRC_LIB=y # DCCP Kernel Hacking # # CONFIG_IP_DCCP_DEBUG is not set +CONFIG_NET_DCCPPROBE=m CONFIG_IP_SCTP=m +CONFIG_NET_SCTPPROBE=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set @@ -1099,11 +1117,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 +1145,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 +1182,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 @@ -1174,6 +1195,7 @@ CONFIG_BQL=y # Network testing # CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m CONFIG_NET_DROP_MONITOR=y CONFIG_HAMRADIO=y @@ -1339,6 +1361,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 +1394,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 +1525,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 +1536,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 +1622,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 +1653,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 +1789,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 +1962,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 +1999,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 +2147,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 +2243,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 +2262,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 +2294,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 +2314,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 +2428,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 +2510,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 +2689,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 +2718,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 +2806,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 +2823,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 +2848,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 +2999,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 +3099,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 +3109,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 +3264,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 +3284,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 +3315,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 +3394,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 +3482,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 +3603,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 +3661,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 +3671,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 +3680,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 +3794,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 +3944,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 +3980,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 +4033,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 +4109,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 +4147,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 +4293,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 +4350,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 +4365,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 +4423,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 +4448,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 +4486,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 +4608,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 +4635,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 +4651,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 +4662,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 +4685,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 +4705,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 +4759,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 +4773,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 +4790,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 +4878,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 +4925,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 +4944,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 +4965,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 +5023,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 +5076,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 +5106,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 +5146,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 +5183,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 +5265,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 +5423,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 +5444,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 +5454,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 +5543,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 +5569,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 +5582,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 @@ -5507,6 +5629,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_CPU_STALL_VERBOSE is not set # CONFIG_RCU_CPU_STALL_INFO is not set # CONFIG_RCU_TRACE is not set +# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set @@ -5518,7 +5641,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 +5651,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 +5670,9 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENT=y +CONFIG_UPROBE_EVENT=y +CONFIG_PROBE_EVENTS=y CONFIG_DYNAMIC_FTRACE=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_MCOUNT_RECORD=y @@ -5580,6 +5704,7 @@ CONFIG_DEBUG_RODATA=y CONFIG_DOUBLEFAULT=y # CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 @@ -5759,6 +5884,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 +5899,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 +5939,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 +5959,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..31da569ad 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-2 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 @@ -196,9 +206,11 @@ CONFIG_OPROFILE=m # CONFIG_OPROFILE_EVENT_MULTIPLEX is not set CONFIG_HAVE_OPROFILE=y CONFIG_OPROFILE_NMI_TIMER=y -# CONFIG_KPROBES is not set +CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y +CONFIG_UPROBES=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_KRETPROBES=y CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y @@ -207,6 +219,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 +232,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 +328,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 @@ -325,7 +335,7 @@ CONFIG_X86_MPPARSE=y CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_PARAVIRT_GUEST=y -# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_TIME_ACCOUNTING=y CONFIG_XEN=y CONFIG_XEN_DOM0=y CONFIG_XEN_PRIVILEGED_GUEST=y @@ -439,7 +449,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 +496,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 +649,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 +674,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 +685,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 +824,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 +985,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 @@ -1019,7 +1038,9 @@ CONFIG_IP_DCCP_TFRC_LIB=y # DCCP Kernel Hacking # # CONFIG_IP_DCCP_DEBUG is not set +CONFIG_NET_DCCPPROBE=m CONFIG_IP_SCTP=m +CONFIG_NET_SCTPPROBE=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set @@ -1057,11 +1078,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 +1106,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 +1143,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,13 +1151,13 @@ CONFIG_RFS_ACCEL=y CONFIG_XPS=y CONFIG_NETPRIO_CGROUP=m CONFIG_BQL=y -CONFIG_HAVE_BPF_JIT=y CONFIG_BPF_JIT=y # # Network testing # CONFIG_NET_PKTGEN=m +CONFIG_NET_TCPPROBE=m CONFIG_NET_DROP_MONITOR=y CONFIG_HAMRADIO=y @@ -1294,6 +1318,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 +1328,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 +1479,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 +1558,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 +1589,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 +1713,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 +1873,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 +1911,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 +2047,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 +2126,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 +2145,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 +2195,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 +2309,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 +2391,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 +2556,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 +2585,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 +2668,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 +2684,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 +2709,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 +2856,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 +2962,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 +3115,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 +3135,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 +3166,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 +3233,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 +3326,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 +3447,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 +3505,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 +3515,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 +3524,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 +3637,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 +3787,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 +3823,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 +3870,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 +3944,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 +3981,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 +4091,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 +4147,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 +4162,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 +4220,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 +4245,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 +4283,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 +4405,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 +4432,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 +4448,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 +4481,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 +4501,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 +4555,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 +4569,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 +4586,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 +4672,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 +4719,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 +4759,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 +4792,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 +4845,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 +4874,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 +4914,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 +4951,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 +5034,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 +5193,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 +5214,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 +5224,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 +5313,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 +5339,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 +5352,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 @@ -5279,6 +5398,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_CPU_STALL_VERBOSE is not set # CONFIG_RCU_CPU_STALL_INFO is not set # CONFIG_RCU_TRACE is not set +# CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set @@ -5290,7 +5410,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 +5420,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 +5439,9 @@ CONFIG_BRANCH_PROFILE_NONE=y # CONFIG_PROFILE_ALL_BRANCHES is not set CONFIG_STACK_TRACER=y CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_KPROBE_EVENT=y +CONFIG_UPROBE_EVENT=y +CONFIG_PROBE_EVENTS=y CONFIG_DYNAMIC_FTRACE=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_MCOUNT_RECORD=y @@ -5352,6 +5473,7 @@ CONFIG_DEBUG_RODATA=y # CONFIG_IOMMU_DEBUG is not set # CONFIG_IOMMU_STRESS is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 CONFIG_IO_DELAY_TYPE_UDELAY=2 @@ -5533,6 +5655,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 +5669,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 +5708,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 +5728,4 @@ CONFIG_NLATTR=y CONFIG_LRU_CACHE=m CONFIG_AVERAGE=y CONFIG_CORDIC=m +CONFIG_DDR=y diff --git a/libre/linux-libre/i915-i2c-crash-3.5.x.patch b/libre/linux-libre/i915-i2c-crash-3.5.x.patch new file mode 100644 index 000000000..d202b531c --- /dev/null +++ b/libre/linux-libre/i915-i2c-crash-3.5.x.patch @@ -0,0 +1,47 @@ +From cee25168e9c4ef7f9417632af2dc78b8521dfda7 Mon Sep 17 00:00:00 2001 +From: Jani Nikula <jani.nikula@intel.com> +Date: Mon, 13 Aug 2012 17:33:02 +0300 +Subject: [PATCH] drm/i915: ensure i2c adapter is all set before adding it + +i2c_add_adapter() may do i2c transfers on the bus to detect supported +devices. Therefore the adapter needs to be all set before adding it. This +was not the case for the bit-banging fallback, resulting in an oops if the +device detection GMBUS transfers timed out. Fix the issue by calling +i2c_add_adapter() only after intel_gpio_setup(). + +LKML-Reference: <5021F00B.7000503@ionic.de> +Tested-by: Mihai Moldovan <ionic@ionic.de> +Signed-off-by: Jani Nikula <jani.nikula@intel.com> +Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> +--- + drivers/gpu/drm/i915/intel_i2c.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c +index d79500b..b9755f6 100644 +--- a/drivers/gpu/drm/i915/intel_i2c.c ++++ b/drivers/gpu/drm/i915/intel_i2c.c +@@ -486,9 +486,6 @@ int intel_setup_gmbus(struct drm_device *dev) + bus->dev_priv = dev_priv; + + bus->adapter.algo = &gmbus_algorithm; +- ret = i2c_add_adapter(&bus->adapter); +- if (ret) +- goto err; + + /* By default use a conservative clock rate */ + bus->reg0 = port | GMBUS_RATE_100KHZ; +@@ -498,6 +495,10 @@ int intel_setup_gmbus(struct drm_device *dev) + bus->force_bit = true; + + intel_gpio_setup(bus, port); ++ ++ ret = i2c_add_adapter(&bus->adapter); ++ if (ret) ++ goto err; + } + + intel_i2c_reset(dev_priv->dev); +-- +1.7.7.6 + diff --git a/libre/linux-libre/linux-libre.install b/libre/linux-libre/linux-libre.install index 44850230f..0cd51930e 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.3-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' @@ -33,7 +33,7 @@ post_install () { post_upgrade() { pacman -Q grub &>/dev/null hasgrub=$? - pacman -Q grub2-common &>/dev/null + pacman -Q grub-common &>/dev/null hasgrub2=$? pacman -Q lilo &>/dev/null haslilo=$? diff --git a/libre/linux-libre/watchdog-3.5.x.patch b/libre/linux-libre/watchdog-3.5.x.patch new file mode 100644 index 000000000..7ac1e6732 --- /dev/null +++ b/libre/linux-libre/watchdog-3.5.x.patch @@ -0,0 +1,60 @@ +diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c +index 027cc8f..a05fdfc 100644 +--- a/drivers/mfd/lpc_ich.c ++++ b/drivers/mfd/lpc_ich.c +@@ -765,7 +765,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + u32 base_addr_cfg; + u32 base_addr; + int ret; +- bool acpi_conflict = false; + struct resource *res; + + /* Setup power management base register */ +@@ -780,20 +779,11 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + res = wdt_io_res(ICH_RES_IO_TCO); + res->start = base_addr + ACPIBASE_TCO_OFF; + res->end = base_addr + ACPIBASE_TCO_END; +- ret = acpi_check_resource_conflict(res); +- if (ret) { +- acpi_conflict = true; +- goto wdt_done; +- } + + res = wdt_io_res(ICH_RES_IO_SMI); + res->start = base_addr + ACPIBASE_SMI_OFF; + res->end = base_addr + ACPIBASE_SMI_END; +- ret = acpi_check_resource_conflict(res); +- if (ret) { +- acpi_conflict = true; +- goto wdt_done; +- } ++ + lpc_ich_enable_acpi_space(dev); + + /* +@@ -813,11 +803,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + res = wdt_mem_res(ICH_RES_MEM_GCS); + res->start = base_addr + ACPIBASE_GCS_OFF; + res->end = base_addr + ACPIBASE_GCS_END; +- ret = acpi_check_resource_conflict(res); +- if (ret) { +- acpi_conflict = true; +- goto wdt_done; +- } + } + + lpc_ich_finalize_cell(&lpc_ich_cells[LPC_WDT], id); +@@ -825,9 +810,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + 1, NULL, 0); + + wdt_done: +- if (acpi_conflict) +- pr_warn("Resource conflict(s) found affecting %s\n", +- lpc_ich_cells[LPC_WDT].name); + return ret; + } + +-- +1.7.1 + +
\ No newline at end of file diff --git a/libre/lirc-libre/PKGBUILD b/libre/lirc-libre/PKGBUILD index 3b73a9f2f..0968afd17 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=26 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 @@ -63,7 +63,7 @@ build() { } package_lirc-libre() { - pkgdesc="Linux-libre Infrared Remote Control kernel modules for stock libre kernel" + pkgdesc="Linux-libre Infrared Remote Control kernel modules for stock kernel libre" depends=('lirc-utils-libre' 'linux-libre>=3.4' 'linux-libre<3.5') replaces=('lirc' 'lirc+pctv') conflicts=('lirc') 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/luxblend25/PKGBUILD b/libre/luxblend25/PKGBUILD new file mode 100644 index 000000000..3ce9b57db --- /dev/null +++ b/libre/luxblend25/PKGBUILD @@ -0,0 +1,44 @@ +# Maintainer: Lukas Jirkovsky <l.jirkovsky@gmail.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> +pkgname=luxblend25 +pkgver=1.0rc4 +_pkgver=06194cf93745 +_blender=2.63 +pkgrel=1 +pkgdesc='A LuxRender exporter for Blender-libre' +arch=( + any +) +url=http://www.{pkgname::3}render.net/ +license=( + GPL +) +depends=( + blender=$_blender + ${pkgname::3}render +) +replaces=( + $pkgname +) +conflicts=( + $pkgname +) +provides=( + $pkgname=$pkgver +) +source=( + https://bitbucket.org/${pkgname::3}render/$pkgname/get/$_pkgver.tar.bz2 +) +md5sums=( + c5719c2a0e8567cd9f0aef429a2996f0 +) + +package() { + install -d -m755 $pkgdir/usr/share/blender/$_blender/scripts/addons + cp -a $srcdir/${pkgname::3}render-$pkgname-$_pkgver/src/${pkgname::3}render \ + $pkgdir/usr/share/blender/$_blender/scripts/addons + # change the search path in exporter so it finds pylux in its new location + sed -i 's|from.*import pylux|import pylux|' $pkgdir/usr/share/blender/$_blender/scripts/addons/${pkgname::3}render/outputs/pure_api.py +} + +# vim:set ts=2 sw=2 et: diff --git a/libre/luxrays-libre/PKGBUILD b/libre/luxrays-libre/PKGBUILD index 3a5654396..279e6622e 100644 --- a/libre/luxrays-libre/PKGBUILD +++ b/libre/luxrays-libre/PKGBUILD @@ -3,8 +3,8 @@ # Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> _pkgname=luxrays pkgname=luxrays-libre -pkgver=1.0rc2 -_pkgver=8707be9e6dc9 +pkgver=1.0rc3 +_pkgver=eb749c000ffc pkgrel=1 epoch=0 pkgdesc="Accelerate the ray intersection process by using CPUs (without OpenCL)" @@ -17,7 +17,7 @@ replaces=('luxrays') conflicts=('luxrays') provides=("luxrays=$pkgver") source=(https://bitbucket.org/luxrender/luxrays/get/$_pkgver.tar.bz2) -md5sums=('b4f31563a8235a2791ab9df58be43adb') +md5sums=('f5f4b53df22a1c7ad301c78d046edd7d') build() { cd "$srcdir/luxrender-$_pkgname-$_pkgver" diff --git a/libre/luxrender-libre/PKGBUILD b/libre/luxrender-libre/PKGBUILD index c802e1200..be6fd88e8 100644 --- a/libre/luxrender-libre/PKGBUILD +++ b/libre/luxrender-libre/PKGBUILD @@ -2,10 +2,10 @@ # 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 +pkgver=1.0rc3 +_pkgver=9ed6b94cef05 pkgrel=1 pkgdesc="Rendering system for physically correct, unbiased image synthesis (without OpenCL)" arch=('i686' 'x86_64' 'mips64el') @@ -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=('54ff625a7833541c3cff5f0a77a93863' + '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/mc-libre/PKGBUILD b/libre/mc-libre/PKGBUILD new file mode 100644 index 000000000..fabd87469 --- /dev/null +++ b/libre/mc-libre/PKGBUILD @@ -0,0 +1,69 @@ +# $Id$ +# Contributor: Daniel J Griffiths <ghost1227@archlinux.us> +# Maintainer: schuay <jakob.gruber@gmail.com> + +_pkgname=mc +pkgname=mc-libre +pkgver=4.8.4 +pkgrel=1 +pkgdesc="Midnight Commander is a text based filemanager/shell that emulates Norton Commander" +arch=('i686' 'x86_64' 'mips64el') +url="http://www.ibiblio.org/mc/" +license=('GPL') +depends=('e2fsprogs' 'glib2' 'pcre' 'gpm' 'slang') +makedepends=('libxt' 'libx11') +optdepends=('p7zip: support for 7zip archives' + 'mtools: a+ extfs' + 'cdparanoia: audio extfs' + 'gawk: hp48+ extfs' + 'cdrkit: iso9660 extfs' + 'perl: needed by several extfs scripts' + 'python-boto: s3+ extfs' + 'python2-pytz: s3+ extfs' + 'p7zip: u7z extfs' + 'arj: uarj extfs' + 'cabextract: ucab extfs' + 'ununrar: urar extfs' + 'zip: uzip extfs') +conflicts=('mc') +replaces=('mc') +provides=("mc=${pkgver}") +options=('!emptydirs' '!makeflags') +backup=('etc/mc/edit.indent.rc' + 'etc/mc/edit.spell.rc' + 'etc/mc/filehighlight.ini' + 'etc/mc/mcedit.menu' + 'etc/mc/mc.ext' + 'etc/mc/mc.keymap' + 'etc/mc/mc.menu' + 'etc/mc/sfs.ini') +source=("http://www.midnight-commander.org/downloads/${_pkgname}-${pkgver}.tar.bz2") + +build() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + ./configure \ + --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \ + --enable-background --enable-charset --enable-largefile \ + --with-edit --with-gpm-mouse --with-mmap --enable-vfs-smb \ + --with-screen=slang --with-subshell --with-vfs --with-x \ + --without-debug --without-gnome --without-included-gettext \ + --libexecdir=/usr/lib + + make +} + +package() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + make DESTDIR="${pkgdir}" install + + # Fix FS#15177 + sed 's|op_has_zipinfo = 0|op_has_zipinfo = 1|' \ + -i "${pkgdir}/usr/lib/mc/extfs.d/uzip" + + sed 's#/usr/bin/env python#/usr/bin/python2#' \ + -i "${pkgdir}/usr/lib/mc/extfs.d/s3+" +} + +md5sums=('a8edb8226cb25869f925ecce043faf1e') diff --git a/libre/mcomix-libre/PKGBUILD b/libre/mcomix-libre/PKGBUILD new file mode 100644 index 000000000..d30bbb1a3 --- /dev/null +++ b/libre/mcomix-libre/PKGBUILD @@ -0,0 +1,47 @@ +# $Id$ +# Maintainer: schuay <jakob.gruber@gmail.com> +# Contributor: Ray Powell <ray_al@xphoniexx.net> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> + +_pkgname=mcomix +pkgname=mcomix-libre +pkgver=0.99 +pkgrel=1 +pkgdesc="A user-friendly, customizable image viewer specifically designed to handle comic books" +arch=('any') +url="http://sourceforge.net/projects/mcomix/" +license=('GPL') +depends=('pygtk' 'python-imaging' 'xdg-utils' 'python2' \ + 'desktop-file-utils' 'hicolor-icon-theme' 'python2-distribute') +makedepends=('gettext' 'intltool') +optdepends=('ununrar: for rar compressed comics') +conflicts=('mcomix' 'comix') +replaces=('mcomix' 'comix') +provides=("mcomix=${pkgver}") +install='mcomix.install' +source=("http://downloads.sourceforge.net/project/mcomix/MComix-${pkgver}/mcomix-${pkgver}.tar.bz2") + +build() { + cd ${srcdir}/${_pkgname}-${pkgver} + + # python2 fix + for file in $(grep -Rl "/usr/bin/env python" .); + do + sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' $file + done +} + +package() { + cd ${srcdir}/${_pkgname}-${pkgver} + + export PYTHONPATH=${pkgdir}/usr/lib/python2.7/site-packages/ + mkdir -p $PYTHONPATH + + python2 setup.py install --prefix=${pkgdir}/usr --optimize=1 \ + --single-version-externally-managed --root=/ + + install -Dm644 mime/comicbook.schemas \ + ${pkgdir}/usr/share/gconf/schemas/mcomix.schemas +} + +md5sums=('a1ff7e1955042069d5005b4034e7a914') diff --git a/libre/mcomix-libre/mcomix.install b/libre/mcomix-libre/mcomix.install new file mode 100644 index 000000000..2d3c6c3e3 --- /dev/null +++ b/libre/mcomix-libre/mcomix.install @@ -0,0 +1,32 @@ +pkgname=mcomix + +post_install() { + if [ -f usr/bin/xdg-icon-resource ]; then + xdg-icon-resource forceupdate + fi + if [ -f usr/sbin/gconfpkg ]; then + usr/sbin/gconfpkg --install ${pkgname} + fi + update-desktop-database -q +} + +pre_upgrade() { + pre_remove $1 +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + if [ -f usr/sbin/gconfpkg ]; then + usr/sbin/gconfpkg --uninstall ${pkgname} + fi +} + +post_remove() { + if [ -f usr/bin/xdg-icon-resource ]; then + xdg-icon-resource forceupdate + fi + update-desktop-database -q +} 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/mplayer-libre/PKGBUILD b/libre/mplayer-libre/PKGBUILD index cf2be2b5f..3e9d0a44d 100644 --- a/libre/mplayer-libre/PKGBUILD +++ b/libre/mplayer-libre/PKGBUILD @@ -1,33 +1,27 @@ -# $Id: PKGBUILD 152227 2012-03-05 09:38:48Z ibiru $ +# $Id: PKGBUILD 163126 2012-07-07 16:29:25Z ibiru $ # Maintainer : Ionut Biru <ibiru@archlinux.org> # Contributor: Hugo Doria <hugo@archlinux.org> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> - -# libvdpau is currently useful only with proprietary software +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> _pkgbase=mplayer pkgbase=mplayer-libre pkgname=('mplayer-libre' 'mencoder-libre') -pkgver=34799 -pkgrel=2 +pkgver=35014 +pkgrel=1 arch=('i686' 'x86_64') -makedepends=('libxxf86dga' 'libxxf86vm' 'libmad' 'cdparanoia' 'libxinerama' 'sdl' 'lame' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'libgl' 'smbclient' +makedepends=('libxxf86dga' 'libxxf86vm' 'libmad' 'libxinerama' 'sdl' 'lame' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'libgl' 'smbclient' 'aalib' 'jack' 'libcaca' 'x264' 'faad2' 'lirc-utils' 'libxvmc' 'enca' 'libvdpau' 'opencore-amr' 'libdca' 'a52dec' 'schroedinger' 'libvpx' -'libpulse' 'fribidi' 'unzip-libre' 'mesa' 'live-media' 'yasm' 'git' 'fontconfig' 'mpg123' 'ladspa' 'libass' 'libbluray' 'libcdio') +'libpulse' 'fribidi' 'unzip-libre' 'mesa' 'live-media' 'yasm' 'git' 'fontconfig' 'mpg123' 'ladspa' 'libass' 'libbluray' 'libcdio' 'subversion') license=('GPL') url="http://www.mplayerhq.hu/" options=(!buildflags !emptydirs) -source=(ftp://ftp.archlinux.org/other/$_pkgbase/$_pkgbase-$pkgver.tar.xz mplayer.desktop - live-media.patch) -md5sums=('e8bd960bcdb48fdc5a1f45390dc13c53' - 'c0d6ef795cf6de48e3b87ff7c23f0319' - 'b6c057633ff7001ee0c102b5f81ec1e3') +source=(ftp://ftp.archlinux.org/other/$_pkgbase/$_pkgbase-$pkgver.tar.xz mplayer.desktop) +md5sums=('d0785560e5e8eb02e089728ef4412eae' + 'c0d6ef795cf6de48e3b87ff7c23f0319') build() { cd "$srcdir/$_pkgbase" - patch -Np0 -i "$srcdir/live-media.patch" - ./configure --prefix=/usr \ --enable-runtime-cpudetection \ --disable-gui \ @@ -52,11 +46,11 @@ build() { } package_mplayer-libre() { - pkgdesc="A movie player for GNU/Linux (no unfree faac support)" + pkgdesc="A movie player for GNU/Linux (without unfree faac support)" install=mplayer.install backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf') depends=('desktop-file-utils' 'ttf-dejavu' 'enca' 'libxss' 'a52dec' 'libvpx' 'lirc-utils' 'x264' 'libmng' 'libdca' 'aalib' 'lame' 'fontconfig' 'libgl' - 'libxinerama' 'libvdpau' 'libpulse' 'smbclient' 'xvidcore' 'opencore-amr' 'jack' 'cdparanoia' 'libmad' 'sdl' 'libtheora' 'libcaca' 'libxxf86dga' 'fribidi' + 'libxinerama' 'libvdpau' 'libpulse' 'smbclient' 'xvidcore' 'opencore-amr' 'jack' 'libmad' 'sdl' 'libtheora' 'libcaca' 'libxxf86dga' 'fribidi' 'libjpeg' 'faad2' 'libxvmc' 'schroedinger' 'mpg123' 'libass' 'libxxf86vm' 'libbluray' 'libcdio') provides=("mplayer=$pkgver") replaces=('mplayer') @@ -76,7 +70,7 @@ package_mplayer-libre() { package_mencoder-libre() { pkgdesc="Free command line video decoding, encoding and filtering tool (without unfree faac support)" - depends=('enca' 'a52dec' 'libvpx' 'x264' 'libmng' 'libdca' 'bzip2' 'lame' 'alsa-lib' 'fontconfig' 'giflib' 'libpng' 'smbclient' 'xvidcore' 'opencore-amr' 'cdparanoia' + depends=('enca' 'a52dec' 'libvpx' 'x264' 'libmng' 'libdca' 'bzip2' 'lame' 'alsa-lib' 'fontconfig' 'giflib' 'libpng' 'smbclient' 'xvidcore' 'opencore-amr' 'libmad' 'libtheora' 'fribidi' 'libjpeg' 'faad2' 'schroedinger' 'mpg123' 'libass' 'libbluray' 'libcdio') provides=("mencoder=$pkgver") replaces=('mencoder') diff --git a/libre/mplayer-vaapi-libre/PKGBUILD b/libre/mplayer-vaapi-libre/PKGBUILD index 3ef5c65ee..41f84e022 100644 --- a/libre/mplayer-vaapi-libre/PKGBUILD +++ b/libre/mplayer-vaapi-libre/PKGBUILD @@ -1,47 +1,42 @@ # $Id$ -# Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar> -# Contributor (Parabola): André Silva <andre.paulista@adinet.com.uy> # Maintainer: Evangelos Foutras <evangelos@foutrelis.com> # Contributor: Ionut Biru <ibiru@archlinux.org> # Contributor: Hugo Doria <hugo@archlinux.org> +# Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> -_pkgname=mplayer-vaapi pkgname=mplayer-vaapi-libre -pkgver=34578 -pkgrel=5.1 -pkgdesc="A movie player, compiled with vaapi support" +pkgver=35014 +pkgrel=1 +pkgdesc="A movie player, compiled with vaapi (without unfree faac support)" arch=('i686' 'x86_64') url="http://gitorious.org/vaapi/mplayer" license=('GPL') -depends=('libxxf86dga' 'libxxf86vm' 'libmad' 'libcdio' 'libxinerama' 'sdl-libre' +depends=('libxxf86dga' 'libxxf86vm' 'libmad' 'libcdio' 'libxinerama' 'sdl' 'lame' 'fontconfig' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'mesa' 'smbclient' 'aalib' 'jack' 'libcaca' 'x264' 'speex' 'faad2' 'lirc-utils' 'ttf-dejavu' 'libxvmc' 'enca' 'opencore-amr' 'libdca' - 'a52dec' 'schroedinger' 'mpg123' 'libvpx' 'libpulse' 'fribidi' 'faad2' - 'libva' 'libass' 'desktop-file-utils') + 'a52dec' 'schroedinger' 'mpg123' 'libvpx' 'libpulse' 'fribidi' + 'libbluray' 'libva' 'libass' 'desktop-file-utils') makedepends=('unzip-libre' 'live-media' 'yasm' 'ladspa' 'git') -provides=("$_pkgname=$pkgver" "mplayer=$pkgver") -conflicts=('mplayer' "$_pkgname") +provides=("mplayer=$pkgver" "mplayer-vaapi=$pkgver") +conflicts=('mplayer' 'mplayer-vaapi') replaces=('mplayer-vaapi') backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf') source=(http://pkgbuild.com/~foutrelis/mplayer-vaapi-$pkgver.tar.xz - tweak-desktop-file.patch - mplayer.png - live-media.patch) + tweak-desktop-file.patch) options=('!buildflags' '!emptydirs') install=mplayer-vaapi.install -sha256sums=('cc35a057c8a64d2cdec2dc0a037811ef0f91dd03cd3d07465c7272a08665a37d' - '5b39f0a61969bf330c4434cb17975101be93c27334f65e154e4a93033033e795' - '061739a8cc267748ad58f168034cc39785d949a5262772535e1b347c7842af48' - '9c1400f27dd2ea54c125c66ed1af0eab19761b1b2ae808fa491cd3732fd8a685') +sha256sums=('db19a938e7de46aad567b6d7d8866ec6cb3919a29d60236609a83ebf4e1bb5f0' + '5a09fb462729a4e573568f9e8c1f57dbe7f69c0b68cfa4f6d70b3e52c450d93b') build() { cd "$srcdir/mplayer-vaapi-$pkgver" patch -d etc -Np0 -i "$srcdir/tweak-desktop-file.patch" - patch -Np0 -i "$srcdir/live-media.patch" - ./configure --prefix=/usr \ + ./configure \ + --prefix=/usr \ --enable-runtime-cpudetection \ --disable-gui \ --disable-arts \ @@ -56,6 +51,8 @@ build() { --disable-ass-internal \ --disable-faac \ --enable-xvmc \ + --enable-radio \ + --enable-radio-capture \ --disable-vdpau \ --enable-vaapi \ --language=all \ @@ -69,13 +66,13 @@ build() { package() { cd "$srcdir/mplayer-vaapi-$pkgver" - make -j1 DESTDIR="$pkgdir" install-mplayer install-mplayer-man + make DESTDIR="$pkgdir" install-mplayer install-mplayer-man install -Dm644 etc/{codecs.conf,input.conf,example.conf} "$pkgdir/etc/mplayer/" install -Dm644 etc/mplayer.desktop "$pkgdir/usr/share/applications/mplayer.desktop" install -d "$pkgdir/usr/share/mplayer/" ln -s /usr/share/fonts/TTF/DejaVuSans.ttf "$pkgdir/usr/share/mplayer/subfont.ttf" rm -rf "$pkgdir/usr/share/mplayer/font" - install -Dm644 "$srcdir/mplayer.png" "$pkgdir/usr/share/pixmaps/mplayer.png" + install -Dm644 etc/mplayer256x256.png "$pkgdir/usr/share/pixmaps/mplayer.png" } # vim:set ts=2 sw=2 et: diff --git a/libre/mplayer-vaapi-libre/mplayer-vaapi.install b/libre/mplayer-vaapi-libre/mplayer-vaapi.install index af56cdbf4..a44f19aef 100644 --- a/libre/mplayer-vaapi-libre/mplayer-vaapi.install +++ b/libre/mplayer-vaapi-libre/mplayer-vaapi.install @@ -1,9 +1,11 @@ post_install() { - update-desktop-database -q + update-desktop-database -q } post_upgrade() { - post_install + post_install } post_remove() { - post_install + post_install } + +# vim:set ts=2 sw=2 et: diff --git a/libre/mplayer-vaapi-libre/tweak-desktop-file.patch b/libre/mplayer-vaapi-libre/tweak-desktop-file.patch index db0f377d2..606e356b0 100644 --- a/libre/mplayer-vaapi-libre/tweak-desktop-file.patch +++ b/libre/mplayer-vaapi-libre/tweak-desktop-file.patch @@ -1,19 +1,6 @@ ---- mplayer.desktop.orig 2012-05-13 19:25:26.000000000 +0300 -+++ mplayer.desktop 2012-05-13 19:32:19.000000000 +0300 -@@ -7,12 +7,6 @@ GenericName[de]=Medienwiedergabe - GenericName[fr]=Lecteur multimédia - GenericName[it]=Lettore multimediale - GenericName[ja]=メディアプレーヤー --X-GNOME-FullName=MPlayer Media Player --X-GNOME-FullName[ca]=MPlayer Reproductor multimèdia --X-GNOME-FullName[de]=MPlayer Medienwiedergabe --X-GNOME-FullName[fr]=MPlayer Lecteur multimédia --X-GNOME-FullName[it]=MPlayer Lettore multimediale --X-GNOME-FullName[ja]=MPlayer メディアプレーヤー - Comment=Play movies and songs - Comment[ca]=Reproduïu vídeos i cançons - Comment[de]=Filme und Musik wiedergeben -@@ -20,8 +14,9 @@ Comment[fr]=Lit les films et musiques +--- mplayer.desktop.orig 2012-07-08 22:18:27.000000000 +0300 ++++ mplayer.desktop 2012-07-08 22:19:08.000000000 +0300 +@@ -23,8 +23,9 @@ Comment[fr]=Lit les films et musiques Comment[it]=Riproduce filmati e musica Comment[ja]=動画や音声のファイルを再生します Icon=mplayer @@ -24,5 +11,4 @@ Terminal=false +NoDisplay=true Categories=GTK;AudioVideo;Audio;Video;Player;TV; --MimeType=application/ogg;application/x-ogg;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/m4a;audio/x-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg;video/x-mpeg2;video/msvideo;video/x-msvideo;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/x-fli;video/x-theora;video/x-matroska;video/3gpp;application/x-flash-video; -+MimeType=application/ogg;application/x-ogg;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/m4a;audio/x-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg;video/x-mpeg2;video/mp4;video/msvideo;video/x-msvideo;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/x-fli;video/x-flv;video/x-theora;video/x-matroska;video/3gpp;application/x-flash-video; + MimeType=application/mxf;application/x-netshow-channel;application/ogg;application/ram;application/vnd.rn-realmedia;application/x-shockwave-flash;application/smil;audio/ac3;audio/x-adpcm;audio/x-aiff;audio/AMR;audio/AMR-WB;audio/x-ape;audio/basic;audio/flac;audio/x-flac;audio/x-flac+ogg;audio/x-m4b;audio/x-matroska;audio/mp2;audio/mp4;audio/mpeg;audio/x-mpegurl;audio/x-ms-asx;audio/x-ms-wma;audio/x-musepack;audio/ogg;audio/vnd.rn-realaudio;audio/x-scpls;audio/x-voc;audio/x-vorbis+ogg;audio/x-wav;audio/x-wavpack;video/3gpp;video/3gpp2;video/dv;video/x-flic;video/x-flv;video/x-matroska;video/mp2t;video/mp4;video/mpeg;video/x-ms-asf;video/x-ms-wmv;video/x-msvideo;video/x-nsv;video/ogg;video/x-ogm+ogg;video/quicktime;video/vnd.rn-realvideo;video/x-theora+ogg;video/webm; 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 01f49a93e..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' 'libarchive>=3.0.2' 'curl>=7.19.4' - 'gpgme' 'pacman-mirrorlist') +depends=('bash' 'glibc>=2.15' 'libarchive>=3.0.2' 'curl>=7.19.4' + '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..7a95abd0b --- /dev/null +++ b/libre/parabola-keyring/PKGBUILD @@ -0,0 +1,20 @@ +# $Id$ +# Maintainer: André Silva <emulatorman@lavabit.com> + +pkgname=parabola-keyring +pkgver=20120816 +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=('4163ebfce3ccc32e2398e18c19158fc1' + 'b4b1b532657eb754ef2e9f7cf4d0a09a') 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/parabola-themes-slim/PKGBUILD b/libre/parabola-themes-slim/PKGBUILD index 9c29caf0b..a921253da 100644 --- a/libre/parabola-themes-slim/PKGBUILD +++ b/libre/parabola-themes-slim/PKGBUILD @@ -6,7 +6,7 @@ replaces=('archlinux-themes-slim') conflicts=('archlinux-themes-slim') pkgname=parabola-themes-slim pkgver=1.0 -pkgrel=1 +pkgrel=1.1 pkgdesc="a theme parabolero to the Slim login manager" arch=('any') url="https://parabolagnulinux.org/" diff --git a/libre/sdl-libre/PKGBUILD b/libre/sdl-libre/PKGBUILD index e31f18c5b..839585e37 100644 --- a/libre/sdl-libre/PKGBUILD +++ b/libre/sdl-libre/PKGBUILD @@ -1,46 +1,47 @@ -# $Id: PKGBUILD 135310 2011-08-12 14:45:48Z ibiru $ -#mips64el Maintainer: Allan McRae <allan@archlinux.org> +# $Id: PKGBUILD 165847 2012-09-01 12:22:15Z heftig $ +# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Contributor: Allan McRae <allan@archlinux.org> # Contributor: dorphell <dorphell@archlinux.org> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> # 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> pkgname=sdl-libre pkgver=1.2.15 -pkgrel=1.1 +pkgrel=2 pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard" arch=('i686' 'x86_64' 'mips64el') url="http://www.libsdl.org" license=('LGPL') provides=("sdl=${pkgver}") conflicts=('sdl') +replaces=('sdl') depends=('glibc' 'libxext' 'libxrender' 'libx11') makedepends=('alsa-lib' 'mesa' 'libpulse') -replaces=('sdl') options=('!libtool') source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz sdl-1.2.14-fix-mouse-clicking.patch sdl-1.2.14-disable-mmx.patch - riva_mmio.patch - no-riva-accel.patch) + fix_joystick_misc_axes.diff + libre.patch) md5sums=('9d96df8417572a2afb781a7c4c811a85' '04d8c179f125e04bcd4c9d60e013c2d7' 'e5c16b7611f62c7cb25f0534eff68852' - 'f5ab9ba6ba2bb8df74d0f768f9df3ea8' - 'eb2f5899db608ad27b379faa5e0beb80') + '687586a108b597a2a6b73070c1d37e51' + '5c665f72b8a2adc97a91f6db6f2da79a') build() { - cd ${srcdir}/SDL-${pkgver} - patch -Np1 -i $srcdir/sdl-1.2.14-fix-mouse-clicking.patch - patch -Np1 -i $srcdir/sdl-1.2.14-disable-mmx.patch - patch -Np0 -i $srcdir/riva_mmio.patch - patch -Np0 -i $srcdir/no-riva-accel.patch + cd SDL-$pkgver + patch -Np1 -i ../sdl-1.2.14-fix-mouse-clicking.patch + patch -Np1 -i ../sdl-1.2.14-disable-mmx.patch + patch -Np1 -i ../fix_joystick_misc_axes.diff + patch -Np0 -i ../libre.patch ./configure --prefix=/usr --disable-nasm --enable-alsa --enable-esd \ --with-x --disable-rpath --disable-static make } package() { - cd ${srcdir}/SDL-${pkgver} - make DESTDIR=${pkgdir} install + cd SDL-$pkgver + make DESTDIR="$pkgdir" install } diff --git a/libre/sdl-libre/fix_joystick_misc_axes.diff b/libre/sdl-libre/fix_joystick_misc_axes.diff new file mode 100644 index 000000000..75e3755c9 --- /dev/null +++ b/libre/sdl-libre/fix_joystick_misc_axes.diff @@ -0,0 +1,13 @@ +diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c +index ee43974..80e46e4 100644 +--- a/src/joystick/linux/SDL_sysjoystick.c ++++ b/src/joystick/linux/SDL_sysjoystick.c +@@ -702,7 +702,7 @@ static SDL_bool EV_ConfigJoystick(SDL_Joystick *joystick, int fd) + ++joystick->nbuttons; + } + } +- for ( i=0; i<ABS_MISC; ++i ) { ++ for ( i=0; i<ABS_MAX; ++i ) { + /* Skip hats */ + if ( i == ABS_HAT0X ) { + i = ABS_HAT3Y; diff --git a/libre/sdl-libre/libre.patch b/libre/sdl-libre/libre.patch new file mode 100644 index 000000000..72f7da56a --- /dev/null +++ b/libre/sdl-libre/libre.patch @@ -0,0 +1,578 @@ +--- src/video/fbcon/riva_mmio.h 2012-01-19 04:30:06.000000000 -0200 ++++ /dev/null 2012-04-01 13:58:27.776718756 -0300 +@@ -1,449 +0,0 @@ +-/***************************************************************************\ +-|* *| +-|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *| +-|* *| +-|* NOTICE TO USER: The source code is copyrighted under U.S. and *| +-|* international laws. Users and possessors of this source code are *| +-|* hereby granted a nonexclusive, royalty-free copyright license to *| +-|* use this code in individual and commercial software. *| +-|* *| +-|* Any use of this source code must include, in the user documenta- *| +-|* tion and internal comments to the code, notices to the end user *| +-|* as follows: *| +-|* *| +-|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *| +-|* *| +-|* NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY *| +-|* OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" *| +-|* WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPOR- *| +-|* ATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, *| +-|* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGE- *| +-|* MENT, AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL *| +-|* NVIDIA, CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT, INCI- *| +-|* DENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RE- *| +-|* SULTING 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 SOURCE CODE. *| +-|* *| +-|* U.S. Government End Users. This source code is a "commercial *| +-|* item," as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *| +-|* consisting of "commercial computer software" and "commercial *| +-|* computer software documentation," as such terms are used in *| +-|* 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern- *| +-|* ment only as a commercial end item. Consistent with 48 C.F.R. *| +-|* 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *| +-|* all U.S. Government End Users acquire the source code with only *| +-|* those rights set forth herein. *| +-|* *| +-\***************************************************************************/ +- +-#ifndef __RIVA_HW_H__ +-#define __RIVA_HW_H__ +-#define RIVA_SW_VERSION 0x00010003 +- +-/* +- * Typedefs to force certain sized values. +- */ +-typedef Uint8 U008; +-typedef Uint16 U016; +-typedef Uint32 U032; +- +-/* +- * HW access macros. +- */ +-#define NV_WR08(p,i,d) (((U008 *)(p))[i]=(d)) +-#define NV_RD08(p,i) (((U008 *)(p))[i]) +-#define NV_WR16(p,i,d) (((U016 *)(p))[(i)/2]=(d)) +-#define NV_RD16(p,i) (((U016 *)(p))[(i)/2]) +-#define NV_WR32(p,i,d) (((U032 *)(p))[(i)/4]=(d)) +-#define NV_RD32(p,i) (((U032 *)(p))[(i)/4]) +-#define VGA_WR08(p,i,d) NV_WR08(p,i,d) +-#define VGA_RD08(p,i) NV_RD08(p,i) +- +-/* +- * Define supported architectures. +- */ +-#define NV_ARCH_03 0x03 +-#define NV_ARCH_04 0x04 +-#define NV_ARCH_10 0x10 +-/***************************************************************************\ +-* * +-* FIFO registers. * +-* * +-\***************************************************************************/ +- +-/* +- * Raster OPeration. Windows style ROP3. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 Rop3; +-} RivaRop; +-/* +- * 8X8 Monochrome pattern. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BD]; +- U032 Shape; +- U032 reserved03[0x001]; +- U032 Color0; +- U032 Color1; +- U032 Monochrome[2]; +-} RivaPattern; +-/* +- * Scissor clip rectangle. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 TopLeft; +- U032 WidthHeight; +-} RivaClip; +-/* +- * 2D filled rectangle. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop[1]; +- U032 reserved01[0x0BC]; +- U032 Color; +- U032 reserved03[0x03E]; +- U032 TopLeft; +- U032 WidthHeight; +-} RivaRectangle; +-/* +- * 2D screen-screen BLT. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 TopLeftSrc; +- U032 TopLeftDst; +- U032 WidthHeight; +-} RivaScreenBlt; +-/* +- * 2D pixel BLT. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop[1]; +- U032 reserved01[0x0BC]; +- U032 TopLeft; +- U032 WidthHeight; +- U032 WidthHeightIn; +- U032 reserved02[0x03C]; +- U032 Pixels; +-} RivaPixmap; +-/* +- * Filled rectangle combined with monochrome expand. Useful for glyphs. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 reserved03[(0x040)-1]; +- U032 Color1A; +- struct +- { +- U032 TopLeft; +- U032 WidthHeight; +- } UnclippedRectangle[64]; +- U032 reserved04[(0x080)-3]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipB; +- U032 Color1B; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClippedRectangle[64]; +- U032 reserved05[(0x080)-5]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipC; +- U032 Color1C; +- U032 WidthHeightC; +- U032 PointC; +- U032 MonochromeData1C; +- U032 reserved06[(0x080)+121]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipD; +- U032 Color1D; +- U032 WidthHeightInD; +- U032 WidthHeightOutD; +- U032 PointD; +- U032 MonochromeData1D; +- U032 reserved07[(0x080)+120]; +- struct +- { +- U032 TopLeft; +- U032 BottomRight; +- } ClipE; +- U032 Color0E; +- U032 Color1E; +- U032 WidthHeightInE; +- U032 WidthHeightOutE; +- U032 PointE; +- U032 MonochromeData01E; +-} RivaBitmap; +-/* +- * 3D textured, Z buffered triangle. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BC]; +- U032 TextureOffset; +- U032 TextureFormat; +- U032 TextureFilter; +- U032 FogColor; +-/* This is a problem on LynxOS */ +-#ifdef Control +-#undef Control +-#endif +- U032 Control; +- U032 AlphaTest; +- U032 reserved02[0x339]; +- U032 FogAndIndex; +- U032 Color; +- float ScreenX; +- float ScreenY; +- float ScreenZ; +- float EyeM; +- float TextureS; +- float TextureT; +-} RivaTexturedTriangle03; +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BB]; +- U032 ColorKey; +- U032 TextureOffset; +- U032 TextureFormat; +- U032 TextureFilter; +- U032 Blend; +-/* This is a problem on LynxOS */ +-#ifdef Control +-#undef Control +-#endif +- U032 Control; +- U032 FogColor; +- U032 reserved02[0x39]; +- struct +- { +- float ScreenX; +- float ScreenY; +- float ScreenZ; +- float EyeM; +- U032 Color; +- U032 Specular; +- float TextureS; +- float TextureT; +- } Vertex[16]; +- U032 DrawTriangle3D; +-} RivaTexturedTriangle05; +-/* +- * 2D line. +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop[1]; +- U032 reserved01[0x0BC]; +- U032 Color; /* source color 0304-0307*/ +- U032 Reserved02[0x03e]; +- struct { /* start aliased methods in array 0400- */ +- U032 point0; /* y_x S16_S16 in pixels 0- 3*/ +- U032 point1; /* y_x S16_S16 in pixels 4- 7*/ +- } Lin[16]; /* end of aliased methods in array -047f*/ +- struct { /* start aliased methods in array 0480- */ +- U032 point0X; /* in pixels, 0 at left 0- 3*/ +- U032 point0Y; /* in pixels, 0 at top 4- 7*/ +- U032 point1X; /* in pixels, 0 at left 8- b*/ +- U032 point1Y; /* in pixels, 0 at top c- f*/ +- } Lin32[8]; /* end of aliased methods in array -04ff*/ +- U032 PolyLin[32]; /* y_x S16_S16 in pixels 0500-057f*/ +- struct { /* start aliased methods in array 0580- */ +- U032 x; /* in pixels, 0 at left 0- 3*/ +- U032 y; /* in pixels, 0 at top 4- 7*/ +- } PolyLin32[16]; /* end of aliased methods in array -05ff*/ +- struct { /* start aliased methods in array 0600- */ +- U032 color; /* source color 0- 3*/ +- U032 point; /* y_x S16_S16 in pixels 4- 7*/ +- } ColorPolyLin[16]; /* end of aliased methods in array -067f*/ +-} RivaLine; +-/* +- * 2D/3D surfaces +- */ +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BE]; +- U032 Offset; +-} RivaSurface; +-typedef volatile struct +-{ +- U032 reserved00[4]; +- U016 FifoFree; +- U016 Nop; +- U032 reserved01[0x0BD]; +- U032 Pitch; +- U032 RenderBufferOffset; +- U032 ZBufferOffset; +-} RivaSurface3D; +- +-/***************************************************************************\ +-* * +-* Virtualized RIVA H/W interface. * +-* * +-\***************************************************************************/ +- +-struct _riva_hw_inst; +-struct _riva_hw_state; +-/* +- * Virtialized chip interface. Makes RIVA 128 and TNT look alike. +- */ +-typedef struct _riva_hw_inst +-{ +- /* +- * Chip specific settings. +- */ +- U032 Architecture; +- U032 Version; +- U032 CrystalFreqKHz; +- U032 RamAmountKBytes; +- U032 MaxVClockFreqKHz; +- U032 RamBandwidthKBytesPerSec; +- U032 EnableIRQ; +- U032 IO; +- U032 VBlankBit; +- U032 FifoFreeCount; +- U032 FifoEmptyCount; +- /* +- * Non-FIFO registers. +- */ +- volatile U032 *PCRTC; +- volatile U032 *PRAMDAC; +- volatile U032 *PFB; +- volatile U032 *PFIFO; +- volatile U032 *PGRAPH; +- volatile U032 *PEXTDEV; +- volatile U032 *PTIMER; +- volatile U032 *PMC; +- volatile U032 *PRAMIN; +- volatile U032 *FIFO; +- volatile U032 *CURSOR; +- volatile U032 *CURSORPOS; +- volatile U032 *VBLANKENABLE; +- volatile U032 *VBLANK; +- volatile U008 *PCIO; +- volatile U008 *PVIO; +- volatile U008 *PDIO; +- /* +- * Common chip functions. +- */ +- int (*Busy)(struct _riva_hw_inst *); +- void (*CalcStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *,int,int,int,int,int,int,int,int,int,int,int,int,int); +- void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *); +- void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *); +- void (*SetStartAddress)(struct _riva_hw_inst *,U032); +- void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032); +- void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032); +- int (*ShowHideCursor)(struct _riva_hw_inst *,int); +- void (*LockUnlock)(struct _riva_hw_inst *, int); +- /* +- * Current extended mode settings. +- */ +- struct _riva_hw_state *CurrentState; +- /* +- * FIFO registers. +- */ +- RivaRop *Rop; +- RivaPattern *Patt; +- RivaClip *Clip; +- RivaPixmap *Pixmap; +- RivaScreenBlt *Blt; +- RivaBitmap *Bitmap; +- RivaLine *Line; +- RivaTexturedTriangle03 *Tri03; +- RivaTexturedTriangle05 *Tri05; +-} RIVA_HW_INST; +-/* +- * Extended mode state information. +- */ +-typedef struct _riva_hw_state +-{ +- U032 bpp; +- U032 width; +- U032 height; +- U032 repaint0; +- U032 repaint1; +- U032 screen; +- U032 pixel; +- U032 horiz; +- U032 arbitration0; +- U032 arbitration1; +- U032 vpll; +- U032 pllsel; +- U032 general; +- U032 config; +- U032 cursor0; +- U032 cursor1; +- U032 cursor2; +- U032 offset0; +- U032 offset1; +- U032 offset2; +- U032 offset3; +- U032 pitch0; +- U032 pitch1; +- U032 pitch2; +- U032 pitch3; +-} RIVA_HW_STATE; +- +-/* +- * FIFO Free Count. Should attempt to yield processor if RIVA is busy. +- */ +- +-#define RIVA_FIFO_FREE(hwptr,cnt) \ +-{ \ +- while (FifoFreeCount < (cnt)) \ +- FifoFreeCount = hwptr->FifoFree >> 2; \ +- FifoFreeCount -= (cnt); \ +-} +-#endif /* __RIVA_HW_H__ */ +- +--- src/video/fbcon/SDL_fbriva.c 2012-01-19 04:30:06.000000000 -0200 ++++ src/video/fbcon/SDL_fbriva.c 2012-04-01 15:10:10.108451467 -0300 +@@ -24,12 +24,10 @@ + #include "SDL_video.h" + #include "../SDL_blit.h" + #include "SDL_fbriva.h" +-#include "riva_mmio.h" + #include "riva_regs.h" + + + static int FifoEmptyCount = 0; +-static int FifoFreeCount = 0; + + /* Wait for vertical retrace */ + static void WaitVBL(_THIS) +@@ -41,20 +39,6 @@ + while ( !(*port & 0x08) ) + ; + } +-static void NV3WaitIdle(_THIS) +-{ +- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); +- while ( (Rop->FifoFree < FifoEmptyCount) || +- (*(mapped_io + PGRAPH_OFFSET + 0x000006B0) & 0x01) ) +- ; +-} +-static void NV4WaitIdle(_THIS) +-{ +- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); +- while ( (Rop->FifoFree < FifoEmptyCount) || +- (*(mapped_io + PGRAPH_OFFSET + 0x00000700) & 0x01) ) +- ; +-} + + #if 0 /* Not yet implemented? */ + /* Sets video mem colorkey and accelerated blit function */ +@@ -74,7 +58,6 @@ + { + int dstX, dstY; + int dstW, dstH; +- RivaBitmap *Bitmap = (RivaBitmap *)(mapped_io + BITMAP_OFFSET); + + /* Don't blit to the display surface when switched away */ + if ( switched_away ) { +@@ -93,13 +76,6 @@ + dstX += rect->x; + dstY += rect->y; + +- RIVA_FIFO_FREE(Bitmap, 1); +- Bitmap->Color1A = color; +- +- RIVA_FIFO_FREE(Bitmap, 2); +- Bitmap->UnclippedRectangle[0].TopLeft = (dstX << 16) | dstY; +- Bitmap->UnclippedRectangle[0].WidthHeight = (dstW << 16) | dstH; +- + FB_AddBusySurface(dst); + + if ( dst == this->screen ) { +@@ -115,7 +91,6 @@ + int srcX, srcY; + int dstX, dstY; + int dstW, dstH; +- RivaScreenBlt *Blt = (RivaScreenBlt *)(mapped_io + BLT_OFFSET); + + /* FIXME: For now, only blit to display surface */ + if ( dst->pitch != SDL_VideoSurface->pitch ) { +@@ -142,11 +117,6 @@ + dstX += dstrect->x; + dstY += dstrect->y; + +- RIVA_FIFO_FREE(Blt, 3); +- Blt->TopLeftSrc = (srcY << 16) | srcX; +- Blt->TopLeftDst = (dstY << 16) | dstX; +- Blt->WidthHeight = (dstH << 16) | dstW; +- + FB_AddBusySurface(src); + FB_AddBusySurface(dst); + +@@ -185,23 +155,15 @@ + + void FB_RivaAccel(_THIS, __u32 card) + { +- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET); + + /* We have hardware accelerated surface functions */ + this->CheckHWBlit = CheckHWBlit; + wait_vbl = WaitVBL; + switch (card) { +- case FB_ACCEL_NV3: +- wait_idle = NV3WaitIdle; +- break; +- case FB_ACCEL_NV4: +- wait_idle = NV4WaitIdle; +- break; + default: + /* Hmm... FIXME */ + break; + } +- FifoEmptyCount = Rop->FifoFree; + + /* The Riva has an accelerated color fill */ + this->info.blit_fill = 1; +--- src/video/fbcon/SDL_fbvideo.c.orig 2011-09-08 17:30:03.670583685 +0200 ++++ src/video/fbcon/SDL_fbvideo.c 2011-09-08 17:30:24.230582737 +0200 +@@ -46,7 +46,6 @@ + #include "SDL_fbevents_c.h" + #include "SDL_fb3dfx.h" + #include "SDL_fbmatrox.h" +-#include "SDL_fbriva.h" + + /*#define FBCON_DEBUG*/ + +@@ -769,13 +768,6 @@ + #endif + FB_3DfxAccel(this, finfo.accel); + break; +- case FB_ACCEL_NV3: +- case FB_ACCEL_NV4: +-#ifdef FBACCEL_DEBUG +- printf("NVidia hardware accelerator!\n"); +-#endif +- FB_RivaAccel(this, finfo.accel); +- break; + default: + #ifdef FBACCEL_DEBUG + printf("Unknown hardware accelerator.\n"); diff --git a/libre/spectrwm-libre/LICENSE b/libre/spectrwm-libre/LICENSE new file mode 100644 index 000000000..24c04f3a0 --- /dev/null +++ b/libre/spectrwm-libre/LICENSE @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2009 Marco Peereboom <marco@peereboom.us> + * Copyright (c) 2009 Ryan McBride <mcbride@countersiege.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, 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. + */ +/* + * Much code and ideas taken from dwm under the following license: + * MIT/X Consortium License + * + * 2006-2008 Anselm R Garbe <garbeam at gmail dot com> + * 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> + * 2006-2007 Jukka Salmi <jukka at salmi dot ch> + * 2007 Premysl Hruby <dfenze at gmail dot com> + * 2007 Szabolcs Nagy <nszabolcs at gmail dot com> + * 2007 Christof Musik <christof at sendfax dot de> + * 2007-2008 Enno Gottox Boland <gottox at s01 dot de> + * 2007-2008 Peter Hartlich <sgkkr at hartlich dot com> + * 2008 Martin Hurton <martin dot hurton at gmail dot com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ diff --git a/libre/spectrwm-libre/PKGBUILD b/libre/spectrwm-libre/PKGBUILD new file mode 100644 index 000000000..4b4bccec3 --- /dev/null +++ b/libre/spectrwm-libre/PKGBUILD @@ -0,0 +1,65 @@ +# $Id$ +# Maintainer: Kyle Keen <keenerd@gmail.com> +# Contributor: Christoph Zeiler <archNOSPAM_at_moonblade.dot.org> + +_pkgname=spectrwm +pkgname=spectrwm-libre +pkgver=2.0.1 +pkgrel=1 +pkgdesc="A minimalistic automatic tiling window manager that tries to stay out of the way (without unfree profont support)" +arch=('i686' 'x86_64' 'mips64el') +url="http://www.spectrwm.org" +_watch="https://opensource.conformal.com/snapshots/spectrwm/" +license=('custom:ISC') +depends=('dmenu' 'xcb-util' 'xcb-util-wm' 'xcb-util-keysyms' 'libxrandr' 'libxft' 'libxcursor') +replaces=('spectrwm' 'scrotwm') +conflicts=('spectrwm') +provides=("spectrwm=${pkgver}") +makedepends=('libxt') +optdepends=('scrot: screenshots' 'xlockmore: screenlocking' 'terminus-font: great font') +backup=(etc/spectrwm.conf) +source=(http://opensource.conformal.com/snapshots/$_pkgname/$_pkgname-$pkgver.tgz \ + LICENSE \ + baraction.sh) +md5sums=('ed553574e65bb364e26d359790e204f2' + 'a67cfe51079481e5b0eab1ad371379e3' + '950d663692e1da56e0ac864c6c3ed80e') + +build() { + cd "$srcdir/$_pkgname-$pkgver" + + # it is like a patch, only less fragile + sed -i 's|\"/usr/local/lib/libswmhack.so\"|\"libswmhack.so\"|' spectrwm.c + sed -i 's/verbose_layout = 0;/verbose_layout = 1;/' spectrwm.c + sed -i 's/# modkey = Mod1/modkey = Mod4/' spectrwm.conf + sed -i 's/-\*-terminus-medium-\*-\*-\*-\*/-*-profont-*-*-*-*-12/' spectrwm.conf + + cd linux + make PREFIX="/usr" +} + +package() { + cd "$srcdir/$_pkgname-$pkgver/linux" + make PREFIX="/usr" DESTDIR="$pkgdir" install + install -Dm644 spectrwm.desktop "$pkgdir/usr/share/xsessions/spectrwm.desktop" + cd .. + install -Dm644 spectrwm.conf "$pkgdir/etc/spectrwm.conf" + install -Dm755 screenshot.sh "$pkgdir/usr/share/spectrwm/screenshot.sh" + mkdir -p "$pkgdir/etc/spectrwm" + cp spectrwm_*.conf "$pkgdir/etc/spectrwm/" + cd "$srcdir" + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$_pkgname/LICENSE" + install -Dm755 baraction.sh "$pkgdir/usr/share/spectrwm/baraction.sh" + + ln -s /usr/lib/libswmhack.so.0.0 "$pkgdir/usr/lib/libswmhack.so.0" + ln -s /usr/lib/libswmhack.so.0.0 "$pkgdir/usr/lib/libswmhack.so" + + # fix this for real in the makefile + rm "$pkgdir/usr/bin/scrotwm" + ln -s "/usr/bin/spectrwm" "$pkgdir/usr/bin/scrotwm" + mkdir -p "$pkgdir"/usr/share/man/{es,it,pt,ru}/man1/ + mv "$pkgdir/usr/share/man/man1/spectrwm_es.1" "$pkgdir/usr/share/man/es/man1/" + mv "$pkgdir/usr/share/man/man1/spectrwm_it.1" "$pkgdir/usr/share/man/it/man1/" + mv "$pkgdir/usr/share/man/man1/spectrwm_pt.1" "$pkgdir/usr/share/man/pt/man1/" + mv "$pkgdir/usr/share/man/man1/spectrwm_ru.1" "$pkgdir/usr/share/man/ru/man1/" +} diff --git a/libre/spectrwm-libre/baraction.sh b/libre/spectrwm-libre/baraction.sh new file mode 100644 index 000000000..96a8a7b1a --- /dev/null +++ b/libre/spectrwm-libre/baraction.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# baraction.sh for spectrwm status bar +# From http://wiki.archlinux.org/index.php/Scrotwm + +SLEEP_SEC=5 +#loops forever outputting a line every SLEEP_SEC secs +while :; do + + eval $(cat /proc/acpi/battery/BAT0/state | awk '/charging state/ {printf "BAT_CHGSTATE=%s;", $3}; /remaining capacity/ {printf "BAT_REMNG=%s;",$3}; /present rate/ {printf "BAT_RATE=%s;",$3};' -) + eval $(cat /proc/acpi/battery/BAT0/info | awk '/present/ {printf "BAT_PRESENT=%s;", $2}; /last full capacity/ {printf "BAT_LASTFULL=%s;",$4};' -) + + BAT_REMNG_WH=`echo "scale=1; a=($BAT_REMNG+50)/1000; print a" | bc -l` + BAT_RATE_W=`echo "scale=1; a=($BAT_RATE+50)/1000; print a" | bc -l` + BCSCRIPT="scale=0; a=(100*$BAT_REMNG / $BAT_LASTFULL); print a" + BAT_PCT=`echo $BCSCRIPT | bc -l`% + + case $BAT_PRESENT in + no) + POWER_STR="AC, NO BATTERY" + ;; + yes) + + case $BAT_CHGSTATE in + charged) + #on ac + AC_STATUS="ON AC" + TIME_REMNG="N/A" + POWER_STR="$AC_STATUS $BAT_CHGSTATE $BAT_PCT" + ;; + charging) + #on ac + AC_STATUS="ON AC" + BCSCRIPT="scale=1; a=(60*($BAT_LASTFULL - $BAT_REMNG) / $BAT_RATE); print a" + TIMETOFULL_MIN=`echo $BCSCRIPT | bc -l` + POWER_STR="$AC_STATUS $BAT_CHGSTATE $BAT_PCT C="$BAT_REMNG_WH"Wh Rate="$BAT_RATE_W"W TTF="$TIMETOFULL_MIN"min" + ;; + discharging) + AC_STATUS="ON BATT" + TIME_REMNG_MIN=`echo "scale=0; a=(60*$BAT_REMNG / $BAT_RATE); print a" | bc -l` + TIME_REMNG_HH=`echo "scale=0; a=($BAT_REMNG / $BAT_RATE); if (a<10) {print "0"; print a} else {print a}" | bc -l` + + TIME_REMNG_MM=`echo "scale=0; a=($TIME_REMNG_MIN-60*$TIME_REMNG_HH); if (a<10) {print "0"; print a} else {print a}" | bc -l` + POWER_STR="$AC_STATUS $BAT_PCT C="$BAT_REMNG_WH"Wh P="$BAT_RATE_W"W R="$TIME_REMNG_HH":"$TIME_REMNG_MM + ;; + *) + POWER_STR=$BAT_CHGSTATE + ;; + esac + + ;; + *) + POWER_STR="error" + ;; + esac + + #spectrwm bar_print can't handle UTF-8 characters, such as degree symbol + #Core 0: +67.0°C (crit = +100.0°C) + eval $(sensors 2>/dev/null | sed s/[°+]//g | awk '/^Core 0/ {printf "CORE0TEMP=%s;", $3}; /^Core 1/ {printf "CORE1TEMP=%s;",$3}; /^fan1/ {printf "FANSPD=%s;",$2};' -) + TEMP_STR="Tcpu=$CORE0TEMP,$CORE1TEMP F=$FANSPD" + + WLAN_ESSID=$(iwconfig wlan0 | awk -F "\"" '/wlan0/ { print $2 }') + eval $(cat /proc/net/wireless | sed s/[.]//g | awk '/wlan0/ {printf "WLAN_QULTY=%s; WLAN_SIGNL=%s; WLAN_NOISE=%s", $3,$4,$5};' -) + BCSCRIPT="scale=0;a=100*$WLAN_QULTY/70;print a" + WLAN_QPCT=`echo $BCSCRIPT | bc -l` + WLAN_POWER=`iwconfig 2>/dev/null| grep "Tx-Power"| awk {'print $4'}|sed s/Tx-Power=//` + WLAN_STR="$WLAN_ESSID: Q=$WLAN_QPCT% S/N="$WLAN_SIGNL"/"$WLAN_NOISE"dBm T="$WLAN_POWER"dBm" + + CPUFREQ_STR=`echo "Freq:"$(cat /proc/cpuinfo | grep 'cpu MHz' | sed 's/.*: //g; s/\..*//g;')` + CPULOAD_STR="Load:$(uptime | sed 's/.*://; s/,//g')" + + eval $(awk '/^MemTotal/ {printf "MTOT=%s;", $2}; /^MemFree/ {printf "MFREE=%s;",$2}' /proc/meminfo) + MUSED=$(( $MTOT - $MFREE )) + MUSEDPT=$(( ($MUSED * 100) / $MTOT )) + MEM_STR="Mem:${MUSEDPT}%" + + echo -e "$POWER_STR $TEMP_STR $CPUFREQ_STR $CPULOAD_STR $MEM_STR $WLAN_STR" + #alternatively if you prefer a different date format + #DATE_STR=`date +"%H:%M %a %d %b` + #echo -e "$DATE_STR $POWER_STR $TEMP_STR $CPUFREQ_STR $CPULOAD_STR $MEM_STR $WLAN_STR" + + sleep $SLEEP_SEC +done diff --git a/libre/syslinux/PKGBUILD b/libre/syslinux/PKGBUILD index 3fbbafb04..193db8900 100644 --- a/libre/syslinux/PKGBUILD +++ b/libre/syslinux/PKGBUILD @@ -1,11 +1,11 @@ -# $Id$ +# $Id: PKGBUILD 165555 2012-08-23 18:27:20Z thomas $ # Maintainer: Thomas Bächler <thomas@archlinux.org> # Maintainer: Tobias Powalowski <tpowa@archlinux.org> -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> pkgname=syslinux pkgver=4.05 -pkgrel=4.3 +pkgrel=7 arch=('i686' 'x86_64' 'mips64el') pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)" url="http://syslinux.zytor.com/" @@ -14,7 +14,8 @@ depends=('perl' 'glibc') optdepends=('perl-passwd-md5: For md5pass' 'perl-digest-sha1: For sha1pass' 'mtools: For mkdiskimage and syslinux support' - ) + 'gptfdisk: For GPT support' + 'util-linux: For isohybrid') makedepends=('nasm') backup=('boot/syslinux/syslinux.cfg' 'boot/syslinux/splash.png') @@ -23,14 +24,16 @@ source=(http://www.kernel.org/pub/linux/utils/boot/syslinux/$pkgname-${pkgver}.t syslinux-dont-build-dos-windows-targets.patch syslinux.cfg syslinux-install_update - splash.png - fix-undefined-type-umode_t.patch) + avoid-using-ext2_fs.patch + handle-ctors-dtors-via-init_array-and-fini_array.patch + splash.png) md5sums=('82299242418385da1274c9479a778cb2' '1528c376e43f0eaccaa80d8ad1bc13b4' '8dc2afca3739667e892faf04eb97e7b1' '680750f73dc2e587ac567d057d485813' - '0035b6cac6756a384b861eda8d33e4f7' - '8674f8a0f480f26b705570d699c78a2c') + '2e2c674a71c0c0bf265d96cfc19ce985' + 'd016d03f15177b1bb534ce3753b2aa9b' + '0035b6cac6756a384b861eda8d33e4f7') build() { # Do not try to build syslinux with our default LDFLAGS, it will fail @@ -38,11 +41,15 @@ build() { cd "$srcdir"/$pkgname-${pkgver} # Do not try to build the Windows or DOS installers patch -p1 -i "$srcdir"/syslinux-dont-build-dos-windows-targets.patch - # Fix unknown type name 'umode_t' error - patch -p1 -i "$srcdir"/fix-undefined-type-umode_t.patch + # fix #30084 + patch -Np1 -i "$srcdir"/avoid-using-ext2_fs.patch + # fix #31065 (booting breaks with gcc 4.7) + patch -Np1 -i "$srcdir"/handle-ctors-dtors-via-init_array-and-fini_array.patch # Fix FHS manpage path sed 's|/usr/man|/usr/share/man|g' -i mk/syslinux.mk - make + make installer + make -C utils + make -C com32 } package() { @@ -58,4 +65,5 @@ package() { install -D -m755 "$srcdir"/syslinux-install_update "$pkgdir"/usr/sbin/syslinux-install_update # move extlinux binary to /usr/sbin mv "$pkgdir"/sbin/extlinux "$pkgdir"/usr/sbin/extlinux + rmdir "$pkgdir"/sbin } diff --git a/libre/syslinux/avoid-using-ext2_fs.patch b/libre/syslinux/avoid-using-ext2_fs.patch new file mode 100644 index 000000000..9a166eefc --- /dev/null +++ b/libre/syslinux/avoid-using-ext2_fs.patch @@ -0,0 +1,965 @@ +From a1006762fa6f98750bb77d76dd992cb8ea9f9c99 Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" <hpa@zytor.com> +Date: Mon, 26 Mar 2012 22:51:09 -0700 +Subject: [PATCH] libinstaller: Avoid using <linux/ext2_fs.h> + +Don't use <linux/ext2_fs.h> if we can avoid it. + +The ioctl constants have been globalized and moved to <linux/fs.h>. +Use a private copy of ext2_fs.h from e2fsprogs with the ioctl +constants removed for the data structures. + +Do at least attempt backward compatibility for old kernel headers, but +no real hope of proper operation there... + +Signed-off-by: H. Peter Anvin <hpa@zytor.com> +--- + libinstaller/ext2fs/ext2_fs.h | 856 ++++++++++++++++++++++++++++++++++++++++++ + libinstaller/linuxioctl.h | 29 +- + libinstaller/syslxcom.c | 12 +- + 3 files changed, 886 insertions(+), 11 deletions(-) + create mode 100644 libinstaller/ext2fs/ext2_fs.h + +diff -urpN syslinux-4.05/libinstaller/ext2fs/ext2_fs.h.ext2 syslinux-4.05/libinstaller/ext2fs/ext2_fs.h +--- syslinux-4.05/libinstaller/ext2fs/ext2_fs.h.ext2 2012-08-06 09:48:43.797645032 -0400 ++++ syslinux-4.05/libinstaller/ext2fs/ext2_fs.h 2012-08-06 09:48:43.797645032 -0400 +@@ -0,0 +1,856 @@ ++/* ++ * linux/include/linux/ext2_fs.h ++ * ++ * Copyright (C) 1992, 1993, 1994, 1995 ++ * Remy Card (card@masi.ibp.fr) ++ * Laboratoire MASI - Institut Blaise Pascal ++ * Universite Pierre et Marie Curie (Paris VI) ++ * ++ * from ++ * ++ * linux/include/linux/minix_fs.h ++ * ++ * Copyright (C) 1991, 1992 Linus Torvalds ++ */ ++ ++#ifndef _EXT2FS_EXT2_FS_H ++#define _EXT2FS_EXT2_FS_H ++ ++#include <linux/types.h> ++ ++/* ++ * The second extended filesystem constants/structures ++ */ ++ ++/* ++ * Define EXT2FS_DEBUG to produce debug messages ++ */ ++#undef EXT2FS_DEBUG ++ ++/* ++ * Define EXT2_PREALLOCATE to preallocate data blocks for expanding files ++ */ ++#define EXT2_PREALLOCATE ++#define EXT2_DEFAULT_PREALLOC_BLOCKS 8 ++ ++/* ++ * The second extended file system version ++ */ ++#define EXT2FS_DATE "95/08/09" ++#define EXT2FS_VERSION "0.5b" ++ ++/* ++ * Special inode numbers ++ */ ++#define EXT2_BAD_INO 1 /* Bad blocks inode */ ++#define EXT2_ROOT_INO 2 /* Root inode */ ++#define EXT4_USR_QUOTA_INO 3 /* User quota inode */ ++#define EXT4_GRP_QUOTA_INO 4 /* Group quota inode */ ++#define EXT2_BOOT_LOADER_INO 5 /* Boot loader inode */ ++#define EXT2_UNDEL_DIR_INO 6 /* Undelete directory inode */ ++#define EXT2_RESIZE_INO 7 /* Reserved group descriptors inode */ ++#define EXT2_JOURNAL_INO 8 /* Journal inode */ ++#define EXT2_EXCLUDE_INO 9 /* The "exclude" inode, for snapshots */ ++#define EXT4_REPLICA_INO 10 /* Used by non-upstream feature */ ++ ++/* First non-reserved inode for old ext2 filesystems */ ++#define EXT2_GOOD_OLD_FIRST_INO 11 ++ ++/* ++ * The second extended file system magic number ++ */ ++#define EXT2_SUPER_MAGIC 0xEF53 ++ ++#ifdef __KERNEL__ ++#define EXT2_SB(sb) (&((sb)->u.ext2_sb)) ++#else ++/* Assume that user mode programs are passing in an ext2fs superblock, not ++ * a kernel struct super_block. This will allow us to call the feature-test ++ * macros from user land. */ ++#define EXT2_SB(sb) (sb) ++#endif ++ ++/* ++ * Maximal count of links to a file ++ */ ++#define EXT2_LINK_MAX 65000 ++ ++/* ++ * Macro-instructions used to manage several block sizes ++ */ ++#define EXT2_MIN_BLOCK_LOG_SIZE 10 /* 1024 */ ++#define EXT2_MAX_BLOCK_LOG_SIZE 16 /* 65536 */ ++#define EXT2_MIN_BLOCK_SIZE (1 << EXT2_MIN_BLOCK_LOG_SIZE) ++#define EXT2_MAX_BLOCK_SIZE (1 << EXT2_MAX_BLOCK_LOG_SIZE) ++#ifdef __KERNEL__ ++#define EXT2_BLOCK_SIZE(s) ((s)->s_blocksize) ++#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_blocksize_bits) ++#define EXT2_ADDR_PER_BLOCK_BITS(s) (EXT2_SB(s)->addr_per_block_bits) ++#define EXT2_INODE_SIZE(s) (EXT2_SB(s)->s_inode_size) ++#define EXT2_FIRST_INO(s) (EXT2_SB(s)->s_first_ino) ++#else ++#define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size) ++#define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10) ++#define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ ++ EXT2_GOOD_OLD_INODE_SIZE : (s)->s_inode_size) ++#define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ? \ ++ EXT2_GOOD_OLD_FIRST_INO : (s)->s_first_ino) ++#endif ++#define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof(__u32)) ++ ++/* ++ * Macro-instructions used to manage allocation clusters ++ */ ++#define EXT2_MIN_CLUSTER_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE ++#define EXT2_MAX_CLUSTER_LOG_SIZE 29 /* 512MB */ ++#define EXT2_MIN_CLUSTER_SIZE EXT2_MIN_BLOCK_SIZE ++#define EXT2_MAX_CLUSTER_SIZE (1 << EXT2_MAX_CLUSTER_LOG_SIZE) ++#define EXT2_CLUSTER_SIZE(s) (EXT2_MIN_BLOCK_SIZE << \ ++ (s)->s_log_cluster_size) ++#define EXT2_CLUSTER_SIZE_BITS(s) ((s)->s_log_cluster_size + 10) ++ ++/* ++ * Macro-instructions used to manage fragments ++ * ++ * Note: for backwards compatibility only, for the dump program. ++ * Ext2/3/4 will never support fragments.... ++ */ ++#define EXT2_MIN_FRAG_SIZE EXT2_MIN_BLOCK_SIZE ++#define EXT2_MAX_FRAG_SIZE EXT2_MAX_BLOCK_SIZE ++#define EXT2_MIN_FRAG_LOG_SIZE EXT2_MIN_BLOCK_LOG_SIZE ++#define EXT2_FRAG_SIZE(s) EXT2_BLOCK_SIZE(s) ++#define EXT2_FRAGS_PER_BLOCK(s) 1 ++ ++/* ++ * ACL structures ++ */ ++struct ext2_acl_header /* Header of Access Control Lists */ ++{ ++ __u32 aclh_size; ++ __u32 aclh_file_count; ++ __u32 aclh_acle_count; ++ __u32 aclh_first_acle; ++}; ++ ++struct ext2_acl_entry /* Access Control List Entry */ ++{ ++ __u32 acle_size; ++ __u16 acle_perms; /* Access permissions */ ++ __u16 acle_type; /* Type of entry */ ++ __u16 acle_tag; /* User or group identity */ ++ __u16 acle_pad1; ++ __u32 acle_next; /* Pointer on next entry for the */ ++ /* same inode or on next free entry */ ++}; ++ ++/* ++ * Structure of a blocks group descriptor ++ */ ++struct ext2_group_desc ++{ ++ __u32 bg_block_bitmap; /* Blocks bitmap block */ ++ __u32 bg_inode_bitmap; /* Inodes bitmap block */ ++ __u32 bg_inode_table; /* Inodes table block */ ++ __u16 bg_free_blocks_count; /* Free blocks count */ ++ __u16 bg_free_inodes_count; /* Free inodes count */ ++ __u16 bg_used_dirs_count; /* Directories count */ ++ __u16 bg_flags; ++ __u32 bg_exclude_bitmap_lo; /* Exclude bitmap for snapshots */ ++ __u16 bg_block_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_inode_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_itable_unused; /* Unused inodes count */ ++ __u16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/ ++}; ++ ++/* ++ * Structure of a blocks group descriptor ++ */ ++struct ext4_group_desc ++{ ++ __u32 bg_block_bitmap; /* Blocks bitmap block */ ++ __u32 bg_inode_bitmap; /* Inodes bitmap block */ ++ __u32 bg_inode_table; /* Inodes table block */ ++ __u16 bg_free_blocks_count; /* Free blocks count */ ++ __u16 bg_free_inodes_count; /* Free inodes count */ ++ __u16 bg_used_dirs_count; /* Directories count */ ++ __u16 bg_flags; /* EXT4_BG_flags (INODE_UNINIT, etc) */ ++ __u32 bg_exclude_bitmap_lo; /* Exclude bitmap for snapshots */ ++ __u16 bg_block_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_inode_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */ ++ __u16 bg_itable_unused; /* Unused inodes count */ ++ __u16 bg_checksum; /* crc16(sb_uuid+group+desc) */ ++ __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ ++ __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ ++ __u32 bg_inode_table_hi; /* Inodes table block MSB */ ++ __u16 bg_free_blocks_count_hi;/* Free blocks count MSB */ ++ __u16 bg_free_inodes_count_hi;/* Free inodes count MSB */ ++ __u16 bg_used_dirs_count_hi; /* Directories count MSB */ ++ __u16 bg_itable_unused_hi; /* Unused inodes count MSB */ ++ __u32 bg_exclude_bitmap_hi; /* Exclude bitmap block MSB */ ++ __u16 bg_block_bitmap_csum_hi;/* crc32c(s_uuid+grp_num+bitmap) MSB */ ++ __u16 bg_inode_bitmap_csum_hi;/* crc32c(s_uuid+grp_num+bitmap) MSB */ ++ __u32 bg_reserved; ++}; ++ ++#define EXT2_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not initialized */ ++#define EXT2_BG_BLOCK_UNINIT 0x0002 /* Block bitmap not initialized */ ++#define EXT2_BG_INODE_ZEROED 0x0004 /* On-disk itable initialized to zero */ ++ ++/* ++ * Data structures used by the directory indexing feature ++ * ++ * Note: all of the multibyte integer fields are little endian. ++ */ ++ ++/* ++ * Note: dx_root_info is laid out so that if it should somehow get ++ * overlaid by a dirent the two low bits of the hash version will be ++ * zero. Therefore, the hash version mod 4 should never be 0. ++ * Sincerely, the paranoia department. ++ */ ++struct ext2_dx_root_info { ++ __u32 reserved_zero; ++ __u8 hash_version; /* 0 now, 1 at release */ ++ __u8 info_length; /* 8 */ ++ __u8 indirect_levels; ++ __u8 unused_flags; ++}; ++ ++#define EXT2_HASH_LEGACY 0 ++#define EXT2_HASH_HALF_MD4 1 ++#define EXT2_HASH_TEA 2 ++#define EXT2_HASH_LEGACY_UNSIGNED 3 /* reserved for userspace lib */ ++#define EXT2_HASH_HALF_MD4_UNSIGNED 4 /* reserved for userspace lib */ ++#define EXT2_HASH_TEA_UNSIGNED 5 /* reserved for userspace lib */ ++ ++#define EXT2_HASH_FLAG_INCOMPAT 0x1 ++ ++struct ext2_dx_entry { ++ __u32 hash; ++ __u32 block; ++}; ++ ++struct ext2_dx_countlimit { ++ __u16 limit; ++ __u16 count; ++}; ++ ++ ++/* ++ * Macro-instructions used to manage group descriptors ++ */ ++#define EXT2_MIN_DESC_SIZE 32 ++#define EXT2_MIN_DESC_SIZE_64BIT 64 ++#define EXT2_MAX_DESC_SIZE EXT2_MIN_BLOCK_SIZE ++#define EXT2_DESC_SIZE(s) \ ++ ((EXT2_SB(s)->s_feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) ? \ ++ (s)->s_desc_size : EXT2_MIN_DESC_SIZE) ++ ++#define EXT2_BLOCKS_PER_GROUP(s) (EXT2_SB(s)->s_blocks_per_group) ++#define EXT2_INODES_PER_GROUP(s) (EXT2_SB(s)->s_inodes_per_group) ++#define EXT2_CLUSTERS_PER_GROUP(s) (EXT2_SB(s)->s_clusters_per_group) ++#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s)) ++/* limits imposed by 16-bit value gd_free_{blocks,inode}_count */ ++#define EXT2_MAX_BLOCKS_PER_GROUP(s) ((((unsigned) 1 << 16) - 8) * \ ++ (EXT2_CLUSTER_SIZE(s) / \ ++ EXT2_BLOCK_SIZE(s))) ++#define EXT2_MAX_CLUSTERS_PER_GROUP(s) (((unsigned) 1 << 16) - 8) ++#define EXT2_MAX_INODES_PER_GROUP(s) (((unsigned) 1 << 16) - \ ++ EXT2_INODES_PER_BLOCK(s)) ++#ifdef __KERNEL__ ++#define EXT2_DESC_PER_BLOCK(s) (EXT2_SB(s)->s_desc_per_block) ++#define EXT2_DESC_PER_BLOCK_BITS(s) (EXT2_SB(s)->s_desc_per_block_bits) ++#else ++#define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_DESC_SIZE(s)) ++#endif ++ ++/* ++ * Constants relative to the data blocks ++ */ ++#define EXT2_NDIR_BLOCKS 12 ++#define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS ++#define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1) ++#define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1) ++#define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1) ++ ++/* ++ * Inode flags ++ */ ++#define EXT2_SECRM_FL 0x00000001 /* Secure deletion */ ++#define EXT2_UNRM_FL 0x00000002 /* Undelete */ ++#define EXT2_COMPR_FL 0x00000004 /* Compress file */ ++#define EXT2_SYNC_FL 0x00000008 /* Synchronous updates */ ++#define EXT2_IMMUTABLE_FL 0x00000010 /* Immutable file */ ++#define EXT2_APPEND_FL 0x00000020 /* writes to file may only append */ ++#define EXT2_NODUMP_FL 0x00000040 /* do not dump file */ ++#define EXT2_NOATIME_FL 0x00000080 /* do not update atime */ ++/* Reserved for compression usage... */ ++#define EXT2_DIRTY_FL 0x00000100 ++#define EXT2_COMPRBLK_FL 0x00000200 /* One or more compressed clusters */ ++#define EXT2_NOCOMPR_FL 0x00000400 /* Access raw compressed data */ ++#define EXT2_ECOMPR_FL 0x00000800 /* Compression error */ ++/* End compression flags --- maybe not all used */ ++#define EXT2_BTREE_FL 0x00001000 /* btree format dir */ ++#define EXT2_INDEX_FL 0x00001000 /* hash-indexed directory */ ++#define EXT2_IMAGIC_FL 0x00002000 ++#define EXT3_JOURNAL_DATA_FL 0x00004000 /* file data should be journaled */ ++#define EXT2_NOTAIL_FL 0x00008000 /* file tail should not be merged */ ++#define EXT2_DIRSYNC_FL 0x00010000 /* Synchronous directory modifications */ ++#define EXT2_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/ ++#define EXT4_HUGE_FILE_FL 0x00040000 /* Set to each huge file */ ++#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ ++#define EXT4_EA_INODE_FL 0x00200000 /* Inode used for large EA */ ++/* EXT4_EOFBLOCKS_FL 0x00400000 was here */ ++#define EXT4_SNAPFILE_FL 0x01000000 /* Inode is a snapshot */ ++#define EXT4_SNAPFILE_DELETED_FL 0x04000000 /* Snapshot is being deleted */ ++#define EXT4_SNAPFILE_SHRUNK_FL 0x08000000 /* Snapshot shrink has completed */ ++#define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */ ++ ++#define EXT2_FL_USER_VISIBLE 0x004BDFFF /* User visible flags */ ++#define EXT2_FL_USER_MODIFIABLE 0x004B80FF /* User modifiable flags */ ++ ++/* ++ * ioctl commands ++ */ ++ ++/* Used for online resize */ ++struct ext2_new_group_input { ++ __u32 group; /* Group number for this data */ ++ __u32 block_bitmap; /* Absolute block number of block bitmap */ ++ __u32 inode_bitmap; /* Absolute block number of inode bitmap */ ++ __u32 inode_table; /* Absolute block number of inode table start */ ++ __u32 blocks_count; /* Total number of blocks in this group */ ++ __u16 reserved_blocks; /* Number of reserved blocks in this group */ ++ __u16 unused; /* Number of reserved GDT blocks in group */ ++}; ++ ++struct ext4_new_group_input { ++ __u32 group; /* Group number for this data */ ++ __u64 block_bitmap; /* Absolute block number of block bitmap */ ++ __u64 inode_bitmap; /* Absolute block number of inode bitmap */ ++ __u64 inode_table; /* Absolute block number of inode table start */ ++ __u32 blocks_count; /* Total number of blocks in this group */ ++ __u16 reserved_blocks; /* Number of reserved blocks in this group */ ++ __u16 unused; ++}; ++ ++#ifdef __GNU__ /* Needed for the Hurd */ ++#define _IOT_ext2_new_group_input _IOT (_IOTS(__u32), 5, _IOTS(__u16), 2, 0, 0) ++#endif ++ ++#define EXT2_IOC_GETFLAGS _IOR('f', 1, long) ++#define EXT2_IOC_SETFLAGS _IOW('f', 2, long) ++#define EXT2_IOC_GETVERSION _IOR('v', 1, long) ++#define EXT2_IOC_SETVERSION _IOW('v', 2, long) ++#define EXT2_IOC_GETVERSION_NEW _IOR('f', 3, long) ++#define EXT2_IOC_SETVERSION_NEW _IOW('f', 4, long) ++#define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long) ++#define EXT2_IOC_GROUP_ADD _IOW('f', 8,struct ext2_new_group_input) ++#define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input) ++#define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64) ++ ++/* ++ * Structure of an inode on the disk ++ */ ++struct ext2_inode { ++ __u16 i_mode; /* File mode */ ++ __u16 i_uid; /* Low 16 bits of Owner Uid */ ++ __u32 i_size; /* Size in bytes */ ++ __u32 i_atime; /* Access time */ ++ __u32 i_ctime; /* Inode change time */ ++ __u32 i_mtime; /* Modification time */ ++ __u32 i_dtime; /* Deletion Time */ ++ __u16 i_gid; /* Low 16 bits of Group Id */ ++ __u16 i_links_count; /* Links count */ ++ __u32 i_blocks; /* Blocks count */ ++ __u32 i_flags; /* File flags */ ++ union { ++ struct { ++ __u32 l_i_version; /* was l_i_reserved1 */ ++ } linux1; ++ struct { ++ __u32 h_i_translator; ++ } hurd1; ++ } osd1; /* OS dependent 1 */ ++ __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ ++ __u32 i_generation; /* File version (for NFS) */ ++ __u32 i_file_acl; /* File ACL */ ++ __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ ++ __u32 i_faddr; /* Fragment address */ ++ union { ++ struct { ++ __u16 l_i_blocks_hi; ++ __u16 l_i_file_acl_high; ++ __u16 l_i_uid_high; /* these 2 fields */ ++ __u16 l_i_gid_high; /* were reserved2[0] */ ++ __u16 l_i_checksum_lo; /* crc32c(uuid+inum+inode) */ ++ __u16 l_i_reserved; ++ } linux2; ++ struct { ++ __u8 h_i_frag; /* Fragment number */ ++ __u8 h_i_fsize; /* Fragment size */ ++ __u16 h_i_mode_high; ++ __u16 h_i_uid_high; ++ __u16 h_i_gid_high; ++ __u32 h_i_author; ++ } hurd2; ++ } osd2; /* OS dependent 2 */ ++}; ++ ++/* ++ * Permanent part of an large inode on the disk ++ */ ++struct ext2_inode_large { ++ __u16 i_mode; /* File mode */ ++ __u16 i_uid; /* Low 16 bits of Owner Uid */ ++ __u32 i_size; /* Size in bytes */ ++ __u32 i_atime; /* Access time */ ++ __u32 i_ctime; /* Inode Change time */ ++ __u32 i_mtime; /* Modification time */ ++ __u32 i_dtime; /* Deletion Time */ ++ __u16 i_gid; /* Low 16 bits of Group Id */ ++ __u16 i_links_count; /* Links count */ ++ __u32 i_blocks; /* Blocks count */ ++ __u32 i_flags; /* File flags */ ++ union { ++ struct { ++ __u32 l_i_version; /* was l_i_reserved1 */ ++ } linux1; ++ struct { ++ __u32 h_i_translator; ++ } hurd1; ++ } osd1; /* OS dependent 1 */ ++ __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ ++ __u32 i_generation; /* File version (for NFS) */ ++ __u32 i_file_acl; /* File ACL */ ++ __u32 i_size_high; /* Formerly i_dir_acl, directory ACL */ ++ __u32 i_faddr; /* Fragment address */ ++ union { ++ struct { ++ __u16 l_i_blocks_hi; ++ __u16 l_i_file_acl_high; ++ __u16 l_i_uid_high; /* these 2 fields */ ++ __u16 l_i_gid_high; /* were reserved2[0] */ ++ __u16 l_i_checksum_lo; /* crc32c(uuid+inum+inode) */ ++ __u16 l_i_reserved; ++ } linux2; ++ struct { ++ __u8 h_i_frag; /* Fragment number */ ++ __u8 h_i_fsize; /* Fragment size */ ++ __u16 h_i_mode_high; ++ __u16 h_i_uid_high; ++ __u16 h_i_gid_high; ++ __u32 h_i_author; ++ } hurd2; ++ } osd2; /* OS dependent 2 */ ++ __u16 i_extra_isize; ++ __u16 i_checksum_hi; /* crc32c(uuid+inum+inode) */ ++ __u32 i_ctime_extra; /* extra Change time (nsec << 2 | epoch) */ ++ __u32 i_mtime_extra; /* extra Modification time (nsec << 2 | epoch) */ ++ __u32 i_atime_extra; /* extra Access time (nsec << 2 | epoch) */ ++ __u32 i_crtime; /* File creation time */ ++ __u32 i_crtime_extra; /* extra File creation time (nsec << 2 | epoch)*/ ++ __u32 i_version_hi; /* high 32 bits for 64-bit version */ ++}; ++ ++#define i_dir_acl i_size_high ++ ++#if defined(__KERNEL__) || defined(__linux__) ++#define i_reserved1 osd1.linux1.l_i_reserved1 ++#define i_frag osd2.linux2.l_i_frag ++#define i_fsize osd2.linux2.l_i_fsize ++#define i_uid_low i_uid ++#define i_gid_low i_gid ++#define i_uid_high osd2.linux2.l_i_uid_high ++#define i_gid_high osd2.linux2.l_i_gid_high ++#else ++#if defined(__GNU__) ++ ++#define i_translator osd1.hurd1.h_i_translator ++#define i_frag osd2.hurd2.h_i_frag; ++#define i_fsize osd2.hurd2.h_i_fsize; ++#define i_uid_high osd2.hurd2.h_i_uid_high ++#define i_gid_high osd2.hurd2.h_i_gid_high ++#define i_author osd2.hurd2.h_i_author ++ ++#endif /* __GNU__ */ ++#endif /* defined(__KERNEL__) || defined(__linux__) */ ++ ++#define inode_uid(inode) ((inode).i_uid | (inode).osd2.linux2.l_i_uid_high << 16) ++#define inode_gid(inode) ((inode).i_gid | (inode).osd2.linux2.l_i_gid_high << 16) ++#define ext2fs_set_i_uid_high(inode,x) ((inode).osd2.linux2.l_i_uid_high = (x)) ++#define ext2fs_set_i_gid_high(inode,x) ((inode).osd2.linux2.l_i_gid_high = (x)) ++ ++/* ++ * File system states ++ */ ++#define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */ ++#define EXT2_ERROR_FS 0x0002 /* Errors detected */ ++#define EXT3_ORPHAN_FS 0x0004 /* Orphans being recovered */ ++ ++/* ++ * Misc. filesystem flags ++ */ ++#define EXT2_FLAGS_SIGNED_HASH 0x0001 /* Signed dirhash in use */ ++#define EXT2_FLAGS_UNSIGNED_HASH 0x0002 /* Unsigned dirhash in use */ ++#define EXT2_FLAGS_TEST_FILESYS 0x0004 /* OK for use on development code */ ++#define EXT2_FLAGS_IS_SNAPSHOT 0x0010 /* This is a snapshot image */ ++#define EXT2_FLAGS_FIX_SNAPSHOT 0x0020 /* Snapshot inodes corrupted */ ++#define EXT2_FLAGS_FIX_EXCLUDE 0x0040 /* Exclude bitmaps corrupted */ ++ ++/* ++ * Mount flags ++ */ ++#define EXT2_MOUNT_CHECK 0x0001 /* Do mount-time checks */ ++#define EXT2_MOUNT_GRPID 0x0004 /* Create files with directory's group */ ++#define EXT2_MOUNT_DEBUG 0x0008 /* Some debugging messages */ ++#define EXT2_MOUNT_ERRORS_CONT 0x0010 /* Continue on errors */ ++#define EXT2_MOUNT_ERRORS_RO 0x0020 /* Remount fs ro on errors */ ++#define EXT2_MOUNT_ERRORS_PANIC 0x0040 /* Panic on errors */ ++#define EXT2_MOUNT_MINIX_DF 0x0080 /* Mimics the Minix statfs */ ++#define EXT2_MOUNT_NO_UID32 0x0200 /* Disable 32-bit UIDs */ ++ ++#define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt ++#define set_opt(o, opt) o |= EXT2_MOUNT_##opt ++#define test_opt(sb, opt) (EXT2_SB(sb)->s_mount_opt & \ ++ EXT2_MOUNT_##opt) ++/* ++ * Maximal mount counts between two filesystem checks ++ */ ++#define EXT2_DFL_MAX_MNT_COUNT 20 /* Allow 20 mounts */ ++#define EXT2_DFL_CHECKINTERVAL 0 /* Don't use interval check */ ++ ++/* ++ * Behaviour when detecting errors ++ */ ++#define EXT2_ERRORS_CONTINUE 1 /* Continue execution */ ++#define EXT2_ERRORS_RO 2 /* Remount fs read-only */ ++#define EXT2_ERRORS_PANIC 3 /* Panic */ ++#define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE ++ ++#if (__GNUC__ >= 4) ++#define ext4_offsetof(TYPE,MEMBER) __builtin_offsetof(TYPE,MEMBER) ++#else ++#define ext4_offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ++#endif ++ ++/* ++ * Structure of the super block ++ */ ++struct ext2_super_block { ++ __u32 s_inodes_count; /* Inodes count */ ++ __u32 s_blocks_count; /* Blocks count */ ++ __u32 s_r_blocks_count; /* Reserved blocks count */ ++ __u32 s_free_blocks_count; /* Free blocks count */ ++ __u32 s_free_inodes_count; /* Free inodes count */ ++ __u32 s_first_data_block; /* First Data Block */ ++ __u32 s_log_block_size; /* Block size */ ++ __u32 s_log_cluster_size; /* Allocation cluster size */ ++ __u32 s_blocks_per_group; /* # Blocks per group */ ++ __u32 s_clusters_per_group; /* # Fragments per group */ ++ __u32 s_inodes_per_group; /* # Inodes per group */ ++ __u32 s_mtime; /* Mount time */ ++ __u32 s_wtime; /* Write time */ ++ __u16 s_mnt_count; /* Mount count */ ++ __s16 s_max_mnt_count; /* Maximal mount count */ ++ __u16 s_magic; /* Magic signature */ ++ __u16 s_state; /* File system state */ ++ __u16 s_errors; /* Behaviour when detecting errors */ ++ __u16 s_minor_rev_level; /* minor revision level */ ++ __u32 s_lastcheck; /* time of last check */ ++ __u32 s_checkinterval; /* max. time between checks */ ++ __u32 s_creator_os; /* OS */ ++ __u32 s_rev_level; /* Revision level */ ++ __u16 s_def_resuid; /* Default uid for reserved blocks */ ++ __u16 s_def_resgid; /* Default gid for reserved blocks */ ++ /* ++ * These fields are for EXT2_DYNAMIC_REV superblocks only. ++ * ++ * Note: the difference between the compatible feature set and ++ * the incompatible feature set is that if there is a bit set ++ * in the incompatible feature set that the kernel doesn't ++ * know about, it should refuse to mount the filesystem. ++ * ++ * e2fsck's requirements are more strict; if it doesn't know ++ * about a feature in either the compatible or incompatible ++ * feature set, it must abort and not try to meddle with ++ * things it doesn't understand... ++ */ ++ __u32 s_first_ino; /* First non-reserved inode */ ++ __u16 s_inode_size; /* size of inode structure */ ++ __u16 s_block_group_nr; /* block group # of this superblock */ ++ __u32 s_feature_compat; /* compatible feature set */ ++ __u32 s_feature_incompat; /* incompatible feature set */ ++ __u32 s_feature_ro_compat; /* readonly-compatible feature set */ ++ __u8 s_uuid[16]; /* 128-bit uuid for volume */ ++ char s_volume_name[16]; /* volume name */ ++ char s_last_mounted[64]; /* directory where last mounted */ ++ __u32 s_algorithm_usage_bitmap; /* For compression */ ++ /* ++ * Performance hints. Directory preallocation should only ++ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on. ++ */ ++ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/ ++ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */ ++ __u16 s_reserved_gdt_blocks; /* Per group table for online growth */ ++ /* ++ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set. ++ */ ++ __u8 s_journal_uuid[16]; /* uuid of journal superblock */ ++ __u32 s_journal_inum; /* inode number of journal file */ ++ __u32 s_journal_dev; /* device number of journal file */ ++ __u32 s_last_orphan; /* start of list of inodes to delete */ ++ __u32 s_hash_seed[4]; /* HTREE hash seed */ ++ __u8 s_def_hash_version; /* Default hash version to use */ ++ __u8 s_jnl_backup_type; /* Default type of journal backup */ ++ __u16 s_desc_size; /* Group desc. size: INCOMPAT_64BIT */ ++ __u32 s_default_mount_opts; ++ __u32 s_first_meta_bg; /* First metablock group */ ++ __u32 s_mkfs_time; /* When the filesystem was created */ ++ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ ++ __u32 s_blocks_count_hi; /* Blocks count high 32bits */ ++ __u32 s_r_blocks_count_hi; /* Reserved blocks count high 32 bits*/ ++ __u32 s_free_blocks_hi; /* Free blocks count */ ++ __u16 s_min_extra_isize; /* All inodes have at least # bytes */ ++ __u16 s_want_extra_isize; /* New inodes should reserve # bytes */ ++ __u32 s_flags; /* Miscellaneous flags */ ++ __u16 s_raid_stride; /* RAID stride */ ++ __u16 s_mmp_update_interval; /* # seconds to wait in MMP checking */ ++ __u64 s_mmp_block; /* Block for multi-mount protection */ ++ __u32 s_raid_stripe_width; /* blocks on all data disks (N*stride)*/ ++ __u8 s_log_groups_per_flex; /* FLEX_BG group size */ ++ __u8 s_reserved_char_pad; ++ __u16 s_reserved_pad; /* Padding to next 32bits */ ++ __u64 s_kbytes_written; /* nr of lifetime kilobytes written */ ++ __u32 s_snapshot_inum; /* Inode number of active snapshot */ ++ __u32 s_snapshot_id; /* sequential ID of active snapshot */ ++ __u64 s_snapshot_r_blocks_count; /* reserved blocks for active ++ snapshot's future use */ ++ __u32 s_snapshot_list; /* inode number of the head of the on-disk snapshot list */ ++#define EXT4_S_ERR_START ext4_offsetof(struct ext2_super_block, s_error_count) ++ __u32 s_error_count; /* number of fs errors */ ++ __u32 s_first_error_time; /* first time an error happened */ ++ __u32 s_first_error_ino; /* inode involved in first error */ ++ __u64 s_first_error_block; /* block involved of first error */ ++ __u8 s_first_error_func[32]; /* function where the error happened */ ++ __u32 s_first_error_line; /* line number where error happened */ ++ __u32 s_last_error_time; /* most recent time of an error */ ++ __u32 s_last_error_ino; /* inode involved in last error */ ++ __u32 s_last_error_line; /* line number where error happened */ ++ __u64 s_last_error_block; /* block involved of last error */ ++ __u8 s_last_error_func[32]; /* function where the error happened */ ++#define EXT4_S_ERR_END ext4_offsetof(struct ext2_super_block, s_mount_opts) ++ __u8 s_mount_opts[64]; ++ __u32 s_usr_quota_inum; /* inode number of user quota file */ ++ __u32 s_grp_quota_inum; /* inode number of group quota file */ ++ __u32 s_overhead_blocks; /* overhead blocks/clusters in fs */ ++ __u32 s_reserved[108]; /* Padding to the end of the block */ ++ __u32 s_checksum; /* crc32c(superblock) */ ++}; ++ ++#define EXT4_S_ERR_LEN (EXT4_S_ERR_END - EXT4_S_ERR_START) ++ ++/* ++ * Codes for operating systems ++ */ ++#define EXT2_OS_LINUX 0 ++#define EXT2_OS_HURD 1 ++#define EXT2_OBSO_OS_MASIX 2 ++#define EXT2_OS_FREEBSD 3 ++#define EXT2_OS_LITES 4 ++ ++/* ++ * Revision levels ++ */ ++#define EXT2_GOOD_OLD_REV 0 /* The good old (original) format */ ++#define EXT2_DYNAMIC_REV 1 /* V2 format w/ dynamic inode sizes */ ++ ++#define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV ++#define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV ++ ++#define EXT2_GOOD_OLD_INODE_SIZE 128 ++ ++/* ++ * Journal inode backup types ++ */ ++#define EXT3_JNL_BACKUP_BLOCKS 1 ++ ++/* ++ * Feature set definitions ++ */ ++ ++#define EXT2_HAS_COMPAT_FEATURE(sb,mask) \ ++ ( EXT2_SB(sb)->s_feature_compat & (mask) ) ++#define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask) \ ++ ( EXT2_SB(sb)->s_feature_ro_compat & (mask) ) ++#define EXT2_HAS_INCOMPAT_FEATURE(sb,mask) \ ++ ( EXT2_SB(sb)->s_feature_incompat & (mask) ) ++ ++#define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001 ++#define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002 ++#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 ++#define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008 ++#define EXT2_FEATURE_COMPAT_RESIZE_INODE 0x0010 ++#define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020 ++#define EXT2_FEATURE_COMPAT_LAZY_BG 0x0040 ++/* #define EXT2_FEATURE_COMPAT_EXCLUDE_INODE 0x0080 not used, legacy */ ++#define EXT2_FEATURE_COMPAT_EXCLUDE_BITMAP 0x0100 ++ ++ ++#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 ++#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 ++/* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */ ++#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 ++#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 ++#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 ++#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 ++#define EXT4_FEATURE_RO_COMPAT_HAS_SNAPSHOT 0x0080 ++#define EXT4_FEATURE_RO_COMPAT_QUOTA 0x0100 ++#define EXT4_FEATURE_RO_COMPAT_BIGALLOC 0x0200 ++#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400 ++#define EXT4_FEATURE_RO_COMPAT_REPLICA 0x0800 ++ ++#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001 ++#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 ++#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ ++#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ ++#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 ++#define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 ++#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 ++#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 ++#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 ++#define EXT4_FEATURE_INCOMPAT_EA_INODE 0x0400 ++#define EXT4_FEATURE_INCOMPAT_DIRDATA 0x1000 ++ ++#define EXT2_FEATURE_COMPAT_SUPP 0 ++#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ ++ EXT4_FEATURE_INCOMPAT_MMP) ++#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ ++ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ ++ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \ ++ EXT2_FEATURE_RO_COMPAT_BTREE_DIR) ++ ++/* ++ * Default values for user and/or group using reserved blocks ++ */ ++#define EXT2_DEF_RESUID 0 ++#define EXT2_DEF_RESGID 0 ++ ++/* ++ * Default mount options ++ */ ++#define EXT2_DEFM_DEBUG 0x0001 ++#define EXT2_DEFM_BSDGROUPS 0x0002 ++#define EXT2_DEFM_XATTR_USER 0x0004 ++#define EXT2_DEFM_ACL 0x0008 ++#define EXT2_DEFM_UID16 0x0010 ++#define EXT3_DEFM_JMODE 0x0060 ++#define EXT3_DEFM_JMODE_DATA 0x0020 ++#define EXT3_DEFM_JMODE_ORDERED 0x0040 ++#define EXT3_DEFM_JMODE_WBACK 0x0060 ++#define EXT4_DEFM_NOBARRIER 0x0100 ++#define EXT4_DEFM_BLOCK_VALIDITY 0x0200 ++#define EXT4_DEFM_DISCARD 0x0400 ++#define EXT4_DEFM_NODELALLOC 0x0800 ++ ++/* ++ * Structure of a directory entry ++ */ ++#define EXT2_NAME_LEN 255 ++ ++struct ext2_dir_entry { ++ __u32 inode; /* Inode number */ ++ __u16 rec_len; /* Directory entry length */ ++ __u16 name_len; /* Name length */ ++ char name[EXT2_NAME_LEN]; /* File name */ ++}; ++ ++/* ++ * The new version of the directory entry. Since EXT2 structures are ++ * stored in intel byte order, and the name_len field could never be ++ * bigger than 255 chars, it's safe to reclaim the extra byte for the ++ * file_type field. ++ */ ++struct ext2_dir_entry_2 { ++ __u32 inode; /* Inode number */ ++ __u16 rec_len; /* Directory entry length */ ++ __u8 name_len; /* Name length */ ++ __u8 file_type; ++ char name[EXT2_NAME_LEN]; /* File name */ ++}; ++ ++/* ++ * Ext2 directory file types. Only the low 3 bits are used. The ++ * other bits are reserved for now. ++ */ ++#define EXT2_FT_UNKNOWN 0 ++#define EXT2_FT_REG_FILE 1 ++#define EXT2_FT_DIR 2 ++#define EXT2_FT_CHRDEV 3 ++#define EXT2_FT_BLKDEV 4 ++#define EXT2_FT_FIFO 5 ++#define EXT2_FT_SOCK 6 ++#define EXT2_FT_SYMLINK 7 ++ ++#define EXT2_FT_MAX 8 ++ ++/* ++ * EXT2_DIR_PAD defines the directory entries boundaries ++ * ++ * NOTE: It must be a multiple of 4 ++ */ ++#define EXT2_DIR_PAD 4 ++#define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1) ++#define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) & \ ++ ~EXT2_DIR_ROUND) ++ ++/* ++ * This structure is used for multiple mount protection. It is written ++ * into the block number saved in the s_mmp_block field in the superblock. ++ * Programs that check MMP should assume that if SEQ_FSCK (or any unknown ++ * code above SEQ_MAX) is present then it is NOT safe to use the filesystem, ++ * regardless of how old the timestamp is. ++ * ++ * The timestamp in the MMP structure will be updated by e2fsck at some ++ * arbitary intervals (start of passes, after every few groups of inodes ++ * in pass1 and pass1b). There is no guarantee that e2fsck is updating ++ * the MMP block in a timely manner, and the updates it does are purely ++ * for the convenience of the sysadmin and not for automatic validation. ++ * ++ * Note: Only the mmp_seq value is used to determine whether the MMP block ++ * is being updated. The mmp_time, mmp_nodename, and mmp_bdevname ++ * fields are only for informational purposes for the administrator, ++ * due to clock skew between nodes and hostname HA service takeover. ++ */ ++#define EXT4_MMP_MAGIC 0x004D4D50U /* ASCII for MMP */ ++#define EXT4_MMP_SEQ_CLEAN 0xFF4D4D50U /* mmp_seq value for clean unmount */ ++#define EXT4_MMP_SEQ_FSCK 0xE24D4D50U /* mmp_seq value when being fscked */ ++#define EXT4_MMP_SEQ_MAX 0xE24D4D4FU /* maximum valid mmp_seq value */ ++ ++struct mmp_struct { ++ __u32 mmp_magic; /* Magic number for MMP */ ++ __u32 mmp_seq; /* Sequence no. updated periodically */ ++ __u64 mmp_time; /* Time last updated */ ++ char mmp_nodename[64]; /* Node which last updated MMP block */ ++ char mmp_bdevname[32]; /* Bdev which last updated MMP block */ ++ __u16 mmp_check_interval; /* Changed mmp_check_interval */ ++ __u16 mmp_pad1; ++ __u32 mmp_pad2[227]; ++}; ++ ++/* ++ * Default interval for MMP update in seconds. ++ */ ++#define EXT4_MMP_UPDATE_INTERVAL 5 ++ ++/* ++ * Maximum interval for MMP update in seconds. ++ */ ++#define EXT4_MMP_MAX_UPDATE_INTERVAL 300 ++ ++/* ++ * Minimum interval for MMP checking in seconds. ++ */ ++#define EXT4_MMP_MIN_CHECK_INTERVAL 5 ++ ++#endif /* _EXT2FS_EXT2_FS_H */ +diff -urpN syslinux-4.05/libinstaller/linuxioctl.h.ext2 syslinux-4.05/libinstaller/linuxioctl.h +--- syslinux-4.05/libinstaller/linuxioctl.h.ext2 2011-12-09 13:28:17.000000000 -0500 ++++ syslinux-4.05/libinstaller/linuxioctl.h 2012-08-06 09:52:42.653335110 -0400 +@@ -9,17 +9,33 @@ + + #include <sys/ioctl.h> + ++#ifdef __linux__ ++ + #define statfs _kernel_statfs /* HACK to deal with broken 2.4 distros */ + + #include <linux/fd.h> /* Floppy geometry */ + #include <linux/hdreg.h> /* Hard disk geometry */ + +-#include <linux/fs.h> /* FIGETBSZ, FIBMAP, FS_IOC_FIEMAP */ ++#include <linux/fs.h> /* FIGETBSZ, FIBMAP, FS_IOC_* */ + #include <linux/msdos_fs.h> /* FAT_IOCTL_SET_ATTRIBUTES */ + + #undef SECTOR_SIZE /* Defined in msdos_fs.h for no good reason */ + #undef SECTOR_BITS +-#include <linux/ext2_fs.h> /* EXT2_IOC_* */ ++ ++#ifndef FS_IOC_GETFLAGS ++/* Old kernel headers, these were once ext2-specific... */ ++# include <linux/ext2_fs.h> /* EXT2_IOC_* */ ++ ++# define FS_IOC_GETFLAGS EXT2_IOC_GETFLAGS ++# define FS_IOC_SETFLAGS EXT2_IOC_SETFLAGS ++ ++# define FS_IMMUTABLE_FL EXT2_IMMUTABLE_FL ++ ++#else ++ ++# include <ext2fs/ext2_fs.h> ++ ++#endif + + #ifndef FAT_IOCTL_GET_ATTRIBUTES + # define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32) +@@ -37,11 +53,13 @@ + + #undef statfs + +-#if defined(__linux__) && !defined(BLKGETSIZE64) ++#ifndef BLKGETSIZE64 + /* This takes a u64, but the size field says size_t. Someone screwed big. */ + # define BLKGETSIZE64 _IOR(0x12,114,size_t) + #endif + + #include <linux/loop.h> + ++#endif /* __linux__ */ ++ + #endif /* LIBINSTALLER_LINUXIOCTL_H */ +diff -urpN syslinux-4.05/libinstaller/syslxcom.c.ext2 syslinux-4.05/libinstaller/syslxcom.c +--- syslinux-4.05/libinstaller/syslxcom.c.ext2 2011-12-09 13:28:17.000000000 -0500 ++++ syslinux-4.05/libinstaller/syslxcom.c 2012-08-06 09:48:43.797645032 -0400 +@@ -121,9 +121,9 @@ void clear_attributes(int fd) + { + int flags; + +- if (!ioctl(fd, EXT2_IOC_GETFLAGS, &flags)) { +- flags &= ~EXT2_IMMUTABLE_FL; +- ioctl(fd, EXT2_IOC_SETFLAGS, &flags); ++ if (!ioctl(fd, FS_IOC_GETFLAGS, &flags)) { ++ flags &= ~FS_IMMUTABLE_FL; ++ ioctl(fd, FS_IOC_SETFLAGS, &flags); + } + break; + } +@@ -151,9 +151,9 @@ void set_attributes(int fd) + { + int flags; + +- if (st.st_uid == 0 && !ioctl(fd, EXT2_IOC_GETFLAGS, &flags)) { +- flags |= EXT2_IMMUTABLE_FL; +- ioctl(fd, EXT2_IOC_SETFLAGS, &flags); ++ if (st.st_uid == 0 && !ioctl(fd, FS_IOC_GETFLAGS, &flags)) { ++ flags |= FS_IMMUTABLE_FL; ++ ioctl(fd, FS_IOC_SETFLAGS, &flags); + } + break; + } diff --git a/libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch b/libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch new file mode 100644 index 000000000..aa513312b --- /dev/null +++ b/libre/syslinux/handle-ctors-dtors-via-init_array-and-fini_array.patch @@ -0,0 +1,67 @@ +From b6be466444740a34bacd140dccbe57f6629b15bc Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" <hpa@zytor.com> +Date: Mon, 28 May 2012 21:28:52 -0700 +Subject: [PATCH 1/1] com32.ld: handle .init_array and .fini_array + +Handle constructors/destructors via .init_array and .fini_array, as +generated by newer gccs. + +Signed-off-by: H. Peter Anvin <hpa@zytor.com> +--- + com32/lib/com32.ld | 33 ++++++++++----------------------- + 1 files changed, 10 insertions(+), 23 deletions(-) + +diff --git a/com32/lib/com32.ld b/com32/lib/com32.ld +index 37ee46c..008e4ce 100644 +--- a/com32/lib/com32.ld ++++ b/com32/lib/com32.ld +@@ -36,36 +36,23 @@ SECTIONS + .rodata1 : { *(.rodata1) } + __rodata_end = .; + +- /* Ensure the __preinit_array_start label is properly aligned. We +- could instead move the label definition inside the section, but +- the linker would then create the section even if it turns out to +- be empty, which isn't pretty. */ ++ /* ++ * The difference betwee .ctors/.dtors and .init_array/.fini_array ++ * is the ordering, but we don't use prioritization for libcom32, so ++ * just lump them all together and hope that's okay. ++ */ + . = ALIGN(4); +- .preinit_array : { +- PROVIDE (__preinit_array_start = .); +- *(.preinit_array) +- PROVIDE (__preinit_array_end = .); +- } +- .init_array : { +- PROVIDE (__init_array_start = .); +- *(.init_array) +- PROVIDE (__init_array_end = .); +- } +- .fini_array : { +- PROVIDE (__fini_array_start = .); +- *(.fini_array) +- PROVIDE (__fini_array_end = .); +- } + .ctors : { + PROVIDE (__ctors_start = .); +- KEEP (*(SORT(.ctors.*))) +- KEEP (*(.ctors)) ++ KEEP (*(SORT(.preinit_array*))) ++ KEEP (*(SORT(.init_array*))) ++ KEEP (*(SORT(.ctors*))) + PROVIDE (__ctors_end = .); + } + .dtors : { + PROVIDE (__dtors_start = .); +- KEEP (*(SORT(.dtors.*))) +- KEEP (*(.dtors)) ++ KEEP (*(SORT(.fini_array*))) ++ KEEP (*(SORT(.dtors*))) + PROVIDE (__dtors_end = .); + } + +-- +1.7.6.5 + diff --git a/libre/syslinux/rePKGBUILD b/libre/syslinux/rePKGBUILD index a8eb152d5..33a96d1a1 100644 --- a/libre/syslinux/rePKGBUILD +++ b/libre/syslinux/rePKGBUILD @@ -3,23 +3,23 @@ # NOTE: Please fill out the license field for your package! If it is unknown, # then please put 'unknown'. -# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> source PKGBUILD unset build package md5sums source check _repo=core pkgname='syslinux' options=(!strip) source=(PKGBUILD -# http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} - http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-4-${CARCH}${PKGEXT} + http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} +# http://mirrors.kernel.org/archlinux/${_repo}/os/$CARCH/${pkgname}-${pkgver}-4-${CARCH}${PKGEXT} # files for pkg modifications syslinux.cfg splash.png) build() { cd "${srcdir}/" -# rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-$pkgrel-$CARCH$PKGEXT || true - rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-4-$CARCH$PKGEXT || true + rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-$pkgrel-$CARCH$PKGEXT || true +# rm -v .{INSTALL,PKGINFO} ${pkgname%}-$pkgver-4-$CARCH$PKGEXT || true # put actions for package modifications below this line rm -v boot/syslinux/syslinux.cfg @@ -27,13 +27,8 @@ build() { package_syslinux() { pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)" - install=syslinux.install backup=('boot/syslinux/syslinux.cfg' 'boot/syslinux/splash.png') - optdepends=('perl-passwd-md5: For md5pass' - 'perl-digest-sha1: For sha1pass' - 'mtools: For mkdiskimage and syslinux support' - ) # Install the default configuration install -D -m644 "$srcdir"/syslinux.cfg "$pkgdir"/boot/syslinux/syslinux.cfg # Install Parabola splash diff --git a/libre/texlive-bin-libre/PKGBUILD b/libre/texlive-bin-libre/PKGBUILD index 76a66f0cf..1f68715c6 100644 --- a/libre/texlive-bin-libre/PKGBUILD +++ b/libre/texlive-bin-libre/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 162397 2012-06-26 20:13:46Z remy $ +# $Id: PKGBUILD 165207 2012-08-13 08:28:02Z remy $ # Maintainer: Rémy Oudompheng <remy@archlinux.org> # Contributor: francois <francois.archlinux.org> # Maintainer (Parabola): Michał Masłowski <mtjm@mtjm.eu> @@ -6,7 +6,7 @@ pkgname=texlive-bin-libre pkgver=2012.0 -pkgrel=1 +pkgrel=4 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 ############################################################# @@ -280,7 +284,6 @@ vpl2vpl _latexextra_scripts=" authorindex exceltex -exceltex makeglossaries pdfannotextractor perltex 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-bin-libre/texlive.install b/libre/texlive-bin-libre/texlive.install index b85850123..06a40a3b3 100644 --- a/libre/texlive-bin-libre/texlive.install +++ b/libre/texlive-bin-libre/texlive.install @@ -16,13 +16,19 @@ post_install() { } post_upgrade() { + local corename corever _pacout echo ">>> texlive: updating the filename database..." usr/bin/mktexlsr - echo -n "recreating all formats..." - usr/bin/fmtutil-sys --all 1>/dev/null - echo " done." - echo " (logs are under /var/lib/texmf/web2c/<engine>/<formatname>.log)" - + _pacout=$(pacman -Q texlive-core 2>/dev/null) + read corename corever <<< ${_pacout} + if [[ ${corever} == 2012* ]]; then + echo -n "recreating all formats..." + usr/bin/fmtutil-sys --all 1>/dev/null + echo " done." + echo " (logs are under /var/lib/texmf/web2c/<engine>/<formatname>.log)" + else + echo "WARNING: not recreating formats since texlive-core has version '$corever'" + fi [[ -x usr/bin/install-info ]] || return 0 for file in "${filelist[@]}"; do install-info "$infodir/$file.gz" "$infodir/dir" 2> /dev/null diff --git a/libre/tp_smapi-libre/PKGBUILD b/libre/tp_smapi-libre/PKGBUILD new file mode 100644 index 000000000..be2b8de26 --- /dev/null +++ b/libre/tp_smapi-libre/PKGBUILD @@ -0,0 +1,63 @@ +# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de> +# Contributor: xduugu +# Contributor: nh2 +# Contributor: Steven Davidovitz <steviedizzle ð gmail đ com> +# Contributor: Nick B <Shirakawasuna ð gmail đ com> +# Contributor: Christof Musik <christof ð senfdax đ de> +# Contributor: Stefan Rupp <archlinux ð stefanrupp đ de> +# Contributor: Ignas Anikevicius <anikevicius ð gmail đ com> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> + +_pkgname=tp_smapi +pkgname=tp_smapi-libre +pkgver=0.41 +pkgrel=5 +pkgdesc="Modules for ThinkPad's SMAPI functionality" +arch=('i686' 'x86_64') +url='https://github.com/evgeni/tp_smapi' +license=('GPL') +depends=('linux-libre>=3.5' 'linux-libre<3.6') +makedepends=('linux-libre-headers>=3.5' 'linux-libre-headers<3.6') +replaces=("${_pkgname}") +conflicts=("${_pkgname}") +provides=("${_pkgname}=${pkgver}") +install="${_pkgname}.install" +source=("https://github.com/downloads/evgeni/${_pkgname}/${_pkgname}-${pkgver}.tar.gz") +md5sums=('63c683415c764568f6bf17c7eabe4752') + +build() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + _kernver=${_kernver:-$(uname -r)} + _extramodules=$(readlink -f "/usr/lib/modules/${_kernver}/extramodules" || true) + _kernver=$(< "${_extramodules}/version") + + sed -ri -e "s/^(KVER\s*:=).*$/\1 ${_kernver}/" \ + -e "s#^(KBASE\s*:=).*\$#\1 ${_extramodules%/*}/${_kernver}#" Makefile + + make HDAPS=1 +} + +package() { + _kernver=${_kernver:-$(uname -r)} + _extramodules=$(readlink -f "/usr/lib/modules/${_kernver}/extramodules" || true) + _kernver=$(< "${_extramodules}/version") + + make -C "${_extramodules%/*}/${_kernver}/build" \ + INSTALL_MOD_PATH="${pkgdir}/${_extramodules%%/lib/*}" \ + M="${srcdir}/${_pkgname}-${pkgver}" modules_install + + cd "${pkgdir}/${_extramodules%/*}" + mv "${_kernver}/extra" "${_extramodules##*/}" + rmdir "${_kernver}" + + # compress kernel libre modules + find "${pkgdir}" -name "*.ko" -exec gzip -9 {} + + + # load module on startup + echo tp_smapi > "${srcdir}/${_pkgname}.conf" + install -Dm644 "${srcdir}/${_pkgname}.conf" "${pkgdir}/usr/lib/modules-load.d/${_pkgname}.conf" + + # update kernel libre version in install file + sed -ri "s#^(extramodules=).*\$#\1${_extramodules}#" "${startdir}/${_pkgname}.install" +} diff --git a/libre/tp_smapi-libre/tp_smapi.install b/libre/tp_smapi-libre/tp_smapi.install new file mode 100644 index 000000000..5fe1bab90 --- /dev/null +++ b/libre/tp_smapi-libre/tp_smapi.install @@ -0,0 +1,13 @@ +extramodules=/usr/lib/modules/extramodules-3.5-ARCH + +post_install() { + depmod -v $(< "$extramodules/version") &>/dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/libre/vhba-module-libre/60-vhba.rules b/libre/vhba-module-libre/60-vhba.rules new file mode 100644 index 000000000..e4de1dca7 --- /dev/null +++ b/libre/vhba-module-libre/60-vhba.rules @@ -0,0 +1,13 @@ +ACTION=="remove", GOTO="vhba_end" +KERNEL!="vhba_ctl", GOTO="vhba_end" + +NAME="vhba_ctl", MODE="0660", OWNER="root", GROUP="cdemu" + +TEST=="/sys/fs/cgroup/systemd", GOTO="vhba_uaccess" +TAG+="udev-acl" +GOTO="vhba_end" + +LABEL="vhba_uaccess" +TAG+="uaccess" + +LABEL="vhba_end" diff --git a/libre/vhba-module-libre/PKGBUILD b/libre/vhba-module-libre/PKGBUILD new file mode 100644 index 000000000..51c847e40 --- /dev/null +++ b/libre/vhba-module-libre/PKGBUILD @@ -0,0 +1,48 @@ +# $Id$ +# Maintainer: Ray Rashif <schiv@archlinux.org> +# Contributor: Mateusz Herych <heniekk@gmail.com> +# Contributor: Charles Lindsay <charles@chaoslizard.org> + +_pkgname=vhba-module +pkgname=vhba-module-libre +pkgver=20120422 +_extramodules=extramodules-3.5-LIBRE +pkgrel=8 +pkgdesc="Kernel libre module that emulates SCSI devices" +arch=('i686' 'x86_64') +url="http://cdemu.sourceforge.net/" +license=('GPL') +depends=('linux-libre>=3.5' 'linux-libre<3.6') +makedepends=('linux-libre-headers') +options=(!makeflags) +install=$_pkgname.install +replaces=('vhba-module') +conflicts=('vhba-module') +provides=("vhba-module=$pkgver") +source=("http://downloads.sourceforge.net/cdemu/$_pkgname-$pkgver.tar.bz2" + '60-vhba.rules') +md5sums=('d97372da1d270d1605742b2995fb6678' + 'b5e82d0160e7a181219b67c1794d5c27') + +build() { + cd "$srcdir/$_pkgname-$pkgver" + + _kernver="$(cat /usr/lib/modules/$_extramodules/version)" + + make KDIR=/usr/lib/modules/$_kernver/build +} + +package() { + cd "$srcdir/$_pkgname-$pkgver" + + install -Dm644 vhba.ko \ + "$pkgdir/usr/lib/modules/$_extramodules/vhba.ko" + + sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='$_extramodules'/" \ + "$startdir/vhba-module.install" + + install -Dm644 "$srcdir/60-vhba.rules" \ + "$pkgdir/usr/lib/udev/rules.d/60-vhba.rules" +} + +# vim:set ts=2 sw=2 et: diff --git a/libre/vhba-module-libre/vhba-module.install b/libre/vhba-module-libre/vhba-module.install new file mode 100644 index 000000000..b2a49a261 --- /dev/null +++ b/libre/vhba-module-libre/vhba-module.install @@ -0,0 +1,21 @@ +_updatemod() { + echo " > Updating module dependencies..." + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_install() { + post_upgrade +} + +post_upgrade() { + getent group cdemu &>/dev/null || groupadd -r cdemu + _updatemod +} + +post_remove() { + _updatemod + groupdel cdemu +} + +# vim:set ts=2 sw=2 et: diff --git a/libre/virtualbox-libre-modules-lts/60-vboxguest.rules b/libre/virtualbox-libre-modules-lts/60-vboxguest.rules new file mode 100644 index 000000000..6285f7249 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/60-vboxguest.rules @@ -0,0 +1,2 @@ +ACTION=="add", KERNEL=="vboxguest", SUBSYSTEM=="misc", OWNER="root", MODE="0600" +ACTION=="add", KERNEL=="vboxuser", SUBSYSTEM=="misc", OWNER="root", MODE="0666" diff --git a/libre/virtualbox-libre-modules-lts/LocalConfig.kmk b/libre/virtualbox-libre-modules-lts/LocalConfig.kmk new file mode 100644 index 000000000..af79f90cd --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/LocalConfig.kmk @@ -0,0 +1,19 @@ +VBOX_WITH_ADDITION_DRIVERS = +VBOX_WITH_INSTALLER = 1 +VBOX_WITH_LINUX_ADDITIONS = 1 +VBOX_WITH_X11_ADDITIONS = +VBOX_WITH_TESTCASES = +VBOX_WITH_TESTSUITE = +VBOX_WITH_ORIGIN := +VBOX_PATH_APP_PRIVATE_ARCH := /usr/lib/virtualbox +VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH) +VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH) +VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox +VBOX_PATH_APP_DOCS := /usr/share/virtualbox +VBOX_WITH_REGISTRATION_REQUEST = +VBOX_WITH_UPDATE_REQUEST = +VBOX_WITH_VNC := 1 +VBOX_BLD_PYTHON = python2 +VBOX_JAVA_HOME = /usr/lib/jvm/java-6-openjdk +VBOX_GCC_WERR = +VBOX_GCC_WARN = diff --git a/libre/virtualbox-libre-modules-lts/PKGBUILD b/libre/virtualbox-libre-modules-lts/PKGBUILD new file mode 100644 index 000000000..a3355d582 --- /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.22 +pkgrel=1 +arch=('i686' 'x86_64') +url='http://virtualbox.org' +license=('GPL') +makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl-libre' '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=('84c5beeead094ce52d098105897aadbb' + '4c88bd122677a35f68abd76eb01b378b' + 'ed1341881437455d9735875ddf455fbe' + '8538dba8686d7449cb481c9bae9d722a' + '545c925b46f2ac95e5f8ae407fad101a' + 'f6416f509c2e5460e4dc624e0a57f3c1' + 'bbfb59dd517c020a23701b480187a355' + 'efacfdb61918286ea9bc89866b8fd239' + '7c3eb09995e8bafeef414374e44ad4ce' + 'a49ed3ab6bd0fb084de0ab3dd97ae93e' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + 'a70022a468bd3e9daf01818d2d74ac3c' + '380eb2ab6cad3da198094585853c129c' + 'a60bb9a98abcc3c34156f9051d00df9a' + '3a908ef6952bcf987e63ef2fe4e98d24' + '02e87c39c353634cecacf98f1707fa15' + '0cf41a41e7a415d404d5584e047fd450' + '449cde3b58390284b59c5d663de3edc9' + 'c7951fe6888d939f3a7d0dafe477e82b' + '4da8eeb2ece7e475fc7a0d1003da26c6' + '5e4187af59726d71c5be48d0cd816c34' + 'a9e4724b56ddf99bb2e9a8fab8ad43ba' + '1e47d90affabfbf6dbb07d9d42742d6a') + +_extramodules=extramodules-3.0-LIBRE-LTS + +build() { + _kernver="$(cat /usr/lib/modules/${_extramodules}/version)" + export KERN_DIR=/usr/lib/modules/${_kernver}/build/ + export KERN_INCL=/usr/src/linux-${_kernver}/include/ + + 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 libre 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-lts=$pkgver" 'virtualbox-libre-parabola-modules') + + 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 libre 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-lts=$pkgver" 'virtualbox-libre-modules') + + 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..47857e05d --- /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.20.orig/src/VBox/Main/src-all/Global.cpp 2012-08-20 11:36:24.000000000 -0300 ++++ VirtualBox-4.1.20/src/VBox/Main/src-all/Global.cpp 2012-08-21 14:22:29.148190849 -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, ++ { "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_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, ++ { "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_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 12 * _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, 12 * _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-libre-modules-lts/virtualbox-libre-modules-lts.install b/libre/virtualbox-libre-modules-lts/virtualbox-libre-modules-lts.install new file mode 100644 index 000000000..5387563a6 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/virtualbox-libre-modules-lts.install @@ -0,0 +1,18 @@ +EXTRAMODULES='extramodules-3.0-LIBRE-LTS' + +post_install() { +/bin/cat << EOF +===> You must load vboxdrv module before starting VirtualBox: +===> # modprobe vboxdrv +EOF + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_upgrade() { + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) + echo 'In order to use the new version, reload all virtualbox modules manually.' +} + +post_remove() { + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} diff --git a/libre/virtualbox-libre-modules-lts/virtualbox-libre-parabola-modules-lts.install b/libre/virtualbox-libre-modules-lts/virtualbox-libre-parabola-modules-lts.install new file mode 100644 index 000000000..54a052390 --- /dev/null +++ b/libre/virtualbox-libre-modules-lts/virtualbox-libre-parabola-modules-lts.install @@ -0,0 +1,16 @@ +EXTRAMODULES='extramodules-3.0-LIBRE-LTS' + +post_install() { +cat << EOF +===> You may want to load vboxguest, vboxsf and vboxvideo +EOF + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_upgrade() { + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_remove() { + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} diff --git a/libre/virtualbox-libre-modules/.directory b/libre/virtualbox-libre-modules/.directory new file mode 100644 index 000000000..9f6471595 --- /dev/null +++ b/libre/virtualbox-libre-modules/.directory @@ -0,0 +1,3 @@ +[Dolphin] +Timestamp=2012,8,16,6,34,39 +Version=3 diff --git a/libre/virtualbox-libre-modules/60-vboxguest.rules b/libre/virtualbox-libre-modules/60-vboxguest.rules new file mode 100644 index 000000000..6285f7249 --- /dev/null +++ b/libre/virtualbox-libre-modules/60-vboxguest.rules @@ -0,0 +1,2 @@ +ACTION=="add", KERNEL=="vboxguest", SUBSYSTEM=="misc", OWNER="root", MODE="0600" +ACTION=="add", KERNEL=="vboxuser", SUBSYSTEM=="misc", OWNER="root", MODE="0666" diff --git a/libre/virtualbox-libre-modules/LocalConfig.kmk b/libre/virtualbox-libre-modules/LocalConfig.kmk new file mode 100644 index 000000000..af79f90cd --- /dev/null +++ b/libre/virtualbox-libre-modules/LocalConfig.kmk @@ -0,0 +1,19 @@ +VBOX_WITH_ADDITION_DRIVERS = +VBOX_WITH_INSTALLER = 1 +VBOX_WITH_LINUX_ADDITIONS = 1 +VBOX_WITH_X11_ADDITIONS = +VBOX_WITH_TESTCASES = +VBOX_WITH_TESTSUITE = +VBOX_WITH_ORIGIN := +VBOX_PATH_APP_PRIVATE_ARCH := /usr/lib/virtualbox +VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH) +VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH) +VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox +VBOX_PATH_APP_DOCS := /usr/share/virtualbox +VBOX_WITH_REGISTRATION_REQUEST = +VBOX_WITH_UPDATE_REQUEST = +VBOX_WITH_VNC := 1 +VBOX_BLD_PYTHON = python2 +VBOX_JAVA_HOME = /usr/lib/jvm/java-6-openjdk +VBOX_GCC_WERR = +VBOX_GCC_WARN = diff --git a/libre/virtualbox-libre-modules/PKGBUILD b/libre/virtualbox-libre-modules/PKGBUILD new file mode 100644 index 000000000..917a14f0c --- /dev/null +++ b/libre/virtualbox-libre-modules/PKGBUILD @@ -0,0 +1,161 @@ +# $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.22 +pkgrel=1 +arch=('i686' 'x86_64') +url='http://virtualbox.org' +license=('GPL') +makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libpng' 'libidl2' 'xalan-c' 'sdl-libre' '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=('84c5beeead094ce52d098105897aadbb' + '4c88bd122677a35f68abd76eb01b378b' + 'ed1341881437455d9735875ddf455fbe' + '8538dba8686d7449cb481c9bae9d722a' + '545c925b46f2ac95e5f8ae407fad101a' + 'f6416f509c2e5460e4dc624e0a57f3c1' + 'bbfb59dd517c020a23701b480187a355' + 'efacfdb61918286ea9bc89866b8fd239' + '7c3eb09995e8bafeef414374e44ad4ce' + 'a49ed3ab6bd0fb084de0ab3dd97ae93e' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + 'a70022a468bd3e9daf01818d2d74ac3c' + '380eb2ab6cad3da198094585853c129c' + 'a60bb9a98abcc3c34156f9051d00df9a' + '3a908ef6952bcf987e63ef2fe4e98d24' + '02e87c39c353634cecacf98f1707fa15' + '0cf41a41e7a415d404d5584e047fd450' + '449cde3b58390284b59c5d663de3edc9' + 'c7951fe6888d939f3a7d0dafe477e82b' + '4da8eeb2ece7e475fc7a0d1003da26c6' + '5e4187af59726d71c5be48d0cd816c34' + 'a9e4724b56ddf99bb2e9a8fab8ad43ba' + '1e47d90affabfbf6dbb07d9d42742d6a') + +_extramodules=extramodules-3.5-LIBRE + + + + +build() { + _kernver="$(cat /usr/lib/modules/${_extramodules}/version || true)" + + export KERN_DIR=/usr/lib/modules/${_kernver}/build + export KERN_INCL=/usr/src/linux-${_kernver}/include/ + + 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 libre 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 libre 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..47857e05d --- /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.20.orig/src/VBox/Main/src-all/Global.cpp 2012-08-20 11:36:24.000000000 -0300 ++++ VirtualBox-4.1.20/src/VBox/Main/src-all/Global.cpp 2012-08-21 14:22:29.148190849 -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, ++ { "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_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, ++ { "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_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 12 * _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, 12 * _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-libre-modules/linux34.patch b/libre/virtualbox-libre-modules/linux34.patch new file mode 100644 index 000000000..05ec78557 --- /dev/null +++ b/libre/virtualbox-libre-modules/linux34.patch @@ -0,0 +1,12 @@ +diff -Nur VirtualBox-4.1.14.orig/Config.kmk VirtualBox-4.1.14/Config.kmk +--- VirtualBox-4.1.14.orig/Config.kmk 2012-04-26 16:56:21.000000000 +0000 ++++ VirtualBox-4.1.14/Config.kmk 2012-05-21 14:35:22.348398884 +0000 +@@ -2856,7 +2856,7 @@ + TEMPLATE_VBOXR0DRV_CFLAGS.amd64 = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow \ + -fno-reorder-blocks -ffreestanding -fno-asynchronous-unwind-tables -funit-at-a-time \ + -Wno-sign-compare -Wdeclaration-after-statement +-TEMPLATE_VBOXR0DRV_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wno-pointer-sign -ffreestanding -Wdeclaration-after-statement -Werror-implicit-function-declaration,$(TEMPLATE_VBOXR0DRV_CFLAGS) $(TEMPLATE_VBOXR0DRV_CFLAGS.$(KBUILD_TARGET_ARCH))) -fno-exceptions -fno-rtti ++TEMPLATE_VBOXR0DRV_CXXFLAGS = $(filter-out -Wstrict-prototypes -Wno-pointer-sign -ffreestanding -Wdeclaration-after-statement -Werror-implicit-function-declaration,$(TEMPLATE_VBOXR0DRV_CFLAGS) $(TEMPLATE_VBOXR0DRV_CFLAGS.$(KBUILD_TARGET_ARCH))) -fno-exceptions -fno-rtti -fpermissive + ifndef VBOX_LINUX_VERSION_2_4 + # 2.6 + TEMPLATE_VBOXR0DRV_SYSSUFF = .ko 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-libre-modules/virtualbox-libre-modules.install b/libre/virtualbox-libre-modules/virtualbox-libre-modules.install new file mode 100644 index 000000000..3f2a12a3f --- /dev/null +++ b/libre/virtualbox-libre-modules/virtualbox-libre-modules.install @@ -0,0 +1,19 @@ +post_install() { +/bin/cat << EOF +===> You must load vboxdrv module before starting VirtualBox: +===> # modprobe vboxdrv +EOF + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_upgrade() { + 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.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} diff --git a/libre/virtualbox-libre-modules/virtualbox-libre-parabola-modules.install b/libre/virtualbox-libre-modules/virtualbox-libre-parabola-modules.install new file mode 100644 index 000000000..c3419c991 --- /dev/null +++ b/libre/virtualbox-libre-modules/virtualbox-libre-parabola-modules.install @@ -0,0 +1,17 @@ +post_install() { +cat << EOF +===> You may want to load vboxguest, vboxsf and vboxvideo +EOF + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_upgrade() { + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) +} + +post_remove() { + 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..502696f2f --- /dev/null +++ b/libre/virtualbox-libre/.directory @@ -0,0 +1,4 @@ +[Dolphin] +Timestamp=2012,8,8,14,52,43 +Version=3 +ViewMode=2 diff --git a/libre/virtualbox-libre/LocalConfig.kmk b/libre/virtualbox-libre/LocalConfig.kmk index d42cd3e1f..6eca06d9b 100644 --- a/libre/virtualbox-libre/LocalConfig.kmk +++ b/libre/virtualbox-libre/LocalConfig.kmk @@ -10,6 +10,7 @@ VBOX_PATH_SHARED_LIBS := $(VBOX_PATH_APP_PRIVATE_ARCH) VBOX_WITH_RUNPATH := $(VBOX_PATH_APP_PRIVATE_ARCH) VBOX_PATH_APP_PRIVATE := /usr/share/virtualbox VBOX_PATH_APP_DOCS := /usr/share/virtualbox +VBOX_PATH_PACKAGE_DOCS := $(VBOX_PATH_APP_DOCS) VBOX_WITH_REGISTRATION_REQUEST = VBOX_WITH_UPDATE_REQUEST = VBOX_WITH_VNC := 1 diff --git a/libre/virtualbox-libre/PKGBUILD b/libre/virtualbox-libre/PKGBUILD index a6dfc053b..ceff911bc 100644 --- a/libre/virtualbox-libre/PKGBUILD +++ b/libre/virtualbox-libre/PKGBUILD @@ -1,38 +1,62 @@ # $Id$ +# Maintainer: Ionut Biru <ibiru@archlinux.org> # Maintainer (Parabola): Nicolas Reynolds <fauno@kiwwwi.com.ar> -# Maintainer (Parabola): Jorge López <jorginho@adinet.com.uy> -# 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): Jorge López <jorginho@lavabit.com> +# Maintainer (Parabola): André Silva <emulatorman@lavabit.com> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> pkgbase=virtualbox-libre -pkgname=('virtualbox-libre' 'virtualbox-parabola-additions' 'virtualbox-sdk' 'virtualbox-source') -pkgver=4.1.18 -pkgrel=1 -arch=('i686' 'x86_64' 'mips64el') +pkgname=('virtualbox-libre' + 'virtualbox-libre-parabola-additions' + 'virtualbox-libre-sdk' + 'virtualbox-libre-source' + 'virtualbox-libre-parabola-source') +pkgver=4.1.22 +pkgrel=1.3 +arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL' 'custom') makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libxcursor' 'qt' 'libidl2' 'sdl_ttf' 'alsa-lib' 'libpulse' 'libxtst' -'xalan-c' 'sdl' 'libxmu' 'curl' 'python2' 'linux-libre-headers' 'mesa' 'libxrandr' 'libxinerama' 'libvncserver' 'jdk7-openjdk' 'gsoap' 'vde2') +'xalan-c' 'sdl-libre' 'libxmu' 'curl' 'python2' 'linux-libre-headers' 'mesa' 'libxrandr' 'libxinerama' 'libvncserver' 'jdk7-openjdk' 'gsoap' 'vde2') #'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) + 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.4-LIBRE -_kernver="$(cat /lib/modules/${_extramodules}/version)" +_extramodules=extramodules-3.5-LIBRE +_kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true build() { - cd "$srcdir/VirtualBox-${pkgver}" + cd "VirtualBox-$pkgver" 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" + + ## 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" . @@ -45,36 +69,41 @@ build() { source ./env.sh kmk all sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "out/linux.$BUILD_PLATFORM_ARCH/release/bin/vboxshell.py" + # build rdesktop-vrdp (broken from LocalConfig.kmk) + cd src/VBox/RDP/client + cp "$srcdir/LocalConfig.kmk" . + kmk all } 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 non-free distros and others OS presets for the VM creation wizard; Oracle VM VirtualBox Extension Pack support removed)" + depends=('virtualbox-libre-modules' 'libxml2' 'libxcursor' 'libxinerama' 'sdl-libre' '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 libre source modules for non-stock kernels' 'net-tools: for host-only or bridged networking') - backup=('etc/vbox/vbox.cfg') + backup=('etc/vbox/vbox.cfg' 'etc/conf.d/vboxweb') 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} + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin" + install -dm755 "$pkgdir"/usr/{bin,lib/virtualbox/components,share/virtualbox/nls,share/virtualbox/rdesktop-vrdp-keymaps} #Binaries and Wrapper with Launchers install -m 0755 VBox.sh "$pkgdir/usr/bin/VBox" - for i in VBoxHeadless vboxheadless VBoxManage vboxmanage VBoxSDL vboxsdl VirtualBox virtualbox vboxwebsrv VBoxBalloonCtrl vboxballoonctrl; do + for i in VBoxHeadless VBoxManage VBoxSDL VirtualBox vboxwebsrv VBoxBalloonCtrl; do ln -sf VBox "$pkgdir/usr/bin/$i" + ln -sf VBox "$pkgdir/usr/bin/${i,,}" done install -m 0755 VBoxTunctl "$pkgdir/usr/bin" + install -m 0755 rdesktop-vrdp "$pkgdir/usr/bin" #components install -m 0755 components/* -t "$pkgdir/usr/lib/virtualbox/components" @@ -86,11 +115,14 @@ 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" + #rdesktop keymaps + install -m 0644 rdesktop-vrdp-keymaps/* "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps" + #useless scripts install -m 0755 VBoxCreateUSBNode.sh VBoxSysInfo.sh -t "$pkgdir/usr/share/virtualbox" @@ -120,38 +152,41 @@ 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() { - pkgdesc="VirtualBox kernel modules source" - depends=(gcc make) - provides=(virtualbox-modules) +package_virtualbox-libre-source() { + pkgdesc="VirtualBox kernel libre modules source" + depends=(dkms gcc make) + replaces=('virtualbox-source') + conflicts=('virtualbox-source') + provides=("virtualbox-source=$pkgver" 'virtualbox-libre-modules') optdepends=('linux-libre-headers' 'linux-libre-lts-headers') - install=virtualbox-source.install - - source "$srcdir/VirtualBox-${pkgver}/env.sh" - mkdir -p $pkgdir/usr/lib/virtualbox - - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin" + install=virtualbox-libre-source.install - #sources for modules - cp -r src ${pkgdir}/usr/lib/virtualbox - #install compilation script - install -D -m 755 "${srcdir}/vboxbuild" "${pkgdir}/usr/bin/vboxbuild" + install -dm755 "$pkgdir/var/lib/dkms/vboxhost/$pkgver" + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin" + 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" + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin" install -D -m 0755 vboxshell.py "$pkgdir/usr/lib/virtualbox/vboxshell.py" #python sdk @@ -162,24 +197,26 @@ 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') - replaces=('virtualbox-guest-additions' 'virtualbox-archlinux-additions') - conflicts=('virtualbox-guest-additions' 'virtualbox-archlinux-additions') + depends=('virtualbox-libre-parabola-modules' 'gcc-libs' 'libxmu' 'xorg-xrandr' 'libxfixes') + replaces=('virtualbox-archlinux-additions' 'virtualbox-guest-additions') + conflicts=('virtualbox-archlinux-additions' 'virtualbox-guest-additions') provides=("virtualbox-archlinux-additions=${pkgver}") + backup=('etc/conf.d/vboxservice') + install=virtualbox-libre-parabola-additions.install - source "$srcdir/VirtualBox-${pkgver}/env.sh" + source "VirtualBox-$pkgver/env.sh" - cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" install -d "$pkgdir"/{usr/bin,sbin} install -m755 VBoxClient VBoxControl VBoxService "$pkgdir/usr/bin" install -m755 mount.vboxsf "$pkgdir/sbin" - install -m755 -D "$srcdir"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \ + install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/98vboxadd-xclient \ "$pkgdir"/usr/bin/VBoxClient-all - install -m755 -D "$srcdir"/VirtualBox-${pkgver}/src/VBox/Additions/x11/Installer/vboxclient.desktop \ + install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/vboxclient.desktop \ "$pkgdir"/etc/xdg/autostart/vboxclient.desktop install -D vboxvideo_drv_112.so \ "$pkgdir/usr/lib/xorg/modules/drivers/vboxvideo.so" @@ -189,18 +226,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" } -md5sums=('38db0a87cba659b484af868b0c2bd3ac' + +package_virtualbox-libre-parabola-source() { + pkgdesc='VirtualBox Additions kernel libre modules source' + depends=(dkms gcc make) + replaces=('virtualbox-archlinux-source') + conflicts=('virtualbox-archlinux-source') + provides=("virtualbox-archlinux-source=${pkgver}" 'virtualbox-libre-parabola-modules') + optdepends=('linux-libre-headers' + 'linux-libre-lts-headers') + install=virtualbox-libre-parabola-source.install + + install -dm755 "$pkgdir/var/lib/dkms/vboxguest/$pkgver" + source "VirtualBox-$pkgver/env.sh" + cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions" + cp -r src "$pkgdir/var/lib/dkms/vboxguest/$pkgver/source" +} + +md5sums=('84c5beeead094ce52d098105897aadbb' '5f85710e0b8606de967716ded7b2d351' - '755ab0dd9bcacf2c00d2275b1ca69547' - 'a1ff1d1b4423556887e48a32978226a6' - '3c96faa76894c182c1bb56bb30d9a17e' + 'bf5d1eeeec20a042e8af34cd61a9e11b' + '58d6e5bb4b4c1c6f3f0b3daa6aaeed03' + '4ff559f2bea335d59c4012048983ca91' '97e193f050574dd272a38e5ee5ebe62b' '3c08ad30b89add47d3f45121200a5360' - '208cf5f842eb2e3a5b6dcfc59080d26c' - '3ac185709bfe688bb753c46e170d0546' - 'c159d683ba1947290fc2ad2c64194150') + '7d9823507206de9b8528a72af2f18d74' + '07c5f6d86c4b7839d719c8ee0c53653b' + '7e9483b1069a54f181546083ac7e5469' + 'c159d683ba1947290fc2ad2c64194150' + 'bc9efed88e0469cd7fc460d5a5cd7b4b' + '8538dba8686d7449cb481c9bae9d722a' + '545c925b46f2ac95e5f8ae407fad101a' + 'f6416f509c2e5460e4dc624e0a57f3c1' + 'bbfb59dd517c020a23701b480187a355' + 'efacfdb61918286ea9bc89866b8fd239' + '7c3eb09995e8bafeef414374e44ad4ce' + 'a49ed3ab6bd0fb084de0ab3dd97ae93e' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + '6b432b3305ed446125eef052c38355a6' + 'a70022a468bd3e9daf01818d2d74ac3c' + 'a70022a468bd3e9daf01818d2d74ac3c' + '380eb2ab6cad3da198094585853c129c' + 'a60bb9a98abcc3c34156f9051d00df9a' + '3a908ef6952bcf987e63ef2fe4e98d24' + '02e87c39c353634cecacf98f1707fa15' + '0cf41a41e7a415d404d5584e047fd450' + '449cde3b58390284b59c5d663de3edc9' + 'c7951fe6888d939f3a7d0dafe477e82b' + '4da8eeb2ece7e475fc7a0d1003da26c6' + '5e4187af59726d71c5be48d0cd816c34' + 'a9e4724b56ddf99bb2e9a8fab8ad43ba' + '1e47d90affabfbf6dbb07d9d42742d6a') diff --git a/libre/virtualbox-libre/free-distros.patch b/libre/virtualbox-libre/free-distros.patch new file mode 100644 index 000000000..47857e05d --- /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.20.orig/src/VBox/Main/src-all/Global.cpp 2012-08-20 11:36:24.000000000 -0300 ++++ VirtualBox-4.1.20/src/VBox/Main/src-all/Global.cpp 2012-08-21 14:22:29.148190849 -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, ++ { "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_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, ++ { "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_Oracle, "Oracle", +- VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE, +- 512, 12, 12 * _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, 12 * _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/vboxbuild b/libre/virtualbox-libre/vboxbuild index 4bc8e0c9d..27519950f 100644 --- a/libre/virtualbox-libre/vboxbuild +++ b/libre/virtualbox-libre/vboxbuild @@ -1,13 +1,23 @@ #!/bin/bash -. /etc/rc.conf -. /etc/rc.d/functions . /etc/vbox/vbox.cfg MODLIST=() LOG="/var/log/vbox-install.log" >| "$LOG" +stat_busy() { + printf '==> %s ... ' "$1" +} + +stat_done() { + echo 'done' +} + +stat_fail() { + echo 'failed' +} + if [[ $INSTALL_DIR ]]; then VBOXMANAGE=$INSTALL_DIR/VBoxManage BUILDVBOXDRV=$INSTALL_DIR/src/vboxdrv/build_in_tmp @@ -25,16 +35,16 @@ if [[ -f /proc/modules ]]; then fi if (( ${#MODLIST[*]} )); then - stat_busy "Unloading VirtualBox kernel modules" + stat_busy "Unloading VirtualBox kernel libre modules" modprobe -ar "${MODLIST[@]}" && stat_done || stat_fail fi -for kdir in /lib/modules/[2-3]*; do +for kdir in /usr/lib/modules/[2-3]*; do if [[ ! -d $kdir/kernel ]]; then # found a stale kernel mods=("$kdir/extramodules"{drv,netadp,netflt,pci}.ko*) if (( ${#mods[@]} )); then - stat_busy "Removing all old VirtualBox kernel modules" + stat_busy "Removing all old VirtualBox kernel libre modules" if rm -f "${mods[@]}" && rmdir -p --ignore-fail-on-non-empty "$kdir/extramodules" 2>/dev/null; then stat_done @@ -51,15 +61,15 @@ if (( ! $# )); then fi for kernver; do - export KERN_DIR=/lib/modules/$kernver/build - export MODULE_DIR=/lib/modules/$kernver/extramodules + export KERN_DIR=/usr/lib/modules/$kernver/build + export MODULE_DIR=/usr/lib/modules/$kernver/extramodules if [[ ! -d $KERN_DIR ]]; then - printf "error: \`%s' does not appear to be a valid kernel build directory.\n" \ + printf "error: \`%s' does not appear to be a valid kernel libre build directory.\n" \ "$KERN_DIR" continue fi - stat_busy "Recompiling VirtualBox kernel modules ($kernver)" + stat_busy "Recompiling VirtualBox kernel libre modules ($kernver)" if ! $BUILDVBOXDRV \ --save-module-symvers /tmp/vboxdrv-Module.symvers \ --no-print-directory install >> $LOG 2>&1; then @@ -80,6 +90,6 @@ for kernver; do done if (( ${#MODLIST[*]} )); then - stat_busy "Reloading VirtualBox kernel modules" + stat_busy "Reloading VirtualBox kernel libre modules" modprobe -a "${MODLIST[@]}" && stat_done || stat_fail fi diff --git a/libre/virtualbox-libre/vboxdrv-reference.patch b/libre/virtualbox-libre/vboxdrv-reference.patch index 682175798..9599a3a49 100644 --- a/libre/virtualbox-libre/vboxdrv-reference.patch +++ b/libre/virtualbox-libre/vboxdrv-reference.patch @@ -1,47 +1,91 @@ diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Frontends/VirtualBox/src/main.cpp VirtualBox-4.1.6_OSE/src/VBox/Frontends/VirtualBox/src/main.cpp --- VirtualBox-4.1.6_OSE.orig/src/VBox/Frontends/VirtualBox/src/main.cpp 2011-11-04 17:22:13.636083176 +0000 +++ VirtualBox-4.1.6_OSE/src/VBox/Frontends/VirtualBox/src/main.cpp 2011-11-04 17:48:58.915541368 +0000 -@@ -75,10 +75,9 @@ - "The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or " +@@ -67,38 +67,34 @@ + + /* XXX Temporarily. Don't rely on the user to hack the Makefile himself! */ + QString g_QStrHintLinuxNoMemory = QApplication::tr( +- "This error means that the kernel driver was either not able to " ++ "This error means that the kernel libre driver was either not able to " + "allocate enough memory or that some mapping operation failed." + ); + + QString g_QStrHintLinuxNoDriver = QApplication::tr( +- "The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or " ++ "The VirtualBox Linux-libre kernel driver (vboxdrv) is either not loaded or " "there is a permission problem with /dev/vboxdrv. Please reinstall the kernel " - "module by executing<br/><br/>" +- "module by executing<br/><br/>" - " <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>" - "as root. If it is available in your distribution, you should install the " - "DKMS package first. This package keeps track of Linux kernel changes and " - "recompiles the vboxdrv kernel module if necessary." -+ " <font color=blue>'pacman -S virtualbox-modules'</font><br/><br/>" -+ "as root. If you don't use our stock kernel, install virtualbox-source and" -+ "execute /usr/bin/vboxbuild ." ++ "libre module by executing<br/><br/>" ++ " <font color=blue>'pacman -S virtualbox-libre-modules'</font><br/><br/>" ++ "as root. If you don't use our stock kernel libre, install virtualbox-libre-source and " ++ "execute dkms install vboxhost/4.1.18 ." ); QString g_QStrHintOtherWrongDriverVersion = QApplication::tr( -@@ -90,11 +89,8 @@ - +- "The VirtualBox kernel modules do not match this version of " ++ "The VirtualBox kernel libre modules do not match this version of " + "VirtualBox. The installation of VirtualBox was apparently not " + "successful. Please try completely uninstalling and reinstalling " + "VirtualBox." + ); + QString g_QStrHintLinuxWrongDriverVersion = QApplication::tr( - "The VirtualBox kernel modules do not match this version of " +- "The VirtualBox kernel modules do not match this version of " - "VirtualBox. The installation of VirtualBox was apparently not " - "successful. Executing<br/><br/>" - " <font color=blue>'/etc/init.d/vboxdrv setup'</font><br/><br/>" - "may correct this. Make sure that you do not mix the " - "OSE version and the PUEL version of VirtualBox." -+ "VirtualBox. Reload the modules or if you don't use our stock kernel execute<br/><br/> " -+ " <font color=blue>'/usr/bin/vboxbuild'</font><br/><br/>" ++ "The VirtualBox kernel libre modules do not match this version of " ++ "VirtualBox. Reload the modules or if you don't use our stock kernel libre execute<br/><br/> " ++ " <font color=blue>'dkms install vboxhost/4.1.18'</font><br/><br/>" ); - + QString g_QStrHintOtherNoDriver = QApplication::tr( +- "Make sure the kernel module has been loaded successfully." ++ "Make sure the kernel libre module has been loaded successfully." + ); + + /* I hope this isn't (C), (TM) or (R) Microsoft support ;-) */ +@@ -590,7 +586,7 @@ + case VERR_VM_DRIVER_NOT_INSTALLED: + case VERR_VM_DRIVER_LOAD_ERROR: + msgText += QApplication::tr ( +- "<b>Cannot access the kernel driver!</b><br/><br/>"); ++ "<b>Cannot access the kernel libre driver!</b><br/><br/>"); + # ifdef RT_OS_LINUX + msgText += g_QStrHintLinuxNoDriver; + # else +@@ -603,7 +599,7 @@ + break; + # endif + case VERR_VM_DRIVER_NOT_ACCESSIBLE: +- msgText += QApplication::tr ("Kernel driver not accessible"); ++ msgText += QApplication::tr ("Kernel libre driver not accessible"); + break; + case VERR_VM_DRIVER_VERSION_MISMATCH: + # ifdef RT_OS_LINUX diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Installer/linux/VBox.sh VirtualBox-4.1.6_OSE/src/VBox/Installer/linux/VBox.sh --- VirtualBox-4.1.6_OSE.orig/src/VBox/Installer/linux/VBox.sh 2011-11-04 17:22:13.549415814 +0000 +++ VirtualBox-4.1.6_OSE/src/VBox/Installer/linux/VBox.sh 2011-11-04 17:56:50.735874087 +0000 -@@ -32,17 +32,18 @@ +@@ -30,19 +30,20 @@ + SHUTDOWN="true" + elif ! lsmod|grep -q vboxdrv; then cat << EOF - WARNING: The vboxdrv kernel module is not loaded. Either there is no module - available for the current kernel (`uname -r`) or it failed to +-WARNING: The vboxdrv kernel module is not loaded. Either there is no module +- available for the current kernel (`uname -r`) or it failed to - load. Please recompile the kernel module and install it by -+ load. Please reinstall the kernel module virtualbox-modules or -+ if you don't use our stock kernel compile the modules with ++WARNING: The vboxdrv kernel libre module is not loaded. Either there is no module ++ available for the current kernel libre (`uname -r`) or it failed to ++ load. Please reinstall the kernel libre module virtualbox-libre-modules or ++ if you don't use our stock kernel libre compile the modules with - sudo /etc/init.d/vboxdrv setup -+ sudo /usr/bin/vboxbuild ++ sudo dkms install vboxhost/4.1.18 You will not be able to start VMs until this problem is fixed. EOF @@ -55,3 +99,14 @@ diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Installer/linux/VBox.sh VirtualBox- and if that is not successful, try to re-install the package. +@@ -52,9 +53,8 @@ + + if [ -f /etc/vbox/module_not_compiled ]; then + cat << EOF +-WARNING: The compilation of the vboxdrv.ko kernel module failed during the ++WARNING: The compilation of the vboxdrv.ko kernel libre module failed during the + installation for some reason. Starting a VM will not be possible. +- Please consult the User Manual for build instructions. + EOF + fi +
\ No newline at end of file diff --git a/libre/virtualbox-libre/vboxservice.conf b/libre/virtualbox-libre/vboxservice.conf new file mode 100644 index 000000000..9d4ec629f --- /dev/null +++ b/libre/virtualbox-libre/vboxservice.conf @@ -0,0 +1,2 @@ +# VBoxService -h +VBOX_SERVICE_OPTION="" diff --git a/libre/virtualbox-libre/vboxservice.rc b/libre/virtualbox-libre/vboxservice.rc new file mode 100644 index 000000000..5a62d69a3 --- /dev/null +++ b/libre/virtualbox-libre/vboxservice.rc @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/${0##*/} + +name=VBoxService +PID=$(pidof -o %PPID $name) + +case "$1" in + start) + stat_busy 'Starting VirtualBox Guest Service' + [[ -z "$PID" ]] && ${name} $VBOX_SERVICE_OPTION &>/dev/null \ + && { add_daemon ${0##*/}; stat_done; } \ + || { stat_fail; exit 1; } + ;; + stop) + stat_busy 'Stopping VirtualBox Guest Service' + [[ -n "$PID" ]] && kill $PID &>/dev/null \ + && { rm_daemon ${0##*/}; stat_done; } \ + || { stat_fail; exit 1; } + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + status) + stat_busy 'Checking VirtualBox Guest Service status' + ck_status ${0##*/} + ;; + *) + echo "usage: ${0##*/} {start|stop|restart|status}" >&2 + exit 1 +esac + +exit 0 + +# vim:set ts=2 sw=2 ft=sh et: 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.conf b/libre/virtualbox-libre/vboxweb.conf index 49d82d828..c36f6a143 100644 --- a/libre/virtualbox-libre/vboxweb.conf +++ b/libre/virtualbox-libre/vboxweb.conf @@ -3,9 +3,9 @@ # WebService Variables #VBOXWEB_LOGFILE= -#$VBOXWEB_HOST= -#$VBOXWEB_PORT= -#$VBOXWEB_TIMEOUT= -#$VBOXWEB_CHECK_INTERVAL= -#$VBOXWEB_THREADS= -#$VBOXWEB_KEEPALIVE= +#VBOXWEB_HOST= +#VBOXWEB_PORT= +#VBOXWEB_TIMEOUT= +#VBOXWEB_CHECK_INTERVAL= +#VBOXWEB_THREADS= +#VBOXWEB_KEEPALIVE= 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..3bce203ef --- /dev/null +++ b/libre/virtualbox-libre/virtualbox-libre.install @@ -0,0 +1,57 @@ +#!/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() { + cat << EOF + virtualbox-libre is a libre version of VirtualBox without Oracle VM VirtualBox + Extension Pack support and includes a modified list with free distros presets + endorsed by the Free Software Foundation for the virtual machine creation wizard. + Non-free distros and others OS presets were removed. + + It could generate problems with virtual machines created on VirtualBox from + others distros or operating systems. + + To solve it, read https://parabolagnulinux.org/news/virtualbox-libre-new-version +EOF + + 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-libre version 4.1.6-1, kernel libre modules handling is done by virtualbox-libre-modules. +===> Use virtualbox-libre-source package if you don't use our stock linux-libre 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-modules-lts/PKGBUILD b/libre/virtualbox-modules-lts/PKGBUILD index 80caec248..2daecb990 100644 --- a/libre/virtualbox-modules-lts/PKGBUILD +++ b/libre/virtualbox-modules-lts/PKGBUILD @@ -1,13 +1,13 @@ # $Id$ # Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl> -# Maintainer (Parabola): Márcio Silva <coadde@adinet.com.uy> +# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com> # Maintainer (Parabola): André Silva <emulatorman@lavabit.com> -# Maintainer (Parabola): Jorge López <jorginho@adinet.com.uy> +# 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=1 +pkgrel=2 arch=('i686' 'x86_64' 'mips64el') url='http://virtualbox.org' license=('GPL') @@ -20,9 +20,9 @@ md5sums=('38db0a87cba659b484af868b0c2bd3ac' 'ed1341881437455d9735875ddf455fbe') _extramodules=extramodules-3.0-LIBRE-LTS -_kernver=$(pacman -Ss linux-libre-lts | awk 'NR==1{print $2}')-LIBRE-LTS +_kernver=$(pacman -Q linux-libre-lts | awk '{ printf "%s-LIBRE-LTS", $2; exit }') -export KERN_DIR=/lib/modules/${_kernver}/build +export KERN_DIR=/usr/lib/modules/${_kernver}/build export KERN_INCL=/usr/src/linux-${_kernver}/include/ build() { @@ -65,7 +65,7 @@ package_virtualbox-parabola-modules-lts(){ for module in vboxguest.ko vboxsf.ko vboxvideo.ko; do install -D -m644 ${module} \ - "$pkgdir/lib/modules/${_extramodules}/${module}" + "$pkgdir/usr/lib/modules/${_extramodules}/${module}" done install -D -m 0644 "$srcdir/60-vboxguest.rules" \ @@ -86,16 +86,16 @@ package_virtualbox-modules-lts(){ cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" install -D -m644 vboxdrv.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxdrv.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxdrv.ko" install -D -m644 vboxnetadp.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxnetadp.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetadp.ko" install -D -m644 vboxnetflt.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxnetflt.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetflt.ko" install -D -m644 vboxpci.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxpci.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxpci.ko" - find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; + find "${pkgdir}" -name '*.ko' -exec gzip -9 {} + } diff --git a/libre/virtualbox-modules-lts/virtualbox-modules-lts.install b/libre/virtualbox-modules-lts/virtualbox-modules-lts.install index 014fa0b88..5387563a6 100644 --- a/libre/virtualbox-modules-lts/virtualbox-modules-lts.install +++ b/libre/virtualbox-modules-lts/virtualbox-modules-lts.install @@ -5,14 +5,14 @@ post_install() { ===> You must load vboxdrv module before starting VirtualBox: ===> # modprobe vboxdrv EOF - depmod $(cat /lib/modules/$EXTRAMODULES/version) + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_upgrade() { - depmod $(cat /lib/modules/$EXTRAMODULES/version) + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) echo 'In order to use the new version, reload all virtualbox modules manually.' } post_remove() { - depmod $(cat /lib/modules/$EXTRAMODULES/version) + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } diff --git a/libre/virtualbox-modules-lts/virtualbox-parabola-modules-lts.install b/libre/virtualbox-modules-lts/virtualbox-parabola-modules-lts.install index 80d966a9d..54a052390 100644 --- a/libre/virtualbox-modules-lts/virtualbox-parabola-modules-lts.install +++ b/libre/virtualbox-modules-lts/virtualbox-parabola-modules-lts.install @@ -4,13 +4,13 @@ post_install() { cat << EOF ===> You may want to load vboxguest, vboxsf and vboxvideo EOF - depmod $(cat /lib/modules/$EXTRAMODULES/version) + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_upgrade() { - depmod $(cat /lib/modules/$EXTRAMODULES/version) + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_remove() { - depmod $(cat /lib/modules/$EXTRAMODULES/version) + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } diff --git a/libre/virtualbox-modules/PKGBUILD b/libre/virtualbox-modules/PKGBUILD index 2e747105a..5e0feec6d 100644 --- a/libre/virtualbox-modules/PKGBUILD +++ b/libre/virtualbox-modules/PKGBUILD @@ -1,12 +1,12 @@ # $Id$ #Maintainer: Ionut Biru <ibiru@archlinux.org> -#Maintainer (Parabola): Jorge López <jorginho@adinet.com.uy> +#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=1 +pkgrel=5 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL') @@ -18,10 +18,10 @@ md5sums=('38db0a87cba659b484af868b0c2bd3ac' '4c88bd122677a35f68abd76eb01b378b' 'ed1341881437455d9735875ddf455fbe') -_extramodules=extramodules-3.4-LIBRE -_kernver="$(cat /lib/modules/${_extramodules}/version || true)" +_extramodules=extramodules-3.5-LIBRE +_kernver="$(cat /usr/lib/modules/${_extramodules}/version || true)" -export KERN_DIR=/lib/modules/${_kernver}/build +export KERN_DIR=/usr/lib/modules/${_kernver}/build export KERN_INCL=/usr/src/linux-${_kernver}/include/ build() { @@ -53,7 +53,7 @@ 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') + depends=('linux-libre>=3.5' 'linux-libre<3.6') replaces=('virtualbox-archlinux-modules') conflicts=('virtualbox-archlinux-modules') provides=("virtualbox-archlinux-modules=$pkgver") @@ -79,7 +79,7 @@ package_virtualbox-modules(){ pkgdesc="Kernel modules for VirtualBox" license=('GPL') install=virtualbox-modules.install - depends=('linux-libre>=3.4' 'linux-libre<3.5') + depends=('linux-libre>=3.5' 'linux-libre<3.6') source "$srcdir/VirtualBox-${pkgver}/env.sh" @@ -87,18 +87,18 @@ package_virtualbox-modules(){ cd "$srcdir/VirtualBox-${pkgver}/out/linux.$BUILD_PLATFORM_ARCH/release/bin/src" install -D -m644 vboxdrv.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxdrv.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxdrv.ko" install -D -m644 vboxnetadp.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxnetadp.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetadp.ko" install -D -m644 vboxnetflt.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxnetflt.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxnetflt.ko" install -D -m644 vboxpci.ko \ - "$pkgdir/lib/modules/${_extramodules}/vboxpci.ko" + "$pkgdir/usr/lib/modules/${_extramodules}/vboxpci.ko" - find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \; + find "${pkgdir}" -name '*.ko' -exec gzip -9 {} + sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "$startdir/virtualbox-modules.install" } diff --git a/libre/virtualbox-modules/virtualbox-modules.install b/libre/virtualbox-modules/virtualbox-modules.install index 14242eaf4..3f2a12a3f 100644 --- a/libre/virtualbox-modules/virtualbox-modules.install +++ b/libre/virtualbox-modules/virtualbox-modules.install @@ -3,17 +3,17 @@ post_install() { ===> You must load vboxdrv module before starting VirtualBox: ===> # modprobe vboxdrv EOF - EXTRAMODULES='extramodules-3.4-LIBRE' - depmod $(cat /lib/modules/$EXTRAMODULES/version) + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_upgrade() { - EXTRAMODULES='extramodules-3.4-LIBRE' - depmod $(cat /lib/modules/$EXTRAMODULES/version) + 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' - depmod $(cat /lib/modules/$EXTRAMODULES/version) + 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-modules/virtualbox-parabola-modules.install index 0e101aedf..c3419c991 100644 --- a/libre/virtualbox-modules/virtualbox-parabola-modules.install +++ b/libre/virtualbox-modules/virtualbox-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' - depmod $(cat /lib/modules/$EXTRAMODULES/version) + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_upgrade() { - EXTRAMODULES='extramodules-3.4-LIBRE' - depmod $(cat /lib/modules/$EXTRAMODULES/version) + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } post_remove() { - EXTRAMODULES='extramodules-3.4-LIBRE' - depmod $(cat /lib/modules/$EXTRAMODULES/version) + EXTRAMODULES='extramodules-3.5-LIBRE' + depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) } 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..240c3d4e8 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,99 +26,131 @@ 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 f030756..23e37ff 100644
--- a/browser/components/migration/content/migration.xul
+++ b/browser/components/migration/content/migration.xul
-@@ -76,7 +76,7 @@
- #endif
- #endif
+@@ -42,7 +42,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 d7fec75..d531b83 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}
+ #ifdef HAS_IE_MIGRATOR
+ component {3d2532e3-4932-4774-b7ba-968f5899d3a4} IEProfileMigrator.js
+ contract @mozilla.org/profile/migrator;1?app=browser&type=ie {3d2532e3-4932-4774-b7ba-968f5899d3a4}
diff --git a/browser/components/migration/src/FirefoxProfileMigrator.js b/browser/components/migration/src/FirefoxProfileMigrator.js
-index 7b4a6e4..add5bc4 100644
+index a6598fe..8f83da8 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 0669aa8..19552e3 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 21cf405..f3c1a6b 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 @@
+@@ -17,8 +17,6 @@
<!ENTITY importFromSafari.accesskey "S">
<!ENTITY importFromChrome.label "Chrome">
<!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 ab82d85..915f6b8 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
+@@ -8,7 +8,6 @@ profileName_format=%S %S
sourceNameIE=Internet Explorer
sourceNameSafari=Safari
sourceNameChrome=Google Chrome
-sourceNameFirefox=Mozilla Firefox
importedBookmarksFolder=From %S
- importedSearchURLsFolder=Keyword Searches (From %S)
-@@ -21,27 +20,27 @@ importedSafariBookmarks=From Safari
+
+@@ -22,22 +21,22 @@ 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
@@ -160,36 +177,14 @@ index 495ed78..0272654 100644 32_ie=Favorites
32_safari=Bookmarks
- 32_chrome=Bookmarks
--32_firefox=Bookmarks
-+32_self=Bookmarks
-
+@@ -46,4 +45,4 @@ importedSafariReadingList=Reading List (From Safari)
64_ie=Other Data
64_safari=Other Data
-diff --git a/toolkit/content/aboutSupport.js b/toolkit/content/aboutSupport.js
-index c86d80c..ff1ccfe 100644
---- a/toolkit/content/aboutSupport.js
-+++ b/toolkit/content/aboutSupport.js
-@@ -608,13 +608,13 @@ function populateResetBox() {
- .getService(Ci.nsIToolkitProfileService);
- let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
-
--#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
--#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
--
- // Only show the reset box for the default profile if the self-migrator used for reset exists.
- try {
- if (!currentProfileDir.equals(profileService.selectedProfile.rootDir) ||
-- !("@mozilla.org/profile/migrator;1?app=" + MOZ_BUILD_APP + "&type=" + MOZ_APP_NAME in Cc))
-+ !("@mozilla.org/toolkit/profile-migrator;1" in Cc))
-+ return;
-+ let pm = Cc["@mozilla.org/toolkit/profile-migrator;1"].createInstance(Ci.nsIProfileMigrator);
-+ if (!("canMigrate" in pm) || !pm.canMigrate("self"))
- return;
- document.getElementById("reset-box").style.visibility = "visible";
- } catch (e) {
+ 64_chrome=Other Data
+-64_firefox=Bookmarks Backups
++64_self=Bookmarks Backups
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
-index 6f0d2d6..da7342b 100644
+index 697b217..b6e1709 100644
--- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn
@@ -38,7 +38,7 @@ toolkit.jar:
@@ -199,40 +194,55 @@ index 6f0d2d6..da7342b 100644 -* content/global/resetProfile.js (resetProfile.js)
+ content/global/resetProfile.js (resetProfile.js)
* content/global/resetProfile.xul (resetProfile.xul)
+ * content/global/resetProfileProgress.xul (resetProfileProgress.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 dcb4065..09c1146 100644
--- a/toolkit/content/resetProfile.js
+++ b/toolkit/content/resetProfile.js
-@@ -6,12 +6,10 @@ Components.utils.import("resource://gre/modules/Services.jsm");
+@@ -36,13 +36,13 @@ function resetSupported() {
+ getService(Ci.nsIToolkitProfileService);
+ let currentProfileDir = Services.dirsvc.get("ProfD", Ci.nsIFile);
- // 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;
-
- 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");
+-#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+-
+ // Reset is only supported for the default profile if the self-migrator used for reset exists.
+ try {
+- return currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
+- ("@mozilla.org/profile/migrator;1?app=" + MOZ_BUILD_APP + "&type=" + MOZ_APP_NAME in Cc);
++ if (currentProfileDir.equals(profileService.selectedProfile.rootDir) &&
++ "@mozilla.org/toolkit/profile-migrator;1" in Cc) {
++ let pm = Cc["@mozilla.org/toolkit/profile-migrator;1"].createInstance(Ci.nsIProfileMigrator);
++ return ("canMigrate" in pm) && pm.canMigrate("self");
++ }
+ } catch (e) {
+ // Catch exception when there is no selected profile.
+ Cu.reportError(e);
+@@ -53,9 +53,6 @@ function resetSupported() {
+ function getMigratedData() {
+ Components.utils.import("resource:///modules/MigrationUtils.jsm");
- // 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);
+-#expand const MOZ_BUILD_APP = "__MOZ_BUILD_APP__";
+-#expand const MOZ_APP_NAME = "__MOZ_APP_NAME__";
+-
+ // From migration.properties
+ const MIGRATED_TYPES = [
+ 4, // History and Bookmarks
+@@ -68,7 +65,7 @@ function getMigratedData() {
+ let dataTypes = [];
+ for (let itemID 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"));
- migratedItems.appendChild(checkbox);
+- let typeName = MigrationUtils.getLocalizedString(itemID + "_" + MOZ_APP_NAME);
++ let typeName = MigrationUtils.getLocalizedString(itemID + "_self");
+ dataTypes.push(typeName);
} 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
+index f35c227..7062886 100644
--- a/toolkit/profile/nsIProfileMigrator.idl
+++ b/toolkit/profile/nsIProfileMigrator.idl
-@@ -69,7 +69,7 @@ interface nsIProfileStartup : nsISupports
+@@ -37,7 +37,7 @@ interface nsIProfileStartup : nsISupports
* @client Toolkit (Startup code)
* @obtainable service, contractid("@mozilla.org/toolkit/profile-migrator;1")
*/
@@ -241,7 +251,7 @@ index e941336..5b264af 100644 interface nsIProfileMigrator : nsISupports
{
/**
-@@ -92,6 +92,14 @@ interface nsIProfileMigrator : nsISupports
+@@ -60,6 +60,14 @@ interface nsIProfileMigrator : nsISupports
* @note The startup code ignores COM exceptions thrown from this method.
*/
void migrate(in nsIProfileStartup aStartup, in ACString aKey);
@@ -257,15 +267,15 @@ index e941336..5b264af 100644 %{C++
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 32eef5c..dbe1580 100644
+index e5d3042..6de3390 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);
+@@ -3650,7 +3650,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);
+ }
diff --git a/libre/xulrunner-libre/PKGBUILD b/libre/xulrunner-libre/PKGBUILD index 001eb5f48..c4e72cfea 100644 --- a/libre/xulrunner-libre/PKGBUILD +++ b/libre/xulrunner-libre/PKGBUILD @@ -4,9 +4,9 @@ # 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 +_debver=15.0 _debrel=1 _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=('aa5a7f08f55a2b02a71c86f30ef75a25' + 'b93090724434e3801375730744e79950' 'f2f4f4a573f549e8b494e33b3ad226bc' '27271ce647a83906ef7a24605e840d61' - '41ce105f0c1877fe22e0c0ec45e09565') + 'c52fac65c1e06290a5108b75c31ace79') -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/your-freedom/your-freedom.install b/libre/your-freedom/your-freedom.install index 50988f587..0786adabf 100644 --- a/libre/your-freedom/your-freedom.install +++ b/libre/your-freedom/your-freedom.install @@ -19,7 +19,7 @@ pre_install() { * Etc. Please report back to the Parabola Project on the usual channels: - * https://bugs.parabolagnulinux.org + * https://labs.parabola.nu * irc://freenode.net/#parabola * mailto:dev@list.parabolagnulinux.org EOM |