minibwa 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3a36a760e0ac6885ee19e57ee672350abc63ee679541f757f9aca1bf2d1336b
4
- data.tar.gz: 85da4f46eceba36f840a89207b91ae34a5bac5825a8f02cdb0e92bce0d4a38cc
3
+ metadata.gz: 1edda6290bb47eb0a3d0845ee5221aa8926400069ffdb094f273a96c637771d1
4
+ data.tar.gz: f937061f758b0c151aedc9ab396fde98d4bea351b7931b603ec98d8307238658
5
5
  SHA512:
6
- metadata.gz: 955d5ad73d6016241507b1f1b8b72aaa36cf7fd4004c5586c3ec943aa3d24a3bb47b6a333c84efdf1394c55a9f3bccc0726ef74d7c59e6811d5f44430db79dad
7
- data.tar.gz: c3a4359e47da6b147e65c23afe0efb7407a04960c493cd8883dac9ca4a8b4edad7a766a1b225cf6aadf2f02f55643c1cd7f24f861f8f7294a8d6f4cb70c667c6
6
+ metadata.gz: 5c893fbb317c8ee8b536b41616b4551494d2c2bc2a449527063570823995a39031c0bc08192347c7469e7763953e0f21424a5850f7bb57a5d2c97b83a5832cbc
7
+ data.tar.gz: 0cdc67a36b58a37510859b87443d721c7ecc1183cc0095786e02e737ab8289d0d8fd2e8ba429c97bbe0dd8297868b150c7279106fff293d8bf8fef19ed58eaad
@@ -0,0 +1,18 @@
1
+ #ifndef MINIBWA_WINDOWS_SYS_MMAN_H
2
+ #define MINIBWA_WINDOWS_SYS_MMAN_H
3
+
4
+ #include <stddef.h>
5
+ #include <sys/types.h>
6
+
7
+ #define PROT_READ 0x1
8
+ #define MAP_SHARED 0x1
9
+ #define MAP_FAILED ((void *)-1)
10
+
11
+ void *minibwa_mmap(void *addr, size_t length, int prot, int flags, int fd,
12
+ off_t offset);
13
+ int minibwa_munmap(void *addr, size_t length);
14
+
15
+ #define mmap minibwa_mmap
16
+ #define munmap minibwa_munmap
17
+
18
+ #endif
@@ -46,6 +46,14 @@ sais = %w[libsais libsais64]
46
46
 
47
47
  binding_srcs = %w[minibwa mb_options mb_index mb_index_build mb_buffer mb_hit]
48
48
 
49
+ # Upstream uses the POSIX mmap API to load indexes. Keep the vendored sources
50
+ # untouched and provide that small API surface locally when building with
51
+ # MinGW, where <sys/mman.h> is not available.
52
+ if /mingw|mswin/i.match?(RUBY_PLATFORM)
53
+ binding_srcs << 'win_mman'
54
+ $INCFLAGS << ' -I$(srcdir)/compat'
55
+ end
56
+
49
57
  $srcs = binding_srcs.map { |f| "#{f}.c" } +
50
58
  (core + ksw2 + sais).map { |f| "minibwa/#{f}.c" }
51
59
  $objs = $srcs.map { |f| "#{File.basename(f, '.c')}.o" }
@@ -0,0 +1,52 @@
1
+ #include <errno.h>
2
+ #include <stdint.h>
3
+ #include <windows.h>
4
+ #include <io.h>
5
+
6
+ #include "compat/sys/mman.h"
7
+
8
+ void *
9
+ minibwa_mmap(void *addr, size_t length, int prot, int flags, int fd,
10
+ off_t offset)
11
+ {
12
+ HANDLE file;
13
+ HANDLE mapping;
14
+ void *view;
15
+ uint64_t map_offset;
16
+
17
+ (void)addr;
18
+ (void)prot;
19
+ (void)flags;
20
+
21
+ file = (HANDLE)_get_osfhandle(fd);
22
+ if (file == INVALID_HANDLE_VALUE) {
23
+ errno = EBADF;
24
+ return MAP_FAILED;
25
+ }
26
+
27
+ mapping = CreateFileMappingA(file, NULL, PAGE_READONLY, 0, 0, NULL);
28
+ if (mapping == NULL) {
29
+ errno = EINVAL;
30
+ return MAP_FAILED;
31
+ }
32
+
33
+ map_offset = (uint64_t)offset;
34
+ view = MapViewOfFile(mapping, FILE_MAP_READ, (DWORD)(map_offset >> 32),
35
+ (DWORD)map_offset, length);
36
+ CloseHandle(mapping);
37
+ if (view == NULL) {
38
+ errno = EINVAL;
39
+ return MAP_FAILED;
40
+ }
41
+
42
+ return view;
43
+ }
44
+
45
+ int
46
+ minibwa_munmap(void *addr, size_t length)
47
+ {
48
+ (void)length;
49
+ if (UnmapViewOfFile(addr)) return 0;
50
+ errno = EINVAL;
51
+ return -1;
52
+ }
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Minibwa
4
4
  # Gem version.
5
- VERSION = '0.0.1'
5
+ VERSION = '0.0.2'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minibwa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
@@ -16,6 +16,7 @@ extra_rdoc_files: []
16
16
  files:
17
17
  - LICENSE.txt
18
18
  - README.md
19
+ - ext/minibwa/compat/sys/mman.h
19
20
  - ext/minibwa/extconf.rb
20
21
  - ext/minibwa/mb_buffer.c
21
22
  - ext/minibwa/mb_hit.c
@@ -58,6 +59,7 @@ files:
58
59
  - ext/minibwa/minibwa/pe.c
59
60
  - ext/minibwa/minibwa/s2n-lite.h
60
61
  - ext/minibwa/minibwa/seed.c
62
+ - ext/minibwa/win_mman.c
61
63
  - lib/minibwa.rb
62
64
  - lib/minibwa/hit.rb
63
65
  - lib/minibwa/index.rb
@@ -82,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
84
  - !ruby/object:Gem::Version
83
85
  version: '0'
84
86
  requirements: []
85
- rubygems_version: 3.6.9
87
+ rubygems_version: 4.0.16
86
88
  specification_version: 4
87
89
  summary: Ruby bindings for minibwa, a short-read aligner
88
90
  test_files: []