Magne Sjaastad f6787a9ea1 vcpkg: Patch snappy for AVX-by-default toolchains via overlay port
snappy 1.2.2, a transitive dependency of arrow, includes <immintrin.h> only
when SNAPPY_HAVE_BMI2 or SNAPPY_HAVE_X86_CRC32 is set, but MemCopy64() selects
an AVX code path on a separate condition, `defined(__x86_64__) &&
defined(__AVX__)`. The vcpkg port passes -DSNAPPY_HAVE_BMI2=OFF and
-DSNAPPY_HAVE_X86_CRC32=OFF to keep the binaries portable, so on a toolchain
whose default target enables AVX that branch is compiled with no intrinsics
header and snappy.cc fails with "'__m256i' was not declared in this scope".

This broke the clang-tidy and clazy-report workflows the first night after they
moved to ubuntu-26.04. The runner switch also changed the vcpkg compiler hash,
so the binary cache went from "Restored 103 package(s)" to "Restored 0
package(s)" and every port was rebuilt from source, which is what exposed
snappy in the first place. The bug is not GCC 15 specific: microsoft/vcpkg#51047
reports it against GCC 14.3.1. It is still present in snappy 1.3.1 and main, and
vcpkg master still ships 1.2.2 with the SNAPPY_HAVE_* options off, so neither a
baseline bump nor a port update fixes it.

Vendor the port under ThirdParty/vcpkg-overlay-ports and add
avx-immintrin.patch, which includes <immintrin.h> for the __AVX__ branch as
well. The patch cannot change the ISA baseline of the result: it only supplies
a header on a path the compiler was already going to take. Verified by
reproducing the failure locally with an overlay triplet setting
-march=x86-64-v3, confirming the patched port builds both with and without that
flag, and checking that objdump finds no AVX instructions in the library built
with the stock toolchain.

Reference the two overlay ports by their individual directories rather than by
the parent directory. The two configurations resolve different versions of both
ports (default: snappy 1.2.2#1, thrift 0.22.0; rhel8: snappy 1.2.1,
thrift 0.20.0#1), so an overlay of the whole directory would downgrade thrift
for the default builds and bump snappy for RHEL8. Dry runs of both manifests
confirm each profile now picks up only its own overlay.

The bumped port-version misses the existing vcpkg binary caches, but those
caches are already cold for the ubuntu-26.04 workflows.
2026-09-29 14:14:51 +02:00
2024-10-04 13:25:20 +02:00
2024-10-31 15:39:52 +01:00
2013-04-19 08:58:57 +02:00

ResInsight

ResInsight is an open source, cross-platform 3D visualization and post-processing tool for reservoir models and simulations.

Key Features

  • 3D Visualization: Grid properties, faults, LGRs, intersections, contour maps and cell filters, using multi-core CPUs for responsive operation
  • Ensembles: Grid and summary ensembles with statistics, contour maps and correlation analysis
  • Plotting: Summary, well log, RFT, PLT, well allocation, flow characteristics, cross plots and histograms
  • Wells and Completions: Well paths, perforations, fishbones, valves and fractures, with export of completion data (COMPDAT, WELSEGS, COMPSEGS)
  • Geomechanics: Abaqus results with derived stress and strain quantities
  • Seismic: Seismic volumes displayed together with grids and wells
  • Model Export: Sector models and grid properties in simulator input format, surfaces as IRAP and TSurf
  • Python API: The rips package drives ResInsight and exchanges data through gRPC
  • GNU Octave: Result manipulation and computations with two-way data exchange
  • Cloud Data: Well paths and well logs from OSDU, and grid properties from Sumo

Supported Input Formats

  • Grids and results: Eclipse/OPM Flow binary output (*.GRID, *.EGRID with *.INIT, *.UNRST, *.XNNN), Eclipse input (*.GRDECL), ROFF (*.roff, *.roffasc)
  • Summary data: Eclipse/OPM Flow summary (*.SMSPEC, *.ESMRY), observed data (*.RSM, *.txt, *.csv), Reveal and StimPlan summary (*.csv)
  • Well paths: *.dev, *.asc, *.ascii, *.rmswell, *.w, *.json
  • Well logs: LAS (*.las), CSV
  • Completions: Perforation intervals (*.ev), valve templates, StimPlan and thermal fracture templates (*.xml, *.csv)
  • Surfaces: IRAP (*.irap, *.gri), GOCAD TSurf (*.ts), VTK (*.vtu, *.pvd), point sets (*.ptl, *.xyz, *.dat)
  • Geomechanics: Abaqus (*.odb, *.inp), VTK (*.pvd)
  • Seismic: ZGY (*.zgy), OpenVDS (*.vds), SEG-Y (*.sgy, *.segy)
  • Other: Formation names (*.lyr), polygons (*.pol, *.csv, *.dat), VFP tables (*.vfp, *.ecl), well measurements, pressure-depth data

Technology Stack

ResInsight utilizes:

  • Equinor/resdata and OPM/opm-common libraries for Eclipse result file access
  • Qt for the application framework
  • Qwt for plotting functionality
  • vcpkg for dependency management

Platform Support

ResInsight is cross-platform with automated testing on:

  • Red Hat Enterprise Linux (RHEL)
  • Ubuntu
  • Windows 11
  • macOS (Apple Silicon and Intel)

Documentation

Development

Source Code

git clone https://github.com/OPM/ResInsight.git

Minimum Requirements

  • gcc 13
  • clang 19
  • AppleClang 17 (Xcode 16)
  • CMake 3.26
  • MSVC 2022 17.4

These requirements are defined by used features in c++23 like std::stacktrace and std::expected.

Dependencies

Most dependencies are managed using vcpkg as defined in vcpkg.json

Contributing

Contributions are welcome! See CONTRIBUTING.md for the issue policy and pull request guidelines.

  • Use the dev branch for contributions and pull requests
  • Releases are defined by tags
  • See Spell Checking Guide for information on automated spell checking

Building

See the Build Instructions for detailed setup information.

License

ResInsight is co-developed by Equinor ASA, Ceetron Solutions AS, and Ceetron AS. The software is copyrighted by Ceetron and Equinor and licensed under GPL 3+. See the COPYING file for details.

Languages
C++ 88.8%
ECL 4.7%
TypeScript 2.9%
Python 1.8%
CMake 0.6%
Other 1%