upl 0.2.3 → 0.2.4

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: f95134fc8f05dbcae1453985815292af7af307cb7a9ab80fc767a45cdb8e06e2
4
- data.tar.gz: fd6ce992bdd55c20998c470b187d0ad4c5ce87fe4ae358fe38c37a0bf6a935ad
3
+ metadata.gz: 933b536ad1c58be9cf92e474272904b5752d9eef7f3004be1ec35a5623438aa6
4
+ data.tar.gz: 2d212a7ea47101d3fd9255b8b53bffcb8bf4ce8f15989b7a34a66dbc39b09cc9
5
5
  SHA512:
6
- metadata.gz: ca68fb686b4b57d4c0a135fe9885b2b8c88cdfcababd0b9a80965f46e5199afa0f6c24d903747be9a2cc6cc904e767df869d3ee193087282849afa21634523f9
7
- data.tar.gz: 99e4b8e2b6d908d5c03bcf2a2f2ccb7777accfe94a092ef43b3a7b9638efb529ac483f1f71a227da3528ac1ae0732319c291f98d3aa39d92877cd34f827a1fd8
6
+ metadata.gz: 52b2a3376e96852df1e690e40f89d784c7f5100bf72b628264dec970b1b48b238cad425c5e51c469b7496d7bc7e8951eaa276285e40009cbf2d94bba9463d363
7
+ data.tar.gz: b1fa64877cf05ab1a507eb082c592494976d36611e534fb543b6e89854d9ba01326bf89c7ea035577d8e21111949ea3901c3e8da35bdf43c5fdec5acd0816818
@@ -0,0 +1,77 @@
1
+ name: rspecs
2
+
3
+ on:
4
+ workflow_dispatch: {}
5
+ push:
6
+ branches: [test-workflow]
7
+ tags: v*
8
+
9
+ jobs:
10
+ rspec:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ # note 20-Jul-2023 2.7.8 is EOL
15
+ ruby_version: ['2.7.8', '3.0.6', '3.1.4', '3.2.2']
16
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+
20
+ - uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby_version }}
23
+
24
+ - run: bundle install
25
+
26
+ # install from ppa for up-to-date version
27
+ - name: update ubuntu packages
28
+ run: |
29
+ sudo apt-get update
30
+
31
+ # otherwise it prompts for timezone
32
+ sudo apt-get install -y tzdata
33
+ sudo apt-get install -y software-properties-common
34
+
35
+ - name: install swi-prolog from ppa
36
+ run: |
37
+ # Stable versions
38
+ sudo apt-add-repository -y ppa:swi-prolog/stable
39
+ sudo apt-get update
40
+ sudo apt-get install -y swi-prolog-nox
41
+
42
+ # Development versions
43
+ # sudo apt-add-repository ppa:swi-prolog/devel
44
+ # sudo apt-get update
45
+ # sudo apt-get install -y swi-prolog-nox
46
+
47
+ - run: rspec
48
+
49
+ rspec-macos:
50
+ runs-on: macos-latest
51
+ strategy:
52
+ matrix:
53
+ # note 20-Jul-2023 2.7.8 is EOL
54
+ ruby_version: ['2.7.8', '3.0.6', '3.1.4', '3.2.2']
55
+
56
+ steps:
57
+ - name: install swi-prolog
58
+ run: |
59
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
60
+ brew install swi-prolog
61
+
62
+ # for possible future debugging
63
+ # otool -L $(which swipl)
64
+ # swipl --dump-runtime-variables=sh
65
+ # env
66
+ # find /usr/local/Cellar/swi-prolog/9.0.4 -ls
67
+ # false
68
+
69
+ - uses: actions/checkout@v3
70
+
71
+ - uses: ruby/setup-ruby@v1
72
+ with:
73
+ ruby-version: ${{ matrix.ruby_version }}
74
+
75
+ - run: bundle install
76
+
77
+ - run: rspec
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.2.4
2
+ * should now find the dylib on macos
3
+ * run rspecs on multiple ruby versions
4
+
1
5
  == 0.2.3
2
6
  * update C value for >=swi-prolog-8.1.29
3
7
 
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ ![rspecs](https://github.com/djellemah/upl/actions/workflows/build.yml/badge.svg)
2
+
1
3
  # Upl
2
4
 
3
5
  Use SWI-Prolog from ruby.
@@ -8,6 +10,12 @@ Define foreign predicates in ruby, so prolog can call back into ruby code.
8
10
 
9
11
  Assert facts containing ruby objects, so prolog can query ruby data by calling ruby methods.
10
12
 
13
+ ## versions
14
+
15
+ Works on ruby-2.7.8 ruby-3.0, ruby-3.1, ruby-3.2
16
+
17
+ and swipl-8.1.29 to swipl-9.1.2
18
+
11
19
  ## Tutorial
12
20
 
13
21
  The query api always returns an ```Enumerable``` of all values which satisfy the query.
@@ -0,0 +1,7 @@
1
+ version: '3.8'
2
+
3
+ services:
4
+ linux:
5
+ container_name: upl-linux
6
+ image: ubuntu:latest
7
+ command: sleep 14400
data/lib/upl/extern.rb CHANGED
@@ -26,15 +26,26 @@ module Upl
26
26
  # should result in something like
27
27
  # /usr/lib64/swipl-7.7.18/lib/x86_64-linux/libswipl.so
28
28
  # which should actually exist
29
- def self.so_path
29
+ def self.calculate_so_path
30
30
  values = swipl_config_values
31
- p = Pathname "#{values['PLBASE']}/lib/#{values['PLARCH']}/#{values['PLLIB'].gsub('-l', 'lib')}.#{values['PLSOEXT']}"
31
+ p = if easy_so = values['PLLIBSWIPL']
32
+ Pathname easy_so
33
+ else
34
+ # figure it out the hard way - this was prior to 8.1 or thereabouts
35
+ Pathname "#{values['PLBASE']}/lib/#{values['PLARCH']}/#{values['PLLIB'].gsub('-l', 'lib')}.#{values['PLSOEXT']}"
36
+ end
32
37
  p.realpath.to_s
33
38
  rescue Errno::ENOENT => ex
34
39
  puts "problem with library #{p.to_s}: #{ex.message}"
35
40
  exit 1
36
41
  end
37
42
 
43
+ # where is the so/dylib
44
+ # overridable by env var SWIPL_SO_PATH
45
+ def self.so_path
46
+ ENV['SWIPL_SO_PATH'] || calculate_so_path
47
+ end
48
+
38
49
  if (version = swipl_config_values['PLVERSION']) < '80129'
39
50
  raise "unsupported version <#{version}"
40
51
  end
data/lib/upl/query.rb CHANGED
@@ -47,7 +47,7 @@ module Upl
47
47
  call.map do |row|
48
48
  # TODO this assume the if statement is faster than a call to a default ->i{i}
49
49
  if @map_blk
50
- blk.call @map_blk[row]
50
+ blk.call @map_blk[**row]
51
51
  else
52
52
  blk.call row
53
53
  end
data/lib/upl/runtime.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'fiddle'
2
+ require 'pp'
2
3
 
3
4
  require_relative 'extern'
4
5
 
data/lib/upl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Upl
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Anderson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-24 00:00:00.000000000 Z
11
+ date: 2023-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".github/workflows/build.yml"
90
91
  - ".gitignore"
91
92
  - ".rspec"
92
93
  - ".travis.yml"
@@ -97,6 +98,7 @@ files:
97
98
  - Rakefile
98
99
  - bin/console
99
100
  - bin/setup
101
+ - docker-compose.yml
100
102
  - lib/upl.rb
101
103
  - lib/upl/atom.rb
102
104
  - lib/upl/dict.rb
@@ -118,7 +120,7 @@ licenses:
118
120
  - MIT
119
121
  metadata:
120
122
  allowed_push_host: https://rubygems.org
121
- post_install_message:
123
+ post_install_message:
122
124
  rdoc_options: []
123
125
  require_paths:
124
126
  - lib
@@ -133,8 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
135
  - !ruby/object:Gem::Version
134
136
  version: '0'
135
137
  requirements: []
136
- rubygems_version: 3.1.2
137
- signing_key:
138
+ rubygems_version: 3.4.6
139
+ signing_key:
138
140
  specification_version: 4
139
141
  summary: Access SWI-Prolog engine from ruby
140
142
  test_files: []