Commit Graph

49 Commits

Author SHA1 Message Date
Adam Emerson 3d36ac2d0b build: Bump Boost to 1.85
Signed-off-by: Adam Emerson <aemerson@redhat.com>
2024-05-22 21:38:33 -04:00
Lucian Petrut 82561ba77c win32_deps_build.sh: download Boost from Ceph mirror
We've recently changed the Boost mirror since the previous one
became unavailable.

As pointed out in PR comments, it's even better to use the Ceph
hosted source in order to save Ceph lab bandwidth.

We're adding bzip2 as a dependency. xz-utils was missing, so we're
adding it to our list.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2024-01-09 12:04:42 +00:00
Lucian Petrut 594d1e5e83 win32_deps_build.sh: change Boost URL
The Boost download URL is broken again [1], we'll switch to a
working mirror.

[1] https://github.com/boostorg/boost/issues/842

Fixes: https://tracker.ceph.com/issues/63952

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2024-01-08 09:44:56 +00:00
Lucian Petrut 750a9483d1 common: Windows Unicode CLI support
Windows CLI arguments use either ANSI (main()) or UTF-16 (wmain()).
Meanwhile, Ceph libraries expect UTF-8 and raise exceptions when
trying to use Unicode CLI arguments or log Unicode output:

  rbd.exe create test_unicode_șțăâ --size=32M
  terminate called after throwing an instance of 'std::runtime_error'
    what():  invalid utf8

We'll use a Windows application manifest, setting the "activeCodePage"
property [1][2]. This enables the Windows UCRT UTF-8 mode so that
functions that receive char* arguments will expect UTF-8 instead of ANSI,
including main(). One exception is CreateProcess, which will need the
UTF-16 form (CreateProcessW).

Despite the locale being set to utf-8, we'll have to explicitly set
the console output to utf-8 using SetConsoleOutputCP(CP_UTF8).

In order to use the UTF-8 locale, we'll have to switch the mingw-llvm
runtime from msvcrt to ucrt.

This also fixes ceph-dokan crashes that currently occur when non-ANSI
paths are logged.

[1] https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests#activecodepage
[2] https://learn.microsoft.com/en-us/windows/apps/design/globalizing/use-utf8-code-page

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-11-22 09:14:49 +00:00
Lucian Petrut 4ec8e9938b win32_build.sh: use ENABLE_SHARED=ON by default
The Windows build script uses static linking by default, the
reason being that some tests were failing to build otherwise,
mostly due to unspecified dependencies.

Now that the issue was addressed, we can enable dynamic linking
by default.

Worth mentioning that the Ceph MSI build script already uses
dynamic linking.

While at it, we'll drop some duplicate defaults from
"win32_deps_build.sh". For better clarity, we'll avoid exporting
some "win32_build.sh" variables, instead passing them explicitly
to "win32_deps_build.sh".

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-09-06 11:17:16 +00:00
Lucian Petrut 157ec51caa win32_deps_build.sh: avoid duplicate boost definitions
Boost stacktrace defines a few UUIDs that were recently added
to mingw as well [1], causing compilation errors [2]:

  In file included from libs/stacktrace/build/../src/windbg.cpp:9:
  ./boost/stacktrace/detail/frame_msvc.ipp:31:5: error: redefinition of
    '__mingw_uuidof_s<IDebugClient>'
    __CRT_UUID_DECL(IDebugClient,0x27fe5639,...

We'll apply a fix that hasn't merged upsteam yet [3].

[1] ce5a9f624d
[2] https://github.com/boostorg/stacktrace/issues/133
[3] https://github.com/boostorg/stacktrace/pull/140

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-08-30 14:21:21 +00:00
Lucian Petrut ec4a2778f6 cmake: fix mingw-llvm shared linking
mingw-llvm can't handle the '--exclude-libs' linker flag, so
we'll have to skip it.

At the same time, cmake can't locate the boost shared libs as the
import libs are not generated when using mingw-llvm due to boost's
clang-linux.jam file. For now, we'll patch the cmake files, using
the dlls as import libs (which is allowed by mingw).

While at it, we'll avoid linking the static AND dynamic boost libs,
speeding the build.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-08-30 12:59:00 +00:00
Lucian Petrut 3ce1e4a5c6 win32_build.sh: mingw-llvm support
winpthreads is a library that emulates the pthreads API using
Windows primitives. It's also used by the mingw/gcc libstdc++
for std::thread.

The issue is that winpthreads isn't well maintained. There
have been numerous bugs that haven't been addressed in years.
Specifically, we've been hitting deadlocks because of the
winpthreads rw lock implementation.

This change will allow building Ceph for Windows using mingw/llvm,
which uses libc++ and doesn't rely on winpthreads.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-08-30 12:59:00 +00:00
Lucian Petrut 9d92c2d74e win32_deps_build: skip patching removed boost files
We're attempting to patch some Python files that have been removed
from recent Boost versions.

Now that the Boost version has been bumped, we'll need to address
this in order to unblock the Windows build.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-07-18 12:28:11 +00:00
Adam C. Emerson 244c5ebbd4 build: Bump boost to 1.82
Needed to fix coroutine detection under Clang

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2023-07-05 15:45:07 -04:00
Lucian Petrut 041618ea9b win32_deps_build: avoid pip
We're currently installing cython with pip when using Ubuntu
to cross compile Ceph for Windows. This can fail with recent
Python versions if attempting to use the global env:

  error: externally-managed-environment

  × This environment is externally managed
  ╰─> To install Python packages system-wide, try apt install
      python3-xyz, where xyz is the package you are trying to
      install.

Cython isn't really needed by the Windows build so we can go
ahead and drop it. We were hoping to use the Python bindings
on Windows, however Python extensions can't be cross compiled.

We're no longer using pip either, so we're dropping the dependency.
g++ was getting installed as a pip dependency, so we'll have to
include that instead. Note that g++ is used when building the boost
b2 tool.

While at it, we'll also ensure that git is installed.

Fixes: https://tracker.ceph.com/issues/59354

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-04-18 09:55:52 +00:00
Venky Shankar 2427c05614
Merge pull request #47874 from petrutlucian94/dokany_v2
dokan: switch to Dokany v2

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
2022-10-27 18:18:36 +05:30
Ken Dreyer fdbe11d552 win32: speed up and simplify deps cloning
Use --depth 1 for all the dependencies we clone to speed up the process.

Use the --branch argument for cloning all dependencies. This simplifies
the process and makes it easier to use other copies in an offline
environment where github.com is inaccessible.

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-10-10 13:22:52 -04:00
Ken Dreyer 4954fe19e5 win32: add rhel option
Add an option for building the Windows client on RHEL. I've tested this
on RHEL 9.

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-09-27 11:21:18 -04:00
Ken Dreyer c2adf33ed5 Merge PR #48147 into main
* refs/pull/48147/head:
	win32: install wget when building on ubuntu
	win32: install deps with DEBIAN_FRONTEND=noninteractive

Reviewed-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Reviewed-by: Justin Caratzas <jcaratza@redhat.com>
2022-09-26 14:44:51 -04:00
Lucian Petrut 9921c8a355
Merge pull request #48148 from ktdreyer/win-remove-curl
win32: remove libcurl
2022-09-23 10:43:44 +03:00
Ken Dreyer bacbfccb20 win32: remove libcurl
The Windows client does not use libcurl for anything. Remove it to
simplify the build process.

Note, if we ever add libcurl back on Windows, we should disable unused
protocols to harden the build:

  --disable-ftp --disable-ldap --disable-ldaps --disable-rtsp \
  --disable-dict --disable-telnet --disable-tftp --disable-pop3 \
  --disable-imap --disable-smb --disable-smtp --disable-gopher \
  --disable-mqtt --disable-manual --disable-ntlm

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-09-16 14:30:39 -04:00
Ken Dreyer 1b4db7c477 win32: install wget when building on ubuntu
The build process requires wget. Install this on Ubuntu platforms.

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-09-16 13:52:24 -04:00
Ken Dreyer 100990cfa6 win32: install deps with DEBIAN_FRONTEND=noninteractive
This simplifies the installation process when I run it in an interactive
terminal.

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-09-16 13:51:58 -04:00
Ken Dreyer bff19ba720 win32: skip installing openssl man pages
This speeds up the build a bit and makes the logs easier to read.

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-09-16 10:49:13 -04:00
Lucian Petrut ad5315dcd8 dokan: switch to Dokany v2
The stable version of Dokany v2 has been released. It introduces
significant performance improvements, plus v1 is likely going
to be deprecated eventually.

As per this document[1], there are very few changes that we need to
make in order to use Dokany v2. We've covered those changes
in the previous commits.

That being said, we're now bumping the Dokany requirement to
2.0.5.1000 (latest).

[1] https://github.com/dokan-dev/dokany/wiki/Update-Dokan-1.1.0-application-to-Dokany-2.0.0

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-08-30 14:04:44 +00:00
Kefu Chai 9ff4b5a1a3
Merge pull request #46989 from petrutlucian94/boost_shared_mutex
common: use boost::shared_mutex on Windows

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Kefu Chai <tchaikov@gmail.com>
2022-08-06 11:00:27 +08:00
Kefu Chai 6b43df3c58 win32_deps_build.sh: bump curl to curl-7_84_0
to silence warnings like:

```
configure.ac:3671: warning: The macro `AC_HELP_STRING' is obsolete.
configure.ac:3671: You should run autoupdate.
```

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-08-04 23:08:12 +08:00
Lucian Petrut 35b67b2558 common: use boost::shared_mutex on Windows
The winpthreads shared mutex implementation causes deadlocks on
Windows [1][2]. Specifically, async RBD IO calls are hanging. This
also prevents the images from being unmounted.

For this reason, we're switching to boost::shared_mutex when using
MinGW.

[1] https://github.com/cloudbase/wnbd/issues/63#issuecomment-1161547102
[2] https://github.com/msys2/MINGW-packages/issues/3319
Trace: https://pastebin.com/raw/i3jpTyS3

Fixes: https://tracker.ceph.com/issues/56480
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-07-27 11:50:42 +00:00
Kefu Chai 606ec517f7
Merge pull request #46554 from adamemerson/wip-up-the-boost
build: Bump Boost version to 1.79

Reviewed-by: Kefu Chai <tchaikov@gmail.com>
2022-07-26 07:39:10 +08:00
Adam C. Emerson 947ac23979 build: Bump Boost version to 1.79
Also remove bind_allocator, as Boost.Asio now provides this function.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2022-07-22 11:04:43 -04:00
Ilya Dryomov 27048bf2b2 win32_deps_build.sh: master -> main for wnbd
wnbd is switching, see https://github.com/cloudbase/wnbd/pull/67.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-06-20 22:23:27 +02:00
Kefu Chai 1d5b07a092 win32_deps_build.sh: only clone the tip of required tag
no need to clone the whole repo, just clone the tip of the specified
tag. this saves the bandwidth, disk IO and precious time.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-07-29 12:13:26 +08:00
Kefu Chai b04248172d win32_deps_build.sh: bump snappy version to 1.1.9
in snappy, the commit of 26102a0c66175bc39edbf484c994a21902e986dc
fixes the SNAPPY_VERSION generation. and this commit was included by
v1.1.8 and v1.1.9.

also, in v1.1.9, a change was introduced, where the function signature
was changed, and more importantly, this change is not backward
compatible:

<   bool GetUncompressedLength(Source* source, uint32_t* result);
---
>   bool GetUncompressedLength(Source* source, uint32* result);

see also, https://tracker.ceph.com/issues/50934

so we check SNAPPY_VERSION to tell if we should use `uint32_t` or
`uint32`.

in this change, snappy version used to build win32 client is bumped
to the latest stable version, v1.1.9, to include the fix of
SNAPPY_VERSION. this paves the road to fix of https://tracker.ceph.com/issues/50934

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-07-29 12:13:26 +08:00
Lucian Petrut b683c55283 win32*.sh: bump boost version to 1.75
We're updating the Windows build scripts to use Boost 1.75, the same
as the Linux build.

We can now drop the custom Boost patches that were needed in order
to use mingw. Those have been merged upstream in the meantime.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2021-05-06 12:42:01 +00:00
Lucian Petrut 9cad7db13a win32*.sh: improve logging
We'll use a log file when building the Ceph dependencies. Also, we'll
log some details about the operation that's about to be performed.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2021-05-06 07:42:12 +00:00
Lucian Petrut f1a8044f1d win32*.sh: fix boost url
The boost download location has changed, breaking the Windows build.
Ths commit updates the boost download url.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2021-05-06 07:42:08 +00:00
Kefu Chai 5ddda38da4 common: extract options into yaml
extract the options in common/options.cc into separate .yaml.in
files, and preprocess them using CMake before translating them into .cc
files using a python script.

this change paves the road to render the options using sphinx, and
will allow us to further annotate the options to include more metadata.

also, a this YAML file can be consumed by applications like dashboard
and Sphinx to consume these metadata in a simpler way.

* use @variable-name@ for substituting the variables in .yaml.in file
* use cmake variable of `mgr_disabled_modules` instead of C macro
  to define `mgr_disabled_modules` in global.yaml.in
* debian/control, ceph.spec.in, win32_deps_build.sh: add python3-yaml
  as build dep
* add y2c.py (short for YAML to C++) to translate .yaml to .cc file
* common/options/*.yaml.in: extract and split options into .yaml.in
  files, the subvars in it is then replaced with CMake variables,
  and copied to the corresponding .yaml files
* include/config-h.in.cmake: remove MGR_DISABLED_MODULES, as it
  is not a CMake variable.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-04-13 09:13:47 +08:00
Lucian Petrut af6b37364b cephfs: Add ceph-dokan, providing Windows support
In order to expose ceph filesystems to Windows hosts, we propose
including ceph-dokan[1][2] in the Ceph tree, while updating it to
work with the latest CephFS and Dokany APIs.

Dokany is a well maintained project (fork of the original Dokan
project), allowing filesystems to be implemented in userspace,
even providing a Fuse compatibility layer.

One reason for not using the FUSE compatibility layer is that it's
only covering the high level API while Ceph is using the low level
FUSE API, which among other things is inode centric.

Changes made by this patch compared to the upstream ceph-dokan:

* support latest stable Dokany API. The upstream version relies on
  the legacy unmaintained Dokan API
* return proper error codes, converting standard errno.h values to
  NTSTATUS
* minor changes to support latest cephfs API
* drop duplicated ceph code, no longer needed if we're to include it
  in tree. This makes it much easier to maintain.
* drop redundant permission checks, leaving it up to libcephfs
* use ceph argparse helpers
* use ceph logging and daemon initialization
* fixed unicode handling
* switched to ceph coding style
* made ceph.conf param optional, using the default path if available
* enabled setting file timestamps
* append support
* configurable timeouts set once per mount
* ensure that the error code is always logged
* various cleanups (removed unused entry points, checks that have
  been moved to dokany, simplified conditional statements,
  unnecessary conversions in the hot path, etc).

[1] https://github.com/ketor/ceph-dokan
[2] https://github.com/ceph/ceph-dokan

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2021-03-05 13:13:31 +00:00
Lucian Petrut 5c008725db cmake,win32*.sh: Windows DLL support
At the moment, the Windows binaries can only be linked statically.
This is less than ideal since:

* the resulting binaries can be quite large, especially when
including debug symbols
* librados and librbd cannot be used directly by 3rd party apps
* the build duration is increased

In order to do a dynamic build, we'll:

* add an option to win32_build.sh
* fix link order
* dynamically link boost
* disable the "-pie" flag when using Mingw, which generates incorrect
  executable entry points
* by default, cmake generates import libs for executables. The issue
  is that for rados.exe, it generates librados.dll.a, thus overriding
  the librados.dll import library, which breaks the build process.
  We'll configure cmake to skip generating import libs for executables.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2021-01-26 08:41:51 +00:00
Lucian Petrut 775e89fb3a win32*.sh: fetch WNBD dependency
Due to a rebase mistake, we're no longer fetching WNBD, which
is required by rbd-wnbd.

This commit will take care of cloning WNBD and generating an
import library.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut a07251753a win32*.sh: bump win32 boost dependency
Ceph now requires boost>=1.72. We're going to update the Windows
build script accordingly.

There's been one Boost regression for which we have to cherry-pick
a patch that hasn't been released yet.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut b8216c3bc1 win32*.sh: improve lib handling
When building dependencies, we assume that libs will be placed in the
"lib" dir. Still, some distros might use "lib64" by default.

For this reason, we'll explicitly pass the expected lib path.

At the same time, we're dropping an unnecessary lib copy.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut 73e1747ba8 win32*.sh: update openssl location
We'll fetch the openssl source code from the github repository,
since the download links from the official website tend to expire
quite often.

At the same time, we'll drop the version from the directory name.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut 2dfcfcc6f1 win32*.sh: cleanup dependency build dir when targetting Windows
We're using a separate dir when building Ceph dependencies for
Windows. The build script isn't entirely idempotent ATM, so the
easiest thing to do is to just cleanup this dir when rebuilding
dependencies.

If *all* dependencies have been successfully built, this step is
skipped by default.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Mike Latimer f42e947a85 cmake,win32*.sh: Add OS=(ubuntu|suse) flag, for distro settings
Distributions such as SUSE and Ubuntu differ significantly in their mingw
environments. This adds an OS=(ubuntu|suse) flag, which can be used to
specify which environment is being used for the build. Unless set explicitly,
the scripts will try to automatically detect it.

Depending on the OS selected, various mingw configuration options (binaries,
library paths, etc.) as well as required packages are determined.

Due to these options being configured at runtime, corresponding cmake
files are generated on the fly.

Signed-off-by: Mike Latimer <mlatimer@suse.com>
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Signed-off-by: Alessandro Pilotti <apilotti@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Mike Latimer 6c57f6b2c2 win32*.sh: Use nproc for CPU count when targeting win32
When building in chroot jail, /proc/cpuinfo may not be available. Switch to
nproc which should be widely available, and does not rely on /proc/cpuinfo.

Signed-off-by: Mike Latimer <mlatimer@suse.com>
2020-12-09 18:01:02 +00:00
Mike Latimer ae812dce44 win32*.sh: improve win32 dependency check
At the moment, we assume that the dependencies have been successfully
built if the "build.deps" directory exists.

For convenience reasons, this change will use a file instead,
signaling that we've finished building the dependencies. This will
allow the build process to be resumed when interrupted.

Signed-off-by: Mike Latimer <mlatimer@suse.com>
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Mike Latimer 451fe3dc49 win32*.sh: isolate network operations when building win32 dependencies
We'll move network operations (git/wget/curl) under a conditional
check of the source directory.

This will ensure that the script is idempotent and that network
operations can be avoided, using pre-existing sources if available.

Signed-off-by: Mike Latimer <mlatimer@suse.com>
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut 4dd38e29c8 win32*.sh: cleanup Windows build script
Since the switch to Python 3, a few Cmake flags are no longer required.
While at it, we're dropping a few other unused Cmake flags.

We're going to pass the right target os flag when building lz4
and make sure that it's included in our zip archive.

win32_deps_build.sh needs a small change, fixing a sed command to become
idempotent.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Signed-off-by: Mike Latimer <mlatimer@suse.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut 155caa1fc8 win32*.sh: fix patch command
There's a leftover "cat" command used when patching Boost files,
which will wait for stdin. This commit fixes this issue.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut 61999ec168 win32*.sh: update Windows build scripts and readme
We're going to allow building a zip containing stripped binaries
and skipping the ceph tests. We'll use a separate option rather
than changing the build type so that may generate binaries
containing debug symbols as well as stripped binaries in one shot.

While at it, we're updating the Windows readme.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Signed-off-by: Mike Latimer <mlatimer@suse.com>
2020-12-09 18:01:02 +00:00
Lucian Petrut 4af1ae2093 rbd: allow mounting images on Windows
This change will allow mapping rbd images on Windows, leveraging the
WNBD[1] Virtual Storport Miniport driver [2].

The behavior and CLI is similar to the Linux rbd-nbd, with a few
notable differences:

* device paths cannot be requested. The disk number and path will
  be picked by Windows. If a device path is provided by the user
  when mapping an image, it will be used as an identifier, which
  can also be used when unmapping the image.
* the "show" command was added, which describes a specific mapping.
  This can be used for retrieving the disk path.
* the "service" command was added, allowing rbd-wnbd to run as a
  Windows service. All mappings are currently perisistent, being
  recreated when the service stops, unless explicitly unmapped.
  The service disconnects the mappings when being stopped.
* the "list" command also includes a "status" column.

The purpose of the "service" mode is to ensure that mappings survive
reboots and that the Windows service start order can be adjusted so
that rbd images can be mapped before starting services that may depend
on it, such as VMMS.

The mapped images can either be consumed by the host directly or exposed
to Hyper-V VMs.

While at it, we'll skip building rbd-mirror as it's quite unlikely that
this daemon is going to be used on Windows for now.

[1] https://github.com/cloudbase/wnbd
[2] https://docs.microsoft.com/en-us/windows-hardware/drivers/storage/overview-of-storage-virtual-miniport-drivers

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
2020-11-18 10:31:24 +00:00
Lucian Petrut 0942873cfe [win32] Add build scripts
This patch adds a couple of scripts that can be used for
building Ceph for Windows along with its dependencies.

For now, we're going to cross compile it using mingw.
It's supposed to run on Ubuntu (feel free to update
the command that's installing some of the dependencies
within win32_deps_build.sh if you're interested in other
distros).

This commit also adds a short readme, describing the focus of
the Windows porting effort, the building process and the current
status.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
2020-02-19 08:24:21 +00:00