# ChangeLog for Gentoo/x86 profile directory
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/profiles/arch/x86/ChangeLog,v 1.151 2013/11/19 10:15:42 radhermit Exp $

  19 Nov 2013; Tim Harder <radhermit@gentoo.org> package.use.mask:
  Unmask racket USE flag for app-editors/(g)vim.

  08 Sep 2013; Christoph Junghans <ottxor@gentoo.org> package.use.mask:
  masked sci-libs/fftw[quad]

  01 Sep 2013; Jeff Horelick <jdhore@gentoo.org> package.use.mask:
  unmask sid for >=media-plugins/audacious-plugins-3.4

  24 Aug 2013; Markus Meier <maekke@gentoo.org> package.mask:
  remove texlive-2013 mask, bug #475124

  22 Aug 2013; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org> use.mask:
  Drop obsolete opencl unmask.

  13 Aug 2013; Tim Harder <radhermit@gentoo.org> package.use.mask:
  Unmask luajit USE flag for app-editors/(g)vim.

  11 Aug 2013; Alexis Ballier <aballier@gentoo.org> package.mask:
  move texlive mask from global to arch profiles, bug #475124

  09 Jun 2013; Ulrich Müller <ulm@gentoo.org> package.use.mask:
  Remove mask for media-libs/realcodecs. Package has been removed.

  08 Jun 2013; Sergey Popov <pinkbyte@gentoo.org> package.use.mask:
  Move mask for app-leechcraft/leechcraft-meta[unstable] to base profile

  19 May 2013; Justin Lecher <jlec@gentoo.org> package.use.mask:
  Add missing use unmask, #469530

  04 May 2013; Michał Górny <mgorny@gentoo.org> package.use.mask:
  Remove USE=systemd from package.use.mask since the flag is (un)masked
  globally now.

  04 May 2013; Michał Górny <mgorny@gentoo.org> use.mask:
  Mask systemd flag globally, unmask on arches on which systemd is keyworded.

  07 Mar 2013; Tim Harder <radhermit@gentoo.org> use.mask:
  Unmask jython2_7 for PYTHON_TARGETS.

  03 Mar 2013; Michał Górny <mgorny@gentoo.org> use.mask:
  Fix abi_x86_32 unmask.

  21 Feb 2013; Justin Lecher <jlec@gentoo.org> package.use.mask:
  cuda only works on x86 and amd64

  21 Feb 2013; Diego E. Pettenò <flameeyes@gentoo.org> use.mask:
  Fix error in masking.

  16 Feb 2013; Agostino Sarubbo <ago@gentoo.org> package.use.mask:
  mask net-misc/leechcraft-full[unstable] because requires packages not ready
  for the stabilization

  12 Feb 2013; Christoph Junghans <ottxor@gentoo.org> use.mask:
  sse41 -> sse4_1 (bug #456886)

  07 Feb 2013; Matt Turner <mattst88@gentoo.org> use.mask:
  Drop sse5 USE flag.

  01 Feb 2013; Michał Górny <mgorny@gentoo.org> use.force, use.mask:
  Set ABI_X86 flags for amd64 & x86 up.

  25 Jan 2013; Christoph Junghans <ottxor@gentoo.org> use.mask:
  unmask missing amd64/x86 instruction sets

  20 Jan 2013; Michał Górny <mgorny@gentoo.org> use.mask:
  Remove the pypy unmask for old profiles. It is unmasked in the new EAPI=5
  profiles now.

  18 Jan 2013; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Don't unmask USE="clvm" here because it's not masked in base profile thus
  making this entry pointless.

  02 Jan 2013; Mike Gilbert <floppym@gentoo.org> use.mask:
  Mask pypy-1.8 for removal.

  02 Jan 2013; Mike Gilbert <floppym@gentoo.org> use.mask:
  Unmask pypy targets.

  30 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Unmask sys-kernel/dracut[dracut_modules_systemd] (masked in base).

  30 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Unmask sys-kernel/dracut[dracut_modules_biosdevname] (masked in base).

  30 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Unmask zeitgeist-datasources[chromium,tomboy] (masked in base).

  27 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Add epiphany[jit] to webkit-gtk[jit] unmask.

  26 Dec 2012; Christoph Junghans <ottxor@gentoo.org> package.use.mask:
  unmasked openmm/mkl for sci-chemistry/gromacs

  19 Dec 2012; Sergey Popov <pinkbyte@gentoo.org> package.mask,
  package.use.mask, xbox/package.mask:
  Clean up some deprecated atoms, wrt bug #444181

  09 Dec 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask,
  use.mask:
  dev-lang/orc is used in many packages, so move orc from package.use.mask to
  use.mask

  30 Nov 2012; Christoph Junghans <ottxor@gentoo.org> package.use.mask:
  unmasked cuda for sci-chemistry/gromacs

  26 Nov 2012; Anthony G. Basile <blueness@gentoo.org> package.use.mask:
  No need to unmask net-misc/tor[nat-pmp,upnp] on x86

  24 Nov 2012; Mike Gilbert <floppym@gentoo.org> use.mask:
  Unmask python_single_target_jython2_5

  12 Nov 2012; Mike Gilbert <floppym@gentoo.org> make.defaults:
  Move PYTHON_TARGETS=python3_2 from arch profiles to base.

  05 Nov 2012; Sergei Trofimovich <slyfox@gentoo.org> package.use:
  Fixed typo qemu_softmmu_target{,s}_.

  04 Nov 2012; Diego E. Pettenò <flameeyes@gentoo.org> package.use.mask:
  Unmask dane USE flag for net-libs/gnutls.

  29 Oct 2012; Doug Goldstein <cardoe@gentoo.org> +package.use:
  Add package.use so we can enable the native arch as the default qemu target
  for bug #437788

  07 Oct 2012; Samuli Suominen <ssuominen@gentoo.org> package.use.mask:
  Restore USE="systemd" mask to sys-auth/polkit for stabilization.

  15 Sep 2012; Johannes Huber <johu@gentoo.org> package.use.mask:
  Masked media-libs/phonon[zeitgeist] for stabilization as the use flag pulls a
  dep tree of hell.

  31 Jul 2012; Ralph Sennhauser <sera@gentoo.org> use.mask:
  Unmask python_targets_jython2_5 as it's available on x86.

  16 Jul 2012; Anthony G. Basile <blueness@gentoo.org> package.use.mask:
  Mask net-libs/cyassl[sha512] on x86

  04 Jul 2012; Samuli Suominen <ssuominen@gentoo.org> package.use.mask:
  Remove references to net-libs/xulrunner and www-client/icecat wrt #424617

  14 Jun 2012; Davide Pesavento <pesa@gentoo.org> package.use.mask:
  Consolidate USE=jit masking/unmasking for qt-script and qt-webkit.

  25 May 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Remove webkit-gtk's USE mask, the flags are now masked in specific arches.

  24 May 2012; Arun Raghavan <ford_prefect@gentoo.org> package.use.mask:
  For PulseAudio, mask xen USE flag by default, unmask on x86/amd64 where it is
  supported.

  15 May 2012; Mike Gilbert <floppym@gentoo.org> make.defaults:
  Default PYTHON_TARGETS should include python-3 for arches where it is stable.
  See bug 415575.

  13 Apr 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Mask webkit-gtk[geoloc] in base and unmask on arches where app-misc/geoclue
  and app-accessibility/at-spi2-core are available.

  13 Apr 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Consolidate USE=systemd mask, and add gnome-system-monitor.

  13 Apr 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Consolidate USE=systemd mask, and add gnome-system-monitor.

  12 Apr 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Temporary mask-in-base, unmask-in-arch for dev-python/mako keywording for
  gobject-introspection[doctool], bug #411761.

  11 Apr 2012; Michał Górny <mgorny@gentoo.org> package.use.mask:
  Unmask USE=jit on libzpaq for x86/amd64.

  28 Mar 2012; Arun Raghavan <ford_prefect@gentoo.org> package.use.mask:
  webrtc-audio-processing is only supported on x86/amd64. Possibly arm can be
  added.

  27 Mar 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Allow networkmanager[systemd] on x86.

  05 Mar 2012; Joerg Bornkessel <hd_brummy@gentoo.org> use.mask:
  dxr3 unmask, works with v4l2, #350211

  28 Feb 2012; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Unmask USE="vidix" from base/use.mask.

  27 Feb 2012; Bernard Cafarelli <voyageur@gentoo.org> package.use.mask:
  Allow gnustep-make[libobjc2] on amd64

  08 Feb 2012; Bernard Cafarelli <voyageur@gentoo.org> package.use.mask:
  Drop arch-speficic mask on gnustep-base/gnustep-make[libobjc2]

  26 Jan 2012; Thomas Kahle <tomka@gentoo.org> package.use.mask:
  unmask fprint for gdm-3 per bug 390345

  17 Jan 2012; Doug Goldstein <cardoe@gentoo.org> package.use.mask:
  Mask the spice USE flag on app-emulation/qemu-kvm since the SPICE server
  isn't supported on 32 bit platforms.

  09 Jan 2012; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Unmask USE="jit" for webkit-gtk (bug #396313).

  06 Dec 2011; Samuli Suominen <ssuominen@gentoo.org> package.use.mask:
  Unmask USE="pic" for media-video/transcode.

  06 Dec 2011; Samuli Suominen <ssuominen@gentoo.org> package.use.mask:
  Unmask USE="nuv" for media-video/transcode as a x86 only feature.

  29 Nov 2011; Davide Pesavento <pesa@gentoo.org> package.use.mask:
  Unmask USE="jit" for qt-webkit.

  25 Nov 2011; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Mask USE flags on gnome-3.2 packages due to missing keywords on deps; bug
  #390345

  25 Nov 2011; Samuli Suominen <ssuominen@gentoo.org> package.use.mask:
  Unmask USE="suid" for www-client/links which is required by USE="svga"

  21 Oct 2011; Kacper Kowalik <xarthisius@gentoo.org> package.use.mask:
  Drop hearbeat mask wrt #387685 by Marcin Mirosław <bug@mejor.pl>

  21 Oct 2011; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Undo poorly thought out masking of USE="colord packagekit" on gtk+; need to
  get it keyworded properly (bug #387959)

  19 Oct 2011; Alexandre Rostovtsev <tetromino@gentoo.org> package.use.mask:
  Unmask USE="colord" and "packagekit" for x11-libs/gtk+.

  16 Oct 2011; Samuli Suominen <ssuominen@gentoo.org> package.use.mask:
  Unmask USE="bluray" for gnome-base/gvfs.

  03 Oct 2011; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Mask USE="dxr3" again wrt #350211.

  27 Sep 2011; Nirbheek Chauhan <nirbheek@gentoo.org> package.use.mask:
  Mask dev-libs/glib[systemtap] and unmask for amd64/x86, bug 384647

  22 Jul 2011; Anthony G. Basile <blueness@gentoo.org> package.use.mask:
  Unmask USE="nat-pmp" and "upnp" here.

  11 Jul 2011; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Unmask USE="opencl" here.

  11 Jul 2011; Robin H. Johnson <robbat2@gentoo.org> package.use.mask:
  unmask parse-clocks on x86/amd46 for ntp due to pps-tools.

  08 Jul 2011; Samuli Suominen <ssuominen@gentoo.org> profile.bashrc:
  Convert "hasq" to "has" and "useq" to "use".

  03 Jul 2011; Alexey Shvetsov <alexxy@gentoo.org> package.use.mask:
  unmask maui use flag for torque

  01 Jul 2011; Alexey Shvetsov <alexxy@gentoo.org> use.mask:
  use unmask infiniband on x86

  07 Jun 2011; Bernard Cafarelli <voyageur@gentoo.org> package.use.mask:
  Allow libobjc2 USE-flag on gnustep-base/gnustep-make

  29 May 2011; Christian Faulhammer <fauli@gentoo.org> package.use.mask:
  Lift mask for spice USE flag on app-emulation/qemu-kvm, everything is now
  keyworded

  27 May 2011; Doug Goldstein <cardoe@gentoo.org> package.use.mask:
  Mask spice USE flag for app-emulation/qemu-kvm as the necessary
  depends are masked. bug #368961

  09 May 2011; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  use.mask:
  Remove video_cards_nouveau unmask, bug #364027.

  30 Apr 2011; Ulrich Mueller <ulm@gentoo.org> -xbox/virtuals:
  Remove old-style virtual/linux-sources, bug 118442.

  28 Apr 2011; Andrey Grozin <grozin@gentoo.org> package.use.mask:
  Unmask cmucl USE flag on sci-mathematics/fricas

  12 Apr 2011; Mart Raudsepp <leio@gentoo.org> package.use.mask:
  Unmask orc USE flag on gst-plugins-bad

  10 Apr 2011; Ulrich Mueller <ulm@gentoo.org> -virtuals, xbox/virtuals:
  Remove old-style virtual/bootloader, bug 359971.

  31 Mar 2011; Tomáš Chvátal <scarabeus@gentoo.org> package.use.mask:
  snort with prelude useflag is stable

  30 Mar 2011; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  use.mask:
  Unmask video_cards_qxl

  24 Mar 2011; Jim Ramsay <lack@gentoo.org> package.use.mask:
  Bug 360235: Clean up USE mask for www-plugins/adobe-flash

  20 Mar 2011; Mart Raudsepp <leio@gentoo.org> package.use.mask:
  Unmask orc USE flag on gst-plugins-good

  26 Feb 2011; Thomas Kahle <tomka@gentoo.org> package.use.mask:
  libprelude can't go stable at this point, snort can.

  22 Feb 2011; Kacper Kowalik <xarthisius@gentoo.org> package.use.mask:
  Mask pacemaker-gui[heartbeat] since >=heartbeat-3.0 is still masked

  13 Feb 2011; Tim Harder <radhermit@gentoo.org> package.use.mask:
  Unmask bluray USE flag on mplayer

  30 Jan 2011; Arun Raghavan <ford_prefect@gentoo.org> package.use.mask:
  Unmask orc USE flag on gst-plugins-ffmpeg

  27 Dec 2010; Mart Raudsepp <leio@gentoo.org> package.use.mask:
  Add gst-plugins-a52dec to the orc package.use.mask unmask set

  28 Nov 2010; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  package.use.mask:
  Unmask mesa's llvm flag

  18 Nov 2010; Arun Raghavan <ford_prefect@gentoo.org> use.mask:
  Orc optimisations work fine on x86

  10 Nov 2010; Dane Smith <c1pher@gentoo.org> package.use.mask:
  Unmask valgrind use flag for net-libs/gnutls on x86.

  17 Sep 2010; Andrey Grozin <grozin@gentoo.org> package.use.mask:
  Unmasking the USE flag clozurecl for maxima (formerly it was openmcl)

  07 Sep 2010; Mike Frysinger <vapier@gentoo.org> use.mask:
  Mask USE=win64 on 32bit profiles.

  23 Aug 2010; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  make.defaults:
  Add VIDEO_CARDS="nouveau" to make.defaults

  12 Aug 2010; Jim Ramsay <lack@gentoo.org> package.use.mask:
  Updating USE masks for www-plugin/adobe-flash: 32bit and 64bit for 10.0
  and nspluginwrapper for 10.1

  25 Jul 2010; Nirbheek Chauhan <nirbheek@gentoo.org> package.use.mask:
  Fix atom for pkgmove from www-client/mozilla-firefox -> www-client/firefox

  01 Jul 2010; Kacper Kowalik <xarthisius@gentoo.org> package.use.mask:
  Correct masking sys-cluster/pacemaker[heartbeat]

  01 Jul 2010; Kacper Kowalik <xarthisius@gentoo.org> package.use.mask:
  Masking sys-cluster/pacemaker[heartbeat]

  26 Jun 2010; Nirbheek Chauhan <nirbheek@gentoo.org> package.use.mask:
  Forgot to unmask icecat too

  26 Jun 2010; Nirbheek Chauhan <nirbheek@gentoo.org> package.use.mask:
  Unmask USE=ipc for firefox/xulrunner on x86 due to bug 325185

  13 Jun 2010; Dror Levin <spatz@gentoo.org> use.mask:
  Remove vpx USE unmask.

  12 Jun 2010; Dror Levin <spatz@gentoo.org> use.mask:
  Unmask amd64/x86 only vpx for now.

  12 May 2010; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  package.use.mask:
  unmask dev-libs/udis86 test after adding patch to make yasm optional

  10 May 2010; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  package.use.mask:
  unmask dev-libs/udis86 test

  03 May 2010; Alex Legler <a3li@gentoo.org> use.mask:
  Unmask ruby_targets_ree18

  13 Apr 2010; Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
  package.use.mask:
  unmask video_cards_nouveau

  31 Mar 2010; Vlastimil Babka <caster@gentoo.org> package.use.mask:
  Stop unmasking nsplugin of sun-jdk and sun-jre-bin 1.5 due to security
  #306579.

  16 Mar 2010; Jim Ramsay <lack@gentoo.org> package.use.mask:
  Oops, got my binary backwards. Really masking this time

  16 Mar 2010; Jim Ramsay <lack@gentoo.org> package.use.mask:
  Mask USE='32bit 64bit' for www-plugins/adobe-flash (Bug #283328)

  07 Mar 2010; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Unmask x86_* flags sse3, sse4, sse4a, and sse5.

  20 Feb 2010; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Unmask sane_backends_qcam here; masked in base.

  14 Feb 2010; Samuli Suominen <ssuominen@gentoo.org> use.mask:
  Unmask SANE_BACKENDS="canon_pp hpsj5s mustek_pp" here.

  02 Feb 2010; Samuli Suominen <ssuominen@gentoo.org> -package.use.force:
  Remove unrequired skype mask (and now empty package.use.force file).

  08 Jan 2010; Samuli Suominen <ssuominen@gentoo.org> +package.use.force:
  Force USE="qt-static" enabled for net-im/skype wrt #295525.

  08 Jan 2010; Diego E. Pettenò <flameeyes@gentoo.org> use.mask:
  Unmask JRuby target.

  13 Dec 2009; Rémi Cardona <remi@gentoo.org> use.mask:
  drop "vermilion" from VIDEO_CARDS in all profiles

  13 Dec 2009; Rémi Cardona <remi@gentoo.org> make.defaults:
  drop "vga" from VIDEO_CARDS in all profiles

  23 Sep 2009; Jean-Noël Rivasseau <elvanor@gentoo.org> package.use.mask:
  X use flag only for amd64/x86, bug 285951.

  05 Sep 2009; Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>
  package.mask:
  Dropped the KDE-4.3 unmask from package.mask now that the mask has been
  dropped from base/package.mask.

  16 Aug 2009; Rémi Cardona <remi@gentoo.org> make.defaults:
  drop last traces of i810

  15 Aug 2009; Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>
  package.mask:
  Unmasked KDE-4.3.0 for x86 with the permission of Raúl Porcel (armin76).

  21 Jul 2009; Christian Faulhammer <fauli@gentoo.org> package.use.mask:
  remove spurious mask, see bug 278246

  24 May 2009; Vlastimil Babka <caster@gentoo.org> package.use.mask:
  Mask nsplugin of 1.4 JVM's. Bug #263810.

  20 Mar 2009; Raúl Porcel <armin76@gentoo.org> package.use.mask:
  Package.use.mask sse2 on pixman, bug #260287

  21 Jan 2009; Markus Meier <maekke@gentoo.org> package.mask:
  mask some unported x11-libs/qt-4.4* packages for a smooth upgrade wrt bug
  #248038

  18 Jan 2009; Markus Meier <maekke@gentoo.org> package.mask:
  mask this version for a smooth upgrade wrt bug #248038

  02 Dec 2008; Raúl Porcel <armin76@gentoo.org> package.use.mask:
  P.use.mask media-libs/realcodecs win32codecs USE-flag because repoman complains

  09 Nov 2008; Raúl Porcel <armin76@gentoo.org> package.use.mask:
  Fix masking of mplayer

  27 Oct 2008; Mike Frysinger <vapier@gentoo.org> use.mask:
  Unmask lilo.

  16 Aug 2008; Robert Buchholz <rbu@gentoo.org> package.use.mask:
  Unmask tls for kaa-base

  20 Jul 2008; Serkan Kaba <serkan@gentoo.org> package.use.mask:
  Add app-text/enchant:zemberek unmask.

  06 Jun 2008; Rémi Cardona <remi@gentoo.org> package.mask:
  pkgmove to gnome-base/gnome-control-center

  30 Apr 2008; Sébastien Fabbro <bicatali@gentoo.org> use.mask:
  Removed masking of icc and ifc flags (now only local flags). Removed
  inexistent icc-pgo flags

  21 Apr 2008; Santiago M. Mola <coldwind@gentoo.org> package.mask:
  Add ->=net-im/telepathy-mission-control-4.65 to Gnome 2.22 mask.

  10 Apr 2008; Donnie Berkholz <dberkholz@gentoo.org>; make.defaults:
  Make VIDEO_CARDS defaults a reasonable set instead of every imaginable
  card.

  10 Apr 2008; Donnie Berkholz <dberkholz@gentoo.org>; use.mask:
  changing around video_cards_via masking by unmasking only for available
  arches instead of masking on unavailable.

  03 Apr 2008; Mart Raudsepp <leio@gentoo.org> package.mask:
  Unmask GNOME-2.22 on x86

