xref: /freebsd/release/scripts/mtree-to-plist.awk (revision 11f3da5655194c46b4acdde586ac1b8d6a196994)
124a110a1SBaptiste Daroussin#!/usr/bin/awk
224a110a1SBaptiste Daroussin/^[^#]/ {
324a110a1SBaptiste Daroussin	gsub(/^\./,"", $1)
41e53d87cSBaptiste Daroussin	uname = gname = mode = flags = tags = type = ""
5f4da3de6SBaptiste Daroussin	for (i=2; i<=NF; i++) {
6f4da3de6SBaptiste Daroussin		if ($i ~ /^uname=/) {
7f4da3de6SBaptiste Daroussin			uname=$i
8f1d1786eSBaptiste Daroussin			gsub(/uname=/, "", uname)
9f4da3de6SBaptiste Daroussin		} else if ($i ~ /^gname=/) {
10f4da3de6SBaptiste Daroussin			gname=$i
11f1d1786eSBaptiste Daroussin			gsub(/gname=/, "", gname)
12f4da3de6SBaptiste Daroussin		} else if ($i ~ /^mode=/) {
13f4da3de6SBaptiste Daroussin			mode=$i
14f1d1786eSBaptiste Daroussin			gsub(/mode=/,"", mode)
15f4da3de6SBaptiste Daroussin		} else if ($i ~ /^flags=/) {
16f4da3de6SBaptiste Daroussin			flags=$i
17f1d1786eSBaptiste Daroussin			gsub(/flags=/, "", flags)
18f4da3de6SBaptiste Daroussin		} else if ($i ~ /^tags=/) {
19f4da3de6SBaptiste Daroussin			tags=$i
20f1d1786eSBaptiste Daroussin			gsub(/tags=/, "", tags)
211e53d87cSBaptiste Daroussin		} else if ($i ~ /^type=dir/) {
221e53d87cSBaptiste Daroussin			type="dir"
23f4da3de6SBaptiste Daroussin		}
24f4da3de6SBaptiste Daroussin	}
253d98f473SGlen Barber	if (kernel != "") {
26b6e9a7a2SEmmanuel Vadot		if ($1 ~ /^\/boot\/dtb\//) {
27b6e9a7a2SEmmanuel Vadot			tags="package=dtb"
28b6e9a7a2SEmmanuel Vadot		} else {
293d98f473SGlen Barber			tags="package=kernel"
303d98f473SGlen Barber			if (_kernconf != "") {
313d98f473SGlen Barber				tags=tags""_kernconf
323d98f473SGlen Barber			}
333d98f473SGlen Barber		}
34b6e9a7a2SEmmanuel Vadot	}
35f4da3de6SBaptiste Daroussin	if (length(tags) == 0)
36f4da3de6SBaptiste Daroussin		next
37f4da3de6SBaptiste Daroussin	if (tags ~ /package=/) {
386b710cc6SBaptiste Daroussin		ext = pkgname = pkgend = ""
390a48fbc0SBaptiste Daroussin		split(tags, a, ",");
400a48fbc0SBaptiste Daroussin		for (i in a) {
410a48fbc0SBaptiste Daroussin			if (a[i] ~ /^package=/) {
420a48fbc0SBaptiste Daroussin				pkgname=a[i]
43b6e9a7a2SEmmanuel Vadot				if ($1 ~ /^\/boot\//) {
44b6e9a7a2SEmmanuel Vadot					if (kernel != "" && $1 ~ /^\/boot\/dtb\//)
45b6e9a7a2SEmmanuel Vadot						pkgname="dtb"
46*11f3da56SEmmanuel Vadot					else if ($1 !~ /^\/boot\/firmware\//)
47c016c891SEmmanuel Vadot						pkgname="bootloader"
48b6e9a7a2SEmmanuel Vadot				}
490a48fbc0SBaptiste Daroussin				gsub(/package=/, "", pkgname)
500a48fbc0SBaptiste Daroussin			} else if (a[i] == "config") {
510a48fbc0SBaptiste Daroussin				type="config"
52af5319f9SEd Maste			} else if (a[i] == "development" || a[i] == "debug" || a[i] == "docs") {
536b710cc6SBaptiste Daroussin				pkgend=a[i]
54f4da3de6SBaptiste Daroussin			} else {
556b710cc6SBaptiste Daroussin				if (ext != "")
566b710cc6SBaptiste Daroussin					ext=ext"-"a[i]
576b710cc6SBaptiste Daroussin				else
580a48fbc0SBaptiste Daroussin					ext=a[i]
59f4da3de6SBaptiste Daroussin			}
600a48fbc0SBaptiste Daroussin		}
616b710cc6SBaptiste Daroussin		if (ext != "") {
620a48fbc0SBaptiste Daroussin			pkgname=pkgname"-"ext
630a48fbc0SBaptiste Daroussin		}
646b710cc6SBaptiste Daroussin		if (pkgend != "") {
6544d81980SGlen Barber			if (pkgend == "docs") {
666b710cc6SBaptiste Daroussin				pkgname=pkgend
676b710cc6SBaptiste Daroussin			} else {
686b710cc6SBaptiste Daroussin				pkgname=pkgname"-"pkgend
696b710cc6SBaptiste Daroussin			}
706b710cc6SBaptiste Daroussin		}
710a48fbc0SBaptiste Daroussin	} else {
723d98f473SGlen Barber		print "No packages specified in line: $0"
730a48fbc0SBaptiste Daroussin		next
740a48fbc0SBaptiste Daroussin	}
75b6e9a7a2SEmmanuel Vadot	if (kernel != "" && pkgname != "dtb") {
763d98f473SGlen Barber		output="kernel"
773d98f473SGlen Barber		if (_kernconf != "") {
783d98f473SGlen Barber			output=output"."_kernconf
793d98f473SGlen Barber		}
803d98f473SGlen Barber		if ($1 ~ /^\/usr\/lib\/debug\/boot/) {
81697b271dSEd Maste			output=output"-dbg.plist"
823d98f473SGlen Barber		} else {
83b0bdd783SGlen Barber			output=output".plist"
843d98f473SGlen Barber		}
853d98f473SGlen Barber	} else {
860a48fbc0SBaptiste Daroussin		output=pkgname".plist"
873d98f473SGlen Barber	}
8824a110a1SBaptiste Daroussin
891e53d87cSBaptiste Daroussin	print "@"type"("uname","gname","mode","flags") " $1 > output
9024a110a1SBaptiste Daroussin}
91