File: from_sources.html

package info (click to toggle)
dar 2.8.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,024 kB
  • sloc: cpp: 86,219; sh: 6,978; ansic: 895; makefile: 489; python: 242; csh: 115; perl: 43; sed: 16
file content (1176 lines) | stat: -rw-r--r-- 31,221 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <link href="style.css" rel="stylesheet">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>Dar's Documentation - Building dar and libdar</title>
  </head>
  <body>


    <div class=top>
      <img alt="Dar Documentation" src="dar_s_doc.jpg" style="float:left;">
      <h1>How to compile dar and libdar</h1>
    </div>

    <div class=page>

      <div class=menuleft>
	<div class=menuitem>
	  <a href="index.html">Presentation</a>
	</div>
	<div class=menuitemactive>
	  <a href="from_sources.html">Building dar/libdar</a>
	</div>
	<div class=menuitem>
	  <a href="index_dar.html">Dar documentation</a>
	</div>
	<div class=menuitem>
	  <a href="index_libdar.html">Libdar documentation</a>
	</div>
	<div class=menuitem>
	  <a href="index_internal.html">Libdar's internals</a>
	</div>
      </div>

      <div class=mainleft>

	<p>
	  There are two ways of compiling dar. The <b>easy</b> way and the <b>less easy</b> way:
	</p>
	<dl>
	  <dt>The easy way:</dt><dd>
	    This is when you grab the
	    <a href="https://sourceforge.net/projects/dar/files/dar">latest source package</a>
	    (file in the format dar-X.Y.Z.tar.gz where X.Y.Z is the dar version)
	    and follow the <a href=#requirements>requirements just below</a>.
	    The <i>easy way</i> also applies to
	    <a href="https://dar.edrusb.org/dar.linux.free.fr/Interim_releases/">interim releases</a>
	    when they exist, which are also fully supported and production grade software.
	  </dd>
	  <dt>The less easy way:</dt><dd>
	    This is when you grab the source code from a GIT repositories. You will then have to follow
	    <a href="#GIT">the preliminary steps</a>, then continue following the easy way.
	  </dd>
	</dl>

	<h2><a name="requirements">Requirements</a></h2>


	<p>
	  To compile dar from a source package <b>you need at least</b> the following:
	</p>

	<ol>
	  <li>
	    a C++ compiler supporting C++14 syntax
	    (for <a href="http://gcc.gnu.org/">gcc</a> that means version 6.1.
	    minimum, <a href="http://clang.llvm.org/">clang</a> is also supported).
	    For version older than 2.7.0 only C++11 is required (at least gcc version 4.9),
	    while version older than dar-2.5.0
	    C++11 support is not required but if using gcc you need at least
	    version 3.4.x. A standard C++ library is also required, compilation
	    has been tested with libc++ and stdlibc++.
	  </li>
	  <li>
	    a linker like "ld" the
	    <a href="http://www.gnu.org/software/binutils/">GNU Linker</a>
	  </li>
	  <li>
	    the <i>make</i> program (tested with
	    <a href="http://www.gnu.org/software/make/">gnu make</a>)
	  </li>
	  <li>
	    <a href="http://pkgconf.org/">pkg-config</a> to help detecting and configuring proper
	    CFLAGS/CXXFLAGS and LDFLAGS for optional libraries dar may relies on (see below)
	  </li>
	</ol>

	<p>
	  In option you <b>may also have</b>
	  installed the following tools and libraries:
	</p>

	<ul>
	  <li>
	    <a href="http://zlib.net/">libz library</a>
	    for gzip compression support
	  </li>
	  <li>
	    <a href="https://sourceware.org/bzip2/">libbzip2 library</a> for bzip2
	    compression support
	  </li>
	  <li>
	    <a href="http://www.oberhumer.com/opensource/lzo/">liblzo2 library</a>
	    for lzo compression support
	  </li>
	  <li>
	    <a href="http://tukaani.org/xz/">libxz library</a> for xz/lzma
	    compression support
	  </li>
	  <li>
	    <a href="https://facebook.github.io/zstd/">Zstandard library</a>
	    (version greater or equal to 1.3.0) for zstd compression support
	  </li>
	  <li>
	    <a href="https://github.com/lz4/lz4">LZ4 library</a> for lz4 compression
	    support
	  </li>
	  <li>gnu Getopt support (Linux has
	    it for all distro thanks to
	    its glibc, this is not true for FreeBSD for example)
	  </li>
	  <li>
	    <a href="http://www.gnupg.org/related_software/libraries.en.html">libgcryt</a>
	    version 1.4.0 or greater for symetric strong encryption (blowfish, aes,
	    etc.) and hash (sha1, md5) support
	  </li>
	  <li><a href="https://www.gnupg.org/">gpgme</a> library version 1.2.0 or
	    greater for asymetric strong encryption and signature (RSA, DSA, etc.)
	  </li>
	  <li><a href="http://www.doxygen.nl/index.html">doxygen</a>
	    for generation of source code documentation
	  </li>
	  <li>
	    <a href="http://www.graphviz.org/">dot</a> to generate graphes of class
	    the C++ class hierarchy withing the doxygen documentation
	  </li>
	  <li>
	    <a href="http://upx.sourceforge.net/">upx</a> to generate
	    dar_suite upx compressed binaries
	  </li>
	  <li>
	    <a href="http://www.gnu.org/software/groff/groff.html">groff</a>
	    to generate html version of man pages
	  </li>
	  <li>
	    <a href="http://e2fsprogs.sourceforge.net">ext2/ext3/ext4 file system libraries</a>
	    for Linux Filesystem Specific Attributes and nodump flag support
	  </li>
	  <li>
	    <a href="http://libthreadar.sourceforge.net/">libthreadar</a> (version
	    1.3.0 or more recent, for MAC OS use version 1.4.0 or more recent)
	    for libdar to use several threads compression/decompression, ciphering/deciphering
	    as well as support for FTP repository feature (the later also needs libcurl
	    in addition see below)
	  </li>
	  <li>
	    <a href="https://github.com/librsync/librsync/releases">librsync</a> for delta
	    binary
	  </li>
	  <li>
	    <a href="https://curl.haxx.se/libcurl/">libcurl</a> for FTP repository access
	  </li>
	  <li>
	    <a href="https://www.libssh.org/">libssh</a> (at least version 0.11.x) for SFTP
	    repository access
	  </li>
	  <li>
	    <a href="https://www.python.org/">python3</a> (python3-dev) and
	    <a href="https://github.com/pybind/pybind11">pybind11</a> to access
	    libdar from python
	  </li>
	  <li>
	    <a href="https://github.com/P-H-C/phc-winner-argon2.git">libargon2</a>
	    provides a security enhancement for key derivation fonction (strong
	    encryption)
	  </li>
	  <li>
	    <a href="http://rhash.sourceforge.net">librhash</a> provides whirlpool
	    hash algorithm
	  </li>
	</ul>

	<h3>Requirements for the Optional Features</h3>

	<table class=center style="width: 100%;">
	  <tr>
	    <th style="width:35%;" class=center>
	      Feature
	    </th>
	    <th class=center>
	      Requirements
	    </th>
	  </tr>
	  <tr>
	    <th>
	      zlib compression
	    </th>
	    <td>
	      libz library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      bzip2 compression
	    </th>
	    <td>
	      libbzip2 library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      lzo compression
	    </th>
	    <td>
	      liblzo2 library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      xz/lzma compression
	    </th>
	    <td>
	      libxz library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      zstd compression
	    </th>
	    <td>
	      libzstd library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      lz4 compression
	    </th>
	    <td>
	      liblz4 library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      strong symmetric encryption
	    </th>
	    <td>
	      libgcrypt library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      strong asymmetric encryption
	    </th>
	    <td>
	      libgcrypt library headers and library</br>
	      libgpgme library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      documentation building
	    </th>
	    <td>
	      the <i>doxygen</i> and<br/>
	      and <i>dot</i> executables at compilation time
	    </td>
	  </tr>
	  <tr>
	    <th>
	      upx-compressed dar binaries
	    </th>
	    <td>
	      the <i>upx</i> executable at compilation time
	    </td>
	  </tr>
	  <tr>
	    <th>
	      man page in html format
	    </th>
	    <td>
	      the <i>groff</i> executable at compilation time
	    </td>
	  </tr>
	  <tr>
	    <th>
	      save/restore Linux File-system Specific Attributes
	    </th>
	    <td>
	      libext2fs library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      dar's --nodump option support
	    </th>
	    <td>
	      libext2fs library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      FTP remote repositories support
	    </th>
	    <td>
	      libthreadar library annd headers<br>
	      libcurl library and headers
	    </td>
	  </tr>
	  <tr>
	    <th>
	      SFTP remote repositories support
	    </th>
	    <td>
	      libssh library and headers
	    </td>
	  </tr>
	  <tr>
	    <th>
	      binary delta support
	    </th>
	    <td>
	      librsync library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      multi-thread compression/decompression
	    </th>
	    <td>
	      libthreadar library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      multi-thread ciphering/deciphering
	    </th>
	    <td>
	      libthreadar library headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      python 3 API
	    </th>
	    <td>
	      pybind11 headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	      key derivation function based on argon2 algorithm
	    </th>
	    <td>
	      libargon2 headers and library
	    </td>
	  </tr>
	  <tr>
	    <th>
	     whirlpool hash support
	    </th>
	    <td>
	      librhash headers and library
	    </td>
	  </tr>
	</table>

	<h3>Dependencies in distro packages</h3>
	<p>
	  For simplicity, here follows the package names
	  that provide the previously mentionned libdar dependencies.
	  If you have the equivalent names for other distro, feel free
	  to contact the dar's manager maintainer for this table to be
	  updated.
	</p>

	<table class=center style="width: 100%;">
	  <tr>
	    <th>Distro</th>
	    <th>Debian/Devuan/Ubuntu</th>
	  </tr>
	  <tr>
	    <th>
	      pkg-config tool
	    </th>
	    <td>
	      pkg-config
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libz library
	    </th>
	    <td>
	      zlib1g-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libbzip2 library
	    </th>
	    <td>
	      libbz2-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      liblzo2 library
	    </th>
	    <td>
	      liblzo2-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libxz library
	    </th>
	    <td>
	      liblzma-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libzstd library
	    </th>
	    <td>
	      libzstd-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      liblz4 library
	    </th>
	    <td>
	      liblz4-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libgcrypt library
	    </th>
	    <td>
	      libgcrypt-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libgpgme library
	    </th>
	    <td>
	      libgpgme-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      doxygen binary
	    </th>
	    <td>
	      doxygen
	    </td>
	  </tr>
	  <tr>
	    <th>
	      dot binary
	    </th>
	    <td>
	      graphviz
	    </td>
	  </tr>
	  <tr>
	    <th>
	      upx binary
	    </th>
	    <td>
	      upx
	    </td>
	  </tr>
	  <tr>
	    <th>
	      groff binary
	    </th>
	    <td>
	      groff
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libext2fs library
	    </th>
	    <td>
	      libext2fs-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libthreadar library
	    </th>
	    <td>
	      libthreadar-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      librsync library
	    </th>
	    <td>
	      librsync-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libcurl library
	    </th>
	    <td>
	      libcurl-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libssh library
	    </th>
	    <td>
	      libssh-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      pybind11 library
	    </th>
	    <td>
	      python3-pybind11
	      <br/>python3-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      libargon2 library
	    </th>
	    <td>
	      libargon2-dev
	    </td>
	  </tr>
	  <tr>
	    <th>
	      whirlpool hash algorithm
	    </th>
	    <td>
	      librhash-dev
	    </td>
	  </tr>
	</table>

	<h2><a name="compiling">Compilation Process</a></h2>

	<p>
	  Once you have the minimum <a href="#requirements">requirements</a>,
	  Dar has to be compiled from source code in the following way:
	</p>

	<code class=block>
	  ./configure <a href="#configure_options">[eventually with some options]</a>
	  make
	  make install-strip
	</code>

	<dl>
	  <dt>Important:</dt><dd>
	    <p>
	      due to a bug in the autoconf/libtool softwares used to build the
	      configure script you must not have spaces in the name of the path where
	      are extracted dar' sources. You can install dar binary anywhere you
	      want, the problem does not concern dar itself but the
	      <code>./configure</code> script used to build dar: To work properly
	      it must not be ran from a path which has a space in it.
	    </p>
	  </dd>
	  <dt>Important too: </dt><dd>
	    <p>
	      By default the configure script set optimization to <code>-O2</code>,
	      depending on the compiler this may lead to problems in the resulting
	      binary (or even in the compilation process), before reporting a bug try
	      first to compile with less optimization:
	    </p>
	    <code class=block>
	      CXXFLAGS=-O
	      export CXXFLAGS
	      make clean distclean
	      ./configure [<a href="#configure_options">options...</a>]
	      make
	      make install-strip
	    </code>
	  </dd>
	</dl>

	<p>
	  The configure script may receive several options (listed
	  <a href="#configure_options">here</a>), in particular the
	  <code>--prefix</code> option let you install <i>dar</i> and <i>libdar</i>
	  in another place than the default <code>/usr/local</code>. For example
	  to have <i>dar</i> installed under <code>/usr</code> use the following:
	  <code>./configure --prefix=/usr</code>. You will be able to uninstall
	  dar/libdar by calling <code>make uninstall</code> this implies keeping the
	  source package directory around and using the same option given to
	  <code>./configure</code> as what has been used at installation time.
	</p>
	<p>
	  If you prefer building a package without installing dar, which is
	  espetially suitable for package maintainers, the <code>DESTDIR</code>
	  variable may be set at installation
	  time to install dar in another root directory. This makes the creation of
	  dar binary packages very easy. Here is an example:
	</p>

	<code class=block>
	  ./configure --prefix=/usr [eventually with some options]
	  make
	  make <b>DESTDIR=/some/where</b> install-strip
	</code>

	<p>
	  As result of the previous example, dar will be installed in
	  <code>/some/where/usr/{bin | lib | ...}</code>
	  directories, but built as if it was installed in <code>/usr</code>, thus
	  it will look for <code>/etc/darrc</code> and not
	  <code>/some/where/etc/darrc</code>. You can thus build a package from
	  files under <code>/some/where</code> by mean of a
	  pakage management tool, then install/remove this package with the distro
	  package management tools.
	</p>


	<h2>
	  <a name="configure_options">Options for the <code>configure</code> script</a>
	</h2>

	<div class=table>
	  <table class="lean left">
	    <tr>
	      <th colspan=2 class=center>
		Available options for the configure script
	      </th>
	    </tr>
	    <tr>
	      <td>
		<br>
	      </td>
	      <td>
	      </td>
	    </tr>
	    <tr>
	      <th style="width: 33%;">
		Optimization option:
	      </th>
	      <td>
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--enable-mode
	      </td>
	      <td>
		<p>
		  --enable-mode=32 or --enable-mode=infinint
		</p>
		<p>
		  if set,replace 64 bits integers used by default by 32 bits
		  integers or "infinint" integers (limitless integers). Before
		  release 2.6.0 the default integer used was infinint and this
		  option was added for speed optimization at the cost of some
		  limitations (See the
		  <a href="Limitations.html#Integers">limitations</a> for more).
		</p>
		<p>
		  Since release 2.6.0, the default is 64 bits integers (limitations
		  stay the same) instead of infinint. But if you hit the 64 bits
		  integer limitations you can still use infinint which overcome
		  this at the cost of slower performance and increase memory
		  requirement.
		</p>
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--enable-thread-stack-size="size"
	      </td>
	      <td>
		<p>
		  set the subthreads stack size to the given integer argument (in byte).
		</p>
		<p>Expression combining numbers and multiplication operator are accepted. Without this option
		  the default value is 8*1024*1024 (8 Mio).
		</p>
		<p>
		  The main thread stack size is set by the system and is usually fine (some system
		  even have it increasing when needed). But for threads created from libdar (for
		  parallel compression and parallel ciphering) this depends on the Posix thread
		  implementation. When using musl C standard library, by default new threads receive
		  a 128 kio stack size, which does not allow libgcrypt to work, leading libdar to abort
		  with the following error message: <i>Error while opening libgcrypt key handle: gcrypt/Out of memory</i>.
		  A stack size of 8 Mio seems fine with glibc and musl standard C library (with the exception of the
		  twofish algorithm with musl which still does not work when using parallel ciphering --- see -G option).
		</p>
		<p>
		  If for some reason you want subthreads receiving a smaller or larger stack size, use this option with the
		  expected stack size. Pay attention to the fact that choosing a too small stack size may lead to stack overflow, error,
		  crash or other unexpected behavior, depending on the options passed to the compiler when building dar/libdar.
		  This affects all threads created from libdar: in particular parallel compression, parallel ciphering and
		  FTP (due to libcurl) client implementation.
		</p>
	      </td>
	    </tr>
	    <tr>
	      <th>
		Deactivation options:
	      </th>
	      <td>
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--disable-largefile
	      </td>
	      <td>
		Whatever your system is, dar
		will not be able to handle file of size larger than 4GB
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--disable-ea-support
	      </td>
	      <td>
		Whatever your system is, dar
		will not be able to save or restore Extended Attributes (see the Notes
		paragraphs<a href="Notes.html#I"> I</a> and <a href="Notes.html#V">V</a>)
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-nodump-flag
	      </td>
	      <td>
		Whatever your system is, dar
		will not be able to take care of the nodump-flag (thanks to the
		--nodump option)
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--disable-linux-statx
	      </td>
	      <td>
		Even if your system provides the statx() system call, dar
		will ignore it and will not save birthtime of files as Linux FSA. At restoration time you will
		not be bothered by the warning telling you that birthime is not possible to be restored
		under Linux, if you still want to restore other Linux FSA.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--enable-dar-static
	      </td>
	      <td>
		dar_static binary (statically linked version of dar) will be built. It may fail if a library
		is missing under its statically linkable version. That's up to you be sure that for each
		dynamically linked library detected by the configure script, a static version of that library
		exists. If this was not the case you have to options:
		<ul>
		  <li>Either have the configure script ignore this liibrary by mean of <code>--disable-...-linking</code> option</li>
		  <li>Or add the static library beside the dynamic version (same directory)</li>
		</ul>
		one.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-special-alloc
	      </td>
	      <td>
		dar uses a
		special allocation scheme by default (gather the many small allocations
		in big fewer ones), this improves dar's execution speed
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-upx
	      </td>
	      <td>
		If <i>upx</i> is found in the PATH, binary
		are upx compressed at installation step. This can be disabled by this
		option, when upx is available and you don't want compressed binaries.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-gnugetopt
	      </td>
	      <td>on non GNU systems
		(Solaris, etc.) configure looks for libgnugetopt to have the long
		options support thanks to the gnu getopt_long() call, this can be
		disabled.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-thread-safe
	      </td>
	      <td>
		libdar
		may need <i>POSIX mutex</i> to be
		thread safe. If you don't want libdar relaying on
		<i>POSIX mutex</i> even if they are
		available, use this option. The resulting library may not be thread
		safe. But it will always be thread safe if you use
		--disable-special-alloc, and it will never be thread safe if
		--enable-test-memory is used.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libdl-linking
	      </td>
	      <td>
		Ignore any libdl library and avoid linking with it
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libz-linking
	      </td>
	      <td>
		Disable linking to libz, thus
		-zgzip:* option (gzip compression) will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libbz2-linking
	      </td>
	      <td>
		Disable linking to libbz2, thus
		-zbzip2:* option (libbz2 compression) will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-liblzo2-linking
	      </td>
	      <td>
		Disable linking to liblzo2, thus
		-zlzo:* option (lzo compression) will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libxz-linking
	      </td>
	      <td>
		Disable linking to liblzma5 this -zxz:* option (xz compression) will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libgcrypt-linking
	      </td>
	      <td>
		Disable
		linking with libgcrypt library. Strong encryption will not be
		available neither a hashing of generated slices.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-gpgme-linking
	      </td>
	      <td>
		Disable
		linking with gpgme library. Asymetric strong encryption algorithms will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-build-html
	      </td>
	      <td>
		Do not build API documentation
		reference with Doxygen (when it is available)
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-furtive-read
	      </td>
	      <td>
		Do not try to detect whether the
		system does support furtive read mode. This will lead furtive read
		mode to stay disabled in any case.
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-fast-dir
	      </td>
	      <td>
		Disable optimization for large
		directories, doing so has a little positive impact on memory
		requirement but a huge drawback on execution time
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-execinfo
	      </td>
	      <td>
		Disable reporting stack
		information on self diagnostic bugs even
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-threadar
	      </td>
	      <td>Avoid linking with libthreadar even if available, libdar will not create threads
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-birthtime
	      </td>
	      <td>Disable the HFS+ Filesystem Specific Attribute support
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-librsync-linking
	      </td>
	      <td>
		Disable linking with librsync, thus delta binary will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libcurl-linking
	      </td>
	      <td>
		Disable linking with libcurl, thus remote repository support using ftp will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-libssh-linking
	      </td>
	      <td>
		Disable linking with libssh, thus remote repository support using sftp will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--disable-librhash-linking
	      </td>
	      <td>
		Disable linking with librhash, thus whirlpool hash will not be available
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--enable-limit-time-accuracy={s|us|ns}
	      </td>
	      <td>
		Limit the timestamp precision of files to seconds, microseconds (lowercase U
		not the &mu; greek letter for &mu;s)  and nanoseconds respectively,
		by default dar uses the maximum time precision supported by the operating system.
	      </td>
	    </tr>
	    <tr>
	      <th>
		Troubleshooting option:
	      </th>
	      <td>
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--enable-os-bits
	      </td>
	      <td>
		If set, dar
		uses the given argument (32 or 64) to determine which integer type to
		use. This much match your CPU register size. By default dar uses the
		system &lt;stdint.h&gt; file to determine the correct integer type to
		use
	      </td>
	    </tr>
	    <tr>
	      <th>
		Debugging options:
	      </th>
	      <td>
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--enable-examples
	      </td>
	      <td>
		If set, example programs based on infinint will also be built
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--enable-debug
	      </td>
	      <td>
		If set, use debug compilation
		option, and if possible statically link binaries
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>
		--enable-pedantic
	      </td>
	      <td>
		If set,
		transmits the -pedantic option to the compiler
	      </td>
	    </tr>
	    <tr>
	      <td class=desc>--enable-profiling</td>
	      <td>Enable executable profiling</td>
	    </tr>
	    <tr>
	      <td class=desc>--enable-debug-memory</td>
	      <td>
		If set, logs all memory
		allocations and releases to
		<code>/tmp/dar_debug_mem_allocation.txt</code>.
		The resulting executable is expected to be very
		slow
	      </td>
	    </tr>
	  </table>
	</div>

	<h2><a name="GIT">GIT</a></h2>
	<h3>Presentation</h3>
	<p>
	  To manage its source code
	  versions DAR uses GIT (it used CVS up to Q1 2012 and even the older RCS
	  in 2002). Since September 2nd 2017, the GIT repository has been cloned
	  to <a href="https://github.com/Edrusb/DAR">GitHub</a> while the original
	  repository <a href="https://sourceforge.net/p/dar/code/">at Sourceforge</a>
	  still stays updated. Both should contain the exact same code, that's up to
	  you to choose the repository you prefer. For sanity also, starting September
	  3rd 2017, git tags including those for release candidates will be signed
	  with GPG.
	</p>

	<h3>Dar's repository Organization</h3>
	<p>
	  GIT (more than CVS) eases the use
	  of branches. In dar repository, there are thus a lot of them: the first
	  and main one is called "master". It contains current development and
	  most probably unstable code. There are other permanent branches that
	  hold stable code. They are all named by "<b>branch_A.B.x</b>"
	  where A and B are the numbers corresponding to a released versions
	  family. For example, "<b>branch_2.6.x</b>" holds the stable code
	  for releases 2.6.0, 2.6.1, 2.6.2 and so on.
	  <u>
	    It also holds pending fixes for the next release on that branch
	    you might be interested in.
	  </u>
	</p>
	<p>
	  The global organisation of the repository is thus the following:
	</p>
	<code class=block>
	  &nbsp;   (HEAD of "master" branch)
	  &nbsp;         new feature 101
	  &nbsp;                |
	  &nbsp;                ^
	  &nbsp;                |
	  &nbsp;          new feature 100
	  &nbsp;                |
	  &nbsp;                ^
	  &nbsp;                |
	  &nbsp;          new feature 99
	  &nbsp;                |
	  &nbsp;                +--->-- fix 901 ->- fix 902 (release 2.4.1) ->- fix 903 ->- fix 904 (release 2.4.2) ->- fix 905 (HEAD of branch_2.4.x)
	  &nbsp;                |
	  &nbsp;          new feature 98
	  &nbsp;                |
	  &nbsp;                ^
	  &nbsp;                |
	  &nbsp;          new feature 97
	  &nbsp;                |
	  &nbsp;                +--->-- fix 801 ->- fix 802 (release 2.3.1) (also HEAD of branch_2.3.x as no pending fix is waiting for release)
	  &nbsp;                |
	  &nbsp;               ...
	  &nbsp;                |
	  &nbsp;                ^
	  &nbsp;                |
	  &nbsp;         initial version
	</code>


	<h3>Usage</h3>
	<p>
	  To get dar source code from GIT
	  you have first to <b>clone</b> the
	  repository hosted at sourceforge:
	</p>
	<code class=block>
	  git clone https://github.com/Edrusb/DAR.git
	  cd DAR
	</code>
	<p>
	  You will probably not want to use current development code so you have
	  to change from the branch <i>master</i>
	  to the branch "branch_A.B.x" of you choice:
	</p>
	<code class=block>
	  git checkout branch_2.6.x
	</code>
	<p>
	  That's all. You now have the most recent stable code (for branch_2.6.x
	  in this example). To see what changes have been brought since the last
	  release, use the following command:
	</p>
	<code class=block>
	  git log
	</code>
	<p>
	  If you plan to keep the repository you've cloned, updating the change
	  is as easy as using (no need to clone the repository from scratch
	  again):
	</p>
	<code class=block>
	  git pull
	</code>
	<p>
	  There is also a web interface to git at
	  <a href="https://github.com/Edrusb/DAR">github</a>
	</p>

	<h3>Having the sources ready for compilation</h3>
	<p>
	  Please
	  read the fiile named <code>USING_SOURCE_FROM_GIT</code> located at the root of the
	  directory tree you retrieved through GIT, it contains up to date
	  information about the required tools and how to generate the
	  configuration file. Then you can proceed to source compilation as
	  <a href="#compiling">done with regular source package</a>
	</p>

	<h2><a name="Tools_sites">Related Softwares</a></h2>
	<ul>
	  <li>
	    <a href="http://www.gnu.org/software/tar/tar.html">TAR home page</a>
	    (DAR's grant and venerable brother)
	  </li>
	  <li>
	    <a href="http://acl.bestbits.at/">Extended Attributes</a>
	    home page
	  </li>
	  <li>
	    <a href="http://www.gnupg.org/">GNU Privacy Guard</a>
	    home page
	  </li>
	  <li>
	    <a href="http://cygwin.com/">Cygwin</a> home page
	  </li>
	  <li>
	    <a href="http://parchive.sourceforge.net/">Parchive</a>
	    home page and
	    <a href="https://github.com/BlackIkeEagle/par2cmdline">https://github.com/BlackIkeEagle/par2cmdline</a>
	    (fork from the official site maintained since decembre 2013)
	  </li>
	  <li>
	    <a href="http://upx.sourceforge.net/">the Ultimate Packer for eXecutables</a>
	    home page
	  </li>
	  <li><a href="http://www.doxygen.org/">Doxygen</a> home page</li>
	  <li>
	    <a href="http://www.gnu.org/software/groff/groff.html">Groff</a>
	    home page
	  </li>
	  <li>
	    <a href="http://www.gnu.org/software/make/">Gnu Make</a>
	    home page
	  </li>
	  <li>
	    <a href="http://gcc.gnu.org/">GCC</a> home page
	  </li>
	</ul>
      </div>
    </div>
  </body>
</html>