Skip to content

Really fix Windows path handling in examples_test_runner #418

Really fix Windows path handling in examples_test_runner

Really fix Windows path handling in examples_test_runner #418

Workflow file for this run

name: Linux
on:
push:
branches:
- master
- v*/dev
paths:
- '.github/**'
- 'benchmark/**'
- 'cmake/**'
- 'examples/**'
- 'include/**'
- 'src/**'
- 'tests/**'
- '**/CMakeLists.txt'
pull_request:
branches:
- master
- v*/dev
paths:
- '.github/**'
- 'benchmark/**'
- 'cmake/**'
- 'examples/**'
- 'include/**'
- 'src/**'
- 'tests/**'
- '**/CMakeLists.txt'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ github.ref_type == 'branch' && github.sha }}-${{ github.event_name == 'workflow_dispatch' }}-${{ github.event_name == 'schedule' }}-${{ github.event.schedule }}
cancel-in-progress: true
env:
APT_INSTALL: |
sudo apt-get install
-yq --no-install-suggests --no-install-recommends
--allow-unauthenticated --allow-downgrades --allow-change-held-packages
CCACHE_ABSSTDERR: true
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 6
CCACHE_DIR: "/tmp/ccache"
CCACHE_MAXSIZE: 50M
CCACHE_NOHASHDIR: true
CCACHE_SLOPPINESS: "pch_defines,time_macros"
CCACHE_UNIFY: true
DEBIAN_FRONTEND: noninteractive
jobs:
ubuntu:
runs-on: ubuntu-${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ 22.04, 20.04 ]
cxx:
- g++-13
- g++-12
- g++-11
- g++-10
- g++-9
- g++-8
- g++-7
# - clang++-18
# - clang++-17
# - clang++-16
# - clang++-15
# - clang++-14
# - clang++-13
# - clang++-12
# - clang++-11
# - clang++-10
# - clang++-9
# - clang++-8
# - clang++-7
# - clang++-6.0
std: [ 17 ]
include:
# Explicitly pick out pre-installed clang + os pairs -- apt.llvm.org likes to fail on us
- os: 24.04
cxx: clang++-18
std: 17
- os: 24.04
cxx: clang++-17
std: 17
- os: 24.04
cxx: clang++-16
std: 17
- os: 22.04
cxx: clang++-15
std: 17
- os: 22.04
cxx: clang++-14
std: 17
- os: 22.04
cxx: clang++-13
std: 17
- os: 20.04
cxx: clang++-12
std: 17
- os: 20.04
cxx: clang++-11
std: 17
- os: 20.04
cxx: clang++-10
std: 17
# clang 8 from apt
- os: 20.04
cxx: clang++-8
std: 17
# newest pre-installed gcc on 24.04, including C++20 and C++23
- os: 24.04
cxx: g++-14
std: 17
- os: 24.04
cxx: g++-14
std: 20
- os: 24.04
cxx: g++-14
std: 23
# newest pre-installed clang on 24.04, including C++20 and C++23
- os: 24.04
cxx: clang++-18
std: 17
- os: 24.04
cxx: clang++-18
std: 20
- os: 24.04
cxx: clang++-18
std: 23
exclude:
# gcc 8, clang 12, and before aren't available on 22.04
- cxx: g++-8
os: 22.04
- cxx: g++-7
os: 22.04
# gcc 12 isn't available on 20.04 (11 and 13 are in ubuntu-toolchain-r)
- cxx: g++-12
os: 20.04
env:
CXX: ${{ matrix.cxx }}
OS: ${{ matrix.os }}
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Create Build Environment
run: |
mkdir ${{ runner.workspace }}/deps
mkdir ${{ runner.workspace }}/build
sudo locale-gen en_US.UTF-8
sudo locale-gen fi_FI.UTF-8
sudo update-locale
sudo locale -a
- name: Install dependencies
working-directory: ${{ runner.workspace }}/deps
run: |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get --allow-unauthenticated -yq update
${APT_INSTALL} ccache
if [[ "${CXX}" == "g++-13" ]]; then
${APT_INSTALL} g++-13
fi
if [[ "${CXX}" == "g++-12" ]]; then
${APT_INSTALL} g++-12
fi
if [[ "${CXX}" == "g++-11" ]]; then
${APT_INSTALL} g++-11
fi
if [[ "${CXX}" == "g++-10" ]]; then
${APT_INSTALL} g++-10
fi
if [[ "${CXX}" == "g++-9" ]]; then
${APT_INSTALL} g++-9
fi
if [[ "${CXX}" == "g++-8" ]]; then
${APT_INSTALL} g++-8
fi
if [[ "${CXX}" == "g++-7" ]]; then
${APT_INSTALL} g++-7
fi
if [[ "${CXX}" == "clang++-8" ]]; then
${APT_INSTALL} clang-8
fi
- name: Checkout
uses: actions/checkout@v4
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ matrix.cxx }}-std${{ matrix.std }}
- name: Setup ccache
run: |
ccache --version
ccache --zero-stats
ccache --show-stats
ccache --show-config
- name: Run CMake
working-directory: ${{ runner.workspace }}/build
run: |
cmake -G Ninja -DSCN_CI=ON -DSCN_TESTS_LOCALIZED=ON \
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \
$GITHUB_WORKSPACE
- name: Build
working-directory: ${{ runner.workspace }}/build
run: cmake --build . -- -k 0
- name: Show ccache stats
run: |
ccache --show-stats
- name: Test
working-directory: ${{ runner.workspace }}/build
run: ctest --output-on-failure
libcxx:
runs-on: ubuntu-${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# 24.04 doesn't have libc++ (yet?)
os: [ 22.04, 20.04 ]
std: [ 17 ]
include:
- os: 22.04
std: 20
- os: 22.04
std: 23
env:
CC: clang
CXX: clang++
OS: ${{ matrix.os }}
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Checkout
uses: actions/checkout@v4
- name: Create Build Environment
run: |
${APT_INSTALL} ccache
mkdir ${{ runner.workspace }}/build
sudo locale-gen en_US.UTF-8
sudo locale-gen fi_FI.UTF-8
sudo update-locale
sudo locale -a
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu${{ matrix.os }}-${{ env.CXX }}-std${{ matrix.std }}-libcxx
- name: Setup ccache
run: |
ccache --version
ccache --zero-stats
ccache --show-stats
ccache --show-config
- name: Run CMake
working-directory: ${{ runner.workspace }}/build
run: |
cmake -G Ninja -DSCN_CI=ON -DSCN_TESTS_LOCALIZED=ON \
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \
-DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++ -lc++abi" \
$GITHUB_WORKSPACE
- name: Build
working-directory: ${{ runner.workspace }}/build
run: cmake --build . -- -k 0
- name: Show ccache stats
run: |
ccache --show-stats
- name: Test
working-directory: ${{ runner.workspace }}/build
run: ctest --output-on-failure
alpine:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-alpine-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-alpine-${{ github.ref }}
ccache-${{ github.workflow }}-alpine-${{ github.base_ref }}
ccache-${{ github.workflow }}-alpine
- name: Start docker
run: |
docker run -w /src -dit --name alpine \
-v $PWD:/src \
-v ${{ env.CCACHE_DIR }}:${{ env.CCACHE_DIR }} \
-e CCACHE_ABSSTDERR=${{ env.ABSTDERR }} \
-e CCACHE_COMPRESS=${{ env.CCACHE_COMPRESS }} \
-e CCACHE_DIR=${{ env.CCACHE_DIR }} \
-e CCACHE_MAXSIZE=${{ env.CCACHE_MAXSIZE }} \
-e CCACHE_NOHASHDIR=${{ env.CCACHE_NOHASHDIR }} \
-e CCACHE_SLOPPINESS=${{ env.CCACHE_SLOPPINESS }} \
-e CCACHE_UNIFY=${{ env.CCACHE_UNIFY }} \
-e CMAKE_C_COMPILER_LAUNCHER=ccache \
-e CMAKE_CXX_COMPILER_LAUNCHER=ccache \
alpine:3.18
echo 'docker exec alpine "$@";' > alpine-run.sh
chmod +x alpine-run.sh
- name: Install dependencies
run: |
./alpine-run.sh apk update
./alpine-run.sh apk add build-base cmake g++ linux-headers git bash ninja ccache python3
- name: Setup ccache
run: |
./alpine-run.sh ccache --version
./alpine-run.sh ccache --zero-stats
./alpine-run.sh ccache --show-stats
./alpine-run.sh ccache --show-config
- name: Run CMake
run: |
./alpine-run.sh cmake -G Ninja -S /src -B build -DSCN_CI=ON
- name: Build
run: |
./alpine-run.sh cmake --build build -- -k 0
./alpine-run.sh ccache --show-stats
- name: Test
run: |
./alpine-run.sh bash -c "cd build && ctest --output-on-failure"
asan-and-ubsan:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
std: [ 17, 20 ]
cxx: [ clang++-16 ]
env:
CXX: ${{ matrix.cxx }}
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Create Build Environment
run: |
sudo locale-gen en_US.UTF-8
sudo locale-gen fi_FI.UTF-8
sudo update-locale
sudo locale -a
${APT_INSTALL} ccache
mkdir ${{ runner.workspace }}/build
- name: Checkout
uses: actions/checkout@v4
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ matrix.std }}-sanitize
- name: Setup ccache
run: |
ccache --version
ccache --zero-stats
ccache --show-stats
ccache --show-config
- name: Run CMake
working-directory: ${{ runner.workspace }}/build
run: |
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_STANDARD=${{ matrix.std }} \
-DSCN_CI=ON -DSCN_TESTS_LOCALIZED=ON \
-DSCN_USE_ASAN=ON -DSCN_USE_UBSAN=ON \
$GITHUB_WORKSPACE
- name: Build
working-directory: ${{ runner.workspace }}/build
run: |
cmake --build . -- -k 0
- name: Show ccache stats
run: |
ccache --show-stats
- name: Test
working-directory: ${{ runner.workspace }}/build
run: |
ctest --output-on-failure
install-and-consume:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
external_deps: [ 0, 1 ]
env:
CC: gcc-11
CXX: g++-11
CMAKE_CXX_STANDARD: 17
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Install ccache
run: |
${APT_INSTALL} ccache
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.sha }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-install${{ matrix.external_deps }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}
- name: Setup ccache
run: |
ccache --version
ccache --zero-stats
ccache --show-stats
ccache --show-config
- name: Checkout
uses: actions/checkout@v4
- name: Build fast_float
if: matrix.external_deps == 1
run: |
git clone https://github.com/fastfloat/fast_float -b v6.1.1 --depth=1
cd fast_float
mkdir build
cd build
cmake -G Ninja ..
cmake --build .
sudo cmake --build . --target install
- name: Build scnlib
run: |
mkdir ${{ runner.workspace }}/lib-build
cd ${{ runner.workspace }}/lib-build
if [[ ${{ matrix.external_deps }} -eq 1 ]]; then
cmake -G Ninja -DSCN_INSTALL=ON -DSCN_ENABLE_EXTRAS=OFF \
-DSCN_USE_EXTERNAL_FAST_FLOAT=ON \
$GITHUB_WORKSPACE
else
cmake -G Ninja -DSCN_INSTALL=ON -DSCN_ENABLE_EXTRAS=OFF $GITHUB_WORKSPACE
fi
cmake --build . --target scn
sudo cmake --build . --target install
- name: Build consumer
run: |
mkdir ${{ runner.workspace }}/consumer-build
cd ${{ runner.workspace }}/consumer-build
cmake $GITHUB_WORKSPACE/tests/consumer-test
cmake --build .
- name: Show ccache stats
run: |
ccache --show-stats
- name: Test consumer
working-directory: ${{ runner.workspace }}/consumer-build
run: |
output="$(echo '42' | ./scn-consumer)"
test "$output" -eq 42
disabled-envs:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
flags:
- "-DSCN_DISABLE_IOSTREAM=ON"
- "-DSCN_DISABLE_LOCALE=ON"
- "-DSCN_DISABLE_REGEX=ON"
- "-DSCN_DISABLE_TYPE_FLOAT=ON -DSCN_DISABLE_TYPE_DOUBLE=ON -DSCN_DISABLE_TYPE_LONG_DOUBLE=ON"
- "-DSCN_DISABLE_FROM_CHARS=ON -DSCN_DISABLE_STRTOD=ON"
env:
CXX: g++-11
CMAKE_CXX_STANDARD: 17
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Checkout
uses: actions/checkout@v4
- name: Create Build Environment
run: |
mkdir ${{ runner.workspace }}/build
${APT_INSTALL} ccache
echo "${{ matrix.flags }}" > $GITHUB_WORKSPACE/flags.txt
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashfiles('$GITHUB_WORKSPACE/flags.txt') }}-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashfiles('$GITHUB_WORKSPACE/flags.txt') }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashfiles('$GITHUB_WORKSPACE/flags.txt') }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.sha }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-flags${{ hashfiles('$GITHUB_WORKSPACE/flags.txt') }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}
- name: Setup ccache
run: |
ccache --version
ccache --zero-stats
ccache --show-stats
ccache --show-config
- name: Run CMake
working-directory: ${{ runner.workspace }}/build
env:
CC: clang
CXX: clang++
run: |
cmake -G Ninja -DSCN_CI=ON ${{ matrix.flags }} \
$GITHUB_WORKSPACE
- name: Build
working-directory: ${{ runner.workspace }}/build
run: cmake --build . --target scn -- -k 0
- name: Show ccache stats
run: |
ccache --show-stats
regex-backends:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
#- engine: std
- engine: Boost
icu: OFF
- engine: Boost
icu: ON
# Disabled due to re2 building trouble
#- engine: re2
env:
CC: gcc-11
CXX: g++-11
CMAKE_CXX_STANDARD: 17
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Setup CMake and Ninja
uses: lukka/get-cmake@latest
- name: Install ccache
run: |
${APT_INSTALL} ccache
- name: Install ICU
if: matrix.icu == 'ON'
run: |
${APT_INSTALL} libicu-dev
- name: Install Boost
if: matrix.engine == 'Boost'
run: |
${APT_INSTALL} libboost-regex-dev
- name: Install re2
if: matrix.engine == 're2'
run: |
sudo apt-get remove -y libre2-dev
git clone https://github.com/abseil/abseil-cpp -b 20240116.1 --depth=1
cd abseil-cpp
mkdir build
cd build
cmake -G Ninja -DABSL_BUILD_TESTING=OFF -DABSL_ENABLE_INSTALL=ON ..
sudo cmake --build . --target install
cd ../..
git clone https://github.com/google/re2 -b 2024-04-01 --depth=1
cd re2
mkdir build
cd build
cmake -G Ninja ..
cmake --build .
sudo cmake --build . --target install
- name: Checkout
uses: actions/checkout@v4
- name: Load ccache
uses: actions/cache@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}-${{ github.sha }}
restore-keys: |
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-regex${{ matrix.engine }}-icu${{ matrix.icu }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.sha }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}-${{ github.base_ref }}
ccache-${{ github.workflow }}-ubuntu22.04-${{ env.CXX }}-std${{ env.CMAKE_CXX_STANDARD }}
- name: Setup ccache
run: |
ccache --version
ccache --zero-stats
ccache --show-stats
ccache --show-config
- name: Run CMake
run: |
mkdir ${{ runner.workspace }}/build
cd ${{ runner.workspace }}/build
if [[ ${{ matrix.engine }} == "Boost" ]]; then
icu_flag="-DSCN_REGEX_BOOST_USE_ICU=${{ matrix.icu }}"
fi
cmake -G Ninja -DSCN_CI=ON -DSCN_REGEX_BACKEND=${{ matrix.engine }} \
$icu_flag \
$GITHUB_WORKSPACE
- name: Build
working-directory: ${{ runner.workspace }}/build
run: cmake --build . -- -k 0
- name: Show ccache stats
run: |
ccache --show-stats
- name: Test
working-directory: ${{ runner.workspace }}/build
run: ctest --output-on-failure