main
 1# frozen_string_literal: true
 2
 3require_relative "lib/elelem/llama/version"
 4
 5Gem::Specification.new do |spec|
 6  spec.name = "elelem-llama"
 7  spec.version = Elelem::Llama::VERSION
 8  spec.authors = ["mo khan"]
 9  spec.email = ["mo@mokhan.ca"]
10
11  spec.summary = "A llama.cpp plugin for elelem."
12  spec.description = "A llama.cpp plugin for elelem."
13  spec.homepage = "https://src.mokhan.ca/elelem/llama"
14  spec.license = "MIT"
15  spec.required_ruby_version = ">= 4.0.0"
16  spec.metadata["allowed_push_host"] = "https://rubygems.org"
17  spec.metadata["homepage_uri"] = spec.homepage
18  spec.metadata["source_code_uri"] = spec.homepage
19  spec.metadata["rubygems_mfa_required"] = "true"
20
21  spec.files = [
22    "LICENSE.txt",
23    "lib/elelem/llama.rb",
24    "lib/elelem/llama/version.rb",
25    "lib/elelem/llama/model_resolver.rb",
26    "lib/elelem/llama/provider.rb",
27    "exe/elelem-llama",
28    "ext/elelem/llama/elelem.cpp",
29    "ext/elelem/llama/extconf.rb"
30  ]
31  # Only what extconf.rb's cmake build (LLAMA_BUILD_COMMON=ON, tests/docs/
32  # examples/tools/server all OFF) actually needs to configure and compile.
33  # Anchored to the vendor root so this doesn't also strip required nested
34  # dirs with the same name, e.g. src/models/ (per-architecture model code).
35  vendor_exclude = %r{\Avendor/llama\.cpp/(tests|docs|models|examples|tools|\.github|gguf-py|scripts)/}
36  spec.files += Dir["vendor/llama.cpp/**/*"].select do |path|
37    File.file?(path) && path !~ vendor_exclude
38  end
39  spec.extensions = ["ext/elelem/llama/extconf.rb"]
40  spec.bindir = "exe"
41  spec.executables = ["elelem-llama"]
42  spec.require_paths = ["lib"]
43
44  spec.add_dependency "elelem", "~> 0.13"
45  spec.add_dependency "fiddle", "~> 1.1"
46  spec.add_dependency "json", "~> 3.0"
47end