Support for the older, manual configurations has been completely removed from the NuttX build system

This commit is contained in:
Gregory Nutt 2014-03-06 13:00:50 -06:00
parent 596bdc73df
commit 4cbdbc875e
13 changed files with 64 additions and 282 deletions

View File

@ -6923,3 +6923,14 @@
* configs/rgmp/x86/cxxtest: Configuration converted to use the
kconfig-frontends tools. This completes the conversion of all
configurations to the newer format (2014-3-6)
* Removed the CONFIG_NUTTX_NEWCONFIG setting from every defconfig
file (2014-3-6).
* The legacy, manual configuration is no longer supported by the
NuttX build system. Only the newer configurations generated by
the kconfig-frontends tools will generate viable NuttX
configurations. All board configurations in the NuttX source tree
have bee converted to use the newer configuration, but if you have
some older style configurations for you board, you will need to
convert those configurations to use the kconfig-frontends tools.
See http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig for
some guidelines (2014-3-6).

View File

@ -8,7 +8,7 @@
<tr align="center" bgcolor="#e4e4e4">
<td>
<h1><big><font color="#3c34ec"><i>NuttShell (NSH)</i></font></big></h1>
<p>Last Updated: February 20, 2014</p>
<p>Last Updated: March 6, 2014</p>
</td>
</tr>
</table>
@ -3863,32 +3863,6 @@ CONFIG_SCHED_WAITPID=y
Of course, even with <code>CONFIG_SCHED_WAITPID=y</code> defined, specific applications can still be forced to run asynchronously by adding the ampersand (&amp;) after the NSH command.
</p>
<h3>4.3.3 Application Configuration File</h3>
<p>
<b>The appconfig File</b>.
A special configuration file is used to configure which applications are to be included in the build.
The source for this file is saved at <code>configs/&lt;board&gt;/&lt;configuration&gt;/appconfig</code>.
The existence of the <code>appconfig</code> file in the board configuration directory is sufficient to enable building of applications.
</p>
<p>
The <code>appconfig</code> file is copied into the <code>apps/</code> directory as <code>.config</code> when NuttX is configured.
<code>.config</code> is included by the top-level <code>apps/Makefile</code>.
As a minimum, this configuration file must define files to add to the <code>CONFIGURED_APPS</code> list like:
</p>
<ul><pre>
CONFIGURED_APPS += examples/hello
</pre></ul>
<p>
<b>Changes in the Works</b>.
There are changes in the works that will obsolete the <code>appconfig</code> file.
These changes will implement an automated configuration system for NuttX.
One consequence of this new configuration system is that the <code>appconfig</code> file will become obsolete and will be replaced by a new mechanism for selecting applications.
This new mechanism is not yet available, but is dicussed here: <a href="http://tech.groups.yahoo.com/group/nuttx/message/1604">http://tech.groups.yahoo.com/group/nuttx/message/1604</a>.
</p>
<table width ="100%">
<tr bgcolor="#e4e4e4">
<td>
@ -4142,8 +4116,6 @@ mount -t vfat /dev/ram1 /tmp
<li><a href="#cmdtest"><code>[</code></a></li>
<li><a href="#custoncmds">Adding NSH commands</a></li>
<li><a href="#cmdaddroute"><code>addroute</code></a></li>
<li><a href="#custapps"><code>appconfig</code></a></li>
<li><a href="#custapps">Application configuration file (<code>appconfig</code>)</a></li>
<li><a href="#custapps">Autogenerated header files</a></li>
<li><a href="#cmdoverview">Background commands</a></li>
<li><a href="#cmdoverview">Background command priority</a></li>
@ -4196,10 +4168,10 @@ mount -t vfat /dev/ram1 /tmp
<li><a href="#nshconfiguration"><code>CONFIG_NSH_NESTDEPTH</code></a></li>
<li><a href="#nshconfiguration"><code>CONFIG_NSH_NETMASK</code></a></li>
<li><a href="#nshconfiguration"><code>CONFIG_NSH_NOMAC</code></a></li>
<li><a href="#nshconfiguration"><code>CONFIG_NSH_READLINE</code></a></li>
</ul></td>
<td width="33%" valign="top">
<ul>
<li><a href="#nshconfiguration"><code>CONFIG_NSH_READLINE</code></a></li>
<li><a href="#nshconfiguration"><code>CONFIG_NSH_ROMFSDEVNO</code></a></li>
<li><a href="#nshconfiguration"><code>CONFIG_NSH_ROMFSETC</code></a></li>
<li><a href="#custinit"><code>CONFIG_NSH_ROMFSETC</code></a></li>

View File

@ -645,20 +645,14 @@
|-- <i>&lt;config1-dir&gt;</i>
| |-- Make.defs
| |-- defconfig
| |-- appconfig<sup>1</sup>
| `-- setenv.sh
|-- <i>&lt;config2-dir&gt;</i>
| |-- Make.defs
| |-- defconfig
| |-- appconfig<sup>1</sup>
| `-- setenv.sh
| ...
`-- <i>(other board-specific configuration sub-directories)</i>/
</pre>
<p><small>
<sup>1</sup>Optional
</small></p>
</ul>
</pre></ul>
<h3><a name="summaryofconfigfiles">2.4.2 Summary of Files</a></h3>
<h4><a name="boardlogic">2.4.2.1 Board Specific Logic</a></h4>
@ -744,13 +738,6 @@
most C files in the system.</li>
</ol></p>
</li>
<li>
<p>
<code>appconfig</code>: This is another configuration file that is specific to the
application. This file is copied into the application build directory
when NuttX is configured. See <code>../apps/README.txt</code> for further details.
</p>
</li>
<li>
<p>
<code>setenv.sh</code>: This is a script that you can include that will be installed at
@ -1461,15 +1448,6 @@ netutils/
<li>Copy <code>configs/</code><i>&lt;board-name&gt;</i><code>/[</code><i>&lt;config-dir&gt;</i><code>/]defconfig</code> to <code>${TOPDIR}/.config</code></li>
</ul>
<p>
And if <code>configs/</code><i>&lt;board-name&gt;</i><code>/[</code><i>&lt;config-dir&gt;</i><code>/appconfig</code> exists in the board configuration directory:
</p>
<ul>
<li>Copy <code>configs/</code><i>&lt;board-name&gt;</i><code>/[</code><i>&lt;config-dir&gt;</i><code>/appconfig</code> to &lt;app-dir&gt;<code>/.config</code></li>
<li><code>echo &quot;APPS_LOC=\"&lt;app-dir&gt;\"" &gt;&gt; "${TOPDIR}/.config&quot;</code></li>
</ul>
</p>
<p>
Where <i>&lt;board-name&gt;</i> is the name of one of the sub-directories of the
NuttX <a href="#DirStructConfigs"><code>configs/</code></a> directory.
@ -1500,8 +1478,7 @@ netutils/
</p>
<p>
If <code>configs/</code><i>&lt;board-name&gt;</i><code>/[</code><i>&lt;config-dir&gt;</i>]<code>/appconfig</code>
exists and your application directory is not in the standard loction (<config>../apps</config>),
If your application directory is not in the standard loction (<code>../apps</code> or <code>../apps-&lt;version&gt</code>),
then you should also specify the location of the application directory on the command line like:
</p>
<ul><pre>

View File

@ -9,13 +9,6 @@ config APPSDIR
string
option env="APPSDIR"
# This is a temporary kludge to let the build system know that we are using the new
# configuration system
config NUTTX_NEWCONFIG
bool
default y
menu "Build Setup"
config EXPERIMENTAL

View File

@ -802,10 +802,7 @@ endif
# apps_clean: Perform the clean operation only in the user application
# directory
# apps_distclean: Perform the distclean operation only in the user application
# directory. Note that the apps/.config file (inf any) is
# preserved so that this is not a "full" distclean but more of a
# configuration "reset." (There will not be an apps/.config
# file if the configuration was generated via make menuconfig).
# directory.
apps_clean:
ifneq ($(APPDIR),)
@ -814,15 +811,5 @@ endif
apps_distclean:
ifneq ($(APPDIR),)
$(Q) if [ -r "$(TOPDIR)/$(APPDIR)/.config" ]; then \
cp "$(TOPDIR)/$(APPDIR)/.config" _SAVED_APPS_config || \
{ echo "Copy of $(APPDIR)/.config failed" ; exit 1 ; } \
else \
rm -f _SAVED_APPS_config; \
fi
$(Q) $(MAKE) -C "$(TOPDIR)/$(APPDIR)" TOPDIR="$(TOPDIR)" distclean
$(Q) if [ -r _SAVED_APPS_config ]; then \
mv _SAVED_APPS_config "$(TOPDIR)/$(APPDIR)/.config" || \
{ echo "Copy of _SAVED_APPS_config failed" ; exit 1 ; } \
fi
endif

View File

@ -799,10 +799,7 @@ endif
# apps_clean: Perform the clean operation only in the user application
# directory
# apps_distclean: Perform the distclean operation only in the user application
# directory. Note that the apps\.config file (inf any) is
# preserved so that this is not a "full" distclean but more of a
# configuration "reset." (There will not be an apps\.config
# file if the configuration was generated via make menuconfig).
# directory.
apps_clean:
ifneq ($(APPDIR),)
@ -811,8 +808,5 @@ endif
apps_distclean:
ifneq ($(APPDIR),)
$(call DELFILE, _SAVED_APPS_config
$(Q) if exist "$(APPDIR)\.config" ( cp "$(APPDIR)\.config" _SAVED_APPS_config )
$(Q) $(MAKE) -C "$(APPDIR)" TOPDIR="$(TOPDIR)" distclean
$(Q) if exist _SAVED_APPS_config ( mv _SAVED_APPS_config "$(APPDIR)\.config" )
endif

View File

@ -12,7 +12,6 @@ README
- Instantiating "Canned" Configurations
- NuttX Configuration Tool
- Incompatibilities with Older Configurations
- Converting Older Configurations to use the Configuration Tool
- NuttX Configuration Tool under DOS
o Toolchains
- Cross-Development Toolchains
@ -254,14 +253,6 @@ additional file to the directory the NuttX application package (APPSDIR)):
included in the build and what is not. This file is also used
to generate a C configuration header at include/nuttx/config.h.
Copy configs/<board-name>/<config-dir>/appconfig to ${APPSDIR}/.config
The appconfig file describes the applications that need to be
built in the appliction directory (APPSDIR). Not all configurations
have an appconfig file. This file is deprecated and will not be
used with new defconfig files produced with the kconfig-mconf
configuration tool.
General information about configuring NuttX can be found in:
${TOPDIR}/configs/README.txt
@ -379,98 +370,25 @@ Incompatibilities with Older Configurations
***** WARNING *****
The old legacy, manual configurations and the new kconfig-frontends
configurations are not 100% compatible. Old legacy configurations
can *not* be used with the kconfig-frontends tool: If you run
'make menuconfig' with a legacy configuration the resulting
The current NuttX build system supports *only* the new configuration
files generated using the kconfig-frontends tools. The older, legacy,
manual configurations and the new kconfig-frontends configurations are
not compatible. Old legacy configurations can *not* be used with the kconfig-frontends tool and, hence, cannot be used with recent releases
of NuttX:
If you run 'make menuconfig' with a legacy configuration the resulting
configuration will probably not be functional.
Q: How can I tell if a configuration is a new kconfig-frontends
configuration or an older, manual configuration?
A: a) New kcondfig-frontends configurations will have this setting
within the defconfig/.config file":
A: Only old, manual configurations will have an appconfig file
CONFIG_NUTTX_NEWCONFIG=y
b) Only old, manual configurations will have an appconfig file
Converting Older Configurations to use the Configuration Tool
-------------------------------------------------------------
Q: How can I convert a older, manual configuration into a new,
kconfig-frontends toolchain.
A: 1) Look at the appconfig file: Each application path there
will now have to have an enabling setting. For example,
if the old appconfig file had:
CONFIGURED_APPS = examples/ostest
Then the new configuration will need:
CONFIG_EXAMPLES_OSTEST=y
The appconfig file can then be deleted because it will not
be needed after the conversion.
2) Build the cmpconfig utility at tools:
cd tools
make -f Makefile.host cmpconfig
3) Perform these steps repeatedly until you are convinced that
the configurations are the same:
a) Repeat the following until you have account for all of the differences:
cp configs/<board>/<condfiguration>/defconfig .config
make menuconfig (Just exit and save the new .config file)
tools/cmpconfig configs/<board>/<condfiguration>/defconfig .config | grep file1
The final grep will show settings in the old defconfig file that
do not appear in the new .config file (or have a different value
in the new .config file). In the new configuration, you will
probably have to enable certain groups of features. Such
hierarachical enabling options were not part of the older
configuration.
b) Then make sure these all make sense:
tools/cmpconfig configs/<board>/<condfiguration>/defconfig .config | grep file2
The final grep will show settings in the new .config file that
do not appear in the older defconfig file (or have a different value
in the new .config file). Here you should see only the new
hierarachical enabling options (such as CONFIG_SPI or CONFIG_MMCSD)
plus some other internal configuration settings (like CONFIG_ARCH_HAVE_UART0).
You will have to convince yourself that these new settings all make sense.
4) Finally, update the configuration:
cp .config configs/<board>/<condfiguration>/defconfig
rm configs/<board>/<condfiguration>/appconfig
NOTE: You should comment out the line containing the CONFIG_APPS_DIR
in the new defconfig file. Why? Because the application directory
may reside at a different location when the configuration is installed
at some later time.
# CONFIG_APPS_DIR="../apps"
5) The updated configuration can then be instantiated in the normal
fashion:
cd tools
./configure.sh <board>/<condfiguration>
(or configure.bat for the case of the Windows native build).
NOTE: If CONFIG_APPS_DIR is not defined in the defconfig file,
the configure.sh script will find and add the new, correct path to
the application directory (CONFIG_APPS_DIR) when it copies the
defconfig file to the .config file. This is the setting that was
commented out in step 4.
A: Refer to http://www.nuttx.org/doku.php?id=wiki:howtos:convertconfig
NuttX Configuration Tool under DOS
----------------------------------

View File

@ -60,17 +60,13 @@ following characteristics:
|-- <config1-dir>
| |-- Make.defs
| |-- defconfig
| |-- appconfig*
| `-- setenv.sh
|-- <config2-dir>
| |-- Make.defs
| |-- defconfig
| |-- appconfig*
| `-- setenv.sh
...
*optional
Summary of Files
^^^^^^^^^^^^^^^^
@ -132,10 +128,6 @@ defconfig -- This is a configuration file similar to the Linux
(2) to generate include/nuttx/config.h which is included by
most C files in the system.
appconfig -- This is another configuration file that is specific to the
application. This file is copied into the application build directory
when NuttX is configured. See ../apps/README.txt for further details.
setenv.sh -- This is a script that you can include that will be installed at
the toplevel of the directory structure and can be sourced to set any
necessary environment variables. You will most likely have to customize the
@ -622,12 +614,6 @@ Configuring NuttX requires only copying
configs/<board-name>/<config-dir>/setenv.sh to ${TOPDIR}/setenv.sh
configs/<board-name>/<config-dir>/defconfig to ${TOPDIR}/.config
And if configs/<board-name>/<config-dir>/appconfig exists in the board
configuration directory:
Copy configs/<board-name>/<config-dir>/appconfig to <app-dir>/.config
echo "APPS_LOC=\"<app-dir>\"" >> "${TOPDIR}/.config"
tools/configure.sh
There is a script that automates these steps. The following steps will
accomplish the same configuration:
@ -643,10 +629,9 @@ tools/configure.sh
See tools/README.txt for more information about these scripts.
And if configs/<board-name>/<config-dir>/appconfig exists and your
application directory is not in the standard loction (../apps), then
you should also specify the location of the application directory on the
command line like:
And if your application directory is not in the standard loction (../apps
or ../apps-<version>), then you should also specify the location of the
application directory on the command line like:
cd tools
./configure.sh -a <app-dir> <board-name>/<config-dir>

View File

@ -1053,11 +1053,11 @@ Where <subdir> is one of the following:
USB serial example at apps/examples/usbterm by changing the
following:
-CONFIGURED_APPS += examples/usbserial
+CONFIGURED_APPS += examples/usbterm
-CONFIG_EXAMPLES_USBSERIAL=y
+CONFIG_EXAMPLES_USBSERIAL=n
In either the original appconfig file (before configuring)
or in the final apps/.config file (after configuring).
-CONFIG_EXAMPLES_USBTERM=n
+CONFIG_EXAMPLES_USBTERM=y
usbmsc:
-------

View File

@ -933,18 +933,16 @@ Where <subdir> is one of the following:
CONFIG_CAN_REGDEBUG
6. This example can support an FTP client. In order to build in FTP client
support simply uncomment the following lines in the appconfig file (before
configuring) or in the apps/.config file (after configuring):
support simply reconfigure NuttX, adding:
#CONFIGURED_APPS += netutils/ftpc
#CONFIGURED_APPS += examples/ftpc
CONFIG_NETUTILS_FTPC=y
CONFIG_EXAMPLES_FTPC=y
7. This example can support an FTP server. In order to build in FTP server
support simply uncomment the following lines in the appconfig file (before
configuring) or in the apps/.config file (after configuring):
support simply add the following lines in the NuttX configuration file:
#CONFIGURED_APPS += netutils/ftpd
#CONFIGURED_APPS += examples/ftpd
CONFIG_NETUTILS_FTPD=y
CONFIG_EXAMPLES_FTPD=y
And enable poll() support in the NuttX configuration file:
@ -968,13 +966,12 @@ Where <subdir> is one of the following:
9. Adding LCD and graphics support:
appconfig (apps/.config): Enable the application configurations that you
want to use. Asexamples:
Enable the application configurations that you want to use. As examples:
CONFIGURED_APPS += examples/nx : Pick one or more
CONFIGURED_APPS += examples/nxhello :
CONFIGURED_APPS += examples/nximage :
CONFIGURED_APPS += examples/nxlines :
CONFIG_EXAMPLES_NX=y : Pick one or more
CONFIG_EXAMPLES_NXHELLO=y :
CONFIG_EXAMPLES_NXIMAGE=y :
CONFIG_EXAMPLES_NXLINES=y :
defconfig (nuttx/.config):
@ -984,15 +981,15 @@ Where <subdir> is one of the following:
10. USB OTG FS Device or Host Support
CONFIG_USBDEV - Enable USB device support, OR
CONFIG_USBHOST - Enable USB host support (but not both)
CONFIG_USBDEV : Enable USB device support, OR
CONFIG_USBHOST : Enable USB host support (but not both)
CONFIG_STM32_OTGFS - Enable the STM32 USB OTG FS block
CONFIG_STM32_SYSCFG - Needed for all USB OTF FS support
CONFIG_STM32_OTGFS : Enable the STM32 USB OTG FS block
CONFIG_STM32_SYSCFG : Needed for all USB OTF FS support
CONFIG_SCHED_WORKQUEUE - Worker thread support is required for the mass
CONFIG_SCHED_WORKQUEUE : Worker thread support is required for the mass
storage class (both host and device).
CONFIG_NSH_ARCHINIT - Architecture specific USB initialization
CONFIG_NSH_ARCHINIT : Architecture specific USB initialization
is needed
11. This configuration requires that jumper JP22 be set to enable RS-232 operation.

View File

@ -691,8 +691,8 @@ Where <subdir> is one of the following:
System Type -> PIC32MX Peripheral Support:
CONFIG_PIC32MX_USBDEV=y : Enable PIC32 USB device support
examples/usbterm - This option can be enabled by uncommenting
the following line in the appconfig file:
examples/usbterm - This option can be enabled by adding the following
to the NuttX configuration file:
Application Configuration->Examples:
CONFIG_EXAMPLES_USBTERM=y : Selects /apps/examples/usbterm
@ -704,7 +704,7 @@ Where <subdir> is one of the following:
CONFIG_CDCACM=y : or the CDC/ACM serial driver (not both)
system/cdcacm - The system/cdcacm program can be included as an
function by uncommenting the following line in the appconfig file:
function by dding the following to the NuttX configuration file:
Application Configuration->Examples:
CONFIG_SYSTEM_CDCACM=y : Select apps/system/cdcacm
@ -714,9 +714,10 @@ Where <subdir> is one of the following:
Drivers->USB Device Driver Support
CONFIG_CDCACM=y : Enable the CDCACM device
system/usbmsc - There are some hooks in the appconfig file
to enable the USB mass storage class (MSC)device. However, this device
cannot work until support for the SD card is also incorporated.
system/usbmsc - To enable the USB mass storage class (MSC)device,
you would need to add the following to the NuttX configuration file.
However, this device cannot work until support for the SD card is
also incorporated.
Drivers->USB Device Driver Support
CONFIG_USBMSC=y : Enables the USB MSC class

View File

@ -87,11 +87,9 @@ static char *g_verstring = "0.0"; /* Version String */
static char *g_srcdefconfig = NULL; /* Source defconfig file */
static char *g_srcmakedefs = NULL; /* Source Make.defs file */
static char *g_srcappconfig = NULL ; /* Source appconfig file (optional) */
static char *g_srcsetenvsh = NULL; /* Source setenv.sh file (optional) */
static char *g_srcsetenvbat = NULL; /* Source setenv.bat file (optional) */
static bool g_newconfig = false; /* True: New style configuration */
static bool g_winnative = false; /* True: Windows native configuration */
static bool g_needapppath = true; /* Need to add app path to the .config file */
@ -603,15 +601,6 @@ static void check_configuration(void)
{
struct variable_s *var;
/* Check if this the new style configuration based on kconfig-fontends */
var = find_variable("CONFIG_NUTTX_NEWCONFIG", g_configvars);
if (var && var->val && strcmp("y", var->val) == 0)
{
debug("check_configuration: New style configuration\n");
g_newconfig = true;
}
/* Check if this is a Windows native configuration */
var = find_variable("CONFIG_WINDOWS_NATIVE", g_configvars);
@ -669,23 +658,6 @@ static void check_configuration(void)
g_srcsetenvsh = strdup(g_buffer);
}
}
/* Old style configurations MUST provide an appconfig file */
if (!g_newconfig)
{
snprintf(g_buffer, BUFFER_SIZE, "%s%cappconfig", g_configpath, g_delim);
debug("check_configuration: Checking %s\n", g_buffer);
if (!verify_file(g_buffer))
{
fprintf(stderr, "ERROR: Configuration corrupted in %s\n", g_configpath);
fprintf(stderr, " Required appconfig file not found.\n");
enumerate_configs();
exit(EXIT_FAILURE);
}
g_srcappconfig = strdup(g_buffer);
}
}
static void copy_file(const char *srcpath, const char *destpath, mode_t mode)
@ -803,15 +775,6 @@ static void configure(void)
copy_file(g_srcsetenvbat, g_buffer, 0644);
}
/* Copy the appconfig file to ../apps/.config if have one and need one */
if (g_srcappconfig)
{
snprintf(g_buffer, BUFFER_SIZE, "%s%c.config", g_apppath, g_delim);
debug("configure: Copying from %s to %s\n", g_srcappconfig, g_buffer);
copy_file(g_srcappconfig, g_buffer, 0644);
}
/* If we did not use the CONFIG_APPS_DIR that was in the defconfig config file,
* then append the correct application information to the tail of the .config
* file

View File

@ -133,15 +133,12 @@ if [ ! -r "${src_config}" ]; then
fi
# Extract values needed from the defconfig file. We need:
# (1) The CONFIG_NUTTX_NEWCONFIG setting to know if this is a "new" style
# configuration,
# (2) The CONFIG_WINDOWS_NATIVE setting to know it this is target for a
# (1) The CONFIG_WINDOWS_NATIVE setting to know it this is target for a
# native Windows (meaning that we want setenv.bat vs setenv.sh and we need
# to use backslashes in the CONFIG_APPS_DIR setting).
# (3) The CONFIG_APPS_DIR setting to see if there is a configured location for the
# (2) The CONFIG_APPS_DIR setting to see if there is a configured location for the
# application directory. This can be overridden from the command line.
newconfig=`grep CONFIG_NUTTX_NEWCONFIG= "${src_config}" | cut -d'=' -f2`
winnative=`grep CONFIG_WINDOWS_NATIVE= "${src_config}" | cut -d'=' -f2`
defappdir=y
@ -218,16 +215,3 @@ if [ "X${defappdir}" = "Xy" ]; then
echo "CONFIG_APPS_DIR=\"$posappdir\"" >> "${dest_config}"
fi
fi
# Copy appconfig file. The appconfig file will be copied to ${appdir}/.config
# if both (1) ${appdir} is defined and (2) we are not using the new configuration
# (which does not require a .config file in the appsdir.
if [ ! -z "${appdir}" -a "X${newconfig}" != "Xy" ]; then
if [ ! -r "${configpath}/appconfig" ]; then
echo "NOTE: No readable appconfig file found in ${configpath}"
else
install -m 644 "${configpath}/appconfig" "${TOPDIR}/${posappdir}/.config" || \
{ echo "Failed to copy ${configpath}/appconfig" ; exit 10 ; }
fi
fi