New Buildsystem and CI/CD

A GSoC project by Avinal Kumar

Coding Week 4 Meeting-1

Week 4 Progress


  • There are two types of replacements CMake can configure file with. @VARIABLE@ and ${VARIABLE} . Since in PHP $variable is used, it may create problem for CMake replacements. So may I replace them?

    • Yeah sure, go ahead. It will be more robust.
    • The replacement of $VARIABLE can be stopped by using @ONLY option in configure_file(...) command.
  • How to generate vendor directory?

    • The code for generating vendor directory is in src/Makefile.
    • Before executing code for the generation, make sure to copy composer.json and composer.lock to the target directory.
    • There is also a patch that FOSSology needs to function as intended. Make sure to run that patch to check and apply.
    • For now, we generate vendor while building, but it would be nice if it can be generated in the build step.
  • Currently I am generating the VERSION file in configure step itself. Should I move it to the build or install step?

    • Yeah, please move it to the build step. As in configure step the data might be outdated.
  • Is there any configuration for Release that we can use to install or test? (Michael)

    • Yeah, there are 4 inbuilt configurations for various levels of optimization and can be applied to tests and installation.
  • Is the VERSION file is generated for each agent or whole project at once? Because in the latter case, the VERSION file can be generated as the last step. (Sarita)

    • No agent has a VERSION file along with the main VERSION file for FOSSology.
  • How I can build and install a single agent or component? (Sarita)

    • There are two ways you can build and install a specific agent or component only.

    • The first one is quite simple. Just change your directory to the specific agent's directory and run all the usual commands for building and installing.

    • The second one is a bit for typing work. This can be used directly from the top-level directory. After configuring the CMake, you can run the following command to install the specific component.

      # for Unix Makefiles
      make list_install_component # this will list all the available components
      cmake -DCOMPONENT=<component-name> -P cmake_install.cmake
    • I am writing a macro that will let us install a component by simply running make install component.

Conclusion and Further Plans

  • Implement generation of vendor directory.
  • Move VERSION file generation to build step.

This Blog is licensed under Attribution-NonCommercial 4.0 International

You may put your GitHub Username.
I'll never share your email with anyone else.
Please Enter something !
Enter upto 200 characters.