Ceedling icon indicating copy to clipboard operation
Ceedling copied to clipboard

Ceedling >1.0.0 break dependencies:make

Open kp-mariappan-ramasamy opened this issue 6 months ago • 3 comments

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 ?

kp-mariappan-ramasamy avatar Jun 18 '25 05:06 kp-mariappan-ramasamy

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.

mvandervoord avatar Jul 09 '25 16:07 mvandervoord

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.

kp-mariappan-ramasamy avatar Jul 10 '25 03:07 kp-mariappan-ramasamy

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

adamatom avatar Jul 20 '25 17:07 adamatom