summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Matthijs <axxo@gentoo.org>2005-07-19 18:39:17 +0000
committerThomas Matthijs <axxo@gentoo.org>2005-07-19 18:39:17 +0000
commit4560748d8a7f5330b5dcc2a8c9f45c8e50747d2e (patch)
tree55214e3c569cd8395cecfdb5362e47754bd82a10 /dev-util/netbeans
parentnew rev with an extra file needed for netbeans (diff)
downloadgentoo-2-4560748d8a7f5330b5dcc2a8c9f45c8e50747d2e.tar.gz
gentoo-2-4560748d8a7f5330b5dcc2a8c9f45c8e50747d2e.tar.bz2
gentoo-2-4560748d8a7f5330b5dcc2a8c9f45c8e50747d2e.zip
rev bump too fix some bugs, see changelog
(Portage version: 2.0.51.22-r1)
Diffstat (limited to 'dev-util/netbeans')
-rw-r--r--dev-util/netbeans/ChangeLog13
-rw-r--r--dev-util/netbeans/Manifest33
-rw-r--r--dev-util/netbeans/files/4.0/startscript.sh21
-rw-r--r--dev-util/netbeans/files/digest-netbeans-4.0-r2 (renamed from dev-util/netbeans/files/digest-netbeans-4.0-r1)0
-rw-r--r--dev-util/netbeans/files/emptyunscramble.xsl15
-rw-r--r--dev-util/netbeans/netbeans-4.0-r2.ebuild (renamed from dev-util/netbeans/netbeans-4.0-r1.ebuild)175
6 files changed, 181 insertions, 76 deletions
diff --git a/dev-util/netbeans/ChangeLog b/dev-util/netbeans/ChangeLog
index be91770eeca3..160813c0d951 100644
--- a/dev-util/netbeans/ChangeLog
+++ b/dev-util/netbeans/ChangeLog
@@ -1,6 +1,17 @@
# ChangeLog for dev-util/netbeans
# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/netbeans/ChangeLog,v 1.32 2005/06/19 18:57:06 compnerd Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-util/netbeans/ChangeLog,v 1.33 2005/07/19 18:39:17 axxo Exp $
+
+*netbeans-4.0-r2 (19 Jul 2005)
+
+ 19 Jul 2005; Thomas Matthijs <axxo@gentoo.org> +files/4.0/startscript.sh,
+ +files/emptyunscramble.xsl, -netbeans-4.0-r1.ebuild,
+ +netbeans-4.0-r2.ebuild:
+ Commiting for Petteri Räty, changes by him: Version bump because of Bug
+ #98603, Bug #96646 and Bug 99545. This version now depends on the corrected
+ version of jmi-interface and doesn't fail with access violations if the
+ system jars are dated older then the files in the Netbeans tarball. Also
+ more information messages about the progress of the ebuild.
19 Jun 2005; Saleem Abdulrasool <compnerd@gentoo.org>
-netbeans-4.0.ebuild:
diff --git a/dev-util/netbeans/Manifest b/dev-util/netbeans/Manifest
index ed213577368b..4f1285258506 100644
--- a/dev-util/netbeans/Manifest
+++ b/dev-util/netbeans/Manifest
@@ -1,27 +1,20 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
+MD5 042c88893d3b466e99c8858cd719f1b7 netbeans-4.0-r2.ebuild 11990
+MD5 3995327ee30375ca261228f816a9f9a2 netbeans-3.4.1.ebuild 3191
+MD5 a2ecc45e7604ad37b1d92d16d18ba3c0 netbeans-3.5.1.ebuild 3155
+MD5 123427f9dd5f7996a3f5fdd909eb65db netbeans-3.6-r1.ebuild 3155
MD5 90f8f970a5d38084928111be0db2cad6 ChangeLog 5304
+MD5 e7fcbf7f5131562425fda47afe3b39b9 metadata.xml 1128
MD5 95ab6db4dc5ed189e21f0e6ae1aa657e files/antbuild.xml.patch 957
-MD5 eba3a44af2a04cab3a7bf00ce982130e files/digest-netbeans-3.4.1 77
-MD5 9db67cc7c38cdd884ec192a4c642e144 files/digest-netbeans-3.5.1 77
+MD5 9c6f59bb154bdcd7242f4544b8feae6b files/netbeans-KDE.desktop 139
+MD5 0c98dd3e09a6ddfc91bf8eac2ef22871 files/startscript.sh 409
+MD5 21a78956bac04c98135ba5707b98da66 files/netbeans.png 2163
MD5 a31cf39b9b70944a298e8fa97275d122 files/digest-netbeans-3.6-r1 67
MD5 628cbd47ea7d573ab47cc6b96c1b4d65 files/digest-netbeans-4.0-r1 163
+MD5 628cbd47ea7d573ab47cc6b96c1b4d65 files/digest-netbeans-4.0-r2 163
MD5 df81663e1eac8d30955facf133f41e7a files/nbbuild.patch 1317
MD5 86a2e857f2e16af4becaa6e0e733c215 files/netbeans 786
-MD5 9c6f59bb154bdcd7242f4544b8feae6b files/netbeans-KDE.desktop 139
MD5 e04a4eefe6510679e7cf06d0377e9e18 files/netbeans.desktop 103
-MD5 21a78956bac04c98135ba5707b98da66 files/netbeans.png 2163
-MD5 0c98dd3e09a6ddfc91bf8eac2ef22871 files/startscript.sh 409
-MD5 e7fcbf7f5131562425fda47afe3b39b9 metadata.xml 1128
-MD5 3995327ee30375ca261228f816a9f9a2 netbeans-3.4.1.ebuild 3191
-MD5 a2ecc45e7604ad37b1d92d16d18ba3c0 netbeans-3.5.1.ebuild 3155
-MD5 123427f9dd5f7996a3f5fdd909eb65db netbeans-3.6-r1.ebuild 3155
-MD5 f265596b1834ceff82a229c173bb913c netbeans-4.0-r1.ebuild 10607
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.1 (GNU/Linux)
-
-iD8DBQFC0BSFI1lqEGTUzyQRAp0pAJ9Hukvk+KBCxtOM7T3dJ2hhL3wOXQCgsO+b
-2VMz5h/JS74gCMoS4fjRnR8=
-=neHJ
------END PGP SIGNATURE-----
+MD5 eba3a44af2a04cab3a7bf00ce982130e files/digest-netbeans-3.4.1 77
+MD5 9db67cc7c38cdd884ec192a4c642e144 files/digest-netbeans-3.5.1 77
+MD5 a80b4daebbce9c3aa54890ab458f8ecd files/emptyunscramble.xsl 405
+MD5 0c98dd3e09a6ddfc91bf8eac2ef22871 files/4.0/startscript.sh 409
diff --git a/dev-util/netbeans/files/4.0/startscript.sh b/dev-util/netbeans/files/4.0/startscript.sh
new file mode 100644
index 000000000000..8fe13cc00b01
--- /dev/null
+++ b/dev-util/netbeans/files/4.0/startscript.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+check_symlinks() {
+ for file in `find ${1} -type l` ; do
+
+ if ! test -e ${file} ; then
+ echo "Broken symlink:"
+ echo "${file}"
+ fi
+
+ done
+}
+
+NBDIR="/usr/share/netbeans-4.0"
+
+check_symlinks ${NBDIR}/ide4/modules/ext
+check_symlinks ${NBDIR}/ide4/modules/autoload/ext
+check_symlinks ${NBDIR}/ide4/config/TagLibraries/JSTL11
+check_symlinks ${NBDIR}/platform4/modules/ext
+
+${NBDIR}/bin/netbeans
diff --git a/dev-util/netbeans/files/digest-netbeans-4.0-r1 b/dev-util/netbeans/files/digest-netbeans-4.0-r2
index b44ef1705c28..b44ef1705c28 100644
--- a/dev-util/netbeans/files/digest-netbeans-4.0-r1
+++ b/dev-util/netbeans/files/digest-netbeans-4.0-r2
diff --git a/dev-util/netbeans/files/emptyunscramble.xsl b/dev-util/netbeans/files/emptyunscramble.xsl
new file mode 100644
index 000000000000..ecce5cb08451
--- /dev/null
+++ b/dev-util/netbeans/files/emptyunscramble.xsl
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="//target[@name='unscramble']/*">
+ <!-- nothing here -->
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/dev-util/netbeans/netbeans-4.0-r1.ebuild b/dev-util/netbeans/netbeans-4.0-r2.ebuild
index 88f2b7f5279a..b43568581acd 100644
--- a/dev-util/netbeans/netbeans-4.0-r1.ebuild
+++ b/dev-util/netbeans/netbeans-4.0-r2.ebuild
@@ -1,12 +1,11 @@
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/netbeans/netbeans-4.0-r1.ebuild,v 1.2 2005/07/09 18:16:10 swegener Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-util/netbeans/netbeans-4.0-r2.ebuild,v 1.1 2005/07/19 18:39:17 axxo Exp $
inherit eutils java-pkg
-# Server Tarball layout structure
-# 4.0 200412081800/d5a0f13566068cb86e33a46ea130b207
-# 4.1 200505031930/66083d474e5fdfc80a1443fb851bd9d5
+DESCRIPTION="NetBeans IDE for Java"
+HOMEPAGE="http://www.netbeans.org"
# ant-mis is stuff we never use put instead of pactching we let the build process use this file
# so adding the license just to be sure
@@ -18,12 +17,11 @@ inherit eutils java-pkg
# There are many other scrambled files in Netbeans but the
# default module configuration doesn't use all of them.
#
-# If you want to find out useless java-pkg_jar-from calls and all scrambled files, which don't have
-# symlinks to the installed files, you can use a ruby script I wrote. It is in the experimental tree:
+# Check the experimental tree for useful stuff.
# https://gentooexperimental.org/svn/java/gentoo-java-experimental/dev-util/netbeans/files
#
# This command should be run after ebuild <pkg> unpack in the source root
-# 'ebuild netbeans-4.0.ebuild compile | grep Unscrambling | grep "\.jar"'
+# 'ebuild netbeans-${PVR}.ebuild compile | grep Unscrambling | grep "\.jar"'
# Check which jars are actually being used to compile Netbeans
#
# This command should be run after ebuild <pkg> install in the image root
@@ -39,8 +37,6 @@ BASELOCATION="http://www.netbeans.org/download/${MY_PV}/fcs/200412081800/d5a0f13
MAINTARBALL="netbeans-${MY_PV}-src-ide_sources.tar.bz2"
JAVADOCTARBALL="netbeans-${MY_PV}-docs-javadoc.tar.bz2"
-DESCRIPTION="NetBeans IDE for Java"
-HOMEPAGE="http://www.netbeans.org"
SRC_URI="${BASELOCATION}/${MAINTARBALL}
doc? ( ${BASELOCATION}/${JAVADOCTARBALL} )"
@@ -60,7 +56,7 @@ RDEPEND=">=virtual/jre-1.4.2
=dev-java/xerces-2.6.2*
dev-java/sac
dev-java/flute
- dev-java/jmi-interface
+ >=dev-java/jmi-interface-1.0-r1
>=dev-java/javahelp-bin-2.0.02-r1
~www-servers/tomcat-5.0.28
dev-java/sun-j2ee-deployment-bin
@@ -75,7 +71,8 @@ DEPEND="${RDEPEND}
=dev-java/jaxen-1.1*
dev-java/saxpath
dev-java/javamake-bin
- dev-util/pmd"
+ dev-util/pmd
+ dev-libs/libxslt"
TOMCATSLOT="5"
@@ -86,13 +83,13 @@ JASPERRUNTIME="tomcat-${TOMCATSLOT} jasper-runtime.jar jasper-runtime-5.0.28.jar
JH="javahelp-bin jh.jar jh-2.0_01.jar"
JMI="jmi-interface jmi.jar jmi.jar"
JSPAPI="servletapi-2.4 jsp-api.jar jsp-api-2.0.jar"
-JSR="sun-j2ee-deployment-bin sun-j2ee-deployment-bin.jar jsr88javax.jar"
+JSR="sun-j2ee-deployment-bin-1.1 sun-j2ee-deployment-bin.jar jsr88javax.jar"
JSTL="jakarta-jstl jstl.jar jstl-1.1.2.jar"
JUNIT="junit junit.jar junit-3.8.1.jar"
MOF="jmi-interface mof.jar mof.jar"
PMD="pmd pmd.jar pmd-1.3.jar"
REGEXP="jakarta-regexp-1.3 jakarta-regexp.jar regexp-1.2.jar"
-SERVLET22="servletapi-2.2 servletapi-2.2.jar servlet-2.2.jar"
+SERVLET22="servletapi-2.2 servlet.jar servlet-2.2.jar"
SERVLET23="servletapi-2.3 servlet.jar servlet-2.3.jar"
SERVLET24="servletapi-2.4 servlet-api.jar servlet-api-2.4.jar"
STANDARD="jakarta-jstl standard.jar standard-1.1.2.jar"
@@ -101,6 +98,41 @@ XMLCOMMONS="xml-commons xml-apis.jar xml-commons-dom-ranges-1.0.b2.jar"
S=${WORKDIR}/netbeans-src
BUILDDESTINATION="${S}/nbbuild/netbeans"
+IDE_VERSION="4"
+MY_FDIR="${FILESDIR}/4.0"
+DESTINATION="${ROOT}usr/share/netbeans-${SLOT}"
+
+antflags=""
+
+set_env() {
+
+ antflags=""
+
+ if use debug; then
+ antflags="${antflags} -Dbuild.compiler.debug=true"
+ antflags="${antflags} -Dbuild.compiler.deprecation=true"
+ else
+ antflags="${antflags} -Dbuild.compiler.deprecation=false"
+ fi
+
+ antflags="${antflags} -Dnetbeans.no.pre.unscramble=true"
+ antflags="${antflags} -Dstop.when.broken.modules=true"
+
+ # The build will attempt to display graphical
+ # dialogs for the licence agreements if this is set.
+ unset DISPLAY
+
+ # -Xmx1g: Increase Java maximum heap size, otherwise ant will die with
+ # an OutOfMemoryError while building.
+ # -Djava.awt.headless=true: Sun JDK doesnt like that very much, so
+ # lets pleasure them too ;-)
+ #
+ # We use the ANT_OPTS environment variable because other ways seem to
+ # fail.
+ #
+ export ANT_OPTS="${ANT_OPTS} -Xmx1g -Djava.awt.headless=true"
+
+}
src_unpack () {
unpack ${MAINTARBALL}
@@ -115,27 +147,36 @@ src_unpack () {
# Disable the bundled Tomcat in favor of Portage installed version
sed -i -e "s%tomcatint/tomcat5/bundled,%%g" *.properties
+ einfo "Symlinking packed jars to system jars"
+
+ set_env
+
cd ${S}/ant/external/
touch ant-api-1.6.2.zip
touch ant-docs-1.6.2.zip
+ unscramble_and_empty
# We have ant libs here so using the system libs
- epatch ${FILESDIR}/antbuild.xml.patch
- mkdir lib && cd lib
+ cd lib
+ rm -fr *.jar
java-pkg_jar-from ant-tasks
java-pkg_jar-from ant-core
cd ${S}/core/external
+ unscramble_and_empty
java-pkg_jar-from ${JH}
cd ${S}/mdr/external/
+ unscramble_and_empty
java-pkg_jar-from ${JMI}
java-pkg_jar-from ${MOF}
cd ${S}/nbbuild/external
+ unscramble_and_empty
java-pkg_jar-from javahelp-bin jhall.jar jhall-2.0_01.jar
cd ${S}/libs/external/
+ unscramble_and_empty
java-pkg_jar-from ${XERCES}
java-pkg_jar-from ${COMMONS_LOGGING}
java-pkg_jar-from xalan xalan.jar xalan-2.5.2.jar
@@ -146,6 +187,7 @@ src_unpack () {
# Sun's bcla + supplemental terms
cd ${S}/xml/external/
+ unscramble_and_empty
java-pkg_jar-from sac
java-pkg_jar-from xerces-2 xercesImpl.jar xerces2.jar
java-pkg_jar-from flute
@@ -155,61 +197,52 @@ src_unpack () {
# then.
cd ${S}/httpserver/external/
+ unscramble_and_empty
java-pkg_jar-from ${SERVLET22}
# The webserver.jar in here is a stripped down version of Tomcat 3.3.
# We will use the included jar because we don't want to have Tomcat 3.X
# in the tree and because maintaining it would probably be a pain.
cd ${S}/j2eeserver/external
+ unscramble_and_empty
java-pkg_jar-from ${JSR}
cd ${S}/java/external/
+ unscramble_and_empty
java-pkg_jar-from javamake-bin javamake.jar javamake-1.2.12.jar
# gjast.jar is a mix of Netbeans stuff with sun javac stuff
# It is not available elsewhere.
cd ${S}/junit/external/
- java-pkg_jar-from ${JUNIT}
touch junit-3.8.1-api.zip
+ java-pkg_jar-from ${JUNIT}
+ unscramble_and_empty
cd ${S}/tasklist/external/
+ unscramble_and_empty
java-pkg_jar-from jtidy Tidy.jar Tidy-r7.jar
cd ${S}/web/external
+ touch jsp20-docs.zip
+ touch jstl-1.1.2-javadoc.zip
+ touch servlet24-docs.zip
+ unscramble_and_empty
java-pkg_jar-from ${SERVLET23}
java-pkg_jar-from ${SERVLET24}
java-pkg_jar-from commons-el
- java-pkg_jar-from jaxen-1.1 jaxen-1.1_beta2.jar jaxen-full.jar
+ java-pkg_jar-from jaxen-1.1 jaxen.jar jaxen-full.jar
java-pkg_jar-from saxpath
java-pkg_jar-from ${JASPERCOMPILER}
java-pkg_jar-from ${JASPERRUNTIME}
java-pkg_jar-from ${JSPAPI}
java-pkg_jar-from ${JSTL}
java-pkg_jar-from ${STANDARD}
- touch jsp20-docs.zip
- touch jstl-1.1.2-javadoc.zip
- touch servlet24-docs.zip
+
}
src_compile() {
- local antflags=""
-
- if use debug; then
- antflags="${antflags} -Dbuild.compiler.debug=true"
- antflags="${antflags} -Dbuild.compiler.deprecation=true"
- else
- antflags="${antflags} -Dbuild.compiler.deprecation=false"
- fi
-
- antflags="${antflags} -Dnetbeans.no.pre.unscramble=true"
- antflags="${antflags} -Dstop.when.broken.modules=true"
- # The build will attempt to display graphical
- # dialogs for the licence agreements if this is set.
- unset DISPLAY
-
- # Sun JDK doesnt like that very much, so lets pleasure them too ;-)
- export ANT_OPTS="${ANT_OPTS} -Djava.awt.headless=true"
+ set_env
# The location of the main build.xml file
cd ${S}/nbbuild
@@ -227,7 +260,7 @@ src_compile() {
| xargs rm -f
# Removing external stuff. They are api docs from external libs.
- cd ${BUILDDESTINATION}/ide4/docs
+ cd ${BUILDDESTINATION}/ide${IDE_VERSION}/docs
rm -f *.zip
# The next directory seems to be empty
@@ -236,14 +269,13 @@ src_compile() {
fi
# Use the system ant
- cd ${BUILDDESTINATION}/ide4/ant
+ cd ${BUILDDESTINATION}/ide${IDE_VERSION}/ant
rm -fr ./lib
rm -fr ./bin
}
src_install() {
- local DESTINATION="${ROOT}/usr/share/netbeans-${SLOT}"
insinto $DESTINATION
einfo "Installing the program..."
@@ -254,13 +286,13 @@ src_install() {
fperms 755 \
${DESTINATION}/bin/netbeans \
- ${DESTINATION}/platform4/lib/nbexec
+ ${DESTINATION}/platform${IDE_VERSION}/lib/nbexec
# The wrapper wrapper :)
- newbin ${FILESDIR}/startscript.sh netbeans-${SLOT}
+ newbin ${MY_FDIR}/startscript.sh netbeans-${SLOT}
# Ant installation
- local ANTDIR="${DESTINATION}/ide4/ant"
+ local ANTDIR="${DESTINATION}/ide${IDE_VERSION}/ant"
cd ${D}/${ANTDIR}
dodir /usr/share/ant-core/lib
@@ -293,18 +325,32 @@ src_install() {
dosym ${DESTINATION}/icons/nb${res}.png /usr/share/icons/hicolor/${res}/apps/netbeans.png
done
- make_desktop_entry netbeans-${SLOT} Netbeans netbeans Development
+ make_desktop_entry netbeans-${SLOT} "Netbeans ${SLOT}" netbeans Development
}
pkg_postinst () {
einfo "Your tomcat directory might not have the right permissions."
- einfo "Please make sure that normal users can read the directory:"
- einfo "${ROOT}/usr/share/tomcat-${TOMCATSLOT}"
- einfo
- einfo "The integrated Tomcat is not installed, but you can easily"
- einfo "use the system Tomcat. See Netbeans documentation if you"
+ einfo "Please make sure that normal users can read the directory: "
+ einfo "${ROOT}usr/share/tomcat-${TOMCATSLOT} "
+ einfo " "
+ einfo "The integrated Tomcat is not installed, but you can easily "
+ einfo "use the system Tomcat. See Netbeans documentation if you "
einfo "don't know how to do that. The relevant settings are in the"
- einfo "runtime window."
+ einfo "runtime window. "
+}
+
+pkg_postrm() {
+# einfo "Removing symlinks to jars from"
+# einfo "${DESTINATION}"
+# find ${DESTINATION} -type l | xargs rm -fr
+
+ if ! test -e /usr/bin/netbeans-${SLOT}; then
+ einfo "Because of the way Portage works at the moment"
+ einfo "symlinks to the system jars are left to:"
+ einfo "${DESTINATION}"
+ einfo "If you are uninstalling Netbeans you can safely"
+ einfo "remove everything in this directory"
+ fi
}
# Supporting functions for this ebuild
@@ -314,15 +360,18 @@ function fix_manifest() {
}
function symlink_extjars() {
- cd ${1}/ide4/modules/ext
+ einfo "Added symlinks to system jars inside"
+ einfo "${DESTINATION}"
+
+ cd ${1}/ide${IDE_VERSION}/modules/ext
java-pkg_jar-from ${COMMONS_LOGGING}
java-pkg_jar-from flute
+ java-pkg_jar-from sac
java-pkg_jar-from ${JMI}
- java-pkg_jar-from ${JUNIT}
java-pkg_jar-from ${MOF}
- java-pkg_jar-from sac
+ java-pkg_jar-from ${JUNIT}
- cd ${1}/ide4/modules/autoload/ext
+ cd ${1}/ide${IDE_VERSION}/modules/autoload/ext
java-pkg_jar-from commons-el
java-pkg_jar-from ${SERVLET22}
java-pkg_jar-from ${SERVLET23}
@@ -338,6 +387,22 @@ function symlink_extjars() {
java-pkg_jar-from jakarta-jstl jstl.jar
java-pkg_jar-from jakarta-jstl standard.jar
- cd ${1}/platform4/modules/ext
+ cd ${1}/platform${IDE_VERSION}/modules/ext
java-pkg_jar-from ${JH}
}
+
+function unscramble_and_empty() {
+ echo $(pwd)
+ yes yes 2> /dev/null | ant ${antflags} unscramble > /dev/null || die "Failed to unscramble"
+ remove_unscrambling
+}
+
+function remove_unscrambling() {
+ local file=${1}
+
+ [ -z ${file} ] && file="build.xml"
+
+ xsltproc -o ${T}/out.xml ${FILESDIR}/emptyunscramble.xsl ${file} \
+ || die "Failed to remove unscrambling from one of the build.xml files"
+ mv ${T}/out.xml ${file}
+}