Package: kbuild Version: 1:0.1.98svn2318-1 Severity: important Tags: patch User: [email protected] Usertags: kfreebsd
kBuild FTBFS on GNU/kFreeBSD. The attached patch fixes this. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (990, 'unstable'), (350, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.30-1-amd64 (SMP w/2 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages kbuild depends on: ii libc6 2.9-23 GNU C Library: Shared libraries kbuild recommends no packages. kbuild suggests no packages. -- no debconf information -- Julian Andres Klode - Free Software Developer Debian Developer - Contributing Member of SPI Ubuntu Member - Fellow of FSFE Website: http://jak-linux.org/ XMPP: [email protected] Debian: http://www.debian.org/ SPI: http://www.spi-inc.org/ Ubuntu: http://www.ubuntu.com/ FSFE: http://www.fsfe.org/
Author: Julian Andres Klode <[email protected]> Description: Add support for GNU/kFreeBSD platforms to kbuild. This patch adds support for GNU/kFreeBSD. It still has a few problems, like the missing fflagstostr() and strtofflags() functions or the unresolved clock_gettime(), which have all been worked around for now. Index: kbuild-0.1.98svn2318/src/kmk/dir.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/dir.c 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/dir.c 2009-08-06 18:52:25.000000000 +0200 @@ -42,7 +42,7 @@ # endif /* HAVE_VMSDIR_H */ #endif /* bird: FreeBSD + smbfs -> readdir() + EBADF */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) # include <sys/mount.h> #endif /* bird: end */ @@ -783,7 +783,7 @@ To exactly determin the cause here, I should probably do some smbfs tracing, but for now just ignoring the EBADF on seems to work. (The smb server is 64-bit vista, btw.) */ -#if defined (__FreeBSD__) +#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) struct statfs stfs; int saved_errno = errno; errno = 0; Index: kbuild-0.1.98svn2318/src/kmk/incdep.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/incdep.c 2009-08-06 18:51:38.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/incdep.c 2009-08-06 18:52:25.000000000 +0200 @@ -606,7 +606,7 @@ if (getenv ("KMK_THREADS_ENABLED")) return 1; -#if defined (__gnu_linux__) || defined (__linux__) +#if defined (__gnu_linux__) || defined (__linux__) || defined(__GLIBC__) /* Try detect fakeroot. */ if (getenv ("FAKEROOTKEY") || getenv ("FAKEROOTUID") Index: kbuild-0.1.98svn2318/src/kmk/kbuild.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/kbuild.c 2009-08-06 18:51:38.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/kbuild.c 2009-08-06 18:52:25.000000000 +0200 @@ -133,7 +133,7 @@ } } -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) rc = readlink("/proc/curproc/file", szTmp, GET_PATH_MAX - 1); if (rc < 0 || rc == GET_PATH_MAX - 1) { Index: kbuild-0.1.98svn2318/src/kmk/kmkbuiltin/cmp_util.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/kmkbuiltin/cmp_util.c 2009-08-06 18:51:38.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/kmkbuiltin/cmp_util.c 2009-08-06 18:52:25.000000000 +0200 @@ -38,7 +38,7 @@ #include "config.h" #include <sys/types.h> #include <sys/stat.h> -#if defined(__FreeBSD__) || defined(__NetBSD__) /** @todo more mmap capable OSes. */ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel_) || defined(__NetBSD__) /** @todo more mmap capable OSes. */ # define CMP_USE_MMAP # include <sys/param.h> # include <sys/mman.h> Index: kbuild-0.1.98svn2318/src/kmk/main.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/main.c 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/main.c 2009-08-06 18:52:25.000000000 +0200 @@ -48,7 +48,7 @@ #endif #ifdef KMK /* for get_online_cpu_count */ -# if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +# if defined(__APPLE__) || defined(__FreeBSD_kernel__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) # include <sys/sysctl.h> # endif # ifdef __OS2__ Index: kbuild-0.1.98svn2318/src/kmk/make.h =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/make.h 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/make.h 2009-08-06 18:52:25.000000000 +0200 @@ -218,7 +218,7 @@ # include <malloc/malloc.h> # define SIZE_OF_HEAP_BLOCK(ptr) malloc_good_size(ptr) -# elif defined(__linux__) /* glibc */ +# elif defined(__linux__) || defined(__GLIBC__) /* glibc */ # include <malloc.h> # define SIZE_OF_HEAP_BLOCK(ptr) malloc_usable_size(ptr) Index: kbuild-0.1.98svn2318/src/lib/k/kDefs.h =================================================================== --- kbuild-0.1.98svn2318.orig/src/lib/k/kDefs.h 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/lib/k/kDefs.h 2009-08-06 18:52:25.000000000 +0200 @@ -56,8 +56,10 @@ #define K_OS_SOLARIS 9 /** Windows. */ #define K_OS_WINDOWS 10 +/** GNU/kFreeBSD (move to 4 probably) */ +#define K_OS_GNUKFREEBSD 11 /** The max K_OS_* value (exclusive). */ -#define K_OS_MAX 11 +#define K_OS_MAX 12 /** @} */ /** @def K_OS @@ -78,6 +80,8 @@ # define K_OS K_OS_DRAGONFLY # elif defined(__FreeBSD__) /*??*/ # define K_OS K_OS_FREEBSD +# elif defined(__FreeBSD_kernel__) /*??*/ +# define K_OS K_OS_GNUKFREEBSD # elif defined(__gnu_linux__) # define K_OS K_OS_LINUX # elif defined(__NetBSD__) /*??*/ Index: kbuild-0.1.98svn2318/Config.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/Config.kmk 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/Config.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -101,6 +101,7 @@ # DEFS.darwin += KBUILD_OS_DARWIN DEFS.freebsd += KBUILD_OS_FREEBSD +DEFS.gnukfreebsd += KBUILD_OS_GNUKFREEBSD DEFS.linux += KBUILD_OS_LINUX DEFS.netbsd += KBUILD_OS_NETBSD DEFS.openbsd += KBUILD_OS_OPENBSD @@ -263,7 +264,7 @@ ifndef TEMPLATE_BIN_TOOL # Use GCC3 when we're certain that the system is using GNU ld and ar. - ifeq ($(filter-out linux freebsd openbsd netbsd,$(KBUILD_TARGET)),) + ifeq ($(filter-out linux gnukfreebsd freebsd openbsd netbsd,$(KBUILD_TARGET)),) TEMPLATE_BIN_TOOL = GCC3 else TEMPLATE_BIN_TOOL = GCC3PLAIN Index: kbuild-0.1.98svn2318/kBuild/env.sh =================================================================== --- kbuild-0.1.98svn2318.orig/kBuild/env.sh 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/kBuild/env.sh 2009-08-06 18:52:25.000000000 +0200 @@ -260,6 +260,10 @@ KBUILD_HOST=dragonfly ;; + GNU/kFreeBSD) + KBUILD_HOST=gnukfreebsd + ;; + freebsd|FreeBSD|FREEBSD) KBUILD_HOST=freebsd ;; Index: kbuild-0.1.98svn2318/kBuild/header.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/kBuild/header.kmk 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/kBuild/header.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -176,7 +176,7 @@ # this keyword namespace is shared between OSes, architectures, cpus and # build types. (PORTME) # -KBUILD_OSES := darwin dos dragonfly freebsd l4 linux netbsd nt openbsd os2 solaris win os-agnostic +KBUILD_OSES := darwin dos dragonfly freebsd gnukfreebsd l4 linux netbsd nt openbsd os2 solaris win os-agnostic KBUILD_ARCHES := x86 amd64 sparc32 sparc64 s390 s390x ppc32 ppc64 mips32 mips64 ia64 hppa32 hppa64 arm alpha @@ -493,7 +493,7 @@ EXEC_X86_WIN32 := innopec.exe HOSTSUFF_EXE := .exe -else if1of ($(KBUILD_HOST), freebsd dragonfly linux openbsd netbsd) +else if1of ($(KBUILD_HOST), gnukfreebsd freebsd dragonfly linux openbsd netbsd) # Unix (like) systems with wine. EXEC_X86_WIN32 := wine HOSTSUFF_EXE := @@ -537,7 +537,7 @@ SUFF_LIB := .a SUFF_DLL := .so SUFF_EXE := - if1of ($(KBUILD_TARGET), dragonfly freebsd linux netbsd openbsd) ## @todo check netbsd and openbsd. + if1of ($(KBUILD_TARGET), dragonfly gnukfreebsd freebsd linux netbsd openbsd) ## @todo check netbsd and openbsd. SUFF_SYS := .ko else SUFF_SYS := Index: kbuild-0.1.98svn2318/kBuild/tools/GCC32.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/kBuild/tools/GCC32.kmk 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/kBuild/tools/GCC32.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -47,6 +47,7 @@ TOOL_GCC32_LDFLAGS.dll ?= $(TOOL_GCC32_LDFLAGS.$(KBUILD_TARGET)) endif TOOL_GCC32_LDFLAGS.sysmod ?= -r -m elf_i386$(if-expr "$(KBUILD_TARGET)" == "freebsd",_fbsd,) +TOOL_GCC32_LDFLAGS.sysmod ?= -r -m elf_i386$(if-expr "$(KBUILD_TARGET)" == "gnukfreebsd",_fbsd,) TOOL_GCC32_LD_SONAME ?= -Wl,-soname=$(firstword $($(1)_SONAME.$(KBUILD_TARGET).$(KBUILD_TYPE)) $($(1)_SONAME.$(KBUILD_TARGET)) $($(1)_SONAME.$(KBUILD_TYPE)) $($(1)_SONAME) $(notdir $(2))) ifeq ($(KBUILD_TARGET),os2) TOOL_GCC32_LD_MAP ?= -Zmap=$(1) Index: kbuild-0.1.98svn2318/kBuild/tools/GCC64.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/kBuild/tools/GCC64.kmk 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/kBuild/tools/GCC64.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -47,6 +47,7 @@ TOOL_GCC64_LDFLAGS.dll ?= $(TOOL_GCC64_LDFLAGS.$(KBUILD_TARGET)) endif TOOL_GCC64_LDFLAGS.sysmod ?= -r -m elf_x86_64$(if-expr "$(KBUILD_TARGET)" == "freebsd",_fbsd,) +TOOL_GCC64_LDFLAGS.sysmod ?= -r -m elf_x86_64$(if-expr "$(KBUILD_TARGET)" == "gnukfreebsd",_fbsd,) TOOL_GCC64_LD_SONAME ?= -Wl,-soname=$(firstword $($(1)_SONAME.$(KBUILD_TARGET).$(KBUILD_TYPE)) $($(1)_SONAME.$(KBUILD_TARGET)) $($(1)_SONAME.$(KBUILD_TYPE)) $($(1)_SONAME) $(notdir $(2))) ifeq ($(KBUILD_TARGET),os2) TOOL_GCC64_LD_MAP ?= -Zmap=$(1) Index: kbuild-0.1.98svn2318/kBuild/tools/GXX32.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/kBuild/tools/GXX32.kmk 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/kBuild/tools/GXX32.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -47,6 +47,7 @@ TOOL_GXX32_LDFLAGS.dll ?= $(TOOL_GXX32_LDFLAGS.$(KBUILD_TARGET)) endif TOOL_GXX32_LDFLAGS.sysmod ?= -r -m elf_i386$(if-expr "$(KBUILD_TARGET)" == "freebsd",_fbsd,) +TOOL_GXX32_LDFLAGS.sysmod ?= -r -m elf_i386$(if-expr "$(KBUILD_TARGET)" == "gnukfreebsd",_fbsd,) TOOL_GXX32_LD_SONAME ?= -Wl,-soname=$(firstword $($(1)_SONAME.$(KBUILD_TARGET).$(KBUILD_TYPE)) $($(1)_SONAME.$(KBUILD_TARGET)) $($(1)_SONAME.$(KBUILD_TYPE)) $($(1)_SONAME) $(notdir $(2))) ifeq ($(KBUILD_TARGET),os2) TOOL_GXX32_LD_MAP ?= -Zmap=$(1) Index: kbuild-0.1.98svn2318/kBuild/tools/GXX64.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/kBuild/tools/GXX64.kmk 2009-08-06 18:51:40.000000000 +0200 +++ kbuild-0.1.98svn2318/kBuild/tools/GXX64.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -47,6 +47,7 @@ TOOL_GXX64_LDFLAGS.dll ?= $(TOOL_GXX64_LDFLAGS.$(KBUILD_TARGET)) endif TOOL_GXX64_LDFLAGS.sysmod ?= -r -m elf_x86_64$(if-expr "$(KBUILD_TARGET)" == "freebsd",_fbsd,) +TOOL_GXX64_LDFLAGS.sysmod ?= -r -m elf_x86_64$(if-expr "$(KBUILD_TARGET)" == "gnukfreebsd",_fbsd,) TOOL_GXX64_LD_SONAME ?= -Wl,-soname=$(firstword $($(1)_SONAME.$(KBUILD_TARGET).$(KBUILD_TYPE)) $($(1)_SONAME.$(KBUILD_TARGET)) $($(1)_SONAME.$(KBUILD_TYPE)) $($(1)_SONAME) $(notdir $(2))) ifeq ($(KBUILD_TARGET),os2) TOOL_GXX64_LD_MAP ?= -Zmap=$(1) Index: kbuild-0.1.98svn2318/src/ash/Makefile.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/src/ash/Makefile.kmk 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/ash/Makefile.kmk 2009-08-06 18:59:04.000000000 +0200 @@ -45,6 +45,8 @@ HAVE_SYS_SIGNAME HAVE_SYSCTL_H HAVE_SETPROGNAME kmk_ash_DEFS.dragonfly = \ HAVE_SYS_SIGNAME HAVE_SYSCTL_H HAVE_SETPROGNAME +kmk_ash_DEFS.gnukfreebsd = \ + HAVE_SYSCTL_H kmk_ash_DEFS.freebsd = \ HAVE_SYS_SIGNAME HAVE_SYSCTL_H HAVE_SETPROGNAME kmk_ash_INCS = $(PATH_kmk_ash) . # (the last is because of error.h) @@ -79,6 +81,10 @@ $(PATH_kmk_ash)/builtins.c \ $(PATH_kmk_ash)/init.c \ $(PATH_kmk_ash)/nodes.c +kmk_ash_SOURCES.gnukfreebsd = \ + sys_signame.c \ + strlcpy.c \ + setmode.c kmk_ash_SOURCES.linux = \ sys_signame.c \ strlcpy.c \ Index: kbuild-0.1.98svn2318/src/kash/Makefile.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/src/kash/Makefile.kmk 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kash/Makefile.kmk 2009-08-06 18:52:25.000000000 +0200 @@ -48,6 +48,8 @@ HAVE_SYS_SIGNAME HAVE_SYSCTL_H HAVE_SETPROGNAME kash_DEFS.dragonfly = \ HAVE_SYS_SIGNAME HAVE_SYSCTL_H HAVE_SETPROGNAME +kash_DEFS.gnukfreebsd = \ + HAVE_SYSCTL_H kash_DEFS.freebsd = \ HAVE_SYS_SIGNAME HAVE_SYSCTL_H HAVE_SETPROGNAME kash_INCS = $(PATH_kash) . # (the last is because of error.h) @@ -96,6 +98,9 @@ shheap.c \ shthread.c \ shfile.c +kash_SOURCES.gnukfreebsd = \ + sys_signame.c \ + strlcpy.c kash_SOURCES.linux = \ sys_signame.c \ strlcpy.c Index: kbuild-0.1.98svn2318/src/kmk/kmkbuiltin/install.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/kmkbuiltin/install.c 2009-08-06 18:51:38.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/kmkbuiltin/install.c 2009-08-06 18:52:25.000000000 +0200 @@ -198,7 +198,8 @@ dodir = 1; break; case 'f': -#ifdef UF_IMMUTABLE +#if defined(UF_IMMUTABLE) && !defined(__GLIBC__) + /** @todo: we need strtofflags() exported in e.g. libbsd */ flags = optarg; if (strtofflags(&flags, &fset, NULL)) return errx(EX_USAGE, "%s: invalid flag", flags); Index: kbuild-0.1.98svn2318/src/kmk/kmkbuiltin/rm.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/kmkbuiltin/rm.c 2009-08-06 18:51:38.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/kmkbuiltin/rm.c 2009-08-06 18:52:25.000000000 +0200 @@ -608,7 +608,8 @@ ) return (1); bsd_strmode(sp->st_mode, modep); -#ifdef SF_APPEND +#if defined(SF_APPEND) && !defined(__GLIBC__) + /** @todo: we need fflagstostr() exported in e.g. libbsd */ if ((flagsp = fflagstostr(sp->st_flags)) == NULL) exit(err(1, "fflagstostr")); (void)fprintf(stderr, "override %s%s%s/%s %s%sfor %s? ", Index: kbuild-0.1.98svn2318/src/kmk/Makefile.kmk =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/Makefile.kmk 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/Makefile.kmk 2009-08-06 18:58:27.000000000 +0200 @@ -100,6 +100,9 @@ glob/glob.c \ glob/fnmatch.c +kmkmissing_SOURCES.gnukfreebsd += \ + kmkbuiltin/strlcpy.c + kmkmissing_SOURCES.linux += \ kmkbuiltin/strlcpy.c @@ -218,7 +221,10 @@ #kmk_LIBS.solaris = malloc #kmk_DEFS.solaris += HAVE_MALLINFO +kmk_LIBS.gnukfreebsd.amd64 = pthread kmk_LIBS.freebsd.amd64 = pthread + +kmk_DEFS.gnukfreebsd.x86 = CONFIG_WITHOUT_THREADS kmk_DEFS.freebsd.x86 = CONFIG_WITHOUT_THREADS # Index: kbuild-0.1.98svn2318/src/kmk/file.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/kmk/file.c 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/kmk/file.c 2009-08-06 18:52:25.000000000 +0200 @@ -1042,7 +1042,8 @@ only one-second resolution. The code below should work, but it's not worth the hassle of debugging it on hosts where it fails. */ #if FILE_TIMESTAMP_HI_RES -# if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME +# if HAVE_CLOCK_GETTIME && defined CLOCK_REALTIME && !defined (__FreeBSD_kernel__) + /** @todo: Undefined references to clock_gettime() on GNU/kFreeBSD */ { struct timespec timespec; if (clock_gettime (CLOCK_REALTIME, ×pec) == 0) Index: kbuild-0.1.98svn2318/src/ash/jobs.c =================================================================== --- kbuild-0.1.98svn2318.orig/src/ash/jobs.c 2009-08-06 18:51:39.000000000 +0200 +++ kbuild-0.1.98svn2318/src/ash/jobs.c 2009-08-06 18:52:25.000000000 +0200 @@ -58,7 +58,7 @@ #endif #include <sys/types.h> #include <sys/param.h> -#if defined(BSD) || defined(__sun__) +#if defined(BSD) || defined(__sun__) || defined(__FreeBSD_kernel__) #include <sys/wait.h> #include <sys/time.h> #include <sys/resource.h>
pgpmEJozXBGN6.pgp
Description: PGP signature

