HISE Logo Forum
    • Categories
    • Register
    • Login

    How to set UseIPP global compiler setting on a build agent in a devops pipeline?

    Scheduled Pinned Locked Moved General Questions
    12 Posts 2 Posters 420 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jmannix
      last edited by

      I know that this configuration property is saved in compilerSettings.xml under the users Application Support folder.

      Is there a good way to set this when running HISE from the command line as part of a CI script?

      1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey
        last edited by

        Run HISE from the command line with --help and you'll see all the CLI options available.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        1 Reply Last reply Reply Quote 0
        • J
          jmannix
          last edited by

          The thing is, I'm not passing -ipp on the command line but the build is failing with this error on the build agent:

          /Users/runner/work/1/s/HISE/hi_tools/../hi_streaming/hi_streaming.h:74:10: 'ipp.h' file not found

          I'm assuming it's because the script is installing HISE fresh on the agent and the UseIPP setting is defaulted to on?

          d.healeyD 1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey @jmannix
            last edited by

            @jmannix said in How to set UseIPP global compiler setting on a build agent in a devops pipeline?:

            UseIPP setting is defaulted to on?

            Maybe, try setting it to 0

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            J 1 Reply Last reply Reply Quote 0
            • J
              jmannix @d.healey
              last edited by

              @d-healey this is a remote MacOS build agent which is installing from the base OS for each run, so I can't set it via the UI.

              I tried appending -D:USE_IPP=0 to the export_ci command line options, which allowed the compile to complete, but now the linker is failing with the following:

              ❌ clang: error: no such file or directory: '/opt/intel/ipp/lib/libippi.a'

              ❌ clang: error: no such file or directory: '/opt/intel/ipp/lib/libipps.a'

              ❌ clang: error: no such file or directory: '/opt/intel/ipp/lib/libippvm.a'

              ❌ clang: error: no such file or directory: '/opt/intel/ipp/lib/libippcore.a'

              d.healeyD 1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey @jmannix
                last edited by

                @jmannix I don't think IPP is enabled by default from the CLI. At least I'm not mentioning it in my build scripts. The linker error suggests that there are some linker paths in the juicer file. Are you building the develop branch?

                Libre Wave - Freedom respecting instruments and effects
                My Patreon - HISE tutorials
                YouTube Channel - Public HISE tutorials

                J 1 Reply Last reply Reply Quote 0
                • J
                  jmannix @d.healey
                  last edited by

                  @d-healey My build pipeline is downloading the latest stable release from https://github.com/christophhart/HISE/releases/download/4.0.0/HISE.4.0.0.dmg and extracting it to a subfolder in the HISE source path rather than building the development branch. I thought that would be quicker and simpler than running the whole HISE build every time. Is that a problem?

                  d.healeyD 1 Reply Last reply Reply Quote 0
                  • d.healeyD
                    d.healey @jmannix
                    last edited by d.healey

                    @jmannix You want to make sure the source code version you are using matches the binary version.

                    My script does these steps:

                    Remove old HISE source folder
                    Git clone HISE source
                    cd into HISE source
                    checkout develop branch
                    extract SDKs (I also copy in the AAX SDK from a folder on my system)
                    Build HISE

                    Then for my project it's the same process essentially:
                    Remove old project folder
                    Download project from git repo
                    Run HISE to build the project

                    I have arguments to my script so I can choose if I always want to rebuild HISE - if I'm doing a lot of tests then I don't want to be rebuilding HISE each time, only if there is a new version. Another more complex approach would be to check the git hash and only rebuild if it's changed.

                    Libre Wave - Freedom respecting instruments and effects
                    My Patreon - HISE tutorials
                    YouTube Channel - Public HISE tutorials

                    J 1 Reply Last reply Reply Quote 0
                    • J
                      jmannix @d.healey
                      last edited by

                      @d-healey it sounds like your script is running on the same box each time? I'm using Azure devops pipelines, so it is a fresh Mac agent for each run.

                      I got it working by manipulating the projucer file before running the build script - to set USE_IPP=0 and remove the extraLinkerFlags, but it's not particularly elegant. Would be better if I could figure out how to set the export_ci command line to disable IPP in the first place.

                      d.healeyD 1 Reply Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @jmannix
                        last edited by

                        @jmannix said in How to set UseIPP global compiler setting on a build agent in a devops pipeline?:

                        it sounds like your script is running on the same box each time?

                        Yes but it will work on a fresh system just the same - after installing needed dependencies of course.

                        Libre Wave - Freedom respecting instruments and effects
                        My Patreon - HISE tutorials
                        YouTube Channel - Public HISE tutorials

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          jmannix @d.healey
                          last edited by

                          @d-healey looking at the code, I see that the command line export_ci reads the UseIPP setting from HiseSettings, and according to this https://github.com/christophhart/HISE/blob/cd51dc7bc8d5f539184a4308b41c6b5cabc2aaaa/hi_core/hi_core/HiseSettings.cpp#L1191 it defaults to enabled.

                          The only place I can see to override that is in the compilerSettings.xml file under /Users//Library/Application Support, which is the file that is updated when you change the setting in the UI. I don't see a way to override it from the command line.

                          So my guess is, you have disabled it on your build machine and that works because you use the same machine each time. Whereas in the devops pipeline it starts from a fresh install with no compilerSettings.xml file, and therefore defaults to enabled.

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @jmannix
                            last edited by

                            @jmannix -D:USE_IPP=0 should override that, but I don't know why you're still seeing the linker errors. It's possible you need to compile HISE yourself from source with IPP disabled.

                            If you still can't get it to work you can fork HISE and remove the offending line, but I don't think it's necessary.

                            Another solution is when you create your instance you could copy over a settings.xml file that is setup the way you like.

                            Libre Wave - Freedom respecting instruments and effects
                            My Patreon - HISE tutorials
                            YouTube Channel - Public HISE tutorials

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            17

                            Online

                            1.7k

                            Users

                            11.9k

                            Topics

                            103.4k

                            Posts