# 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.47.0
dev-lang/rust-1.51.0

# We don't need code generators on the target board.
dev-rust/bindgen-0.56.0-r2
dev-rust/dbus-codegen-0.5.0-r1

# 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
