[MacPorts] #31742: rdiff-backup doesn't work.
MacPorts
noreply at macports.org
Thu Oct 27 15:10:17 PDT 2011
#31742: rdiff-backup doesn't work.
--------------------------+-------------------------------------------------
Reporter: mzch@… | Owner: perry@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.0.3
Keywords: | Port: rdiff-backup
--------------------------+-------------------------------------------------
Comment(by mzch@…):
Hi,
Librsync 0.9.8 causes this issue. In delta.c all _rs_append* functions are
defined as inline, so those symbols are lost in librsync.dynlib.
The following log is a symbol table of delta.o (include rs_append*
functions). Somehow, rs_appendflush is listed.
{{{
0000000000000918 s EH_frame0
000000000000071a s L_.str
000000000000072f s L_.str1
00000000000008eb s L_.str10
0000000000000756 s L_.str2
0000000000000794 s L_.str3
00000000000007b8 s L_.str4
000000000000080b s L_.str5
0000000000000844 s L_.str6
0000000000000883 s L_.str7
00000000000008a6 s L_.str8
00000000000008c0 s L_.str9
0000000000000897 s L___FUNCTION__.rs_appendflush
0000000000000720 s L___FUNCTION__.rs_delta_begin
0000000000000872 s L___FUNCTION__.rs_delta_s_flush
0000000000000782 s L___FUNCTION__.rs_delta_s_header
0000000000000834 s L___FUNCTION__.rs_delta_s_scan
00000000000007fa s L___FUNCTION__.rs_delta_s_slack
00000000000008de s L___FUNCTION__.rs_findmatch
U _RollsumUpdate
U _abort
U _rs_appendflush
0000000000000040 T _rs_delta_begin
0000000000000958 S _rs_delta_begin.eh
00000000000004b0 t _rs_delta_s_end
0000000000000a00 s _rs_delta_s_end.eh
00000000000004c0 t _rs_delta_s_flush
0000000000000a28 s _rs_delta_s_flush.eh
00000000000000c0 t _rs_delta_s_header
0000000000000980 s _rs_delta_s_header.eh
0000000000000140 t _rs_delta_s_scan
00000000000009a8 s _rs_delta_s_scan.eh
0000000000000430 t _rs_delta_s_slack
00000000000009d8 s _rs_delta_s_slack.eh
U _rs_emit_delta_header
U _rs_emit_end_cmd
U _rs_emit_literal_cmd
0000000000000000 T _rs_getinput
0000000000000930 S _rs_getinput.eh
U _rs_job_check
U _rs_job_input_is_ending
U _rs_job_new
U _rs_log0
U _rs_outbuflen
0000000000000a58 S _rs_roll_paranoia
U _rs_scoop_input
U _rs_scoop_total_avail
U _rs_search_for_block
U _rs_tube_catchup
U _rs_tube_copy
}}}
I don't understand why inline function is listed in the symbol table, but
I applied the following dirty-hack and made sure to fix this issue.
{{{
--- delta.c.orig 2011-10-28 07:04:32.000000000 +0900
+++ delta.c 2011-10-28 07:05:08.000000000 +0900
@@ -254,7 +254,7 @@
* forwards beyond the block boundaries. Extending backwards would
require
* decrementing scoop_pos as appropriate.
*/
-inline int rs_findmatch(rs_job_t *job, rs_long_t *match_pos, size_t
*match_len) {
+int rs_findmatch(rs_job_t *job, rs_long_t *match_pos, size_t *match_len)
{
/* calculate the weak_sum if we don't have one */
if (job->weak_sum.count == 0) {
/* set match_len to min(block_len, scan_avail) */
@@ -281,7 +281,7 @@
/**
* Append a match at match_pos of length match_len to the delta,
extending
* a previous match if possible, or flushing any previous miss/match. */
-inline rs_result rs_appendmatch(rs_job_t *job, rs_long_t match_pos,
size_t match_len)
+rs_result rs_appendmatch(rs_job_t *job, rs_long_t match_pos, size_t
match_len)
{
rs_result result=RS_DONE;
@@ -312,7 +312,7 @@
*
* This also breaks misses up into block_len segments to avoid
accumulating
* too much in memory. */
-inline rs_result rs_appendmiss(rs_job_t *job, size_t miss_len)
+rs_result rs_appendmiss(rs_job_t *job, size_t miss_len)
{
rs_result result=RS_DONE;
@@ -329,7 +329,7 @@
/**
* Flush any accumulating hit or miss, appending it to the delta.
*/
-inline rs_result rs_appendflush(rs_job_t *job)
+rs_result rs_appendflush(rs_job_t *job)
{
/* if last is a match, emit it and reset last by resetting basis_len
*/
if (job->basis_len) {
@@ -360,7 +360,7 @@
* scoop_pos appropriately. In the future this could be used for
something
* like context compressing of miss data. Note that it also calls
* rs_tube_catchup to output any pending output. */
-inline rs_result rs_processmatch(rs_job_t *job)
+rs_result rs_processmatch(rs_job_t *job)
{
job->scoop_avail-=job->scoop_pos;
job->scoop_next+=job->scoop_pos;
@@ -382,7 +382,7 @@
*
* In the future this could do compression of miss data before outputing
* it. */
-inline rs_result rs_processmiss(rs_job_t *job)
+rs_result rs_processmiss(rs_job_t *job)
{
rs_tube_copy(job, job->scoop_pos);
job->scoop_pos=0;
}}}
--
Ticket URL: <https://trac.macports.org/ticket/31742#comment:2>
MacPorts <http://www.macports.org/>
Ports system for Mac OS
More information about the macports-tickets
mailing list