Ceedling >1.0.0 break dependencies:make
Hello maintainers,
We are trying to upgrade ceedling to 1.0 for our repo: https://github.com/expressvpn/lightway-laser
I have read the breaking changes and release notes of ceedling 1.0 and update project yaml files to accomodate that.
I am observing few issues with the upgrade to newer version. But the primary issue is with dependencies plugin. Previously we used to fetch and make the dependencies: https://github.com/expressvpn/lightway-laser/blob/af051e14fd5dc367bbdb48583d2d992de4039b93/.github/workflows/ci.yml#L17-L23
- name: Clobber project
run: ceedling clobber
- name: Fetch dependencies
run: ceedling dependencies:fetch
- name: Build dependencies
run: ceedling dependencies:make
- name: Build laser
run: ceedling release
This flow is broken. i.e after fetch, make is failing.
Same thing is happening if I tried to do make twice
Run ceedling dependencies:make
🚧 Loaded project configuration from working directory.
> Using: /home/runner/work/lightway-laser/lightway-laser/project.yml
> Working directory: /home/runner/work/lightway-laser/lightway-laser
Ceedling set up completed in [7](https://github.com/expressvpn/lightway-laser/actions/runs/15724794545/job/44312428783#step:6:8)1 milliseconds
Fetching dependency lightway_core...
🧨 EXCEPTION: 'Dependencies Git Clone' (git) terminated with exit code [12[8](https://github.com/expressvpn/lightway-laser/actions/runs/15724794545/job/44312428783#step:6:9)] and output >>
fatal: destination path '.' already exists and is not an empty directory.
Project.yml changes for ceedling 1.0 https://github.com/expressvpn/lightway-laser/compare/main...ceedling-1.0
This does not look like an intentional behavior change. Can you please confirm it ?
Hi.
Looking in your project.yml file, I see that you're using the gem version of ceedling for most of the operation (which I believe you've mentioned is 1.0). The dependencies section has hardcoded a specific path to ceedling. Is this path the same version, or a different one? I'm wondering if it's related to a version mismatch.
If you go into your third_party/lightway_core folder which has already been fetched, can you run ceedling successfully from there on your dependency?
I'll try to pull this all down myself and take a look also.
Thanks @mvandervoord for taking a look.
In the dependencies section, It used to be a hard coded ceedling path which I had fixed in the ceedling-1.0 branch in the above diff
https://github.com/expressvpn/lightway-laser/compare/main...ceedling-1.0#diff-4f3430205157bae48d1786fcd16dbaaa50f9a1dc46b93ff9ccd26487c269b317R79
This is what is happening if I try to run with the deps:
❯ ceedling dependencies:fetch
Source locally installed gems is ignoring #<Bundler::StubSpecification name=rbs version=3.4.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=racc version=1.7.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=debug version=1.9.2 platform=ruby> because it is missing extensions
🚧 Loaded project configuration from working directory.
> Using: /Users/mariappan.ramasamy/work/github/expressvpn/lightway-laser/project.yml
> Working directory: /Users/mariappan.ramasamy/work/github/expressvpn/lightway-laser
Ceedling set up completed in 118 milliseconds
Fetching dependency lightway_core...
Fetching dependency libuv...
Fetching dependency zlog...
Fetching dependency argparse...
Ceedling operations completed in 16.15 seconds
❯ cd third_party/lightway_core/
❯ ceedling dependencies:fetch
Source locally installed gems is ignoring #<Bundler::StubSpecification name=rbs version=3.4.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=racc version=1.7.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=debug version=1.9.2 platform=ruby> because it is missing extensions
🚧 Loaded project configuration from working directory.
> Using: /Users/mariappan.ramasamy/work/github/expressvpn/lightway-laser/third_party/lightway_core/project.yml
> Working directory: /Users/mariappan.ramasamy/work/github/expressvpn/lightway-laser/third_party/lightway_core
Ceedling set up completed in 117 milliseconds
Fetching dependency WolfSSL...
Running Raw Tests Output Report
-------------------------------
Tests produced no extra console output.
Ceedling operations completed in 9.42 seconds
❯ ceedling dependencies:make
Source locally installed gems is ignoring #<Bundler::StubSpecification name=rbs version=3.4.0 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=racc version=1.7.3 platform=ruby> because it is missing extensions
Source locally installed gems is ignoring #<Bundler::StubSpecification name=debug version=1.9.2 platform=ruby> because it is missing extensions
🚧 Loaded project configuration from working directory.
> Using: /Users/mariappan.ramasamy/work/github/expressvpn/lightway-laser/third_party/lightway_core/project.yml
> Working directory: /Users/mariappan.ramasamy/work/github/expressvpn/lightway-laser/third_party/lightway_core
🧨 EXCEPTION: Permission denied @ rb_sysopen - build/vendor/unity/src/./unity.c
~/work/github/expressvpn/lightway-laser/third_party/lightway_core @cd75c2f
❯
This seems prett easily reproducible. Happening in both CI and local machines. Please let me know if you need more info.
I get the "Permission denied" exception when ceedling copies over the unity/cmock/cexception source files from a location that has them with read-only permissions. I wrote about it here, with a workaround: https://github.com/ThrowTheSwitch/Ceedling/discussions/1088