Commit Graph

61 Commits

Author SHA1 Message Date
Alex Hornby
96bef26081 add github actions for EdenFS on linux and fix Eden SCM Mac build (#106)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/eden/pull/106

Pull Request resolved: https://github.com/facebookexperimental/eden/pull/107

Summary

* Add EdenFS builds on external CI now EdenSCM is good

* Mac builds on github actions by using brew for system dependencies

To make this work had to fix some path ordering issues with install directories for Linux and Mac, and generalise the homebrew path fixups we were doing for bison to all the used homebrew packages.

Previously Installed packages were being added after system paths, so our own installed thing might be ignored. On github these meant system python 3.9 was being used for hg tests rather than our specified 3.8 (this showed we have some test fails on python 3.9 with "SystemError: deallocated bytearray object has exported buffers", that are beyond the scope of this diff to fix)

Also needed to include the getdeps generated python into the generated edenscmdeps3.zip archive setup.py produces otherwise EdenFS tests failed to import thrift.Thrift

Eden tests are hanging when run externally about half way through, so disable them on github actions for now as this PR is already fairly large. They work when run locally on an internal devserver, so probably some bit of environment necessary is not defined in the test runner

Reviewed By: chadaustin

Differential Revision: D34116505

fbshipit-source-id: d0d628db5daabc28d0bd8997cd5c1bc885ed1e73
2022-02-14 11:56:53 -08:00
Alex Hornby
f628e4793f remove generated thrift code and fix external CI (#26)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/rust-shed/pull/26

Pull Request resolved: https://github.com/facebookexperimental/eden/pull/104

No need for the checked in generated code anymore

Successful external CI Linux run on Git Hub PR: https://github.com/facebookexperimental/eden/runs/5130405984?check_suite_focus=true

Mac PR run fails with a SSL cert issue, will look separately

Reviewed By: chadaustin, mitrandir77

Differential Revision: D33840545

fbshipit-source-id: eafc2a0e2191d438fd828adeebc2e318d319025f
2022-02-09 12:21:32 -08:00
Alex Hornby
5a096bd67c move autocargo up one level (#101)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/eden/pull/101

public_autocargo already existed for edenfs, but needed to move up a level so to make edenfs thrift definition visible via autocargo.

Reviewed By: markbt

Differential Revision: D32693522

fbshipit-source-id: 4c070cfa2d6294a28c17697338f0309dcab1576f
2022-02-08 06:07:52 -08:00
Alex Hornby
f354098a9d generate the eden_scm github actions (#103)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/eden/pull/103

Automate maintenance of the edenscm_* github actions yamls

Add job file and name options and support for the Rust install section

Reviewed By: fanzeyi

Differential Revision: D34044422

fbshipit-source-id: 7d5f07d37bab1eff5de30a88e710dbf7479ca192
2022-02-08 03:01:23 -08:00
Jun Wu
11c3c6d43b setup: upgrade Cython to 0.29.26
Summary: The new version has Python 3.9 support.

Differential Revision: D33744732

fbshipit-source-id: c2ef9c730f1b61e87014f7b01916b2a20b6f68aa
2022-01-24 13:32:32 -08:00
Jun Wu
2a99866d7b codemod: update license headers
Summary:
The "Portions" license cannot be updated automatically. So this is a manual
update using:

  sd -s 'Portions Copyright (c) Facebook, Inc. and its affiliates.' 'Portions Copyright (c) Meta Platforms, Inc. and affiliates.' `rg -l Facebook`
  sd -s 'Copyright (c) Facebook, Inc. and its affiliates.' 'Copyright (c) Meta Platforms, Inc. and affiliates.' `rg -l Facebook`

Differential Revision: D33420114

fbshipit-source-id: 49ae00a7b62e3b8cc6c5dd839b3c104a75e72a56
2022-01-05 14:43:32 -08:00
Jan Mazur
bc38c74d60 fix hg dbsh on windows by updating ipython and prompt_toolkit
Summary: hg dbsh didn't work on windows because ipython 5.8.0 doesn't work well with python 3.8. I fixed that by updating ipython prompt_toolkit which is ipython's dependency.

Reviewed By: DurhamG

Differential Revision: D32916594

fbshipit-source-id: f9289f021d9df05f97751a6a1960018ffab4fcfd
2021-12-08 13:42:02 -08:00
Liubov Dmitrieva
61dac1c517 fix make local build
Summary:
fix `make local` build

Instructions are here: D30191123 (8ed3f2f031)

Also `make clean` is important.

Reviewed By: markbt

Differential Revision: D31172134

fbshipit-source-id: cb9d51b5bab94b9574719751af2f7678f91eb0cf
2021-09-24 10:23:28 -07:00
Durham Goode
742240b65f hggit: delete hggit
Summary: This is no longer used, now that configerator does it's sync via SCS.

Reviewed By: quark-zju

Differential Revision: D31006839

fbshipit-source-id: ddf7923a3c80ad47519bce0e5cb3895f62e7ae2e
2021-09-21 13:45:11 -07:00
Mark Juggurnauth-Thomas
8ed3f2f031 update thrift deps
Reviewed By: krallin

Differential Revision: D30191123

fbshipit-source-id: 49c6b61a69cf3251360b9a17e0ebb14c73fc380b
2021-08-09 11:19:17 -07:00
Jun Wu
dedb9c222c setup: add colorama dep
Summary: colorama is required by IPython on Windows.

Reviewed By: yancouto

Differential Revision: D30106739

fbshipit-source-id: f9be928e35e6c44722bae9205732f245b9b00467
2021-08-05 12:23:08 -07:00
Yan Soares Couto
a731fc3992 Add base snapshot subcommand
Summary: This adds the very basic shell of what the command will look like, with no behaviour at all for now.

Reviewed By: StanislavGlebik

Differential Revision: D29960746

fbshipit-source-id: 75b43749142f5b0b12a1e13068fb9fac40d1c492
2021-07-30 03:24:34 -07:00
Liubov Dmitrieva
84aee08c10 Clean Up: remove old snapshots extension
Summary:
Clean Up: remove old snapshots extension.

This extension is unused and its name clashes with the new Snapshots project which offers a different implementation.

As discussed with markbt and yancouto, we should unfortunately delete this code.

Reviewed By: markbt

Differential Revision: D29875074

fbshipit-source-id: 2bcd835e58fc50c5aad94a184a4d2ecb6be79c9c
2021-07-23 09:57:35 -07:00
Jun Wu
ee1939e4d1 setup: downgrade IPython to 5.8
Summary:
IPython 7 has compatibility issues when bundling into zip:
- The dependency parso does not work when embedded in zip. It expects
  `python/grammar38.txt` to exist on the filesystem (not in a zip).
- It stacktraces after exiting the IPython shell.
- TAB completion does not really work.

Downgrading to IPython 5 and avoid the bundling the parso dep to resolve the
issues.

This should fix `test-autofix.t` and `test-argspans.py` failures.

Reviewed By: DurhamG

Differential Revision: D29170653

fbshipit-source-id: 14a3d16deaca72fbfb7b3acc0a4246a771c4d0aa
2021-06-16 11:51:11 -07:00
Jun Wu
f7fde44264 setup3: remove duplicated deps
Summary:
It causes warnings:

  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: 'toml/__init__.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: 'toml/encoder.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: 'toml/decoder.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: 'toml/tz.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: 'toml/ordered.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: 'six.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)
  /usr/lib64/python3.6/zipfile.py:1378: UserWarning: Duplicate name: '__init__.pyc'
    return self._open_to_write(zinfo, force_zip64=force_zip64)

Reviewed By: andll

Differential Revision: D29107803

fbshipit-source-id: 0c46d739bf4f0c5e2faec835a29b3e0017f55ddd
2021-06-16 10:25:28 -07:00
Durham Goode
0e8bbd2e51 py3: remove py3 options and py2 rpm spec
Summary:
Python 2 is no longer built anywhere. Let's make the various py3
options the default, like renaming 'make local3' to 'make local' and let's get
rid of the dead setup.py and rpm spec.

Reviewed By: quark-zju

Differential Revision: D29077093

fbshipit-source-id: 0c50c2296fe10ff1db9ac8f9b0df2a4836c0ea5b
2021-06-15 14:46:42 -07:00
Jun Wu
8cc60851cb clindex: remove the extension
Summary:
It is only useful for Python revlog-based changelog, which was removed by the
previous diff.

Reviewed By: DurhamG

Differential Revision: D29020190

fbshipit-source-id: 3332f1532a510dc72f21d68801e093b5eba10145
2021-06-10 20:28:27 -07:00
Zeyi (Rice) Fan
d78264f594 windows: build Rust fbclone with Mercurial
Reviewed By: genevievehelsel

Differential Revision: D28299629

fbshipit-source-id: 8420054c848fc50e52db1c90ffc4022a858beb43
2021-05-17 15:45:34 -07:00
Arun Kulshreshtha
356e56bd4f windows: copy OpenSSL DLLs alongside executable
Summary:
The Rust `openssl` crate will using dynamic linking by default when built with `cargo`. This is a problem on Windows, since we only support cargo-based builds on that platform, but OpenSSL is not present in the system's shared library search paths.

Since we already have a copy of OpenSSL uploaded to LFS, the simplest solution is to just copy the required DLLs right next to the Mercurial executable so that they will be found at launch.

A better solution would probably be to use static linking here. From reading the crate's documentation (and build script), it seems like setting `OPENSSL_STATIC=1` during the build should force static linking, but in practice I have not been able to get this to work.

Reviewed By: DurhamG

Differential Revision: D28368579

fbshipit-source-id: 3fceaa8d081650d60356bc45ebee9c91ef474319
2021-05-11 18:25:13 -07:00
Durham Goode
be2bd4fc95 Backout py3 only changes from windows_thrift
Summary: Mercurial still needs this to work in Python 2 for a few more weeks.

Reviewed By: quark-zju, xavierd

Differential Revision: D27943521

fbshipit-source-id: 2b5106496fbb523cdc97a3dce3ad0cbfab5c17b7
2021-04-22 10:29:49 -07:00
Jun Wu
454dd13f15 setup: exclude windows_thrift.py for Python 2 build
Summary: It includes syntax unknown to Python 2.

Reviewed By: kulshrax

Differential Revision: D27857399

fbshipit-source-id: b473ce1dbdcee36562949782b4f374350581a77b
2021-04-19 10:53:57 -07:00
Jun Wu
8e8aaa61d6 lib: remove unused C code
Summary:
Those are not used. Recently we saw build issues like:

  lib/third-party/sha1dc/sha1.c:8:10: fatal error: string.h: No such file or directory
   #include <string.h>
            ^~~~~~~~~~

Possibly by some compiler flags disabling stdlib. Since we don't need
the C code let's just remove them.

Reviewed By: singhsrb

Differential Revision: D27659634

fbshipit-source-id: b8fcac4f05be95cac470f9b4830baf76e06f98ad
2021-04-08 16:50:13 -07:00
Rafael Catalão Lopes Perrella
f0f6d57e9b Fix package boundary violations
Reviewed By: yfeldblum

Differential Revision: D26944733

fbshipit-source-id: c67250ca846732cbcc456ae39a5cc58cd38498e6
2021-03-12 04:03:53 -08:00
Jun Wu
a75e25d756 revisionstore: bytes::ByteMut -> Vec::<u8>
Summary: We're going to drop dependency on `bytes`.

Reviewed By: kulshrax

Differential Revision: D26218291

fbshipit-source-id: fcb58bfae3e80c37e2a3c7df2a2ca73c8266c70b
2021-02-03 20:22:30 -08:00
Mark Juggurnauth-Thomas
b643f7d17d exclude thrift/server/test/handler.py
Summary: This file uses new async syntax that is not valid on Python 2.

Reviewed By: singhsrb

Differential Revision: D26223827

fbshipit-source-id: 98ecd60d6f21eb91f5e3781539be7da33327667e
2021-02-03 08:50:02 -08:00
Jun Wu
b6b68257be setup: fix make local build
Summary:
The `async_common.py` needs to be ignored for Python 2 build since it
cannot be parsed by Python 2.

Reviewed By: xavierd

Differential Revision: D26142682

fbshipit-source-id: f921e7a35781b3336ba745e886380afc26d5ca36
2021-01-29 10:26:07 -08:00
John Reese
d13e0b137f apply pyfmt with usort to opted-in sources
Reviewed By: zertosh

Differential Revision: D24880203

fbshipit-source-id: 2034cdfc2712209e86d3d05c119c58f979b05c52
2020-11-10 21:25:54 -08:00
John Reese
737849c9dd apply black 20.8b1 formatting update
Summary:
allow-large-files

black_any_style

Reviewed By: zertosh

Differential Revision: D24325133

fbshipit-source-id: b4afe80d1e8b2bc993f4b8e3822c02964df47462
2020-10-14 20:21:52 -07:00
Xavier Deguillard
dc97cebe7c lib: remove cdatapack
Summary: This is unused, no need to keep it around.

Reviewed By: DurhamG

Differential Revision: D24054164

fbshipit-source-id: 161b294eb952c6b4584aa0d49d8ff46cd63ee30f
2020-10-02 10:47:23 -07:00
Carolyn Busch
97edbc3bc9 setup: convert buildinfosrc to bytes
Reviewed By: singhsrb

Differential Revision: D23719096

fbshipit-source-id: e60522245476dac301e8449743bfd1756cfe3fbc
2020-09-16 09:30:39 -07:00
Jun Wu
22d38872fb setup: skip Py3 only thrift files for Py2 build
Summary: The files use Python 3 only syntax and is not really used. Skip them so Python 2 build won't hit invalid syntax issues.

Reviewed By: chadaustin

Differential Revision: D23717662

fbshipit-source-id: f911a83937be9ccc40194f321e3b41625a68e703
2020-09-15 17:37:50 -07:00
Jun Wu
3095de7357 Back out "use python 3 for the eden_scm getdeps build"
Summary:
Running `setup.py` with Python 3 for Python 2 build will cause issues as
`setup.py` writes `.pyc` files in Python 3 format.

Reviewed By: chadaustin

Differential Revision: D23717661

fbshipit-source-id: 38cfabdfdf20424a21f8a5bdaf826e74da2304ac
2020-09-15 17:37:50 -07:00
Chad Austin
dca9f7bbfb use python 3 for the eden_scm getdeps build
Summary:
EdenFS is adding a Python 3 Thrift client intended for use by other
projects, and the Mercurial Python 2 build doesn't understand Python 3
syntax files, so switch the default getdeps build to Python 3.

Reviewed By: quark-zju

Differential Revision: D23587932

fbshipit-source-id: 6f47f1605987f9b37f888d29b49a848370d2eb0e
2020-09-14 21:39:51 -07:00
Jun Wu
039419d281 configparser: fix non-fb dependencies (#45)
Summary:
Pull Request resolved: https://github.com/facebookexperimental/eden/pull/45

Fix referring to 'version' without proper codegen by making 'version' compile
without codegen. This fixes configparser test when version/src/lib.rs was not
generated.

Make unneeded deps without 'fb' feature optional.

This would hopefully fix the "EdenSCM Rust Libraries" GitHub workflow.

Reviewed By: DurhamG

Differential Revision: D23269864

fbshipit-source-id: f9e691fe0a75159c4530177b8a96dad47d2494a9
2020-08-26 16:31:00 -07:00
Lukasz Piatkowski
75ae342768 edenscm/hg: add GitHub Actions with CI for HG plus add fixes for getdeps (#25)
Summary:
Fixes include:
1. Passing "GETDEPS_BUILD_DIR" and "GETDEPS_INSTALL_DIR" env variable and using them in eden/scm/Makefile rather than assuming the source code is always in the same place regardless getdeps arguments (it isn't).
2. Added "fbthrift-source" and "fb303-source" to avoid unnecessary compilation (at least of fb303) and to put fbthrift and fb303 source code in an easy to locate place inside getdeps' "installed" folder.

Pull Request resolved: https://github.com/facebookexperimental/eden/pull/25

Test Plan: sandcastle, check oss-eden_scm-darwin-getdeps

Reviewed By: farnz

Differential Revision: D22431872

Pulled By: lukaspiatkowski

fbshipit-source-id: 8ccbb090713ec085a5dd56df509eb58ab6fb9e34
2020-07-10 12:07:45 -07:00
Lukas Piatkowski
c763ab4b40 eden/scm: provide getdeps.py way of building eden/scm on GitHub
Summary:
In order to do what the title says, this diff does:
1. Add the `eden/oss/.../third-party/rust/.../Cargo.toml` files. As mentioned in the previous diff, those are required by GitHub so that the third party dependencies that are local in fbsource are properly defined with a "git" dependency in order for Cargo to "link" crates properly.
2. Changes to `eden/scm/Makefile` to add build/install commands for getdeps to invoke. Those command knowing that they are called from withing getdeps context they link the dependencies brought by getdeps into their proper places that match their folder layout in fbsource. Those Makefile commands also pass a GETDEPS_BUILD env to the setup.py invocations so that it knows it is being called withing a getdeps build.
3. Changes to `eden/scm/setup.py` that add "thriftasset" that makes use of the getdeps.py provided "thrift" binary to build .py files out of thrift files.
4. Changes to `distutils_rust` to use the vendored crates dir provided by getdeps.
5. Changes to `getdeps/builder.py` and `getdeps/manifest.py` that enable more fine-grained configuratior of how Makefile builds are invoked.
6. Changes to `getdeps/buildopts.py` and `getdeps/manifest.py` to disable overriding PATH and pkgconfig env, so that "eden/scm" builds in getdeps using system libraries rather than getdeps-provided ones (NOTE: I've tried to use getdeps provided libraries, but the trickiest bit was that Rust links with Python, which is currently not providable by getdeps, so if you try to build everything the system provided Python libraries will collide with getdeps provided ones)
7. Added `opensource/fbcode_builder/manifests/eden_scm` for the getdeps build.

Reviewed By: quark-zju

Differential Revision: D22336485

fbshipit-source-id: 244d10c9e06ee83de61e97e62a1f2a2184d2312f
2020-07-02 17:53:37 -07:00
Jun Wu
18e012bb19 setup: remove .pyc if .py is deleted
Summary: This avoids issues importing stale .pyc files.

Reviewed By: singhsrb

Differential Revision: D21847270

fbshipit-source-id: cd788e8f7bf95d026248febaae6e67db0d2beca1
2020-06-10 19:29:24 -07:00
Jun Wu
2aa85dc4d7 version: a Rust crate providing version information
Summary: Otherwise the version information is only available in Python.

Reviewed By: DurhamG

Differential Revision: D19803762

fbshipit-source-id: 044c5da86efc8c657d0c422a2b1947086444895e
2020-05-18 09:00:40 -07:00
Jun Wu
ff7a6b43d3 pyre2: use Rust regex backend
Summary: Switch from re2 to the Rust regex engine.

Reviewed By: DurhamG

Differential Revision: D20973178

fbshipit-source-id: 2707bfb2120ceb3758a81c01a5a6f4f8c61758bc
2020-05-12 16:32:51 -07:00
Mark Thomas
26f6dc8fb3 setup.py: add converter.py to fbsource-thrift blacklist
Reviewed By: farnz

Differential Revision: D21500308

fbshipit-source-id: 663f3d9457a153945f23b8e8bccd16f9c052b2cb
2020-05-11 09:12:07 -07:00
Mark Thomas
052e7c3877 check-code: convert to Python 3
Summary:
Update `contrib/check-code.py` to Python 3.

Mostly it was already compatible, however stricter regular expression parsing
revealed a case where one of our tests wasn't working, and as a result lots of
instances of `open(file).read()` existed that this test should have caught.

I have fixed up most of the instances in the code, although there are many
in the test suite that I have ignored for now.

Reviewed By: quark-zju

Differential Revision: D21427212

fbshipit-source-id: 7461a7c391e0ade947f779a2b476ca937fd24a8d
2020-05-07 09:07:50 -07:00
Durham Goode
3ac2be361a configs: move fbrules to a Facebook only part of the crate
Summary:
We'll be adding a bunch of Facebook specific configuration and values
here. Let's move it to someplace not open source.

Reviewed By: quark-zju

Differential Revision: D21241038

fbshipit-source-id: 2ac9cdce40b1b46f15f171d9d1f6b6692dcd29bf
2020-05-01 13:17:21 -07:00
Jun Wu
514f0141f8 patch: use diffhelpers from Rust bindings
Summary:
Drop other diffhelpers implementations.
The Rust implementation does a better job on type checks and won't segfault.

Reviewed By: xavierd

Differential Revision: D20935367

fbshipit-source-id: f59240f3a661efe1ca6e451922bcb3ca6ee6ae22
2020-04-09 18:25:53 -07:00
Xavier Deguillard
08984182b9 setup: write the pyc before the py during packaging
Summary:
I'm not exactly sure why, but my guess is that by writing the py files first,
the pyc might be copied and not generated, causing Python to not read the pyc
at import time, leading to slow startup time.

Reviewed By: quark-zju

Differential Revision: D20829130

fbshipit-source-id: e838ff18b9fbf65d1a9437e0a8ef58d57803d2fa
2020-04-03 11:35:29 -07:00
Ratnadeep Joshi
17fd33424d Move py/ directory from eden/ to eden/fs
Summary: [edenfs] Move py/ directory from eden/ to eden/fs

Reviewed By: simpkins

Differential Revision: D20479925

fbshipit-source-id: 36abf7fe208c283f01c9bf415e2fcb1a8f4bdbae
2020-03-24 11:45:37 -07:00
Jun Wu
a7dedfdfd6 fsinfo: remove old getfstype implementation
Summary: Remove the old Python, C implementation of getfstype.

Reviewed By: xavierd

Differential Revision: D20313385

fbshipit-source-id: 475c73343aae2fa2f5ad898c7b0879bfa2c80e93
2020-03-11 17:35:41 -07:00
Xavier Deguillard
ffced54dff packaging: add edenscm/hgext/convert/repo
Summary: The python files were missing in the package, let's add them.

Reviewed By: quark-zju

Differential Revision: D20163637

fbshipit-source-id: 0a7870a21c42d9b92a8b78b51e4954db0d96c593
2020-02-28 12:15:10 -08:00
Adam Simpkins
6f824649ff use absolute includes to the third-party xdiff code
Summary:
Update includes to the third-party xdiff.h file to use absolute includes
from the repository root.  This allows many parts of our internal build
tooling to work better, including automatic dependency processing.

Reviewed By: xavierd

Differential Revision: D19958228

fbshipit-source-id: 341dd8c94f1138cf4a387b92e1817b2a286d6aa1
2020-02-19 13:05:06 -08:00
Adam Simpkins
5ffa268af2 use absolute includes for the native cext modules
Summary:
Update the C files under edenscm/mercurial/cext to use absolute includes from
the repository root.  Also update a few of the libraries in edenscm/mercurial
that the cext code depends on.

This makes these files easier to build with Buck in fbsource, and reduces the
number of places where we have to use deprecated Buck functionality to help
find these headers.  This also allows autodeps to work with the build targets
for these rules.

Reviewed By: xavierd

Differential Revision: D19958221

fbshipit-source-id: e6e471583a795ba5773bae5f16ed582c9c5fd57e
2020-02-19 13:05:06 -08:00
Xavier Deguillard
3c41bd2a92 build: use vendored crate from third-party
Summary:
Now that the source of truth for third-party crates is in fbsource, let's use
it in our cargo build system. This removes the need to fetch a tarball and
untar it, which should have the benefit of speeding up the build.

A small caveat is the first build on EdenFS will be slightly slower, due to
crates needing to be individually fetched, subsequent builds will be faster.

Reviewed By: jsgf

Differential Revision: D19726217

fbshipit-source-id: 24f484d1e3118a76e052f07ff3eea0c66cccce96
2020-02-05 17:49:06 -08:00