W. Trevor King [Sun, 3 Mar 2013 12:58:16 +0000 (07:58 -0500)]
livecdfs-update.sh: Fix '/etc/sshd' check for sshd_config tweaks
sshd_config lives in /etc/ssh, not /etc/sshd. This typo has been
present since the block was introduced by
c06264e (Initial import of
Catalyst 2.0.0, 2005-04-04), so it's obviously not a widely used
feature ;). It might be better to just remove the block entirely.
W. Trevor King [Fri, 1 Feb 2013 02:17:50 +0000 (21:17 -0500)]
examples: Add newlines to accidentally unwrapped comment lines
With:
$ sed -i 's/^\(#.*\)\(#.*\)/\1\n\2/' examples/*.spec
W. Trevor King [Fri, 1 Feb 2013 01:31:03 +0000 (20:31 -0500)]
Move bug-reporting and mailing list notes from TODO to README
This information is generally useful, and folks probably only read
TODO if they want to help but don't already have an idea of what to
help with ;). Having the contact information in the README should
raise its visibility.
W. Trevor King [Thu, 31 Jan 2013 22:25:47 +0000 (17:25 -0500)]
examples/README: Add a pointer to the releng Git repository
Thanks to Dustin C. Hatch for pointing this out, because I wasn't able
to find it on my own. Having a pointer distributed with Catalyst
should help other newcomers find example spec files written by folks
who know what they're doing ;). The current examples lack a full
stage1-through-stage3 progression.
Brian Dolbec [Tue, 4 Jun 2013 15:47:12 +0000 (08:47 -0700)]
temp set shebang to python2 until py3 compatibilty is done
Brian Dolbec [Sat, 1 Jun 2013 07:31:59 +0000 (00:31 -0700)]
Rename local unpack var to _unpack
The method name was unpack, so rename the local var to _unpack to help avoid confusion.
Brian Dolbec [Sat, 1 Jun 2013 06:33:15 +0000 (23:33 -0700)]
Fix a long line.
Brian Dolbec [Sat, 1 Jun 2013 06:32:49 +0000 (23:32 -0700)]
Remove some dead code
Brian Dolbec [Sat, 1 Jun 2013 06:28:19 +0000 (23:28 -0700)]
Fix some paths/normpath usage. Use pjoin to join paths.
Use os.path.dirname() instead of splitting and rejoining without the filename.
Brian Dolbec [Sat, 1 Jun 2013 06:23:46 +0000 (23:23 -0700)]
Create AutoResume class to handle all file creation, deletion...
Create catalyst/base/resume.py.
Migrate all auto_resume operations to using the new class.
Brian Dolbec [Sat, 1 Jun 2013 06:24:46 +0000 (23:24 -0700)]
Refactor ClearBase code to remove code duplication.
Brian Dolbec [Fri, 31 May 2013 16:11:30 +0000 (09:11 -0700)]
Initial creation of fileops.py
Migrate to using ensure_dirs()
Brian Dolbec [Fri, 31 May 2013 04:11:45 +0000 (21:11 -0700)]
fix version for newer snakeoil
Brian Dolbec [Thu, 30 May 2013 19:34:06 +0000 (12:34 -0700)]
Migrate version to use snakeoil's format_version() to append git commit info.
This will make tagging releases easy as well as providing better debug info while running live versions of the software.
W. Trevor King [Fri, 1 Mar 2013 05:57:39 +0000 (00:57 -0500)]
kmerge.sh: Fix line wrapping typo from
9ceebbf
In
9ceebbf (kmerge.sh: Make /var/tmp/${clst_kname}.config optional,
2013-02-09), I added a KERNCACHE check to a `[` test, wrapping the two
clauses in the test to avoid a very long line. Unfortunately,
newlines do not appear to be legal in this position. For example:
$ if [ -n "a" -a
> -n "b" ]; then echo "c"; fi
bash: [: missing `]'
bash: -n: command not found
This commit fixes the error by explicitly wrapping the line with a
backslash.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:40:32 +0000 (15:40 -0500)]
files/.gitignore: Ignore $(DOCS) and $(DOC_SIDE_EFFECTS)
These are generated by the Makefile from sources in doc/.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:40:31 +0000 (15:40 -0500)]
Makefile: Add DOCS for building files/HOWTO.html
The rules are more general though; any new *.txt file in doc/ that
doesn't match *.?.txt or one of the explicitly-listed *.generated.txt
files will be automatically built and distributed.
The generated `files/docbook-xsl.css` is a side effect of the xhtml
target.
Reviewed-by: Matt Turner <mattst88@gmail.com>
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Wed, 24 Apr 2013 11:27:13 +0000 (11:27 +0000)]
Drop addpatches from the livecd-stage2 example spec as well.
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Wed, 24 Apr 2013 11:23:50 +0000 (11:23 +0000)]
Drop addpatches from the stage4 example spec.
Brian Dolbec [Tue, 28 May 2013 00:18:43 +0000 (17:18 -0700)]
Make the use of preserved_libs optional by setting the options variable.
Ported from commits:
462348d88b3a5fa783f322c64131025581ecc220
f6ad384914a00099eea2a0f66232728c479ec628
in the master branch.
AUTHOR: Jorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto@gentoo.org> (Sun 14 Apr 2013 08:22:34 PM PDT)
Raúl Porcel [Sat, 6 Apr 2013 17:07:00 +0000 (17:07 +0000)]
Add support for m68k
port commit for the rewrite branch.
Brian Dolbec <dolsen@gentoo.org>
W. Trevor King [Sun, 3 Mar 2013 16:53:18 +0000 (11:53 -0500)]
livecdfs-update.sh: Escape ampersands in STARTX sed expression
From sed(1):
s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful,
replace that portion matched with replacement. The replacement
may contain the special character & to refer to that portion of
the pattern space which matched, and the special escapes \1
through \9 to refer to the corresponding matching sub-expressions
in the regexp.
This means that the old expression (with unescaped ampersands) lead
to:
source /etc/profile ##STARTX##STARTX su - ${first_user} -c startx
when we want:
source /etc/profile && su - ${first_user} -c startx
with ${first_user} expanded in both cases.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:40:30 +0000 (15:40 -0500)]
doc/HOWTO: First pass at a gentle Catalyst introduction
Reviewed-by: Matt Turner <mattst88@gmail.com>
Ben Kohler [Wed, 6 Mar 2013 01:08:07 +0000 (17:08 -0800)]
create-iso.sh: add usb boot via isohybrid
Add an isohybrid call to create-iso.sh for isolinux targets so the resulting
images are usb/hdd bootable.
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Mon, 4 Mar 2013 03:13:11 +0000 (03:13 +0000)]
Fix bugs 407051 and 458536 by using FEATURES="preserve-libs" on the unmerge step of livecd-stage2 target.
Brian Dolbec [Mon, 27 May 2013 23:34:33 +0000 (16:34 -0700)]
update version to identify the rewite-git code is being run
Brian Dolbec [Mon, 27 May 2013 23:08:16 +0000 (16:08 -0700)]
fix indent.
Brian Dolbec [Tue, 26 Feb 2013 07:31:41 +0000 (23:31 -0800)]
Fix broken seed stage update...
Add a check for the update_seed option to set the correct update options.
Fix default seed stage update command to properly update gcc and it's deps.
Add --binpkg-respect-use=y for all cases --usepkg is enabled.
Apply patch to fix broken if logic in the setup_emergeoptions() by Douglas Freed <dwfreed@mtu.edu> and rebase
Brian Dolbec [Mon, 25 Feb 2013 03:52:44 +0000 (19:52 -0800)]
Fix typo in error message, clean up useless tracebacks
Remove useless python tracebacks for bash side target failures.
Brian Dolbec [Mon, 25 Feb 2013 00:33:29 +0000 (16:33 -0800)]
update gitignore
Brian Dolbec [Mon, 25 Feb 2013 00:29:52 +0000 (16:29 -0800)]
mixed spaces/tabs and indent cleanup.
Brian Dolbec [Sun, 24 Feb 2013 20:33:18 +0000 (12:33 -0800)]
Migrate hardcoded /etc/portage paths
Create "port_conf" default.
Migrate all references to /etc/portage to the config's default.
Migrate all make.conf paths to the config'd default.
Brian Dolbec [Sun, 10 Feb 2013 20:06:15 +0000 (12:06 -0800)]
Fix a bug that portage didn't get rebuilt with the build use flag
If clst_PGKCACHE is defined, --newuse was not being added to clst_myemergeopts, so then portage was not being rebuilt if portage was already up to date.
Brian Dolbec [Tue, 12 Feb 2013 04:13:13 +0000 (20:13 -0800)]
Add archdir to settings
Brian Dolbec [Fri, 25 Jan 2013 04:26:38 +0000 (20:26 -0800)]
Commit my testpath file with instructions to run the git checkout code directly without being installed.
Brian Dolbec [Fri, 25 Jan 2013 04:14:31 +0000 (20:14 -0800)]
FIXME! Add a forced debug print statement in cmd() for better debug output
Migrate this and other code to use python's logging module.
Brian Dolbec [Fri, 25 Jan 2013 04:13:40 +0000 (20:13 -0800)]
Remove trailing slash for consistency in variables
remove extra slashes in paths,
fix hash header
Brian Dolbec [Mon, 11 Feb 2013 23:54:36 +0000 (15:54 -0800)]
Fix a relative path bug
Brian Dolbec [Fri, 25 Jan 2013 04:09:08 +0000 (20:09 -0800)]
Add '--- 'to at the start of all echo messages to aid debugging
Brian Dolbec [Tue, 12 Feb 2013 04:09:01 +0000 (20:09 -0800)]
Make shdir a complete path to ease it's use.
Add a "shdir" setting to config.
This is to make moving the bash code around easier.
It also reduces more hardcoded paths in the bash scripts.
Migrate all target shell scripts to use the new shdir setting
Brian Dolbec [Fri, 25 Jan 2013 04:00:24 +0000 (20:00 -0800)]
Extend ParserBase to do variable substitution.
Also add embedded variable substitiution to default settings.
Why are we not using python's built-in ConfigParser?
We'll migrate it later.
Brian Dolbec [Wed, 23 Jan 2013 04:57:05 +0000 (20:57 -0800)]
reduce 2 operations into one simpler one
Brian Dolbec [Tue, 22 Jan 2013 08:39:18 +0000 (00:39 -0800)]
rename a make.conf key to make_conf due to bash variable name restrictions
Brian Dolbec [Tue, 12 Feb 2013 04:06:01 +0000 (20:06 -0800)]
Break out more repeated (path1 + path2)'s...
Just do it once and use the temp variable.
Comment out some debug print's.
Fix options conversion for export to bash.
Brian Dolbec [Tue, 22 Jan 2013 08:34:41 +0000 (00:34 -0800)]
FIXME! Comment out a small code block causing TypeError.
This was also short circuiting another large code block. FIXME!!!! This
whole class seems overly complicated with TOO MANY nested try:excepts:
Brian Dolbec [Tue, 22 Jan 2013 00:10:51 +0000 (16:10 -0800)]
Rename all target .py files and classes without _target in them.
This is so they are the named the same as the target .sh files
and work with the now simplified module loading.
Brian Dolbec [Mon, 21 Jan 2013 23:58:58 +0000 (15:58 -0800)]
chmod +x all sh scripts so they can run from the git checkout
Brian Dolbec [Mon, 21 Jan 2013 23:54:02 +0000 (15:54 -0800)]
Use normpath from support
Brian Dolbec [Tue, 12 Feb 2013 04:00:35 +0000 (20:00 -0800)]
Fix mounts, mountmap hardcoding removal...
Use normpath to fix paths, add some debug print statements,
Fix some missed conversions from uppercase to lowercase settings members.
Brian Dolbec [Mon, 21 Jan 2013 23:34:32 +0000 (15:34 -0800)]
fix options being reset by a config file
Brian Dolbec [Sun, 20 Jan 2013 21:50:23 +0000 (13:50 -0800)]
Update module loading for the new python structure, rename snapshot_target to snapshot
Brian Dolbec [Tue, 12 Feb 2013 03:51:52 +0000 (19:51 -0800)]
Move base stage and target files to thier own sub-pkg
Fix an indent error in grp_target.py
Brian Dolbec [Tue, 12 Feb 2013 03:43:37 +0000 (19:43 -0800)]
remove redundant /bin/bash additions in cmd() calls
Brian Dolbec [Sun, 20 Jan 2013 19:22:27 +0000 (11:22 -0800)]
some spacing and comment and indent cleanup, etc.
Brian Dolbec [Sun, 20 Jan 2013 08:10:03 +0000 (00:10 -0800)]
Begin splitting up generic_stage_target into smaller code blocks.
This so snapshot_target does not need to import it since most of it was
not used or initialized properly.
Brian Dolbec [Sun, 20 Jan 2013 04:29:16 +0000 (20:29 -0800)]
Massive pyflakes import cleanup and broken CatalystError calls.
Replace "import *" with named imports, remove unused imports.
Fix broken CatalystError usage.
Brian Dolbec [Sun, 20 Jan 2013 01:50:26 +0000 (17:50 -0800)]
Move LockInUse from support.py to lock.py, fix bad execption raising, pyflakes cleanup
Brian Dolbec [Sun, 20 Jan 2013 01:28:51 +0000 (17:28 -0800)]
Some options cleanup, unifying their use, reducing redundancy.
Brian Dolbec [Sat, 19 Jan 2013 05:51:35 +0000 (21:51 -0800)]
Move confdefaults out of main.py
Brian Dolbec [Sat, 19 Jan 2013 05:12:07 +0000 (21:12 -0800)]
Initial creation of a defaults file and Split up support.py
Split out hash and contents to their own classes, files.
Brian Dolbec [Mon, 14 Jan 2013 03:32:29 +0000 (19:32 -0800)]
Fix undefined variable: RLIMIT_NOFILE
It was not imported from resource, it was also not used correctly.
Brian Dolbec [Tue, 12 Feb 2013 02:54:40 +0000 (18:54 -0800)]
Remove unused variable new and an undefined variable s.
Commit
b3475906d5f51a21ecaf4ff048002a2f44face52 introduced an
undefined variable "s". The code must always be hitting the
general except: pass block. Seems useless, if not maybe it'll
spit out a true error, so the real problem can be fixed. Removed it all.
Brian Dolbec [Tue, 12 Feb 2013 02:49:19 +0000 (18:49 -0800)]
Remove unused urllib import.
This urllib import was added in commit
64c16cae70da13de3c55d8555a2e4c5dcdf2fcad
to fix an issue, but it is not used. So must have covered up the real bug. Removing it now
that I've completed some testing and haven't come across anything I can attribute to it.
Brian Dolbec [Sat, 12 Jan 2013 07:47:10 +0000 (23:47 -0800)]
rename files directory to etc to better reflect the directories contents
Brian Dolbec [Sat, 12 Jan 2013 07:43:36 +0000 (23:43 -0800)]
rename the modules subpkg to targets, it better reflects what it contains
Brian Dolbec [Sat, 12 Jan 2013 07:32:41 +0000 (23:32 -0800)]
move catalyst_support, builder, catalyst_lock out of modules, into the catalyst's base namespace
Brian Dolbec [Sat, 12 Jan 2013 06:54:11 +0000 (22:54 -0800)]
fix catalyst_support import to new location and specify imported modules
Brian Dolbec [Fri, 11 Jan 2013 03:34:53 +0000 (19:34 -0800)]
update the module loading paths for the new locations
Brian Dolbec [Fri, 11 Jan 2013 03:33:59 +0000 (19:33 -0800)]
add __init__.py's to modules and arch sub-pkgs
Brian Dolbec [Fri, 11 Jan 2013 03:11:47 +0000 (19:11 -0800)]
new minimal start script
Brian Dolbec [Fri, 11 Jan 2013 02:56:28 +0000 (18:56 -0800)]
Initial rearrangement of the python directories
Brian Dolbec [Wed, 9 Jan 2013 08:32:41 +0000 (00:32 -0800)]
cleanup long lines, improve usage() output formatting slightly
Brian Dolbec [Thu, 20 Dec 2012 02:56:04 +0000 (18:56 -0800)]
Remove self.mounts and self.mountmap's use of paths for keys and paths.
Migrate more hardcoded paths to use settings variables instead.
Brian Dolbec [Tue, 8 Jan 2013 07:17:22 +0000 (23:17 -0800)]
Add more configured defaults
Use the new configured snapshot_name and portdir settings
Use the portdir setting rather than hard-coded path
Brian Dolbec [Tue, 12 Feb 2013 02:35:19 +0000 (18:35 -0800)]
Whitespace cleanup.
Run the following command to cleanup whitespace.
for FILE in $(git ls-tree -r --name-only HEAD | grep -v 'bz2$'); do
sed -i 's/[[:space:]]*$//' "$FILE"
done
W. Trevor King [Sat, 9 Feb 2013 20:45:38 +0000 (15:45 -0500)]
kmerge.sh: Make /var/tmp/${clst_kname}.config optional
For users that don't want to specify a seed config.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:45:37 +0000 (15:45 -0500)]
generic_stage_target: Handle unspecified boot/kernel/<kname>/config
If boot/kernel/<kname>/config is not set, make _copy_kernel_config a
no-op.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:45:36 +0000 (15:45 -0500)]
generic_stage_target: Split ._copy_initramfs_overlay() from ._build_kernel()
_copy_initramfs_overlay() is long enough that it makes reading
_build_kernel() difficult.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:45:35 +0000 (15:45 -0500)]
generic_stage_target.py: Dedent the bulk of ._build_kernel()
At the beginning of the function, we check for an autoresume point.
If we find it, just return. This allows us to dedent the `else` block
that had been handling the no-autoresume-found case.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:45:34 +0000 (15:45 -0500)]
generic_stage_target: Split ._copy_kernel_config() from ._build_kernel()
_copy_kernel_config() is one idea with a bunch of error handling.
Isolating it in its own function makes _build_kernel() easier to read.
Reviewed-by: Matt Turner <mattst88@gmail.com>
W. Trevor King [Sat, 9 Feb 2013 20:45:33 +0000 (15:45 -0500)]
generic_stage_target: Split ._build_kernel() out of .build_kernel()
The indentation was getting too deep ;). This also makes the
single-kernel-building code more digestible, by removing the
multiple-kernel looping and error handling from the function you're
reading.
Reviewed-by: Matt Turner <mattst88@gmail.com>
Guy Martin [Tue, 5 Feb 2013 08:31:09 +0000 (00:31 -0800)]
Make sure shutil.rmtree() isn't passed a symlink
Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=455022
Reviewed-by: Matt Turner <mattst88@gentoo.org>
Guy Martin [Tue, 5 Feb 2013 08:29:19 +0000 (00:29 -0800)]
Add hppa support for netboot 2 target
Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=455018
Reviewed-by: Matt Turner <mattst88@gentoo.org>
Rick Farina (Zero_Chaos) [Thu, 31 Jan 2013 03:57:36 +0000 (22:57 -0500)]
don't build packages during update_seed
when update_seed is run it uses the default catalyst emerge options
which causes binary packages to be built which are linked against the
seed stage rather than the generated stage. These binary packages
can be later used and cause significant and odd issues due to being
linked to older libraries. I am passing "--buildpkg=n" for the
update_seed runs to prevent this issue and close bug #454184
Rick Farina (Zero_Chaos) [Fri, 25 Jan 2013 03:46:05 +0000 (22:46 -0500)]
make bindist optional
After the recent fixes which ensure the bindist use flag
is always set, users now have no way to disable this flag.
This patch introduces the new "bindist" feature, enabled by
default, which will allow users to turn off bindist if
they are not going to redistribute the builds (or for
tinderbox testing, etc).
Matt Turner [Fri, 25 Jan 2013 02:48:27 +0000 (18:48 -0800)]
Use update_seed_command, as documented
Not update_command. Bug in
4dc9de30.
Matt Turner [Sat, 8 Dec 2012 06:14:02 +0000 (22:14 -0800)]
Use 'in' instead of deprecated has_key()
Since Python 2.2 'in' has been preferred to has_key() since it is
shorter, more readable, and faster. has_key() has been deprecated since
2.6 and was removed in 3.0.
See:
http://www.python.org/dev/peps/pep-0290/#testing-dictionary-membership
Mostly scripted with
sed -i -e 's/if \(not \)\?\(.*\)\.has_key(\(.*\))/if \3 \1in \2/'
Rick Farina (Zero_Chaos) [Tue, 8 Jan 2013 21:41:07 +0000 (16:41 -0500)]
bug fix wrt 443024, recent changes to use lbzip2 were too agressive
and we should only be using lbzip2 OUTSIDE the chroot, inside the
chroot we don't have lbzip2 available at this time.
Matt Turner [Sun, 30 Dec 2012 02:53:28 +0000 (18:53 -0800)]
ppc: Remove -fno-strict-aliasing from CFLAGS
Added temporarily in 2004 (commit
b010c1bd) for gcc-3.3.3/nptl. Time to
go.
Fixes https://bugs.gentoo.org/show_bug.cgi?id=449240
Rick Farina (Zero_Chaos) [Fri, 7 Dec 2012 06:30:45 +0000 (22:30 -0800)]
Do not "highly recommend" ccache
ccache has a history of causing strange problems, and Gentoo recommends
disabling it before reporting bugs. As such, we shouldn't highly
recommend it. See http://en.gentoo-wiki.com/wiki/Ccache#Caveats
Suggested-and-Acked-by: Rick "Zero_Chaos" Farina <zerochaos@gentoo.org>
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Fri, 7 Dec 2012 01:49:30 +0000 (01:49 +0000)]
Fix broken syntax in previous commit.
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Thu, 6 Dec 2012 23:27:03 +0000 (23:27 +0000)]
Rework update_seed support.
Split it between update_seed (do we want to update the seed or not) and update_seed_command (custom command to run when updating).
The later is left for advanced uses / users. If not present, catalyst will update gcc deps.
Rick Farina (Zero_Chaos) [Tue, 4 Dec 2012 20:45:25 +0000 (15:45 -0500)]
catalyst 2.0.12.2
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Thu, 22 Nov 2012 02:48:01 +0000 (01:48 -0100)]
Make sure we always append bindist use flag to all targets.
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Wed, 21 Nov 2012 01:08:28 +0000 (00:08 -0100)]
Clean-up the dirs we remove on stage1 target (stop cleaning old non-existant python dirs).
Matt Turner [Sun, 11 Nov 2012 00:15:20 +0000 (16:15 -0800)]
Document the update_seed option
Matt Turner [Sat, 10 Nov 2012 23:38:03 +0000 (15:38 -0800)]
Use update_seed's argument as an argument list to emerge
Previously, update_seed caused the seed stage to be updated with
--update --deep --newuse @world. This proved to be unnecessary in the
majority of cases.
Simply give run_merge the previously unused argument of update_seed as
an argument list. This allows updating select packages in a seed stage.
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Fri, 2 Nov 2012 01:48:08 +0000 (00:48 -0100)]
We need to specify the chroot_path to the chmod call.
Jorge Manuel B. S. Vicetto (jmbsvicetto) [Fri, 2 Nov 2012 01:17:48 +0000 (00:17 -0100)]
Make sure the files we try to execute in the chroot are marked as executable.
Rick Farina (Zero_Chaos) [Fri, 2 Nov 2012 00:58:15 +0000 (20:58 -0400)]
re-apply "Revert "Use relative path.""