summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorhaawda2018-08-14 20:22:23 +0200
committerhaawda2018-08-14 20:22:23 +0200
commitc817e22d0a022936324ec6733810545c1c8c06c4 (patch)
tree3055eb51e90fe850143227e04fe8e1645f1e41ae
parent98a3988a0643759db91518b6d444e2686caad86f (diff)
downloadaur-c817e22d0a022936324ec6733810545c1c8c06c4.tar.gz
update
-rw-r--r--.SRCINFO12
-rw-r--r--PKGBUILD8
-rw-r--r--makefile.patch422
3 files changed, 428 insertions, 14 deletions
diff --git a/.SRCINFO b/.SRCINFO
index f3660e42de06..b45cbd5b84f5 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,17 +1,19 @@
+# Generated by mksrcinfo v8
+# Tue Aug 14 18:21:55 UTC 2018
pkgbase = pachi
pkgdesc = A reasonably strong engine for the board game go
- pkgver = 12.00
- pkgrel = 2
+ pkgver = 12.10
+ pkgrel = 1
url = http://pachi.or.cz/
arch = i686
arch = x86_64
license = GPL
depends = glibc
options = !makeflags
- source = https://github.com/pasky/pachi/archive/pachi-12.00-jowa.tar.gz
+ source = https://github.com/pasky/pachi/archive/pachi-12.10-jowa.tar.gz
source = makefile.patch
- sha256sums = d409e939ce8f72f0118febc42039fa1d42548b0324ebdf7e6df1fef9deb15bb2
- sha256sums = b58e883f873c0617c89fe12f8dbf0792158baff976456e73cae6a0526236f167
+ sha256sums = 0a303f41c5cb87cabd6aa31fc47fd8d2d25eaf142a8c8ab23ecb6663e74df4af
+ sha256sums = 23113ff4493ccb9b63f5a7f9a25f197b6d8aaf538b659acf4b1d124312ccf0bc
pkgname = pachi
diff --git a/PKGBUILD b/PKGBUILD
index 5a93d349ba96..f32c025ecb90 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,17 +2,17 @@
# Maintainer: Stefan Husmann <stefan-husmann@t-online.de>
pkgname=pachi
-pkgver=12.00
+pkgver=12.10
_pkgcodename=jowa
-pkgrel=2
+pkgrel=1
pkgdesc="A reasonably strong engine for the board game go"
arch=('i686' 'x86_64')
depends=('glibc')
url="http://pachi.or.cz/"
license=('GPL')
source=("https://github.com/pasky/pachi/archive/$pkgname-$pkgver-$_pkgcodename.tar.gz" makefile.patch)
-sha256sums=('d409e939ce8f72f0118febc42039fa1d42548b0324ebdf7e6df1fef9deb15bb2'
- 'b58e883f873c0617c89fe12f8dbf0792158baff976456e73cae6a0526236f167')
+sha256sums=('0a303f41c5cb87cabd6aa31fc47fd8d2d25eaf142a8c8ab23ecb6663e74df4af'
+ '23113ff4493ccb9b63f5a7f9a25f197b6d8aaf538b659acf4b1d124312ccf0bc')
options=('!makeflags')
prepare() {
diff --git a/makefile.patch b/makefile.patch
index b83ca6974819..35ac1c37cb17 100644
--- a/makefile.patch
+++ b/makefile.patch
@@ -1,8 +1,17 @@
-diff -Naur pachi-pachi-12.00-jowa.orig/Makefile pachi-pachi-12.00-jowa.new/Makefile
---- pachi-pachi-12.00-jowa.orig/Makefile 2018-02-18 03:22:05.000000000 +0100
-+++ pachi-pachi-12.00-jowa.new/Makefile 2018-03-01 22:15:58.954787036 +0100
-@@ -276,7 +276,7 @@
- DOUBLE_FLOATING=$(DOUBLE_FLOATING) BOARDSIZE=$(BOARDSIZE) ./spudfrog
+diff -Naur pachi-pachi-12.10-jowa.orig/Makefile pachi-pachi-12.10-jowa.new/Makefile
+--- pachi-pachi-12.10-jowa.orig/Makefile 2018-08-14 19:45:14.946828806 +0200
++++ pachi-pachi-12.10-jowa.new/Makefile 2018-08-14 19:46:53.610162808 +0200
+@@ -28,7 +28,7 @@
+ # You'll need to install Boost and Caffe libraries.
+ # If Caffe is in a custom directory you can set it here.
+
+-DCNN=1
++DCNN=0
+ # CAFFE_PREFIX=/usr/local/caffe
+
+ # Fixed board size. Set this to enable more aggressive optimizations
+@@ -319,7 +319,7 @@
+ @CC="$(CC)" CFLAGS="$(CFLAGS)" ./spudfrog
# Build info
-build.h: .git/HEAD .git/index Makefile
@@ -10,3 +19,406 @@ diff -Naur pachi-pachi-12.00-jowa.orig/Makefile pachi-pachi-12.00-jowa.new/Makef
+@make spudfrog
@echo "[make] build.h"
@CC="$(CC)" CFLAGS="$(CFLAGS)" ./genbuild > $@
+diff -Naur pachi-pachi-12.10-jowa.orig/Makefile.orig pachi-pachi-12.10-jowa.new/Makefile.orig
+--- pachi-pachi-12.10-jowa.orig/Makefile.orig 1970-01-01 01:00:00.000000000 +0100
++++ pachi-pachi-12.10-jowa.new/Makefile.orig 2018-08-14 19:45:19.576828838 +0200
+@@ -0,0 +1,399 @@
++#### CONFIGURATION
++
++# Uncomment one of the options below to change the way Pachi is built.
++# Alternatively, you can pass the option to make itself, like:
++# make MAC=1 DOUBLE_FLOATING=1
++# or use the short aliases (make quick, make generic ...)
++
++# Generic build ?
++# If binary will be distributed you need this !
++# Otherwise you may do without to enable more aggressive optimizations
++# for this machine only.
++
++# GENERIC=1
++
++# Do you compile on Windows instead of Linux ?
++# Please note that performance may not be optimal.
++# To compile in msys2 with mingw-w64, uncomment the following line.
++# See MSYS2 section for further configuration.
++
++# MSYS2=1
++
++# Do you compile on MacOS/X instead of Linux?
++# Please note that performance may not be optimal.
++
++# MAC=1
++
++# Compile Pachi with dcnn support ?
++# You'll need to install Boost and Caffe libraries.
++# If Caffe is in a custom directory you can set it here.
++
++DCNN=1
++# CAFFE_PREFIX=/usr/local/caffe
++
++# Fixed board size. Set this to enable more aggressive optimizations
++# if you only play on 19x19. Pachi won't be able to play on other
++# board sizes.
++
++# BOARD_SIZE=19
++
++# Running multiple Pachi instances ? Enable this to coordinate them so that
++# only one takes the cpu at a time. If your system uses systemd beware !
++# Go and read note at top of fifo.c
++
++# FIFO=1
++
++# Enable joseki engine ? Useful if running without dcnn support.
++# Otherwise will be slightly faster without.
++
++# JOSEKI=1
++# MOGGY_JOSEKI=1
++
++# By default, Pachi uses low-precision numbers within the game tree to
++# conserve memory. This can become an issue with playout counts >1M,
++# e.g. with extremely long thinking times or massive parallelization;
++# 24 bits of floating_t mantissa become insufficient then.
++
++# DOUBLE_FLOATING=1
++
++# Enable distributed engine for cluster play ?
++
++# DISTRIBUTED=1
++
++# Compile Pachi with external plugin support ?
++# If unsure leave disabled, you most likely don't need it.
++
++# PLUGINS=1
++
++# Enable performance profiling using gprof. Note that this also disables
++# inlining, which allows more fine-grained profile, but may also distort
++# it somewhat.
++
++# PROFILING=gprof
++
++# Enable performance profiling using google-perftools. This is much
++# more accurate, fine-grained and nicer than gprof and does not change
++# the way the actual binary is compiled and runs.
++
++# PROFILING=perftools
++
++
++# Target directories when running 'make install' / 'make install-data'.
++# Pachi will look for extra data files (such as dcnn, pattern, joseki or
++# fuseki database) in system directory below in addition to current directory
++# (or DATA_DIR environment variable if present).
++PREFIX ?= /usr/local
++BINDIR ?= $(PREFIX)/bin
++DATADIR ?= $(PREFIX)/share/pachi
++
++# Generic compiler options. You probably do not really want to twiddle
++# any of this.
++# (N.B. -ffast-math breaks us; -fomit-frame-pointer is added below
++# unless PROFILING=gprof.)
++OPT ?= -O3
++CUSTOM_CFLAGS := -Wall -ggdb3 $(OPT) -std=gnu99 -pthread -Wsign-compare -D_GNU_SOURCE
++CUSTOM_CXXFLAGS := -Wall -ggdb3 $(OPT)
++
++
++###################################################################################################################
++### CONFIGURATION END
++
++MAKEFLAGS += --no-print-directory
++
++TUNE := -march=native
++ifeq ($(GENERIC), 1)
++ TUNE := -mtune=generic
++endif
++
++ifndef NO_FRENAME_REGISTERS
++ CUSTOM_CFLAGS += -frename-registers
++endif
++
++ifdef DATADIR
++ CUSTOM_CFLAGS += -DDATA_DIR=\"$(DATADIR)\"
++endif
++
++ifdef BOARD_SIZE
++ CUSTOM_CFLAGS += -DBOARD_SIZE=$(BOARD_SIZE)
++endif
++
++EXTRA_OBJS :=
++EXTRA_SUBDIRS :=
++
++##############################################################################
++ifdef MSYS2
++ # Try static build ?
++ # MSYS2_STATIC=1
++
++ # For dcnn build, caffe msys2 package is probably in the repos now.
++ # Otherwise get one from https://github.com/lemonsqueeze/mingw-caffe
++ # ('mini' / 'nohdf5' releases allow for smaller static builds)
++
++ WIN_HAVE_NO_REGEX_SUPPORT=1
++
++ SYS_CFLAGS := $(TUNE)
++ SYS_LDFLAGS := -pthread -L$(CAFFE_PREFIX)/bin -L$(MINGW_PREFIX)/bin
++ SYS_LIBS := -lws2_32
++ CUSTOM_CXXFLAGS += -I$(MINGW_PREFIX)/include/OpenBLAS
++
++ # Enable mingw-w64 C99 printf() / scanf() layer ?
++ SYS_CFLAGS += -D__USE_MINGW_ANSI_STDIO
++
++ ifdef WIN_HAVE_NO_REGEX_SUPPORT
++ SYS_CFLAGS += -DHAVE_NO_REGEX_SUPPORT
++ else
++ SYS_LIBS += -lregex -ltre -lintl -liconv # Oh, dear...
++ endif
++
++ DCNN_LIBS := -lcaffe -lboost_system-mt -lglog -lstdc++ $(SYS_LIBS)
++
++ ifdef MSYS2_STATIC # Static build, good luck
++ # Which type of caffe package do you have ?
++ # Regular caffe package is fine but pulls in hdf5 (+deps) which we don't need
++ # and requires --whole-archive for static linking. This makes binaries unnecessarily
++ # bloated. Choose normal, nohdf5, or mini (mini is best)
++ CAFFE=normal
++
++ ifeq ($(CAFFE), normal)
++ HDF5_LIBS = -lhdf5_hl -lhdf5 -lszip -lz
++ endif
++
++ ifeq ($(CAFFE), mini)
++ # Force linking of caffe layer factory, will pull in layers we need.
++ EXTRA_OBJS := layer_factory.o
++ CAFFE_STATIC_LIB = -lcaffe
++ else
++ CAFFE_STATIC_LIB = -Wl,--whole-archive -l:libcaffe.a -Wl,--no-whole-archive
++ endif
++
++ DCNN_LIBS := -Wl,-Bstatic $(CAFFE_STATIC_LIB) \
++ -lboost_system-mt -lboost_thread-mt -lopenblas $(HDF5_LIBS) -lgflags_static \
++ -lglog -lprotobuf -lstdc++ -lwinpthread $(SYS_LIBS) -Wl,-Bdynamic -lshlwapi
++
++ # glog / gflags headers really shouldn't __declspec(dllexport) symbols for us,
++ # static linking will fail with undefined __imp__xxx symbols.
++ # Normally this works around it.
++ SYS_CXXFLAGS += -DGOOGLE_GLOG_DLL_DECL="" -DGFLAGS_DLL_DECL=""
++ endif
++else
++##############################################################################
++ifdef MAC
++ SYS_CFLAGS := -DNO_THREAD_LOCAL
++ SYS_LDFLAGS := -pthread -rdynamic
++ SYS_LIBS := -lm -ldl
++ DCNN_LIBS := -lcaffe -lboost_system -lglog -lstdc++ $(SYS_LIBS)
++else
++##############################################################################
++# Linux
++ SYS_CFLAGS := $(TUNE)
++ SYS_LDFLAGS := -pthread -rdynamic
++ SYS_LIBS := -lm -lrt -ldl
++ DCNN_LIBS := -lcaffe -lboost_system -lglog -lstdc++ $(SYS_LIBS)
++endif
++endif
++
++ifdef CAFFE_PREFIX
++ SYS_LDFLAGS += -L$(CAFFE_PREFIX)/lib -Wl,-rpath=$(CAFFE_PREFIX)/lib
++ CXXFLAGS += -I$(CAFFE_PREFIX)/include
++endif
++
++ifeq ($(DCNN), 1)
++ CUSTOM_CFLAGS += -DDCNN
++ CUSTOM_CXXFLAGS += -DDCNN
++ EXTRA_OBJS += caffe.o dcnn.o
++ SYS_LIBS := $(DCNN_LIBS)
++endif
++
++ifeq ($(FIFO), 1)
++ CUSTOM_CFLAGS += -DPACHI_FIFO
++ EXTRA_OBJS += fifo.o
++endif
++
++ifeq ($(JOSEKI), 1)
++ CUSTOM_CFLAGS += -DJOSEKI
++endif
++
++ifeq ($(MOGGY_JOSEKI), 1)
++ CUSTOM_CFLAGS += -DMOGGY_JOSEKI
++endif
++
++ifeq ($(DOUBLE_FLOATING), 1)
++ CUSTOM_CFLAGS += -DDOUBLE_FLOATING
++endif
++
++ifeq ($(DISTRIBUTED), 1)
++ CUSTOM_CFLAGS += -DDISTRIBUTED
++ EXTRA_SUBDIRS += distributed
++endif
++
++ifeq ($(PLUGINS), 1)
++ CUSTOM_CFLAGS += -DPACHI_PLUGINS
++endif
++
++
++ifeq ($(PROFILING), gprof)
++ CUSTOM_LDFLAGS += -pg
++ CUSTOM_CFLAGS += -pg -fno-inline
++else
++ # Whee, an extra register!
++ CUSTOM_CFLAGS += -fomit-frame-pointer
++ifeq ($(PROFILING), perftools)
++ SYS_LIBS += -lprofiler
++endif
++endif
++
++ifndef LD
++LD=ld
++endif
++
++ifndef AR
++AR=ar
++endif
++
++ifndef INSTALL
++INSTALL=/usr/bin/install
++endif
++
++export
++unexport INCLUDES
++INCLUDES=-I.
++
++OBJS = $(EXTRA_OBJS) \
++ board.o gtp.o move.o ownermap.o pattern3.o pattern.o patternsp.o patternprob.o playout.o \
++ probdist.o random.o stone.o timeinfo.o network.o fbook.o chat.o util.o gogui.o pachi.o
++
++# Low-level dependencies last
++SUBDIRS = $(EXTRA_SUBDIRS) uct uct/policy t-unit t-predict engines playout tactics
++DATAFILES = patterns.prob patterns.spat book.dat golast19.prototxt golast.trained joseki19.pdict
++
++###############################################################################################################
++# Main rule + aliases
++# Aliases are nice, but don't ask too much: 'make quick 19' won't do what
++# you expect for example (use 'make OPT=-O0 BOARD_SIZE=19' instead)
++
++all: build.h
++ +@make all-recursive pachi
++
++debug fast quick O0:
++ +@make OPT=-O0
++
++opt slow O3:
++ +@make OPT=-O3
++
++generic:
++ +@make GENERIC=1
++
++native:
++ +@make GENERIC=0
++
++nodcnn:
++ +@make DCNN=0
++
++19:
++ +@make BOARD_SIZE=19
++
++double:
++ +@make DOUBLE_FLOATING=1
++
++
++###############################################################################################################
++
++LOCALLIBS=$(SUBDIRS:%=%/lib.a)
++$(LOCALLIBS): all-recursive
++ @
++
++pachi: $(OBJS) $(LOCALLIBS)
++ $(call cmd,link)
++
++# Use runtime gcc profiling for extra optimization. This used to be a large
++# bonus but nowadays, it's rarely worth the trouble.
++.PHONY: pachi-profiled
++pachi-profiled:
++ @make clean all XLDFLAGS=-fprofile-generate XCFLAGS="-fprofile-generate -fomit-frame-pointer -frename-registers"
++ ./pachi -t =5000 no_tbook < gtp/genmove_both.gtp
++ @make clean all clean-profiled XLDFLAGS=-fprofile-use XCFLAGS="-fprofile-use -fomit-frame-pointer -frename-registers"
++
++# Pachi build attendant
++.PHONY: spudfrog
++spudfrog: FORCE
++ @CC="$(CC)" CFLAGS="$(CFLAGS)" ./spudfrog
++
++# Build info
++build.h: .git/HEAD .git/index Makefile
++ +@make spudfrog
++ @echo "[make] build.h"
++ @CC="$(CC)" CFLAGS="$(CFLAGS)" ./genbuild > $@
++
++# Run unit tests
++test: FORCE
++ t-unit/run_tests
++
++ @echo -n "Testing uct genmove... "
++ @ ./pachi -d0 -t =1000 < gtp/genmove.gtp 2>pachi.log >/dev/null
++ @echo "OK"
++
++ @echo -n "Testing quiet mode... "
++ @if grep -q '.' < pachi.log ; then \
++ echo "FAILED:"; cat pachi.log; exit 1; else echo "OK"; \
++ fi
++
++
++# Prepare for install
++distribute: FORCE
++ ifneq ($(GENERIC), 1)
++ @echo "WARNING: Don't distribute binaries built with -march=native !"
++ endif
++
++ rm -rf distribute 2>/dev/null; $(INSTALL) -d distribute
++ cp pachi distribute/
++
++ ifndef MSYS2
++ cd distribute && strip pachi
++ else
++ cd distribute && strip pachi.exe
++ @echo "packing exe ..."
++ @cd distribute && upx -o p.exe pachi.exe && mv p.exe pachi.exe
++ ifndef MSYS2_STATIC
++ @echo "copying dlls ..."
++ @cd distribute; \
++ mingw=`echo $$MINGW_PREFIX | tr '/' '.' `; \
++ dlls_list="../$${mingw}_dlls"; \
++ cp `cat $$dlls_list` .
++ endif
++ endif
++
++# install-recursive?
++install: distribute
++ $(INSTALL) -d $(BINDIR)
++ $(INSTALL) distribute/pachi $(BINDIR)/
++
++install-data:
++ $(INSTALL) -d $(DATADIR)
++ @for file in $(DATAFILES); do \
++ if [ -f $$file ]; then \
++ echo $(INSTALL) $$file $(DATADIR)/; \
++ $(INSTALL) $$file $(DATADIR)/; \
++ else \
++ echo "WARNING: $$file datafile is missing"; \
++ fi \
++ done;
++
++# Generic clean rule is in Makefile.lib
++clean:: clean-recursive
++ -@rm pachi build.h >/dev/null 2>&1
++ @echo ""
++
++clean-profiled:: clean-profiled-recursive
++
++TAGS: FORCE
++ @echo "Generating TAGS ..."
++ @etags `find . -name "*.[ch]" -o -name "*.cpp"`
++
++FORCE:
++
++# MSYS2 mini static link hack. XXX doesn't honor $(CAFFE_PREFIX)
++layer_factory.o: $(MINGW_PREFIX)/lib/libcaffe.a
++ @echo "[AR] $@"
++ @ar x $< $@
++
++-include Makefile.lib