diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index fdd9bd839002e..9f2b8ae0876ca 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -36,9 +36,9 @@ jobs: CXX: ${{ matrix.CXX }} steps: - name: checkout ACE/TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: checkout MPC - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} diff --git a/.github/workflows/face.yml b/.github/workflows/face.yml index 5c029196cecf9..f4c14fdec7662 100644 --- a/.github/workflows/face.yml +++ b/.github/workflows/face.yml @@ -35,9 +35,9 @@ jobs: CXX: ${{ matrix.CXX }} steps: - name: checkout ACE/TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: checkout MPC - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} diff --git a/.github/workflows/fuzz.yml b/.github/workflows/fuzz.yml index 94e9934846d41..67680c480dc51 100644 --- a/.github/workflows/fuzz.yml +++ b/.github/workflows/fuzz.yml @@ -23,7 +23,7 @@ jobs: steps: - name: checkout ACE/TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run fuzz run: | perl ${env:ACE_ROOT}/bin/fuzz.pl diff --git a/.github/workflows/linux-container.yml b/.github/workflows/linux-container.yml new file mode 100644 index 0000000000000..2a9f510262134 --- /dev/null +++ b/.github/workflows/linux-container.yml @@ -0,0 +1,56 @@ +name: linux-container + +on: + push: + pull_request: + schedule: + - cron: '0 1 * * SUN' + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + build: + strategy: + fail-fast: false + runs-on: ubuntu-22.04 + name: alpine-3.18 + env: + ACE_ROOT: ${{ github.workspace }}/ACE + TAO_ROOT: ${{ github.workspace }}/TAO + MPC_ROOT: ${{ github.workspace }}/MPC + steps: + - name: Checkout ACE_TAO + uses: actions/checkout@v4 + - name: Checkout MPC + uses: actions/checkout@v4 + with: + repository: DOCGroup/MPC + path: ${{ env.MPC_ROOT }} + - name: Write configuation files + run: | + echo '#include "ace/config-linux.h"' > ${{ env.ACE_ROOT }}/ace/config.h + echo 'include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU' > ${{ env.ACE_ROOT }}/include/makeinclude/platform_macros.GNU + - name: Build in container + uses: addnab/docker-run-action@v3 + with: + image: alpine:3.18 + options: -v ${{ github.workspace }}:${{ github.workspace }} + run: | + apk add --no-cache git bash make g++ perl linux-headers + export ACE_ROOT=${{ env.ACE_ROOT }} + export TAO_ROOT=${{ env.TAO_ROOT }} + export MPC_ROOT=${{ env.MPC_ROOT }} + perl ${{ env.ACE_ROOT }}/bin/mwc.pl -type gnuace ${{ env.TAO_ROOT }}/TAO_ACE.mwc -workers 4 + perl ${{ env.ACE_ROOT }}/bin/mwc.pl -type gnuace ${{ env.ACE_ROOT }}/tests/tests.mwc -workers 4 + perl ${{ env.ACE_ROOT }}/bin/mwc.pl -type gnuace ${{ env.TAO_ROOT }}/tests/IDL_Test -workers 4 + perl ${{ env.ACE_ROOT }}/bin/mwc.pl -type gnuace ${{ env.TAO_ROOT }}/tests/IDLv4 -workers 4 + make -j 6 -C ${{ env.TAO_ROOT }} + make -j 6 -C ${{ env.ACE_ROOT }}/tests + make -j 6 -C ${{ env.TAO_ROOT }}/tests/IDL_Test + make -j 6 -C ${{ env.TAO_ROOT }}/tests/IDLv4 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 310922433cda4..bffe2c7864d06 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -24,16 +24,6 @@ jobs: fail-fast: false matrix: include: - - CC: gcc-4.8 - CXX: g++-4.8 - PackageDeps: g++-4.8 - platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU - os: ubuntu-18.04 - - CC: gcc-6 - CXX: g++-6 - PackageDeps: g++-6 - platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU - os: ubuntu-18.04 - CC: gcc-7 CXX: g++-7 PackageDeps: g++-7 @@ -58,20 +48,21 @@ jobs: - CC: gcc-11 CXX: g++-11 PackageDeps: g++-11 - optional_macros: CCFLAGS+=-std=c++20 + optional_macros: c++std=c++20 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-22.04 - CC: gcc-12 CXX: g++-12 PackageDeps: g++-12 - optional_macros: CCFLAGS+=-std=c++20 + optional_macros: c++std=c++20 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU os: ubuntu-22.04 - - CC: clang-5.0 - CXX: clang++-5.0 - PackageDeps: clang-5.0 - platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU - os: ubuntu-18.04 + - CC: gcc-13 + CXX: g++-13 + PackageDeps: g++-13 + optional_macros: c++std=c++20 + platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU + os: ubuntu-24.04 - CC: clang-6.0 CXX: clang++-6.0 PackageDeps: clang-6.0 @@ -129,6 +120,12 @@ jobs: Repo: llvm-toolchain-$(lsb_release -cs)-15 platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU os: ubuntu-22.04 + - CC: clang-16 + CXX: clang++-16 + PackageDeps: clang-16 + Repo: llvm-toolchain-$(lsb_release -cs)-16 + platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU + os: ubuntu-22.04 - feature: CORBA/e micro CC: gcc-10 CXX: g++-10 @@ -177,9 +174,9 @@ jobs: CXX: ${{ matrix.CXX }} steps: - name: Checkout ACE_TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Checkout MPC - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} @@ -229,7 +226,7 @@ jobs: if: matrix.optional_feature != '' shell: pwsh - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: cpp if: matrix.feature == 'CodeQL' @@ -245,6 +242,10 @@ jobs: run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4 shell: pwsh + - name: Run mwc.pl on $(TAO_ROOT)/tests/IDLv4 + run: | + perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDLv4 -workers 4 + shell: pwsh - name: Build TAO_ACE workspace run: | make -j 6 -C ${env:TAO_ROOT} @@ -258,8 +259,12 @@ jobs: make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test shell: pwsh if: matrix.feature != 'CORBA/e micro' + - name: Build TAO/tests/IDLv4 project + run: | + make -j 6 -C ${env:TAO_ROOT}/tests/IDLv4 + shell: pwsh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 if: matrix.feature == 'CodeQL' - name: Install TAO_ACE workspace run: | diff --git a/.github/workflows/macosx.yml b/.github/workflows/macosx.yml index 4227b0a65e233..c43f0e70f1235 100644 --- a/.github/workflows/macosx.yml +++ b/.github/workflows/macosx.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-11, macos-12] + os: [macos-13, macos-14] include: - platform_file: include $(ACE_ROOT)/include/makeinclude/platform_macosx.GNU runs-on: ${{ matrix.os }} @@ -30,9 +30,9 @@ jobs: MPC_ROOT: ${{ github.workspace }}/MPC steps: - name: checkout ACE/TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: checkout MPC - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} @@ -61,6 +61,10 @@ jobs: run: | perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDL_Test -workers 4 shell: pwsh + - name: Run mwc.pl on $(TAO_ROOT)/tests/IDLv4 + run: | + perl ${env:ACE_ROOT}/bin/mwc.pl -type gnuace ${env:TAO_ROOT}/tests/IDLv4 -workers 4 + shell: pwsh - name: Build TAO_ACE project run: | make -j 6 -C ${env:TAO_ROOT} @@ -73,3 +77,8 @@ jobs: run: | make -j 6 -C ${env:TAO_ROOT}/tests/IDL_Test shell: pwsh + - name: Build TAO/tests/IDLv4/maps project + run: | + make -j 6 -C ${env:TAO_ROOT}/tests/IDLv4 + shell: pwsh + diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d16e9f2a9bd72..219deaa07d789 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -118,9 +118,9 @@ jobs: VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed steps: - name: checkout ACE/TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: checkout MPC - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} @@ -129,10 +129,9 @@ jobs: '{"name": "tao","version-string": "githubaction","dependencies": [ ${{ matrix.vcpkgpackages }} ]}' > vcpkg.json shell: pwsh - name: Install vcpkg - uses: lukka/run-vcpkg@v10 + uses: lukka/run-vcpkg@v11 with: - vcpkgGitCommitId: 94ce0dab56f4d8ba6bd631ba59ed682b02d45c46 - appendedCacheKey: ${{ matrix.name }} + vcpkgGitCommitId: c82f74667287d3dc386bce81e44964370c91a289 runVcpkgInstall: true - name: create $ACE_ROOT/ace/config.h run: | @@ -165,7 +164,7 @@ jobs: perl ${env:ACE_ROOT}/bin/mwc.pl -type ${{ matrix.mpctype }} ${env:TAO_ROOT}/tests/IDL_Test -workers 4 ${{ matrix.OptionalMpcArgs }} shell: pwsh - name: Setup msbuild - uses: microsoft/setup-msbuild@v1 + uses: microsoft/setup-msbuild@v2 - name: Build solution TAO/TAO_ACE.sln run: msbuild -maxcpucount -p:Platform=${{ matrix.BuildPlatform }} -p:Configuration=${{ matrix.BuildConfiguration }} TAO/TAO_ACE.sln - name: Build solution ACE/tests/tests.sln @@ -188,9 +187,9 @@ jobs: MPC_ROOT: ${{ github.workspace }}/MPC steps: - name: checkout ACE/TAO - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: checkout MPC - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: DOCGroup/MPC path: ${{ env.MPC_ROOT }} diff --git a/.gitignore b/.gitignore index 8d1ca1d523e79..74e9997a0eec6 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ .depend.* GNUmakefile* +local.mwc *.ior .obj/ *.iobj diff --git a/ACE/ACE-INSTALL.html b/ACE/ACE-INSTALL.html index 185fe6d9d5235..66e9a9d48b83b 100644 --- a/ACE/ACE-INSTALL.html +++ b/ACE/ACE-INSTALL.html @@ -77,7 +77,7 @@

Synopsis

  • Working with ACE in Eclipse
  • Advanced Topics
  • Building from git
  • - +


    @@ -329,7 +329,7 @@

    Using the Traditional ACE/GNU Configuration - TSCH/CSH: + TCSH/CSH: setenv ACE_ROOT /home/cs/faculty/schmidt/ACE_wrappers
    @@ -427,6 +427,9 @@

    Using the Traditional ACE/GNU Configuration
  • If you've set the INSTALL_PREFIX before building, now run
    % make install
    +

    An alternative to directly running make install is to use $ACE_ROOT/bin/install_proj.sh + which will only install projects that are built (instead of trying to build each one during make install). +

  • If you need to regenerate the ace/Svc_Conf_y.cpp file, you'll need to @@ -675,15 +678,10 @@

    Building and Installing ACE on Windows with Embarcader Codeguard support. Should only be used when DEBUG is also set
    set CODEGUARD=1

    - By default we are using the clang based compilers. At the moment you - want to compile using the old bcc32 compiler set the CLASIC environment variable
    - set CLASSIC=1
    -
    - Set the environment variable below to build a version of ACE optimized - for a certain CPU. For this there are special compiler flags - (-3/-4/-5/-6), see the Embarcadero help for more info.
    - set CPU_FLAG=-6
    + Set one of the following environment variable to 1 to select which Embarcadero + C++ compiler has to be used. Valid environment variables are BCC32C, BCC64, and BCC64X.
    + set BCC64X=1

    You can then start the build with the command
    make -f Makefile.bmak all

    @@ -2474,7 +2472,7 @@

    Compiling ACE with GNU g++

    If you use the GNU GCC g++ compiler please note the following:

  • 4. TAO_UIPMC_Protocol_Factory

    This factory is located in the TAO_PortableGroup library and - is used with the DIOP and MIOP protocols managing the UDP connectionless - sockets (normally one-way calls only) instead of the standard IIOP TCP/IP - two-way connection based sockets. It accepts the options shown below. - (Any options required should be given + implements the MIOP protocol. It uses the + TAO_MIOP_Resource_Factory to manage UDP connection options + shared with the TAO_DIOP_Protocol_Factory. It accepts its own un-shared + options shown below. (Any options required should be given to the TAO_UIPMC_Protocol_Factory between the two double-quotes at the end of the line as a space separated list; however none are required as all options take default values if not specified.) This factory can be loaded @@ -1909,15 +1909,15 @@

    4. TAO_UIPMC_Protocol_Factory

    -

    5. MIOP_Strategy_Factory

    +

    5. TAO_MIOP_Resource_Factory

    This factory is located in the TAO_PortableGroup library and - uses the TAO_UIPMC_Protocol_Factory (see above) to - manage its UDP sockets, you should also look at that factories configuration - options. The MIOP factory accepts it own options detailed below which - should be specified between the two double-quotes shown here as a space - separated list; however none are required as all options take default - values if not specified. This factory can be loaded dynamically using a - service configurator directive of the form (all on one line): + manages UDP connection options shared between the TAO_DIOP_Protocol_Factory + and the TAO_UIPMC_Protocol_Factory (see above). It + accepts the options detailed below, which should be specified between the + two double-quotes shown here as a space-separated list; however none are + required as all options take default values if not specified. This factory + can be loaded dynamically using a service configurator directive of the + form (all on one line):

    dynamic MIOP_Resource_Factory Service_Object * TAO_PortableGroup:_make_TAO_MIOP_Resource_Factory () ""

    You would normally have to use other service configurator @@ -1930,17 +1930,17 @@

    5. MIOP_Strategy_Factory

    TAO_PortableGroup:_make_TAO_PortableGroup_Loader() ""
    dynamic MIOP_Resource_Factory Service_Object * TAO_PortableGroup:_make_TAO_MIOP_Resource_Factory () ""

    - Since MIOP uses UDP sockets (which is not a "reliable" transport unlike tcp/ip) - it is easy to configure MIOP in such a way that messages will not actually - reach the servant. The options below are intended to maximize MIOP reliability - but they must be used with care; users of MIOP must understand that large - messages are sent in fragments and they have to be reassembled by the server in - their entirety to be usable by the servant. If even a single data - fragment/packet is lost, the whole message cannot be reconstructed and will be - unusable. There is no way for the servant to even know it has missed such a - MIOP message, and being a one-way protocol, neither will the client be aware - that the message has been lost. Fragments can be lost due to a variety of - reasons: + Since DIOP and MIOP use UDP sockets (which is not a "reliable" transport unlike + TCP/IP), it is easy to configure them in such a way that messages will not + actually reach the servant. The options below are intended to maximize DIOP and + MIOP reliability, but they must be used with care; users of DIOP and MIOP must + understand that large messages are sent in fragments and they have to be + reassembled by the server in their entirety to be usable by the servant. If + even a single data fragment/packet is lost, the whole message cannot be + reconstructed and will be unusable. There is no way for the servant to even + know it has missed such a DIOP or MIOP message, and being a one-way protocol, + neither will the client be aware that the message has been lost. Fragments + can be lost due to a variety of reasons: