tree: 16c0cad1bcb4faf7d4237778a3c5e2aad8ff048d [path history] [tgz]
  1. 4.9/
  2. 4.9.bcr.1/
  3. 4.9.bcr.2/
  4. 4.9.bcr.3/
  5. metadata.json
  6. README.md
modules/sed/README.md

sed

The config_*.h and config_*.bzl files were generated by running ./configure on the relevant platform and invoking the following script:

"""A script for parsing data from `configure` outputs of `sed`."""

import json
import platform
import re
import shutil
from pathlib import Path

# Note that some values may be missing for platforms not currently tested.
KNOWN_VALUES = {
    "GNULIB__EXIT",
    "GNULIB_ACCESS",
    "GNULIB_ALIGNED_ALLOC",
    "GNULIB_ATOLL",
    "GNULIB_BTOWC",
    "GNULIB_CALLOC_GNU",
    "GNULIB_CALLOC_POSIX",
    "GNULIB_CANONICALIZE_FILE_NAME",
    "GNULIB_CHDIR",
    "GNULIB_CHMOD",
    "GNULIB_CHOWN",
    "GNULIB_CLOSE",
    "GNULIB_COPY_FILE_RANGE",
    "GNULIB_CREAT",
    "GNULIB_CTIME",
    "GNULIB_DPRINTF",
    "GNULIB_DUP",
    "GNULIB_DUP2",
    "GNULIB_DUP3",
    "GNULIB_DUPLOCALE",
    "GNULIB_ENVIRON",
    "GNULIB_EUIDACCESS",
    "GNULIB_EXECL",
    "GNULIB_EXECLE",
    "GNULIB_EXECLP",
    "GNULIB_EXECV",
    "GNULIB_EXECVE",
    "GNULIB_EXECVP",
    "GNULIB_EXECVPE",
    "GNULIB_EXPLICIT_BZERO",
    "GNULIB_FACCESSAT",
    "GNULIB_FCHDIR",
    "GNULIB_FCHMODAT",
    "GNULIB_FCHOWNAT",
    "GNULIB_FCLOSE",
    "GNULIB_FCNTL",
    "GNULIB_FDATASYNC",
    "GNULIB_FDOPEN",
    "GNULIB_FFLUSH",
    "GNULIB_FFSL",
    "GNULIB_FFSLL",
    "GNULIB_FGETC",
    "GNULIB_FGETS",
    "GNULIB_FOPEN",
    "GNULIB_FPRINTF_POSIX",
    "GNULIB_FPRINTF",
    "GNULIB_FPURGE",
    "GNULIB_FPUTC",
    "GNULIB_FPUTS",
    "GNULIB_FREAD",
    "GNULIB_FREE_POSIX",
    "GNULIB_FREOPEN",
    "GNULIB_FSCANF",
    "GNULIB_FSEEK",
    "GNULIB_FSEEKO",
    "GNULIB_FSTAT",
    "GNULIB_FSTATAT",
    "GNULIB_FSYNC",
    "GNULIB_FTELL",
    "GNULIB_FTELLO",
    "GNULIB_FTRUNCATE",
    "GNULIB_FUTIMENS",
    "GNULIB_FWRITE",
    "GNULIB_GETC",
    "GNULIB_GETCHAR",
    "GNULIB_GETCWD",
    "GNULIB_GETDELIM",
    "GNULIB_GETDOMAINNAME",
    "GNULIB_GETDTABLESIZE",
    "GNULIB_GETENTROPY",
    "GNULIB_GETGROUPS",
    "GNULIB_GETHOSTNAME",
    "GNULIB_GETLINE",
    "GNULIB_GETLOADAVG",
    "GNULIB_GETLOGIN_R",
    "GNULIB_GETLOGIN",
    "GNULIB_GETOPT_POSIX",
    "GNULIB_GETPAGESIZE",
    "GNULIB_GETPASS",
    "GNULIB_GETRANDOM",
    "GNULIB_GETSUBOPT",
    "GNULIB_GETUMASK",
    "GNULIB_GETUSERSHELL",
    "GNULIB_GRANTPT",
    "GNULIB_GROUP_MEMBER",
    "GNULIB_ISATTY",
    "GNULIB_ISBLANK",
    "GNULIB_ISWBLANK",
    "GNULIB_ISWCTYPE",
    "GNULIB_ISWDIGIT",
    "GNULIB_ISWXDIGIT",
    "GNULIB_LCHMOD",
    "GNULIB_LCHOWN",
    "GNULIB_LINK",
    "GNULIB_LINKAT",
    "GNULIB_LOCALECONV",
    "GNULIB_LOCALENAME",
    "GNULIB_LOCALTIME",
    "GNULIB_LSEEK",
    "GNULIB_LSTAT",
    "GNULIB_MALLOC_GNU",
    "GNULIB_MALLOC_POSIX",
    "GNULIB_MBRLEN",
    "GNULIB_MBRTOWC",
    "GNULIB_MBSCASECMP",
    "GNULIB_MBSCASESTR",
    "GNULIB_MBSCHR",
    "GNULIB_MBSCSPN",
    "GNULIB_MBSINIT",
    "GNULIB_MBSLEN",
    "GNULIB_MBSNCASECMP",
    "GNULIB_MBSNLEN",
    "GNULIB_MBSNRTOWCS",
    "GNULIB_MBSPBRK",
    "GNULIB_MBSPCASECMP",
    "GNULIB_MBSRCHR",
    "GNULIB_MBSRTOWCS",
    "GNULIB_MBSSEP",
    "GNULIB_MBSSPN",
    "GNULIB_MBSSTR",
    "GNULIB_MBSTOK_R",
    "GNULIB_MBTOWC",
    "GNULIB_MDA_ACCESS",
    "GNULIB_MDA_CHDIR",
    "GNULIB_MDA_CHMOD",
    "GNULIB_MDA_CLOSE",
    "GNULIB_MDA_CREAT",
    "GNULIB_MDA_DUP",
    "GNULIB_MDA_ECVT",
    "GNULIB_MDA_EXECL",
    "GNULIB_MDA_EXECLE",
    "GNULIB_MDA_EXECLP",
    "GNULIB_MDA_EXECV",
    "GNULIB_MDA_EXECVE",
    "GNULIB_MDA_EXECVP",
    "GNULIB_MDA_EXECVPE",
    "GNULIB_MDA_FCLOSEALL",
    "GNULIB_MDA_FCVT",
    "GNULIB_MDA_FDOPEN",
    "GNULIB_MDA_FILENO",
    "GNULIB_MDA_GCVT",
    "GNULIB_MDA_GETCWD",
    "GNULIB_MDA_GETPID",
    "GNULIB_MDA_GETW",
    "GNULIB_MDA_ISATTY",
    "GNULIB_MDA_LSEEK",
    "GNULIB_MDA_MEMCCPY",
    "GNULIB_MDA_MKDIR",
    "GNULIB_MDA_MKTEMP",
    "GNULIB_MDA_PUTENV",
    "GNULIB_MDA_PUTW",
    "GNULIB_MDA_READ",
    "GNULIB_MDA_RMDIR",
    "GNULIB_MDA_STRDUP",
    "GNULIB_MDA_SWAB",
    "GNULIB_MDA_TEMPNAM",
    "GNULIB_MDA_TZSET",
    "GNULIB_MDA_UMASK",
    "GNULIB_MDA_UNLINK",
    "GNULIB_MDA_WCSDUP",
    "GNULIB_MDA_WRITE",
    "GNULIB_MEMCHR",
    "GNULIB_MEMMEM",
    "GNULIB_MEMPCPY",
    "GNULIB_MEMRCHR",
    "GNULIB_MKDIR",
    "GNULIB_MKDIRAT",
    "GNULIB_MKDTEMP",
    "GNULIB_MKFIFO",
    "GNULIB_MKFIFOAT",
    "GNULIB_MKNOD",
    "GNULIB_MKNODAT",
    "GNULIB_MKOSTEMP",
    "GNULIB_MKOSTEMPS",
    "GNULIB_MKSTEMP",
    "GNULIB_MKSTEMPS",
    "GNULIB_MKTIME",
    "GNULIB_NANOSLEEP",
    "GNULIB_NL_LANGINFO",
    "GNULIB_NONBLOCKING",
    "GNULIB_OBSTACK_PRINTF_POSIX",
    "GNULIB_OBSTACK_PRINTF",
    "GNULIB_OPEN",
    "GNULIB_OPENAT",
    "GNULIB_OVERRIDES_STRUCT_STAT",
    "GNULIB_PCLOSE",
    "GNULIB_PERROR",
    "GNULIB_PIPE",
    "GNULIB_PIPE2",
    "GNULIB_POPEN",
    "GNULIB_POSIX_MEMALIGN",
    "GNULIB_POSIX_OPENPT",
    "GNULIB_PREAD",
    "GNULIB_PRINTF_POSIX",
    "GNULIB_PRINTF",
    "GNULIB_PTSNAME_R",
    "GNULIB_PTSNAME",
    "GNULIB_PUTC",
    "GNULIB_PUTCHAR",
    "GNULIB_PUTENV",
    "GNULIB_PUTS",
    "GNULIB_PWRITE",
    "GNULIB_QSORT_R",
    "GNULIB_RANDOM_R",
    "GNULIB_RANDOM",
    "GNULIB_RAWMEMCHR",
    "GNULIB_READ",
    "GNULIB_READLINK",
    "GNULIB_READLINKAT",
    "GNULIB_REALLOC_GNU",
    "GNULIB_REALLOC_POSIX",
    "GNULIB_REALLOCARRAY",
    "GNULIB_REALPATH",
    "GNULIB_REMOVE",
    "GNULIB_RENAME",
    "GNULIB_RENAMEAT",
    "GNULIB_RMDIR",
    "GNULIB_RPMATCH",
    "GNULIB_SCANF",
    "GNULIB_SECURE_GETENV",
    "GNULIB_SETENV",
    "GNULIB_SETHOSTNAME",
    "GNULIB_SETLOCALE_NULL",
    "GNULIB_SETLOCALE",
    "GNULIB_SIGABBREV_NP",
    "GNULIB_SIGDESCR_NP",
    "GNULIB_SLEEP",
    "GNULIB_SNPRINTF",
    "GNULIB_SPRINTF_POSIX",
    "GNULIB_STAT",
    "GNULIB_STDIO_H_NONBLOCKING",
    "GNULIB_STDIO_H_SIGPIPE",
    "GNULIB_STPCPY",
    "GNULIB_STPNCPY",
    "GNULIB_STRCASESTR",
    "GNULIB_STRCHRNUL",
    "GNULIB_STRDUP",
    "GNULIB_STRERROR_R",
    "GNULIB_STRERROR",
    "GNULIB_STRERRORNAME_NP",
    "GNULIB_STRFTIME",
    "GNULIB_STRNCAT",
    "GNULIB_STRNDUP",
    "GNULIB_STRNLEN",
    "GNULIB_STRPBRK",
    "GNULIB_STRPTIME",
    "GNULIB_STRSEP",
    "GNULIB_STRSIGNAL",
    "GNULIB_STRSTR",
    "GNULIB_STRTOD",
    "GNULIB_STRTOK_R",
    "GNULIB_STRTOL",
    "GNULIB_STRTOLD",
    "GNULIB_STRTOLL",
    "GNULIB_STRTOUL",
    "GNULIB_STRTOULL",
    "GNULIB_STRVERSCMP",
    "GNULIB_SYMLINK",
    "GNULIB_SYMLINKAT",
    "GNULIB_SYSTEM_POSIX",
    "GNULIB_TIME_R",
    "GNULIB_TIME_RZ",
    "GNULIB_TIMEGM",
    "GNULIB_TIMESPEC_GET",
    "GNULIB_TIMESPEC_GETRES",
    "GNULIB_TMPFILE",
    "GNULIB_TOWCTRANS",
    "GNULIB_TRUNCATE",
    "GNULIB_TTYNAME_R",
    "GNULIB_TZSET",
    "GNULIB_UNISTD_H_GETOPT",
    "GNULIB_UNLINK",
    "GNULIB_UNLINKAT",
    "GNULIB_UNLOCKPT",
    "GNULIB_UNSETENV",
    "GNULIB_USLEEP",
    "GNULIB_UTIMENSAT",
    "GNULIB_VASPRINTF",
    "GNULIB_VDPRINTF",
    "GNULIB_VFPRINTF_POSIX",
    "GNULIB_VFPRINTF",
    "GNULIB_VFSCANF",
    "GNULIB_VPRINTF_POSIX",
    "GNULIB_VPRINTF",
    "GNULIB_VSCANF",
    "GNULIB_VSNPRINTF",
    "GNULIB_VSPRINTF_POSIX",
    "GNULIB_WCPCPY",
    "GNULIB_WCPNCPY",
    "GNULIB_WCRTOMB",
    "GNULIB_WCSCASECMP",
    "GNULIB_WCSCAT",
    "GNULIB_WCSCHR",
    "GNULIB_WCSCMP",
    "GNULIB_WCSCOLL",
    "GNULIB_WCSCPY",
    "GNULIB_WCSCSPN",
    "GNULIB_WCSDUP",
    "GNULIB_WCSFTIME",
    "GNULIB_WCSLEN",
    "GNULIB_WCSNCASECMP",
    "GNULIB_WCSNCAT",
    "GNULIB_WCSNCMP",
    "GNULIB_WCSNCPY",
    "GNULIB_WCSNLEN",
    "GNULIB_WCSNRTOMBS",
    "GNULIB_WCSPBRK",
    "GNULIB_WCSRCHR",
    "GNULIB_WCSRTOMBS",
    "GNULIB_WCSSPN",
    "GNULIB_WCSSTR",
    "GNULIB_WCSTOK",
    "GNULIB_WCSWIDTH",
    "GNULIB_WCSXFRM",
    "GNULIB_WCTOB",
    "GNULIB_WCTOMB",
    "GNULIB_WCTRANS",
    "GNULIB_WCTYPE",
    "GNULIB_WCWIDTH",
    "GNULIB_WMEMCHR",
    "GNULIB_WMEMCMP",
    "GNULIB_WMEMCPY",
    "GNULIB_WMEMMOVE",
    "GNULIB_WMEMPCPY",
    "GNULIB_WMEMSET",
    "GNULIB_WRITE",
    "GNULIBHEADERS_OVERRIDE_WINT_T",
    "GUARD_PREFIX",
    "HAVE_ALLOCA_H",
    "HAVE_BTOWC",
    "HAVE_C99_STDINT_H",
    "HAVE_CANONICALIZE_FILE_NAME",
    "HAVE_DECL_ECVT",
    "HAVE_DECL_EXECVPE",
    "HAVE_DECL_FCLOSEALL",
    "HAVE_DECL_FCVT",
    "HAVE_DECL_GCVT",
    "HAVE_DECL_GETDELIM",
    "HAVE_DECL_MEMRCHR",
    "HAVE_DECL_UNSETENV",
    "HAVE_DECL_WCSDUP",
    "HAVE_DECL_WCTOB",
    "HAVE_DUPLOCALE",
    "HAVE_EXECVPE",
    "HAVE_FCNTL",
    "HAVE_FEATURES_H",
    "HAVE_FREELOCALE",
    "HAVE_GETDTABLESIZE",
    "HAVE_GETRANDOM",
    "HAVE_ISWBLANK",
    "HAVE_ISWCNTRL",
    "HAVE_LANGINFO_ALTMON",
    "HAVE_LANGINFO_CODESET",
    "HAVE_LANGINFO_ERA",
    "HAVE_LANGINFO_H",
    "HAVE_LANGINFO_T_FMT_AMPM",
    "HAVE_LANGINFO_YESEXPR",
    "HAVE_LSTAT",
    "HAVE_MBRLEN",
    "HAVE_MBRTOWC",
    "HAVE_MBSINIT",
    "HAVE_MBTOWC",
    "HAVE_MEMPCPY",
    "HAVE_MKOSTEMP",
    "HAVE_NEWLOCALE",
    "HAVE_NL_LANGINFO",
    "HAVE_RAWMEMCHR",
    "HAVE_READLINK",
    "HAVE_REALLOCARRAY",
    "HAVE_REALPATH",
    "HAVE_STDINT_H",
    "HAVE_STRVERSCMP",
    "HAVE_SYS_LOADAVG_H",
    "HAVE_SYS_RANDOM_H",
    "HAVE_TIMEZONE_T",
    "HAVE_UNISTD_H",
    "HAVE_WCHAR_H",
    "HAVE_WCRTOMB",
    "HAVE_WCTRANS_T",
    "HAVE_WCTYPE_H",
    "HAVE_WCTYPE_T",
    "HAVE_WINT_T",
    "HAVE_XLOCALE_H",
    "INCLUDE_NEXT",
    "LOCALENAME_ENHANCE_LOCALE_FUNCS",
    "NEXT_ASSERT_H",
    "NEXT_CTYPE_H",
    "NEXT_FCNTL_H",
    "NEXT_LANGINFO_H",
    "NEXT_LIMITS_H",
    "NEXT_LOCALE_H",
    "NEXT_STDINT_H",
    "NEXT_STDIO_H",
    "NEXT_STDLIB_H",
    "NEXT_STRING_H",
    "NEXT_SYS_RANDOM_H",
    "NEXT_SYS_STAT_H",
    "NEXT_SYS_TYPES_H",
    "NEXT_TIME_H",
    "NEXT_UNISTD_H",
    "NEXT_WCHAR_H",
    "NEXT_WCTYPE_H",
    "PRAGMA_COLUMNS",
    "PRAGMA_SYSTEM_HEADER",
    "REPLACE_BTOWC",
    "REPLACE_CALLOC_FOR_CALLOC_GNU",
    "REPLACE_CALLOC_FOR_CALLOC_POSIX",
    "REPLACE_CANONICALIZE_FILE_NAME",
    "REPLACE_CLOSE",
    "REPLACE_DUP2",
    "REPLACE_FCNTL",
    "REPLACE_FPRINTF",
    "REPLACE_FREE",
    "REPLACE_FSTAT",
    "REPLACE_GETDELIM",
    "REPLACE_GETDTABLESIZE",
    "REPLACE_GETRANDOM",
    "REPLACE_GMTIME",
    "REPLACE_ISWBLANK",
    "REPLACE_ISWCNTRL",
    "REPLACE_LOCALECONV",
    "REPLACE_LOCALTIME",
    "REPLACE_LSTAT",
    "REPLACE_MALLOC_FOR_MALLOC_GNU",
    "REPLACE_MALLOC_FOR_MALLOC_POSIX",
    "REPLACE_MBRLEN",
    "REPLACE_MBRTOWC",
    "REPLACE_MBSINIT",
    "REPLACE_MBSTATE_T",
    "REPLACE_MBTOWC",
    "REPLACE_MEMCHR",
    "REPLACE_MKDIR",
    "REPLACE_NL_LANGINFO",
    "REPLACE_OPEN",
    "REPLACE_PRINTF",
    "REPLACE_READLINK",
    "REPLACE_REALLOC_FOR_REALLOC_GNU",
    "REPLACE_REALLOC_FOR_REALLOC_POSIX",
    "REPLACE_REALLOCARRAY",
    "REPLACE_REALPATH",
    "REPLACE_RENAME",
    "REPLACE_RMDIR",
    "REPLACE_STAT",
    "REPLACE_STDIO_READ_FUNCS",
    "REPLACE_STDIO_WRITE_FUNCS",
    "REPLACE_STRERROR",
    "REPLACE_STRUCT_LCONV",
    "REPLACE_TOWLOWER",
    "REPLACE_VFPRINTF",
    "REPLACE_VPRINTF",
    "REPLACE_WCRTOMB",
    "REPLACE_WCTOB",
    "REPLACE_WCTOMB",
    "TIME_H_DEFINES_STRUCT_TIMESPEC",
    "TIME_H_DEFINES_TIME_UTC",
    "UNISTD_H_HAVE_SYS_RANDOM_H",
    "UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS",
    "UNISTD_H_HAVE_WINSOCK2_H",
    "WINDOWS_64_BIT_OFF_T",
    "WINDOWS_64_BIT_ST_SIZE",
    "WINDOWS_STAT_INODES",
}


def load_stat_variables(config_status: Path) -> dict[str, str]:
    results = {}
    pattern = re.compile(r'S\["([\w_]+)"\]="(.*)"')
    for line in config_status.read_text(encoding="utf-8").splitlines():
        matches = pattern.match(line)
        if matches:
            results[matches.group(1)] = matches.group(2)

    return results


_TEMPLATE = """\
\"\"\"Platform specific configuration values\"\"\"

CONFIGURATION = {}
"""


def main() -> None:
    config_h = Path("config.h")
    config_status = Path("config.status")

    variables = load_stat_variables(config_status)

    # insert known missing variables
    variables["GUARD_PREFIX"] = "GL"

    filtered = {}
    for value in KNOWN_VALUES:
        if value in variables:
            filtered[f"@{value}@"] = variables[value]
        elif f"GL_{value}" in variables:
            filtered[f"@{value}@"] = variables[f"GL_{value}"]
        else:
            print("MISSING:", value)

    plat_name = "linux"
    if platform.system() == "Windows":
        plat_name = "windows"
    if platform.system() == "Darwin":
        plat_name = "macos"

    shutil.copy2(config_h, config_h.parent / config_h.name.replace(".h", f"_{plat_name}.h"))
    Path(f"config_{plat_name}.bzl").write_text(
        _TEMPLATE.format(json.dumps(filtered, indent=4, sort_keys=True)),
        encoding="utf-8",
    )
    print("Done")


if __name__ == "__main__":
    main()