All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes
@ 2011-08-16 22:35 Khem Raj
  2011-08-16 22:35 ` [PATCH 1/5] conf,recipes: Redefine LINKER_HASH_STYLE Khem Raj
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-16 22:35 UTC (permalink / raw)
  To: openembedded-core

with this patchset, fix the uclibc image fallouts with various recent
recipe updates

Modify the way we pass linker hash style so it can be used in multiple
methods.

Pass information about default linker hash style to gcc configure
so that it passes the right flags to runtime libraries builds e.g.
libgcc libstdc++ etc.

The following changes since commit 3e872751690135178afb3a3f147bd002112c1bac:

  tcf-agent: Add openssl to DEPENDS (2011-08-16 15:29:09 -0700)

are available in the git repository at:
  git://git.openembedded.org/openembedded-core-contrib kraj/linker-hash-choice
  http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/linker-hash-choice

Khem Raj (5):
  conf,recipes: Redefine LINKER_HASH_STYLE
  gcc-4.6: Use --with-linker-hash-style configure option
  task-core-tools: Use LTTNGUST variable instead of hardcoding
    lttng-ust
  gdb: Add lttng-ust to DEPENDS only for eglibc
  tcf-agent: Add openssl to DEPENDS

 meta/conf/bitbake.conf                           |    4 ++--
 meta/conf/distro/include/tcmode-default.inc      |    6 +++++-
 meta/recipes-core/tasks/task-core-tools.bb       |    6 +++---
 meta/recipes-core/uclibc/uclibc.inc              |    2 +-
 meta/recipes-devtools/gcc/gcc-4.6.inc            |    3 ++-
 meta/recipes-devtools/gdb/gdb-common.inc         |   11 +++++++++--
 meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb |    4 ++--
 7 files changed, 24 insertions(+), 12 deletions(-)

-- 
1.7.5.4




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

* [PATCH 1/5] conf,recipes: Redefine LINKER_HASH_STYLE
  2011-08-16 22:35 [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes Khem Raj
@ 2011-08-16 22:35 ` Khem Raj
  2011-08-16 22:35 ` [PATCH 2/5] gcc-4.6: Use --with-linker-hash-style configure option Khem Raj
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-16 22:35 UTC (permalink / raw)
  To: openembedded-core

LINKER_HASH_STYLE is not set to either sysv or gnu
depending upon architecture e.g. mips does not support
gnu hash style among the supported architectures so
we make sure its set to 'sysv' form mips

Linker flags are munged to adhere to renamed variable

Third option is to set it to 'both' we do
not do that by default but user can still set it

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/conf/bitbake.conf                      |    4 ++--
 meta/conf/distro/include/tcmode-default.inc |    6 +++++-
 meta/recipes-core/uclibc/uclibc.inc         |    2 +-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index b309516..58a604a 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -475,9 +475,9 @@ BUILDSDK_LDFLAGS = "-L${STAGING_LIBDIR} \
                     -Wl,-rpath-link,${STAGING_DIR_HOST}${base_libdir} \
                     -Wl,-rpath,${base_libdir} -Wl,-O1"
 
-TARGET_LINK_HASH_STYLE ??= ""
+LINKER_HASH_STYLE ??= "gnu"
 export LDFLAGS = "${TARGET_LDFLAGS}"
-export TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE}"
+export TARGET_LDFLAGS = "-Wl,-O1 -Wl,--hash-style=${LINKER_HASH_STYLE}"
 #export TARGET_LDFLAGS = "-L${STAGING_DIR_TARGET}${libdir} \
 #                         -Wl,-rpath-link,${STAGING_DIR_TARGET}${libdir} \
 #                         -Wl,-O1"
diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
index 0d0af38..60f99ac 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -63,5 +63,9 @@ PREFERRED_VERSION_gzip-native ?= "1.4"
 
 # Setup suitable toolchain flags
 require conf/distro/include/as-needed.inc
-TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][bb.data.getVar('TARGET_ARCH', d, True) in ['mips', 'mipsel', 'mips64', 'mips64el']]}"
 
+# mips does not support GNU hash style therefore we hard assign them
+LINKER_HASH_STYLE_mips = "sysv"
+LINKER_HASH_STYLE_mipsel = "sysv"
+LINKER_HASH_STYLE_mips64 = "sysv"
+LINKER_HASH_STYLE_mips64el = "sysv"
diff --git a/meta/recipes-core/uclibc/uclibc.inc b/meta/recipes-core/uclibc/uclibc.inc
index 222c34f..ab10f1b 100644
--- a/meta/recipes-core/uclibc/uclibc.inc
+++ b/meta/recipes-core/uclibc/uclibc.inc
@@ -201,5 +201,5 @@ do_configure() {
 
 do_install() {
         oe_runmake PREFIX=${D} install
-        oe_runmake PREFIX=${D} "SSP_ALL_CFLAGS=${TARGET_LINK_HASH_STYLE}" install_utils
+        oe_runmake PREFIX=${D} "SSP_ALL_CFLAGS=-Wl,--hash-style=${LINKER_HASH_STYLE}" install_utils
 }
-- 
1.7.5.4




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

* [PATCH 2/5] gcc-4.6: Use --with-linker-hash-style configure option
  2011-08-16 22:35 [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes Khem Raj
  2011-08-16 22:35 ` [PATCH 1/5] conf,recipes: Redefine LINKER_HASH_STYLE Khem Raj
@ 2011-08-16 22:35 ` Khem Raj
  2011-08-16 22:35 ` [PATCH 3/5] task-core-tools: Use LTTNGUST variable instead of hardcoding lttng-ust Khem Raj
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-16 22:35 UTC (permalink / raw)
  To: openembedded-core

Depending upon what hash style is in use this uses
the right flag for setting the hash style type. This
fixes the QA errors about missing GNU hash style reported
in gcc-runtime build particularly libgcc

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-devtools/gcc/gcc-4.6.inc |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/meta/recipes-devtools/gcc/gcc-4.6.inc b/meta/recipes-devtools/gcc/gcc-4.6.inc
index 0a148b4..fffb779 100644
--- a/meta/recipes-devtools/gcc/gcc-4.6.inc
+++ b/meta/recipes-devtools/gcc/gcc-4.6.inc
@@ -1,6 +1,6 @@
 require gcc-common.inc
 
-PR = "r7"
+PR = "r8"
 
 # Third digit in PV should be incremented after a minor release
 # happens from this branch on gcc e.g. currently its 4.6.0
@@ -90,6 +90,7 @@ EXTRA_OECONF_BASE = " --enable-lto \
 			--disable-bootstrap \
 			--disable-libgomp \
 			--disable-libmudflap \
+			--with-linker-hash-style=${LINKER_HASH_STYLE} \
 			--enable-cheaders=c_global "
 
 EXTRA_OECONF_INITIAL = "--disable-libmudflap \
-- 
1.7.5.4




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

* [PATCH 3/5] task-core-tools: Use LTTNGUST variable instead of hardcoding lttng-ust
  2011-08-16 22:35 [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes Khem Raj
  2011-08-16 22:35 ` [PATCH 1/5] conf,recipes: Redefine LINKER_HASH_STYLE Khem Raj
  2011-08-16 22:35 ` [PATCH 2/5] gcc-4.6: Use --with-linker-hash-style configure option Khem Raj
@ 2011-08-16 22:35 ` Khem Raj
  2011-08-16 22:35 ` [PATCH 4/5] gdb: Add lttng-ust to DEPENDS only for eglibc Khem Raj
  2011-08-16 22:35 ` [PATCH 5/5] tcf-agent: Add openssl to DEPENDS Khem Raj
  4 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-16 22:35 UTC (permalink / raw)
  To: openembedded-core

This helps build on uclibc where lttng-ust is not included

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-core/tasks/task-core-tools.bb |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-core/tasks/task-core-tools.bb b/meta/recipes-core/tasks/task-core-tools.bb
index b0eb7d4..11ea723 100644
--- a/meta/recipes-core/tasks/task-core-tools.bb
+++ b/meta/recipes-core/tasks/task-core-tools.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "Tools tasks for OE-Core"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58 \
                     file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-PR = "r10"
+PR = "r11"
 
 PACKAGES = "\
     task-core-tools-debug \
@@ -76,8 +76,8 @@ LTTNGUST_libc-uclibc = ""
 # MIPS.
 RDEPENDS_task-core-tools-profile_append_qemux86 = " valgrind lttng-ust ${SYSTEMTAP}"
 RDEPENDS_task-core-tools-profile_append_qemux86-64 = " ${LTTNGUST} ${SYSTEMTAP}"
-RDEPENDS_task-core-tools-profile_append_qemuppc = " lttng-ust ${SYSTEMTAP}"
-RDEPENDS_task-core-tools-profile_append_qemuarm = " lttng-ust"
+RDEPENDS_task-core-tools-profile_append_qemuppc = " ${LTTNGUST} ${SYSTEMTAP}"
+RDEPENDS_task-core-tools-profile_append_qemuarm = " ${LTTNGUST}"
 
 RDEPENDS_task-core-tools-testapps = "\
     blktool \
-- 
1.7.5.4




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

* [PATCH 4/5] gdb: Add lttng-ust to DEPENDS only for eglibc
  2011-08-16 22:35 [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes Khem Raj
                   ` (2 preceding siblings ...)
  2011-08-16 22:35 ` [PATCH 3/5] task-core-tools: Use LTTNGUST variable instead of hardcoding lttng-ust Khem Raj
@ 2011-08-16 22:35 ` Khem Raj
  2011-08-16 22:35 ` [PATCH 5/5] tcf-agent: Add openssl to DEPENDS Khem Raj
  4 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-16 22:35 UTC (permalink / raw)
  To: openembedded-core

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-devtools/gdb/gdb-common.inc |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-devtools/gdb/gdb-common.inc b/meta/recipes-devtools/gdb/gdb-common.inc
index df6c70f..9879e97 100644
--- a/meta/recipes-devtools/gdb/gdb-common.inc
+++ b/meta/recipes-devtools/gdb/gdb-common.inc
@@ -2,9 +2,16 @@ DESCRIPTION = "gdb - GNU debugger"
 HOMEPAGE = "http://www.gnu.org/software/gdb/"
 LICENSE="GPLv3+"
 SECTION = "devel"
-DEPENDS = "ncurses readline elfutils lttng-ust"
+DEPENDS = "ncurses readline elfutils ${LTTNGUST}"
 
-INC_PR = "r2"
+LTTNGUST = "lttng-ust"
+LTTNGUST_libc-uclibc = ""
+LTTNGUST_mips = ""
+LTTNGUST_mipsel = ""
+LTTNGUST_mips64 = ""
+LTTNGUST_mips64el = ""
+
+INC_PR = "r3"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
 		file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674 \
-- 
1.7.5.4




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

* [PATCH 5/5] tcf-agent: Add openssl to DEPENDS
  2011-08-16 22:35 [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes Khem Raj
                   ` (3 preceding siblings ...)
  2011-08-16 22:35 ` [PATCH 4/5] gdb: Add lttng-ust to DEPENDS only for eglibc Khem Raj
@ 2011-08-16 22:35 ` Khem Raj
  2011-08-17  2:44   ` Cui, Dexuan
  4 siblings, 1 reply; 8+ messages in thread
From: Khem Raj @ 2011-08-16 22:35 UTC (permalink / raw)
  To: openembedded-core

It ends in errors like below otherwise

| framework/channel_tcp.c:34:27: fatal error: openssl/ssl.h: No such
file or directory
| compilation terminated.
| make: *** [obj/GNU/Linux/arm/Debug/framework/channel_tcp.o] Error 1
| make: *** Waiting for unfinished jobs....
| + die 'oe_runmake failed'
| + bbfatal 'oe_runmake failed'
| + echo 'ERROR: oe_runmake failed'
| ERROR: oe_runmake failed
| + exit 1

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
index 3f97f69..37591c2 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://../epl-v10.html;md5=7aa4215a330a0a4f6a1cbf8da1a0879f
 
 SRCREV = "1855"
 PV = "0.0+svnr${SRCPV}"
-PR = "r0"
+PR = "r1"
 
 SRC_URI = "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk;module=agent;proto=http \
            http://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/epl-v10.html;name=epl \
@@ -19,7 +19,7 @@ SRC_URI = "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk;module=ag
 SRC_URI[epl.md5sum] = "7aa4215a330a0a4f6a1cbf8da1a0879f"
 SRC_URI[epl.sha256sum] = "4fd64aeed340d62a64a8da4b371efe0f6d0d745f4d2dbefacba86c646d36bc72"
 
-DEPENDS = "util-linux"
+DEPENDS = "util-linux openssl"
 RDEPENDS_${PN} = "bash"
 
 S = "${WORKDIR}/agent"
-- 
1.7.5.4




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

* Re: [PATCH 5/5] tcf-agent: Add openssl to DEPENDS
  2011-08-16 22:35 ` [PATCH 5/5] tcf-agent: Add openssl to DEPENDS Khem Raj
@ 2011-08-17  2:44   ` Cui, Dexuan
  2011-08-17  5:09     ` Khem Raj
  0 siblings, 1 reply; 8+ messages in thread
From: Cui, Dexuan @ 2011-08-17  2:44 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

Khem Raj wrote on 2011-08-17:
> It ends in errors like below otherwise
> 
> | framework/channel_tcp.c:34:27: fatal error: openssl/ssl.h: No such
> file or directory
> | compilation terminated.
> | make: *** [obj/GNU/Linux/arm/Debug/framework/channel_tcp.o] Error 1
> | make: *** Waiting for unfinished jobs....
> | + die 'oe_runmake failed'
> | + bbfatal 'oe_runmake failed'
> | + echo 'ERROR: oe_runmake failed'
> | ERROR: oe_runmake failed
> | + exit 1
> 
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
> b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb index
> 3f97f69..37591c2 100644 ---
> a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb +++
> b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb @@ -8,7 +8,7 @@
> LIC_FILES_CHKSUM =
> "file://../epl-v10.html;md5=7aa4215a330a0a4f6a1cbf8da1a0879f
> 
>  SRCREV = "1855"
>  PV = "0.0+svnr${SRCPV}"
> -PR = "r0"
> +PR = "r1"
> 
>  SRC_URI =
> "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk;module=ag
> ent;p roto=http \
> 
> http://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/epl-v10.h
> tml;na me=epl \ @@ -19,7 +19,7 @@ SRC_URI =
> "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk;module=ag
>  SRC_URI[epl.md5sum] = "7aa4215a330a0a4f6a1cbf8da1a0879f"
>  SRC_URI[epl.sha256sum] =
> "4fd64aeed340d62a64a8da4b371efe0f6d0d745f4d2dbefacba86c646d36bc7 2"
> 
> -DEPENDS = "util-linux"
> +DEPENDS = "util-linux openssl"
>  RDEPENDS_${PN} = "bash"
>  
>  S = "${WORKDIR}/agent"
Hi, I have sent out the same patch 8+ hours ago. :-)

Thanks,
-- Dexuan





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

* Re: [PATCH 5/5] tcf-agent: Add openssl to DEPENDS
  2011-08-17  2:44   ` Cui, Dexuan
@ 2011-08-17  5:09     ` Khem Raj
  0 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-17  5:09 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

On Tue, Aug 16, 2011 at 7:44 PM, Cui, Dexuan <dexuan.cui@intel.com> wrote:
> Khem Raj wrote on 2011-08-17:
>> It ends in errors like below otherwise
>>
>> | framework/channel_tcp.c:34:27: fatal error: openssl/ssl.h: No such
>> file or directory
>> | compilation terminated.
>> | make: *** [obj/GNU/Linux/arm/Debug/framework/channel_tcp.o] Error 1
>> | make: *** Waiting for unfinished jobs....
>> | + die 'oe_runmake failed'
>> | + bbfatal 'oe_runmake failed'
>> | + echo 'ERROR: oe_runmake failed'
>> | ERROR: oe_runmake failed
>> | + exit 1
>>
>> Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> ---
>>  meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb |    4 ++--
>>  1 files changed, 2 insertions(+), 2 deletions(-)
>> diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb
>> b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb index
>> 3f97f69..37591c2 100644 ---
>> a/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb +++
>> b/meta/recipes-devtools/tcf-agent/tcf-agent_svn.bb @@ -8,7 +8,7 @@
>> LIC_FILES_CHKSUM =
>> "file://../epl-v10.html;md5=7aa4215a330a0a4f6a1cbf8da1a0879f
>>
>>  SRCREV = "1855"
>>  PV = "0.0+svnr${SRCPV}"
>> -PR = "r0"
>> +PR = "r1"
>>
>>  SRC_URI =
>> "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk;module=ag
>> ent;p roto=http \
>>
>> http://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/epl-v10.h
>> tml;na me=epl \ @@ -19,7 +19,7 @@ SRC_URI =
>> "svn://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk;module=ag
>>  SRC_URI[epl.md5sum] = "7aa4215a330a0a4f6a1cbf8da1a0879f"
>>  SRC_URI[epl.sha256sum] =
>> "4fd64aeed340d62a64a8da4b371efe0f6d0d745f4d2dbefacba86c646d36bc7 2"
>>
>> -DEPENDS = "util-linux"
>> +DEPENDS = "util-linux openssl"
>>  RDEPENDS_${PN} = "bash"
>>
>>  S = "${WORKDIR}/agent"
> Hi, I have sent out the same patch 8+ hours ago. :-)

thanks for doing that

>
> Thanks,
> -- Dexuan
>
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>



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

end of thread, other threads:[~2011-08-17  5:14 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-16 22:35 [PATCH 0/5] Redefine LINKER_HASH_STYLE and uclibc fixes Khem Raj
2011-08-16 22:35 ` [PATCH 1/5] conf,recipes: Redefine LINKER_HASH_STYLE Khem Raj
2011-08-16 22:35 ` [PATCH 2/5] gcc-4.6: Use --with-linker-hash-style configure option Khem Raj
2011-08-16 22:35 ` [PATCH 3/5] task-core-tools: Use LTTNGUST variable instead of hardcoding lttng-ust Khem Raj
2011-08-16 22:35 ` [PATCH 4/5] gdb: Add lttng-ust to DEPENDS only for eglibc Khem Raj
2011-08-16 22:35 ` [PATCH 5/5] tcf-agent: Add openssl to DEPENDS Khem Raj
2011-08-17  2:44   ` Cui, Dexuan
2011-08-17  5:09     ` 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.