As castling and e.p. capture did not exist at the time, making analogies with those is dangerous. According the quadribloc.com/chess pages there has be a time in the history of international Chess where there was a controversy of whether doubly-pushed Pawns should be e.p. capturable just by other Pawns or by any piece. This supports my private view that originally there was a veto right to double pushes, introduced together with those, from which the e.p.-capture rule evolved. The concept of not being able to castle through check seems inspired by e.p. capture. I don't think the initial jump in Grande Acedrex (and definitely not in Ouk and Chaturanga) would be viewed as a double King move at the time, as allowing a King to move twice would allow it to reach many other squares as well.
As to the ability to capture with the initial move in Ouk, I was not able to figure that out. No source I could find mentions that it could not, and the idea it could not seems inspired by analogy with castling. Where the fact that it cannot is sort of a logical consequence of that any victim would obstruct the Rook. And that (again according to the quadribloc.com page) castling originally was just the isD move performed as a separate move after the Rook was moved up to the King. I remember, though, that when I first implemented Ouk (at Olivier DeVille's request, who had visited Cambodia) he was baffled that when he was playing against Fairy-Max the latter did surprise him with a Knight-like King capture. According to Olivier, this would not be allowed. But even then, Ouk is not Grande Acedrex, and it is very possible that there has been some "back contamination" from modern Chess into independently evolved variants (lateral gene transfer, as biologists would call it). The Alfonso codex seems a very thorough source, and it seems safe to assume that if there had been a non-capture restriction on the initial King move, it would have been mentioned.
Evasion from check is the most difficult to decide. Quite frankly, I never understood why this rule exists in modern Chess. It seems a rule complication that does not have any significant impact on the game. I can speculate, though, that it is a relic from the time castling was done in two moves: Rook upto King, and then King jumps over it. Obviously you cannot afford to move your Rook next to the King when you are in check, and moving the King first does not work, as it is the King that has the jump, and not the Rook. So when these two moves where merged into one, it might be somewhat natural to not allow it where the separate K+R moves could not do it, just as double Pawn pushes were not allowed when two single steps could not do it because you would be captured after the first step. Also note that check in those days did not have the status it has now, and that the purpose was to capture the King. If remaining in check is not illegal, but just bad strategy, then outlawing other moves based on being in check is highly unnatural. All this argues for no restriction on the iAiD moves w.r.t. moving out of check.
So in summary, I think it should just be a normal (mc) iAiD move, ignoring check.
Grande Acedrex
Moderator: Ras
-
- Posts: 28326
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
-
- Posts: 2929
- Joined: Sat Jan 22, 2011 12:42 am
- Location: NL
Re: Grande Acedrex
I'm not entirely sure if I understand how the trick works correctly, but I just added the following bit of code to allow me to quickly determine whether piece types can reach a particular square ("to") from another square ("from"). I changed the board size so that it is now 12x12 embedded in 16x18 (rather than 15x18). The last legal square is 254, so legal square numbers still fit within one byte. At the moment I have some 20 or so pieces defined. The code initialises a table of 512 elements, indexed as 256+from-to, with bits set if a piece on "from" can (on an empty board) capture on "to":hgm wrote:Just use a 24x12 board. For the 0x88 attack test it is only important that there are enough unused files to make the square-number difference an unambiguous indicator of the board step, so that it can be used as index in a table lookup to find the type of move, basic step and distance. You don't care much about whether it is easy to see from the bit pattern if you stray off board; this is done more efficiently by just surrounding the board with a rim of boundary guards, even for 8x8 boards.Evert wrote:I'm not sure how to generalise the 0x88-test for 12x12 boards. Even then it's not a big help because of the oblique sliders.
Code: Select all
uint32_t atk_pattern[512] = { 0 };
for (int from = MAILBOX_FIRST; from<255; from++)
for (int to = MAILBOX_FIRST; to<255; to++) {
int index = from - to + 256;
for (int id = 0; id<piece_types; id++) {
if (piece_info[id].symbol == NULL) continue;
if (calculate_piece_can_attack(&game->board, id, from, to))
atk_pattern[index] |= (1 << id);
}
}
Is this the correct idea?
-
- Posts: 28326
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Grande Acedrex
Indeed, this is essentially how it works. You could furthermore have tables like atk_pattern that tell you the elementary board step to travel from 'from' to 'to' as a function of 'index', so you can use it in a ray scan. And perhaps another table that tells you the number of steps between the two.
The code you show assigns one bit to every piece. What I usually do is assign one bit to every type of move, so that both bits and squares can have multiple bits set. E.g. an Archbishop could have the Knight-jump and diagonal bits set. This often makes it possible to do with fewer bits, often just eight, and determine if the move was a contact attack or distant from which bits match. E.g. for Chess I would have separate bits for fF, bF, W, N, distant R, distant B. Then K = fF + bF + W, R = W + distant R, B = fF + bF + distant B, Q = R + B.
Something else:
Your code uses MAILBOX_FIRST, which suggests that you have invalid square numbers on the low end of the range. That is wasteful. You could embed the 12x12 board in a 22 x 18 array. If the square number of a1=0, the square number of a12 would be 11*22=242, and l12 would be 253. The off-board squares in the guard band might now have negative numbers, but you don't care, as they would never have to be stored in the hash table. There only would be ambiguity now for moves that go from a- to l-file.
I usually implement that as
The code you show assigns one bit to every piece. What I usually do is assign one bit to every type of move, so that both bits and squares can have multiple bits set. E.g. an Archbishop could have the Knight-jump and diagonal bits set. This often makes it possible to do with fewer bits, often just eight, and determine if the move was a contact attack or distant from which bits match. E.g. for Chess I would have separate bits for fF, bF, W, N, distant R, distant B. Then K = fF + bF + W, R = W + distant R, B = fF + bF + distant B, Q = R + B.
Something else:
Your code uses MAILBOX_FIRST, which suggests that you have invalid square numbers on the low end of the range. That is wasteful. You could embed the 12x12 board in a 22 x 18 array. If the square number of a1=0, the square number of a12 would be 11*22=242, and l12 would be 253. The off-board squares in the guard band might now have negative numbers, but you don't care, as they would never have to be stored in the hash table. There only would be ambiguity now for moves that go from a- to l-file.
I usually implement that as
Code: Select all
#define board (rawBoard + 65)
char rawBoard[22*18];
-
- Posts: 28326
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Grande Acedrex
I just received an e-mail from Jaen-Louis Cazaux. According to him the codex clearly implies the initil King jump could not be a capture. This because it says the King move is similar to the initial jump of Ferz in 'standard Chess', and explicitly states there that this move cannot capture.
So I will implement it as imDimA, still ignoring check.
So I will implement it as imDimA, still ignoring check.
-
- Posts: 2929
- Joined: Sat Jan 22, 2011 12:42 am
- Location: NL
Re: Grande Acedrex
The way I do it at the moment is to store move vectors per piece type. Each piece has a move that consists of a leap (which may be 0) followed by a slide-direction and count (which again may be 0). This makes the move generator in general very simple, although I actually do specialise the pure leaper and pure slider pieces. I use a bitmask to extract pieces from the piece list and I can tell by the index whether they are pawns, royal, sliders, leapers or compounds (ie, Gryphons or Unicorns).hgm wrote:Indeed, this is essentially how it works. You could furthermore have tables like atk_pattern that tell you the elementary board step to travel from 'from' to 'to' as a function of 'index', so you can use it in a ray scan. And perhaps another table that tells you the number of steps between the two.
The code you show assigns one bit to every piece. What I usually do is assign one bit to every type of move, so that both bits and squares can have multiple bits set. E.g. an Archbishop could have the Knight-jump and diagonal bits set. This often makes it possible to do with fewer bits, often just eight, and determine if the move was a contact attack or distant from which bits match. E.g. for Chess I would have separate bits for fF, bF, W, N, distant R, distant B. Then K = fF + bF + W, R = W + distant R, B = fF + bF + distant B, Q = R + B.
So far I'm quite happy with it, but I don't expect it to be optimal.
That did occur to me afterwards. I may try that, since I probably don't have to actually touch much of the code at all. The attack table I have now has about 10% false positives for the Unicorn, down to 5% for the Rook. Gryphon and Bishop are in between.Your code uses MAILBOX_FIRST, which suggests that you have invalid square numbers on the low end of the range. That is wasteful. You could embed the 12x12 board in a 22 x 18 array. If the square number of a1=0, the square number of a12 would be 11*22=242, and l12 would be 253. The off-board squares in the guard band might now have negative numbers, but you don't care, as they would never have to be stored in the hash table. There only would be ambiguity now for moves that go from a- to l-file.
I usually implement that as
Code: Select all
#define board (rawBoard + 65) char rawBoard[22*18];
-
- Posts: 2929
- Joined: Sat Jan 22, 2011 12:42 am
- Location: NL
Re: Grande Acedrex
Ok, I changed it accordingly. Interestingly, that changes my perft 4 from the starting position by exactly 1 move (the sequence 1. Uk3 f8 2. Ue10, where now Kxe10 is not allowed).hgm wrote:I just received an e-mail from Jaen-Louis Cazaux. According to him the codex clearly implies the initil King jump could not be a capture. This because it says the King move is similar to the initial jump of Ferz in 'standard Chess', and explicitly states there that this move cannot capture.
So I will implement it as imDimA, still ignoring check.
However, it brings up another point: since the move is a non-capture, it is presumably also not possible to place your own king in check by putting it a D or A jump away from an unmoved king? I'm sure the scenario is entirely academic.
-
- Posts: 28326
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Grande Acedrex
A King can stand in the target square of a non-capture-only move. We do it all the time with Pawns.
Btw, Jean-Louis also said that in his book he assumed that the move could not be used when in check, or jump over an attacked field. But he admits the text does not say or imply anything about this, and that is is just a 'personal choice'. So I am going to stick with my own theory, that this rule only originated when the King jump was merged with a Rook move to produce modern castling.
Btw, Jean-Louis also said that in his book he assumed that the move could not be used when in check, or jump over an attacked field. But he admits the text does not say or imply anything about this, and that is is just a 'personal choice'. So I am going to stick with my own theory, that this rule only originated when the King jump was merged with a Rook move to produce modern castling.
-
- Posts: 2929
- Joined: Sat Jan 22, 2011 12:42 am
- Location: NL
Re: Grande Acedrex
In fact, the table was buggy. One bug-hunting session later and I'm down to 6% false positives for the Gryphon and 1.6% for the Bishop. Meanwhile, perft went fromEvert wrote:The attack table I have now has about 10% false positives for the Unicorn, down to 5% for the Rook. Gryphon and Bishop are in between.
Code: Select all
1 59 0.00 2681818.18nps
2 3481 0.00 2728056.43nps
3 206209 0.06 3475920.78nps
4 12200522 3.53 3459421.59nps
Code: Select all
1 59 0.00 5363636.36nps
2 3481 0.00 4678763.44nps
3 206209 0.03 6172813.27nps
4 12200522 1.86 6570427.66nps
-
- Posts: 28326
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Grande Acedrex
The latest XBoard commit I pushed to hgm.nubati.net cures the problem with the sD moves being interpreted as castlings. I used the heuristic that a Betza definition containing an 'i' but no 'O' means that the King has other initial moves than castling, so that whatever the specified move, XBoard should just do it and never involve a second piece. (Normally for strictly sideway moves of more than 1 square it would swing the nearest approached piece around the King, where moving from one edge to the other would be considered a 1-square step on a cylinder board.) Considering the rarity of this situation this should do for now.
-
- Posts: 2929
- Joined: Sat Jan 22, 2011 12:42 am
- Location: NL
Re: Grande Acedrex
It seems to be missing the WhiteZebra:hgm wrote:The latest XBoard commit I pushed to hgm.nubati.net cures the problem with the sD moves being interpreted as castlings. I used the heuristic that a Betza definition containing an 'i' but no 'O' means that the King has other initial moves than castling, so that whatever the specified move, XBoard should just do it and never involve a second piece.
Code: Select all
$ make
make all-recursive
Making all in po
make[2]: *** No rule to make target `svg/WhiteZebra.svg', needed by `all-am'. Stop.
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
$
Even if I copy over the NightRider as a temporary substitute for the Zebra, I can't get tit to run:
Code: Select all
$ ./configure --prefix=$HOME
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /opt/local/bin/gmkdir -p
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for library containing strerror... none required
checking whether NLS is requested... yes
checking for msgfmt... /opt/local/bin/msgfmt
checking for gmsgfmt... /opt/local/bin/msgfmt
checking for xgettext... /opt/local/bin/xgettext
checking for msgmerge... /opt/local/bin/msgmerge
checking build system type... x86_64-apple-darwin12.6.0
checking host system type... x86_64-apple-darwin12.6.0
checking for ld used by GCC... /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
checking if the linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
checking for shared library run path origin... done
checking for CFPreferencesCopyAppValue... yes
checking for CFLocaleCopyCurrent... yes
checking for GNU gettext in libc... no
checking for iconv... yes
checking for working iconv... yes
checking how to link with libiconv... -liconv
checking for GNU gettext in libintl... yes
checking whether to use NLS... yes
checking where the gettext function comes from... external libintl
checking how to link with libintl... -lintl -Wl,-framework -Wl,CoreFoundation
checking for remsh... no
checking for rsh... rsh
checking for makeinfo... makeinfo
checking for nroff... nroff -man
checking for awk... /usr/bin/awk
checking for perl... /usr/bin/perl
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking return type of signal handlers... void
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking stropts.h usability... no
checking stropts.h presence... no
checking for stropts.h... no
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking sys/systeminfo.h usability... no
checking sys/systeminfo.h presence... no
checking for sys/systeminfo.h... no
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for _getpty... no
checking for grantpt... yes
checking for setitimer... yes
checking for usleep... yes
checking for gettimeofday... yes
checking for random... yes
checking for gethostname... yes
checking for setlocale... yes
checking for getpseudotty in -lseq... no
checking whether compiler understands -Wall -Wno-parentheses... yes
checking for pkg-config... pkg-config
checking for pkg-config... /opt/local/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for CAIRO... yes
checking for xdg-mime... no
checking for xdg-desktop-menu... no
checking for xdg-icon-resource... no
checking for GTK... yes
configure: WARNING: Apple support is experimental, please report any problems to bug-xboard@gnu.org
configure: WARNING: use --enable-osxapp to enable the build target and automatically adjust target directories
configure: WARNING: Building an OSX app currently relies on some programs such as dylib that we don't test for
configure: WARNING: patches welcome ;)
checking for sw_vers... /usr/bin/sw_vers
checking Mac OS X version... 10.8.5
checking whether ptys or pipes should be used... pipes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating cmail
config.status: creating po/Makefile.in
config.status: creating osxapp/Info.plist
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing po-directories commands
config.status: creating po/POTFILES
config.status: creating po/Makefile
config.status: executing test-stamp-h commands
config.status: executing chmod-cmail commands
Configurations summary:
prefix: /Users/eglebbk
datarootdir: ${prefix}/share
datadir: ${datarootdir}
gamedatadir: $(datadir)/games/xboard
desktopdir: $(datadir)/applications
mimedir: $(datadir)/mime/packages
iconsdir: $(datadir)/icons/hicolor/48x48/apps
svgiconsdir: $(datadir)/icons/hicolor/scalable/apps
infodir: ${datarootdir}/info (info files will go here)
sysconfdir: ${prefix}/etc (xboard.conf will go here)
update mimedb: yes
NLS support: yes
GTK: yes
Xaw3d: no
Xaw: no
ptys: pipes
zippy: no
sigint: yes
$ make
make all-recursive
Making all in po
CC backend.o
CC book.o
CC childio.o
CC gamelist.o
CC ngamelist.o
CC lists.o
CC moves.o
CC parser.o
CC pgntags.o
CC uci.o
CC board.o
CC draw.o
In file included from draw.c:59:
/opt/local/include/librsvg-2.0/librsvg/rsvg-cairo.h:27:2: warning: #warning "Including <librsvg/rsvg-cairo.h> directly is deprecated."
draw.c: In function ‘ScaleOnePiece’:
draw.c:357: warning: ‘g_type_init’ is deprecated (declared at /opt/local/include/glib-2.0/gobject/gtype.h:667)
CC dialogs.o
CC engineoutput.o
CC nengineoutput.o
CC evalgraph.o
CC nevalgraph.o
CC history.o
CC nhistory.o
CC menus.o
CC usounds.o
CC usystem.o
CC gtk/xboard.o
CC gtk/xoptions.o
CC gtk/xtimer.o
CC gtk/xengineoutput.o
CCLD xboard
$ make install
Making install in po
/opt/local/bin/gmkdir -p /Users/eglebbk/share
installing da.gmo as /Users/eglebbk/share/locale/da/LC_MESSAGES/xboard.mo
installing de.gmo as /Users/eglebbk/share/locale/de/LC_MESSAGES/xboard.mo
installing es.gmo as /Users/eglebbk/share/locale/es/LC_MESSAGES/xboard.mo
installing fr.gmo as /Users/eglebbk/share/locale/fr/LC_MESSAGES/xboard.mo
installing it.gmo as /Users/eglebbk/share/locale/it/LC_MESSAGES/xboard.mo
installing nl.gmo as /Users/eglebbk/share/locale/nl/LC_MESSAGES/xboard.mo
installing pl.gmo as /Users/eglebbk/share/locale/pl/LC_MESSAGES/xboard.mo
installing ru.gmo as /Users/eglebbk/share/locale/ru/LC_MESSAGES/xboard.mo
installing sr.gmo as /Users/eglebbk/share/locale/sr/LC_MESSAGES/xboard.mo
installing tr.gmo as /Users/eglebbk/share/locale/tr/LC_MESSAGES/xboard.mo
installing uk.gmo as /Users/eglebbk/share/locale/uk/LC_MESSAGES/xboard.mo
installing vi.gmo as /Users/eglebbk/share/locale/vi/LC_MESSAGES/xboard.mo
installing zh_CN.gmo as /Users/eglebbk/share/locale/zh_CN/LC_MESSAGES/xboard.mo
installing zh_HK.gmo as /Users/eglebbk/share/locale/zh_HK/LC_MESSAGES/xboard.mo
installing zh_TW.gmo as /Users/eglebbk/share/locale/zh_TW/LC_MESSAGES/xboard.mo
if test "xboard" = "gettext-tools"; then \
/opt/local/bin/gmkdir -p /Users/eglebbk/share/gettext/po; \
for file in Makefile.in.in remove-potcdate.sin quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot Makevars.template; do \
/usr/bin/install -c -m 644 ./$file \
/Users/eglebbk/share/gettext/po/$file; \
done; \
for file in Makevars; do \
rm -f /Users/eglebbk/share/gettext/po/$file; \
done; \
else \
: ; \
fi
/opt/local/bin/gmkdir -p '/Users/eglebbk/bin'
/usr/bin/install -c xboard '/Users/eglebbk/bin'
/opt/local/bin/gmkdir -p '/Users/eglebbk/etc'
/usr/bin/install -c -m 644 xboard.conf '/Users/eglebbk/etc'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/applications'
/usr/bin/install -c -m 644 xboard.desktop xboard-fen-viewer.desktop xboard-pgn-viewer.desktop xboard-tourney.desktop xboard-config.desktop '/Users/eglebbk/share/applications'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/icons/hicolor/48x48/apps'
/usr/bin/install -c -m 644 xboard.png '/Users/eglebbk/share/icons/hicolor/48x48/apps'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/pixmaps/textures'
/usr/bin/install -c -m 644 pixmaps/cross32.png pixmaps/cross48.png pixmaps/board32.png pixmaps/board48.png pixmaps/ini32.png pixmaps/ini48.png '/Users/eglebbk/share/games/xboard/pixmaps/textures'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/themes/textures'
/usr/bin/install -c -m 644 png/hatch.png png/wood_d.png png/wood_l.png png/xqboard.png '/Users/eglebbk/share/games/xboard/themes/textures'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/themes/shogi'
/usr/bin/install -c -m 644 themes/shogi/WhiteGold.svg themes/shogi/WhiteCrownedBishop.svg themes/shogi/WhiteBishop.svg themes/shogi/WhiteKing.svg themes/shogi/WhiteKnight.svg themes/shogi/WhiteGoldKnight.svg themes/shogi/WhiteLance.svg themes/shogi/WhiteGoldLance.svg themes/shogi/WhitePawn.svg themes/shogi/WhiteGoldPawn.svg themes/shogi/WhiteRook.svg themes/shogi/WhiteCrownedRook.svg themes/shogi/WhiteAdvisor.svg themes/shogi/WhiteGoldSilver.svg themes/shogi/BlackGold.svg themes/shogi/BlackCrownedBishop.svg themes/shogi/BlackBishop.svg themes/shogi/BlackKing.svg themes/shogi/BlackKnight.svg themes/shogi/BlackGoldKnight.svg themes/shogi/BlackLance.svg themes/shogi/BlackGoldLance.svg themes/shogi/BlackPawn.svg themes/shogi/BlackGoldPawn.svg themes/shogi/BlackRook.svg themes/shogi/BlackCrownedRook.svg themes/shogi/BlackAdvisor.svg themes/shogi/BlackGoldSilver.svg '/Users/eglebbk/share/games/xboard/themes/shogi'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/sounds'
/usr/bin/install -c -m 644 sounds/cymbal.wav sounds/pop2.wav sounds/slap.wav sounds/ding1.wav sounds/laser.wav sounds/woodthunk.wav sounds/gong.wav sounds/penalty.wav sounds/honkhonk.wav sounds/phone.wav sounds/roar.wav '/Users/eglebbk/share/games/xboard/sounds'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/themes/default'
/usr/bin/install -c -m 644 svg/icon_white.svg svg/icon_black.svg svg/BlackAdvisor.svg svg/WhiteAdvisor.svg svg/BlackArchbishop.svg svg/WhiteArchbishop.svg svg/BlackBishop.svg svg/WhiteBishop.svg svg/BlackCanon.svg svg/WhiteCanon.svg svg/BlackChancellor.svg svg/WhiteChancellor.svg svg/BlackCobra.svg svg/WhiteCobra.svg svg/BlackCommoner.svg svg/WhiteCommoner.svg svg/BlackCrownedBishop.svg svg/WhiteCrownedBishop.svg svg/BlackCrownedRook.svg svg/WhiteCrownedRook.svg svg/BlackElephant.svg svg/WhiteElephant.svg svg/BlackGoldKnight.svg svg/WhiteGoldKnight.svg svg/BlackGoldLance.svg svg/WhiteGoldLance.svg svg/BlackGoldPawn.svg svg/WhiteGoldPawn.svg svg/BlackGoldSilver.svg svg/WhiteGoldSilver.svg svg/BlackGold.svg svg/WhiteGold.svg svg/BlackHawk.svg svg/WhiteHawk.svg svg/BlackKing.svg svg/WhiteKing.svg svg/BlackKnight.svg svg/WhiteKnight.svg svg/BlackLance.svg svg/WhiteLance.svg '/Users/eglebbk/share/games/xboard/themes/default'
/usr/bin/install -c -m 644 svg/BlackMarshall.svg svg/WhiteMarshall.svg svg/BlackNightrider.svg svg/WhiteNightrider.svg svg/BlackPawn.svg svg/WhitePawn.svg svg/BlackPrincess.svg svg/WhitePrincess.svg svg/BlackQueen.svg svg/WhiteQueen.svg svg/BlackRook.svg svg/WhiteRook.svg svg/BlackUnicorn.svg svg/WhiteUnicorn.svg svg/BlackSword.svg svg/WhiteSword.svg svg/BlackHSword.svg svg/WhiteHSword.svg svg/BlackLeopard.svg svg/WhiteLeopard.svg svg/BlackLion.svg svg/WhiteLion.svg svg/BlackPromoBishop.svg svg/WhitePromoBishop.svg svg/BlackPromoRook.svg svg/WhitePromoRook.svg svg/BlackPromoHorse.svg svg/WhitePromoHorse.svg svg/BlackPromoDragon.svg svg/WhitePromoDragon.svg svg/BlackPromoSword.svg svg/WhitePromoSword.svg svg/BlackPromoHSword.svg svg/WhitePromoHSword.svg svg/BlackHCrown.svg svg/WhiteHCrown.svg svg/BlackDolphin.svg svg/WhiteDolphin.svg svg/BlackClaw.svg svg/WhiteClaw.svg '/Users/eglebbk/share/games/xboard/themes/default'
/usr/bin/install -c -m 644 svg/BlackWolf.svg svg/WhiteWolf.svg svg/BlackCamel.svg svg/WhiteCamel.svg svg/BlackZebra.svg svg/WhiteZebra.svg svg/BlackGnu.svg svg/WhiteGnu.svg svg/BlackWizard.svg svg/WhiteWizard.svg svg/BlackViking.svg svg/WhiteViking.svg svg/BlackIron.svg svg/WhiteIron.svg svg/BlackCopper.svg svg/WhiteCopper.svg svg/BlackTower.svg svg/WhiteTower.svg svg/eo_Analyzing.svg svg/eo_Black.svg svg/eo_Clear.svg svg/eo_Ponder.svg svg/eo_Thinking.svg svg/eo_Unknown.svg svg/eo_White.svg '/Users/eglebbk/share/games/xboard/themes/default'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/icons/hicolor/scalable/apps'
/usr/bin/install -c -m 644 xboard.svg '/Users/eglebbk/share/icons/hicolor/scalable/apps'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/themes/conf'
/usr/bin/install -c -m 644 conf/shogi conf/xq conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen '/Users/eglebbk/share/games/xboard/themes/conf'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/games/xboard/themes/xiangqi'
/usr/bin/install -c -m 644 themes/xiangqi/BlackAdvisor.svg themes/xiangqi/WhiteAdvisor.svg themes/xiangqi/BlackCanon.svg themes/xiangqi/WhiteCanon.svg themes/xiangqi/BlackElephant.svg themes/xiangqi/WhiteElephant.svg themes/xiangqi/BlackKnight.svg themes/xiangqi/WhiteKnight.svg themes/xiangqi/BlackGold.svg themes/xiangqi/WhiteGold.svg themes/xiangqi/BlackPawn.svg themes/xiangqi/WhitePawn.svg themes/xiangqi/BlackRook.svg themes/xiangqi/WhiteRook.svg '/Users/eglebbk/share/games/xboard/themes/xiangqi'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/info'
/usr/bin/install -c -m 644 ./xboard.info '/Users/eglebbk/share/info'
install-info --info-dir='/Users/eglebbk/share/info' '/Users/eglebbk/share/info/xboard.info'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/man/man6'
/usr/bin/install -c -m 644 'xboard.man' '/Users/eglebbk/share/man/man6/xboard.6'
/opt/local/bin/gmkdir -p '/Users/eglebbk/share/mime/packages'
/usr/bin/install -c -m 644 xboard.xml '/Users/eglebbk/share/mime/packages'
make install-data-hook
if test -z "" -a -n "" -a -n "" -a -n "" ; then \
install --mode system --novendor xboard.xml ;\
install --mode system --novendor xboard-pgn-viewer.desktop;\
install --mode system --novendor xboard-fen-viewer.desktop;\
install --mode system --novendor xboard-tourney.desktop;\
install --mode system --novendor xboard-config.desktop;\
install --context mimetypes --size 32 pixmaps/board32.png application-x-chess-pgn;\
install --context mimetypes --size 32 pixmaps/cross32.png application-x-xboard-trn;\
install --context mimetypes --size 32 pixmaps/ini32.png application-x-xboard-opt;\
install --context mimetypes --size 48 pixmaps/board48.png application-x-chess-pgn;\
install --context mimetypes --size 48 pixmaps/cross48.png application-x-xboard-trn;\
install --context mimetypes --size 48 pixmaps/ini48.png application-x-xboard-opt;\
fi
$ xboard
No default pieces installed!
Select your own using '-pieceImageDirectory'.
Segmentation fault: 11 (core dumped)
$