summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /sci-chemistry/apbs
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sci-chemistry/apbs')
-rw-r--r--sci-chemistry/apbs/Manifest1
-rw-r--r--sci-chemistry/apbs/apbs-1.4.1-r2.ebuild128
-rw-r--r--sci-chemistry/apbs/files/apbs-1.4.1-manip.patch50
-rw-r--r--sci-chemistry/apbs/files/apbs-1.4.1-multilib.patch92
-rw-r--r--sci-chemistry/apbs/files/apbs-1.4.1-python.patch122
-rw-r--r--sci-chemistry/apbs/metadata.xml26
6 files changed, 419 insertions, 0 deletions
diff --git a/sci-chemistry/apbs/Manifest b/sci-chemistry/apbs/Manifest
new file mode 100644
index 000000000000..fef1437b89f5
--- /dev/null
+++ b/sci-chemistry/apbs/Manifest
@@ -0,0 +1 @@
+DIST apbs-1.4.1.zip 37999283 SHA256 1156c44fb65bb7c884801f3111ca1cdb1dfba6f5308226587db112aac4969027 SHA512 3a127af3940054e5a43b3c0c620507f4f9baa69049e5a0933d8e8825458ad2faba840392752de49fe68d91e2054fb1394cf87bb5bb1c0b48305368e2f404cf6a WHIRLPOOL 6729571f13c953ec0bcf90da73ef0c39cf769f1498a767d3280de3ffbeea18eda718373efca0468436c4b18357fe450865f661daba79eeb66778c572c43ff39a
diff --git a/sci-chemistry/apbs/apbs-1.4.1-r2.ebuild b/sci-chemistry/apbs/apbs-1.4.1-r2.ebuild
new file mode 100644
index 000000000000..cabbd1e45e92
--- /dev/null
+++ b/sci-chemistry/apbs/apbs-1.4.1-r2.ebuild
@@ -0,0 +1,128 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+DISTUTILS_SINGLE_IMPL=true
+
+inherit cmake-utils distutils-r1 flag-o-matic multilib toolchain-funcs
+
+GITHUB_REV="74fcb8676de69ed04ddab8976a8b05a6caaf4d65"
+
+DESCRIPTION="Evaluation of electrostatic properties of nanoscale biomolecular systems"
+HOMEPAGE="http://www.poissonboltzmann.org/apbs/"
+#SRC_URI="mirror://sourceforge/${PN}/${P}-source.tar.gz"
+SRC_URI="https://github.com/Electrostatics/apbs-pdb2pqr/archive/${GITHUB_REV}.zip -> ${P}.zip"
+
+SLOT="0"
+LICENSE="BSD"
+KEYWORDS="amd64 ppc x86 ~amd64-linux ~x86-linux"
+IUSE="debug doc examples fast +fetk iapbs mpi openmp python tools"
+
+REQUIRED_USE="
+ iapbs? ( fetk )
+ mpi? ( !python )
+ python? ( tools fetk iapbs ${PYTHON_REQUIRED_USE} )"
+
+RDEPEND="
+ dev-cpp/eigen:3
+ dev-libs/maloc[mpi=]
+ virtual/blas
+ sys-libs/readline
+ fetk? (
+ sci-libs/fetk
+ sci-libs/amd
+ sci-libs/umfpack
+ sci-libs/superlu
+ )
+ mpi? ( virtual/mpi )
+ python? ( ${PYTHON_DEPS} )
+"
+DEPEND="${DEPEND}
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen )
+"
+
+S="${WORKDIR}"/${PN}-pdb2pqr-${GITHUB_REV}/${PN}
+
+PATCHES=(
+ "${FILESDIR}"/${P}-multilib.patch
+ "${FILESDIR}"/${P}-manip.patch
+ "${FILESDIR}"/${P}-python.patch
+)
+
+src_prepare() {
+ cmake-utils_src_prepare
+ append-cppflags $($(tc-getPKG_CONFIG) --cflags eigen3)
+
+ sed \
+ -e "s:-lblas:$($(tc-getPKG_CONFIG) --libs blas):g" \
+ -e "/TOOLS_PATH/d" \
+ -i CMakeLists.txt || die
+ use doc && MAKEOPTS+=" -j1"
+ if use python; then
+ unset PATCHES || die
+ cd tools/python && distutils-r1_src_prepare
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_SKIP_RPATH=ON
+ -DTOOLS_PATH="${ED}"/usr
+ -DSYS_LIBPATHS="${EPREFIX}"/usr/$(get_libdir)
+ -DLIBRARY_INSTALL_PATH=$(get_libdir)
+ -DFETK_PATH="${EPREFIX}"/usr/
+ -DBUILD_SHARED_LIBS=ON
+ -DENABLE_QUIT=OFF
+ $(cmake-utils_use_build doc DOC)
+ $(cmake-utils_use_build tools TOOLS)
+ -DENABLE_BEM=OFF
+# ENABLE_BEM: Boundary element method using TABIPB
+ $(cmake-utils_use_enable debug DEBUG)
+ $(cmake-utils_use_enable debug VERBOSE_DEBUG)
+ $(cmake-utils_use_enable fast FAST)
+ $(cmake-utils_use_enable fetk FETK)
+ $(cmake-utils_use_enable mpi MPI)
+ $(cmake-utils_use_enable python PYTHON)
+# ENABLE_TINKER: Enable TINKER support
+ $(cmake-utils_use_enable iapbs iAPBS)
+# MAX_MEMORY: Set the maximum memory (in MB) to be used for a job
+ )
+ cmake-utils_src_configure
+ if use python; then
+ cd tools/python && distutils-r1_src_configure
+ fi
+}
+
+src_compile(){
+ cmake-utils_src_compile
+ if use python; then
+ append-ldflags -L"${S}"/lib
+ cd tools/python && distutils-r1_src_compile
+ fi
+}
+
+src_test() {
+ python_export_best
+ cd tests || die
+ LD_LIBRARY_PATH="${S}"/lib "${PYTHON}" apbs_tester.py -l log || die
+ grep -q 'FAILED' log && die "Tests failed"
+}
+
+src_install() {
+ dodir /usr/bin
+ cmake-utils_src_install
+ local i
+ for i in "${ED}"/usr/bin/*; do
+ if [[ ! "${i}" =~ .*apbs$ ]]; then
+ mv "${i}" "${i}-apbs" || die
+ fi
+ done
+ if use python; then
+ cd tools/python && distutils-r1_src_install
+ rm -rf "${ED}"/usr/share/apbs/tools/python || die
+ fi
+}
diff --git a/sci-chemistry/apbs/files/apbs-1.4.1-manip.patch b/sci-chemistry/apbs/files/apbs-1.4.1-manip.patch
new file mode 100644
index 000000000000..378223397594
--- /dev/null
+++ b/sci-chemistry/apbs/files/apbs-1.4.1-manip.patch
@@ -0,0 +1,50 @@
+ apbs/CMakeLists.txt | 2 +-
+ apbs/tools/CMakeLists.txt | 4 ----
+ apbs/tools/mesh/CMakeLists.txt | 4 ++--
+ 4 files changed, 5 insertions(+), 9 deletions(-)
+
+diff --git a/apbs/CMakeLists.txt b/apbs/CMakeLists.txt
+index 8917fc4..5152008 100644
+--- a/apbs/CMakeLists.txt
++++ b/apbs/CMakeLists.txt
+@@ -293,7 +293,7 @@ option(ENABLE_FETK "Enable the finite element solver" OFF)
+
+ if(ENABLE_FETK)
+ message(STATUS "Checking for fetk components")
+- set(FETK_ENALBED 1)
++ set(FETK_ENABLED 1)
+
+ list(APPEND APBS_LIBS "-lstdc++")
+ list(APPEND APBS_LIBS "-L${FETK_PATH}/lib")
+diff --git a/apbs/tools/manip/CMakeLists.txt b/apbs/tools/manip/CMakeLists.txt
+index 937dac7..5768cc5 100644
+--- a/apbs/tools/manip/CMakeLists.txt
++++ b/apbs/tools/manip/CMakeLists.txt
+@@ -4,9 +4,9 @@ set(LIBS "")
+ list(APPEND LIBS "apbs_generic")
+ list(APPEND LIBS "apbs_mg")
+ list(APPEND LIBS "apbs_pmgc")
+-if(FETK_ENALBED)
++if(FETK_ENABLED)
+ list(APPEND LIBS "apbs_fem")
+-endif(FETK_ENALBED)
++endif(FETK_ENABLED)
+
+ message(STATUS "libraries: ${LIBS}")
+
+diff --git a/apbs/tools/mesh/CMakeLists.txt b/apbs/tools/mesh/CMakeLists.txt
+index 1406377..6e6dfb9 100644
+--- a/apbs/tools/mesh/CMakeLists.txt
++++ b/apbs/tools/mesh/CMakeLists.txt
+@@ -4,9 +4,9 @@ set(LIBS "")
+ list(APPEND LIBS "apbs_generic")
+ list(APPEND LIBS "apbs_mg")
+ list(APPEND LIBS "apbs_pmgc")
+-if(FETK_ENALBED)
++if(FETK_ENABLED)
+ list(APPEND LIBS "apbs_fem")
+-endif(FETK_ENALBED)
++endif(FETK_ENABLED)
+
+ message(STATUS "libraries: ${LIBS}")
+
diff --git a/sci-chemistry/apbs/files/apbs-1.4.1-multilib.patch b/sci-chemistry/apbs/files/apbs-1.4.1-multilib.patch
new file mode 100644
index 000000000000..a4e2d1761cf4
--- /dev/null
+++ b/sci-chemistry/apbs/files/apbs-1.4.1-multilib.patch
@@ -0,0 +1,92 @@
+ CMakeLists.txt | 18 +++++++++---------
+ src/CMakeLists.txt | 1 -
+ src/fem/CMakeLists.txt | 2 +-
+ src/pmgc/CMakeLists.txt | 2 +-
+ 4 files changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 75ddbdd..c46f5e7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -61,7 +61,7 @@ set(LIBRARY_OUTPUT_PATH ${APBS_ROOT}/lib)
+ set(TOOLS_PATH ${APBS_ROOT}/tools)
+ set(APBS_BINARY ${EXECUTABLE_OUTPUT_PATH}/apbs)
+
+-set(LIBRARY_INSTALL_PATH lib)
++set(LIBRARY_INSTALL_PATH ${CMAKE_INSTALL_LIBDIR})
+ set(HEADER_INSTALL_PATH include/apbs)
+ set(EXECUTABLE_INSTALL_PATH bin)
+ set(SHARE_INSTALL_PATH share/apbs)
+@@ -93,8 +93,6 @@ set(CMAKE_INCLUDE_PATH "${CMAKE_INCLUDE_PATH}")
+ list(APPEND CMAKE_INCLUDE_PATH /usr/include)
+ list(APPEND CMAKE_INCLUDE_PATH /usr/local/include)
+
+-set(APBS_LIBS "-L${APBS_ROOT}/lib -lapbs_geoflow")
+-
+ ################################################################################
+ # Enable ansi pedantic compiling #
+ ################################################################################
+@@ -193,9 +191,11 @@ if(ENABLE_BEM)
+ else()
+ set(TABI_LIBRARY_BASENAME ${CMAKE_STATIC_LIBRARY_PREFIX}${TABI}${CMAKE_STATIC_LIBRARY_SUFFIX})
+ endif()
+-
++
++ file(GLOB MODS ${LIBRARY_OUTPUT_PATH}/*.mod)
++
+ install(
+- FILES ${LIBRARY_OUTPUT_PATH}/${TABI_LIBRARY_BASENAME} ${LIBRARY_OUTPUT_PATH}/*.mod
++ FILES ${LIBRARY_OUTPUT_PATH}/${TABI_LIBRARY_BASENAME} ${MODS}
+ DESTINATION ${LIBRARY_INSTALL_PATH}
+ )
+ set(TABI_LIBRARY ${APBS_ROOT}/${LIBRARY_INSTALL_PATH}/${TABI_LIBRARY_BASENAME})
+@@ -210,7 +210,7 @@ if(ENABLE_BEM)
+ endif()
+ get_filename_component(LIBGFORTRANPATH ${LIBGFORTRANPATH} PATH)
+ find_path(LIBGFORTRAN_PATH ${LIBGFORTRAN_NAME} PATH ${LIBGFORTRANPATH})
+- list(APPEND APBS_LIBS "-L${APBS_ROOT}/${LIBRARY_INSTALL_PATH} -L${LIBGFORTRAN_PATH} -lgfortran -ltabipb" )
++ list(APPEND APBS_LIBS "-L${APBS_ROOT}/lib -L${LIBGFORTRAN_PATH} -lgfortran -ltabipb" )
+ endif() # ENABLE_BEM
+
+ find_file( # this should be find path...
+@@ -228,7 +228,7 @@ endif()
+
+
+ find_library(MALOC_LIBRARY "maloc"
+- PATHS ${FETK_PATH}/lib ${CONTRIB_PATH}
++ PATHS ${FETK_PATH}/${CMAKE_INSTALL_LIBDIR} ${CONTRIB_PATH}
+ DOC "The fetk/maloc library"
+ )
+ if(MALOC_LIBRARY)
+@@ -296,9 +296,9 @@ if(ENABLE_FETK)
+ set(FETK_ENALBED 1)
+
+ list(APPEND APBS_LIBS "-lstdc++")
+- list(APPEND APBS_LIBS "-L${FETK_PATH}/lib")
++ list(APPEND APBS_LIBS "-L${FETK_PATH}/${CMAKE_INSTALL_LIBDIR}")
+ list(APPEND APBS_LIBS -lamd -lpunc -lmc -lgamer -lsuperlu -lumfpack
+--lblas -lvf2c -ltetgen -ltriangle -lg2c -lreadline )
++-lblas -lvf2c -ltetgen -ltriangle -lreadline )
+
+ SET(HAVE_MC_H YES)
+ endif()
+diff --git a/src/fem/CMakeLists.txt b/src/fem/CMakeLists.txt
+index 5a950c2..dc37f48 100644
+--- a/src/fem/CMakeLists.txt
++++ b/src/fem/CMakeLists.txt
+@@ -12,4 +12,4 @@ add_items(
+ vpee.h
+ )
+
+-add_sublibrary(fem)
++add_sublibrary(fem apbs_geoflow)
+diff --git a/src/pmgc/CMakeLists.txt b/src/pmgc/CMakeLists.txt
+index 85b0c1e..97c95f0 100644
+--- a/src/pmgc/CMakeLists.txt
++++ b/src/pmgc/CMakeLists.txt
+@@ -42,4 +42,4 @@ add_items(
+ mgfasd.h
+ )
+
+-add_sublibrary(pmgc)
++add_sublibrary(pmgc apbs_geoflow)
diff --git a/sci-chemistry/apbs/files/apbs-1.4.1-python.patch b/sci-chemistry/apbs/files/apbs-1.4.1-python.patch
new file mode 100644
index 000000000000..db9f86ba120a
--- /dev/null
+++ b/sci-chemistry/apbs/files/apbs-1.4.1-python.patch
@@ -0,0 +1,122 @@
+ apbs/contrib/iapbs/src/apbs_driver.c | 6 +++---
+ apbs/src/CMakeLists.txt | 1 +
+ apbs/tools/CMakeLists.txt | 2 +-
+ apbs/tools/python/CMakeLists.txt | 1 +
+ apbs/tools/python/apbslib.c | 4 ++--
+ apbs/tools/python/apbslib.i | 4 ++--
+ apbs/tools/python/setup.py | 16 ++++++++++++++++
+ 7 files changed, 26 insertions(+), 8 deletions(-)
+
+diff --git a/apbs/contrib/iapbs/src/apbs_driver.c b/apbs/contrib/iapbs/src/apbs_driver.c
+index c9e443b..e1ad67f 100644
+--- a/apbs/contrib/iapbs/src/apbs_driver.c
++++ b/apbs/contrib/iapbs/src/apbs_driver.c
+@@ -595,7 +595,7 @@ int apbsdrv_(
+ printPBEPARM(pbeparm);
+
+ /* Refine mesh */
+- if (!preRefineFE(i, nosh, feparm, fetk)) {
++ if (!preRefineFE(i, feparm, fetk)) {
+ Vnm_tprint( 2, "Error pre-refining mesh!\n");
+ VJMPERR1(0);
+ }
+@@ -609,7 +609,7 @@ int apbsdrv_(
+ Vnm_tprint(1, " Beginning solve-estimate-refine cycle:\n");
+ for (isolve=0; isolve<feparm->maxsolve; isolve++) {
+ Vnm_tprint(1, " Solve #%d...\n", isolve);
+- if (!solveFE(i, nosh, pbeparm, feparm, fetk)) {
++ if (!solveFE(i, pbeparm, feparm, fetk)) {
+ Vnm_tprint(2, "ERROR SOLVING EQUATION!\n");
+ VJMPERR1(0);
+ }
+@@ -622,7 +622,7 @@ int apbsdrv_(
+ /* We're not going to refine if we've hit the max number
+ * of solves */
+ if (isolve < (feparm->maxsolve)-1) {
+- if (!postRefineFE(i, nosh, feparm, fetk)) break;
++ if (!postRefineFE(i, feparm, fetk)) break;
+ }
+ bytesTotal = Vmem_bytesTotal();
+ highWater = Vmem_highWaterTotal();
+diff --git a/apbs/src/CMakeLists.txt b/apbs/src/CMakeLists.txt
+index 44d20fa..2577343 100644
+--- a/apbs/src/CMakeLists.txt
++++ b/apbs/src/CMakeLists.txt
+@@ -68,6 +68,7 @@ configure_file(
+
+ if(ENABLE_iAPBS)
+ ADD_LIBRARY(apbs_routines routines.c routines.h)
++ target_link_libraries(apbs_routines apbs_mg apbs_fem)
+ INSTALL(TARGETS apbs_routines DESTINATION ${LIBRARY_INSTALL_PATH})
+ INSTALL(FILES apbscfg.h DESTINATION ${HEADER_INSTALL_PATH})
+ endif()
+diff --git a/apbs/tools/CMakeLists.txt b/apbs/tools/CMakeLists.txt
+index 1982a3c..4acbe68 100644
+--- a/apbs/tools/CMakeLists.txt
++++ b/apbs/tools/CMakeLists.txt
+@@ -4,5 +4,5 @@ add_subdirectory(mesh)
+ add_subdirectory(manip)
+
+ if(ENABLE_PYTHON)
+- add_subdirectory(manip)
++ add_subdirectory(python)
+ endif(ENABLE_PYTHON)
+diff --git a/apbs/tools/python/CMakeLists.txt b/apbs/tools/python/CMakeLists.txt
+new file mode 100644
+index 0000000..8b13789
+--- /dev/null
++++ b/apbs/tools/python/CMakeLists.txt
+@@ -0,0 +1 @@
++
+diff --git a/apbs/tools/python/apbslib.c b/apbs/tools/python/apbslib.c
+index fef5cc8..feaaa2c 100644
+--- a/apbs/tools/python/apbslib.c
++++ b/apbs/tools/python/apbslib.c
+@@ -2504,8 +2504,8 @@ static swig_module_info swig_module = {swig_types, 24, 0, 0, 0, 0};
+ #include "maloc/maloc.h"
+ #include "apbscfg.h"
+ #include "routines.h"
+-#include "apbs/valist.h"
+-#include "apbs/vatom.h"
++#include "generic/valist.h"
++#include "generic/vatom.h"
+
+
+ #include <limits.h>
+diff --git a/apbs/tools/python/apbslib.i b/apbs/tools/python/apbslib.i
+index 17fe521..44d05ea 100644
+--- a/apbs/tools/python/apbslib.i
++++ b/apbs/tools/python/apbslib.i
+@@ -15,8 +15,8 @@ Header files:
+ #include "maloc/maloc.h"
+ #include "apbscfg.h"
+ #include "routines.h"
+-#include "apbs/valist.h"
+-#include "apbs/vatom.h"
++#include "generic/valist.h"
++#include "generic/vatom.h"
+ %}
+
+ /*
+diff --git a/apbs/tools/python/setup.py b/apbs/tools/python/setup.py
+new file mode 100644
+index 0000000..4a20198
+--- /dev/null
++++ b/apbs/tools/python/setup.py
+@@ -0,0 +1,16 @@
++from distutils.core import setup, Extension
++setup(name='apbs',
++ version='1.4.1',
++ package_dir={'apbs': '', 'vgrid': 'vgrid'},
++ packages=['apbs', 'vgrid'],
++ py_modules=['apbslib', 'main', 'noinput'],
++ ext_modules=[
++ Extension(
++ '_apbslib',
++ ['apbslib.i'],
++ swig_opts=['-module', 'apbslib', '-I../include'],
++ include_dirs=["../../src"],
++ libraries=["apbs_generic", "apbs_routines"]
++ )
++ ],
++ )
diff --git a/sci-chemistry/apbs/metadata.xml b/sci-chemistry/apbs/metadata.xml
new file mode 100644
index 000000000000..f1b8467dd96e
--- /dev/null
+++ b/sci-chemistry/apbs/metadata.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>sci-chemistry</herd>
+ <maintainer>
+ <email>jlec@gentoo.org</email>
+ <name>Justin Lecher</name>
+ <description>Ebuild Crasher</description>
+ </maintainer>
+ <use>
+ <flag name="fetk">Include support for FeTK</flag>
+ <flag name="fast">APBS fast mode (experimental)</flag>
+ <flag name="iapbs">C/C++/Fortran interface</flag>
+ <flag name="tools">Install optional tools</flag>
+ </use>
+ <longdescription>
+APBS is a software package for modeling biomolecular solvation through solution
+of the Poisson-Boltzmann equation (PBE), one of the most popular continuum
+models for describing electrostatic interactions between molecular solutes in
+salty, aqueous media. Continuum electrostatics plays an important role in
+several areas of biomolecular simulation
+</longdescription>
+ <upstream>
+ <remote-id type="github">Electrostatics/apbs-pdb2pqr</remote-id>
+ </upstream>
+</pkgmetadata>