brianmario-bzip2-ruby 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +21 -0
- data/README.rdoc +3 -6
- data/Rakefile +1 -1
- data/VERSION.yml +1 -1
- data/bzip2-ruby.gemspec +22 -21
- data/ext/{bz2.c → bzip2.c} +94 -69
- data/ext/extconf.rb +6 -1
- data/lib/bzip2.rb +5 -0
- data/spec/reader_spec.rb +357 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/writer_spec.rb +139 -0
- metadata +14 -11
- data/History.txt +0 -5
- data/test/reader.rb +0 -370
- data/test/runit_.rb +0 -32
- data/test/writer.rb +0 -152
data/CHANGELOG.rdoc
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
== 0.2.5 ???
|
2
|
+
|
3
|
+
* initial conversion of original tests over to rspec
|
4
|
+
|
5
|
+
== 0.2.4 2009-05-02
|
6
|
+
|
7
|
+
* renamed BZ2 module/namespace to Bzip2
|
8
|
+
|
9
|
+
== 0.2.3 2009-05-02
|
10
|
+
|
11
|
+
* renamed gem to bzip2-ruby from bz2
|
12
|
+
* initial conversion to jeweler
|
13
|
+
* bundling gemspec
|
14
|
+
* README and file structure organization updates
|
15
|
+
* updated Init_*() ruby initializer function to match new gem name
|
16
|
+
|
17
|
+
== 0.2.2 2008-12-22
|
18
|
+
|
19
|
+
* 1 major enhancement:
|
20
|
+
* Gemify bz2 library from http://moulon.inra.fr/ruby/bz2.html
|
21
|
+
* All credit goes to Guy Decoux <ts@moulon.inra.fr>
|
data/README.rdoc
CHANGED
@@ -8,13 +8,9 @@ You may need to specify:
|
|
8
8
|
|
9
9
|
--with-bz2-dir=<include file directory for libbzip2>
|
10
10
|
|
11
|
-
==
|
11
|
+
== TODO
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
== Spec Tests:
|
16
|
-
|
17
|
-
coming soon...
|
13
|
+
* 1.9 compatibility - I could use some help with this as I think it's gonna require some Makefile trickery
|
18
14
|
|
19
15
|
== Copying
|
20
16
|
|
@@ -28,3 +24,4 @@ You may need to specify:
|
|
28
24
|
* Renamed BZ2 module/namespace to Bzip2
|
29
25
|
* Renamed compiled binary from "bz2" to "bzip2"
|
30
26
|
* Renamed gem from "bz2" to "bzip2-ruby"
|
27
|
+
* Converted original tests to rspec
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ begin
|
|
7
7
|
gem.email = "seniorlopez@gmail.com"
|
8
8
|
gem.homepage = "http://github.com/brianmario/bzip2-ruby"
|
9
9
|
gem.authors = ["Guy Decoux", "Brian Lopez"]
|
10
|
-
gem.require_paths = ["ext"]
|
10
|
+
gem.require_paths = ["lib", "ext"]
|
11
11
|
gem.extra_rdoc_files = `git ls-files *.rdoc`.split("\n")
|
12
12
|
gem.files = `git ls-files`.split("\n")
|
13
13
|
gem.extensions = ["ext/extconf.rb"]
|
data/VERSION.yml
CHANGED
data/bzip2-ruby.gemspec
CHANGED
@@ -2,40 +2,41 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{bzip2-ruby}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Guy Decoux", "Brian Lopez"]
|
9
|
-
s.date = %q{2009-05-
|
9
|
+
s.date = %q{2009-05-18}
|
10
10
|
s.email = %q{seniorlopez@gmail.com}
|
11
11
|
s.extensions = ["ext/extconf.rb"]
|
12
12
|
s.extra_rdoc_files = [
|
13
|
-
"
|
13
|
+
"CHANGELOG.rdoc",
|
14
|
+
"README.rdoc"
|
14
15
|
]
|
15
16
|
s.files = [
|
16
|
-
"
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
17
|
+
"CHANGELOG.rdoc",
|
18
|
+
"README.rdoc",
|
19
|
+
"Rakefile",
|
20
|
+
"VERSION.yml",
|
21
|
+
"bzip2-ruby.gemspec",
|
22
|
+
"ext/bzip2.c",
|
23
|
+
"ext/extconf.rb",
|
24
|
+
"lib/bzip2.rb",
|
25
|
+
"spec/reader_spec.rb",
|
26
|
+
"spec/spec_helper.rb",
|
27
|
+
"spec/writer_spec.rb",
|
28
|
+
"tasks/extconf.rake",
|
29
|
+
"tasks/extconf/bz2.rake"
|
28
30
|
]
|
29
|
-
s.has_rdoc = true
|
30
31
|
s.homepage = %q{http://github.com/brianmario/bzip2-ruby}
|
31
32
|
s.rdoc_options = ["--charset=UTF-8"]
|
32
|
-
s.require_paths = ["ext"]
|
33
|
-
s.rubygems_version = %q{1.3.
|
33
|
+
s.require_paths = ["lib", "ext"]
|
34
|
+
s.rubygems_version = %q{1.3.3}
|
34
35
|
s.summary = %q{Ruby C bindings to libbzip2.}
|
35
36
|
s.test_files = [
|
36
|
-
"
|
37
|
-
|
38
|
-
|
37
|
+
"spec/reader_spec.rb",
|
38
|
+
"spec/spec_helper.rb",
|
39
|
+
"spec/writer_spec.rb"
|
39
40
|
]
|
40
41
|
|
41
42
|
if s.respond_to? :specification_version then
|
data/ext/{bz2.c → bzip2.c}
RENAMED
@@ -1,7 +1,11 @@
|
|
1
1
|
#include <ruby.h>
|
2
|
-
#include <rubyio.h>
|
3
2
|
#include <bzlib.h>
|
3
|
+
#ifndef RUBY_19_COMPATIBILITY
|
4
|
+
#include <rubyio.h>
|
4
5
|
#include <version.h>
|
6
|
+
#else
|
7
|
+
#include <ruby/io.h>
|
8
|
+
#endif
|
5
9
|
|
6
10
|
static VALUE bz_cWriter, bz_cReader, bz_cInternal;
|
7
11
|
static VALUE bz_eError, bz_eConfigError, bz_eEOZError;
|
@@ -109,18 +113,20 @@ bz_find_struct(obj, ptr, posp)
|
|
109
113
|
struct bz_iv *bziv;
|
110
114
|
int i;
|
111
115
|
|
112
|
-
for (i = 0; i <
|
113
|
-
Data_Get_Struct(
|
116
|
+
for (i = 0; i < RARRAY_LEN(bz_internal_ary); i++) {
|
117
|
+
Data_Get_Struct(RARRAY_PTR(bz_internal_ary)[i], struct bz_iv, bziv);
|
114
118
|
if (ptr) {
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
+
#ifndef RUBY_19_COMPATIBILITY
|
120
|
+
if (TYPE(bziv->io) == T_FILE && RFILE(bziv->io)->fptr == (OpenFile *)ptr) {
|
121
|
+
#else
|
122
|
+
if (TYPE(bziv->io) == T_FILE && RFILE(bziv->io)->fptr == (rb_io_t *)ptr) {
|
123
|
+
#endif
|
124
|
+
if (posp) *posp = i;
|
125
|
+
return bziv;
|
119
126
|
}
|
120
|
-
else if (TYPE(bziv->io) == T_DATA &&
|
121
|
-
|
122
|
-
|
123
|
-
return bziv;
|
127
|
+
else if (TYPE(bziv->io) == T_DATA && DATA_PTR(bziv->io) == ptr) {
|
128
|
+
if (posp) *posp = i;
|
129
|
+
return bziv;
|
124
130
|
}
|
125
131
|
}
|
126
132
|
else if (bziv->io == obj) {
|
@@ -215,8 +221,8 @@ bz_internal_finalize(ary, obj)
|
|
215
221
|
struct bz_iv *bziv;
|
216
222
|
struct bz_file *bzf;
|
217
223
|
|
218
|
-
for (i = 0; i <
|
219
|
-
elem =
|
224
|
+
for (i = 0; i < RARRAY_LEN(bz_internal_ary); i++) {
|
225
|
+
elem = RARRAY_PTR(bz_internal_ary)[i];
|
220
226
|
Data_Get_Struct(elem, struct bz_iv, bziv);
|
221
227
|
if (bziv->bz2) {
|
222
228
|
RDATA(bziv->bz2)->dfree = ruby_xfree;
|
@@ -293,24 +299,35 @@ bz_io_data_finalize(ptr)
|
|
293
299
|
|
294
300
|
bziv = bz_find_struct(0, ptr, &pos);
|
295
301
|
if (bziv) {
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
302
|
+
rb_ary_delete_at(bz_internal_ary, pos);
|
303
|
+
Data_Get_Struct(bziv->bz2, struct bz_file, bzf);
|
304
|
+
rb_protect(bz_writer_internal_flush, (VALUE)bzf, 0);
|
305
|
+
RDATA(bziv->bz2)->dfree = ruby_xfree;
|
306
|
+
if (bziv->finalize) {
|
307
|
+
(*bziv->finalize)(ptr);
|
308
|
+
} else if (TYPE(bzf->io) == T_FILE) {
|
309
|
+
#ifndef RUBY_19_COMPATIBILITY
|
310
|
+
OpenFile *file = (OpenFile *)ptr;
|
311
|
+
if (file->f) {
|
312
|
+
fclose(file->f);
|
313
|
+
file->f = 0;
|
314
|
+
}
|
315
|
+
if (file->f2) {
|
316
|
+
fclose(file->f2);
|
317
|
+
file->f2 = 0;
|
318
|
+
}
|
319
|
+
#else
|
320
|
+
rb_io_t *file = (rb_io_t *)ptr;
|
321
|
+
if (file->fd) {
|
322
|
+
fclose(file->fd);
|
323
|
+
file->fd = 0;
|
324
|
+
}
|
325
|
+
if (file->stdio_file) {
|
326
|
+
fclose(file->stdio_file);
|
327
|
+
file->stdio_file = 0;
|
328
|
+
}
|
329
|
+
#endif
|
330
|
+
}
|
314
331
|
}
|
315
332
|
}
|
316
333
|
|
@@ -396,8 +413,8 @@ bz_str_write(obj, str)
|
|
396
413
|
if (TYPE(str) != T_STRING) {
|
397
414
|
rb_raise(rb_eArgError, "expected a String");
|
398
415
|
}
|
399
|
-
if (
|
400
|
-
rb_str_cat(obj,
|
416
|
+
if (RSTRING_LEN(str)) {
|
417
|
+
rb_str_cat(obj, RSTRING_PTR(str), RSTRING_LEN(str));
|
401
418
|
}
|
402
419
|
return str;
|
403
420
|
}
|
@@ -436,7 +453,11 @@ bz_writer_init(argc, argv, obj)
|
|
436
453
|
else {
|
437
454
|
VALUE iv;
|
438
455
|
struct bz_iv *bziv;
|
439
|
-
|
456
|
+
#ifndef RUBY_19_COMPATIBILITY
|
457
|
+
OpenFile *fptr;
|
458
|
+
#else
|
459
|
+
rb_io_t *fptr;
|
460
|
+
#endif
|
440
461
|
|
441
462
|
rb_io_taint_check(a);
|
442
463
|
if (!rb_respond_to(a, id_write)) {
|
@@ -507,8 +528,8 @@ bz_writer_write(obj, a)
|
|
507
528
|
bzf->buflen = BZ_RB_BLOCKSIZE;
|
508
529
|
bzf->buf[0] = bzf->buf[bzf->buflen] = '\0';
|
509
530
|
}
|
510
|
-
bzf->bzs.next_in =
|
511
|
-
bzf->bzs.avail_in =
|
531
|
+
bzf->bzs.next_in = RSTRING_PTR(a);
|
532
|
+
bzf->bzs.avail_in = RSTRING_LEN(a);
|
512
533
|
while (bzf->bzs.avail_in) {
|
513
534
|
bzf->bzs.next_out = bzf->buf;
|
514
535
|
bzf->bzs.avail_out = bzf->buflen;
|
@@ -523,7 +544,7 @@ bz_writer_write(obj, a)
|
|
523
544
|
rb_funcall(bzf->io, id_write, 1, rb_str_new(bzf->buf, n));
|
524
545
|
}
|
525
546
|
}
|
526
|
-
return INT2NUM(
|
547
|
+
return INT2NUM(RSTRING_LEN(a));
|
527
548
|
}
|
528
549
|
|
529
550
|
static VALUE
|
@@ -614,7 +635,11 @@ bz_reader_init(argc, argv, obj)
|
|
614
635
|
}
|
615
636
|
if (rb_respond_to(a, id_read)) {
|
616
637
|
if (TYPE(a) == T_FILE) {
|
617
|
-
|
638
|
+
#ifndef RUBY_19_COMPATIBILITY
|
639
|
+
OpenFile *fptr;
|
640
|
+
#else
|
641
|
+
rb_io_t *fptr;
|
642
|
+
#endif
|
618
643
|
|
619
644
|
GetOpenFile(a, fptr);
|
620
645
|
rb_io_check_readable(fptr);
|
@@ -691,14 +716,14 @@ bz_next_available(bzf, in)
|
|
691
716
|
}
|
692
717
|
if (!bzf->bzs.avail_in) {
|
693
718
|
bzf->in = rb_funcall(bzf->io, id_read, 1, INT2FIX(1024));
|
694
|
-
if (TYPE(bzf->in) != T_STRING ||
|
719
|
+
if (TYPE(bzf->in) != T_STRING || RSTRING_LEN(bzf->in) == 0) {
|
695
720
|
BZ2_bzDecompressEnd(&(bzf->bzs));
|
696
721
|
bzf->bzs.avail_out = 0;
|
697
722
|
bzf->state = BZ_UNEXPECTED_EOF;
|
698
723
|
bz_raise(bzf->state);
|
699
724
|
}
|
700
|
-
bzf->bzs.next_in =
|
701
|
-
bzf->bzs.avail_in =
|
725
|
+
bzf->bzs.next_in = RSTRING_PTR(bzf->in);
|
726
|
+
bzf->bzs.avail_in = RSTRING_LEN(bzf->in);
|
702
727
|
}
|
703
728
|
if ((bzf->buflen - in) < (BZ_RB_BLOCKSIZE / 2)) {
|
704
729
|
bzf->buf = REALLOC_N(bzf->buf, char, bzf->buflen+BZ_RB_BLOCKSIZE+1);
|
@@ -780,7 +805,7 @@ bz_read_until(bzf, str, len, td1)
|
|
780
805
|
if (nex) {
|
781
806
|
res = rb_str_cat(res, bzf->buf, nex);
|
782
807
|
}
|
783
|
-
if (
|
808
|
+
if (RSTRING_LEN(res)) {
|
784
809
|
return res;
|
785
810
|
}
|
786
811
|
return Qnil;
|
@@ -845,8 +870,8 @@ bz_reader_read(argc, argv, obj)
|
|
845
870
|
}
|
846
871
|
while (1) {
|
847
872
|
total = bzf->bzs.avail_out;
|
848
|
-
if (n != -1 && (
|
849
|
-
n -=
|
873
|
+
if (n != -1 && (RSTRING_LEN(res) + total) >= n) {
|
874
|
+
n -= RSTRING_LEN(res);
|
850
875
|
res = rb_str_cat(res, bzf->bzs.next_out, n);
|
851
876
|
bzf->bzs.next_out += n;
|
852
877
|
bzf->bzs.avail_out -= n;
|
@@ -868,10 +893,10 @@ bz_getc(obj)
|
|
868
893
|
{
|
869
894
|
VALUE length = INT2FIX(1);
|
870
895
|
VALUE res = bz_reader_read(1, &length, obj);
|
871
|
-
if (NIL_P(res) ||
|
896
|
+
if (NIL_P(res) || RSTRING_LEN(res) == 0) {
|
872
897
|
return EOF;
|
873
898
|
}
|
874
|
-
return
|
899
|
+
return RSTRING_PTR(res)[0];
|
875
900
|
}
|
876
901
|
|
877
902
|
static VALUE
|
@@ -911,15 +936,15 @@ bz_reader_ungets(obj, a)
|
|
911
936
|
if (!bzf->buf) {
|
912
937
|
bz_raise(BZ_SEQUENCE_ERROR);
|
913
938
|
}
|
914
|
-
if ((bzf->bzs.avail_out +
|
915
|
-
bzf->bzs.next_out -=
|
916
|
-
MEMCPY(bzf->bzs.next_out,
|
917
|
-
bzf->bzs.avail_out +=
|
939
|
+
if ((bzf->bzs.avail_out + RSTRING_LEN(a)) < bzf->buflen) {
|
940
|
+
bzf->bzs.next_out -= RSTRING_LEN(a);
|
941
|
+
MEMCPY(bzf->bzs.next_out, RSTRING_PTR(a), char, RSTRING_LEN(a));
|
942
|
+
bzf->bzs.avail_out += RSTRING_LEN(a);
|
918
943
|
}
|
919
944
|
else {
|
920
|
-
bzf->buf = REALLOC_N(bzf->buf, char, bzf->buflen +
|
921
|
-
MEMCPY(bzf->buf + bzf->buflen,
|
922
|
-
bzf->buflen +=
|
945
|
+
bzf->buf = REALLOC_N(bzf->buf, char, bzf->buflen + RSTRING_LEN(a) + 1);
|
946
|
+
MEMCPY(bzf->buf + bzf->buflen, RSTRING_PTR(a), char,RSTRING_LEN(a));
|
947
|
+
bzf->buflen += RSTRING_LEN(a);
|
923
948
|
bzf->buf[bzf->buflen] = '\0';
|
924
949
|
bzf->bzs.next_out = bzf->buf;
|
925
950
|
bzf->bzs.avail_out = bzf->buflen;
|
@@ -966,8 +991,8 @@ bz_reader_gets_internal(argc, argv, obj, td, init)
|
|
966
991
|
if (NIL_P(rs)) {
|
967
992
|
return bz_reader_read(1, &rs, obj);
|
968
993
|
}
|
969
|
-
rslen =
|
970
|
-
if (rs == rb_default_rs || (rslen == 1 &&
|
994
|
+
rslen = RSTRING_LEN(rs);
|
995
|
+
if (rs == rb_default_rs || (rslen == 1 && RSTRING_PTR(rs)[0] == '\n')) {
|
971
996
|
return bz_reader_gets(obj);
|
972
997
|
}
|
973
998
|
|
@@ -977,7 +1002,7 @@ bz_reader_gets_internal(argc, argv, obj, td, init)
|
|
977
1002
|
rspara = 1;
|
978
1003
|
}
|
979
1004
|
else {
|
980
|
-
rsptr =
|
1005
|
+
rsptr = RSTRING_PTR(rs);
|
981
1006
|
rspara = 0;
|
982
1007
|
}
|
983
1008
|
|
@@ -1024,13 +1049,13 @@ bz_reader_set_unused(obj, a)
|
|
1024
1049
|
Check_Type(a, T_STRING);
|
1025
1050
|
Get_BZ2(obj, bzf);
|
1026
1051
|
if (!bzf->in) {
|
1027
|
-
bzf->in = rb_str_new(
|
1052
|
+
bzf->in = rb_str_new(RSTRING_PTR(a), RSTRING_LEN(a));
|
1028
1053
|
}
|
1029
1054
|
else {
|
1030
|
-
bzf->in = rb_str_cat(bzf->in,
|
1055
|
+
bzf->in = rb_str_cat(bzf->in, RSTRING_PTR(a), RSTRING_LEN(a));
|
1031
1056
|
}
|
1032
|
-
bzf->bzs.next_in =
|
1033
|
-
bzf->bzs.avail_in =
|
1057
|
+
bzf->bzs.next_in = RSTRING_PTR(bzf->in);
|
1058
|
+
bzf->bzs.avail_in = RSTRING_LEN(bzf->in);
|
1034
1059
|
return Qnil;
|
1035
1060
|
}
|
1036
1061
|
|
@@ -1042,10 +1067,10 @@ bz_reader_getc(obj)
|
|
1042
1067
|
VALUE len = INT2FIX(1);
|
1043
1068
|
|
1044
1069
|
str = bz_reader_read(1, &len, obj);
|
1045
|
-
if (NIL_P(str) ||
|
1070
|
+
if (NIL_P(str) || RSTRING_LEN(str) == 0) {
|
1046
1071
|
return Qnil;
|
1047
1072
|
}
|
1048
|
-
return INT2FIX(
|
1073
|
+
return INT2FIX(RSTRING_PTR(str)[0] & 0xff);
|
1049
1074
|
}
|
1050
1075
|
|
1051
1076
|
static void
|
@@ -1411,7 +1436,7 @@ bz_str_read(argc, argv, obj)
|
|
1411
1436
|
Data_Get_Struct(obj, struct bz_str, bzs);
|
1412
1437
|
rb_scan_args(argc, argv, "01", &len);
|
1413
1438
|
if (NIL_P(len)) {
|
1414
|
-
count =
|
1439
|
+
count = RSTRING_LEN(bzs->str);
|
1415
1440
|
}
|
1416
1441
|
else {
|
1417
1442
|
count = NUM2INT(len);
|
@@ -1422,13 +1447,13 @@ bz_str_read(argc, argv, obj)
|
|
1422
1447
|
if (!count || bzs->pos == -1) {
|
1423
1448
|
return Qnil;
|
1424
1449
|
}
|
1425
|
-
if ((bzs->pos + count) >=
|
1426
|
-
res = rb_str_new(
|
1427
|
-
|
1450
|
+
if ((bzs->pos + count) >= RSTRING_LEN(bzs->str)) {
|
1451
|
+
res = rb_str_new(RSTRING_PTR(bzs->str) + bzs->pos,
|
1452
|
+
RSTRING_LEN(bzs->str) - bzs->pos);
|
1428
1453
|
bzs->pos = -1;
|
1429
1454
|
}
|
1430
1455
|
else {
|
1431
|
-
res = rb_str_new(
|
1456
|
+
res = rb_str_new(RSTRING_PTR(bzs->str) + bzs->pos, count);
|
1432
1457
|
bzs->pos += count;
|
1433
1458
|
}
|
1434
1459
|
return res;
|
@@ -1471,12 +1496,12 @@ bz_proc_new(func, val)
|
|
1471
1496
|
rb_intern("to_proc"), 0, 0);
|
1472
1497
|
}
|
1473
1498
|
|
1474
|
-
void
|
1499
|
+
void Init_bzip2_ext()
|
1475
1500
|
{
|
1476
1501
|
VALUE bz_mBzip2;
|
1477
1502
|
|
1478
1503
|
if (rb_const_defined_at(rb_cObject, rb_intern("Bzip2"))) {
|
1479
|
-
|
1504
|
+
rb_raise(rb_eNameError, "module already defined");
|
1480
1505
|
}
|
1481
1506
|
|
1482
1507
|
bz_internal_ary = rb_ary_new();
|
data/ext/extconf.rb
CHANGED
@@ -7,7 +7,12 @@ if have_library("bz2", "BZ2_bzWriteOpen")
|
|
7
7
|
if enable_config("shared", true)
|
8
8
|
$static = nil
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
|
+
if RUBY_VERSION =~ /1.9/
|
12
|
+
$CFLAGS << ' -DRUBY_19_COMPATIBILITY'
|
13
|
+
end
|
14
|
+
|
15
|
+
create_makefile("bzip2_ext")
|
11
16
|
else
|
12
17
|
puts "libbz2 not found, maybe try manually specifying --with-bz2-dir to find it?"
|
13
18
|
end
|