On 08/04/2019 02:18 PM, Bruce Dubbs via blfs-dev wrote:
We currently have a ticket, http://wiki.linuxfromscratch.org/blfs/ticket/12304, that addresses a problem introduced by the 5.2 kernel headers.The problem is that the definitions for SIOCGSTAMP and SIOCGSTAMPNS were moved from bits/socket.h. I'll note here that the man page for sockets (man 7 socket) sill lists sys/socket.h as the only needed include file. So far we have identified the following packages as being identified. qt5 qtwebengine bluez firefox qemu There may be others we haven't found yet. What we have done so far is to substitute the magic number that equates to the missing values to get the packages to build: sed -i 's/SIOCGSTAMP/0x8906/' <filename> although this works as a crude workaround, it is a hack and there are other alternatives. In older kernels we have sys/socket.h which includes bits/socket.h In the 5.2 kernel a check on what additional include files are brought into a file when /sys/socket.h is specified, I find the following relevant files: # 1 "/usr/include/asm/sockios.h" 1 3 4 # 1 "/usr/include/asm-generic/sockios.h" 1 3 4 # 7 "/usr/include/asm-generic/socket.h" 2 3 4 # 1 "/usr/include/asm/socket.h" 2 3 4 # 355 "/usr/include/bits/socket.h" 2 3 4 # 1 "/usr/include/bits/types/struct_osockaddr.h" 1 3 4 SIOCGSTAMP is defined in <linux/sockios.h> as /* Get stamp (timeval) */ #define SIOCGSTAMP_NEW _IOR(SOCK_IOC_TYPE, 0x06, long long[2]) /* Get stamp (timespec #define SIOCGSTAMPNS_NEW _IOR(SOCK_IOC_TYPE, 0x07, long long[2]) #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__)) /* on 64-bit and x32, avoid the ?: operator */ #define SIOCGSTAMP SIOCGSTAMP_OLD #define SIOCGSTAMPNS SIOCGSTAMPNS_OLD #else #define SIOCGSTAMP ((sizeof(struct timeval)) == 8 ? \ SIOCGSTAMP_OLD : SIOCGSTAMP_NEW) #define SIOCGSTAMPNS ((sizeof(struct timespec)) == 8 ? \ SIOCGSTAMPNS_OLD : SIOCGSTAMPNS_NEW) #endif Which means that for a common 64 bit system, SIOCGSTAMP is defined as SIOCGSTAMP_OLD. The problem is that SIOCGSTAMP_OLD is defined in <asm-generic/sockios.h> and that is not brought into the system by default. I note here that asm-generic/sockios.h only consists of 7 #define statements. I see three options for this problem, none of which are optimal. 1. Continue to use the sed hack we have been using. Advantage: Simple sed. Disadvantages: Introduces a 'magic' number. Requires finding and changing all affected source files. 2. Use a different sed to add asm-generic/sockios.h as an include in the affected files. Advantage: A more conventional change. Disadvantages: The sed would have to be customized for placement in each affected file. Requires finding and changing all affected source files. 3. Modify bits/socket.h to include asm-generic/sockios.h in LFS. Advantages: Only requires a change in one place. Simple. Disadvantage: Requires modification of a glibc header which we have never done. Additionally asm-generic/sockios.h is a kernel file, but bits/socket.h is a glibc file. My current opinion is option 3 because it is the least intrusive change overall, but I am looking for feedback. -- Bruce
I concur, third option seems to me the best, "high level" applications/programs as qt, firefox shouldn't be aware about kernel/os details. such details pertain to glibc layer... -- seen "Linux from scratch" and looking for ISO files www.osukiss.org
smime.p7s
Description: S/MIME Cryptographic Signature
-- http://lists.linuxfromscratch.org/listinfo/blfs-dev FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page
