summaryrefslogtreecommitdiffstats
path: root/third_party/instrumented_libraries/scripts/fix_rpaths.sh
blob: 578243f4301386fa7178e98806bf4f23407a3e0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Changes all RPATHs in a given directory from XORIGIN to $ORIGIN
# See the comment about XORIGIN in instrumented_libraries.gyp

# Fixes rpath from XORIGIN to $ORIGIN in a single file $1.
function fix_rpath {
  if [ -w "$1" ]
  then
    # Only attempt to fix RPATH if the entry actually exists.
    # FIXME(earthdok): find out why zlib1g on Precise doesn't get RPATH set.
    if chrpath -l $1
    then
      echo "fix_rpaths.sh: fixing $1"
      chrpath -r $(chrpath $1 | cut -d " " -f 2 | sed s/XORIGIN/\$ORIGIN/g \
        | sed s/RPATH=//g) $1
    fi
  else
    # FIXME(earthdok): libcups2 DSOs are created non-writable, causing this
    # script to fail. As a temporary measure, ignore non-writable files.
    echo "fix_rpaths.sh: skipping non-writable file $1"
  fi
}

for i in $(find $1 | grep -P "\.so(.\d+)*$"); do
  fix_rpath $i
done