All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0
@ 2024-07-19  6:44 Wilfred Mallawa via buildroot
  2024-07-19  8:08 ` Alistair Francis
  2024-08-04 21:15 ` Thomas Petazzoni via buildroot
  0 siblings, 2 replies; 4+ messages in thread
From: Wilfred Mallawa via buildroot @ 2024-07-19  6:44 UTC (permalink / raw)
  To: buildroot; +Cc: Wilfred Mallawa, Alistair Francis

From: Wilfred Mallawa via buildroot <buildroot@buildroot.org>

`libspdm 3.3.0` and later support the SPDM event capability, however
this patch disables support for EVENT_CAP as it is optional,
and requires additional functionality implemented at link time.

`libspdm 3.4.0` also introduces SPDM1.3 measurement extention log (MEL).
Leave this off by default for the same reason as above.

Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
---
Changes in V3:
	- Updated to libspdm 3.4.0, this release includes the patch
	  that was being backported in V2.

 ...eLists-remove-fixed-options-for-NONE.patch | 52 -------------------
 package/libspdm/libspdm.hash                  |  2 +-
 package/libspdm/libspdm.mk                    |  6 ++-
 3 files changed, 5 insertions(+), 55 deletions(-)
 delete mode 100644 package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch

diff --git a/package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch b/package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch
deleted file mode 100644
index 0de0ad0079..0000000000
--- a/package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From d4d6b138d727e484fa9d0fef476ca181681d0695 Mon Sep 17 00:00:00 2001
-From: Wilfred Mallawa <wilfred.mallawa@wdc.com>
-Date: Mon, 19 Feb 2024 09:56:14 +1000
-Subject: [PATCH] CMakeLists: remove fixed options for NONE
-
-The use of the NONE toolchain option is such that we can provide at the
-build project level (buildroot etc...). However, the changes introduced
-in 811f2b596def04b3a36368cf2098546d7907767f set certain compiler/linker
-option that does not comply with the definition of the options as
-specified in [1]. This change removes those options.
-
-[1] https://github.com/DMTF/libspdm/blob/main/doc/build.md#linux-builds-inside-build-environments
-
-Upstream: https://github.com/DMTF/libspdm/commit/d4d6b138d727e484fa9d0fef476ca181681d0695
-Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
----
- CMakeLists.txt | 19 -------------------
- 1 file changed, 19 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9c300cc817..f6cf17d269 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -618,25 +618,6 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
-         SET(CMAKE_EXE_LINKER_FLAGS "")
- 
-         SET(CMAKE_C_LINK_EXECUTABLE "")
--
--    elseif(TOOLCHAIN STREQUAL "NONE")
--        ADD_COMPILE_OPTIONS(-fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -fno-common -Wno-address -fpie -fno-asynchronous-unwind-tables -flto -DUSING_LTO  -Wno-maybe-uninitialized -Wno-uninitialized  -Wno-builtin-declaration-mismatch -Wno-nonnull-compare -Werror-implicit-function-declaration)
--        if(CMAKE_BUILD_TYPE STREQUAL "Debug")
--            ADD_COMPILE_OPTIONS(-g)
--        endif()
--        if(GCOV STREQUAL "ON")
--        ADD_COMPILE_OPTIONS(--coverage -fprofile-arcs -ftest-coverage)
--        endif()
--        SET(OPENSSL_FLAGS -include base.h -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -Wno-cast-qual -Wno-error=implicit-function-declaration)
--        SET(CMOCKA_FLAGS -std=gnu99 -Wpedantic -Wall -Wshadow -Wmissing-prototypes -Wcast-align -Werror=address -Wstrict-prototypes -Werror=strict-prototypes -Wwrite-strings -Werror=write-strings -Werror-implicit-function-declaration -Wpointer-arith -Werror=pointer-arith -Wdeclaration-after-statement -Werror=declaration-after-statement -Wreturn-type -Werror=return-type -Wuninitialized -Werror=uninitialized -Werror=strict-overflow -Wstrict-overflow=2 -Wno-format-zero-length -Wmissing-field-initializers -Wformat-security -Werror=format-security -fno-common -Wformat -fno-common -fstack-protector-strong -Wno-cast-qual)
--
--        SET(CMAKE_LINKER ${CMAKE_C_COMPILER})
--        SET(CMAKE_EXE_LINKER_FLAGS "-flto -Wno-error -no-pie" )
--        if(GCOV STREQUAL "ON")
--        SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}  --coverage -lgcov -fprofile-arcs -ftest-coverage")
--        endif()
--        SET(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group")
--
-     endif()
- 
-     if(NOT TOOLCHAIN STREQUAL "NIOS2_GCC")
--- 
-2.43.2
-
diff --git a/package/libspdm/libspdm.hash b/package/libspdm/libspdm.hash
index 32415bcfce..1fe34fded1 100644
--- a/package/libspdm/libspdm.hash
+++ b/package/libspdm/libspdm.hash
@@ -1,3 +1,3 @@
 # Locally calculated
-sha256  0ee460c0ce5c4d126ca65f9c4bdabd5725b87cec7160b2d06721169df58f3a95  libspdm-3.2.0.tar.gz
+sha256  44f967aeb0c481676affe59069615252854bc0c072368ce4b26b6809a54daff5  libspdm-3.4.0.tar.gz
 sha256  7dc072bff163df39209bbb63e0916f4667c2a84cf3c36ccc84ec7425bc3e4779  LICENSE.md
diff --git a/package/libspdm/libspdm.mk b/package/libspdm/libspdm.mk
index 2ec35be0ac..1c7f12227e 100644
--- a/package/libspdm/libspdm.mk
+++ b/package/libspdm/libspdm.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBSPDM_VERSION = 3.2.0
+LIBSPDM_VERSION = 3.4.0
 LIBSPDM_SITE = $(call github,DMTF,libspdm,$(LIBSPDM_VERSION))
 LIBSPDM_LICENSE = BSD-3-Clause
 LIBSPDM_LICENSE_FILES = LICENSE.md
@@ -27,7 +27,9 @@ LIBSPDM_CONF_OPTS = \
 	-DCOMPILED_LIBSSL_PATH=/usr/lib/ \
 	-DDISABLE_TESTS=1 \
 	-DDISABLE_EDDSA=1 \
-	-DLINK_FLAGS=$(STAGING_DIR)
+	-DLINK_FLAGS=$(STAGING_DIR) \
+	-DCMAKE_C_FLAGS="-DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \
+		-DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0" ..
 
 define LIBSPDM_INSTALL_STAGING_CMDS
 	mkdir -p $(STAGING_DIR)/usr/lib
-- 
2.45.2

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0
  2024-07-19  6:44 [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0 Wilfred Mallawa via buildroot
@ 2024-07-19  8:08 ` Alistair Francis
  2024-08-04 21:15 ` Thomas Petazzoni via buildroot
  1 sibling, 0 replies; 4+ messages in thread
From: Alistair Francis @ 2024-07-19  8:08 UTC (permalink / raw)
  To: Wilfred Mallawa; +Cc: Alistair Francis, buildroot

On Fri, Jul 19, 2024 at 4:52 PM Wilfred Mallawa via buildroot
<buildroot@buildroot.org> wrote:
>
> From: Wilfred Mallawa via buildroot <buildroot@buildroot.org>
>
> `libspdm 3.3.0` and later support the SPDM event capability, however
> this patch disables support for EVENT_CAP as it is optional,
> and requires additional functionality implemented at link time.
>
> `libspdm 3.4.0` also introduces SPDM1.3 measurement extention log (MEL).
> Leave this off by default for the same reason as above.
>
> Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
> Changes in V3:
>         - Updated to libspdm 3.4.0, this release includes the patch
>           that was being backported in V2.
>
>  ...eLists-remove-fixed-options-for-NONE.patch | 52 -------------------
>  package/libspdm/libspdm.hash                  |  2 +-
>  package/libspdm/libspdm.mk                    |  6 ++-
>  3 files changed, 5 insertions(+), 55 deletions(-)
>  delete mode 100644 package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch
>
> diff --git a/package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch b/package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch
> deleted file mode 100644
> index 0de0ad0079..0000000000
> --- a/package/libspdm/0001-CMakeLists-remove-fixed-options-for-NONE.patch
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -From d4d6b138d727e484fa9d0fef476ca181681d0695 Mon Sep 17 00:00:00 2001
> -From: Wilfred Mallawa <wilfred.mallawa@wdc.com>
> -Date: Mon, 19 Feb 2024 09:56:14 +1000
> -Subject: [PATCH] CMakeLists: remove fixed options for NONE
> -
> -The use of the NONE toolchain option is such that we can provide at the
> -build project level (buildroot etc...). However, the changes introduced
> -in 811f2b596def04b3a36368cf2098546d7907767f set certain compiler/linker
> -option that does not comply with the definition of the options as
> -specified in [1]. This change removes those options.
> -
> -[1] https://github.com/DMTF/libspdm/blob/main/doc/build.md#linux-builds-inside-build-environments
> -
> -Upstream: https://github.com/DMTF/libspdm/commit/d4d6b138d727e484fa9d0fef476ca181681d0695
> -Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
> ----
> - CMakeLists.txt | 19 -------------------
> - 1 file changed, 19 deletions(-)
> -
> -diff --git a/CMakeLists.txt b/CMakeLists.txt
> -index 9c300cc817..f6cf17d269 100644
> ---- a/CMakeLists.txt
> -+++ b/CMakeLists.txt
> -@@ -618,25 +618,6 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
> -         SET(CMAKE_EXE_LINKER_FLAGS "")
> -
> -         SET(CMAKE_C_LINK_EXECUTABLE "")
> --
> --    elseif(TOOLCHAIN STREQUAL "NONE")
> --        ADD_COMPILE_OPTIONS(-fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -fno-common -Wno-address -fpie -fno-asynchronous-unwind-tables -flto -DUSING_LTO  -Wno-maybe-uninitialized -Wno-uninitialized  -Wno-builtin-declaration-mismatch -Wno-nonnull-compare -Werror-implicit-function-declaration)
> --        if(CMAKE_BUILD_TYPE STREQUAL "Debug")
> --            ADD_COMPILE_OPTIONS(-g)
> --        endif()
> --        if(GCOV STREQUAL "ON")
> --        ADD_COMPILE_OPTIONS(--coverage -fprofile-arcs -ftest-coverage)
> --        endif()
> --        SET(OPENSSL_FLAGS -include base.h -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -Wno-cast-qual -Wno-error=implicit-function-declaration)
> --        SET(CMOCKA_FLAGS -std=gnu99 -Wpedantic -Wall -Wshadow -Wmissing-prototypes -Wcast-align -Werror=address -Wstrict-prototypes -Werror=strict-prototypes -Wwrite-strings -Werror=write-strings -Werror-implicit-function-declaration -Wpointer-arith -Werror=pointer-arith -Wdeclaration-after-statement -Werror=declaration-after-statement -Wreturn-type -Werror=return-type -Wuninitialized -Werror=uninitialized -Werror=strict-overflow -Wstrict-overflow=2 -Wno-format-zero-length -Wmissing-field-initializers -Wformat-security -Werror=format-security -fno-common -Wformat -fno-common -fstack-protector-strong -Wno-cast-qual)
> --
> --        SET(CMAKE_LINKER ${CMAKE_C_COMPILER})
> --        SET(CMAKE_EXE_LINKER_FLAGS "-flto -Wno-error -no-pie" )
> --        if(GCOV STREQUAL "ON")
> --        SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}  --coverage -lgcov -fprofile-arcs -ftest-coverage")
> --        endif()
> --        SET(CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group")
> --
> -     endif()
> -
> -     if(NOT TOOLCHAIN STREQUAL "NIOS2_GCC")
> ---
> -2.43.2
> -
> diff --git a/package/libspdm/libspdm.hash b/package/libspdm/libspdm.hash
> index 32415bcfce..1fe34fded1 100644
> --- a/package/libspdm/libspdm.hash
> +++ b/package/libspdm/libspdm.hash
> @@ -1,3 +1,3 @@
>  # Locally calculated
> -sha256  0ee460c0ce5c4d126ca65f9c4bdabd5725b87cec7160b2d06721169df58f3a95  libspdm-3.2.0.tar.gz
> +sha256  44f967aeb0c481676affe59069615252854bc0c072368ce4b26b6809a54daff5  libspdm-3.4.0.tar.gz
>  sha256  7dc072bff163df39209bbb63e0916f4667c2a84cf3c36ccc84ec7425bc3e4779  LICENSE.md
> diff --git a/package/libspdm/libspdm.mk b/package/libspdm/libspdm.mk
> index 2ec35be0ac..1c7f12227e 100644
> --- a/package/libspdm/libspdm.mk
> +++ b/package/libspdm/libspdm.mk
> @@ -4,7 +4,7 @@
>  #
>  ################################################################################
>
> -LIBSPDM_VERSION = 3.2.0
> +LIBSPDM_VERSION = 3.4.0
>  LIBSPDM_SITE = $(call github,DMTF,libspdm,$(LIBSPDM_VERSION))
>  LIBSPDM_LICENSE = BSD-3-Clause
>  LIBSPDM_LICENSE_FILES = LICENSE.md
> @@ -27,7 +27,9 @@ LIBSPDM_CONF_OPTS = \
>         -DCOMPILED_LIBSSL_PATH=/usr/lib/ \
>         -DDISABLE_TESTS=1 \
>         -DDISABLE_EDDSA=1 \
> -       -DLINK_FLAGS=$(STAGING_DIR)
> +       -DLINK_FLAGS=$(STAGING_DIR) \
> +       -DCMAKE_C_FLAGS="-DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \
> +               -DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0" ..
>
>  define LIBSPDM_INSTALL_STAGING_CMDS
>         mkdir -p $(STAGING_DIR)/usr/lib
> --
> 2.45.2
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0
  2024-07-19  6:44 [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0 Wilfred Mallawa via buildroot
  2024-07-19  8:08 ` Alistair Francis
@ 2024-08-04 21:15 ` Thomas Petazzoni via buildroot
  2024-08-05  2:01   ` Wilfred Mallawa via buildroot
  1 sibling, 1 reply; 4+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-04 21:15 UTC (permalink / raw)
  To: Wilfred Mallawa via buildroot; +Cc: Wilfred Mallawa, Alistair Francis

Hello Wilfred,

On Fri, 19 Jul 2024 16:44:03 +1000
Wilfred Mallawa via buildroot <buildroot@buildroot.org> wrote:

> From: Wilfred Mallawa via buildroot <buildroot@buildroot.org>
> 
> `libspdm 3.3.0` and later support the SPDM event capability, however
> this patch disables support for EVENT_CAP as it is optional,
> and requires additional functionality implemented at link time.
> 
> `libspdm 3.4.0` also introduces SPDM1.3 measurement extention log (MEL).
> Leave this off by default for the same reason as above.
> 
> Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>

Thanks for this new iteration! Some comments/questions below.

> -LIBSPDM_VERSION = 3.2.0
> +LIBSPDM_VERSION = 3.4.0
>  LIBSPDM_SITE = $(call github,DMTF,libspdm,$(LIBSPDM_VERSION))
>  LIBSPDM_LICENSE = BSD-3-Clause
>  LIBSPDM_LICENSE_FILES = LICENSE.md
> @@ -27,7 +27,9 @@ LIBSPDM_CONF_OPTS = \
>  	-DCOMPILED_LIBSSL_PATH=/usr/lib/ \
>  	-DDISABLE_TESTS=1 \
>  	-DDISABLE_EDDSA=1 \
> -	-DLINK_FLAGS=$(STAGING_DIR)
> +	-DLINK_FLAGS=$(STAGING_DIR) \
> +	-DCMAKE_C_FLAGS="-DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \
> +		-DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0" ..

What is this ".." at the end of the line ?

Also, the way you're passing CFLAGS completely drops our
$(TARGET_CFLAGS). So instead you should do this:

LIBSPDM_CFLAGS = \
	$(TARGET_CFLAGS) \
	-DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \
	-DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0

and in the LIBSPDM_CONF_OPTS:

	-DCMAKE_C_FLAGS="$(LIBSPDM_CFLAGS)"

Thanks!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0
  2024-08-04 21:15 ` Thomas Petazzoni via buildroot
@ 2024-08-05  2:01   ` Wilfred Mallawa via buildroot
  0 siblings, 0 replies; 4+ messages in thread
From: Wilfred Mallawa via buildroot @ 2024-08-05  2:01 UTC (permalink / raw)
  To: buildroot@buildroot.org, thomas.petazzoni@bootlin.com
  Cc: alistair@alistair23.me

On Sun, 2024-08-04 at 23:15 +0200, Thomas Petazzoni via buildroot
wrote:
> Hello Wilfred,
> 
> On Fri, 19 Jul 2024 16:44:03 +1000
> Wilfred Mallawa via buildroot <buildroot@buildroot.org> wrote:
> 
> > From: Wilfred Mallawa via buildroot <buildroot@buildroot.org>
> > 
> > `libspdm 3.3.0` and later support the SPDM event capability,
> > however
> > this patch disables support for EVENT_CAP as it is optional,
> > and requires additional functionality implemented at link time.
> > 
> > `libspdm 3.4.0` also introduces SPDM1.3 measurement extention log
> > (MEL).
> > Leave this off by default for the same reason as above.
> > 
> > Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
> 
> Thanks for this new iteration! Some comments/questions below.
> 
> > -LIBSPDM_VERSION = 3.2.0
> > +LIBSPDM_VERSION = 3.4.0
> >  LIBSPDM_SITE = $(call github,DMTF,libspdm,$(LIBSPDM_VERSION))
> >  LIBSPDM_LICENSE = BSD-3-Clause
> >  LIBSPDM_LICENSE_FILES = LICENSE.md
> > @@ -27,7 +27,9 @@ LIBSPDM_CONF_OPTS = \
> >  	-DCOMPILED_LIBSSL_PATH=/usr/lib/ \
> >  	-DDISABLE_TESTS=1 \
> >  	-DDISABLE_EDDSA=1 \
> > -	-DLINK_FLAGS=$(STAGING_DIR)
> > +	-DLINK_FLAGS=$(STAGING_DIR) \
> > +	-DCMAKE_C_FLAGS="-DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \
> > +		-DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0" ..
> 
> What is this ".." at the end of the line ?
Good catch, I think it's just used to point to the `top-dir` from a
`sub-build-dir` but in this context, it should not be required. I've
removed it and have sent a V4 with your other comments addressed.

Wilfred
> 
> Also, the way you're passing CFLAGS completely drops our
> $(TARGET_CFLAGS). So instead you should do this:
> 
> LIBSPDM_CFLAGS = \
> 	$(TARGET_CFLAGS) \
> 	-DLIBSPDM_ENABLE_CAPABILITY_EVENT_CAP=0 \
> 	-DLIBSPDM_ENABLE_CAPABILITY_MEL_CAP=0
> 
> and in the LIBSPDM_CONF_OPTS:
> 
> 	-DCMAKE_C_FLAGS="$(LIBSPDM_CFLAGS)"
> 
> Thanks!
> 
> Thomas

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2024-08-05  2:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-19  6:44 [Buildroot] [PATCH v3 1/1] package/libspdm: bump version to 3.4.0 Wilfred Mallawa via buildroot
2024-07-19  8:08 ` Alistair Francis
2024-08-04 21:15 ` Thomas Petazzoni via buildroot
2024-08-05  2:01   ` Wilfred Mallawa via buildroot

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.