Index: head/sysutils/riak-cs/Makefile =================================================================== --- head/sysutils/riak-cs/Makefile (revision 399936) +++ head/sysutils/riak-cs/Makefile (revision 399937) @@ -1,80 +1,79 @@ # $FreeBSD$ PORTNAME= riak-cs -PORTVERSION= 2.0.1 +PORTVERSION= 2.1.0 CATEGORIES= sysutils MASTER_SITES= http://s3.amazonaws.com/downloads.basho.com/riak-cs/${PORTVERSION:R}/${PORTVERSION}/ \ http://downloads.basho.com.s3.amazonaws.com/riak-cs/${PORTVERSION:R}/${PORTVERSION}/ MAINTAINER= wg@FreeBSD.org COMMENT= Open source, distributed, S3 interface to Riak KV LICENSE= APACHE20 BUILD_DEPENDS= ${LOCALBASE}/lib/riak-erlang/bin/erlc:${PORTSDIR}/lang/erlang-riak USES= gmake readline USE_RC_SUBR= riak-cs -USE_GCC= yes USERS= riakcs GROUPS= riak RIAKCS_CONFDIR?=${PREFIX}/etc/riak-cs RIAKCS_DBDIR?= /var/db/riak-cs RIAKCS_HOMEDIR?=${PREFIX}/lib/riak-cs RIAKCS_LIBDIR?= ${PREFIX}/lib/riak-cs/lib RIAKCS_LOGDIR?= /var/log/riak-cs PLIST_SUB+= RIAKCS_CONFDIR=${RIAKCS_CONFDIR} \ RIAKCS_DBDIR=${RIAKCS_DBDIR} \ RIAKCS_HOMEDIR=${RIAKCS_HOMEDIR} \ RIAKCS_LIBDIR=${RIAKCS_LIBDIR} \ RIAKCS_LOGDIR=${RIAKCS_LOGDIR} \ USERS=${USERS} \ GROUPS=${GROUPS} ALL_TARGET= rel MAKE_JOBS_UNSAFE=yes MAKE_ENV= PATH=${LOCALBASE}/lib/riak-erlang/bin:${PATH} post-patch: @${REINPLACE_CMD} 's|%%PREFIX%%|${PREFIX}|g' ${WRKSRC}/rel/vars.config do-install: ${MKDIR} ${STAGEDIR}${RIAKCS_CONFDIR} ${MKDIR} ${STAGEDIR}${RIAKCS_DBDIR} ${MKDIR} ${STAGEDIR}${RIAKCS_LOGDIR} ${INSTALL_DATA} ${WRKSRC}/rel/riak-cs/etc/riak-cs.conf ${STAGEDIR}${RIAKCS_CONFDIR}/riak-cs.conf ${INSTALL_DATA} ${WRKSRC}/rel/riak-cs/etc/advanced.config ${STAGEDIR}${RIAKCS_CONFDIR}/advanced.config ${INSTALL_DATA} ${WRKSRC}/rel/riak-cs/etc/cert.pem ${STAGEDIR}${RIAKCS_CONFDIR}/cert.pem ${INSTALL_DATA} ${WRKSRC}/rel/riak-cs/etc/key.pem ${STAGEDIR}${RIAKCS_CONFDIR}/key.pem (cd ${WRKSRC}/rel/riak-cs/lib/ && ${COPYTREE_BIN} . ${STAGEDIR}${RIAKCS_LIBDIR}) (cd ${WRKSRC}/rel/riak-cs/bin/ && ${COPYTREE_BIN} . ${STAGEDIR}${PREFIX}/sbin/) (cd ${WRKSRC}/rel/riak-cs/lib/basho-patches && ${COPYTREE_SHARE} . ${STAGEDIR}${RIAKCS_LIBDIR}/basho-patches) (cd ${WRKSRC}/rel/riak-cs/releases && ${COPYTREE_SHARE} . ${STAGEDIR}${RIAKCS_HOMEDIR}/releases) ${CP} -R ${WRKSRC}/rel/riak-cs/erts-* ${STAGEDIR}${RIAKCS_HOMEDIR} post-install: (cd ${STAGEDIR}${RIAKCS_HOMEDIR}; ${FIND} releases -type f \ | ${SED} -e 's,^\./,,g' \ | ${AWK} '{print length, $$0}' | ${SORT} -rn | ${SED} -e 's/^/lib\//' \ | ${AWK} '{print "lib/riak-cs/"$$2 }' >> ${TMPPLIST}) (cd ${STAGEDIR}${RIAKCS_HOMEDIR}; ${FIND} erts-* -type f \ | ${SED} -e 's,^\./,,g' \ | ${AWK} '{print length, $$0}' | ${SORT} -rn \ | ${AWK} '{print "lib/riak-cs/"$$2 }' >> ${TMPPLIST}) (cd ${STAGEDIR}${RIAKCS_HOMEDIR}; ${FIND} erts-* -type d -empty \ | ${SED} -e 's,^\./,,g' \ | ${AWK} '{print length, $$0}' | ${SORT} -rn | ${SED} -e 's/^/lib\//' \ | ${AWK} '{print "@dir lib/riak-cs/"$$2 }' >> ${TMPPLIST}) (cd ${STAGEDIR}${RIAKCS_LIBDIR}; ${FIND} . -type f \ | ${SED} -e 's,^\./,,g' \ | ${AWK} '{print length, $$0}' | ${SORT} -rn | ${SED} -e 's/^/lib\//' \ | ${AWK} '{print "lib/riak-cs/lib/"$$2 }' >> ${TMPPLIST}) (cd ${STAGEDIR}${RIAKCS_LIBDIR}; ${FIND} . -type d -empty \ | ${SED} -e 's,^\./,,g' \ | ${AWK} '{print length, $$0}' | ${SORT} -rn | ${SED} -e 's/^/lib\//' \ | ${AWK} '{print "@dir lib/riak-cs/lib/"$$2 }' >> ${TMPPLIST}) .include Index: head/sysutils/riak-cs/distinfo =================================================================== --- head/sysutils/riak-cs/distinfo (revision 399936) +++ head/sysutils/riak-cs/distinfo (revision 399937) @@ -1,2 +1,2 @@ -SHA256 (riak-cs-2.0.1.tar.gz) = 7c8d38ff678c42271e51270bb9e82002358f8c2d15a071ae8e406d52655c64da -SIZE (riak-cs-2.0.1.tar.gz) = 9734438 +SHA256 (riak-cs-2.1.0.tar.gz) = 3a7a67069f170986f6275defe9e79c3b87937865e6c978eb7f7f97be3cf99360 +SIZE (riak-cs-2.1.0.tar.gz) = 10670941 Index: head/sysutils/riak-cs/files/patch-riak_test_src_downgrage_bitcask.erl =================================================================== --- head/sysutils/riak-cs/files/patch-riak_test_src_downgrage_bitcask.erl (nonexistent) +++ head/sysutils/riak-cs/files/patch-riak_test_src_downgrage_bitcask.erl (revision 399937) @@ -0,0 +1,140 @@ +diff -ruN temp/riak-cs-2.1.0/riak_test/src/downgrade_bitcask.erl work/riak-cs-2.1.0/riak_test/src/downgrade_bitcask.erl +--- temp/riak-cs-2.1.0/riak_test/src/downgrade_bitcask.erl 1970-01-01 10:00:00.000000000 +1000 ++++ riak_test/src/downgrade_bitcask.erl 2015-10-22 08:44:18.415188879 +1100 +@@ -0,0 +1,136 @@ ++% Run this script to downgrade Bitcask files from the format ++% introduced in Riak 2.0 to the format used in Riak 1.4 ++% Run it by calling escript on it and pointing it to a data ++% directory after stopping the Riak node. ++% The script will recursively find all Bitcask files under that ++% directory and reformat them. ++% $ escript downgrade_bitcask.erl /my/riak/data/bitcask ++-module(downgrade_bitcask). ++-mode(compile). ++-export([main/1]). ++ ++-define(HEADER_SIZE, 14). ++-record(entry, { crc, tstamp, keysz, valsz, key, val}). ++ ++main([DataDir]) -> ++ downgrade_if_dir(DataDir). ++ ++maybe_downgrade_file(F) -> ++ is_bitcask_file(F) andalso downgrade_file(F). ++ ++downgrade_if_dir(Dir) -> ++ case filelib:is_dir(Dir) of ++ true -> ++ downgrade_dir(Dir); ++ false -> ++ ok ++ end. ++ ++downgrade_dir(Dir) -> ++ {ok, Children0} = file:list_dir(Dir), ++ Children = [filename:join(Dir, Child) || Child <- Children0], ++ case is_bitcask_dir(Dir) of ++ false -> ++ [downgrade_if_dir(Child) || Child <- Children]; ++ true -> ++ [maybe_downgrade_file(Child) || Child <- Children] ++ end. ++ ++is_bitcask_file(Filename0) -> ++ Filename = filename:basename(Filename0), ++ Match = re:run(Filename, "^\\d+\\.bitcask\\.data$"), ++ nomatch =/= Match. ++ ++is_bitcask_dir(Dir) -> ++ case filelib:is_dir(Dir) of ++ false -> ++ false; ++ true -> ++ {ok, Files} = file:list_dir(Dir), ++ lists:any(fun is_bitcask_file/1, Files) ++ end. ++ ++read_entry(F) -> ++ case file:read(F, ?HEADER_SIZE) of ++ {ok, <>} -> ++ case file:read(F, KeySz+ValueSz) of ++ {ok, <>} -> ++ % io:format("K: ~p, V: ~p\n", [Key, Value]), ++ {ok, #entry{crc=CRC, tstamp=Tstamp, keysz=KeySz, valsz=ValueSz, ++ key=Key, val=Value}}; ++ _ -> ++ error ++ end; ++ eof -> ++ eof; ++ _ -> ++ io:format("Error reading entry\n"), ++ error ++ end. ++ ++downgrade_file(F) -> ++ Dir = filename:dirname(F), ++ NewF = F ++ ".new", ++ HintFile = filename:join(Dir, filename:basename(F, ".data")++".hint"), ++ NewHF = HintFile ++ ".new", ++ io:format("Downgrading file ~s\n", [F]), ++ {ok, Fi} = file:open(F, [read, raw, binary]), ++ {ok, Fo} = file:open(NewF, [write, raw, binary]), ++ {ok, Fh} = file:open(NewHF, [write, raw, binary]), ++ ok = convert_file(Fi, Fo, Fh, 0, 0, fun tx_pre_20/1), ++ ok = file:close(Fi), ++ ok = file:close(Fo), ++ ok = file:close(Fh), ++ HintBak = HintFile ++ ".bak", ++ FBak = F ++ ".bak", ++ ok = file:rename(HintFile, HintBak), ++ ok = file:rename(F, FBak), ++ ok = file:rename(NewF, F), ++ ok = file:rename(NewHF, HintFile), ++ ok = file:delete(HintBak), ++ ok = file:delete(FBak), ++ ok. ++ ++convert_file(Fi, Fo, Fh, Ofs, Crc, Tx) -> ++ case read_entry(Fi) of ++ {ok, Entry} -> ++ NewEntry = Tx(Entry), ++ Sz = write_entry(Fo, NewEntry), ++ NewCrc = write_hint_entry(Fh, Ofs, Sz, Crc, NewEntry), ++ convert_file(Fi, Fo, Fh, Ofs+Sz, NewCrc, Tx); ++ eof -> ++ write_hint_entry(Fh, 16#ffffFFFFffffFFFF, Crc, 0, ++ #entry{key= <<>>, tstamp=0}), ++ % io:format("Finished reading file\n", []), ++ ok; ++ _ -> ++ io:format(standard_error, "Error reading file\n", []), ++ error ++ end. ++ ++write_hint_entry(F, Ofs, Sz, Crc, #entry{key=Key, tstamp=Tstamp}) -> ++ KeySz = size(Key), ++ Hint = [<>, Key], ++ ok = file:write(F, Hint), ++ erlang:crc32(Crc, Hint). ++ ++write_entry(F, #entry {key=Key, val=Value, tstamp=Tstamp}) -> ++ KeySz = size(Key), ++ ValueSz = size(Value), ++ Bytes0 = [<>, <>, <>, Key, Value], ++ Bytes = [<<(erlang:crc32(Bytes0)):32>> | Bytes0], ++ ok = file:write(F, Bytes), ++ iolist_size(Bytes). ++ ++tx_pre_20(Entry = ++ #entry{key= <<2, BucketSz:16, Bucket:BucketSz/binary, ++ Key/binary>>}) -> ++ OldKey=term_to_binary({Bucket, Key}), ++ % io:format("Converted B/K ~s/~s\n", [Bucket, Key]), ++ tx_pre_20(Entry#entry{key=OldKey, keysz=size(OldKey)}); ++tx_pre_20(Entry= ++ #entry{val= <<"bitcask_tombstone2", _/binary>>}) -> ++ NewVal = <<"bitcask_tombstone">>, ++ Entry#entry{val=NewVal, valsz=size(NewVal)}; ++tx_pre_20(Entry) -> ++ Entry. Property changes on: head/sysutils/riak-cs/files/patch-riak_test_src_downgrage_bitcask.erl ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/riak-cs/pkg-plist =================================================================== --- head/sysutils/riak-cs/pkg-plist (revision 399936) +++ head/sysutils/riak-cs/pkg-plist (revision 399937) @@ -1,19 +1,20 @@ sbin/riak-cs sbin/riak-cs-access sbin/riak-cs-admin sbin/riak-cs-debug sbin/riak-cs-gc sbin/riak-cs-multibag sbin/riak-cs-stanchion sbin/riak-cs-storage +sbin/riak-cs-supercluster @sample %%RIAKCS_CONFDIR%%/riak-cs.conf @sample %%RIAKCS_CONFDIR%%/advanced.config @sample %%RIAKCS_CONFDIR%%/key.pem @sample %%RIAKCS_CONFDIR%%/cert.pem @dir %%RIAKCS_CONFDIR%% @owner %%USERS%% @group %%GROUPS%% @dir %%RIAKCS_DBDIR%% @dir %%RIAKCS_HOMEDIR%% @dir %%RIAKCS_LIBDIR%% @dir %%RIAKCS_LOGDIR%%