#!/usr/bin/perl # relativize absolute symlinks use strict; use warnings; use File::Find; my $buildroot = $ENV{RPM_BUILD_ROOT}; die "No build root defined" unless $buildroot; die "Invalid build root" unless -d $buildroot; # normalize build root $buildroot =~ s|/$||; sub relativize { return unless -l $_; my $link = readlink($_); return unless $link =~ m{^/} && $link !~ m{^/(dev|proc|sys)/}; $link =~ s{^/}{}; my $dirname = $File::Find::dir; $dirname =~ s/^\Q$buildroot\E//; $dirname =~ s{/[^/]+}{../}g; unlink $_; symlink $dirname . $link, $_; } find(\&relativize, $buildroot);