# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

# This file lists packages that ebuilds DEPEND on, sometimes implicitly,
# but really are only needed on the build host. This allows us to use
# --root-deps without "--rootdeps=rdeps" to install package DEPEND into
# the sysroot as part of the build process without also having to cross-
# compile and drag in the below packages as dependencies. See "man portage".

# NOTE: Toolchain packages (gcc, glibc, binutils) are specified in the
# dynamically generated ${BOARD_DIR}/etc/portage/profile/package.provided
# created by the setup_board script.

app-admin/eselect-1.2.9
app-admin/eselect-esd-20060719
app-admin/eselect-opengl-1.3.1-r4
app-admin/eselect-mesa-0.0.8
app-admin/eselect-vi-1.1.5

app-arch/cabextract-1.2-r1
app-arch/rpm2targz-9.0.0.3g

# We don't need xmltoman in the sysroot, so pick a large version as they
# should all be compatible.
app-doc/xmltoman-1.0

# Needed for libtool.eclass.
app-portage/elt-patches-20170815

# Docbook packages are only needed in the SDK based on current designs, and
# they're only used to generate documentation.  Stub them out until someone
# needs them for something more (which seems unlikely).
app-text/build-docbook-catalog-1.4
app-text/docbook-dsssl-stylesheets-1.40
# NB: This package has multiple SLOTs.
app-text/docbook-xml-dtd-4.1.2
app-text/docbook-xml-dtd-4.2
app-text/docbook-xml-dtd-4.3
app-text/docbook-xml-dtd-4.4
app-text/docbook-xml-dtd-4.5
app-text/docbook-xsl-stylesheets-1.79.1
app-text/sgml-common-0.6.3-r5
app-text/texi2html-5.0

dev-lang/nasm-2.07

# Needed for building Icedtea
dev-java/ant-core-1.7.1-r4
dev-java/xalan-2.7.1
dev-java/xerces-2.9.1

dev-lang/perl-5.24.0-r2

# List a lot of perl packages to avoid accidentally pulling them in.
# https://crbug.com/1014105
app-admin/perl-cleaner-2.20
dev-perl/Authen-SASL-2.160.0-r1
dev-perl/Crypt-PasswdMD5-1.300.0-r1
dev-perl/DBD-mysql-4.20.0-r1
dev-perl/DBI-1.628.0
dev-perl/Digest-HMAC-1.30.0-r1
dev-perl/Digest-SHA1-2.130.0-r1
dev-perl/Error-0.170.210
dev-perl/File-Slurp-9999.190.0-r1
dev-perl/GD-2.460.0-r1
dev-perl/IO-Socket-SSL-2.24.0
dev-perl/libintl-perl-1.200.0-r1
dev-perl/Locale-gettext-1.50.0-r2
dev-perl/MailTools-2.190.0
dev-perl/Net-Daemon-0.480.0-r1
dev-perl/Net-SMTP-SSL-1.30.0
dev-perl/Net-SSLeay-1.650.0-r1
dev-perl/PlRPC-0.202.0-r2
dev-perl/SGMLSpm-1.03-r7
dev-perl/TermReadKey-2.300.200-r1
dev-perl/Text-CharWidth-0.40.0-r1
dev-perl/Text-Unidecode-0.40.0-r1
dev-perl/Text-WrapI18N-0.60.0-r1
dev-perl/TimeDate-2.300.0
dev-perl/Unicode-EastAsianWidth-1.330.0-r1
dev-perl/XML-Parser-2.410.0-r2
perl-core/Archive-Tar-1.900.0-r1
perl-core/Compress-Raw-Bzip2-2.60.0
perl-core/Compress-Raw-Zlib-2.60.0
perl-core/Digest-SHA-5.820.0
perl-core/ExtUtils-ParseXS-3.180.0-r1
perl-core/File-Path-2.130.0
perl-core/File-Spec-3.400.0
perl-core/File-Temp-0.230.400-r1
perl-core/IO-Compress-2.60.0
perl-core/IO-Zlib-1.100.0
perl-core/Module-Build-0.400.300-r1
perl-core/Package-Constants-0.20.0-r1
perl-core/Sys-Syslog-0.320.0-r1

dev-util/cmake-3.9.6
dev-util/ctags-5.7
dev-util/gperf-3.0.3
dev-util/gtk-doc-1.13-r3
dev-util/gtk-doc-am-1.13-r2
dev-util/ninja-1.8.2
dev-util/pkgconfig-0.29.2

perl-core/digest-base-1.16
perl-core/File-Temp-0.230.400-r1
perl-core/MIME-Base64-3.08

sys-apps/help2man-1.36.4

# Needed for building Icedtea
sys-apps/lsb-release-1.4

sys-apps/texinfo-4.13

sys-devel/autoconf-2.63-r1
sys-devel/automake-1.10.2
sys-devel/bison-2.3
sys-devel/gettext-0.19.9999
sys-devel/gnuconfig-20090203
sys-devel/m4-1.4.12

sys-kernel/gentoo-sources-2.6.30-r6

x11-apps/mkfontscale-1.2.1
x11-misc/makedepend-1.0.6

# Legacy font map encodings which we don't care about.  http://crosbug.com/25001
media-fonts/encodings-1.0.3

# Our chromeos-base package takes care of this.
app-misc/editor-wrapper-4

# A build tool only; not needed on the target board.
dev-util/boost-build-1.65.0

# We don't need the toolchain itself in the target board.
dev-lang/rust-1.46.0
dev-lang/rust-1.47.0

# We sometimes need ruby for building, but don't yet care about targets.
dev-lang/ruby-1.9.4
dev-ruby/rubygems-2.2.2

# Needed for xorg-proto.
dev-util/meson-0.44.1

# app-admin/sudo-1.8.23-r2 depends on virtual/tmpfiles. sudo only actually
# needs this facility on systems using SELinux. Provide a non-virtual package
# to avoid confusing warnings.
sys-apps/opentmpfiles-0.2

# Test suites are executed on the SDK's python interpreter, so boards don't need
# their own copy of pytest.
dev-python/pytest-4.4

# net-firewall/iptables depends on app-eselect/eselect-iptables for building.
app-eselect/eselect-iptables-20200508
