XMLWordPrintable

Details

    • Technical task
    • Status: Needs Feedback (View Workflow)
    • Major
    • Resolution: Unresolved
    • N/A
    • N/A
    • Buildbot
    • None

    Description

      1. We need to build on all OS versions in the engineering policies
      RHEL 8,9,10
      Rocky Linux, AlmaLinux 8,9,10 - but testing rhel packages on them would been enough
      Debian 11,12,13. I'll ask about 10 it's still in policy(while 12 is actually not)
      Ubuntu 22.04, 24.04, currently supported short term.
      SLES 12,15
      All of them on both X86_64 and ARM64
      Windows - both 32 and 64bit. If windows on ARM is available - would be good
      MacOS x86_64 if available
      In all buildbot we build and test also on couple of latest Fedora's(currently it's 38 39 there but I'm not sure if they are still latest)

      2.Dependencies
      Not much. on Linuxes it's UnixODBC. and OpenSSL for tarball builds - for tarballs we. On Windows there is nothing for build, but for packaging we need WixTools - latest version that is still open source will do. On MacOS - it's iOdbc and OpenSSL(from homebrew, macos has only ancient versions)

      3. Building & testing steps
      Building is described here or here Former is probably better but maybe some bits of info in latter, too.
      I only think that

      cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .
      cmake --build . --config RelWithDebInfo
      

      should suffice to build everywhere as all options defaults should be as all those instructions show.
      You can also look at [github actions workflow

      https://github.com/mariadb-corporation/mariadb-connector-odbc/blob/master/.github/workflows/ci.yml] To get idea of how configure and run tests.

      But it would better to look at all buildbot builder step scripts.
      Steps are slightly different for tarballs and rpm/deb builders. For tarballs it's
      1) checkout + setting testing environment(cmake generates odbcinst.ini and odbc.ini to r
      2) cmake config
      3) build
      4) run mariadb server
      5) run tests using ctest
      6) uploading packages

      For rpm
      1) same + rm libmariadb subdir in source + intallation of C/C binaries using package manager
      2) cmake additional options -DRPM=On -DCPACK_GENERATOR=RPM -DMARIADB_LINK_DYNAMIC=On -DPACKAGE_PLATFORM_SUFFIX=$HOSTNAME
      But -DPACKAGE_PLATFORM_SUFFIX=$HOSTNAME worked in old buildbot - will probably need to be smth else
      3) same + build or source package
      if grep -qw CPACK_RPM_SOURCE_PKG_BUILD_PARAMS CPackSourceConfig.cmake; then
      #  cmake --build . --target=package_source
        make package_source
      fi
      4) 5) after that we copied all packages and ini filese to the host machine and fired clean vm, copied all that there installed and run tests including testing of source rpm with rpm build
      6) the same

      For DEB
      2) cmake -DDEB=On -DCPACK_GENERATOR=DEB -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMARIADB_LINK_DYNAMIC=On -DPACKAGE_PLATFORM_SUFFIX=$ID$VERSION_ID -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-L/usr/lib/x86_64-linux-gnu -I/usr/include/mariadb" """ + cmake_params + """ ../src
      Probably cmake can already find c/c libs und includes w/out hints - i remember fixing that, but not sure

      The rest of scenario is more or less the same but w/out source packages

      WIndows:
      32b and 64 bit builds are needed. For 32b - -A"Win32"
      Then one need to install msi and either use predefined DSN's or create DSN's the way it is done in github actions

      Macos:
      More or less the same as linux. I'll write later if it is needed

      The best way would be to consult old buildbot scripts. I can provide them if you don't have access to its config

      Attachments

        Activity

          People

            rvarzaru Varzaru Razvan-Liviu
            rvarzaru Varzaru Razvan-Liviu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0d
                0d
                Logged:
                Time Spent - 2d 3h
                2d 3h