Commit Graph

32 Commits

Author SHA1 Message Date
Puneet Kaushik
6471e739f4 Add Windows version of FileUtils
Reviewed By: strager

Differential Revision: D14205304

fbshipit-source-id: 964e6b5bf4c456d468b9624ab32ef104fa53c3a8
2019-03-18 10:00:32 -07:00
Adam Simpkins
84349add33 rename some of the files related to main()
Summary:
Rename `main.cpp` to `EdenMain.cpp` now that this contains the `EdenMain`
class rather than the top-level `main()` function, and rename `RunServer.cpp`
to `main.cpp`

Reviewed By: pkaush

Differential Revision: D14435306

fbshipit-source-id: e1528a773e0724c6bd50e31f6b33a1762d7bd49e
2019-03-15 18:13:58 -07:00
Adam Simpkins
be2474ee41 restructure main() link dependency ordering
Summary:
This restructures `main.cpp` to turn our current top-level `main()` into a
method of a virtual class.

This allows us to eliminate the slightly awkward way that `main.cpp` depends
on `RunServer.cpp`.  This required us to list `main.cpp` in the sources
parameter of multiple buck targets rules, which confuses some other tools like
autodeps.  With this new change, `RunServer.cpp` depends on `main.cpp` instead
of the other way around.  The real top-level `main()` function now lives in
`RunServer.cpp`

Reviewed By: pkaush

Differential Revision: D14435309

fbshipit-source-id: 402d00db0d8aa8d473d51a4f0e9d9d80c97a0134
2019-03-15 18:13:58 -07:00
Matt Glazar
65f80da385 Add USER_ID variable for config options
Summary:
The systemctl command requires XDG_RUNTIME_DIR to be configured. If it's not configured, 'eden start' should pick a sane default. The sane default includes the user's UID (e.g. /run/user/6986). I want this default to be configurable via Eden's config files.

Expose the ${USER_ID} token to Eden configs. This will let administrators can customize XDG_RUNTIME_DIR's fallback value in the future.

Reviewed By: wez

Differential Revision: D13811732

fbshipit-source-id: 7933e078dd5f2b3bbbb0299730220a129c257256
2019-03-14 18:19:41 -07:00
Puneet Kaushik
e7a40683c8 Created HResultError class and fixed the exception handling.
Reviewed By: strager

Differential Revision: D13289036

fbshipit-source-id: fa34f5a19916c06b11bafb5162dd4e9d9ebe4543
2019-03-12 16:30:44 -07:00
Adam Simpkins
4dc59b856b ensure that most thrift calls cannot access initializing mounts
Summary:
This updates the `EdenServer` class so that the existing `getMount()` and
`getMountPoints()` APIs only return mounts that have finished initializing.

These APIs are primarily used by the thrift interfaces.  In most cases the
callers did not intend to operate on mounts that were still initializing, and
doing so was unsafe.  The code could potentially dereference a null pointer if
it tried to access the mount's root inode before the root inode object had
been created.

New `getMountUnsafe()` and `getAllMountPoints()` APIs have been added for call
sites that explicitly want to be able to access mounts that may still be
initializing.  Currently the `listMounts()` thrift API is the only location
that needs this.

Reviewed By: strager

Differential Revision: D13981139

fbshipit-source-id: e6168d7a15694c79ca2bcc129dda46f82382e8e9
2019-03-06 20:33:42 -08:00
Puneet Kaushik
5635cbdf9f Add FaultInjector to Windows builds
Reviewed By: wez

Differential Revision: D14125842

fbshipit-source-id: 7df348f4ff8ee6b7f466876acba4dafa86e5cc61
2019-02-19 10:50:48 -08:00
Puneet Kaushik
de2f0f7d0e Updated scm datapack source code path.
Reviewed By: wez

Differential Revision: D14125840

fbshipit-source-id: 021c517864c7be482713079dffccc479745905e4
2019-02-19 10:50:48 -08:00
Puneet Kaushik
b87be7c7a3 Removed SDL checks to fix Windows build.
Summary: SDL checks generate errors for using negatives with unsigned ints (for ex x = -uint_var), which we have at few places in Folly and Thrift.

Reviewed By: wez

Differential Revision: D14125841

fbshipit-source-id: 3a9dd0fc36ecde4cdd75473c893c5f7adb450740
2019-02-19 10:50:48 -08:00
Puneet Kaushik
abd11a0711 Added MultiProcessorCompilation flag to the Windows build.
Summary: This would use all the available CPUs and speed up the build process.

Reviewed By: strager

Differential Revision: D13563433

fbshipit-source-id: 18b3862ae0c56ae3865c56864b58cf749c844bd4
2019-02-16 10:56:01 -08:00
Adam Simpkins
48c0d2a0b5 include utils/Bug.{h,cpp} in the Windows build
Summary: This is needed to avoid link errors for code that uses `EDEN_BUG()`

Reviewed By: wez

Differential Revision: D13806142

fbshipit-source-id: a5baea17830629e1271351ddd127118789681470
2019-01-24 13:47:41 -08:00
Chad Austin
fe557ace7c only evict when interest handle is dropped if blob wasn't reloaded
Summary:
There was a bug in BlobCache where, if you had an interest handle to a
blob, but that blob was evicted anyway and then something else caused
it to be reloaded, dropping your interest handle would cause the blob
to be incorrectly evicted since the reference counts were no longer
compatible. Add a version to cache items and only decrement the
reference count on an item if the interest handle and item agree.

Reviewed By: strager

Differential Revision: D13405144

fbshipit-source-id: aee052bf777e7225551c3ae2b8b69a99f4f77691
2018-12-10 19:30:28 -08:00
Puneet Kaushik
5c7838bfa8 Cleaning up the test code from main().
Reviewed By: chadaustin

Differential Revision: D13091787

fbshipit-source-id: 37dc67edd1cd2a629ecb07f4eb8ff828b136b1b7
2018-12-04 18:14:48 -08:00
Puneet Kaushik
96d32b9f05 Create Eden Mount on Windows
Summary: This diff also includes build script changes to EdenDispatcher, FsChannel and EdenMount.

Reviewed By: strager

Differential Revision: D13091786

fbshipit-source-id: cecc8d849fcb9ebc8fa718e1011ef8931bebc279
2018-12-04 18:14:48 -08:00
Puneet Kaushik
6a552975d7 FS Channel to handle ProjFS requests.
Reviewed By: strager

Differential Revision: D13091784

fbshipit-source-id: aa98615b646932815989be9bf9b723d9233bb595
2018-12-04 15:35:29 -08:00
Puneet Kaushik
a3ed73b23d Adding Eden dispatcher on Windows to handle the FS operations.
Reviewed By: strager

Differential Revision: D13091781

fbshipit-source-id: 7b3296713cf5ca0a5731d1dbb13da7457e2fbeaf
2018-12-04 15:35:29 -08:00
Puneet Kaushik
bdf9f292f6 Adding BlobCache to Windows build.
Reviewed By: chadaustin

Differential Revision: D13204546

fbshipit-source-id: f5ed23db5279e913a474ab7e01a16f45f44f5792
2018-11-26 15:46:20 -08:00
Puneet Kaushik
986eed95d8 Adding an abstraction layer on the backing store to handle the Windows path conversion.
Reviewed By: chadaustin

Differential Revision: D13091782

fbshipit-source-id: da96f3b2f9c8bf0f3d518a7bfbf223434766d207
2018-11-26 08:19:47 -08:00
Puneet Kaushik
f257be1f9a Change the Windows pipe functions to not return until all the bytes are read/written or error.
Summary: Change the Windows pipe read and write functions to read/write in a loop. Plus changed the functions prototype to match the POSIX version.

Reviewed By: strager

Differential Revision: D13091785

fbshipit-source-id: 375b22bd9e62d371a78d410f42068945b966a743
2018-11-26 08:19:47 -08:00
Puneet Kaushik
060d62f3c6 Add string conversion functions for Windows
Summary:
Backing store works with eden strings(UTF8 + Unix path separator). The path strings we receive on Windows from FS and cli are Windows paths
 (Win path separator and/or UTF16). Adding the functions to convert one to another.

Reviewed By: strager

Differential Revision: D13091788

fbshipit-source-id: f7fc8a79e360e964cf4619dfa540b57f1f18d283
2018-11-26 08:19:47 -08:00
Puneet Kaushik
55c9854125 Add WinError to create Windows error strings.
Reviewed By: strager

Differential Revision: D13091783

fbshipit-source-id: 1ba7ed5b60ede06bbd51eff1af53363d94b26ad3
2018-11-25 09:45:07 -08:00
Puneet Kaushik
f60a60189f Win: Add tracing to Windows builds
Reviewed By: chadaustin

Differential Revision: D12895179

fbshipit-source-id: ac11da16287f4dc73cbb18d05344d5caa66b56f7
2018-11-01 18:35:54 -07:00
Wez Furlong
1751dcad73 load blobs using hg's rust config and datapack code
Summary:
This diff implements getBlob on top of the mercurial rust
datapack code.  It adds a C++ binding on top of the rust code to
make it easier to use and hooks it up in the hg backing store.

Need to figure this out for our opensource and windows builds:

* Need to teach them how to build and link the rust code
* need to add a windows version of the methods that accept paths;
  this is just a matter of adding a WCHAR version of the functions.

Reviewed By: strager

Differential Revision: D10433450

fbshipit-source-id: 45ce34fb9c383ea6018a0ca858581e0fe11ef3b5
2018-10-31 17:58:01 -07:00
Wez Furlong
b43707234c move SerializedBlobMetadata into its own file
Summary:
I want to reuse this outside the LocalStore implementation
in a later diff.  This has no functional changes.

Reviewed By: chadaustin

Differential Revision: D12814792

fbshipit-source-id: 2cc34b449a93afb2e71bd49ed6587009ebf3e419
2018-10-31 11:50:39 -07:00
Wez Furlong
d623be956d pass ReloadableConfig down to HgBackingStore ctor
Summary:
This allows detecting changes to the edenrc configuration
and adjusting how we read data accordingly.

To avoid a huge gnarly diff with a lot of dependencies, this diff
introduces a little interface class that defines the method to obtain
a possibly reloaded EdenConfig instance.

This diff shouldn't change any functionality.

Reviewed By: chadaustin

Differential Revision: D12813051

fbshipit-source-id: 35390dc28671ba46a03d098c4f280e2f567dbdc9
2018-10-31 11:50:38 -07:00
Chad Austin
2a6dd2879d folly::Optional -> std::optional
Summary: Eden's on C++17 so fully cross the rubicon!

Reviewed By: strager

Differential Revision: D10498200

fbshipit-source-id: 4e2af5a8d5cef9a106e8c05e6f93ea9e5b8e696e
2018-10-23 18:51:59 -07:00
Puneet Kaushik
c292d5e9bf Win: Removing BackingStore.cpp and adding ObjectStore::create call to fix the build.
Reviewed By: chadaustin

Differential Revision: D10503338

fbshipit-source-id: 30ddc435aff4554c7b7edaa29218074f1149fdc7
2018-10-23 10:34:47 -07:00
Puneet Kaushik
1e94122c0b Win: Porting eden/service to Windows with fb-thrift
Reviewed By: strager

Differential Revision: D10225935

fbshipit-source-id: 5c571229e243b8fcabb9db8a6e15e1c66423edaf
2018-10-22 20:27:26 -07:00
Puneet Kaushik
9e39ecf9c5 Win: Added .thrift files to build scripts
Summary: Compiling eden.thrift, streamingeden.thrift and fb303.thrift (the oss version).

Reviewed By: simpkins

Differential Revision: D10244391

fbshipit-source-id: 6ff24064e91944d876ca9486dbc71e23c0092bfc
2018-10-11 13:38:20 -07:00
Puneet Kaushik
313fbbe0f9 Win: Restructured the Windows code to align with the eden code layout
Summary:
Restructured the Windows code to align with the eden code layout. Plus changed the build location to eden/win/build directory, which is generated by the Windows build script.
  eden
    \_fs
    \_ ...
    \_ win
        \_fs
           \_service
           \_utils
        \_build (generated by the build script)

Reviewed By: strager

Differential Revision: D10081143

fbshipit-source-id: db9fb25f963d1a9cccb8a8f83646e7e45c87d409
2018-09-28 13:14:11 -07:00
Puneet Kaushik
5a7df37497 win: Fixing build scripts to setup contbuild in lego-win
Summary:
Modified the build scripts to use dependencies from D:\edenwin64. This is the location where we will mount the edenwin64.iso.

It also contains changes to compile it with the latest Eden Linux changes plus removed some POC stuff and dependencies from my laptop.

Reviewed By: strager

Differential Revision: D9545688

fbshipit-source-id: e92e34d0af07974845faf9f729e0861fde5af459
2018-09-02 14:21:56 -07:00
Puneet Kaushik
eeaf1c0025 Started Eden for Windows and integrated hg store with it.
Summary:
This diff is first in the series to make Eden work on Windows. It includes:

1. HG backing store and Object store, which provides the capability to talk to mercurial and fetch the file and folder contents on Windows.
2. Subprocess and Pipe definition for Windows.
3. The Visual studio solution and projects files to compile Eden and scm datapack.

Few Important points:

1. Most of the changes to existing code is done under a macro EDEN_WIN so that it doesn't impact on other platform.
2. Sqlite is used for caching the fetched contents. We are not using Rocksdb on Windows.
3. The main function only calls some test code and exit after printing the output.
4. The initializeMononoke code is disabled for Windows because it needs Proxygen to talk HTTP. Will enable this once I get Proxygen and other dependencies working.
5. HgImporter pass Windows handles to hg_import_helper as command line args. The code to convert these handles into fds is in a separate diff.

Reviewed By: wez

Differential Revision: D8653992

fbshipit-source-id: 52a3c3750425fb92c2a7158c2c214a9372661e13
2018-08-21 17:53:38 -07:00