Import from AlmaLinux stable repository
This commit is contained in:
parent
861cabccdd
commit
b99006f1a2
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/v4.1.0.tar.gz
|
SOURCES/intel-cmt-cat-23.11.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
2cf7d79b6f9cdfd74d1c14679a5f2a49174f0ed5 SOURCES/v4.1.0.tar.gz
|
77a458ff99c6b1e8a7da76522a14f4311fbdf70f SOURCES/intel-cmt-cat-23.11.tar.gz
|
||||||
|
64
SOURCES/0001-allow-debian-flags-to-be-added.patch
Normal file
64
SOURCES/0001-allow-debian-flags-to-be-added.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
Description: Hard code in hardening options
|
||||||
|
Forwarded: not-needed
|
||||||
|
Author: Colin Ian King <colin.i.king@gmail.com>
|
||||||
|
|
||||||
|
Index: intel-cmt-cat-23.11/lib/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- intel-cmt-cat-23.11.orig/lib/Makefile 2023-11-01 14:00:13.000000000 +0100
|
||||||
|
+++ intel-cmt-cat-23.11/lib/Makefile 2024-02-21 08:55:18.864718246 +0100
|
||||||
|
@@ -37,8 +37,8 @@
|
||||||
|
VERSION = 5.0.0
|
||||||
|
SO_VERSION = 5
|
||||||
|
SHARED ?= y
|
||||||
|
-LDFLAGS = -L. -lpthread -z noexecstack -z relro -z now
|
||||||
|
-CFLAGS = -pthread -I./ -D_GNU_SOURCE \
|
||||||
|
+LDFLAGS += -L. -lpthread -z noexecstack -z relro -z now
|
||||||
|
+CFLAGS += -pthread -I./ -D_GNU_SOURCE \
|
||||||
|
-W -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes \
|
||||||
|
-Wmissing-declarations -Wold-style-definition -Wpointer-arith \
|
||||||
|
-Wcast-qual -Wundef -Wwrite-strings \
|
||||||
|
Index: intel-cmt-cat-23.11/pqos/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- intel-cmt-cat-23.11.orig/pqos/Makefile 2023-11-01 14:00:13.000000000 +0100
|
||||||
|
+++ intel-cmt-cat-23.11/pqos/Makefile 2024-02-21 08:55:18.865718244 +0100
|
||||||
|
@@ -36,9 +36,9 @@
|
||||||
|
|
||||||
|
OBJDIR = obj
|
||||||
|
LIBDIR ?= ../lib
|
||||||
|
-LDFLAGS = -L$(LIBDIR) -pie -z noexecstack -z relro -z now
|
||||||
|
+LDFLAGS += -L$(LIBDIR) -pie -z noexecstack -z relro -z now
|
||||||
|
LDLIBS = -lpqos -lpthread
|
||||||
|
-CFLAGS = -I$(LIBDIR) \
|
||||||
|
+CFLAGS += -I$(LIBDIR) \
|
||||||
|
-W -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes \
|
||||||
|
-Wmissing-declarations -Wold-style-definition -Wpointer-arith \
|
||||||
|
-Wcast-qual -Wundef -Wwrite-strings \
|
||||||
|
Index: intel-cmt-cat-23.11/rdtset/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- intel-cmt-cat-23.11.orig/rdtset/Makefile 2023-11-01 14:00:13.000000000 +0100
|
||||||
|
+++ intel-cmt-cat-23.11/rdtset/Makefile 2024-02-21 08:55:18.866718241 +0100
|
||||||
|
@@ -35,9 +35,9 @@
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
LIBDIR ?= ../lib
|
||||||
|
-LDFLAGS = -L$(LIBDIR) -pie -z noexecstack -z relro -z now
|
||||||
|
+LDFLAGS += -L$(LIBDIR) -pie -z noexecstack -z relro -z now
|
||||||
|
LDLIBS = -lpqos -lpthread
|
||||||
|
-CFLAGS = -I$(LIBDIR) \
|
||||||
|
+CFLAGS += -I$(LIBDIR) \
|
||||||
|
-W -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes \
|
||||||
|
-Wmissing-declarations -Wold-style-definition -Wpointer-arith \
|
||||||
|
-Wcast-qual -Wundef -Wwrite-strings \
|
||||||
|
Index: intel-cmt-cat-23.11/tools/membw/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- intel-cmt-cat-23.11.orig/tools/membw/Makefile 2023-11-01 14:00:13.000000000 +0100
|
||||||
|
+++ intel-cmt-cat-23.11/tools/membw/Makefile 2024-02-21 08:55:18.866718241 +0100
|
||||||
|
@@ -42,7 +42,7 @@
|
||||||
|
BIN_DIR = $(PREFIX)/bin
|
||||||
|
MAN_DIR = $(PREFIX)/man/man8
|
||||||
|
|
||||||
|
-CFLAGS=-W -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes \
|
||||||
|
+CFLAGS += -W -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes \
|
||||||
|
-Wmissing-declarations -Wold-style-definition -Wpointer-arith \
|
||||||
|
-Wcast-qual -Wundef -Wwrite-strings \
|
||||||
|
-Wformat -Wformat-security -fstack-protector -fPIE \
|
@ -24,7 +24,7 @@
|
|||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
%global githubname intel-cmt-cat
|
%global githubname intel-cmt-cat
|
||||||
%global githubver 4.1.0
|
%global githubver 23.11
|
||||||
|
|
||||||
%if %{defined githubsubver}
|
%if %{defined githubsubver}
|
||||||
%global githubfull %{githubname}-%{githubver}.%{githubsubver}
|
%global githubfull %{githubname}-%{githubver}.%{githubsubver}
|
||||||
@ -38,16 +38,19 @@
|
|||||||
|
|
||||||
Summary: Provides command line interface to CMT, MBM, CAT, CDP and MBA technologies
|
Summary: Provides command line interface to CMT, MBM, CAT, CDP and MBA technologies
|
||||||
Name: %{githubname}
|
Name: %{githubname}
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
Version: %{githubver}
|
Version: %{githubver}
|
||||||
License: BSD
|
License: BSD-3-Clause
|
||||||
ExclusiveArch: x86_64 i686 i586
|
ExclusiveArch: x86_64 i686 i586
|
||||||
%if %{defined githubsubver}
|
%if %{defined githubsubver}
|
||||||
Source: https://github.com/01org/%{githubname}/archive/v%{githubver}.%{githubsubver}.tar.gz
|
Source: https://github.com/intel/%{githubname}/archive/%{githubname}-%{githubver}.%{githubsubver}.tar.gz
|
||||||
%else
|
%else
|
||||||
Source: https://github.com/01org/%{githubname}/archive/v%{githubver}.tar.gz
|
Source: https://github.com/intel/%{githubname}/archive/%{githubname}-%{githubver}.tar.gz
|
||||||
%endif
|
%endif
|
||||||
URL: https://github.com/01org/%{githubname}
|
|
||||||
|
Patch0001: 0001-allow-debian-flags-to-be-added.patch
|
||||||
|
|
||||||
|
URL: https://github.com/intel/%{githubname}
|
||||||
BuildRequires: gcc, make
|
BuildRequires: gcc, make
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -78,19 +81,23 @@ and Code Data Prioratization (CDP).
|
|||||||
The package includes library, header file and sample code.
|
The package includes library, header file and sample code.
|
||||||
|
|
||||||
For additional information please refer to:
|
For additional information please refer to:
|
||||||
https://github.com/01org/%{githubname}
|
https://github.com/intel/%{githubname}
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -n %{githubfull}
|
%autosetup -p1 -n %{githubfull}
|
||||||
|
|
||||||
%ldconfig_scriptlets
|
%ldconfig_scriptlets
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make %{?_smp_mflags}
|
# RHEL 9's baseline is HSW/HSX, which has neither AVX-512 nor CLWB
|
||||||
|
make %{?_smp_mflags} HAS_AVX512=0 HAS_CLWB=0
|
||||||
|
|
||||||
%install
|
%install
|
||||||
# Not doing make install as it strips the symbols.
|
# Not doing make install as it strips the symbols.
|
||||||
# Using files from the build directory.
|
# Using files from the build directory.
|
||||||
|
|
||||||
|
# pqos-* and rdtest are in %{_sbin} in Fedora now, but they are in %{_bin}
|
||||||
|
# in RHEL 9 originally, so, preserving it
|
||||||
install -d %{buildroot}/%{_bindir}
|
install -d %{buildroot}/%{_bindir}
|
||||||
install -s %{_builddir}/%{githubfull}/pqos/pqos %{buildroot}/%{_bindir}
|
install -s %{_builddir}/%{githubfull}/pqos/pqos %{buildroot}/%{_bindir}
|
||||||
install %{_builddir}/%{githubfull}/pqos/pqos-os %{buildroot}/%{_bindir}
|
install %{_builddir}/%{githubfull}/pqos/pqos-os %{buildroot}/%{_bindir}
|
||||||
@ -99,8 +106,8 @@ sed -i "1s/.*/\#!\/usr\/bin\/bash/" %{buildroot}/%{_bindir}/pqos-*
|
|||||||
|
|
||||||
install -d %{buildroot}/%{_mandir}/man8
|
install -d %{buildroot}/%{_mandir}/man8
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/pqos/pqos.8 %{buildroot}/%{_mandir}/man8
|
install -m 0644 %{_builddir}/%{githubfull}/pqos/pqos.8 %{buildroot}/%{_mandir}/man8
|
||||||
ln -sf %{_mandir}/man8/pqos.8 %{buildroot}/%{_mandir}/man8/pqos-os.8
|
ln -sf pqos.8 %{buildroot}/%{_mandir}/man8/pqos-os.8
|
||||||
ln -sf %{_mandir}/man8/pqos.8 %{buildroot}/%{_mandir}/man8/pqos-msr.8
|
ln -sf pqos.8 %{buildroot}/%{_mandir}/man8/pqos-msr.8
|
||||||
|
|
||||||
install -d %{buildroot}/%{_bindir}
|
install -d %{buildroot}/%{_bindir}
|
||||||
install -s %{_builddir}/%{githubfull}/rdtset/rdtset %{buildroot}/%{_bindir}
|
install -s %{_builddir}/%{githubfull}/rdtset/rdtset %{buildroot}/%{_bindir}
|
||||||
@ -108,14 +115,22 @@ install -s %{_builddir}/%{githubfull}/rdtset/rdtset %{buildroot}/%{_bindir}
|
|||||||
install -d %{buildroot}/%{_mandir}/man8
|
install -d %{buildroot}/%{_mandir}/man8
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/rdtset/rdtset.8 %{buildroot}/%{_mandir}/man8
|
install -m 0644 %{_builddir}/%{githubfull}/rdtset/rdtset.8 %{buildroot}/%{_mandir}/man8
|
||||||
|
|
||||||
install -d %{buildroot}/%{_licensedir}/%{name}-%{version}
|
# membw is istalled in %{_bindir} in Fedora, but the man page
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/LICENSE %{buildroot}/%{_licensedir}/%{name}-%{version}
|
# is in the section 8
|
||||||
|
install -d %{buildroot}/%{_bindir}
|
||||||
|
install -s %{_builddir}/%{githubfull}/tools/membw/membw %{buildroot}/%{_bindir}
|
||||||
|
|
||||||
|
install -d %{buildroot}/%{_mandir}/man8
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/tools/membw/membw.8 %{buildroot}/%{_mandir}/man8
|
||||||
|
|
||||||
|
install -d %{buildroot}/%{_licensedir}/%{name}
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/LICENSE %{buildroot}/%{_licensedir}/%{name}
|
||||||
|
|
||||||
# Install the library
|
# Install the library
|
||||||
install -d %{buildroot}/%{_libdir}
|
install -d %{buildroot}/%{_libdir}
|
||||||
install -s %{_builddir}/%{githubfull}/lib/libpqos.so.* %{buildroot}/%{_libdir}
|
install -s %{_builddir}/%{githubfull}/lib/libpqos.so.* %{buildroot}/%{_libdir}
|
||||||
cp -a %{_builddir}/%{githubfull}/lib/libpqos.so %{buildroot}/%{_libdir}
|
cp -a %{_builddir}/%{githubfull}/lib/libpqos.so %{buildroot}/%{_libdir}
|
||||||
cp -a %{_builddir}/%{githubfull}/lib/libpqos.so.4 %{buildroot}/%{_libdir}
|
cp -a %{_builddir}/%{githubfull}/lib/libpqos.so.5 %{buildroot}/%{_libdir}
|
||||||
|
|
||||||
# Install the header file
|
# Install the header file
|
||||||
install -d %{buildroot}/%{_includedir}
|
install -d %{buildroot}/%{_includedir}
|
||||||
@ -129,6 +144,7 @@ install -d %{buildroot}/%{_usrsrc}/%{githubfull}/c
|
|||||||
|
|
||||||
install -d %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
install -d %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/Makefile %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/Makefile %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/README %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/reset_app.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/reset_app.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/allocation_app_l2cat.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/allocation_app_l2cat.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/allocation_app_l3cat.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/allocation_app_l3cat.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CAT_MBA
|
||||||
@ -137,8 +153,18 @@ install -m 0644 %{_builddir}/%{githubfull}/examples/c/CAT_MBA/association_app.c
|
|||||||
|
|
||||||
install -d %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
install -d %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CMT_MBM/Makefile %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CMT_MBM/Makefile %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CMT_MBM/README %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
||||||
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CMT_MBM/monitor_app.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/CMT_MBM/monitor_app.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/CMT_MBM
|
||||||
|
|
||||||
|
install -d %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/Makefile %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/README %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/dlock.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/dlock.h %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/pseudo_lock.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/tsc.c %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
install -m 0644 %{_builddir}/%{githubfull}/examples/c/PSEUDO_LOCK/tsc.h %{buildroot}/%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%{_bindir}/pqos
|
%{_bindir}/pqos
|
||||||
%{_bindir}/pqos-os
|
%{_bindir}/pqos-os
|
||||||
@ -148,27 +174,41 @@ install -m 0644 %{_builddir}/%{githubfull}/examples/c/CMT_MBM/monitor_app.c %{bu
|
|||||||
%{_mandir}/man8/pqos-msr.8.gz
|
%{_mandir}/man8/pqos-msr.8.gz
|
||||||
%{_bindir}/rdtset
|
%{_bindir}/rdtset
|
||||||
%{_mandir}/man8/rdtset.8.gz
|
%{_mandir}/man8/rdtset.8.gz
|
||||||
|
%{_bindir}/membw
|
||||||
|
%{_mandir}/man8/membw.8.gz
|
||||||
%{_libdir}/libpqos.so.*
|
%{_libdir}/libpqos.so.*
|
||||||
|
|
||||||
%{!?_licensedir:%global license %%doc}
|
%{!?_licensedir:%global license %%doc}
|
||||||
%license %{_licensedir}/%{name}-%{version}/LICENSE
|
%license %{_licensedir}/%{name}/LICENSE
|
||||||
%doc ChangeLog README
|
%doc ChangeLog README.md
|
||||||
|
|
||||||
%files -n intel-cmt-cat-devel
|
%files -n intel-cmt-cat-devel
|
||||||
%{_libdir}/libpqos.so
|
%{_libdir}/libpqos.so
|
||||||
%{_libdir}/libpqos.so.4
|
%{_libdir}/libpqos.so.5
|
||||||
%{_includedir}/pqos.h
|
%{_includedir}/pqos.h
|
||||||
%{_usrsrc}/%{githubfull}/c/CAT_MBA/Makefile
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/Makefile
|
||||||
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/README
|
||||||
%{_usrsrc}/%{githubfull}/c/CAT_MBA/reset_app.c
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/reset_app.c
|
||||||
%{_usrsrc}/%{githubfull}/c/CAT_MBA/association_app.c
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/association_app.c
|
||||||
%{_usrsrc}/%{githubfull}/c/CAT_MBA/allocation_app_l2cat.c
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/allocation_app_l2cat.c
|
||||||
%{_usrsrc}/%{githubfull}/c/CAT_MBA/allocation_app_l3cat.c
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/allocation_app_l3cat.c
|
||||||
%{_usrsrc}/%{githubfull}/c/CAT_MBA/allocation_app_mba.c
|
%{_usrsrc}/%{githubfull}/c/CAT_MBA/allocation_app_mba.c
|
||||||
%{_usrsrc}/%{githubfull}/c/CMT_MBM/Makefile
|
%{_usrsrc}/%{githubfull}/c/CMT_MBM/Makefile
|
||||||
|
%{_usrsrc}/%{githubfull}/c/CMT_MBM/README
|
||||||
%{_usrsrc}/%{githubfull}/c/CMT_MBM/monitor_app.c
|
%{_usrsrc}/%{githubfull}/c/CMT_MBM/monitor_app.c
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/Makefile
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/README
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/dlock.c
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/dlock.h
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/pseudo_lock.c
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/tsc.c
|
||||||
|
%{_usrsrc}/%{githubfull}/c/PSEUDO_LOCK/tsc.h
|
||||||
%doc %{_usrsrc}/%{githubfull}/LICENSE
|
%doc %{_usrsrc}/%{githubfull}/LICENSE
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Feb 12 2024 Eugene Syromiatnikov <esyr@redhat.com> - 23.11-1
|
||||||
|
- Rebase to 23.11 (RHEL-22729, RHEL-25781)
|
||||||
|
|
||||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 4.1.0-3
|
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 4.1.0-3
|
||||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
Related: rhbz#1991688
|
Related: rhbz#1991688
|
||||||
|
Loading…
Reference in New Issue
Block a user