+ exec + rm -rf /rpmbuild + mkdir -p /rpmbuild + su -c 'rpmbuild -ba /builddir/build/SPECS/python-pymssql.spec --define "debug_package %{nil}" --undefine _annotated_build --define "_missing_doc_files_terminate_build %{nil}" --define "_emacs_sitestartdir /usr/share/emacs/site-lisp/site-start.d" --define "_emacs_sitelispdir /usr/share/emacs/site-lisp" --nocheck ' mockbuild Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.rb65bt + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf pymssql-2.1.3 + /usr/bin/gzip -dc /builddir/build/SOURCES/pymssql-2.1.3.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd pymssql-2.1.3 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/bin/cat /builddir/build/SOURCES/python-pymssql-2.1.3-Cython.patch + /usr/bin/patch -s --fuzz=0 --no-backup-if-mismatch + /usr/bin/cat /builddir/build/SOURCES/python-pymssql-2.1.3-disable_setuptools_git.patch + /usr/bin/patch -s --fuzz=0 --no-backup-if-mismatch + /usr/bin/cat /builddir/build/SOURCES/python-pymssql-2.1.3-freetds_1.00.patch + /usr/bin/patch -s --fuzz=0 --no-backup-if-mismatch + rm -r freetds/ + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.tfLmQz + umask 022 + cd /builddir/build/BUILD + cd pymssql-2.1.3 + export PYMSSQL_DONT_BUILD_WITH_BUNDLED_FREETDS=1 + PYMSSQL_DONT_BUILD_WITH_BUNDLED_FREETDS=1 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 ' + /usr/bin/python2 setup.py build '--executable=/usr/bin/python2 -s' setup.py: platform.system() => 'Linux' setup.py: platform.architecture() => ('64bit', '') setup.py: platform.linux_distribution() => ('Fedora', '28', 'Rawhide') setup.py: platform.libc_ver() => ('glibc', '2.27') setup.py: Not using bundled FreeTDS setup.py: include_dirs = ['/usr/local/include'] setup.py: library_dirs = ['/usr/local/lib'] running build running build_ext cythoning _mssql.pyx to _mssql.c warning: _mssql.pyx:143:4: Exception already a builtin Cython type building '_mssql' extension creating build creating build/temp.linux-riscv64-2.7 gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fPIC -I/usr/local/include -I/usr/include/python2.7 -c _mssql.c -o build/temp.linux-riscv64-2.7/_mssql.o -DMSDBLIB creating build/lib.linux-riscv64-2.7 gcc -pthread -shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 build/temp.linux-riscv64-2.7/_mssql.o -L/usr/local/lib -L/usr/lib64 -lsybdb -lrt -lpython2.7 -o build/lib.linux-riscv64-2.7/_mssql.so cythoning pymssql.pyx to pymssql.c building 'pymssql' extension gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fPIC -I/usr/local/include -I/usr/include/python2.7 -c pymssql.c -o build/temp.linux-riscv64-2.7/pymssql.o -DMSDBLIB gcc -pthread -shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 build/temp.linux-riscv64-2.7/pymssql.o -L/usr/local/lib -L/usr/lib64 -lsybdb -lrt -lpython2.7 -o build/lib.linux-riscv64-2.7/pymssql.so + sleep 1 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 ' + /usr/bin/python3 setup.py build '--executable=/usr/bin/python3 -s' setup.py: platform.system() => 'Linux' setup.py: platform.architecture() => ('64bit', '') setup.py: platform.linux_distribution() => ('Fedora', '28', 'Rawhide') setup.py: platform.libc_ver() => ('glibc', '2.27') setup.py: Not using bundled FreeTDS setup.py: include_dirs = ['/usr/local/include'] setup.py: library_dirs = ['/usr/local/lib'] running build running build_ext building '_mssql' extension creating build/temp.linux-riscv64-3.6 gcc -pthread -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fPIC -I/usr/local/include -I/usr/include/python3.6m -c _mssql.c -o build/temp.linux-riscv64-3.6/_mssql.o -DMSDBLIB creating build/lib.linux-riscv64-3.6 gcc -pthread -shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -g -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 build/temp.linux-riscv64-3.6/_mssql.o -L/usr/local/lib -L/usr/lib64 -lsybdb -lrt -lpython3.6m -o build/lib.linux-riscv64-3.6/_mssql.cpython-36m-riscv64-linux-gnu.so building 'pymssql' extension gcc -pthread -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fPIC -I/usr/local/include -I/usr/include/python3.6m -c pymssql.c -o build/temp.linux-riscv64-3.6/pymssql.o -DMSDBLIB gcc -pthread -shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -g -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 build/temp.linux-riscv64-3.6/pymssql.o -L/usr/local/lib -L/usr/lib64 -lsybdb -lrt -lpython3.6m -o build/lib.linux-riscv64-3.6/pymssql.cpython-36m-riscv64-linux-gnu.so + sleep 1 + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.oe7scD + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 ++ dirname /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 + cd pymssql-2.1.3 + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 ' + /usr/bin/python2 setup.py install -O1 --skip-build --root /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 setup.py: platform.system() => 'Linux' setup.py: platform.architecture() => ('64bit', '') setup.py: platform.linux_distribution() => ('Fedora', '28', 'Rawhide') setup.py: platform.libc_ver() => ('glibc', '2.27') setup.py: Not using bundled FreeTDS setup.py: include_dirs = ['/usr/local/include'] setup.py: library_dirs = ['/usr/local/lib'] running install running install_lib creating /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr creating /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64 creating /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python2.7 creating /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python2.7/site-packages copying build/lib.linux-riscv64-2.7/pymssql.so -> /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python2.7/site-packages copying build/lib.linux-riscv64-2.7/_mssql.so -> /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python2.7/site-packages writing byte-compilation script '/tmp/tmpOP2NBw.py' /usr/bin/python2 -O /tmp/tmpOP2NBw.py removing /tmp/tmpOP2NBw.py running install_egg_info running egg_info creating pymssql.egg-info writing pymssql.egg-info/PKG-INFO writing top-level names to pymssql.egg-info/top_level.txt writing dependency_links to pymssql.egg-info/dependency_links.txt writing manifest file 'pymssql.egg-info/SOURCES.txt' reading manifest file 'pymssql.egg-info/SOURCES.txt' writing manifest file 'pymssql.egg-info/SOURCES.txt' Copying pymssql.egg-info to /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python2.7/site-packages/pymssql-2.1.3-py2.7.egg-info running install_scripts + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 ' + /usr/bin/python3 setup.py install -O1 --skip-build --root /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 setup.py: platform.system() => 'Linux' setup.py: platform.architecture() => ('64bit', '') setup.py: platform.linux_distribution() => ('Fedora', '28', 'Rawhide') setup.py: platform.libc_ver() => ('glibc', '2.27') setup.py: Not using bundled FreeTDS setup.py: include_dirs = ['/usr/local/include'] setup.py: library_dirs = ['/usr/local/lib'] running install running install_lib creating /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python3.6 creating /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python3.6/site-packages copying build/lib.linux-riscv64-3.6/_mssql.cpython-36m-riscv64-linux-gnu.so -> /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python3.6/site-packages copying build/lib.linux-riscv64-3.6/pymssql.cpython-36m-riscv64-linux-gnu.so -> /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python3.6/site-packages writing byte-compilation script '/tmp/tmpkhce9fyk.py' /usr/bin/python3 /tmp/tmpkhce9fyk.py removing /tmp/tmpkhce9fyk.py running install_egg_info running egg_info writing pymssql.egg-info/PKG-INFO writing dependency_links to pymssql.egg-info/dependency_links.txt writing top-level names to pymssql.egg-info/top_level.txt reading manifest file 'pymssql.egg-info/SOURCES.txt' writing manifest file 'pymssql.egg-info/SOURCES.txt' Copying pymssql.egg-info to /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python3.6/site-packages/pymssql-2.1.3-py3.6.egg-info running install_scripts + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig /sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip /usr/bin/strip + /usr/lib/rpm/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 Bytecompiling .py files below /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python2.7 using /usr/bin/python2.7 Bytecompiling .py files below /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/lib64/python3.6 using /usr/bin/python3.6 + /usr/lib/rpm/brp-python-hardlink + /usr/lib/rpm/redhat/brp-mangle-shebangs Processing files: python2-pymssql-2.1.3-2.fc28.riscv64 Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.fL2o6I + umask 022 + cd /builddir/build/BUILD + cd pymssql-2.1.3 + DOCDIR=/builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python2-pymssql + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python2-pymssql + cp -pr ChangeLog /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python2-pymssql + cp -pr README.rst /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python2-pymssql + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.tSuvEZ + umask 022 + cd /builddir/build/BUILD + cd pymssql-2.1.3 + LICENSEDIR=/builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/licenses/python2-pymssql + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/licenses/python2-pymssql + cp -pr LICENSE /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/licenses/python2-pymssql + exit 0 Provides: python-pymssql = 2.1.3-2.fc28 python-pymssql(riscv-64) = 2.1.3-2.fc28 python2-pymssql = 2.1.3-2.fc28 python2-pymssql(riscv-64) = 2.1.3-2.fc28 python2.7dist(pymssql) = 2.1.3 python2dist(pymssql) = 2.1.3 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: ld-linux-riscv64-lp64d.so.1()(64bit) ld-linux-riscv64-lp64d.so.1(GLIBC_2.27)(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.27)(64bit) libpthread.so.0()(64bit) libpython2.7.so.1.0()(64bit) librt.so.1()(64bit) libsybdb.so.5()(64bit) python(abi) = 2.7 rtld(GNU_HASH) Obsoletes: python-pymssql < 2.1.3-2.fc28 Processing files: python3-pymssql-2.1.3-2.fc28.riscv64 Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.lVJnjy + umask 022 + cd /builddir/build/BUILD + cd pymssql-2.1.3 + DOCDIR=/builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python3-pymssql + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python3-pymssql + cp -pr ChangeLog /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python3-pymssql + cp -pr README.rst /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/doc/python3-pymssql + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.xkl4to + umask 022 + cd /builddir/build/BUILD + cd pymssql-2.1.3 + LICENSEDIR=/builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/licenses/python3-pymssql + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/licenses/python3-pymssql + cp -pr LICENSE /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64/usr/share/licenses/python3-pymssql + exit 0 Provides: python3-pymssql = 2.1.3-2.fc28 python3-pymssql(riscv-64) = 2.1.3-2.fc28 python3.6dist(pymssql) = 2.1.3 python3dist(pymssql) = 2.1.3 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: ld-linux-riscv64-lp64d.so.1()(64bit) ld-linux-riscv64-lp64d.so.1(GLIBC_2.27)(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.27)(64bit) libpthread.so.0()(64bit) libpython3.6m.so.1.0()(64bit) librt.so.1()(64bit) libsybdb.so.5()(64bit) python(abi) = 3.6 rtld(GNU_HASH) Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 Wrote: /builddir/build/SRPMS/python-pymssql-2.1.3-2.fc28.src.rpm Wrote: /builddir/build/RPMS/riscv64/python2-pymssql-2.1.3-2.fc28.riscv64.rpm Wrote: /builddir/build/RPMS/riscv64/python3-pymssql-2.1.3-2.fc28.riscv64.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.7FZyPv + umask 022 + cd /builddir/build/BUILD + cd pymssql-2.1.3 + /usr/bin/rm -rf /builddir/build/BUILDROOT/python-pymssql-2.1.3-2.fc28.riscv64 + exit 0 + touch /buildok + cleanup + set +e + sync + sleep 5 + sync + poweroff Terminated ++ cleanup ++ set +e ++ sync ++ sleep 5 Terminated +++ cleanup +++ set +e +++ sync +++ sleep 5 +++ sync +++ poweroff