#------------------------------------------------------------------------------ # $File: gentoo,v 1.6 2024/02/11 15:39:59 christos Exp $ # gentoo: file(1) magic for gentoo specific formats # # Summary: Gentoo ebuild Manifest files (GLEP 74) # Reference: https://www.gentoo.org/glep/glep-0074.html # Submitted by: Michal Gorny # Start by doing a fast check for the most common tags. 0 string AUX\040 >0 use gentoo-manifest 0 string DATA\040 >0 use gentoo-manifest 0 string DIST\040 >0 use gentoo-manifest 0 string EBUILD\040 >0 use gentoo-manifest 0 string MANIFEST\040 >0 use gentoo-manifest # Manifest can be PGP-signed. 0 string -----BEGIN\040PGP\040SIGNED\040MESSAGE----- >34 search/32 \n\n >>&0 string AUX\040 >>>&0 use gentoo-manifest >>&0 string DATA\040 >>>&0 use gentoo-manifest >>&0 string DIST\040 >>>&0 use gentoo-manifest >>&0 string EBUILD\040 >>>&0 use gentoo-manifest >>&0 string MANIFEST\040 >>>&0 use gentoo-manifest # Use a more detailed regex to verify that we were correct. # ... # ('s already been matched prior to calling) 0 name gentoo-manifest >&0 regex [[:space:]]+[[:print:]]+[[:space:]]+[[:digit:]]+[[:space:]]+[[:alnum:]]+[[:space:]]+[[:xdigit:]]{32} Gentoo Manifest (GLEP 74) !:mime application/vnd.gentoo.manifest # Summary: Gentoo ebuild and eclass files # Reference: https://projects.gentoo.org/pms/8/pms.html # Submitted by: Michal Gorny 0 search/512 EAPI= >0 regex .*\n[\040\t]*EAPI=["']? Gentoo ebuild >>&0 regex [[:alnum:]+_.-]+ \b, EAPI %s !:mime application/vnd.gentoo.ebuild 0 search/512 @ECLASS:\040 Gentoo eclass >&0 string x %s !:mime application/vnd.gentoo.eclass # Summary: Gentoo supplementary package and category metadata files # Reference: https://www.gentoo.org/glep/glep-0068.html # Submitted by: Michal Gorny 0 string \0 search/512 \0 search/512 \ # GPKG uses ustar (or ustar-compatible GNU format) that starts with # a /gpkg-1 file 257 string ustar >0 search/100 /gpkg-1\0 >>0 regex [^/]+ Gentoo GLEP 78 (GPKG) binary package for "%s" !:mime application/vnd.gentoo.gpkg !:ext tar # the logic below requires the gpkg-1 file to be empty >>>124 string 00000000000\0 # determine the compression used by looking at the second member name >>>>512 search/100 .tar. >>>>>&0 string gz\0 using gzip compression >>>>>&0 string bz2\0 using bzip2 compression >>>>>&0 string lz\0 using lzip compression >>>>>&0 string lz4\0 using lz4 compression >>>>>&0 string lzo\0 using lzo compression >>>>>&0 string xz\0 using xz compression >>>>>&0 string zst\0 using zstd compression >>>>(636.o+1024) search/611 .sig\0 \b, signed