Skip to content

Commit ba08e71

Browse files
authored
Merge pull request #1 from Totto16/update_ci
Update CI
2 parents bf0f9b4 + be19284 commit ba08e71

File tree

9 files changed

+89
-100
lines changed

9 files changed

+89
-100
lines changed

.github/workflows/ci.yml

Lines changed: 39 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Build CI
22

33
on:
44
push:
5-
branches: ["main"]
5+
branches: ['main']
66
pull_request:
77
workflow_dispatch:
88

@@ -23,33 +23,32 @@ jobs:
2323
os: ubuntu
2424
os-version: 24.04
2525

26-
- name: MacOS
26+
- name: MacOS
2727
os: macos
2828
os-version: 13
2929

3030
- name: MacOS (Arm64)
3131
os: macos
3232
os-version: 14
3333

34-
3534
steps:
3635
- uses: actions/checkout@v4
3736
with:
38-
fetch-depth: "0"
37+
fetch-depth: '0'
3938

4039
- uses: actions/checkout@v4
41-
name: Checkout OOPetris main repo
40+
name: Checkout OOPetris main repo
4241
with:
43-
fetch-depth: "0"
42+
fetch-depth: '0'
4443
repository: OpenBrickProtocolFoundation/oopetris
4544
ref: main
4645
path: ./oopetris
4746
submodules: false
48-
47+
4948
- uses: actions/checkout@v4
5049
name: Checkout C Wrapper
5150
with:
52-
fetch-depth: "0"
51+
fetch-depth: '0'
5352
repository: Totto16/oopetris_wrapper_c
5453
ref: main
5554
path: ./oopetris_c_wrapper
@@ -69,11 +68,21 @@ jobs:
6968
version: 14
7069
platform: x64
7170

71+
- name: Setup GCC Environment (Linux)
72+
if: matrix.config.os == 'ubuntu'
73+
run: |
74+
echo "CC=gcc" >> "$GITHUB_ENV"
75+
echo "CXX=g++" >> "$GITHUB_ENV"
76+
echo "CC_LD=gold" >> "$GITHUB_ENV"
77+
echo "CXX_LD=gold" >> "$GITHUB_ENV"
78+
echo "LD=gold" >> "$GITHUB_ENV"
79+
7280
- name: Setup Clang (MacOS)
7381
if: matrix.config.os == 'macos'
7482
run: |
7583
brew update
76-
brew install llvm@18
84+
# TODO annotate with lld@19, after that is accepted, we don't want to use lld@20 without manually updating it !
85+
brew install llvm@19 lld
7786
echo "$(brew --prefix)/opt/llvm/bin" >> $GITHUB_PATH
7887
echo "LDFLAGS=-L$(brew --prefix)/opt/llvm/lib -L$(brew --prefix)/opt/llvm/lib/c++ -Wl,-rpath,$(brew --prefix)/opt/llvm/lib/c++" >> "$GITHUB_ENV"
7988
echo "CPPFLAGS=-I$(brew --prefix)/opt/llvm/include" >> "$GITHUB_ENV"
@@ -83,13 +92,14 @@ jobs:
8392
echo "CC_LD=lld" >> "$GITHUB_ENV"
8493
echo "CXX_LD=lld" >> "$GITHUB_ENV"
8594
echo "OBJC_LD=lld" >> "$GITHUB_ENV"
95+
echo "LD=lld" >> "$GITHUB_ENV"
8696
8797
- name: Setup meson (MacOS)
88-
if: matrix.config.os == 'macos'
98+
if: matrix.config.os == 'macos'
8999
run: |
90100
brew update
91101
brew install meson
92-
102+
93103
# NOTE: meson has no dependencies, so --break-system-packages doesn't really break anything!
94104
- name: Setup meson
95105
if: matrix.config.os != 'macos'
@@ -100,60 +110,39 @@ jobs:
100110
if: matrix.config.os == 'ubuntu'
101111
run: |
102112
sudo apt-get update
103-
sudo apt-get install ninja-build -y
113+
sudo apt-get install ninja-build -y --no-install-recommends
104114
sudo pip install meson --break-system-packages
105115
106116
- name: Fix pkg-config (Windows)
107117
if: matrix.config.os == 'windows'
108118
run: |
109-
Remove-Item -Path C:\Strawberry\ -Recurse
119+
Remove-Item -Path C:\Strawberry\ -Recurse
110120
choco install pkgconfiglite
111121
echo "PKG_CONFIG_PATH=C:/lib/pkgconfig" | Out-File -FilePath $env:GITHUB_ENV -Append
112-
113-
- name: Configure
114-
run: |
115-
cd oopetris
116-
meson setup build -Dbuildtype=release -Ddefault_library=static -Dclang_libcpp=${{ matrix.config.os == 'macos' && 'enabled' || 'disabled' }} -Donly_build_libs=true ${{ matrix.config.os == 'windows' && '-Db_vscrt=static_from_buildtype' || '' }}
117-
118-
- name: Build and install Libs
119-
if: matrix.config.os != 'ubuntu'
120-
run: |
121-
cd oopetris
122-
meson install -C build
123-
124-
- name: Build and install Libs (Linux)
125-
if: matrix.config.os == 'ubuntu'
126-
run: |
127-
cd oopetris
128-
sudo meson install -C build
122+
echo "C:/bin" | Out-File -FilePath $env:GITHUB_PATH -Append
129123
130-
- name: Build C Wrapper
131-
run: |
132-
cd oopetris_c_wrapper
133-
meson setup -Dtests=false -Dexample=false build -Dbuildtype=release -Ddefault_library=static
134-
meson compile -C build
135-
136-
137-
- name: Install C Wrapper
138-
if: matrix.config.os != 'ubuntu'
139-
run: |
140-
cd oopetris_c_wrapper
141-
meson install -C build
124+
- name: Build and Install OOPetris
125+
run: |
126+
cd oopetris
127+
meson setup build -Dbuildtype=release -Ddefault_library=shared -Dclang_libcpp=${{ matrix.config.os == 'macos' && 'enabled' || 'disabled' }} -Donly_build_libs=true ${{ matrix.config.os == 'windows' && '-Db_vscrt=from_buildtype' || '' }}
128+
${{ matrix.config.os == 'ubuntu' && 'sudo' || '' }} meson install -C build
142129
143-
- name: Build and install Libs (Linux)
144-
if: matrix.config.os == 'ubuntu'
145-
run: |
146-
cd oopetris_c_wrapper
147-
sudo meson install -C build
130+
- name: Build and Install C Wrapper
131+
run: |
132+
cd oopetris_c_wrapper
133+
meson setup -Dtests=false -Dexample=false build -Dbuildtype=release -Ddefault_library=shared
134+
${{ matrix.config.os == 'ubuntu' && 'sudo' || '' }} meson install -C build
135+
${{ matrix.config.os == 'ubuntu' && 'sudo ldconfig' || '' }}
148136
149137
- uses: haskell-actions/setup@v2
150138
with:
151-
ghc-version: '9.6.5'
139+
ghc-version: '9.6.6'
152140
enable-stack: true
153141
stack-version: 'latest'
154142

155-
- name: Build Wrapper
156-
run: |
143+
- name: Build and Test Wrapper
144+
run: |
157145
stack build
158146
stack test
159147
stack run -- test/files/correct.rec
148+

oopetris-haskell-wrapper.cabal

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cabal-version: 1.12
22

3-
-- This file has been generated from package.yaml by hpack version 0.36.0.
3+
-- This file has been generated from package.yaml by hpack version 0.37.0.
44
--
55
-- see: https://github.com/sol/hpack
66

@@ -37,7 +37,7 @@ library
3737
build-depends:
3838
base >=4.7 && <5
3939
, c-storable-deriving >=0.1.3
40-
, hashmap >=1.3.3
40+
, unordered-containers >=0.2.20
4141
default-language: Haskell2010
4242

4343
executable oopetris-haskell-wrapper-exe
@@ -50,8 +50,8 @@ executable oopetris-haskell-wrapper-exe
5050
build-depends:
5151
base >=4.7 && <5
5252
, c-storable-deriving >=0.1.3
53-
, hashmap >=1.3.3
5453
, oopetris-haskell-wrapper
54+
, unordered-containers >=0.2.20
5555
default-language: Haskell2010
5656

5757
test-suite oopetris-haskell-wrapper-test
@@ -65,6 +65,6 @@ test-suite oopetris-haskell-wrapper-test
6565
build-depends:
6666
base >=4.7 && <5
6767
, c-storable-deriving >=0.1.3
68-
, hashmap >=1.3.3
6968
, oopetris-haskell-wrapper
69+
, unordered-containers >=0.2.20
7070
default-language: Haskell2010

package.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ description: Please see the README.md
2020
dependencies:
2121
- base >= 4.7 && < 5
2222
- c-storable-deriving >= 0.1.3
23-
- hashmap >= 1.3.3
23+
- unordered-containers >= 0.2.20
2424

2525
ghc-options:
2626
- -Wall

src/FFI.hs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -40,56 +40,56 @@ import StdInt (CI32, CI64, CI8, CU32, CU64, CU8)
4040
import Structs (GridPropertiesC, RecordingInformationC)
4141
import Types (AdditionalInformationC, AdditionalInformationFieldC, EnumTypeC, RecordingReturnValueC)
4242

43-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_is_recording_file" c_is_recording_file :: ConstPtr CChar -> IO CBool
43+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_is_recording_file" c_is_recording_file :: ConstPtr CChar -> IO CBool
4444

45-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_get_keys" c_additional_information_get_keys :: Ptr AdditionalInformationC -> IO (ConstPtr (Ptr CChar))
45+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_get_keys" c_additional_information_get_keys :: Ptr AdditionalInformationC -> IO (ConstPtr (Ptr CChar))
4646

47-
foreign import capi "oopetris/oopetris_wrapper.h &oopetris_additional_information_keys_free" c_additional_information_keys_free :: FunPtr (Ptr (Ptr CChar) -> IO ())
47+
foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_additional_information_keys_free" c_additional_information_keys_free :: FunPtr (Ptr (Ptr CChar) -> IO ())
4848

49-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_get_field" c_additional_information_get_field :: Ptr AdditionalInformationC -> ConstPtr CChar -> ConstPtr AdditionalInformationFieldC
49+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_get_field" c_additional_information_get_field :: Ptr AdditionalInformationC -> ConstPtr CChar -> ConstPtr AdditionalInformationFieldC
5050

51-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_type" c_additional_information_field_get_type :: ConstPtr AdditionalInformationFieldC -> EnumTypeC
51+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_type" c_additional_information_field_get_type :: ConstPtr AdditionalInformationFieldC -> EnumTypeC
5252

53-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_string" c_additional_information_field_get_string :: ConstPtr AdditionalInformationFieldC -> ConstPtr CChar
53+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_string" c_additional_information_field_get_string :: ConstPtr AdditionalInformationFieldC -> ConstPtr CChar
5454

55-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_float" c_additional_information_field_get_float :: ConstPtr AdditionalInformationFieldC -> CFloat
55+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_float" c_additional_information_field_get_float :: ConstPtr AdditionalInformationFieldC -> CFloat
5656

57-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_double" c_additional_information_field_get_double :: ConstPtr AdditionalInformationFieldC -> CDouble
57+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_double" c_additional_information_field_get_double :: ConstPtr AdditionalInformationFieldC -> CDouble
5858

59-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_bool" c_additional_information_field_get_bool :: ConstPtr AdditionalInformationFieldC -> CBool
59+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_bool" c_additional_information_field_get_bool :: ConstPtr AdditionalInformationFieldC -> CBool
6060

61-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_u8" c_additional_information_field_get_u8 :: ConstPtr AdditionalInformationFieldC -> CU8
61+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_u8" c_additional_information_field_get_u8 :: ConstPtr AdditionalInformationFieldC -> CU8
6262

63-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_i8" c_additional_information_field_get_i8 :: ConstPtr AdditionalInformationFieldC -> CI8
63+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_i8" c_additional_information_field_get_i8 :: ConstPtr AdditionalInformationFieldC -> CI8
6464

65-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_u32" c_additional_information_field_get_u32 :: ConstPtr AdditionalInformationFieldC -> CU32
65+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_u32" c_additional_information_field_get_u32 :: ConstPtr AdditionalInformationFieldC -> CU32
6666

67-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_i32" c_additional_information_field_get_i32 :: ConstPtr AdditionalInformationFieldC -> CI32
67+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_i32" c_additional_information_field_get_i32 :: ConstPtr AdditionalInformationFieldC -> CI32
6868

69-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_u64" c_additional_information_field_get_u64 :: ConstPtr AdditionalInformationFieldC -> CU64
69+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_u64" c_additional_information_field_get_u64 :: ConstPtr AdditionalInformationFieldC -> CU64
7070

71-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_i64" c_additional_information_field_get_i64 :: ConstPtr AdditionalInformationFieldC -> CI64
71+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_i64" c_additional_information_field_get_i64 :: ConstPtr AdditionalInformationFieldC -> CI64
7272

73-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_additional_information_field_get_vector" c_additional_information_field_get_vector :: ConstPtr AdditionalInformationFieldC -> ConstPtr (ConstPtr AdditionalInformationFieldC)
73+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_additional_information_field_get_vector" c_additional_information_field_get_vector :: ConstPtr AdditionalInformationFieldC -> ConstPtr (ConstPtr AdditionalInformationFieldC)
7474

75-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_recording_information" c_get_recording_information :: ConstPtr CChar -> IO (Ptr RecordingReturnValueC)
75+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_recording_information" c_get_recording_information :: ConstPtr CChar -> IO (Ptr RecordingReturnValueC)
7676

77-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_is_error" c_is_error :: Ptr RecordingReturnValueC -> CBool
77+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_is_error" c_is_error :: Ptr RecordingReturnValueC -> CBool
7878

79-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_error" c_get_error :: Ptr RecordingReturnValueC -> ConstPtr CChar
79+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_error" c_get_error :: Ptr RecordingReturnValueC -> ConstPtr CChar
8080

81-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_information" c_get_information :: Ptr RecordingReturnValueC -> Ptr RecordingInformationC
81+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_information" c_get_information :: Ptr RecordingReturnValueC -> Ptr RecordingInformationC
8282

83-
foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_recording_information" c_free_recording_information :: FunPtr (Ptr RecordingInformationC -> IO ())
83+
foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_recording_information" c_free_recording_information :: FunPtr (Ptr RecordingInformationC -> IO ())
8484

85-
foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_recording_value_only" c_free_recording_value_only :: FunPtr (Ptr RecordingReturnValueC -> IO ())
85+
foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_recording_value_only" c_free_recording_value_only :: FunPtr (Ptr RecordingReturnValueC -> IO ())
8686

87-
foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_recording_value_whole" c_free_recording_value_whole :: FunPtr (Ptr RecordingReturnValueC -> IO ())
87+
foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_recording_value_whole" c_free_recording_value_whole :: FunPtr (Ptr RecordingReturnValueC -> IO ())
8888

89-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_lib_version" c_get_lib_version :: ConstPtr CChar
89+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_lib_version" c_get_lib_version :: ConstPtr CChar
9090

91-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_get_grid_properties" c_get_grid_properties :: IO (Ptr GridPropertiesC)
91+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_get_grid_properties" c_get_grid_properties :: IO (Ptr GridPropertiesC)
9292

93-
foreign import capi "oopetris/oopetris_wrapper.h &oopetris_free_grid_properties" c_free_grid_properties :: FunPtr (Ptr GridPropertiesC -> IO ())
93+
foreign import capi "oopetris/c_wrapper/wrapper.h &oopetris_free_grid_properties" c_free_grid_properties :: FunPtr (Ptr GridPropertiesC -> IO ())
9494

95-
foreign import capi "oopetris/oopetris_wrapper.h oopetris_array_len" c_array_len :: Ptr () -> CSize
95+
foreign import capi "oopetris/c_wrapper/wrapper.h oopetris_array_len" c_array_len :: Ptr () -> CSize

src/Lib.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module Lib (isRecordingFile, getLibVersion, getGridProperties, getRecordingInformation, RecordingReturnValue (..)) where
22

33
import qualified AdditionalInformationType as AdType
4-
import Data.HashMap (fromList)
4+
import Data.HashMap.Strict (fromList)
55
import FFI (c_additional_information_field_get_bool, c_additional_information_field_get_double, c_additional_information_field_get_float, c_additional_information_field_get_i32, c_additional_information_field_get_i64, c_additional_information_field_get_i8, c_additional_information_field_get_string, c_additional_information_field_get_type, c_additional_information_field_get_u32, c_additional_information_field_get_u64, c_additional_information_field_get_u8, c_additional_information_field_get_vector, c_additional_information_get_field, c_additional_information_get_keys, c_additional_information_keys_free, c_array_len, c_free_grid_properties, c_free_recording_value_whole, c_get_error, c_get_grid_properties, c_get_information, c_get_lib_version, c_get_recording_information, c_is_error, c_is_recording_file)
66
import Foreign (Storable (sizeOf), withForeignPtr)
77
import Foreign.C (CChar (), CDouble (CDouble), CFloat (CFloat), withCString)

0 commit comments

Comments
 (0)