Closed aadcg closed 1 year ago
Can you run that command in a terminal ? I'd like to see the error message.
Sure!
$ cc -o /data/data/com.termux/files/home/.cache/common-lisp/sbcl-2.3.0-linux-arm64/data/data/com.termux/files/home/common-lisp/iolib/src/sockets/grovel__grovel-tmpIO5N7K88.o -c -g -Wall -Wundef -Wsign-compare -Wpointer-arith -O3 -std=gnu99 -fPIC -I/data/data/com.termux/files/home/common-lisp/cffi/ /data/data/com.termux/files/home/.cache/common-lisp/sbcl-2.3.0-linux-arm64/data/data/com.termux/files/home/common-lisp/iolib/src/sockets/grovel__grovel.c
In file included from /data/data/com.termux/files/home/.cache/common-lisp/sbcl-2.3.0-linux-arm64/data/data/com.termux/files/home/common-lisp/iolib/src/sockets/grovel__grovel.c:14:
/data/data/com.termux/files/usr/include/linux/errqueue.h:54:21: error: array has incomplete element type 'struct timespec'
struct timespec ts[3];
^
/data/data/com.termux/files/usr/include/sys/socket.h:46:8: note: forward declaration of 'struct timespec'
struct timespec;
^
/data/data/com.termux/files/home/.cache/common-lisp/sbcl-2.3.0-linux-arm64/data/data/com.termux/files/home/common-lisp/iolib/src/sockets/grovel__grovel.c:22:7: warning: unused variable 'autotype_tmp' [-Wunused-variable]
int autotype_tmp;
^
1 warning and 1 error generated.
Find below the relevant files.
sys/socket.h
/*
* Copyright (C) 2008 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * 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 COPYRIGHT HOLDERS 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
* COPYRIGHT OWNER 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.
*/
#ifndef _SYS_SOCKET_H_
#define _SYS_SOCKET_H_
#include <sys/cdefs.h>
#include <sys/types.h>
#include <asm/fcntl.h>
#include <asm/socket.h>
#include <linux/sockios.h>
#include <linux/uio.h>
#include <linux/types.h>
#include <linux/compiler.h>
#include <bits/sa_family_t.h>
__BEGIN_DECLS
struct timespec;
[...]
linux/errqueue.h
/****************************************************************************
****************************************************************************
***
*** This header was automatically generated from a Linux kernel header
*** of the same name, to make information necessary for userspace to
*** call into the kernel available to libc. It contains only constants,
*** structures, and macros generated from the original header, and thus,
*** contains no copyrightable information.
***
*** To edit the content of this header, modify the corresponding
*** source file (e.g. under external/kernel-headers/original/) then
*** run bionic/libc/kernel/tools/update_all.py
***
*** Any manual change here will be lost the next time this script will
*** be run. You've been warned!
***
****************************************************************************
****************************************************************************/
#ifndef _UAPI_LINUX_ERRQUEUE_H
#define _UAPI_LINUX_ERRQUEUE_H
#include <linux/types.h>
#include <linux/time_types.h>
struct sock_ee_data_rfc4884 {
__u16 len;
__u8 flags;
__u8 reserved;
};
struct sock_extended_err {
__u32 ee_errno;
__u8 ee_origin;
__u8 ee_type;
__u8 ee_code;
__u8 ee_pad;
__u32 ee_info;
union {
__u32 ee_data;
struct sock_ee_data_rfc4884 ee_rfc4884;
};
};
#define SO_EE_ORIGIN_NONE 0
#define SO_EE_ORIGIN_LOCAL 1
#define SO_EE_ORIGIN_ICMP 2
#define SO_EE_ORIGIN_ICMP6 3
#define SO_EE_ORIGIN_TXSTATUS 4
#define SO_EE_ORIGIN_ZEROCOPY 5
#define SO_EE_ORIGIN_TXTIME 6
#define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
#define SO_EE_OFFENDER(ee) ((struct sockaddr *) ((ee) + 1))
#define SO_EE_CODE_ZEROCOPY_COPIED 1
#define SO_EE_CODE_TXTIME_INVALID_PARAM 1
#define SO_EE_CODE_TXTIME_MISSED 2
#define SO_EE_RFC4884_FLAG_INVALID 1
struct scm_timestamping {
struct timespec ts[3];
};
struct scm_timestamping64 {
struct __kernel_timespec ts[3];
};
enum {
SCM_TSTAMP_SND,
SCM_TSTAMP_SCHED,
SCM_TSTAMP_ACK,
};
#endif
I believe commit 010b7a6 fixes the issue. Can you try it ?
Yes, that fixes it! Thank you @sionescu :)
Now that
libfixposix
landed on Termux, calling(asdf:load-system "iolib")
should theoretically go smooth. Sadly, it failed as it can be seen below. Any ideas? Thanks.