uClibc locale "package"

Does not build, though.

Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
Alexey Neyman 2017-07-03 14:49:54 -07:00
parent f63fbd356f
commit 16a56ed75b
7 changed files with 64 additions and 49 deletions

8
TODO
View File

@ -1,19 +1,19 @@
TBD TBD
packages todo packages todo
[ ] mention custom glibc addons are no longer handled (even though they never fully were, ct-ng would be unable to fetch them unless they were secretly placed into the download area) [X] mention custom glibc addons are no longer handled (even though they never fully were, ct-ng would be unable to fetch them unless they were secretly placed into the download area)
[ ] mention incompatibility of sample options [x] mention incompatibility of sample options
[X] version-locked packages [X] version-locked packages
[X] make glibc-ports package for glibc <2.17 (it has its own repo) [X] make glibc-ports package for glibc <2.17 (it has its own repo)
[ ] convert gen-kconfig to use templates [ ] convert gen-kconfig to use templates
[ ] switch to checked in generated files (config/versions, config/gen) - take too long to generate
[ ] new packages [ ] new packages
[ ] config.guess [ ] config.guess
[ ] gnulib [ ] gnulib
[ ] use gnulib in m4, gettext, libiconv, libtool [ ] use gnulib in m4, gettext, libiconv, libtool
[ ] autoconf-archive [ ] autoconf-archive
[ ] use to retrieve ax_pthread.m4 (gettext?) [ ] use to retrieve ax_pthread.m4 (gettext?)
[ ] uclibc-locales
[ ] some way of patching development sources - version based? or just directory with "apply-to-any-revision" patches. [ ] some way of patching development sources - version based? or just directory with "apply-to-any-revision" patches.
[ ] dependencies like cloog [x] dependencies like cloog
A (slightly) ordered set of tasks for crosstool-NG. Written in a cryptic language; contact me if you want to help with any of these :) A (slightly) ordered set of tasks for crosstool-NG. Written in a cryptic language; contact me if you want to help with any of these :)

View File

@ -5,7 +5,6 @@
## select ARCH_DEFAULT_LE ## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_BOTH_MMU ## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU ## select ARCH_DEFAULT_HAS_MMU
## select USE_OVERLAY
## ##
## help The xtensa architecture ## help The xtensa architecture
## help ## help

View File

@ -60,6 +60,10 @@ config LIBC_UCLIBC_LOCALES_PREGEN_DATA
If so, please report the issue, so we can default this If so, please report the issue, so we can default this
to off if too many people complain. to off if too many people complain.
if LIBC_UCLIBC_LOCALES_PREGEN_DATA
source "config/versions/uClibc-locale.in"
endif
config LIBC_UCLIBC_IPV6 config LIBC_UCLIBC_IPV6
bool bool
prompt "Add support for IPv6" prompt "Add support for IPv6"

View File

@ -0,0 +1,3 @@
# TBD repository='git git://git.busybox.net/uClibc'
mirrors='http://www.uclibc.org/downloads'
archive_dirname='.'

View File

@ -2,28 +2,20 @@
# Copyright 2007 Yann E. MORIN # Copyright 2007 Yann E. MORIN
# Licensed under the GPL v2. See COPYING in the root of this package # Licensed under the GPL v2. See COPYING in the root of this package
# This is a constant because it does not change very often.
# We're in 2010, and are still using data from 7 years ago.
uclibc_locales_version=030818
uclibc_locale_tarball="uClibc-locale-${uclibc_locales_version}"
if [ "${CT_UCLIBC_USE_UCLIBC_NG_ORG}" = "y" ]; then
# TBD make the name come from config/versions/uclibc.in
uclibc_name="uClibc-ng"
elif [ "${CT_UCLIBC_USE_UCLIBC_ORG}" = "y" ]; then
uclibc_name="uClibc"
fi
# Download uClibc # Download uClibc
do_libc_get() { do_libc_get() {
CT_Fetch UCLIBC_NG CT_Fetch UCLIBC
# TBD locales if [ "${CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA}" = "y" ]; then
CT_Fetch UCLIBC_LOCALE
fi
} }
# Extract uClibc # Extract uClibc
do_libc_extract() { do_libc_extract() {
CT_ExtractPatch UCLIBC_NG CT_ExtractPatch UCLIBC
# TBD locales if [ "${CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA}" = "y" ]; then
CT_ExtractPatch UCLIBC_LOCALE
fi
} }
# Build and install headers and start files # Build and install headers and start files
@ -68,16 +60,19 @@ do_libc_backend_once() {
local -a make_args local -a make_args
local extra_cflags f cfg_cflags cf local extra_cflags f cfg_cflags cf
local hdr_install_subdir local hdr_install_subdir
local uclibc_name
for arg in "$@"; do for arg in "$@"; do
eval "${arg// /\\ }" eval "${arg// /\\ }"
done done
CT_DoStep INFO "Building for multilib ${multi_index}/${multi_count}: '${multi_flags}'" if [ "${CT_UCLIBC_USE_UCLIBC_NG_ORG}" = "y" ]; then
uclibc_name="uClibc-ng"
elif [ "${CT_UCLIBC_USE_UCLIBC_ORG}" = "y" ]; then
uclibc_name="uClibc"
fi
# Simply copy files until uClibc has the ability to build out-of-tree CT_DoStep INFO "Building for multilib ${multi_index}/${multi_count}: '${multi_flags}'"
CT_DoLog EXTRA "Copying sources to build dir"
CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/${uclibc_name}/." .
multilib_dir="lib/${multi_os_dir}" multilib_dir="lib/${multi_os_dir}"
startfiles_dir="${multi_root}/usr/${multilib_dir}" startfiles_dir="${multi_root}/usr/${multilib_dir}"
@ -97,11 +92,22 @@ do_libc_backend_once() {
HOSTCC="${CT_BUILD}-gcc" \ HOSTCC="${CT_BUILD}-gcc" \
PREFIX="${multi_root}/" \ PREFIX="${multi_root}/" \
MULTILIB_DIR="${multilib_dir}" \ MULTILIB_DIR="${multilib_dir}" \
LOCALE_DATA_FILENAME="${uclibc_locale_tarball}.tgz" \
STRIPTOOL=true \ STRIPTOOL=true \
${CT_LIBC_UCLIBC_VERBOSITY} \ ${CT_LIBC_UCLIBC_VERBOSITY} \
) )
# Simply copy files until uClibc has the ability to build out-of-tree
CT_DoLog EXTRA "Copying sources to build dir"
CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/uClibc/." .
if [ "${CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA}" = "y" ]; then
# uClibc's makefile insists on unpacking, but that would screw fetching from
# non-tarball locations.
CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/uClibc-locale/." extra/locale
CT_DoExecLog ALL touch extra/locale/dummy-file
CT_DoExecLog ALL tar czf extra/locale/dummy.tar.gz -C extra/locale dummy-file
make_args+=( LOCALE_DATA_FILENAME=dummy.tar.gz )
fi
# Force the date of the pregen locale data, as the # Force the date of the pregen locale data, as the
# newer ones that are referenced are not available # newer ones that are referenced are not available
CT_DoLog EXTRA "Applying configuration" CT_DoLog EXTRA "Applying configuration"
@ -298,24 +304,20 @@ manage_uClibc_config() {
# entirely if LOCALE is not set. If LOCALE was already set, we'll # entirely if LOCALE is not set. If LOCALE was already set, we'll
# assume the user has already made all the appropriate generation # assume the user has already made all the appropriate generation
# arrangements. Note that having the uClibc Makefile download the # arrangements. Note that having the uClibc Makefile download the
# pregenerated locales is not compatible with crosstool; besides, # pregenerated locales is not compatible with crosstool.
# crosstool downloads them as part of getandpatch.sh.
CT_KconfigDeleteOption "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE" "${dst}"
case "${CT_LIBC_UCLIBC_LOCALES}:${CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA}" in case "${CT_LIBC_UCLIBC_LOCALES}:${CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA}" in
:*) :*)
;; ;;
y:) y:)
CT_KconfigEnableOption "UCLIBC_HAS_LOCALE" "${dst}" CT_KconfigEnableOption "UCLIBC_HAS_LOCALE" "${dst}"
CT_KconfigDeleteOption "UCLIBC_PREGENERATED_LOCALE_DATA" "${dst}" CT_KconfigDeleteOption "UCLIBC_PREGENERATED_LOCALE_DATA" "${dst}"
CT_KconfigDeleteOption "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA" \ CT_KconfigDeleteOption "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA" "${dst}"
"${dst}"
CT_KconfigDeleteOption "UCLIBC_HAS_XLOCALE" "${dst}" CT_KconfigDeleteOption "UCLIBC_HAS_XLOCALE" "${dst}"
;; ;;
y:y) y:y)
CT_KconfigEnableOption "UCLIBC_HAS_LOCALE" "${dst}" CT_KconfigEnableOption "UCLIBC_HAS_LOCALE" "${dst}"
CT_KconfigEnableOption "UCLIBC_PREGENERATED_LOCALE_DATA" "${dst}" CT_KconfigEnableOption "UCLIBC_PREGENERATED_LOCALE_DATA" "${dst}"
CT_KconfigDeleteOption "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA" \ CT_KconfigDeleteOption "UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA" "${dst}"
"${dst}"
CT_KconfigDeleteOption "UCLIBC_HAS_XLOCALE" "${dst}" CT_KconfigDeleteOption "UCLIBC_HAS_XLOCALE" "${dst}"
;; ;;
esac esac

View File

@ -537,18 +537,14 @@ CT_Pushd() {
pushd "$1" >/dev/null 2>&1 pushd "$1" >/dev/null 2>&1
} }
CT_Popd() { CT_Popd() {
local dir=`dirs +0`
CT_DoLog DEBUG "Leaving '${dir}'"
popd >/dev/null 2>&1 popd >/dev/null 2>&1
} }
# Create a dir and cd or pushd into it # Create a dir and pushd into it
# Usage: CT_mkdir_cd <dir/to/create> # Usage: CT_mkdir_pushd <dir/to/create>
# CT_mkdir_pushd <dir/to/create>
CT_mkdir_cd() {
local dir="${1}"
mkdir -p "${dir}"
cd "${dir}"
}
CT_mkdir_pushd() { CT_mkdir_pushd() {
local dir="${1}" local dir="${1}"
@ -1718,7 +1714,12 @@ CT_DoFetch()
local tmp_dir local tmp_dir
if [ "${src_release}" = "y" ]; then if [ "${src_release}" = "y" ]; then
# Some packages do not contain any directory level at all
if [ "${archive_dirname}" != "." ]; then
basename="${archive_dirname}" basename="${archive_dirname}"
else
basename="${pkg_name}-${version}"
fi
if ! CT_GetFile "${archive_filename}" ${mirrors}; then if ! CT_GetFile "${archive_filename}" ${mirrors}; then
CT_Abort "${pkg_name}: download failed" CT_Abort "${pkg_name}: download failed"
fi fi
@ -1869,7 +1870,13 @@ CT_DoExtractPatch()
fi fi
# TBD save/discover the extension while fetching # TBD save/discover the extension while fetching
ext=`CT_GetFileExtension "${archive}"` ext=`CT_GetFileExtension "${archive}"`
if [ "${archive_dirname}" = "." ]; then
CT_mkdir_pushd "${CT_COMMON_SRC_DIR}/${basename}"
CT_Extract "${CT_TARBALLS_DIR}/${archive}${ext}" "${CT_COMMON_SRC_DIR}/${basename}"
CT_Popd
else
CT_Extract "${CT_TARBALLS_DIR}/${archive}${ext}" "${CT_COMMON_SRC_DIR}" CT_Extract "${CT_TARBALLS_DIR}/${archive}${ext}" "${CT_COMMON_SRC_DIR}"
fi
CT_DoExecLog ALL touch "${CT_COMMON_SRC_DIR}/.${basename}.extracted" CT_DoExecLog ALL touch "${CT_COMMON_SRC_DIR}/.${basename}.extracted"
CT_DoExecLog ALL rm -f "${CT_COMMON_SRC_DIR}/.${basename}.extracting" CT_DoExecLog ALL rm -f "${CT_COMMON_SRC_DIR}/.${basename}.extracting"
fi fi
@ -1937,7 +1944,7 @@ CT_DoExtractPatch()
CT_DoLog WARN "${pkg_name}: using custom location, no overlays applied" CT_DoLog WARN "${pkg_name}: using custom location, no overlays applied"
fi fi
if [ -d "${custom_location}" ]; then if [ -d "${custom_location}" ]; then
CT_DoExecLog ALL cp -av "${custom_location}" "${CT_SRC_DIR}/${pkg_name}" CT_DoExecLog ALL cp -av "${custom_location}" "${CT_SRC_DIR}/${dir_name}"
elif [ -f "${custom_location}" ]; then elif [ -f "${custom_location}" ]; then
# Assume "foo.tar.gz" (or likes) contain the "foo" directory # Assume "foo.tar.gz" (or likes) contain the "foo" directory
local bn local bn
@ -1945,7 +1952,7 @@ CT_DoExtractPatch()
CT_Extract "${custom_location}" "${CT_SRC_DIR}" CT_Extract "${custom_location}" "${CT_SRC_DIR}"
bn=`CT_GetFileBasename "${custom_location##*/}"` bn=`CT_GetFileBasename "${custom_location##*/}"`
CT_TestOrAbort "Unknown file extension: ${custom_location}" -n "${bn}" CT_TestOrAbort "Unknown file extension: ${custom_location}" -n "${bn}"
CT_DoExecLog ALL mv -v "${CT_SRC_DIR}/${bn%${ext}}" "${CT_SRC_DIR}/${pkg_name}" CT_DoExecLog ALL mv -v "${CT_SRC_DIR}/${bn%${ext}}" "${CT_SRC_DIR}/${dir_name}"
else else
CT_Abort "Neither file nor directory: ${custom_location}" CT_Abort "Neither file nor directory: ${custom_location}"
fi fi
@ -1953,13 +1960,13 @@ CT_DoExtractPatch()
# Possibly has overlays; copy from common source and apply overlays if any # Possibly has overlays; copy from common source and apply overlays if any
local overlay local overlay
CT_DoExecLog ALL cp -av "${CT_COMMON_SRC_DIR}/${basename}" "${CT_SRC_DIR}/${pkg_name}" CT_DoExecLog ALL cp -av "${CT_COMMON_SRC_DIR}/${basename}" "${CT_SRC_DIR}/${dir_name}"
overlay="${CT_OVERLAY_LOCATION}/${CT_ARCH}-${CT_OVERLAY_NAME:-overlay}" overlay="${CT_OVERLAY_LOCATION}/${CT_ARCH}-${CT_OVERLAY_NAME:-overlay}"
ext=`CT_GetFileExtension "${overlay}"` ext=`CT_GetFileExtension "${overlay}"`
CT_Extract "${overlay}${ext}" "${CT_SRC_DIR}" "${pkg_name}" CT_Extract "${overlay}${ext}" "${CT_SRC_DIR}" "${dir_name}"
else else
# Common source, just symlink # Common source, just symlink
CT_DoExecLog ALL ln -s "${CT_COMMON_SRC_DIR}/${basename}" "${CT_SRC_DIR}/${pkg_name}" CT_DoExecLog ALL ln -s "${CT_COMMON_SRC_DIR}/${basename}" "${CT_SRC_DIR}/${dir_name}"
fi fi
} }