should probably be sent to the packages repo on github. Signed-of-by: Stefan Hellermann <ste...@the2masters.de> --- package/network/utils/unison/Makefile | 36 ++++ .../utils/unison/patches/100-ocamlopt.patch | 225 +++++++++++++++++++++ 2 files changed, 261 insertions(+) create mode 100644 package/network/utils/unison/Makefile create mode 100644 package/network/utils/unison/patches/100-ocamlopt.patch
diff --git a/package/network/utils/unison/Makefile b/package/network/utils/unison/Makefile new file mode 100644 index 0000000..91d9516 --- /dev/null +++ b/package/network/utils/unison/Makefile @@ -0,0 +1,36 @@ +# +# Copyright (C) 2009-2011 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:=unison +PKG_VERSION:=2.48.3 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=http://www.seas.upenn.edu/~bcpierce/unison//download/releases/$(PKG_NAME)-$(PKG_VERSION)/ + +include $(INCLUDE_DIR)/package.mk + +define Package/unison + SECTION:=utilities + CATEGORY:=Utilities + TITLE:=Unison file synchronizer + URL:=http://www.cis.upenn.edu/~bcpierce/unison/ + DEPENDS:= libncurses +endef + +Stripping OCaml binaries is not possible +RSTRIP:=: +STRIP:=: + +define Package/unison/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/unison $(1)/usr/bin +endef + +$(eval $(call BuildPackage,unison)) diff --git a/package/network/utils/unison/patches/100-ocamlopt.patch b/package/network/utils/unison/patches/100-ocamlopt.patch new file mode 100644 index 0000000..a8132e2 --- /dev/null +++ b/package/network/utils/unison/patches/100-ocamlopt.patch @@ -0,0 +1,225 @@ +--- /dev/null 2015-08-24 10:52:13.180000000 +0200 ++++ unison-2.48.3/fsmonitor/linux/inotify_compat.h 2015-09-11 22:59:01.056000000 +0200 +@@ -0,0 +1,167 @@ ++/* ++ * This header is used if <sys/inotify.h> cannot be found. ++ * ++ * Inode based directory notification for Linux ++ * ++ * Copyright (C) 2005 John McCutchan ++ */ ++ ++#ifndef _LINUX_INOTIFY_H ++#define _LINUX_INOTIFY_H ++ ++#include <stdint.h> ++#include <sys/syscall.h> ++#include <unistd.h> ++ ++/* ++ * struct inotify_event - structure read from the inotify device for each event ++ * ++ * When you are watching a directory, you will receive the filename for events ++ * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd. ++ */ ++struct inotify_event { ++ int wd; /* watch descriptor */ ++ uint32_t mask; /* watch mask */ ++ uint32_t cookie; /* cookie to synchronize two events */ ++ uint32_t len; /* length (including nulls) of name */ ++ char name __flexarr; /* stub for possible name */ ++}; ++ ++/* the following are legal, implemented events that user-space can watch for */ ++#define IN_ACCESS 0x00000001 /* File was accessed */ ++#define IN_MODIFY 0x00000002 /* File was modified */ ++#define IN_ATTRIB 0x00000004 /* Metadata changed */ ++#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */ ++#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */ ++#define IN_OPEN 0x00000020 /* File was opened */ ++#define IN_MOVED_FROM 0x00000040 /* File was moved from X */ ++#define IN_MOVED_TO 0x00000080 /* File was moved to Y */ ++#define IN_CREATE 0x00000100 /* Subfile was created */ ++#define IN_DELETE 0x00000200 /* Subfile was deleted */ ++#define IN_DELETE_SELF 0x00000400 /* Self was deleted */ ++#define IN_MOVE_SELF 0x00000800 /* Self was moved */ ++ ++/* the following are legal events. they are sent as needed to any watch */ ++#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */ ++#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ ++#define IN_IGNORED 0x00008000 /* File was ignored */ ++ ++/* helper events */ ++#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */ ++#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ ++ ++/* special flags */ ++#define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */ ++#define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */ ++#define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */ ++#define IN_ISDIR 0x40000000 /* event occurred against dir */ ++#define IN_ONESHOT 0x80000000 /* only send event once */ ++ ++/* ++ * All of the events - we build the list by hand so that we can add flags in ++ * the future and not break backward compatibility. Apps will get only the ++ * events that they originally wanted. Be sure to add new events here! ++ */ ++#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ ++ IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ ++ IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \ ++ IN_MOVE_SELF) ++ ++#if defined (__alpha__) ++# define __NR_inotify_init 444 ++# define __NR_inotify_add_watch 445 ++# define __NR_inotify_rm_watch 446 ++ ++#elif defined (__arm__) ++# define __NR_inotify_init (__NR_SYSCALL_BASE+316) ++# define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317) ++# define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318) ++ ++#elif defined (__frv__) ++# define __NR_inotify_init 291 ++# define __NR_inotify_add_watch 292 ++# define __NR_inotify_rm_watch 293 ++ ++#elif defined(__i386__) ++# define __NR_inotify_init 291 ++# define __NR_inotify_add_watch 292 ++# define __NR_inotify_rm_watch 293 ++ ++#elif defined (__ia64__) ++# define __NR_inotify_init 1277 ++# define __NR_inotify_add_watch 1278 ++# define __NR_inotify_rm_watch 1279 ++ ++#elif defined (__mips__) ++# if _MIPS_SIM == _MIPS_SIM_ABI32 ++# define __NR_inotify_init (__NR_Linux + 284) ++# define __NR_inotify_add_watch (__NR_Linux + 285) ++# define __NR_inotify_rm_watch (__NR_Linux + 286) ++# endif ++# if _MIPS_SIM == _MIPS_SIM_ABI64 ++# define __NR_inotify_init (__NR_Linux + 243) ++# define __NR_inotify_add_watch (__NR_Linux + 243) ++# define __NR_inotify_rm_watch (__NR_Linux + 243) ++# endif ++# if _MIPS_SIM == _MIPS_SIM_NABI32 ++# define __NR_inotify_init (__NR_Linux + 247) ++# define __NR_inotify_add_watch (__NR_Linux + 248) ++# define __NR_inotify_rm_watch (__NR_Linux + 249) ++# endif ++ ++#elif defined(__parisc__) ++# define __NR_inotify_init (__NR_Linux + 269) ++# define __NR_inotify_add_watch (__NR_Linux + 270) ++# define __NR_inotify_rm_watch (__NR_Linux + 271) ++ ++#elif defined(__powerpc__) || defined(__powerpc64__) ++# define __NR_inotify_init 275 ++# define __NR_inotify_add_watch 276 ++# define __NR_inotify_rm_watch 277 ++ ++#elif defined (__s390__) ++# define __NR_inotify_init 284 ++# define __NR_inotify_add_watch 285 ++# define __NR_inotify_rm_watch 286 ++ ++#elif defined (__sh__) ++# define __NR_inotify_init 290 ++# define __NR_inotify_add_watch 291 ++# define __NR_inotify_rm_watch 292 ++ ++#elif defined (__sh64__) ++# define __NR_inotify_init 318 ++# define __NR_inotify_add_watch 319 ++# define __NR_inotify_rm_watch 320 ++ ++#elif defined (__sparc__) || defined (__sparc64__) ++# define __NR_inotify_init 151 ++# define __NR_inotify_add_watch 152 ++# define __NR_inotify_rm_watch 156 ++ ++#elif defined(__x86_64__) ++# define __NR_inotify_init 253 ++# define __NR_inotify_add_watch 254 ++# define __NR_inotify_rm_watch 255 ++ ++#else ++# error "Unsupported architecture!" ++#endif ++ ++static inline int inotify_init (void) ++{ ++ return syscall (__NR_inotify_init); ++} ++ ++static inline int inotify_add_watch (int fd, const char *name, uint32_t mask) ++{ ++ return syscall (__NR_inotify_add_watch, fd, name, mask); ++} ++ ++static inline int inotify_rm_watch (int fd, uint32_t wd) ++{ ++ return syscall (__NR_inotify_rm_watch, fd, wd); ++} ++ ++ ++#endif /* _LINUX_INOTIFY_H */ +--- unison-2.48.3_alt/fsmonitor/linux/Makefile 2012-09-18 18:10:59.000000000 +0200 ++++ unison-2.48.3/fsmonitor/linux/Makefile 2015-09-11 23:07:33.492000000 +0200 +@@ -22,8 +22,8 @@ + + $(FSMONITOR)$(EXEC_EXT): $(FSMCAMLOBJS) $(FSMCOBJS) + @echo Linking $@ +- $(CAMLC) -verbose $(CAMLFLAGS) -o $@ $(CFLAGS) $(FSMCAMLLIBS) $^ $(CLIBS) ++ $(CAMLC) -verbose $(CAMLFLAGS) -o $@ $(FSMCAMLLIBS) $^ $(CLIBS) + + clean:: + rm -f $(DIR)/*.cm[iox] $(DIR)/*.o $(DIR)/*~ +- rm -f $(FSMONITOR)$(EXEC_EXT) +\ No newline at end of file ++ rm -f $(FSMONITOR)$(EXEC_EXT) +--- unison-2.48.3_alt/Makefile.OCaml 2014-09-28 18:48:05.000000000 +0200 ++++ unison-2.48.3/Makefile.OCaml 2015-09-12 09:33:22.220000000 +0200 +@@ -48,6 +48,7 @@ + OSARCH=win32gnuc + EXEC_PREFIX=i686-w64-mingw32- + endif ++EXEC_PREFIX=$(CROSS) + + # The OCaml lib dir is used by all versions + # It is extracted from 'ocamlc -v' and Windows '\' separators are turned +@@ -58,7 +59,7 @@ + # Better(?) version, June 2005: + # OCAMLLIBDIR=$(shell ocamlc -v | tail -1 | sed -e 's/.* //g' | sed -e 's/\\/\//g' | tr -d '\r') + # Another try, Feb 2011, suggested by Ron Isaacson +-OCAMLLIBDIR=$(shell ocamlc -v | tail -1 | sed -e 's/.* //g' | tr '\\' '/' | tr -d '\r') ++OCAMLLIBDIR=$(shell $(EXEC_PREFIX)ocamlc -v | tail -1 | sed -e 's/.* //g' | tr '\\' '/' | tr -d '\r') + + ## BCP (6/05) an alternative, but not quite working, version + ## suggested by Nick Montfort: +--- unison-2.48.3_alt/Makefile 2013-07-18 11:37:09.000000000 +0200 ++++ unison-2.48.3/Makefile 2015-09-12 10:16:56.728000000 +0200 +@@ -11,7 +11,7 @@ + # If you set NATIVE=false, then make sure that the THREADS option below is + # also set to false unless your OCaml installation has true posix-compliant + # threads (i.e., -with-pthreads was given as an option to the config script). +-NATIVE=true ++NATIVE=false + + # Use THREADS=false if your OCaml installation is not configured with the + # -with-pthreads option. (Unison will crash when compiled with THREADS=true +@@ -23,7 +23,9 @@ + # an appropriate value automatically, depending on whether the lablgtk + # library is available. + # +-# UISTYLE=text ++UISTYLE=text ++ ++CFLAGS= + + ######################################################################## + ######################################################################## -- 2.1.4 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel