All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2] glibc: Upgrade to latest tip of master
@ 2016-07-02  8:19 Khem Raj
  2016-07-07  5:39 ` Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Khem Raj @ 2016-07-02  8:19 UTC (permalink / raw)
  To: openembedded-core

- libc-package.bbclass: Do not use --old-style
  This option has been dropped from latest glibc

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/classes/libc-package.bbclass                      | 4 ++--
 meta/recipes-core/glibc/cross-localedef-native_2.24.bb | 2 +-
 meta/recipes-core/glibc/glibc_2.24.bb                  | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index 4f321d4..6624746 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -290,7 +290,7 @@ python package_do_split_gconvs () {
                 bb.error("locale_arch_options not found for target_arch=" + target_arch)
                 raise bb.build.FuncFailed("unknown arch:" + target_arch + " for locale_arch_options")
 
-            localedef_opts += " --force --old-style --no-archive --prefix=%s \
+            localedef_opts += " --force  --no-archive --prefix=%s \
                 --inputfile=%s/%s/i18n/locales/%s --charmap=%s %s/%s" \
                 % (treedir, treedir, datadir, locale, encoding, outputpath, name)
 
@@ -298,7 +298,7 @@ python package_do_split_gconvs () {
                 (path, i18npath, gconvpath, localedef_opts)
         else: # earlier slower qemu way 
             qemu = qemu_target_binary(d) 
-            localedef_opts = "--force --old-style --no-archive --prefix=%s \
+            localedef_opts = "--force --no-archive --prefix=%s \
                 --inputfile=%s/i18n/locales/%s --charmap=%s %s" \
                 % (treedir, datadir, locale, encoding, name)
 
diff --git a/meta/recipes-core/glibc/cross-localedef-native_2.24.bb b/meta/recipes-core/glibc/cross-localedef-native_2.24.bb
index 79c3132..c921211 100644
--- a/meta/recipes-core/glibc/cross-localedef-native_2.24.bb
+++ b/meta/recipes-core/glibc/cross-localedef-native_2.24.bb
@@ -22,7 +22,7 @@ GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
 SRCBRANCH ?= "master"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
 
-SRCREV_glibc ?= "1ac3eaa6bcc473a56340c24511786ff48a91293e"
+SRCREV_glibc ?= "76a0b73e8102c5bfb5cb791e34992472f5d1d33e"
 SRCREV_localedef ?= "29869b6dc11427c5bab839bdb155c85a7c644c71"
 
 SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
diff --git a/meta/recipes-core/glibc/glibc_2.24.bb b/meta/recipes-core/glibc/glibc_2.24.bb
index 77630e3..a5e1ad6 100644
--- a/meta/recipes-core/glibc/glibc_2.24.bb
+++ b/meta/recipes-core/glibc/glibc_2.24.bb
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \
 
 DEPENDS += "gperf-native"
 
-SRCREV ?= "1ac3eaa6bcc473a56340c24511786ff48a91293e"
+SRCREV ?= "76a0b73e8102c5bfb5cb791e34992472f5d1d33e"
 
 #SRCBRANCH ?= "release/${PV}/master"
 SRCBRANCH ?= "master"
-- 
2.9.0



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-02  8:19 [PATCH V2] glibc: Upgrade to latest tip of master Khem Raj
@ 2016-07-07  5:39 ` Trevor Woerner
  2016-07-07 16:27   ` Khem Raj
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2016-07-07  5:39 UTC (permalink / raw)
  To: Khem Raj; +Cc: openembedded-core

Even after applying this patch, I'm still seeing crashes in Chromium (which
aren't there before the glibc update to 2.24)

I wish I could understand why Chromium is crashing, but everything else seems
to run okay. I wouldn't be surprised to find Chromium is doing something
funky; but what, exactly, would be nice to know.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-07  5:39 ` Trevor Woerner
@ 2016-07-07 16:27   ` Khem Raj
  2016-07-07 20:05     ` Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Khem Raj @ 2016-07-07 16:27 UTC (permalink / raw)
  To: Trevor Woerner; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 447 bytes --]

Is it specific to x86-64

On Jul 6, 2016 10:38 PM, "Trevor Woerner" <twoerner@gmail.com> wrote:

> Even after applying this patch, I'm still seeing crashes in Chromium (which
> aren't there before the glibc update to 2.24)
>
> I wish I could understand why Chromium is crashing, but everything else
> seems
> to run okay. I wouldn't be surprised to find Chromium is doing something
> funky; but what, exactly, would be nice to know.
>

[-- Attachment #2: Type: text/html, Size: 739 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-07 16:27   ` Khem Raj
@ 2016-07-07 20:05     ` Trevor Woerner
  2016-07-07 20:25       ` Khem Raj
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2016-07-07 20:05 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

On Thu 2016-07-07 @ 09:27:30 AM, Khem Raj wrote:
> Is it specific to x86-64

Up to this point I've only been focused on x86-64, but now that I have things
cleared up on that arch, I'll be working on aarch64 to see how that goes.

My "solution" for the time-being is to simply pull in the glibc_2.23 recipes
into my build and set GLIBCVERSION to match. At some point I'll be trying to
bisect the glibc commits themselves to see if I can find anything conclusive
(but, as always, that'll take some time).


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-07 20:05     ` Trevor Woerner
@ 2016-07-07 20:25       ` Khem Raj
  2016-07-08 20:55         ` Khem Raj
  0 siblings, 1 reply; 8+ messages in thread
From: Khem Raj @ 2016-07-07 20:25 UTC (permalink / raw)
  To: Trevor Woerner; +Cc: Patches and discussions about the oe-core layer

[-- Attachment #1: Type: text/plain, Size: 706 bytes --]

Ok thanks. Let me know if you get to see the same issue on say qemuarm or
qemuarm64

On Jul 7, 2016 1:04 PM, "Trevor Woerner" <twoerner@gmail.com> wrote:

> On Thu 2016-07-07 @ 09:27:30 AM, Khem Raj wrote:
> > Is it specific to x86-64
>
> Up to this point I've only been focused on x86-64, but now that I have
> things
> cleared up on that arch, I'll be working on aarch64 to see how that goes.
>
> My "solution" for the time-being is to simply pull in the glibc_2.23
> recipes
> into my build and set GLIBCVERSION to match. At some point I'll be trying
> to
> bisect the glibc commits themselves to see if I can find anything
> conclusive
> (but, as always, that'll take some time).
>

[-- Attachment #2: Type: text/html, Size: 1014 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-07 20:25       ` Khem Raj
@ 2016-07-08 20:55         ` Khem Raj
  2016-07-18 12:16           ` Trevor Woerner
  0 siblings, 1 reply; 8+ messages in thread
From: Khem Raj @ 2016-07-08 20:55 UTC (permalink / raw)
  To: Trevor Woerner; +Cc: Patches and discussions about the oe-core layer

Trevor

On Thu, Jul 7, 2016 at 1:25 PM, Khem Raj <raj.khem@gmail.com> wrote:
> Ok thanks. Let me know if you get to see the same issue on say qemuarm or
> qemuarm64

I built core-image-sato/qemux86-64 vmdk with chromium added

CORE_IMAGE_EXTRA_INSTALL_append = " chromium "

launched this image in VM and chromium starts normally.

I am using github.com/kraj/openembedded-core kraj/master branch and
github.com/kraj/meta-raspberrypi kraj/master
everything else is upstream master and gcc is 5.x

here is my build info

Build Configuration:
BB_VERSION        = "1.31.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "universal"
TARGET_SYS        = "x86_64-oe-linux"
MACHINE           = "qemux86-64"
DISTRO            = "nodistro"
DISTRO_VERSION    = "nodistro.0"
TUNE_FEATURES     = "m64 core2"
TARGET_FPU        = ""
meta-raspberrypi  = "kraj/master:b9ba221e520f39bc3e273f709b5ceea02897d525"
meta-qcom         = "master:0eaea003cac6c3175b0a3682efd6e1f20ecc9dab"
meta-96boards     = "master:6b2744bf3e82154a9329ab89cf03eec9d1f80837"
oe-meta-go        = "master:dc19a245ae5224d1c9859119a9c53b6331812400"
meta-browser      = "master:77736988073a5d90fcff9d0005c8477332ede387"
meta-metrological = "kraj/master:356f0c33298eb63af415f333fe06121d056261e1"
meta-multimedia
meta-gnome
meta-oe           = "master:f11f8664de82e4f8c23b075542f4c98c16ce1f5e"
meta              = "kraj/master:96ed9e94082589a62a6c602e5f774c11de3328c6"



>
>
> On Jul 7, 2016 1:04 PM, "Trevor Woerner" <twoerner@gmail.com> wrote:
>>
>> On Thu 2016-07-07 @ 09:27:30 AM, Khem Raj wrote:
>> > Is it specific to x86-64
>>
>> Up to this point I've only been focused on x86-64, but now that I have
>> things
>> cleared up on that arch, I'll be working on aarch64 to see how that goes.
>>
>> My "solution" for the time-being is to simply pull in the glibc_2.23
>> recipes
>> into my build and set GLIBCVERSION to match. At some point I'll be trying
>> to
>> bisect the glibc commits themselves to see if I can find anything
>> conclusive
>> (but, as always, that'll take some time).


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-08 20:55         ` Khem Raj
@ 2016-07-18 12:16           ` Trevor Woerner
  2016-07-18 14:45             ` Khem Raj
  0 siblings, 1 reply; 8+ messages in thread
From: Trevor Woerner @ 2016-07-18 12:16 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer

On Fri 2016-07-08 @ 01:55:18 PM, Khem Raj wrote:
> Trevor
> 
> On Thu, Jul 7, 2016 at 1:25 PM, Khem Raj <raj.khem@gmail.com> wrote:
> > Ok thanks. Let me know if you get to see the same issue on say qemuarm or
> > qemuarm64
> 
> I built core-image-sato/qemux86-64 vmdk with chromium added
> 
> CORE_IMAGE_EXTRA_INSTALL_append = " chromium "
> 
> launched this image in VM and chromium starts normally.

Someday I hope that we'll have a mechanism in place that will be able to
better record the full information about a build to help make it easier for
multiple people to fully recreate the exact same builds, independently (iow,
in situations like this).

I've done my best to recreate your build, and I'm still seeing the failure.
I was able, however, to convince someone else to try building and running
chromium (from master), they tried it, and are seeing the run-time failure
too.

> 
> I am using github.com/kraj/openembedded-core kraj/master branch and
> github.com/kraj/meta-raspberrypi kraj/master
> everything else is upstream master and gcc is 5.x
> 
> here is my build info
> 
> Build Configuration:
> BB_VERSION        = "1.31.0"
> BUILD_SYS         = "x86_64-linux"
> NATIVELSBSTRING   = "universal"
> TARGET_SYS        = "x86_64-oe-linux"
> MACHINE           = "qemux86-64"
> DISTRO            = "nodistro"
> DISTRO_VERSION    = "nodistro.0"
> TUNE_FEATURES     = "m64 core2"
> TARGET_FPU        = ""
> meta-raspberrypi  = "kraj/master:b9ba221e520f39bc3e273f709b5ceea02897d525"
> meta-qcom         = "master:0eaea003cac6c3175b0a3682efd6e1f20ecc9dab"
> meta-96boards     = "master:6b2744bf3e82154a9329ab89cf03eec9d1f80837"
> oe-meta-go        = "master:dc19a245ae5224d1c9859119a9c53b6331812400"
> meta-browser      = "master:77736988073a5d90fcff9d0005c8477332ede387"
> meta-metrological = "kraj/master:356f0c33298eb63af415f333fe06121d056261e1"
> meta-multimedia
> meta-gnome
> meta-oe           = "master:f11f8664de82e4f8c23b075542f4c98c16ce1f5e"
> meta              = "kraj/master:96ed9e94082589a62a6c602e5f774c11de3328c6"

At first I looked at your list and thought to myself: why all the extras? For
qemux86-64, all that's needed are:
	- something to provide the meta (poky or openembedded-core)
	- meta-browser
	- meta-openembedded

As such my first build was:

        BB_VERSION        = "1.31.0"
        BUILD_SYS         = "x86_64-linux"
        NATIVELSBSTRING   = "SUSELINUX-42.1"
        TARGET_SYS        = "x86_64-oe-linux"
        MACHINE           = "qemux86-64"
        DISTRO            = "nodistro"
        DISTRO_VERSION    = "nodistro.0"
        TUNE_FEATURES     = "m64 core2"
        TARGET_FPU        = ""
        meta              = "kraj/master:f30e9793b8f247f691e5ffd023e1b83301508409"
        meta-browser      = "master:77736988073a5d90fcff9d0005c8477332ede387"
        meta-oe
        meta-gnome
        meta-multimedia   = "master:303d9ea960e2d88281079a4e71abe2cf8c815184"

Running chromium showed the failure, as usual.

So then I thought I'd try to recreate your build exactly -- except that's not possible:

	oe-meta-go from https://github.com/errordeveloper/oe-meta-go doesn't contain a dc19a245ae5224d1c9859119a9c53b6331812400
	meta-openembedded doesn't contain a f11f8664de82e4f8c23b075542f4c98c16ce1f5e
	openembedded-core from https://github.com/kraj/openembedded-core doesn't contain a 96ed9e94082589a62a6c602e5f774c11de3328c6


But even at that, I ended up removing meta-metrological because:
	ERROR: ParseError at /z/chromium-qemux86-64/meta-metrological/recipes-qt/qtbrowser/qtbrowser_2.0.11.bb:14: Could not inherit file classes/qmake5.bbclass


So I performed my build with:
        BB_VERSION        = "1.31.0"
        BUILD_SYS         = "x86_64-linux"
        NATIVELSBSTRING   = "SUSELINUX-42.1"
        TARGET_SYS        = "x86_64-oe-linux"
        MACHINE           = "qemux86-64"
        DISTRO            = "nodistro"
        DISTRO_VERSION    = "nodistro.0"
        TUNE_FEATURES     = "m64 core2"
        TARGET_FPU        = ""
        meta-raspberrypi__kraj = "HEAD:b9ba221e520f39bc3e273f709b5ceea02897d525"
        meta-qcom         = "HEAD:0eaea003cac6c3175b0a3682efd6e1f20ecc9dab"
        meta-96boards     = "HEAD:6b2744bf3e82154a9329ab89cf03eec9d1f80837"
        oe-meta-go        = "master:0712320950adf810fb324d49fba5d49ae19981b0"
        meta-browser      = "HEAD:77736988073a5d90fcff9d0005c8477332ede387"
        meta-oe
        meta-gnome
        meta-multimedia   = "master:303d9ea960e2d88281079a4e71abe2cf8c815184"
        meta              = "kraj/master:f30e9793b8f247f691e5ffd023e1b83301508409"

This build succeeded (with gcc-5%), but running chromium caused the failure to
occur, as usual.

In the last couple weeks I've built chromium for x86-64 52 times and haven't
once seen it run successfully unless glibc was at 2.23. Plus I've had someone
else independently build and run chromium once, and it failed. I'm baffled how
it could be failing for me but succeeding for you :-(


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH V2] glibc: Upgrade to latest tip of master
  2016-07-18 12:16           ` Trevor Woerner
@ 2016-07-18 14:45             ` Khem Raj
  0 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2016-07-18 14:45 UTC (permalink / raw)
  To: Trevor Woerner; +Cc: Patches and discussions about the oe-core layer

I also enable security flags

require conf/distro/include/no-static-libs.inc
require conf/distro/include/yocto-uninative.inc
require conf/distro/include/security_flags.inc

INHERIT += "uninative"

On Mon, Jul 18, 2016 at 5:16 AM, Trevor Woerner <twoerner@gmail.com> wrote:
> On Fri 2016-07-08 @ 01:55:18 PM, Khem Raj wrote:
>> Trevor
>>
>> On Thu, Jul 7, 2016 at 1:25 PM, Khem Raj <raj.khem@gmail.com> wrote:
>> > Ok thanks. Let me know if you get to see the same issue on say qemuarm or
>> > qemuarm64
>>
>> I built core-image-sato/qemux86-64 vmdk with chromium added
>>
>> CORE_IMAGE_EXTRA_INSTALL_append = " chromium "
>>
>> launched this image in VM and chromium starts normally.
>
> Someday I hope that we'll have a mechanism in place that will be able to
> better record the full information about a build to help make it easier for
> multiple people to fully recreate the exact same builds, independently (iow,
> in situations like this).
>
> I've done my best to recreate your build, and I'm still seeing the failure.
> I was able, however, to convince someone else to try building and running
> chromium (from master), they tried it, and are seeing the run-time failure
> too.
>
>>
>> I am using github.com/kraj/openembedded-core kraj/master branch and
>> github.com/kraj/meta-raspberrypi kraj/master
>> everything else is upstream master and gcc is 5.x
>>
>> here is my build info
>>
>> Build Configuration:
>> BB_VERSION        = "1.31.0"
>> BUILD_SYS         = "x86_64-linux"
>> NATIVELSBSTRING   = "universal"
>> TARGET_SYS        = "x86_64-oe-linux"
>> MACHINE           = "qemux86-64"
>> DISTRO            = "nodistro"
>> DISTRO_VERSION    = "nodistro.0"
>> TUNE_FEATURES     = "m64 core2"
>> TARGET_FPU        = ""
>> meta-raspberrypi  = "kraj/master:b9ba221e520f39bc3e273f709b5ceea02897d525"
>> meta-qcom         = "master:0eaea003cac6c3175b0a3682efd6e1f20ecc9dab"
>> meta-96boards     = "master:6b2744bf3e82154a9329ab89cf03eec9d1f80837"
>> oe-meta-go        = "master:dc19a245ae5224d1c9859119a9c53b6331812400"
>> meta-browser      = "master:77736988073a5d90fcff9d0005c8477332ede387"
>> meta-metrological = "kraj/master:356f0c33298eb63af415f333fe06121d056261e1"
>> meta-multimedia
>> meta-gnome
>> meta-oe           = "master:f11f8664de82e4f8c23b075542f4c98c16ce1f5e"
>> meta              = "kraj/master:96ed9e94082589a62a6c602e5f774c11de3328c6"
>
> At first I looked at your list and thought to myself: why all the extras? For
> qemux86-64, all that's needed are:
>         - something to provide the meta (poky or openembedded-core)
>         - meta-browser
>         - meta-openembedded
>
> As such my first build was:
>
>         BB_VERSION        = "1.31.0"
>         BUILD_SYS         = "x86_64-linux"
>         NATIVELSBSTRING   = "SUSELINUX-42.1"
>         TARGET_SYS        = "x86_64-oe-linux"
>         MACHINE           = "qemux86-64"
>         DISTRO            = "nodistro"
>         DISTRO_VERSION    = "nodistro.0"
>         TUNE_FEATURES     = "m64 core2"
>         TARGET_FPU        = ""
>         meta              = "kraj/master:f30e9793b8f247f691e5ffd023e1b83301508409"
>         meta-browser      = "master:77736988073a5d90fcff9d0005c8477332ede387"
>         meta-oe
>         meta-gnome
>         meta-multimedia   = "master:303d9ea960e2d88281079a4e71abe2cf8c815184"
>
> Running chromium showed the failure, as usual.
>
> So then I thought I'd try to recreate your build exactly -- except that's not possible:
>
>         oe-meta-go from https://github.com/errordeveloper/oe-meta-go doesn't contain a dc19a245ae5224d1c9859119a9c53b6331812400
>         meta-openembedded doesn't contain a f11f8664de82e4f8c23b075542f4c98c16ce1f5e
>         openembedded-core from https://github.com/kraj/openembedded-core doesn't contain a 96ed9e94082589a62a6c602e5f774c11de3328c6
>
>
> But even at that, I ended up removing meta-metrological because:
>         ERROR: ParseError at /z/chromium-qemux86-64/meta-metrological/recipes-qt/qtbrowser/qtbrowser_2.0.11.bb:14: Could not inherit file classes/qmake5.bbclass
>
>
> So I performed my build with:
>         BB_VERSION        = "1.31.0"
>         BUILD_SYS         = "x86_64-linux"
>         NATIVELSBSTRING   = "SUSELINUX-42.1"
>         TARGET_SYS        = "x86_64-oe-linux"
>         MACHINE           = "qemux86-64"
>         DISTRO            = "nodistro"
>         DISTRO_VERSION    = "nodistro.0"
>         TUNE_FEATURES     = "m64 core2"
>         TARGET_FPU        = ""
>         meta-raspberrypi__kraj = "HEAD:b9ba221e520f39bc3e273f709b5ceea02897d525"
>         meta-qcom         = "HEAD:0eaea003cac6c3175b0a3682efd6e1f20ecc9dab"
>         meta-96boards     = "HEAD:6b2744bf3e82154a9329ab89cf03eec9d1f80837"
>         oe-meta-go        = "master:0712320950adf810fb324d49fba5d49ae19981b0"
>         meta-browser      = "HEAD:77736988073a5d90fcff9d0005c8477332ede387"
>         meta-oe
>         meta-gnome
>         meta-multimedia   = "master:303d9ea960e2d88281079a4e71abe2cf8c815184"
>         meta              = "kraj/master:f30e9793b8f247f691e5ffd023e1b83301508409"
>
> This build succeeded (with gcc-5%), but running chromium caused the failure to
> occur, as usual.
>
> In the last couple weeks I've built chromium for x86-64 52 times and haven't
> once seen it run successfully unless glibc was at 2.23. Plus I've had someone
> else independently build and run chromium once, and it failed. I'm baffled how
> it could be failing for me but succeeding for you :-(


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-07-18 14:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-02  8:19 [PATCH V2] glibc: Upgrade to latest tip of master Khem Raj
2016-07-07  5:39 ` Trevor Woerner
2016-07-07 16:27   ` Khem Raj
2016-07-07 20:05     ` Trevor Woerner
2016-07-07 20:25       ` Khem Raj
2016-07-08 20:55         ` Khem Raj
2016-07-18 12:16           ` Trevor Woerner
2016-07-18 14:45             ` Khem Raj

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.