diff --git a/app-admin/rex/Manifest b/app-admin/rex/Manifest
index 56e3795d24b19..1c64ccadb6042 100644
--- a/app-admin/rex/Manifest
+++ b/app-admin/rex/Manifest
@@ -1,3 +1,4 @@
DIST Rex-1.3.3.tar.gz 274725 SHA256 111e80515fc3c1846668aa4ff0731443a58f3e74d78063dfc61fea96ca49cde6 SHA512 b2331e400027568f59496ff52f0a19bd009f66fea2a5b80ed9055859f59f0057afa50f61934cccd5af434c6f60dfa99700bc3904127b822a5ae684cb8bb6c70c WHIRLPOOL c8285e50f0259060ead8e86b120b3a16d6a1f506dec8eead33ac5e8a0af8371083a73315cf859c99433a7b8c902cbd48f383326c6ce2b0c4d900681baf623a51
DIST Rex-1.4.0.tar.gz 289330 SHA256 b4f930044ea907aae67c18f347a33b55cd3da4efe5f5a5869db3c891d6c4e125 SHA512 d14489157860df1b32dd2b4af7ce8148a9693d66f59bc0ee228c7c4ff57f38f7b308212c18fc7c0aff7a585a76028a9de0a7a96f8eb58c2455d19bd6b2713eab WHIRLPOOL ee24b8c0770a94f84e6ae6ad5c3002f2e3be3a6e416121443c142477307674499fd631c0d72569aefcf81875365cd84fdd37666c9235c873b6adf5acb51eee3c
DIST Rex-1.4.1.tar.gz 317358 SHA256 6898add0c9ad8b30b1ea5f70730a53cf899e4fe7228e1f8d5006d6694cfe8eb2 SHA512 07e7d950326aaa60e05977f2acb2ac90f07efe0d56411ba202a4c60a890c37e984c6786383623ac67f8e36052cf8436e8430fd024dde282a7d2530425b420e8e WHIRLPOOL e67b3e73c8d1337f2b91104d80132b860fb49f045bca12c15d57651204dd23811248e196962fcda41afdfdc6a2ad1123dc5829d1fd04bd17879bea812b281a47
+DIST Rex-1.5.0.tar.gz 327424 SHA256 c042a0ed4920070d4508b6e7d2c36d28b3a5691938f2e0a0d7717977b44b82d0 SHA512 43a1e147e5d2dccdc641479f2bf5449b0051651d152823738caf946bb3ceecb444011c3273f0c70ca5feab737702f6cd609f5b211eec8261e1facd80c82b6c73 WHIRLPOOL eca2ecd1a0bd18355cf1dcf1b20df795bd25788acf10b800d2216fb78ecc87a63556dc1d40d0da0ff7487b2540e7c33efc14f324780d6d401d068762fa6921d0
diff --git a/app-admin/rex/metadata.xml b/app-admin/rex/metadata.xml
index 83a4ce6a1f0b3..074c06f812ccb 100644
--- a/app-admin/rex/metadata.xml
+++ b/app-admin/rex/metadata.xml
@@ -17,4 +17,343 @@
proxy-maint@gentoo.org
Proxy Maintainers
+
+ RexOps/rex
+ Rex
+ Rex
+ Rex::Args
+ Rex::Args::Integer
+ Rex::Args::Single
+ Rex::Args::String
+ Rex::Batch
+ Rex::Box
+ Rex::Box::Amazon
+ Rex::Box::Base
+ Rex::Box::KVM
+ Rex::Box::VBox
+ Rex::CLI
+ Rex::CMDB
+ Rex::CMDB::Base
+ Rex::CMDB::YAML
+ Rex::Cloud
+ Rex::Cloud::Amazon
+ Rex::Cloud::Base
+ Rex::Cloud::Jiffybox
+ Rex::Cloud::OpenStack
+ Rex::Commands
+ Rex::Commands::Augeas
+ Rex::Commands::Box
+ Rex::Commands::Cloud
+ Rex::Commands::Cron
+ Rex::Commands::DB
+ Rex::Commands::Download
+ Rex::Commands::File
+ Rex::Commands::Fs
+ Rex::Commands::Gather
+ Rex::Commands::Host
+ Rex::Commands::Inventory
+ Rex::Commands::Iptables
+ Rex::Commands::JobControl
+ Rex::Commands::Kernel
+ Rex::Commands::LVM
+ Rex::Commands::MD5
+ Rex::Commands::Mkfs
+ Rex::Commands::Network
+ Rex::Commands::Notify
+ Rex::Commands::Partition
+ Rex::Commands::Pkg
+ Rex::Commands::PkgConf
+ Rex::Commands::Process
+ Rex::Commands::Rsync
+ Rex::Commands::Run
+ Rex::Commands::SCM
+ Rex::Commands::Service
+ Rex::Commands::SimpleCheck
+ Rex::Commands::Sync
+ Rex::Commands::Sysctl
+ Rex::Commands::Tail
+ Rex::Commands::Upload
+ Rex::Commands::User
+ Rex::Commands::Virtualization
+ Rex::Config
+ Rex::Constants
+ Rex::Cron
+ Rex::Cron::Base
+ Rex::Cron::FreeBSD
+ Rex::Cron::Linux
+ Rex::Cron::SunOS
+ Rex::Exporter
+ Rex::FS::File
+ Rex::File::Parser::Data
+ Rex::File::Parser::Ini
+ Rex::Fork::Manager
+ Rex::Fork::Task
+ Rex::Group
+ Rex::Group::Entry::Server
+ Rex::Group::Lookup::Command
+ Rex::Group::Lookup::DBI
+ Rex::Group::Lookup::File
+ Rex::Group::Lookup::INI
+ Rex::Group::Lookup::XML
+ Rex::Group::Lookup::YAML
+ Rex::Hardware
+ Rex::Hardware::Host
+ Rex::Hardware::Kernel
+ Rex::Hardware::Memory
+ Rex::Hardware::Network
+ Rex::Hardware::Network::Darwin
+ Rex::Hardware::Network::FreeBSD
+ Rex::Hardware::Network::Linux
+ Rex::Hardware::Network::NetBSD
+ Rex::Hardware::Network::OpenBSD
+ Rex::Hardware::Network::Solaris
+ Rex::Hardware::Swap
+ Rex::Hardware::VirtInfo
+ Rex::Helper::Array
+ Rex::Helper::DBI
+ Rex::Helper::Encode
+ Rex::Helper::File::Spec
+ Rex::Helper::File::Stat
+ Rex::Helper::File::Stat::Unix
+ Rex::Helper::File::Stat::Win32
+ Rex::Helper::Hash
+ Rex::Helper::INI
+ Rex::Helper::IP
+ Rex::Helper::Misc
+ Rex::Helper::Path
+ Rex::Helper::Rexfile::ParamLookup
+ Rex::Helper::Run
+ Rex::Helper::SSH2
+ Rex::Helper::SSH2::Expect
+ Rex::Helper::System
+ Rex::Helper::URI
+ Rex::Helper::UserAgent
+ Rex::Hook
+ Rex::Interface::Cache
+ Rex::Interface::Cache::Base
+ Rex::Interface::Cache::YAML
+ Rex::Interface::Connection
+ Rex::Interface::Connection::Base
+ Rex::Interface::Connection::Fake
+ Rex::Interface::Connection::HTTP
+ Rex::Interface::Connection::HTTPS
+ Rex::Interface::Connection::Local
+ Rex::Interface::Connection::OpenSSH
+ Rex::Interface::Connection::SSH
+ Rex::Interface::Exec
+ Rex::Interface::Exec::Base
+ Rex::Interface::Exec::HTTP
+ Rex::Interface::Exec::IOReader
+ Rex::Interface::Exec::Local
+ Rex::Interface::Exec::OpenSSH
+ Rex::Interface::Exec::SSH
+ Rex::Interface::Exec::Sudo
+ Rex::Interface::Executor
+ Rex::Interface::Executor::Base
+ Rex::Interface::Executor::Default
+ Rex::Interface::File
+ Rex::Interface::File::Base
+ Rex::Interface::File::HTTP
+ Rex::Interface::File::Local
+ Rex::Interface::File::OpenSSH
+ Rex::Interface::File::SSH
+ Rex::Interface::File::Sudo
+ Rex::Interface::Fs
+ Rex::Interface::Fs::Base
+ Rex::Interface::Fs::HTTP
+ Rex::Interface::Fs::Local
+ Rex::Interface::Fs::OpenSSH
+ Rex::Interface::Fs::SSH
+ Rex::Interface::Fs::Sudo
+ Rex::Interface::Shell
+ Rex::Interface::Shell::Ash
+ Rex::Interface::Shell::Base
+ Rex::Interface::Shell::Bash
+ Rex::Interface::Shell::Csh
+ Rex::Interface::Shell::Default
+ Rex::Interface::Shell::Idrac
+ Rex::Interface::Shell::Ksh
+ Rex::Interface::Shell::Sh
+ Rex::Interface::Shell::Tcsh
+ Rex::Interface::Shell::Zsh
+ Rex::Inventory
+ Rex::Inventory::Bios
+ Rex::Inventory::DMIDecode
+ Rex::Inventory::DMIDecode::BaseBoard
+ Rex::Inventory::DMIDecode::Bios
+ Rex::Inventory::DMIDecode::CPU
+ Rex::Inventory::DMIDecode::Memory
+ Rex::Inventory::DMIDecode::MemoryArray
+ Rex::Inventory::DMIDecode::Section
+ Rex::Inventory::DMIDecode::SystemInformation
+ Rex::Inventory::HP::ACU
+ Rex::Inventory::Hal
+ Rex::Inventory::Hal::Object
+ Rex::Inventory::Hal::Object::Net
+ Rex::Inventory::Hal::Object::Storage
+ Rex::Inventory::Hal::Object::Volume
+ Rex::Inventory::Proc
+ Rex::Inventory::Proc::Cpuinfo
+ Rex::Inventory::SMBios
+ Rex::Inventory::SMBios::BaseBoard
+ Rex::Inventory::SMBios::Bios
+ Rex::Inventory::SMBios::CPU
+ Rex::Inventory::SMBios::Memory
+ Rex::Inventory::SMBios::MemoryArray
+ Rex::Inventory::SMBios::Section
+ Rex::Inventory::SMBios::SystemInformation
+ Rex::Logger
+ Rex::Notify
+ Rex::Output
+ Rex::Output::Base
+ Rex::Output::JUnit
+ Rex::Pkg
+ Rex::Pkg::ALT
+ Rex::Pkg::Arch
+ Rex::Pkg::Base
+ Rex::Pkg::Debian
+ Rex::Pkg::FreeBSD
+ Rex::Pkg::Gentoo
+ Rex::Pkg::Mageia
+ Rex::Pkg::NetBSD
+ Rex::Pkg::OpenBSD
+ Rex::Pkg::OpenWrt
+ Rex::Pkg::Redhat
+ Rex::Pkg::SuSE
+ Rex::Pkg::SunOS
+ Rex::Pkg::SunOS::OpenCSW
+ Rex::Pkg::SunOS::pkg
+ Rex::Pkg::Ubuntu
+ Rex::PkgConf
+ Rex::PkgConf::Base
+ Rex::PkgConf::Debian
+ Rex::Profiler
+ Rex::Report
+ Rex::Report::Base
+ Rex::Report::YAML
+ Rex::Require
+ Rex::Resource
+ Rex::Resource::Common
+ Rex::Resource::firewall
+ Rex::Resource::firewall::Provider::base
+ Rex::Resource::firewall::Provider::iptables
+ Rex::Resource::firewall::Provider::ufw
+ Rex::RunList
+ Rex::SCM::Git
+ Rex::SCM::Subversion
+ Rex::Service
+ Rex::Service::ALT
+ Rex::Service::ALT::systemd
+ Rex::Service::Arch::systemd
+ Rex::Service::Base
+ Rex::Service::Debian
+ Rex::Service::Debian::systemd
+ Rex::Service::FreeBSD
+ Rex::Service::Gentoo
+ Rex::Service::Gentoo::systemd
+ Rex::Service::Mageia
+ Rex::Service::Mageia::systemd
+ Rex::Service::NetBSD
+ Rex::Service::OpenBSD
+ Rex::Service::OpenWrt
+ Rex::Service::Redhat
+ Rex::Service::Redhat::systemd
+ Rex::Service::SuSE
+ Rex::Service::SuSE::systemd
+ Rex::Service::SunOS
+ Rex::Service::SunOS::svcadm
+ Rex::Service::Ubuntu
+ Rex::Shared::Var
+ Rex::Shared::Var::Array
+ Rex::Shared::Var::Common
+ Rex::Shared::Var::Hash
+ Rex::Shared::Var::Scalar
+ Rex::Sudo::File
+ Rex::Task
+ Rex::TaskList
+ Rex::TaskList::Base
+ Rex::TaskList::Parallel_ForkManager
+ Rex::Template
+ Rex::Template::NG
+ Rex::Test
+ Rex::Test::Base
+ Rex::Test::Base::has_content
+ Rex::Test::Base::has_cron
+ Rex::Test::Base::has_cron_env
+ Rex::Test::Base::has_dir
+ Rex::Test::Base::has_file
+ Rex::Test::Base::has_file_content
+ Rex::Test::Base::has_output
+ Rex::Test::Base::has_output_matching
+ Rex::Test::Base::has_package
+ Rex::Test::Base::has_service_running
+ Rex::Test::Base::has_service_stopped
+ Rex::Test::Base::has_stat
+ Rex::Transaction
+ Rex::User
+ Rex::User::Base
+ Rex::User::FreeBSD
+ Rex::User::Linux
+ Rex::User::NetBSD
+ Rex::User::OpenBSD
+ Rex::User::OpenWrt
+ Rex::User::SunOS
+ Rex::Value
+ Rex::Virtualization
+ Rex::Virtualization::Base
+ Rex::Virtualization::Docker
+ Rex::Virtualization::Docker::create
+ Rex::Virtualization::Docker::daemon
+ Rex::Virtualization::Docker::delete
+ Rex::Virtualization::Docker::destroy
+ Rex::Virtualization::Docker::info
+ Rex::Virtualization::Docker::list
+ Rex::Virtualization::Docker::reboot
+ Rex::Virtualization::Docker::shutdown
+ Rex::Virtualization::Docker::start
+ Rex::Virtualization::LibVirt
+ Rex::Virtualization::LibVirt::blklist
+ Rex::Virtualization::LibVirt::clone
+ Rex::Virtualization::LibVirt::create
+ Rex::Virtualization::LibVirt::delete
+ Rex::Virtualization::LibVirt::destroy
+ Rex::Virtualization::LibVirt::dumpxml
+ Rex::Virtualization::LibVirt::guestinfo
+ Rex::Virtualization::LibVirt::hypervisor
+ Rex::Virtualization::LibVirt::iflist
+ Rex::Virtualization::LibVirt::import
+ Rex::Virtualization::LibVirt::info
+ Rex::Virtualization::LibVirt::list
+ Rex::Virtualization::LibVirt::option
+ Rex::Virtualization::LibVirt::reboot
+ Rex::Virtualization::LibVirt::shutdown
+ Rex::Virtualization::LibVirt::start
+ Rex::Virtualization::LibVirt::status
+ Rex::Virtualization::LibVirt::vncdisplay
+ Rex::Virtualization::Lxc
+ Rex::Virtualization::Lxc::attach
+ Rex::Virtualization::Lxc::copy
+ Rex::Virtualization::Lxc::create
+ Rex::Virtualization::Lxc::destroy
+ Rex::Virtualization::Lxc::info
+ Rex::Virtualization::Lxc::list
+ Rex::Virtualization::Lxc::start
+ Rex::Virtualization::Lxc::stop
+ Rex::Virtualization::VBox
+ Rex::Virtualization::VBox::bridge
+ Rex::Virtualization::VBox::create
+ Rex::Virtualization::VBox::delete
+ Rex::Virtualization::VBox::destroy
+ Rex::Virtualization::VBox::forward_port
+ Rex::Virtualization::VBox::guestinfo
+ Rex::Virtualization::VBox::import
+ Rex::Virtualization::VBox::info
+ Rex::Virtualization::VBox::list
+ Rex::Virtualization::VBox::option
+ Rex::Virtualization::VBox::reboot
+ Rex::Virtualization::VBox::share_folder
+ Rex::Virtualization::VBox::shutdown
+ Rex::Virtualization::VBox::start
+ Rex::Virtualization::VBox::status
+
diff --git a/app-admin/rex/rex-1.5.0.ebuild b/app-admin/rex/rex-1.5.0.ebuild
new file mode 100644
index 0000000000000..d7c75b836fb68
--- /dev/null
+++ b/app-admin/rex/rex-1.5.0.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+if [[ ${PV} == 9999 ]]; then
+ GITHUB_USER=RexOps
+ GITHUB_REPO=Rex
+ EGIT_REPO_URI="https://github.com/${GITHUB_USER}/${GITHUB_REPO}.git"
+ EGIT_BRANCH="development-1.x"
+ EGIT_CHECKOUT_DIR="${WORKDIR}/${PN}-git"
+ VCS_ECLASS="git-r3"
+else
+ # This is intentional to stop perl-module.eclass doing magic things when it
+ # shouldn't. Like making ${S} contain "Rex" when the git clone has "rex"
+ # Also prevents perl-module.eclass provisioning SRC_URI
+ DIST_AUTHOR=JFRIED
+ DIST_NAME=Rex
+ KEYWORDS="~amd64 ~x86"
+fi
+
+inherit perl-module ${VCS_ECLASS}
+
+DESCRIPTION="(R)?ex is a small script to ease the execution of remote commands"
+
+SLOT="0"
+IUSE="test"
+
+DZIL_DEPENDS="
+ dev-perl/Dist-Zilla
+ dev-perl/Dist-Zilla-Plugin-MakeMaker-Awesome
+ dev-perl/Dist-Zilla-Plugin-MetaProvides-Package
+ dev-perl/Dist-Zilla-Plugin-OSPrereqs
+ dev-perl/Dist-Zilla-Plugin-OurPkgVersion
+ dev-perl/Dist-Zilla-Plugin-Test-MinimumVersion
+ dev-perl/Dist-Zilla-Plugin-Test-Perl-Critic
+"
+
+RDEPEND="
+ dev-perl/Data-Validate-IP
+ dev-perl/DBI
+ dev-perl/Devel-Caller
+ dev-perl/Digest-HMAC
+ dev-perl/Digest-SHA1
+ dev-perl/Expect
+ dev-perl/Hash-Merge
+ dev-perl/IO-String
+ dev-perl/IO-Tty
+ dev-perl/IPC-Shareable
+ dev-perl/JSON-XS
+ dev-perl/List-MoreUtils
+ dev-perl/Net-OpenSSH
+ dev-perl/Net-SFTP-Foreign
+ dev-perl/Parallel-ForkManager
+ dev-perl/Sort-Naturally
+ dev-perl/String-Escape
+ dev-perl/TermReadKey
+ dev-perl/Test-Deep
+ dev-perl/Text-Glob
+ dev-perl/URI
+ dev-perl/XML-LibXML
+ dev-perl/XML-Simple
+ dev-perl/libwww-perl
+ dev-perl/YAML
+ virtual/perl-Carp
+ virtual/perl-Data-Dumper
+ virtual/perl-Digest-MD5
+ virtual/perl-Exporter
+ virtual/perl-File-Spec
+ virtual/perl-MIME-Base64
+ virtual/perl-Scalar-List-Utils
+ virtual/perl-Storable
+ virtual/perl-Time-HiRes
+"
+
+DEPEND="
+ ${RDEPEND}
+ test? (
+ dev-perl/Test-UseAllModules
+ virtual/perl-File-Temp
+ )
+"
+
+[[ ${PV} == 9999 ]] && DEPEND+=" ${DZIL_DEPENDS}"
+
+src_unpack() {
+ if [[ $PV == 9999 ]]; then
+ "${VCS_ECLASS}"_src_unpack
+ mkdir -p "${S}" || die "Can't make ${S}"
+ else
+ default
+ fi
+}
+
+dzil_to_distdir() {
+ local dzil_root dest has_missing modname dzil_version
+ dzil_root="$1"
+ dest="$2"
+
+ cd "${dzil_root}" || die "Can't enter git workdir '${dzil_root}'";
+
+ dzil_version="$(dzil version)" || die "Error invoking 'dzil version'"
+ einfo "Generating CPAN dist with ${dzil_version}"
+
+ has_missing=""
+
+ einfo "Checking dzil authordeps"
+ while IFS= read -d $'\n' -r modname; do
+ if [[ -z "${has_missing}" ]]; then
+ has_missing=1
+ eerror "'dzil authordeps' indicates missing build dependencies"
+ eerror "These will prevent building, please report a bug"
+ eerror "Missing:"
+ fi
+ eerror " ${modname}"
+ done < <( dzil authordeps --missing --versions )
+
+ [[ -z "${has_missing}" ]] || die "Satisfy all missing authordeps first"
+
+ einfo "Checking dzil build deps"
+ while IFS= read -d $'\n' -r modname; do
+ if [[ -z "${has_missing}" ]]; then
+ has_missing=1
+ ewarn "'dzil listdeps' indicates missing build dependencies"
+ ewarn "These may prevent building, please report a bug if they do"
+ ewarn "Missing:"
+ fi
+ ewarn " ${modname}"
+ done < <( dzil listdeps --missing --versions --author )
+
+ einfo "Generating release"
+ dzil build --notgz --in "${dest}" || die "Unable to build CPAN dist in '${dest}'"
+}
+
+src_prepare() {
+ if [[ ${PV} == 9999 ]]; then
+ # Uses git sources in WORKDIR/rex-git
+ # to generate a CPAN-style tree in ${S}
+ # before letting perl-module.eclass do the rest
+ dzil_to_distdir "${EGIT_CHECKOUT_DIR}" "${S}"
+ fi
+ cd "${S}" || die "Can't enter build dir"
+ perl-module_src_prepare
+}