git: 5425ba833257 - main - truncate(1): Fix cross-build CI failure due to missing fspacectl

Ka Ho Ng khng at FreeBSD.org
Tue Aug 24 09:59:46 UTC 2021


On 2021/8/24 5:18 PM, Ka Ho Ng wrote:
> The branch main has been updated by khng:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=5425ba8332571e57f9fe623346cb9d83293264d4
> 
> commit 5425ba8332571e57f9fe623346cb9d83293264d4
> Author:     Ka Ho Ng <khng at FreeBSD.org>
> AuthorDate: 2021-08-24 08:26:04 +0000
> Commit:     Ka Ho Ng <khng at FreeBSD.org>
> CommitDate: 2021-08-24 09:08:28 +0000
> 
>     truncate(1): Fix cross-build CI failure due to missing fspacectl
>     
>     For other platforms, fspacectl(2) is absent. This commit masks out the
>     calls to fspacectl(2) and replace them with a ENODEV errno.
>     
>     Sponsored by:   The FreeBSD Foundation
>     Differential Revision:  https://reviews.freebsd.org/D31619
> ---
>  tools/build/Makefile    |  5 +++++
>  tools/build/fcntl.h     | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  tools/build/fspacectl.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 97 insertions(+)
> 
> diff --git a/tools/build/Makefile b/tools/build/Makefile
> index 948a5f9dfdb2..3b49eb44475e 100644
> --- a/tools/build/Makefile
> +++ b/tools/build/Makefile
> @@ -88,6 +88,11 @@ INCS+=		strings.h
>  SRCS+=		explicit_bzero.c
>  .endif
>  
> +_WITH_FSPACECTL!= grep -c fspacectl ${HOST_INCLUDE_ROOT}/fcntl.h || true
> +.if ${_WITH_FSPACECTL} == 0
> +INCS+=		fcntl.h
> +SRCS+=		fspacectl.c
> +.endif
>  
>  .if exists(${HOST_INCLUDE_ROOT}/capsicum_helpers.h)
>  _WITH_CAPH_ENTER!= grep -c caph_enter ${HOST_INCLUDE_ROOT}/capsicum_helpers.h || true
> diff --git a/tools/build/fcntl.h b/tools/build/fcntl.h
> new file mode 100644
> index 000000000000..3f88a4bf73d3
> --- /dev/null
> +++ b/tools/build/fcntl.h
> @@ -0,0 +1,48 @@
> +/*-
> + * Copyright (c) 2016 Jilles Tjoelker <jilles at FreeBSD.org>
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + *
> + * $FreeBSD$
> + */
> +
> +#ifndef _LEGACY_SYS_FCNTL_H_
> +#define	_LEGACY_SYS_FCNTL_H_
> +
> +#include_next <fcntl.h>
> +
> +struct spacectl_range {
> +	off_t	r_offset;
> +	off_t	r_len;
> +};
> +
> +#define SPACECTL_DEALLOC	1
> +
> +#define SPACECTL_F_SUPPORTED	0
> +
> +__BEGIN_DECLS
> +int	fspacectl(int, int, const struct spacectl_range *, int,
> +	    struct spacectl_range *);
> +__END_DECLS
> +
> +#endif /* !_LEGACY_SYS_STAT_H_ */
> diff --git a/tools/build/fspacectl.c b/tools/build/fspacectl.c
> new file mode 100644
> index 000000000000..c17802c51e01
> --- /dev/null
> +++ b/tools/build/fspacectl.c
> @@ -0,0 +1,44 @@
> +/*-
> + * Copyright (c) 2021 The FreeBSD Foundation
> + *
> + * This software was developed by Ka Ho Ng <khng at FreeBSD.org>
> + * under sponsorship from the FreeBSD Foundation.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + */
> +
> +#include <sys/cdefs.h>
> +__FBSDID("$FreeBSD$");
> +
> +#include <errno.h>
> +#include <fcntl.h>
> +
> +/*
> + * This is currently a stub implementation of fspacectl(2).
> + */
> +int
> +fspacectl(int fd, int cmd, const struct spacectl_range *rqsr, int flags,
> +    struct spacectl_range *rmsr)
> +{
> +        errno = ENOSYS;
> +        return (-1);
> +}
> \ No newline at end of file
> 
s/ENODEV/ENOSYS

Ka Ho


More information about the dev-commits-src-all mailing list