File pre_checkin.pl of Package dtb-source
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my $spec_in = "dtb.spec.in";
# DTB packages names
my @armv7l_package_list = (
['dtb-omap3', '*omap3*.dts', "TI OMAP3 based systems"],
['dtb-omap4', '*omap4*.dts', "TI OMAP4 based systems"],
['dtb-omap5', '*omap5*.dts', "TI OMAP5 based systems"],
['dtb-am335x', '*am335x*.dts', "TI AM335x based systems"],
['dtb-keystone', 'k2hk-evm.dts', "TI Keystone based systems"],
['dtb-exynos4', '*exynos4*.dts', "Samsung Exynos4 based systems"],
['dtb-exynos5', '*exynos5*.dts', "Samsung Exynos5 based systems"],
['dtb-imx5', '*imx5*.dts', "Freescale i.MX51 and i.MX53 based systems"],
['dtb-imx6', '*imx6*.dts', "Freescale i.MX6 based systems"],
['dtb-vf6', '*vf6*.dts', "Freescale Vybrid VF6xx based systems"],
['dtb-tegra2', '*tegra2*.dts', "NVidia Tegra2 based systems"],
['dtb-tegra3', '*tegra3*.dts', "NVidia Tegra3 based systems"],
['dtb-tegra114', 'tegra114-*.dts', "NVidia Tegra4 based systems"],
['dtb-tegra124', 'tegra124-*.dts', "NVidia Tegra K1 based systems"],
['dtb-sun4i', '*sun4i*.dts', "Allwinner sun4i based systems"],
['dtb-sun5i', '*sun5i*.dts', "Allwinner sun5i based systems"],
['dtb-sun6i', '*sun6i*.dts', "Allwinner sun6i based systems"],
['dtb-sun7i', '*sun7i*.dts', "Allwinner sun7i based systems"],
['dtb-sun8i', '*sun8i*.dts', "Allwinner sun8i based systems"],
['dtb-sun9i', '*sun9i*.dts', "Allwinner sun9i based systems"],
['dtb-xenvm', '*xenvm*.dts', "Xen virtual machines"],
['dtb-vexpress', 'vexpress*.dts', "ARM versatile express machines"],
['dtb-ste', 'ste*.dts', "ST Ericsson based systems"],
['dtb-dove', 'dove*.dts', "Marvell dove based systems"],
['dtb-armada-370', 'armada-370*.dts', "Armada 370 based systems"],
['dtb-armada-xp', 'armada-xp*.dts', "Armada XP based systems"],
['dtb-rk3', 'rk3*.dts', "Rockchip RK3xxx based systems"],
['dtb-qcom', 'qcom-*.dts', "Qualcomm Snapdragon based systems"],
['dtb-zynq', 'zynq-*.dts', "Xilinx Zynq based systems"],
);
# DTB packages names
my @armv6l_package_list = (
['dtb-bcm2835', 'bcm2835*.dts', "Raspberry PI B"],
);
# DTB packages names
my @aarch64_package_list = (
['dtb-apm-mustang', 'apm/apm-mustang.dts', "APM X-Gene Mustang board"],
['dtb-thunder-88xx', 'cavium/thunder-88xx.dts', "Cavium ThunderX CN88XX"],
['dtb-foundation-v8', 'arm/foundation-v8.dts', "Foundation-V8A (compatible with Vexpress64)"],
['dtb-rtsm_ve-aemv8a', 'arm/rtsm_ve-aemv8a.dts', "RTSM VE AEMv8A board (compatible with Vexpress64)"],
);
sub generate_spec($$$)
{
my ($main_package, $exclusive_arch, $package_list) = @_;
open (SPEC, ">$main_package.spec") or die "Unable to open $main_package.spec.\n";
open (TEMPLATE, "$spec_in") or die "Unable to open $spec_in.\n";
my $ARCH_RESTRICTIONS = "";
$ARCH_RESTRICTIONS = "ExclusiveArch: $exclusive_arch"
unless ($exclusive_arch eq 'none');
my $subpkg_desc = "";
my $subpkg_files = "";
my $all_supported_dtb = "";
my $DTS_folder = "linux/arch/arm/boot/dts";
if ($exclusive_arch =~ /aarch64/) {
$DTS_folder = "linux/arch/arm64/boot/dts";
}
foreach my $NAME (@$package_list) {
# open .spec and .spec.in files
my $PKG_NAME = @{$NAME}[0];
my $SUPPORTED_DTB = @{$NAME}[1];
my $MACHINES = @{$NAME}[2];
$subpkg_desc .=
"%package -n $PKG_NAME\n" .
"Summary: $MACHINES\n" .
"Group: System/Boot\n" .
"\n" .
"%description -n $PKG_NAME\n" .
"Device Tree Files for $MACHINES.\n\n";
my $bin_supported_dtb = $SUPPORTED_DTB;
$bin_supported_dtb =~ s/\.dts/\.dtb/g;
my $dtb_subdir = "";
if ($bin_supported_dtb =~ /(.*)\/[^\/]+$/) {
$dtb_subdir = "%dir /boot/dtb/$1\n";
}
$subpkg_files .=
"%files -n $PKG_NAME\n" .
"%defattr(-,root,root)\n" .
"%doc COPYING\n" .
"%dir /boot/dtb/\n" .
$dtb_subdir .
"/boot/dtb/$bin_supported_dtb\n" .
"\n";
$all_supported_dtb .= "$SUPPORTED_DTB ";
}
chomp($all_supported_dtb);
# spec file generation
while(<TEMPLATE>){
$_ =~ s/\$NAME/$main_package/g;
$_ =~ s/\$ARCH_RESTRICTIONS/$ARCH_RESTRICTIONS/g;
$_ =~ s/\$DTS_folder/$DTS_folder/g;
$_ =~ s/\$SUBPKG_DESC/$subpkg_desc/g;
$_ =~ s/\$ALL_SUPPORTED_DTB/$all_supported_dtb/g;
$_ =~ s/\$SUBPKG_FILES/$subpkg_files/g;
print SPEC $_;
}
close(TEMPLATE);
close(SPEC);
# Make symlink for .changes file
if ("dtb-source" ne $main_package) {
system("cp -lf dtb-source.changes $main_package.changes");
}
}
generate_spec('dtb-source', 'none', []);
generate_spec('dtb-armv7l', "armv7l armv7hl", \@armv7l_package_list);
generate_spec('dtb-armv6l', "armv6l armv6hl", \@armv6l_package_list);
generate_spec('dtb-aarch64', "aarch64", \@aarch64_package_list);