summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Hundven <bryanhundven@gmail.com>2014-12-15 17:33:43 (GMT)
committerBryan Hundven <bryanhundven@gmail.com>2014-12-15 17:33:43 (GMT)
commit0ee9ecbcf709b0e90dd825768bb917ca89db5e77 (patch)
treebdd2bb04b5a1ac92c567d5fd82b65d70b413a696
parent7275900f9ffce61fabc90e0ff870fec175976ffb (diff)
parent163a1737b8464ae241c0bfc1dfe61bbc668b3428 (diff)
Merge pull request #6 from davidholsgrove/libc_custom_location
Libc custom location
-rw-r--r--config/libc/eglibc.in25
-rw-r--r--config/libc/glibc.in23
-rw-r--r--scripts/build/libc/eglibc.sh11
-rw-r--r--scripts/build/libc/glibc-eglibc.sh-common12
-rw-r--r--scripts/build/libc/glibc.sh7
5 files changed, 71 insertions, 7 deletions
diff --git a/config/libc/eglibc.in b/config/libc/eglibc.in
index e939d03..8504cbf 100644
--- a/config/libc/eglibc.in
+++ b/config/libc/eglibc.in
@@ -79,6 +79,13 @@ config LIBC_EGLIBC_V_TRUNK
help
Selecting this will export the trunk of the eglibc subversion repository.
+config LIBC_EGLIBC_CUSTOM
+ bool
+ prompt "Custom eglibc"
+ depends on EXPERIMENTAL
+ select LIBC_EGLIBC_2_16_or_later
+ select LIBC_CUSTOM
+
endchoice
config LIBC_VERSION
@@ -96,10 +103,27 @@ config LIBC_VERSION
default "2_10" if LIBC_EGLIBC_V_2_10
default "2_9" if LIBC_EGLIBC_V_2_9
default "trunk" if LIBC_EGLIBC_V_TRUNK
+ default "custom" if LIBC_EGLIBC_CUSTOM
config LIBC_EGLIBC_2_16_or_later
bool
+config LIBC_CUSTOM
+ bool
+
+if LIBC_EGLIBC_CUSTOM
+
+config LIBC_EGLIBC_CUSTOM_LOCATION
+ string
+ prompt "Full path to custom eglibc source"
+ default ""
+ help
+ Enter the path to the directory (or tarball) of your source for eglibc,
+ or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/eglibc
+
+endif # LIBC_EGLIBC_CUSTOM
+if ! LIBC_EGLIBC_CUSTOM
+
if CONFIGURE_has_svn
config EGLIBC_REVISION
@@ -149,6 +173,7 @@ comment "| - or have a LAN mirror with a pre-downloaded tarball"
comment "otherwise you won't be able to download eglibc"
endif # ! CONFIGURE_has_svn
+endif # ! LIBC_EGLIBC_CUSTOM
config EGLIBC_OPT_SIZE
bool
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index d349dfb..f107438 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -95,11 +95,33 @@ config LIBC_GLIBC_V_2_8
prompt "2.8"
select LIBC_GLIBC_PORTS_EXTERNAL
+config LIBC_GLIBC_CUSTOM
+ bool
+ prompt "Custom glibc"
+ depends on EXPERIMENTAL
+ select LIBC_CUSTOM
+ select LIBC_GLIBC_2_20_or_later
+
endchoice
config LIBC_GLIBC_2_20_or_later
bool
+config LIBC_CUSTOM
+ bool
+
+if LIBC_GLIBC_CUSTOM
+
+config LIBC_GLIBC_CUSTOM_LOCATION
+ string
+ prompt "Full path to custom glibc source"
+ default ""
+ help
+ Enter the path to the directory (or tarball) of your source for glibc,
+ or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/glibc
+
+endif # LIBC_GLIBC_CUSTOM
+
config LIBC_VERSION
string
# Don't remove next line
@@ -120,3 +142,4 @@ config LIBC_VERSION
default "2.10.1" if LIBC_GLIBC_V_2_10_1
default "2.9" if LIBC_GLIBC_V_2_9
default "2.8" if LIBC_GLIBC_V_2_8
+ default "custom" if LIBC_GLIBC_CUSTOM
diff --git a/scripts/build/libc/eglibc.sh b/scripts/build/libc/eglibc.sh
index d7960d9..1f1095f 100644
--- a/scripts/build/libc/eglibc.sh
+++ b/scripts/build/libc/eglibc.sh
@@ -27,9 +27,14 @@ do_libc_get() {
*) svn_base+="/branches/eglibc-${CT_LIBC_VERSION}";;
esac
- CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \
- "${svn_base}/libc" \
- "${CT_EGLIBC_REVISION:-HEAD}"
+ if [ "${CT_LIBC_CUSTOM}" = "y" ]; then
+ CT_GetCustom "eglibc" "${CT_LIBC_VERSION}" "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}"
+ CT_LIBC_CUSTOM_LOCATION="${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}"
+ else
+ CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \
+ "${svn_base}/libc" \
+ "${CT_EGLIBC_REVISION:-HEAD}"
+ fi
if [ "${CT_LIBC_LOCALES}" = "y" ]; then
extra_addons+=("localedef")
diff --git a/scripts/build/libc/glibc-eglibc.sh-common b/scripts/build/libc/glibc-eglibc.sh-common
index af3b1f1..367a80d 100644
--- a/scripts/build/libc/glibc-eglibc.sh-common
+++ b/scripts/build/libc/glibc-eglibc.sh-common
@@ -4,10 +4,16 @@
do_libc_extract() {
local addon
- # Extract the main tarball
- CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}"
+ # Attempt CT_EXTRACT only if NOT custom, or CUSTOM_LOCATION is not a directory
+ if [ "${CT_LIBC_CUSTOM}" != "y" \
+ -o ! -d "${CT_LIBC_CUSTOM_LOCATION}" ]; then
+ CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}"
+ fi
CT_Pushd "${CT_SRC_DIR}/${CT_LIBC}-${CT_LIBC_VERSION}"
- CT_Patch nochdir "${CT_LIBC}" "${CT_LIBC_VERSION}"
+ # Attempt CT_PATCH only if NOT custom
+ if [ "${CT_LIBC_CUSTOM}" != "y" ]; then
+ CT_Patch nochdir "${CT_LIBC}" "${CT_LIBC_VERSION}"
+ fi
# Extract the add-opns
for addon in $(do_libc_add_ons_list " "); do
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index 7bc47c5..8093d94 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -19,9 +19,14 @@ do_libc_get() {
addons_list=($(do_libc_add_ons_list " "))
# Main source
- CT_GetFile "glibc-${CT_LIBC_VERSION}" \
+ if [ "${CT_LIBC_CUSTOM}" = "y" ]; then
+ CT_GetCustom "glibc" "${CT_LIBC_VERSION}" "${CT_LIBC_GLIBC_CUSTOM_LOCATION}"
+ CT_LIBC_CUSTOM_LOCATION="${CT_SRC_DIR}/glibc-${CT_LIBC_VERSION}"
+ else
+ CT_GetFile "glibc-${CT_LIBC_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/glibc \
ftp://{sourceware.org,gcc.gnu.org}/pub/glibc/{releases,snapshots}
+ fi
# C library addons
for addon in "${addons_list[@]}"; do