gentoo revision 1.1 1 #------------------------------------------------------------------------------
2 # $File: gentoo,v 1.2 2022/09/12 13:13:28 christos Exp $
3 # gentoo: file(1) magic for gentoo specific formats
4 #
5 # Summary: Gentoo ebuild Manifest files (GLEP 74)
6 # Reference: https://www.gentoo.org/glep/glep-0074.html
7 # Submitted by: Michal Gorny <mgorny (a] gentoo.org>
8 # Start by doing a fast check for the most common tags.
9 0 string AUX
10 >0 use gentoo-manifest
11 0 string DATA
12 >0 use gentoo-manifest
13 0 string DIST
14 >0 use gentoo-manifest
15 0 string EBUILD
16 >0 use gentoo-manifest
17 0 string MANIFEST
18 >0 use gentoo-manifest
19
20 # Manifest can be PGP-signed.
21 0 string -----BEGIN\040PGP\040SIGNED\040MESSAGE-----
22 >34 search/32 \n\n
23 >>&0 string AUX
24 >>>&0 use gentoo-manifest
25 >>&0 string DATA
26 >>>&0 use gentoo-manifest
27 >>&0 string DIST
28 >>>&0 use gentoo-manifest
29 >>&0 string EBUILD
30 >>>&0 use gentoo-manifest
31 >>&0 string MANIFEST
32 >>>&0 use gentoo-manifest
33
34 # Use a more detailed regex to verify that we were correct.
35 # <tag> <filename> <size> <hash-name> <hash-value>...
36 # (<tag>'s already been matched prior to calling)
37 0 name gentoo-manifest
38 >&0 regex [[:space:]]+[[:print:]]+[[:space:]]+[[:digit:]]+[[:space:]]+[[:alnum:]]+[[:space:]]+[[:xdigit:]]{32} Gentoo Manifest (GLEP 74)
39
40 # Summary: Gentoo ebuild and eclass files
41 # Reference: https://projects.gentoo.org/pms/8/pms.html
42 # Submitted by: Michal Gorny <mgorny (a] gentoo.org>
43 0 search/512 EAPI=
44 >0 regex .*\n[\040\t]*EAPI=["']? Gentoo ebuild
45 >>&0 regex [[:alnum:]+_.-]+ \b, EAPI %s
46
47 0 search/512 @ECLASS:\040 Gentoo eclass
48 >&0 string x %s
49
50 # Summary: Gentoo supplementary package and category metadata files
51 # Reference: https://www.gentoo.org/glep/glep-0068.html
52 # Submitted by: Michal Gorny <mgorny (a] gentoo.org>
53 0 string \<?xml
54 >0 search/512 \<catmetadata Gentoo category metadata file
55 >0 search/512 \<pkgmetadata Gentoo package metadata file
56
57 # Summary: Gentoo GLEP 78 binary package
58 # Reference: https://www.gentoo.org/glep/glep-0078.html
59 # Note: assumes the strict format
60 # Submitted by: Michal Gorny <mgorny (a] gentoo.org>
61
62 # GPKG uses ustar (or ustar-compatible GNU format) that starts with
63 # a <directory>/gpkg-1 file
64 257 string ustar
65 >0 search/100 /gpkg-1\0
66 >>0 regex [^/]+ Gentoo GLEP 78 (GPKG) binary package for "%s"
67 !:mime application/x-tar
68 !:ext tar
69 # the logic below requires the gpkg-1 file to be empty
70 >>>124 string 00000000000\0
71 # determine the compression used by looking at the second member name
72 >>>>512 search/100 .tar.
73 >>>>>&0 string gz\0 using gzip compression
74 >>>>>&0 string bz2\0 using bzip2 compression
75 >>>>>&0 string lz\0 using lzip compression
76 >>>>>&0 string lz4\0 using lz4 compression
77 >>>>>&0 string lzo\0 using lzo compression
78 >>>>>&0 string xz\0 using xz compression
79 >>>>>&0 string zst\0 using zstd compression
80 >>>>(636.o+1024) search/611 .sig\0 \b, signed
81