Hi,

following patch allows to build images for Qemu ARM on 
OpenBSD 5.2 amd64 and FreeBSD 9.1 amd64.

Mostly small pieces of code changes to get things right on the
specific platform.

Updated the README to describe better, which tools on the host
are required. Added some kind of prepare scripts to install needed
tools on BSD via packages.

Signed-off-by: Waldemar Brodkorb <[email protected]>

Index: scripts/openbsd.sh
===================================================================
--- scripts/openbsd.sh  (revision 0)
+++ scripts/openbsd.sh  (working copy)
@@ -0,0 +1,24 @@
+#!/bin/sh
+ver=$(uname -r)
+arch=$(uname -m)
+echo "Preparing OpenBSD $arch $ver for OpenWrt"
+PKG_PATH="http://ftp.openbsd.org/pub/OpenBSD/${ver}/packages/${arch}/";
+export PKG_PATH
+pkg_add -v gmake
+pkg_add -v findutils
+pkg_add -v coreutils
+pkg_add -v gdiff
+pkg_add -v rsync--
+pkg_add -v git
+pkg_add -v bash
+pkg_add -v unzip
+pkg_add -v wget
+pkg_add -v gtar--
+pkg_add -v ggrep
+pkg_add -v gawk
+pkg_add -v gsed
+pkg_add -v xz
+pkg_add -v apr-util--
+pkg_add -v cyrus-sasl--
+pkg_add -v subversion
+pkg_add -v gnugetopt
Index: scripts/freebsd.sh
===================================================================
--- scripts/freebsd.sh  (revision 0)
+++ scripts/freebsd.sh  (working copy)
@@ -0,0 +1 @@
+env 
PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.0-release/All/
 pkg_add -r gmake-3.82.tbz bash-4.1.11.tbz python27-2.7.2_3.tbz gtar-1.26.tbz 
findutils-4.5.10_2.tbz coreutils-8.12.tbz getopt-1.1.4_2.tbz wget-1.13.4_1.tbz 
gnugrep-2.9.tbz gawk-4.0.0.tbz
Index: tools/yaffs2/patches/110-openbsd-compat.patch
===================================================================
--- tools/yaffs2/patches/110-openbsd-compat.patch       (revision 0)
+++ tools/yaffs2/patches/110-openbsd-compat.patch       (working copy)
@@ -0,0 +1,14 @@
+diff -Nur yaffs2_android.orig/yaffs2/yaffs_guts.h 
yaffs2_android/yaffs2/yaffs_guts.h
+--- yaffs2_android.orig/yaffs2/yaffs_guts.h    Sun Feb 15 16:23:50 2009
++++ yaffs2_android/yaffs2/yaffs_guts.h Tue Mar  5 15:45:21 2013
+@@ -823,6 +823,10 @@
+ int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr);
+ int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr);
+ 
++#if defined(__OpenBSD__)
++#define loff_t off_t
++#endif
++
+ /* File operations */
+ int yaffs_ReadDataFromFile(yaffs_Object * obj, __u8 * buffer, loff_t offset,
+                          int nBytes);
Index: tools/e2fsprogs/patches/003-openbsd-compat.patch
===================================================================
--- tools/e2fsprogs/patches/003-openbsd-compat.patch    (revision 0)
+++ tools/e2fsprogs/patches/003-openbsd-compat.patch    (working copy)
@@ -0,0 +1,24 @@
+diff -Nur e2fsprogs-1.42.7.orig/lib/blkid/getsize.c 
e2fsprogs-1.42.7/lib/blkid/getsize.c
+--- e2fsprogs-1.42.7.orig/lib/blkid/getsize.c  Fri Nov 30 03:40:18 2012
++++ e2fsprogs-1.42.7/lib/blkid/getsize.c       Thu Mar  7 14:21:59 2013
+@@ -26,6 +26,9 @@
+ #include <fcntl.h>
+ #ifdef HAVE_SYS_IOCTL_H
+ #include <sys/ioctl.h>
++#ifdef __OpenBSD__
++#include <sys/dkio.h>
++#endif
+ #endif
+ #ifdef HAVE_LINUX_FD_H
+ #include <linux/fd.h>
+diff -Nur e2fsprogs-1.42.7.orig/lib/quota/mkquota.c 
e2fsprogs-1.42.7/lib/quota/mkquota.c
+--- e2fsprogs-1.42.7.orig/lib/quota/mkquota.c  Wed Jan  2 01:47:20 2013
++++ e2fsprogs-1.42.7/lib/quota/mkquota.c       Thu Mar  7 14:21:59 2013
+@@ -8,6 +8,7 @@
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #include <errno.h>
++#include <stdint.h>
+ #include <string.h>
+ #include <fcntl.h>
+ 
Index: tools/e2fsprogs/patches/004-freebsd-compat.patch
===================================================================
--- tools/e2fsprogs/patches/004-freebsd-compat.patch    (revision 0)
+++ tools/e2fsprogs/patches/004-freebsd-compat.patch    (working copy)
@@ -0,0 +1,13 @@
+diff -Nur e2fsprogs-1.42.7.orig/lib/ext2fs/tdb.c 
e2fsprogs-1.42.7/lib/ext2fs/tdb.c
+--- e2fsprogs-1.42.7.orig/lib/ext2fs/tdb.c     2012-07-06 15:37:27.000000000 
+0200
++++ e2fsprogs-1.42.7/lib/ext2fs/tdb.c  2013-03-07 14:54:59.000000000 +0100
+@@ -56,7 +56,9 @@
+ #include <utime.h>
+ #endif
+ #include <sys/stat.h>
++#ifndef __FreeBSD__
+ #include <sys/file.h>
++#endif
+ #include <fcntl.h>
+ 
+ #ifdef HAVE_SYS_MMAN_H
Index: tools/Makefile
===================================================================
--- tools/Makefile      (revision 35899)
+++ tools/Makefile      (working copy)
@@ -15,7 +15,7 @@
 endif
 tools-y += m4 libtool autoconf automake flex bison pkg-config sed mklibs
 tools-y += sstrip ipkg-utils genext2fs e2fsprogs mtd-utils mkimage
-tools-y += firmware-utils patch-image quilt yaffs2 flock padjffs2
+tools-y += firmware-utils patch-image patch quilt yaffs2 flock padjffs2
 tools-y += mm-macros xorg-macros xfce-macros missing-macros xz cmake scons
 tools-$(CONFIG_TARGET_orion_generic) += wrt350nv2-builder upslug2
 tools-$(CONFIG_powerpc) += upx
@@ -119,6 +119,8 @@
                ln -s `which stat` $@; \
        elif gstat --version > /dev/null 2>&1; then \
                ln -s `which gstat` $@; \
+       elif gnustat --version > /dev/null 2>&1; then \
+               ln -s `which gnustat` $@; \
        else \
                echo "GNU stat not found"; \
                false; \
@@ -128,10 +130,14 @@
 $(eval $(call PrepareCommand,md5sum,gmd5sum md5sum $(SCRIPT_DIR)/md5sum))
 $(eval $(call PrepareCommand,cp,gcp cp))
 $(eval $(call PrepareCommand,seq,gseq seq))
-$(eval $(call PrepareCommand,python,python2 python))
+$(eval $(call PrepareCommand,python,python2 python2.7 python))
 $(eval $(call PrepareCommand,awk,gawk awk))
+$(eval $(call PrepareCommand,getopt,gnugetopt /usr/local/bin/getopt getopt))
+$(eval $(call PrepareCommand,grep,ggrep grep))
+$(eval $(call PrepareCommand,tar,gtar tar))
+$(eval $(call PrepareCommand,diff,gdiff diff))
 
-$(curdir)/cmddeps = $(patsubst %,$(STAGING_DIR_HOST)/bin/%,find md5sum cp stat 
seq python awk)
+$(curdir)/cmddeps = $(patsubst %,$(STAGING_DIR_HOST)/bin/%,find md5sum cp stat 
seq python awk getopt grep tar diff)
 $(curdir)//prepare = $(STAGING_DIR)/.prepared $(STAGING_DIR_HOST)/.prepared 
$($(curdir)/cmddeps)
 $(curdir)//compile = $(STAGING_DIR)/.prepared $(STAGING_DIR_HOST)/.prepared 
$($(curdir)/cmddeps)
 
Index: tools/include/endian.h
===================================================================
--- tools/include/endian.h      (revision 35899)
+++ tools/include/endian.h      (working copy)
@@ -15,6 +15,11 @@
 #define bswap_16(x) bswap16(x)
 #define bswap_32(x) bswap32(x)
 #define bswap_64(x) bswap64(x)
+#elif defined(__OpenBSD__)
+#include <sys/types.h>
+#define bswap_16(x) __swap16(x)
+#define bswap_32(x) __swap32(x)
+#define bswap_64(x) __swap64(x)
 #else
 #include <machine/endian.h>
 #define bswap_16(x) swap16(x)
Index: tools/include/getline.h
===================================================================
--- tools/include/getline.h     (revision 35899)
+++ tools/include/getline.h     (working copy)
@@ -32,7 +32,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#if !defined(__linux__) && !(defined(__APPLE__) && __DARWIN_C_LEVEL >= 200809L)
+#if !defined(__linux__) && !defined(__OpenBSD__) && !(defined(__APPLE__) && 
__DARWIN_C_LEVEL >= 200809L)
 /*
  * Emulate glibc getline() via BSD fgetln().
  * Note that outsize is not changed unless memory is allocated.
Index: tools/squashfs4/patches/180-openbsd_compat.patch
===================================================================
--- tools/squashfs4/patches/180-openbsd_compat.patch    (revision 0)
+++ tools/squashfs4/patches/180-openbsd_compat.patch    (working copy)
@@ -0,0 +1,26 @@
+diff -Nur squashfs4.2.orig/squashfs-tools/mksquashfs.c 
squashfs4.2/squashfs-tools/mksquashfs.c
+--- squashfs4.2.orig/squashfs-tools/mksquashfs.c       Tue Mar  5 16:20:49 2013
++++ squashfs4.2/squashfs-tools/mksquashfs.c    Tue Mar  5 16:25:10 2013
+@@ -32,6 +32,9 @@
+ #include <stdio.h>
+ #include <stddef.h>
+ #include <sys/time.h>
++#if defined(__OpenBSD__)
++#include <sys/param.h>
++#endif
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+diff -Nur squashfs4.2.orig/squashfs-tools/unsquashfs.h 
squashfs4.2/squashfs-tools/unsquashfs.h
+--- squashfs4.2.orig/squashfs-tools/unsquashfs.h       Tue Mar  5 16:20:49 2013
++++ squashfs4.2/squashfs-tools/unsquashfs.h    Tue Mar  5 16:25:57 2013
+@@ -25,6 +25,9 @@
+ #define TRUE 1
+ #define FALSE 0
+ #include <stdio.h>
++#if defined(__OpenBSD__)
++#include <sys/param.h>
++#endif
+ #include <sys/types.h>
+ #include <unistd.h>
+ #include <stdlib.h>
Index: tools/quilt/Makefile
===================================================================
--- tools/quilt/Makefile        (revision 35899)
+++ tools/quilt/Makefile        (working copy)
@@ -15,12 +15,8 @@
 
 include $(INCLUDE_DIR)/host-build.mk
 
-GETOPT:=$(shell which getopt)
-
 HOST_CONFIGURE_ARGS += \
-       --with-patch=$(PATCH) \
-       --with-find=$(FIND) \
-       --with-getopt=$(GETOPT)
+       --with-find=$(FIND)
 
 define Host/Configure
        cd $(HOST_BUILD_DIR) && autoconf
Index: tools/patch/Makefile
===================================================================
--- tools/patch/Makefile        (revision 0)
+++ tools/patch/Makefile        (working copy)
@@ -0,0 +1,18 @@
+# 
+# Copyright (C) 2013 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=patch
+PKG_VERSION:=2.7.1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=ftp://ftp.gnu.org/gnu/patch
+PKG_MD5SUM:=e9ae5393426d3ad783a300a338c09b72
+
+include $(INCLUDE_DIR)/host-build.mk
+
+$(eval $(call HostBuild))
Index: tools/mkimage/patches/020-openbsd_fixes.patch
===================================================================
--- tools/mkimage/patches/020-openbsd_fixes.patch       (revision 0)
+++ tools/mkimage/patches/020-openbsd_fixes.patch       (working copy)
@@ -0,0 +1,19 @@
+diff -Nur u-boot-2012.04.01.orig/tools/mkimage.c 
u-boot-2012.04.01/tools/mkimage.c
+--- u-boot-2012.04.01.orig/tools/mkimage.c     Wed Apr 25 15:22:50 2012
++++ u-boot-2012.04.01/tools/mkimage.c  Wed Mar  6 17:09:29 2013
+@@ -449,6 +449,7 @@
+ #if defined(_POSIX_SYNCHRONIZED_IO) && \
+    !defined(__sun__) && \
+    !defined(__FreeBSD__) && \
++   !defined(__OpenBSD__) && \
+    !defined(__APPLE__)
+       (void) fdatasync (ifd);
+ #else
+@@ -492,6 +493,7 @@
+ #if defined(_POSIX_SYNCHRONIZED_IO) && \
+    !defined(__sun__) && \
+    !defined(__FreeBSD__) && \
++   !defined(__OpenBSD__) && \
+    !defined(__APPLE__)
+       (void) fdatasync (ifd);
+ #else
Index: include/host-build.mk
===================================================================
--- include/host-build.mk       (revision 35899)
+++ include/host-build.mk       (working copy)
@@ -71,7 +71,7 @@
 
 HOST_MAKE_FLAGS =
 
-HOST_CONFIGURE_CMD = ./configure
+HOST_CONFIGURE_CMD = $(BASH) ./configure
 
 ifneq ($(HOST_OS),Darwin)
   ifeq ($(CONFIG_BUILD_STATIC_TOOLS),y)
Index: include/host.mk
===================================================================
--- include/host.mk     (revision 35899)
+++ include/host.mk     (working copy)
@@ -62,6 +62,9 @@
                PATCH=`which gpatch 2>/dev/null`; \
                [ -n "$$PATCH" -a -x "$$PATCH" ] || PATCH=`which patch 
2>/dev/null`; \
                echo "PATCH:=$$PATCH" >> $@; \
+               PYTHON=`which python2.7 2>/dev/null`; \
+               [ -n "$$PYTHON" -a -x "$$PYTHON" ] || PYTHON=`which python 
2>/dev/null`; \
+               echo "PYTHON:=$$PYTHON" >> $@; \
        )
 
 endif
Index: include/prereq-build.mk
===================================================================
--- include/prereq-build.mk     (revision 35899)
+++ include/prereq-build.mk     (working copy)
@@ -39,6 +39,8 @@
 ))
 
 define Require/getopt
+       gnugetopt --help 2>&1 | grep long >/dev/null || \
+       /usr/local/bin/getopt --help 2>&1 | grep long >/dev/null || \
        getopt --help 2>&1 | grep long >/dev/null
 endef
 $(eval $(call Require,getopt, \
@@ -134,15 +136,11 @@
        Please install bzip2. \
 ))
 
-$(eval $(call RequireCommand,patch, \
-       Please install patch. \
-))
-
 $(eval $(call RequireCommand,perl, \
        Please install perl. \
 ))
 
-$(eval $(call RequireCommand,python, \
+$(eval $(call RequireCommand,$(PYTHON), \
        Please install python. \
 ))
 
Index: package/mac80211/patches/004-use_env_for_bash.patch
===================================================================
--- package/mac80211/patches/004-use_env_for_bash.patch (revision 0)
+++ package/mac80211/patches/004-use_env_for_bash.patch (working copy)
@@ -0,0 +1,9 @@
+diff -Nur compat-wireless-2013-02-22.orig/compat/scripts/gen-compat-config.sh 
compat-wireless-2013-02-22/compat/scripts/gen-compat-config.sh
+--- compat-wireless-2013-02-22.orig/compat/scripts/gen-compat-config.sh        
2012-12-20 15:14:36.000000000 +0100
++++ compat-wireless-2013-02-22/compat/scripts/gen-compat-config.sh     
2013-03-07 17:27:04.000000000 +0100
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ # Copyright 2012        Luis R. Rodriguez <[email protected]>
+ # Copyright 2012        Hauke Mehrtens <[email protected]>
+ #
Index: README
===================================================================
--- README      (revision 35899)
+++ README      (working copy)
@@ -3,8 +3,8 @@
 Please use "make menuconfig" to configure your appreciated
 configuration for the toolchain and firmware.
 
-You need to have installed gcc, binutils, patch, bzip2, flex,
-make, gettext, pkg-config, unzip, libz-dev and libc headers.
+You need to have installed gcc, binutils, bzip2, flex, python, perl
+make, find, grep, diff, unzip, gawk, getopt, libz-dev and libc headers.
 
 Run "./scripts/feeds update -a" to get all the latest package definitions
 defined in feeds.conf / feeds.conf.default respectively
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to