Question about having an always clean base system in Debian Sid

2010-01-27 Thread Geek87
Hi all!

I'm new on the list so I hope my question is not stupid and I'm asking
it in the good list.

I have Sid installed on my computer and I would like to know how to keep
my base system (~prequired, ~pimportant, ~pstandard) always clean and up
to date automatically: if package A is no longer needed it should be
removed automatically and if package B is new and with one of the 3
priority above it should be installed automatically.

For the autoremove problem I found a solution: I put all ~prequired,
~pimportant, ~pstandard packages in "automatically installed" state and
put "~prequired, ~pimportant, ~pstandard" in the APT::NeverAutoRemove
directive of the apt.conf file. In this case every package that is
repacked with a new priority not in the 3 above will be automatically
removed unless there is a dependence on it.

For the autoinstall problem I didn't face the situation yet but I don't
know how I'll do.

I also would like to have it working similarly for the tasks: for
example if I have a task "Mail server" installed depending on Sendmail
and that the new version of this task now depends on Postfix, I would
like Sendmail to be automatically removed and Postfix to be
automatically installed. The technique above doesn't work for the tasks.

Do you have any idea? Is the technique I used bad and dirty?

Thanks in advance.

Geek87


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: Question about having an always clean base system in Debian Sid

2010-01-27 Thread Frans Pop
On Wednesday 27 January 2010, Geek87 wrote:
> I also would like to have it working similarly for the tasks: for
> example if I have a task "Mail server" installed depending on Sendmail
> and that the new version of this task now depends on Postfix, I would
> like Sendmail to be automatically removed and Postfix to be
> automatically installed. The technique above doesn't work for the tasks.

I don't think that's possible as the package management system does not 
keep any state information about which tasks are installed.

You have to see tasks and tasksel as an optional convenience feature, not 
as something that's a part of the core package management (unlike for 
example meta packages).

Cheers,
FJP


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Status of netcfg-static

2010-01-27 Thread Josef Wolf
Hello,

I am wondering what netcfg-static is good for. Looks like it is an (outdated)
subset of the more generic netcfg. Unfortunately, even the common code of the
two programs seem to have diverged over time (no wonder, duplicated code
almost always suffers from this disease).

Given that the netcfg/disable_dhcp option exists, is netcfg-static really
needed?

BTW: anybody sees how the GET_STATIC state in netcfg.c is supposed to work:

case GET_STATIC:
{
int ret;
/* Misnomer - this should actually take care of activation */
if ((ret = netcfg_get_static(client)) == 10)
state = GET_INTERFACE;
else if (ret)
state = GET_METHOD;
else
state = QUIT;
break;
}

AFAICS, netcfg_get_static() never returns anything other than 0 or 10. So
the GET_METHOD state would never be set.


Here is a first attempt to bring those two programs in sync again. There are
more differences (especially in the GET_INTERFACE state), but I have not done
a closer look at them yet.


diff --git a/netcfg-static.c b/netcfg-static.c
index 1cd2799..3b9faca 100644
--- a/netcfg-static.c
+++ b/netcfg-static.c
@@ -1,7 +1,9 @@
 /* 
-   netcfg-static.c - Configure a static network for the debian-installer
+   netcfg-static.c - Configure a static network
+   for the debian-installer
 
Copyright (C) 2000-2002  David Kimdon 
+and others (see debian/copyright)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,6 +20,7 @@
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

 */
+
 #include 
 #include 
 #include 
@@ -27,13 +30,20 @@
 #include 
 #include "netcfg.h"
 
-int main(int argc, char** argv)
+int main(int argc, char *argv[])
 {
 int num_interfaces = 0;
 static struct debconfclient *client;
 static int requested_wireless_tools = 0;
 
-enum { BACKUP, GET_INTERFACE, GET_HOSTNAME_ONLY, GET_STATIC, WCONFIG, 
WCONFIG_ESSID, WCONFIG_WEP, QUIT} state = GET_INTERFACE;
+enum { BACKUP,
+   GET_INTERFACE,
+   GET_HOSTNAME_ONLY,
+   GET_STATIC,
+   WCONFIG,
+   WCONFIG_ESSID,
+   WCONFIG_WEP,
+   QUIT } state = GET_INTERFACE;
 
 /* initialize libd-i */
 di_system_init("netcfg-static");
@@ -46,7 +56,20 @@ int main(int argc, char** argv)
 client = debconfclient_new();
 debconf_capb(client, "backup");
 
-while (1) {
+/* Check to see if netcfg should be run at all */
+debconf_get(client, "netcfg/enable");
+if (!strcmp(client->value, "false")) {
+struct in_addr null_ipaddress;
+char *hostname = NULL;
+
+null_ipaddress.s_addr = 0;
+netcfg_get_hostname(client, "netcfg/get_hostname", &hostname, 0);
+
+netcfg_write_common(null_ipaddress, hostname, NULL);
+return 0;
+}
+
+for (;;) {
 switch(state) {
 case BACKUP:
 return 10;
@@ -81,21 +104,21 @@ int main(int argc, char** argv)
 
 case WCONFIG:
 if (requested_wireless_tools == 0) {
+di_exec_shell_log("apt-install wireless-tools");
 requested_wireless_tools = 1;
-di_exec_shell("apt-install wireless-tools");
 }
 state = WCONFIG_ESSID;
 break;
 
 case WCONFIG_ESSID:
-if (netcfg_wireless_set_essid (client, interface, NULL))
+if (netcfg_wireless_set_essid(client, interface, NULL) == GO_BACK)
 state = BACKUP;
 else
 state = WCONFIG_WEP;
 break;
 
 case WCONFIG_WEP:
-if (netcfg_wireless_set_wep (client, interface))
+if (netcfg_wireless_set_wep(client, interface) == GO_BACK)
 state = WCONFIG_ESSID;
 else
 state = GET_STATIC;
diff --git a/netcfg.c b/netcfg.c
index 16823c1..9834f63 100644
--- a/netcfg.c
+++ b/netcfg.c
@@ -1,6 +1,6 @@
 /* 
netcfg.c - Configure a network via DHCP or manual configuration 
-   for debian-installer
+   for the debian-installer
 
Copyright (C) 2000-2002  David Kimdon 
 and others (see debian/copyright)
@@ -18,7 +18,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
+   
 */
 
 #include 
@@ -61,6 +61,12 @@ response_t netcfg_get_method(struct debconfclient *client)
 int main(int argc, char *argv[])
 {
 int num_interfaces = 0;
+static struct debconfclient *client;
+static int requested_wireless_tools = 0;
+char **ifaces;
+char *defiface

Re: Status of netcfg-static

2010-01-27 Thread Frans Pop
On Wednesday 27 January 2010, Josef Wolf wrote:
> I am wondering what netcfg-static is good for. Looks like it is an
> (outdated) subset of the more generic netcfg.

No. It's used for s390:
installer/build/pkg-lists/netboot/s390.cfg:1:netcfg-static
installer/build/pkg-lists/generic/s390.cfg:3:netcfg-static

> Unfortunately, even the 
> common code of the two programs seem to have diverged over time (no
> wonder, duplicated code almost always suffers from this disease).
>
> Given that the netcfg/disable_dhcp option exists, is netcfg-static
> really needed?

Yes.

> BTW: anybody sees how the GET_STATIC state in netcfg.c is supposed to
> work:

I would need to look into that.

> Here is a first attempt to bring those two programs in sync again. There
> are more differences (especially in the GET_INTERFACE state), but I have
> not done a closer look at them yet.
> -enum { BACKUP, GET_INTERFACE, GET_HOSTNAME_ONLY, GET_STATIC,
> WCONFIG, WCONFIG_ESSID, WCONFIG_WEP, QUIT} state = GET_INTERFACE; +   
> enum { BACKUP,
> +   GET_INTERFACE,
> +   GET_HOSTNAME_ONLY,
> +   GET_STATIC,
> +   WCONFIG,
> +   WCONFIG_ESSID,
> +   WCONFIG_WEP,
> +   QUIT } state = GET_INTERFACE;

Wireless is useless for s390 (and static network config is almost per 
definition not suitable for wireless), so the wireless bits should not be 
synced.

> -while (1) {
> +/* Check to see if netcfg should be run at all */
[...]

On s390 network configuration is required.

> netcfg.c - Configure a network via DHCP or manual configuration
> -   for debian-installer
> +   for the debian-installer

This is incorrect.

Cheers,
FJP


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: Status of netcfg-static

2010-01-27 Thread Bastian Blank
On Wed, Jan 27, 2010 at 03:13:58PM +0100, Josef Wolf wrote:
> I am wondering what netcfg-static is good for.

It is used for s390.

> Given that the netcfg/disable_dhcp option exists, is netcfg-static really
> needed?

In the meantime this is correct. DHCP can be used on s390 with some
constraints, but it needs to be disabled by default.

Bastian

-- 
The man on tops walks a lonely street; the "chain" of command is often a noose.


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: Status of netcfg-static

2010-01-27 Thread Frans Pop
On Wednesday 27 January 2010, Bastian Blank wrote:
> In the meantime this is correct. DHCP can be used on s390 with some
> constraints, but it needs to be disabled by default.

Is it useful in practice though? I rather doubt anyone would want to set up 
an s390 box using DHCP.


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: Status of netcfg-static

2010-01-27 Thread Bastian Blank
On Wed, Jan 27, 2010 at 04:42:15PM +0100, Frans Pop wrote:
> On Wednesday 27 January 2010, Bastian Blank wrote:
> > In the meantime this is correct. DHCP can be used on s390 with some
> > constraints, but it needs to be disabled by default.
> Is it useful in practice though? I rather doubt anyone would want to set up 
> an s390 box using DHCP.

Not sure.

Bastian

-- 
Power is danger.
-- The Centurion, "Balance of Terror", stardate 1709.2


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



unused and removable partman templates

2010-01-27 Thread Joey Hess
AFAICS, the following templates are all not used anywhere:

partman-jfs/check_failed
partman-reiserfs/check_failed
partman-ext3/check_failed
partman-ext2r0/check_failed
partman-xfs/check_failed

Meanwhile, partman-basicfilesystems/check_failed is generic
template that could take the place of any of those if there
were later needed.

Similarly, there are generic
partman-basicfilesystems/progress_checking, create_failed,
specify_mountpoint, no_mount_point, and these are unused:

partman-jfs/progress_checking
partman-reiserfs/progress_checking
partman-ext3/progress_checking
partman-ext3/create_failed

While these are used but could be switched to use the generic templates
easily:

partman-ext2r0/progress_checking
partman-jfs/create_failed
partman-reiserfs/create_failed
partman-ext2r0/create_failed
partman-xfs/create_failed
partman-*/no_mount_point
partman-*/specify_mountpoint

My partman may be rusty, would appreciate a double-check.

-- 
see shy jo


signature.asc
Description: Digital signature


Bug#567182: gcc: Please add libgcc1-udeb for Debian Installer

2010-01-27 Thread Frans Pop
Source: gcc-4.4
Version: 1:4.4.3-1
Severity: wishlist
Tags: d-i patch
X-Debbugs-CC: debian-boot@lists.debian.org

Please consider the attached patch which adds a udeb for libgcc1 containing 
only libgcc_s.so.1. That file is needed for the (directfb based) graphical 
installer because of pthread_cancel(). See #373253 for background.

Until now we've been copying libgcc_s.so.1 from the host system at build 
time, but it would be much cleaner to install it from a udeb.

I've tested the patch on amd64 and it creates the udeb correctly.

Please review the patch carefully as there may be aspects that I've missed 
in the complexity of the build system or arch-specific considerations.

The file/udeb is currently only needed for amd64, i386 and powerpc, but it 
seems most logical to just build the udeb for all architectures.

From my test build:
$ debc libgcc1-udeb_4.4.3-2~fjp_amd64.udeb
libgcc1-udeb_4.4.3-2~fjp_amd64.udeb
---
 new debian package, version 2.0.
 size 43198 bytes: control archive= 330 bytes.
 277 bytes,10 lines  control
 Package: libgcc1-udeb
 Source: gcc-4.4 (4.4.3-2~fjp)
 Version: 1:4.4.3-2~fjp
 Architecture: amd64
 Maintainer: Debian GCC Maintainers 
 Installed-Size: 104
 Depends: libc6-udeb (>= 2.10)
 Section: debian-installer
 Priority: extra
 Description: GCC support library
drwxr-xr-x root/root 0 2010-01-27 20:19 ./
drwxr-xr-x root/root 0 2010-01-27 20:19 ./lib/
-rw-r--r-- root/root 90040 2010-01-27 20:19 ./lib/libgcc_s.so.1

diff -u gcc-4.4-4.4.3/debian/control.m4 gcc-4.4-4.4.3/debian/control.m4
--- gcc-4.4-4.4.3/debian/control.m4
+++ gcc-4.4-4.4.3/debian/control.m4
@@ -188,6 +188,14 @@
  environment.
 ')`'dnl
 
+Package: libgcc1-udeb`'LS
+XC-Package-Type: udeb
+Architecture: ifdef(`TARGET',`all',`any')
+Section: debian-installer
+Priority: extra
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+
 Package: libgcc2`'LS
 Architecture: ifdef(`TARGET',`all',`m68k')
 Section: ifdef(`TARGET',`devel',`libs')
diff -u gcc-4.4-4.4.3/debian/control gcc-4.4-4.4.3/debian/control
--- gcc-4.4-4.4.3/debian/control
+++ gcc-4.4-4.4.3/debian/control
@@ -36,6 +36,14 @@
 Description: GCC support library (debug symbols)
  Debug symbols for the GCC support library.
 
+Package: libgcc1-udeb
+XC-Package-Type: udeb
+Architecture: any
+Section: debian-installer
+Priority: extra
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: GCC support library
+
 Package: libgcc2
 Architecture: m68k
 Section: libs
diff -u gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk
--- gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk
+++ gcc-4.4-4.4.3/debian/rules.d/binary-libgcc.mk
@@ -14,8 +14,10 @@
 
 p_lgcc		= libgcc$(GCC_SONAME)
 p_lgccdbg	= libgcc$(GCC_SONAME)-dbg
+p_lgccudeb	= libgcc$(GCC_SONAME)-udeb
 d_lgcc		= debian/$(p_lgcc)
 d_lgccdbg	= debian/$(p_lgccdbg)
+d_lgccudeb	= debian/$(p_lgccudeb)
 
 p_l32gcc	= lib32gcc$(GCC_SONAME)
 p_l32gccdbg	= lib32gcc$(GCC_SONAME)-dbg
@@ -42,7 +44,10 @@
 	dh_installdirs -p$(p_lgcc) \
 		$(docdir)/$(p_lgcc) \
 		$(libdir)
-
+	dh_installdirs -p$(p_lgccudeb) \
+		$(libdir)
+ 
+	cp $(d)/$(PF)/lib/libgcc_s.so.$(GCC_SONAME) $(d_lgccudeb)/$(libdir)/.
 ifeq ($(with_shared_libgcc),yes)
 	mv $(d)/$(PF)/lib/libgcc_s.so.$(GCC_SONAME) $(d_lgcc)/$(libdir)/.
 endif
@@ -57,8 +62,9 @@
 	debian/dh_rmemptydirs -p$(p_lgcc)
 	debian/dh_rmemptydirs -p$(p_lgccdbg)
 	dh_strip -v -p$(p_lgcc) --dbg-package=$(p_lgccdbg)
-	dh_compress -p$(p_lgcc) -p$(p_lgccdbg)
-	dh_fixperms -p$(p_lgcc) -p$(p_lgccdbg)
+	dh_strip -v -p$(p_lgccudeb)
+	dh_compress -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb)
+	dh_fixperms -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb)
 ifeq ($(with_shared_libgcc),yes)
 	dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= $(DEB_LIBGCC_SOVERSION))' \
 		-- -v$(DEB_LIBGCC_VERSION)
@@ -68,17 +74,17 @@
   endif
 	cat debian/$(p_lgcc)/DEBIAN/shlibs >> debian/shlibs.local
 endif
-	dh_shlibdeps -p$(p_lgcc)
-	dh_gencontrol -p$(p_lgcc) -p$(p_lgccdbg) \
+	dh_shlibdeps -p$(p_lgcc) -p$(p_lgccudeb)
+	dh_gencontrol -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb) \
 		-- -v$(DEB_LIBGCC_VERSION) $(common_substvars)
 
 	mkdir -p $(d_lgcc)/usr/share/lintian/overrides
 	echo '$(p_lgcc): package-name-doesnt-match-sonames' \
 		> $(d_lgcc)/usr/share/lintian/overrides/$(p_lgcc)
 
-	dh_installdeb -p$(p_lgcc) -p$(p_lgccdbg)
-	dh_md5sums -p$(p_lgcc) -p$(p_lgccdbg)
-	dh_builddeb -p$(p_lgcc) -p$(p_lgccdbg)
+	dh_installdeb -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb)
+	dh_md5sums -p$(p_lgcc) -p$(p_lgccudeb)
+	dh_builddeb -p$(p_lgcc) -p$(p_lgccdbg) -p$(p_lgccudeb)
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
 


Re: Bug#567182: gcc: Please add libgcc1-udeb for Debian Installer

2010-01-27 Thread Frans Pop
--  Forwarded Message  --
From: Matthias Klose 

On 27.01.2010 21:03, Frans Pop wrote:
> Please consider the attached patch which adds a udeb for libgcc1
> containing only libgcc_s.so.1. That file is needed for the (directfb
> based) graphical installer because of pthread_cancel().

The patch itself looks ok, some other questions:

  - did you consider building the udeb from a separate source package,
build-depending on gcc-4.4-source? This way you don't need to copy
the file, and you don't need to add additional constraints for freezes
on the gcc-4.4 package. You could even copy the whole packaging and
conditionalize on the source package name for this new source package
to minimize the maintainance effort and get the updates/patches.

With --enable-languages=c --disable-bootstrap, the additional build
time penalty is the extra build of a one stage compiler for gcc.

  - you don't need the package for m68k/hppa yet, but if you do build
for every architecture anyway, please don't build the package for
these archs, but libgcc2, libgcc4, and libgcc6 udebs.

  - the patch should be prepared for gcc-4.5 as well.

If there are additional constraints for uploads of the gcc-4.4 source 
package during freeze times, I would prefer the approach to build the 
udeb's from a separate source.

   Matthias
---


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: Bug#567182: gcc: Please add libgcc1-udeb for Debian Installer

2010-01-27 Thread Frans Pop
Thanks a lot for the quick reply.

On Wednesday 27 January 2010, Matthias Klose wrote:
> The patch itself looks ok, some other questions:
>
>   - did you consider building the udeb from a separate source package,
> build-depending on gcc-4.4-source?

No, I had not considered that. It's an option that has both advantages and 
disadvantages.

The main disadvantage IIUC would be that we'd have to upload or binNMU that 
separate package every time gcc gets uploaded (for source compliance), 
which means it needs special tracking. I think for that reason it's a 
solution the Release team is generally not all that happy with.

>   - you don't need the package for m68k/hppa yet, but if you do build
> for every architecture anyway, please don't build the package for
> these archs, but libgcc2, libgcc4, and libgcc6 udebs.

For my current patch that would mean also adding those udebs in the 
control.m4 file, correct? And to avoid needing to code exceptions in 
rules.d/binary-libgcc.mk it's probably simplest to just do that even if we 
don't use them.

>   - the patch should be prepared for gcc-4.5 as well.

Will do if we decide on keeping it in gcc.

> If there are additional constraints for uploads of the gcc-4.4 source
> package during freeze times, I would prefer the approach to build the
> udeb's from a separate source.

No, given how the udeb will be used there are no additional restrictions. 
And now that migration to testing of udebs is supported in britney, 
there's also no longer any inconvenience there. (That was an important 
consideration why I've personally not pushed for this change in the past.)

The only point for attention is that if gcc would get uploaded after the 
final upload of D-I for a release, FTP-masters will need to keep a copy of 
the version included in that D-I build [1].
But that's something that already also done for other packages and is an 
item for the D-I and Debian release managers, not for the gcc maintainers.

Because of the above I think building the udeb from gcc is the most logical 
choice.

Cheers,
FJP

[1] They create a special suite for that purpose.


-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org



Re: Spam cleaning in list archives: one last effort needed

2010-01-27 Thread Frans Pop
Christian Perrier wrote:
> The remaining months, that should be targeted by anybody but
> me, Frans Pop, Holger Wansing and Lee Winter, are:
> * March 1999 to May 2000
> * October 2000 to July 2002
> * May and June 2004

I just see that as of yesterday the whole archive has now been scanned by 
at least 5 persons. Yay!
The honor of filling in the last bits goes to Nicolas Bertolissio for 
bringing 2001/04-09 to 5 scans.

It's also nice to see that quite a few months have had 6 or even 7 scans, 
which reduces the risk of spams being left over because one person missed 
it. Because of that such additional scans are quite nice, but not a must.
Of course, from now on scanning a month should be rather boring as you 
should encounter only very few spams. Maybe an opportunity pick a few 
threads and read up on the history of the project instead ;-)

My thanks (as the person who kicked of this little - or not so little - 
project) to everybody who's contributed to the cleanup.

Cheers,
FJP


signature.asc
Description: This is a digitally signed message part.


Build failures for hd-media

2010-01-27 Thread Christian PERRIER
Since 2 or 3 days, I'm having build failures on my local daily build
for i386.

They are restricted to hd-media target only:


.../...
  
rm -rf ./tmp/hd-media/syslinux/*
mkdir -p ./tmp/hd-media/syslinux
TYPE=standard INCLUDE_GTK= DESKTOP= \
syslinux-cfgs boot/x86 ./tmp/hd-media/syslinux
mkfs.msdos -i deb1 -n "Debian Inst" -C ./tmp/hd-media/boot.img 244736
mkfs.msdos 3.0.8 (23 Jan 2010)
# syslinux is used to make the image bootable
syslinux  ./tmp/hd-media/boot.img
mcopy -i./tmp/hd-media/boot.img ./tmp/hd-media/vmlinuz ::linux
Cannot initialize '::'
Bad target ::linux
make[2]: *** [arch_boot] Error 1
make[1]: *** [_build] Error 2
make: *** [build_hd-media] Error 2

I can of course provide the full build log if that's not enough.

-- 




signature.asc
Description: Digital signature