Skip to content

Commit 8c6a9b8

Browse files
ruby : Follow source tree change (#2580)
* Follow whisper.cpp source tree change * Update whispercpp.gemspec * Follow whisper.cpp log level change * Fix paths in GitHub workflow for Ruby bindings * Use GitHub workflow setting for dependency definition * Use ternary operator
1 parent 37c8802 commit 8c6a9b8

File tree

11 files changed

+116
-153
lines changed

11 files changed

+116
-153
lines changed

.github/workflows/bindings-ruby.yml

Lines changed: 30 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -3,61 +3,41 @@ on:
33
push:
44
paths:
55
- bindings/ruby/**
6-
- src/whisper.cpp
7-
- include/whisper.h
8-
- ggml/src/ggml.c
9-
- ggml/src/ggml-impl.h
10-
- ggml/src/ggml-aarch64.h
11-
- ggml/src/ggml-aarch64.c
12-
- ggml/src/ggml-alloc.c
13-
- ggml/src/ggml-backend-impl.h
14-
- ggml/src/ggml-backend.cpp
15-
- ggml/src/ggml-common.h
16-
- ggml/src/ggml-quants.h
17-
- ggml/src/ggml-quants.c
18-
- ggml/src/ggml-cpu-impl.h
19-
- ggml/src/ggml-metal.m
20-
- ggml/src/ggml-metal.metal
21-
- ggml/src/ggml-blas.cpp
22-
- ggml/include/ggml.h
23-
- ggml/include/ggml-alloc.h
24-
- ggml/include/ggml-backend.h
25-
- ggml/include/ggml-cuda.h
26-
- ggml/include/ggml-kompute.h
27-
- ggml/include/ggml-metal.h
28-
- ggml/include/ggml-sycl.h
29-
- ggml/include/ggml-vulkan.h
30-
- ggml/include/ggml-blas.h
6+
- src/**/*.c
7+
- src/**/*.cpp
8+
- src/**/*.h
9+
- src/**/*.m
10+
- src/**/*.metal
11+
- include/**/*.c
12+
- include/**/*.cpp
13+
- include/**/*.h
14+
- include/**/*.m
15+
- include/**/*.metal
16+
- ggml/**/*.c
17+
- ggml/**/*.cpp
18+
- ggml/**/*.h
19+
- ggml/**/*.m
20+
- ggml/**/*.metal
3121
- scripts/get-flags.mk
3222
- examples/dr_wav.h
3323
pull_request:
3424
paths:
3525
- bindings/ruby/**
36-
- src/whisper.cpp
37-
- include/whisper.h
38-
- ggml/src/ggml.c
39-
- ggml/src/ggml-impl.h
40-
- ggml/src/ggml-aarch64.h
41-
- ggml/src/ggml-aarch64.c
42-
- ggml/src/ggml-alloc.c
43-
- ggml/src/ggml-backend-impl.h
44-
- ggml/src/ggml-backend.cpp
45-
- ggml/src/ggml-common.h
46-
- ggml/src/ggml-quants.h
47-
- ggml/src/ggml-quants.c
48-
- ggml/src/ggml-cpu-impl.h
49-
- ggml/src/ggml-metal.m
50-
- ggml/src/ggml-metal.metal
51-
- ggml/src/ggml-blas.cpp
52-
- ggml/include/ggml.h
53-
- ggml/include/ggml-alloc.h
54-
- ggml/include/ggml-backend.h
55-
- ggml/include/ggml-cuda.h
56-
- ggml/include/ggml-kompute.h
57-
- ggml/include/ggml-metal.h
58-
- ggml/include/ggml-sycl.h
59-
- ggml/include/ggml-vulkan.h
60-
- ggml/include/ggml-blas.h
26+
- src/**/*.c
27+
- src/**/*.cpp
28+
- src/**/*.h
29+
- src/**/*.m
30+
- src/**/*.metal
31+
- include/**/*.c
32+
- include/**/*.cpp
33+
- include/**/*.h
34+
- include/**/*.m
35+
- include/**/*.metal
36+
- ggml/**/*.c
37+
- ggml/**/*.cpp
38+
- ggml/**/*.h
39+
- ggml/**/*.m
40+
- ggml/**/*.metal
6141
- scripts/get-flags.mk
6242
- examples/dr_wav.h
6343

bindings/ruby/Rakefile

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
require 'rake/clean'
22
require "bundler/gem_tasks"
3-
require "pathname"
4-
require "yaml"
53
require "rake/testtask"
4+
require_relative "extsources"
65

7-
extsources = YAML.load_file("extsources.yaml")
86
SOURCES = FileList[]
9-
extsources.each do |src|
7+
8+
EXTSOURCES.each do |src|
109
basename = src.pathmap("%f")
11-
dest = basename == "LICENSE" ? basename : basename.pathmap("ext/%f")
10+
dest = basename == "LICENSE" ? basename : src.pathmap("%{../..,ext}p")
11+
dir = dest.pathmap("%d")
1212
file src
13-
file dest => src do |t|
13+
directory dir
14+
file dest => [src, dir] do |t|
1415
cp t.source, t.name
1516
end
1617
SOURCES.include dest
1718
end
19+
1820
CLEAN.include SOURCES
1921
CLEAN.include FileList[
2022
"ext/*.o",

bindings/ruby/ext/.gitignore

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,14 @@
11
Makefile
2-
ggml.c
3-
ggml.h
4-
ggml-alloc.c
5-
ggml-alloc.h
6-
ggml-aarch64.c
7-
ggml-aarch64.h
8-
ggml-backend.cpp
9-
ggml-backend-impl.h
10-
ggml-backend.c
11-
ggml-backend.h
12-
ggml-common.h
13-
ggml-cpu-impl.h
14-
ggml-metal.m
15-
ggml-metal.metal
16-
ggml-metal-embed.metal
17-
ggml-blas.cpp
18-
ggml-cuda.h
19-
ggml-impl.h
20-
ggml-kompute.h
21-
ggml-metal.h
22-
ggml-opencl.h
23-
ggml-quants.c
24-
ggml-quants.h
25-
ggml-sycl.h
26-
ggml-vulkan.h
27-
ggml-blas.h
28-
get-flags.mk
29-
whisper.cpp
30-
whisper.h
31-
dr_wav.h
32-
depend
33-
whisper.bundle
342
whisper.so
3+
whisper.bundle
354
whisper.dll
5+
depend
6+
scripts/get-flags.mk
7+
*.o
8+
*.c
9+
*.cpp
10+
*.h
11+
*.m
12+
*.metal
13+
!ruby_whisper.cpp
14+
!ruby_whisper.h

bindings/ruby/ext/cpu.mk

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
ggml/src/ggml-cpu/ggml-cpu-cpp.o: \
2+
ggml/src/ggml-cpu/ggml-cpu.cpp \
3+
ggml/include/ggml-backend.h \
4+
ggml/include/ggml.h \
5+
ggml/include/ggml-alloc.h \
6+
ggml/src/ggml-backend-impl.h \
7+
ggml/include/ggml-cpu.h \
8+
ggml/src/ggml-impl.h
9+
$(CXX) $(CXXFLAGS) -c $< -o $@

bindings/ruby/ext/extconf.rb

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
$GGML_METAL_EMBED_LIBRARY = true
3636
end
3737

38-
$MK_CPPFLAGS = ''
38+
$MK_CPPFLAGS = '-Iggml/include -Iggml/src -Iinclude -Isrc -Iexamples'
3939
$MK_CFLAGS = '-std=c11 -fPIC'
4040
$MK_CXXFLAGS = '-std=c++11 -fPIC'
4141
$MK_NVCCFLAGS = '-std=c++11'
@@ -123,53 +123,59 @@
123123

124124
unless ENV['GGML_NO_ACCELERATE']
125125
if $UNAME_S == 'Darwin'
126-
$MK_CPPFLAGS << ' -DGGML_USE_ACCELERATE -DGGML_USE_BLAS'
126+
$MK_CPPFLAGS << ' -DGGML_USE_ACCELERATE -DGGML_USE_BLAS -DGGML_BLAS_USE_ACCELERATE'
127127
$MK_CPPFLAGS << ' -DACCELERATE_NEW_LAPACK'
128128
$MK_CPPFLAGS << ' -DACCELERATE_LAPACK_ILP64'
129129
$MK_LDFLAGS << ' -framework Accelerate'
130-
$OBJ_GGML << 'ggml-blas.o'
130+
$OBJ_GGML << 'ggml/src/ggml-blas/ggml-blas.o'
131131
end
132132
end
133133

134134
if ENV['GGML_OPENBLAS']
135135
$MK_CPPFLAGS << " -DGGML_USE_BLAS #{`pkg-config --cflags-only-I openblas`.chomp}"
136136
$MK_CFLAGS << " #{`pkg-config --cflags-only-other openblas)`.chomp}"
137137
$MK_LDFLAGS << " #{`pkg-config --libs openblas`}"
138-
$OBJ_GGML << 'ggml-blas.o'
138+
$OBJ_GGML << 'ggml/src/ggml-blas/ggml-blas.o'
139139
end
140140

141141
if ENV['GGML_OPENBLAS64']
142142
$MK_CPPFLAGS << " -DGGML_USE_BLAS #{`pkg-config --cflags-only-I openblas64`.chomp}"
143143
$MK_CFLAGS << " #{`pkg-config --cflags-only-other openblas64)`.chomp}"
144144
$MK_LDFLAGS << " #{`pkg-config --libs openblas64`}"
145-
$OBJ_GGML << 'ggml-blas.o'
145+
$OBJ_GGML << 'ggml/src/ggml-blas/ggml-blas.o'
146146
end
147147

148148
if $GGML_METAL
149149
$MK_CPPFLAGS << ' -DGGML_USE_METAL'
150150
$MK_LDFLAGS << ' -framework Foundation -framework Metal -framework MetalKit'
151-
$OBJ_GGML << 'ggml-metal.o'
151+
$OBJ_GGML << 'ggml/src/ggml-metal/ggml-metal.o'
152152

153153
if ENV['GGML_METAL_NDEBUG']
154154
$MK_CPPFLAGS << ' -DGGML_METAL_NDEBUG'
155155
end
156156

157157
if $GGML_METAL_EMBED_LIBRARY
158158
$MK_CPPFLAGS << ' -DGGML_METAL_EMBED_LIBRARY'
159-
$OBJ_GGML << 'ggml-metal-embed.o'
159+
$OBJ_GGML << 'ggml/src/ggml-metal/ggml-metal-embed.o'
160160
end
161161
end
162162

163163
$OBJ_GGML <<
164-
'ggml.o' <<
165-
'ggml-cpu.o' <<
166-
'ggml-alloc.o' <<
167-
'ggml-backend.o' <<
168-
'ggml-quants.o' <<
169-
'ggml-aarch64.o'
164+
'ggml/src/ggml.o' <<
165+
'ggml/src/ggml-aarch64.o' <<
166+
'ggml/src/ggml-alloc.o' <<
167+
'ggml/src/ggml-backend.o' <<
168+
'ggml/src/ggml-backend-reg.o' <<
169+
'ggml/src/ggml-opt.o' <<
170+
'ggml/src/ggml-quants.o' <<
171+
'ggml/src/ggml-threading.o' <<
172+
'ggml/src/ggml-cpu/ggml-cpu.o' <<
173+
'ggml/src/ggml-cpu/ggml-cpu-cpp.o' <<
174+
'ggml/src/ggml-cpu/ggml-cpu-aarch64.o' <<
175+
'ggml/src/ggml-cpu/ggml-cpu-quants.o'
170176

171177
$OBJ_WHISPER <<
172-
'whisper.o'
178+
'src/whisper.o'
173179

174180
$objs = $OBJ_GGML + $OBJ_WHISPER + $OBJ_COMMON + $OBJ_SDL
175181
$objs << "ruby_whisper.o"
@@ -184,9 +190,12 @@
184190
create_makefile('whisper')
185191

186192
File.open 'Makefile', 'a' do |file|
187-
file.puts 'include get-flags.mk'
193+
file.puts 'include scripts/get-flags.mk'
194+
file.puts 'include cpu.mk'
188195

189196
if $GGML_METAL
197+
file.puts 'include metal.mk'
198+
190199
if $GGML_METAL_EMBED_LIBRARY
191200
file.puts 'include metal-embed.mk'
192201
end

bindings/ruby/ext/metal-embed.mk

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
ggml-metal-embed.o: \
2-
ggml-metal.metal \
3-
ggml-common.h
1+
ggml/src/ggml-metal/ggml-metal-embed.o: \
2+
ggml/src/ggml-metal/ggml-metal.metal \
3+
ggml/src/ggml-metal/ggml-metal-impl.h \
4+
ggml/src/ggml-common.h
45
@echo "Embedding Metal library"
5-
@sed -e '/#include "ggml-common.h"/r ggml-common.h' -e '/#include "ggml-common.h"/d' < ggml-metal.metal > ggml-metal-embed.metal
6-
$(eval TEMP_ASSEMBLY=$(shell mktemp))
7-
@echo ".section __DATA, __ggml_metallib" > $(TEMP_ASSEMBLY)
8-
@echo ".globl _ggml_metallib_start" >> $(TEMP_ASSEMBLY)
9-
@echo "_ggml_metallib_start:" >> $(TEMP_ASSEMBLY)
10-
@echo ".incbin \"ggml-metal-embed.metal\"" >> $(TEMP_ASSEMBLY)
11-
@echo ".globl _ggml_metallib_end" >> $(TEMP_ASSEMBLY)
12-
@echo "_ggml_metallib_end:" >> $(TEMP_ASSEMBLY)
13-
@$(AS) $(TEMP_ASSEMBLY) -o $@
14-
@rm -f ${TEMP_ASSEMBLY}
6+
@sed -e '/__embed_ggml-common.h__/r ggml/src/ggml-common.h' -e '/__embed_ggml-common.h__/d' < ggml/src/ggml-metal/ggml-metal.metal > ggml/src/ggml-metal/ggml-metal-embed.metal.tmp
7+
@sed -e '/#include "ggml-metal-impl.h"/r ggml/src/ggml-metal/ggml-metal-impl.h' -e '/#include "ggml-metal-impl.h"/d' < ggml/src/ggml-metal/ggml-metal-embed.metal.tmp > ggml/src/ggml-metal/ggml-metal-embed.metal
8+
$(eval TEMP_ASSEMBLY=$(shell mktemp -d))
9+
@echo ".section __DATA, __ggml_metallib" > $(TEMP_ASSEMBLY)/ggml-metal-embed.s
10+
@echo ".globl _ggml_metallib_start" >> $(TEMP_ASSEMBLY)/ggml-metal-embed.s
11+
@echo "_ggml_metallib_start:" >> $(TEMP_ASSEMBLY)/ggml-metal-embed.s
12+
@echo ".incbin \"ggml/src/ggml-metal/ggml-metal-embed.metal\"" >> $(TEMP_ASSEMBLY)/ggml-metal-embed.s
13+
@echo ".globl _ggml_metallib_end" >> $(TEMP_ASSEMBLY)/ggml-metal-embed.s
14+
@echo "_ggml_metallib_end:" >> $(TEMP_ASSEMBLY)/ggml-metal-embed.s
15+
$(CC) $(CFLAGS) -c $(TEMP_ASSEMBLY)/ggml-metal-embed.s -o $@
16+
@rm -f ${TEMP_ASSEMBLY}/ggml-metal-embed.s
17+
@rmdir ${TEMP_ASSEMBLY}

bindings/ruby/ext/metal.mk

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
ggml/src/ggml-metal/ggml-metal.o: \
2+
ggml/src/ggml-metal/ggml-metal.m \
3+
ggml/src/ggml-metal/ggml-metal-impl.h \
4+
ggml/include/ggml-metal.h \
5+
ggml/include/ggml.h
6+
$(CC) $(CFLAGS) -c $< -o $@

bindings/ruby/extsources.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
require "yaml"
2+
3+
sources = `git ls-files -z ../..`.split("\x0")
4+
paths = YAML.load_file("../../.github/workflows/bindings-ruby.yml")[true]["push"]["paths"]
5+
paths.delete "bindings/ruby/**"
6+
EXTSOURCES = (Dir.glob(paths, base: "../..").collect {|path| "../../#{path}"} << "../../LICENSE") & sources

bindings/ruby/extsources.yaml

Lines changed: 0 additions & 31 deletions
This file was deleted.

bindings/ruby/tests/test_whisper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def test_log_set
107107

108108
assert logs.length > 30
109109
logs.each do |log|
110-
assert_equal Whisper::LOG_LEVEL_INFO, log[0]
110+
assert_include [Whisper::LOG_LEVEL_DEBUG, Whisper::LOG_LEVEL_INFO, Whisper::LOG_LEVEL_WARN], log[0]
111111
assert_same user_data, log[2]
112112
end
113113
end

0 commit comments

Comments
 (0)