Repository navigation
configure: update to latest config.guess and config.sub - #6
Open
github-actions[bot] wants to merge 3289 commits into
Open
github-actions[bot] wants to merge 3289 commits into
github-actions[bot] wants to merge 3289 commits into
Conversation
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
February 7, 2024 10:35
6dde1e1 to
5936025
Compare
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
March 6, 2024 10:37
0e6b2b8 to
5c99be3
Compare
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
April 3, 2024 10:35
d288976 to
39441b0
Compare
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
May 1, 2024 10:38
c0ed318 to
e2c6fd7
Compare
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
August 7, 2024 10:38
e2c6fd7 to
f547ed5
Compare
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
November 6, 2024 10:41
f547ed5 to
35ebcb3
Compare
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
August 30, 2025 15:38
f998d32 to
8cc8db2
Compare
…OSGeo#7672) * set sqlite as default backend on init * read tgis_db_version from globals if no DB is initialized * add tests for STDS construction
…OSGeo#7337) * move to Tools API * add upper/lower filter range options) (backwards compatible) for both vector and raster based filtering * propagate options of underlying tools (r.clump) * add tests Co-authored-by: Markus Neteler <markus@neteler.org> * Edit html * Unchange header line * typos --------- Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> Co-authored-by: Markus Neteler <markus@neteler.org>
…e function" (OSGeo#7673) Follow-up from OSGeo#7660 This PR applies the same logic as the other PR, where how sscanf can also return EOF "if input failure occurs before the first receiving argument was assigned". (See https://en.cppreference.com/c/io/fscanf). Here, the little touch that is different for `raster/r.out.vtk/writeascii.c` and `raster3d/r3.out.vtk/writeVTKData.c`, is that I assume that if there's the `EOF` case, or any invalid case for the `null_value`, we would still want the null value to be 0. I think that's the design intention behind the code. This was assisted by AI (Copilot-generated fix suggestions for code scanning alerts), but we can reason through it and I applied some myself in order to batch them in one single PR. This should fix: - https://github.com/OSGeo/grass/security/code-scanning/525 - https://github.com/OSGeo/grass/security/code-scanning/526 - https://github.com/OSGeo/grass/security/code-scanning/527 - https://github.com/OSGeo/grass/security/code-scanning/528 - https://github.com/OSGeo/grass/security/code-scanning/531 - https://github.com/OSGeo/grass/security/code-scanning/532 - https://github.com/OSGeo/grass/security/code-scanning/533 * Potential fix for code scanning alert no. 525: Incorrect return-value check for a 'scanf'-like function Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * Potential fix for code scanning alert no. 528: Incorrect return-value check for a 'scanf'-like function Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * Update writeascii.c * r3.out.vtk: Fix "Incorrect return-value check for a 'scanf'-like function" for null value * r.watershed: Fix "Incorrect return-value check for a 'scanf'-like function" for disturbed_land default value Adresses https://github.com/OSGeo/grass/security/code-scanning/532 --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
We observed some random, transient timeouts on different tests. For one of them, t.list, there was no reason to fail on macOS, where there are 3 cores instead of 2 in GitHub Actions. There's a possibility that there's a problem with the temporal library locking up somewhere, but there’s also a small chance that the r.mapcalc calls are now using multiple processors. It "costs" not much to add this env var so that the number of threads is limited, even if it doesn't fix all problems; it might just fix some potential ones, since we are already running in parallel in that section.
AI findings on a recently modified file found a typo in a translated string. This adds "be" in "Values should be in between"... Apply suggested fix to raster3d/r3.out.vtk/writeVTKData.c from Copilot Autofix Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
The ctypes interface assigned the number of columns to the rows key and the number of rows to the cols key, for raster as well as 3D raster maps. The swapped values are stored in the temporal database when a map is registered and are reported by t.info, which therefore disagreed with r.info and r3.info. The number of cells was not affected, because it is the product of both. Maps registered before this fix keep the swapped values in the temporal database until they are registered again. Update the doctests which asserted the swapped values and add a test comparing the metadata read through the interface with the output of r.info and r3.info. The test was written with the help of Claude Code.
Python 3.10 receives security fixes only and reaches end of life in October 2026, before the next release. Per RFC 8, raise the minimum supported Python version from 3.10 to 3.11. Update the version in REQUIREMENTS.md, pyproject.toml (requires-python, Black, Pylint, Pyright, and isort) and CI (pytest matrix and MIN_PYTHON_VERSION). Update places in code which add code for the older version: - utils/mkdocs.py: datetime.fromisoformat parses the Z suffix used by recent Git natively since 3.11, so the fallback is no longer needed. - Use the datetime.UTC alias added in 3.11. Ruff enables this check (UP017) once it infers the higher target version from requires-python. - Drop the toml extra for bandit. It provided a TOML parser for reading the bandit configuration from pyproject.toml, which the standard library covers since 3.11 with tomllib. Here the deciding version is the one the workflow runs, which is well past 3.11 already.
* CMake: Build man pages from markdown Generate the markdown documentation (--md-description + mkmarkdown.py) in all three doc paths (modules, GUI, scripts) and convert man pages from it with g.md2man instead of from HTML with g.html2man, mirroring the Autotools build. Install g.md2man.py and gmd.py, and install the generated docs/mkdocs tree, which was previously not installed at all. Add man/build_manpages.py, a sweep run after the index scripts that converts any markdown page without an up-to-date man page. It ports man/Makefile's MANPAGES wildcard to CMake, which has no build-time glob, and produces the index and dynamically named topic_* man pages that the CMake build previously did not ship. Run the doc generators in the tool source directory like Autotools does. This fixes the SOURCE CODE footer in all CMake-built pages, which previously pointed to a nonexistent build-directory path in the repository and fell back to an Accessed date instead of the last commit, and makes the copy-source-into-build-dir steps unnecessary. Also fix build_class.py receiving the documentation directory as its year argument. Verified against an Autotools build: g.md2man output for the same generated markdown is byte-identical. Generated with AI assistance (Claude Fable), including the build verification against the Autotools doc tree. * address review
The table connection raised a new ImportError with the hint as its message, so the message of the original error, which says which module is missing, was replaced by the hint. Add the hint as a note to the original error instead. From the Python documentation of BaseException.add_note(): Add the string note to the exception's notes which appear in the standard traceback after the exception string. The traceback then shows both the missing module and the hint. Exception notes need Python 3.11, which is now the minimum version.
The test loader raised a new ImportError to say which module could not be imported. The message used e.message, which does not exist in Python 3, so the handler raised AttributeError instead of the intended error. Add the module name as a note to the original error instead. From the Python documentation of BaseException.add_note(): Add the string note to the exception's notes which appear in the standard traceback after the exception string. The traceback then shows both the import error and the module name. Exception notes need Python 3.11, which is now the minimum version.
) An empty WHERE result left an empty data array, which the classification algorithms then indexed at data[0] and data[count - 1]. The values printed as class breaks were whatever the heap happened to hold, which is zeroed on Linux but not on Windows, making the test flaky there. Warn the user and keep the zero-initialized breaks when nothing is selected, and reject an empty array in AS_class_apply_algorithm.
…tor geometry computation (OSGeo#7329)
The Scatterplot, Timeline, and Temporal Plot tools raised a new ImportError with the hint as its message, so the message of the original error, which says which module is actually missing, was replaced by the hint. Add the hint as a note to the original error instead. From the Python documentation of BaseException.add_note(): Add the string note to the exception's notes which appear in the standard traceback after the exception string. The traceback then shows both the missing module and the hint. The consumer code (various places) shows always its own message, so the not, not the original message is not used. These changes do not change that. Exception notes need Python 3.11, which is now the minimum version.
…7697) locale.getencoding() was added in Python 3.11, so the fallbacks to the deprecated locale.getdefaultlocale() are never used now that 3.11 is the minimal supported version. Call locale.getencoding() directly. The two places calling locale.getlocale() get the same treatment. That function is available in all supported versions, so those fallbacks could not be reached even before.
Starting with GRASS 8.6, the GUI supports launching and managing Jupyter Notebooks directly. Users can access notebooks through two modes: Browser mode (default web browser) or Integrated mode (embedded in GUI). Authored-by: Linda Karlovska <linda.karlovska@seznam.cz> Co-authored-by: Tomas Zigo <tomas.zigo@slovanet.sk> Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> Co-authored-by: Anna Petrasova <kratochanna@gmail.com> Co-authored-by: Vaclav Petras <wenzeslaus@gmail.com>
…ndocked 3D view window (OSGeo#7819) * wxGUI/nviz: fix handling window resize event only if window is shown on the screen Fix 'window must be shown' error message during docking undocked 3D view window.
) The walker loop computed each thread's range of walkers by hand from the thread number and count. A worksharing loop with static schedule does the same with one pragma, and ends with an implicit barrier, so code after the loop in the same parallel region sees all walkers processed without adding an explicit barrier (no barrier in the current code). The loop variable is private in a worksharing loop, so it is no longer listed as firstprivate. Single-threaded results do not change: the depth and discharge maps computed from the NC SPM elevation, with and without infiltration and diffusion, are byte-identical to those before this change, and the run time is the same within noise. Written with the help of Claude Code.
…ecker to v4 (main) (OSGeo#7989)
With nprocs > 1, walkers on different threads checked and reduced the remaining infiltration capacity of a cell without synchronization. This is a data race and undefined behavior in C: two walkers could both be absorbed by the capacity left for one, or a reduction could be lost. Run the unchanged infiltration code in a critical section, entered only when an atomic read shows capacity left in the cell. Within the lock, the code checks the capacity again, as another thread may have used it up. The capacity is written atomically, since it is also read outside of the lock. After the first step, few walkers are in a cell with capacity left, so the lock is rarely taken. The arithmetic and the conditions are unchanged. With one thread, the depth maps computed from the elev_lid792_1m elevation, with and without infiltration, are byte-identical to those before this change, and the run time is the same within noise with 1 and 4 threads. With more threads, the order in which walkers reach a cell still depends on thread scheduling, as before. A new test checks that infiltration removes exactly the capacity of the cells at 1 and 4 threads. Written with the help of Claude Code.
With -t, r.sim.water wrote the series maps every (int)(output_step / time step) iterations and named them by the simulated time rounded to whole minutes. The truncated interval made the write times drift away from the output steps, so two writes could round to the same minute and the first map was overwritten, names could skip a minute or land on odd minutes with an even output_step, and the last step was often missing. When the time step was longer than output_step, the interval was zero and no map was written at all while the tool still succeeded. Write output step j at the iteration whose simulated time is closest to j times output_step, and name and timestamp the maps by that time. The time step comes from the cell size and the mean velocity, so iterations usually do not fall on the output times. When one iteration is the closest one to several steps, write only the step closest to it and warn that the time step is longer than output_step. Do not write steps past the duration. Always end the series with maps named by the duration which hold the state at the end of the run, also when the duration is not a multiple of output_step or when the run stopped early. Walker vector maps follow the same schedule. For users, each output step now appears once, named and timestamped by a multiple of output_step, and the maps named by the duration are always present. A series map holds the state at most half a time step before or after the time in its name instead of up to several minutes before it. The depth and discharge values are unchanged and so are the outputs without -t. In the run summary, simulated_time of an output is the time the maps were written and timestamp the time they are named by. New tests check the names, timestamps and write times of the series, a duration which is not a multiple of output_step, time steps longer than output_step including its multiples, a step past the duration, and an early stop. Written with the help of Claude Code.
Store history region in g.region JSON format, use Tools API for region operations
…7999) CI(deps): Update ubuntu:26.04 Docker digest to 88a381d Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* CI(deps): Update dependency pylint to v4.1.1 * Python: Fix new pylint chained-comparison and comparison-with-itself messages Pylint 4.1 reports R1716 (chained-comparison) and R0124 (comparison-with-itself). Rewrite the flagged conditions as chained comparisons, with unchanged logic, and use math.isnan() for the NaN checks in c_libraries_interface. Needed for the pylint update in OSGeo#7996. Drafted with AI assistance (Claude Code); the changes are mechanical and were checked with pylint 4.1.1 and ruff. * Update pylint to 4.1.2 --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com>
locale: Update translation files Co-authored-by: echoix <27212526+echoix@users.noreply.github.com>
…SGeo#8009) The resource_paths.py rule in python/grass/app/Makefile redirects sed output into the destination directory without depending on it. With parallel make, the redirect could run before the directory was created, failing with "Directory nonexistent" and breaking the Docker builds intermittently. Add the directory as an order-only prerequisite, as the pattern rule for the other files already does. Developed with AI assistance (Claude Code).
…SGeo#7947) Adresses ” -Wshorten-64-to-32” Clang warnings.
OSGeo#7950) Adresses ” -Wshorten-64-to-32” Clang warnings.
Tools which draw random numbers in parallel, or run ensembles, or keep several model components reproducible on their own, cannot do so with the one generator shared by the whole program: whichever thread asks first gets the next value, and different seeds are related on this generator (seeds 2^31 or 2^30 apart are shifted by a constant, and consecutive seeds form a lattice). Add generators the program owns, struct G_random_state, and layouts, struct G_random_layout, which place one state per unit of work on the generator's cycle. A layout is a seed plus the way the span is cut into streams of stride draws, one stream per unit and batch. The span is the first quarter of the cycle after the seed, 2^46 draws: the multiplier has order 2^46, so positions 2^46, 2^47 or 3 * 2^46 apart give values differing by a constant, and the other three quarters hold the same values plus 0.25, 0.5 and 0.75. Within the span no two positions are that far apart. The basic layout, G_random_init_layout(), gives the units the whole span, every unit the largest stream the span allows, in one batch, dividing the span into an odd number of parts: with an even number, the unit halfway along would start 2^45 draws after unit 0 and the unit a quarter of the way along near 2^44, distances at which the values differ by two or four constants in turn. It holds at most 2^20 units, because the stride rounded down to odd loses up to two draws per unit, which accumulate along the span; up to that count the units nearest to 2^45 and 2^44 start at least 0.48 and 0.24 of a stride away from them. An exact layout takes the draws of a unit as given, so the streams are the positions of a serial run and a tool keeps its earlier values; a bounded layout takes a bound and rounds it up to odd, so that units a power of two apart relate only a few low bits. A batch is one stream for every unit, and batches are appended, never reserved, so an ensemble member needs only its batch number. Batches start units * stride draws apart, or one more when that number is even, so that the same draw of different batches is as unrelated as the generator allows, as the odd strides do for units; the relation remains between draws whose numbers differ, and a layout gives streams which do not overlap, not independent ones. The queries return the batches that fit and the stride; the two state calls place a state on a unit's stream, or a unit's stream of a batch; G_random_advance() moves a state by any number of draws in one jump; G_random_state_from_seed() gives the shared generator's sequence, as the single unit of a layout of the whole span. Add G_random_generate_seed(), which reads GRASS_RANDOM_SEED, or else SOURCE_DATE_EPOCH, as an integer: an empty value counts as not set, a value which is not an integer or does not fit is a fatal error, a value from -2^31 to 2^32 - 1 is used as it is, and a value outside that range is reduced to its low 32 bits with a warning. Without either variable the seed is a weak hash of the time and the process ID. G_srand48_auto() seeds with that value and returns it; before, it returned an environment value unreduced although it had used only its low 32 bits. Add GRASS_RANDOM_SEED to the list of environment variables. The shared generator is unchanged. Tests cover the identity of G_random_state_from_seed() with G_srand48(), the three layouts, the batches, the refusals, the absence of constant-shift twins within the span, the distance of the units of a layout of the whole span from the two- and four-constant levels for every unit count it accepts, the low-bits rule, the advance, the seed from each environment source, and independence from the shared generator and between threads. Written with the help of Claude Code, while designing new random numbers code for r.sim.water and r.mapcalc and documentation for the library at the same time.
Translated using Weblate (Swedish) Currently translated at 100.0% (10157 of 10157 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (68 of 68 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (3434 of 3434 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (10157 of 10157 strings) Translated using Weblate (Swedish) Currently translated at 100.0% (1855 of 1855 strings) Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grassglossary/sv/ Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grasslibs/ Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grasslibs/sv/ Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grassmods/ Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grassmods/sv/ Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grasswxpy/ Translate-URL: https://weblate.osgeo.org/projects/grass-gis/grasswxpy/sv/ Translation: GRASS/grassglossary Translation: GRASS/grasslibs Translation: GRASS/grassmods Translation: GRASS/grasswxpy Co-authored-by: Weblate <noreply@weblate.org> Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
* libvector: Use the same plural string for vertices registered in build_sfa.c The message "One vertex registered" is used in build_nat.c with the plural "%" PRId64 " vertices registered" and in build_sfa.c with "%d vertices registered". A .pot file keeps only one plural form per singular msgid, and xgettext keeps the first one it reads. The input file list comes from find, whose order is not stable, so the template flipped between the two forms from one update to the next. Each flip changed the msgid and made the existing translations fuzzy. Use the 64-bit form in build_sfa.c as well, casting the int counters, so all three call sites share one msgid_plural. Prepared with AI assistance (Claude Code); the root cause was found from the history of locale/templates/grasslibs.pot. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * locale: Sort the input file lists for xgettext The lists of files given to xgettext come from find, whose order depends on the filesystem and can differ between runners. When the same msgid is used with different plural forms, xgettext keeps the first one it reads, so the generated .pot files could change without any change in the code. Sort the lists with LC_ALL=C so that the order is the same everywhere. Prepared with AI assistance (Claude Code). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Apply batched suggestions from code review Co-authored-by: Nicklas Larsson <n_larsson@yahoo.com> --------- Co-authored-by: Nicklas Larsson <n_larsson@yahoo.com>
…gs (OSGeo#8020) Adresses ” -Wshorten-64-to-32” Clang warnings.
…nings (OSGeo#8023) Adresses ” -Wshorten-64-to-32” Clang warnings.
Each walker draws from a random number state of its own, placed on the walker's stream of a bounded layout of the seed, instead of from the shared generator. A walker's random numbers now depend only on the seed and the walker's number, not on the thread which moves it or on the order of the walkers, so walker paths are the same for any nprocs as long as the depth-dependent diffusion and infiltration do not come into play. The water depth and the sediment concentration still differ slightly at nprocs > 1 because the order of the atomic additions to the gama grid and the order in which walkers reach a cell with infiltration capacity depend on the threads, which this does not change. The streams hold 2 + 8 * steps + 48 values, over twice what a walker draws on average: two values at placement and, per step, a normal pair by the polar method, 8 / pi values on average, plus one in a cell of the flow_control map (a trap in the code). The 8 per step hold the sum over many steps, and the 48 allow a run of 24 rejected attempts within one step, so that a walker exceeds its stream with a probability below 1e-16 and a run of 2^31 walkers, the most the int counts hold, with a probability below 1e-6. In counted runs on the nc_spm elevation, the most a walker drew over 145 or 158 steps was 628 values, at most 51% of its stream. A run whose walkers and steps need more than one seed's span provides gets a warning. The states are placed in parallel before the walkers are, each a member of its walker's record, for which the walkers get a type of their own, struct walker. A first version kept the states in an array of their own beside the walkers, which cost 7 to 9% of the wall time at every thread count, likely for the extra stream of memory reads and writes in each walker's step; in the record, the state shares the cache line with the walker's position and weight and the cost is gone. Without the contention on the shared generator, nprocs > 1 is now faster than nprocs = 1: on the whole nc_spm elevation (6 million walkers), 50 s at nprocs=1, 13 s at 4 and 4.8 s at 16, against 68 s, 143 s and 159 s before. The build without OpenMP now gives the same results as nprocs=1. Without random_seed, the seed is generated, as in r.mapcalc, instead of being 12345, and recorded in the history of the output maps and in the -p summary, so that a run can be repeated. The results therefore differ from run to run unless random_seed is set. The -s flag is deprecated, and random_seed with -s is an error. The seed is parsed with strtoll() and checked right after parsing, so a seed outside -2^31 to 2^32 - 1 is an error instead of being silently reduced to 32 bits. The tool docs get a section on the random numbers, the seed and reproducibility with more than one thread. This change has the price of changed outputs also at nprocs=1, but invests into results independent of the thread count where the model allows it. The alternative, one state per thread, would keep the values at nprocs=1 and give a different result for each thread count. The outputs of r.sim.water and r.sim.sediment are sums over millions of walkers, so a different realization of the same seed moves them within their sampling noise, and from the user's perspective they do not change much anyway. The gunittest references and the pinned landform arrays are regenerated; the commands used reproduce the old references exactly with the previous code. Written with the help of Claude Code (Fable and Opus).
…o#8004) Add the page gislib_random_streams, written in Markdown as lib/gis/random_streams.dox.md and rendered by Doxygen as a subpage of the library page. It defines eight terms once (generator, seed, state, span, layout, unit, stride, batch), describes a single sequence, the three layouts and batches, shows how a tool gets its seed and the usage patterns with code (a single sequence, rows of a raster, items drawn over time, ensembles), gives the capacity, explains the quality of the values (a table of the issues, how the library avoids each and what remains, the generator and the span, the relations by distance with their expected occurrence for a round total of draws, what odd strides and odd distances between batches fix and where the relation remains, relations between seeds), and shows how to migrate from the shared generator in a table of the calls before and after. Six figures draw the ring with the span as the quarter after wherever the seed falls, the constant-shift twins, the layouts, what an even number of parts would give, the values of units at an even and an odd stride, and the values of consecutive seeds next to those of batches. The page speaks of rows of a raster and of items drawn over time rather than of particular tools, so that it does not drift when tools change. The examples use single-line comments and the formulas the multiplication sign, so that the page renders as written and lints as Markdown. The figures are written by lib/gis/random_streams_figures.py, which also prints the numbers quoted on the page; a README in the directory points to it. Add *.dox.md to the file patterns of both Doxygen configuration templates and say in the style guide that library pages may be Markdown. Written with the help of Claude Code.
…eo#8026) Enabling binaries that are needed during build process, to be found, e.g. "output/lib/grass86/bin/Debug/g.mkfontcap", where 'Debug' is the configuration. In addition, generate fontcap from a separate custom target that depends on the completed g.mkfontcap target. Addresses an ad-hoc signature related build failure on Xcode. Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com>
Check for a zero divisor in the integer modulo, so that 5 % 0 gives NULL as documented. It hung r.mapcalc on x86 Linux because the SIGFPE handler returned and the division was executed again. Remove the SIGFPE handler and the floating_point_exception flags. Floating point exceptions do not trap by default, so the handler never ran for floating point operations and the flags never became 1. Still, every thread reset the shared flag to 0 for every cell, which made the computation scale poorly with threads. Domain errors still give NaN, which is NULL, and overflow still gives infinity. Remove pre_exec(), post_exec(), and the two floating_point_exception variables from the installed grass/calc.h and from libgrass_calc, so technically a change to the API. Only r.mapcalc used them, so practically not an issue. Test division and modulo by zero, domain errors and infinite input of the functions which had the flag check, their regular results, and overflow, all with 1 and 4 threads. The fix, tests, and benchmarks were prepared with AI assistance (Claude Code with Opus 5.5).
…#8013) Add `mul48()` to encapsulate multiplication modulo 2^48 and use it in `lcg_step()` and `lcg_jump()`. The multiplication may overflow `uint64_t` and wrap modulo 2^64. This is intentional and does not affect the result modulo 2^48, since 2^48 divides 2^64. Consequently, masking the wrapped product to 48 bits gives the same result as computing the full product modulo 2^48. Centralising the operation in `mul48()` makes this property explicit and avoids repeating potentially misleading unsigned multiplication throughout the LCG implementation. It also provides a single location for documenting or suppressing static-analysis warnings about the intentional wraparound which is used for Coverity Scan now.
…nt attribute (OSGeo#7977) grass.pygrass: Fix Ilist attribute access, indexing, and append issues In `python/grass/pygrass/vector/basic.py`, `Ilist.extend()` and `Ilist.remove()` incorrectly attempted to access `ilist.ilist` and `value.ilist`, which do not exist on `Ilist` instances (the C pointer is stored in `c_ilist`), resulting in an `AttributeError`. Additionally: - `Ilist.append()` previously used a bare `raise` when `Vect_list_append()` failed; raise `GrassError` from `grass.pygrass.errors` and coerce `value` with `int()`. - `Ilist.__getitem__()` negative index calculation allowed negative out-of-bounds lookups without raising `IndexError`. - `Ilist.__contains__()` now delegates directly to `contains()` using the C routine. - Add comprehensive pytest unit tests in `python/grass/pygrass/vector/tests/test_basic.py`. Fixes OSGeo#7976. Signed-off-by: bhuvan-somisetty <somisettybhuvan5@gmail.com>
github-actions
Bot
force-pushed
the
periodic/update-configure
branch
from
October 10, 2026 19:31
c764e41 to
d58e02b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This updates config.guess and config.sub to their latest versions.
If the two files are deleted in this PR, please check the logs of the workflow here:
Workflow run summary
Automated changes by create-pull-request GitHub action