Compare commits
No commits in common. "rawhide" and "f18" have entirely different histories.
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,7 +1 @@
|
|||||||
/recordmydesktop-0.3.8.1.tar.gz
|
recordmydesktop-0.3.8.1.tar.gz
|
||||||
/gtk-recordmydesktop-0.3.8.tar.gz
|
|
||||||
/.project
|
|
||||||
/.build-*.log
|
|
||||||
/*.src.rpm
|
|
||||||
/x86_64
|
|
||||||
/noarch
|
|
||||||
|
@ -1,148 +0,0 @@
|
|||||||
Name: gtk-recordmydesktop
|
|
||||||
Version: 0.3.8
|
|
||||||
Release: 20%{?dist}
|
|
||||||
Summary: GUI Desktop session recorder with audio and video
|
|
||||||
|
|
||||||
License: GPLv2+
|
|
||||||
URL: https://recordmydesktop.sourceforge.net/
|
|
||||||
Source0: https://downloads.sourceforge.net/recordmydesktop/%{name}-%{version}.tar.gz
|
|
||||||
|
|
||||||
BuildArch: noarch
|
|
||||||
|
|
||||||
BuildRequires: gcc, m4, automake, autogen, autoconf
|
|
||||||
BuildRequires: pygtk2-devel
|
|
||||||
BuildRequires: desktop-file-utils, gettext
|
|
||||||
Requires: recordmydesktop >= %{version}
|
|
||||||
Requires: pygtk2
|
|
||||||
%if 0%{?fedora} >= 22
|
|
||||||
Requires: python27
|
|
||||||
%elif 0%{?centos} >= 8
|
|
||||||
Requires: python27
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%description
|
|
||||||
Graphical frontend for the recordmydesktop desktop session recorder.
|
|
||||||
|
|
||||||
recordMyDesktop is a desktop session recorder for linux that attempts to be
|
|
||||||
easy to use, yet also effective at its primary task.
|
|
||||||
|
|
||||||
As such, the program is separated in two parts; a simple command line tool that
|
|
||||||
performs the basic tasks of capturing and encoding and an interface that
|
|
||||||
exposes the program functionality in a usable way.
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup -q
|
|
||||||
|
|
||||||
# Use /var/tmp by default
|
|
||||||
sed -i -e 's@"/tmp"@"/var/tmp"@' src/rmdConfig.py src/rmdConfig.py.in
|
|
||||||
|
|
||||||
# Clean up interpreter shebang
|
|
||||||
sed -i -e 's@^#!/usr/bin/python$@#!/usr/bin/env python2@' src/gtk-recordMyDesktop.in
|
|
||||||
|
|
||||||
%build
|
|
||||||
%configure
|
|
||||||
make %{?_smp_mflags}
|
|
||||||
|
|
||||||
%install
|
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -c -p"
|
|
||||||
|
|
||||||
%find_lang gtk-recordMyDesktop
|
|
||||||
|
|
||||||
desktop-file-install --delete-original \
|
|
||||||
--dir $RPM_BUILD_ROOT%{_datadir}/applications \
|
|
||||||
--remove-category Application \
|
|
||||||
$RPM_BUILD_ROOT%{_datadir}/applications/%{name}.desktop
|
|
||||||
|
|
||||||
%files -f gtk-recordMyDesktop.lang
|
|
||||||
%doc AUTHORS COPYING README ChangeLog
|
|
||||||
%{_bindir}/*
|
|
||||||
%{python2_sitelib}/*
|
|
||||||
%{_datadir}/applications/*
|
|
||||||
%{_datadir}/pixmaps/*
|
|
||||||
|
|
||||||
%changelog
|
|
||||||
* Tue Feb 09 2021 James Edington <james@ishygddt.xyz> - 0.3.8-20
|
|
||||||
- Fix shebang for https://developers.redhat.com/blog/2018/11/14/python-in-rhel-8/#Why_not_just_Python
|
|
||||||
- Update BuildRequires
|
|
||||||
- Fix typos and clean up spec file
|
|
||||||
|
|
||||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8-19
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8-18
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-17
|
|
||||||
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
|
||||||
|
|
||||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8-16
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Nov 30 2015 Mat Booth <mat.booth@redhat.com> - 0.3.8-15
|
|
||||||
- Add missing R: pygtk2
|
|
||||||
|
|
||||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-14
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Apr 03 2015 Mat Booth <mat.booth@redhat.com> - 0.3.8-13
|
|
||||||
- Some minor spec file cleanup
|
|
||||||
|
|
||||||
* Fri Apr 03 2015 Mat Booth <mat.booth@redhat.com> - 0.3.8-12
|
|
||||||
- Use /var/tmp by default for writing large tmp files, rhbz#1060324
|
|
||||||
- http://fedoraproject.org/wiki/Features/tmp-on-tmpfs
|
|
||||||
|
|
||||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-11
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-10
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
|
||||||
|
|
||||||
* Tue Apr 23 2013 Jon Ciesla <limburgher@gmail.com> - 0.3.8-9
|
|
||||||
- Drop desktop vendor tag.
|
|
||||||
|
|
||||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-8
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-7
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-6
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Jun 13 2011 Mat Booth <fedora@matbooth.co.uk> 0.3.8-5
|
|
||||||
- Fix URL.
|
|
||||||
|
|
||||||
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-4
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 0.3.8-3
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
|
|
||||||
|
|
||||||
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8-2
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
|
||||||
|
|
||||||
* Wed Apr 01 2009 Sindre Pedersen Bjørdal <sindrepb@fedoraproject.org> - 0.3.8-1
|
|
||||||
- New upstream release
|
|
||||||
|
|
||||||
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.7.2-4
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0.3.7.2-3
|
|
||||||
- Rebuild for Python 2.6
|
|
||||||
|
|
||||||
* Wed May 28 2008 Sindre Pedersen Bjørdal <sindrepb@fedoraproject.org> - 0.3.7.2-2
|
|
||||||
- New upstream release
|
|
||||||
|
|
||||||
* Thu Jan 17 2008 Sindre Pedersen Bjørdal <foolish[AT]guezz.net> - 0.3.7-1
|
|
||||||
- New upstream release
|
|
||||||
* Sun Oct 21 2007 Sindre Pedersen Bjørdal <foolish[AT]guezz.net> - 0.3.6-1
|
|
||||||
- New version
|
|
||||||
- Update URL
|
|
||||||
* Sat Jun 02 2007 Sindre Pedersen Bjørdal <foolish[AT]guezz.net> - 0.3.4-1
|
|
||||||
- New version 0.3.4
|
|
||||||
* Tue Mar 06 2007 Sindre Pedersen Bjørdal <foolish[AT]guezz.net> - 0.3.3.1-2
|
|
||||||
- Preserve timestamps
|
|
||||||
* Mon Mar 05 2007 Sindre Pedersen Bjørdal <foolish[AT]guezz.net> - 0.3.3.1-2
|
|
||||||
- Add missing BR
|
|
||||||
* Sun Mar 04 2007 Sindre Pedersen Bjørdal <foolish[AT]guezz.net> - 0.3.3.1-1
|
|
||||||
- Initial build
|
|
2779
recordmydesktop-autoreconf.patch
Normal file
2779
recordmydesktop-autoreconf.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,35 +0,0 @@
|
|||||||
--- src/rmd_initialize_data.c.orig 2015-04-03 10:40:24.785080213 +0100
|
|
||||||
+++ src/rmd_initialize_data.c 2015-04-03 10:41:04.064554483 +0100
|
|
||||||
@@ -239,8 +239,8 @@
|
|
||||||
args->device = (char *) malloc(strlen(DEFAULT_AUDIO_DEVICE) + 1);
|
|
||||||
strcpy(args->device, DEFAULT_AUDIO_DEVICE);
|
|
||||||
|
|
||||||
- args->workdir = (char *) malloc(5);
|
|
||||||
- strcpy(args->workdir, "/tmp");
|
|
||||||
+ args->workdir = (char *) malloc(9);
|
|
||||||
+ strcpy(args->workdir, "/var/tmp");
|
|
||||||
|
|
||||||
args->pause_shortcut = (char *) malloc(15);
|
|
||||||
strcpy(args->pause_shortcut, "Control+Mod1+p");
|
|
||||||
--- src/rmd_parseargs.c.orig 2015-04-03 10:43:47.311369535 +0100
|
|
||||||
+++ src/rmd_parseargs.c 2015-04-03 10:44:02.364168064 +0100
|
|
||||||
@@ -123,7 +123,7 @@
|
|
||||||
|
|
||||||
"\t--compress-cache\tImage data are cached with light compression.\n"
|
|
||||||
"\t--workdir DIR\t\tLocation where a temporary directory"
|
|
||||||
- " will be created to hold project files(default $HOME).\n"
|
|
||||||
+ " will be created to hold project files(default /var/tmp).\n"
|
|
||||||
|
|
||||||
"\t--delay n[H|h|M|m]\tNumber of secs(default),minutes or hours"
|
|
||||||
" before capture starts(number can be float)\n"
|
|
||||||
--- doc/recordmydesktop.1.orig 2015-04-03 10:45:20.907116818 +0100
|
|
||||||
+++ doc/recordmydesktop.1 2015-04-03 10:45:33.132953184 +0100
|
|
||||||
@@ -419,7 +419,7 @@
|
|
||||||
.TP
|
|
||||||
.B
|
|
||||||
\-\-workdir DIR
|
|
||||||
- Location where a temporary directory will be created to hold project files(default /tmp).
|
|
||||||
+ Location where a temporary directory will be created to hold project files(default /var/tmp).
|
|
||||||
.br
|
|
||||||
.TP
|
|
||||||
.B
|
|
@ -1,47 +1,42 @@
|
|||||||
Name: recordmydesktop
|
Name: recordmydesktop
|
||||||
Version: 0.3.8.1
|
Version: 0.3.8.1
|
||||||
Release: 19%{?dist}
|
Release: 8%{?dist}
|
||||||
Summary: Desktop session recorder with audio and video
|
Summary: Desktop session recorder with audio and video
|
||||||
|
|
||||||
|
Group: Applications/Multimedia
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: https://recordmydesktop.sourceforge.net/
|
URL: http://recordmydesktop.sourceforge.net/
|
||||||
Source0: https://downloads.sourceforge.net/recordmydesktop/%{name}-%{version}.tar.gz
|
Source0: http://downloads.sourceforge.net/recordmydesktop/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
# from gentoo: http://bugs.gentoo.org/attachment.cgi?id=209904
|
# from gentoo: http://bugs.gentoo.org/attachment.cgi?id=209904
|
||||||
# 2010-01-15: Bug with proposed fix already upstream:
|
# 2010-01-15: Bug with proposed fix already upstream:
|
||||||
# http://sourceforge.net/tracker/?func=detail&aid=2889699&group_id=172357&atid=861428
|
# http://sourceforge.net/tracker/?func=detail&aid=2889699&group_id=172357&atid=861428
|
||||||
Patch0: recordmydesktop-shmstr.h-to-shmproto.h.patch
|
Patch0: recordmydesktop-shmstr.h-to-shmproto.h.patch
|
||||||
|
|
||||||
# Use default Alsa device instead of hardcoded device:
|
# Use default Alsa device instead of hardcoded device:
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=538853
|
# https://bugzilla.redhat.com/show_bug.cgi?id=538853
|
||||||
Patch1: recordmydesktop-ALSA-default.patch
|
Patch1: recordmydesktop-ALSA-default.patch
|
||||||
|
|
||||||
# Use sane theora defaults
|
# Use sane theora defaults
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=525155
|
# https://bugzilla.redhat.com/show_bug.cgi?id=525155
|
||||||
Patch2: recordmydesktop-sane-theora-defaults.patch
|
Patch2: recordmydesktop-sane-theora-defaults.patch
|
||||||
|
|
||||||
# Fix jack support detection
|
# Fix jack support detection
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=554292
|
# https://bugzilla.redhat.com/show_bug.cgi?id=554292
|
||||||
# Patch by debian
|
# Patch by debian
|
||||||
# 2010-01-15: patch submitted upstream:
|
# 2010-01-15: patch submitted upstream:
|
||||||
# https://sourceforge.net/tracker/?func=detail&aid=2894861&group_id=172357&atid=861428
|
# https://sourceforge.net/tracker/?func=detail&aid=2894861&group_id=172357&atid=861428
|
||||||
Patch3: recordmydesktop-fix-configure-ac-jack-support.patch
|
Patch3: recordmydesktop-fix-configure-ac-jack-support.patch
|
||||||
|
# diff after running "autoreconf"
|
||||||
|
Patch4: recordmydesktop-autoreconf.patch
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
# Use /var/tmp by default for writing large files
|
|
||||||
# See http://fedoraproject.org/wiki/Features/tmp-on-tmpfs
|
|
||||||
Patch4: recordmydesktop-var-tmp.patch
|
|
||||||
|
|
||||||
BuildRequires: gcc, make, autogen, autoconf
|
|
||||||
BuildRequires: libXdamage-devel, libSM-devel
|
BuildRequires: libXdamage-devel, libSM-devel
|
||||||
BuildRequires: libXext-devel, libXfixes-devel
|
BuildRequires: libXext-devel
|
||||||
BuildRequires: alsa-lib-devel, zlib-devel
|
BuildRequires: alsa-lib-devel, zlib-devel
|
||||||
BuildRequires: libogg-devel, libtheora-devel, libvorbis-devel, jack-audio-connection-kit-devel, alsa-lib-devel
|
BuildRequires: libtheora-devel, libvorbis-devel, jack-audio-connection-kit-devel
|
||||||
Requires: jack-audio-connection-kit-example-clients, alsa-lib
|
Requires: jack-audio-connection-kit-example-clients
|
||||||
Requires: libX11, libXdamage, libXfixes, libICE, libSM
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
recordMyDesktop is a desktop session recorder for linux that attempts to be
|
recordMyDesktop is a desktop session recorder for linux that attempts to be
|
||||||
easy to use, yet also effective at its primary task.
|
easy to use, yet also effective at it's primary task.
|
||||||
|
|
||||||
As such, the program is separated in two parts; a simple command line tool that
|
As such, the program is separated in two parts; a simple command line tool that
|
||||||
performs the basic tasks of capturing and encoding and an interface that
|
performs the basic tasks of capturing and encoding and an interface that
|
||||||
@ -57,63 +52,32 @@ exposes the program functionality in a usable way.
|
|||||||
%patch1 -p1 -b .ALSA-default
|
%patch1 -p1 -b .ALSA-default
|
||||||
%patch2 -p1 -b .sane-theora-defaults
|
%patch2 -p1 -b .sane-theora-defaults
|
||||||
%patch3 -p1 -b .fix-configure-ac-jack-support
|
%patch3 -p1 -b .fix-configure-ac-jack-support
|
||||||
%patch4
|
%patch4 -p1 -b .autoreconf
|
||||||
|
|
||||||
|
#chmod -x $RPM_BUILD_DIR/%{name}-%{version}/src/load_cache.c \
|
||||||
|
# $RPM_BUILD_DIR/%{name}-%{version}/include/rmdtypes.h \
|
||||||
|
# $RPM_BUILD_DIR/%{name}-%{version}/src/cache_frame.c
|
||||||
|
|
||||||
%build
|
%build
|
||||||
# re-run autoreconf to add support for aarch64
|
|
||||||
autoreconf -i -f
|
|
||||||
%configure
|
%configure
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -c -p"
|
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="%{__install} -c -p"
|
||||||
|
|
||||||
|
%clean
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
%files
|
%files
|
||||||
|
%defattr(-,root,root,-)
|
||||||
%doc AUTHORS COPYING README ChangeLog
|
%doc AUTHORS COPYING README ChangeLog
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%{_mandir}/man?/*
|
%{_mandir}/man?/*
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Feb 09 2021 James Edington <james@ishygddt.xyz> - 0.3.8-20
|
|
||||||
- Update BuildRequires
|
|
||||||
- Update Requires
|
|
||||||
- Fix typos and clean up spec file
|
|
||||||
|
|
||||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8.1-19
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8.1-18
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8.1-17
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.8.1-16
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
|
||||||
|
|
||||||
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-15
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
|
||||||
|
|
||||||
* Fri Apr 03 2015 Mat Booth <mat.booth@redhat.com> - 0.3.8.1-14
|
|
||||||
- Use /var/tmp by default for writing large tmp files, rhbz#1060324
|
|
||||||
- http://fedoraproject.org/wiki/Features/tmp-on-tmpfs
|
|
||||||
|
|
||||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-13
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-12
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-11
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
|
||||||
|
|
||||||
* Mon Apr 29 2013 Mat Booth <fedora@matbooth.co.uk> - 0.3.8.1-10
|
|
||||||
- Re-run autoreconf to add support for aarch64, rhbz #926435
|
|
||||||
|
|
||||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-9
|
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
|
||||||
|
|
||||||
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-8
|
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3.8.1-8
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user