Commit Graph

39 Commits

Author SHA1 Message Date
Pritesh Nandgaonkar
9f807cd0df Move core sonarkit code to xplat
Summary:
This diff only moves the core of sonarkit to the xplat.

- This diff uses `fb_xplat_cxx_library` as a buck rule in xplat as it is the recommended way
- Updated few imports in the files which were not compiling with new buck function
- Due to the new way of import the OSS would break, so fixed it by changing the `podspec` file

Reviewed By: passy

Differential Revision: D8937414

fbshipit-source-id: 6e12cd049bedb496e7a6820be85b2535e70ba09b
2018-07-25 01:43:23 -07:00
Eldad Moneta
333ceac957 convertFollyDynamicToId - Don't crash if illegal value is return in one of the conversions
Summary:
Fixing T31692652.
I couldn't reproduce this on my local tests - (tried non-utf chars, deleted memory, onverted vectors that are erased).
My guess - an illegal string cannot be converted to NSSString and thus we return nil when the folly::dynamic type is STRING.

See task for additional details.

Reviewed By: nubbel

Differential Revision: D8952714

fbshipit-source-id: c87af523efca1b96a4cf3d5d26fa5c16ed5cd773
2018-07-24 06:48:26 -07:00
Noah Gilmore
8177675465 Initial support for using Sonar in Swift projects (#106)
Summary:
This PR adds support for using SonarKit clients in Swift apps. Fixes #13, fixes #87

1. Swift can't import Obj-C modules which have C++ headers. For this reason, we use SonarKit as an Obj-C++ wrapper around Sonar, which is written in C++. Due to search path misconfiguration, trying to import SonarKit into a Swift project would import `xplat/Sonar/SonarPlugin.h` instead of `iOS/SonarKit/SonarPlugin.h`, which caused `file not found` errors for C++ stdlib imports like #28 because new projects don't have their search paths set up correctly.
2. The network and layout plugins have C++ definitions (struct methods, classes) in some of their headers. This causes the compiler to get confused for Swift projects, because it only supports importing Objective-C files in umbrella headers, meaning that the `SonarKit` won't build.

1. I updated the `HEADER_SEARCH_PATHS` of SonarKit.podspec's build configuration to include `${PODS_ROOT}/Headers/Private/SonarKit/**` first, which alleviates the search path issue. The Obj-C `Sample` project seems to have worked around this by including a hardcoded `${PODS_ROOT}/SonarKit/**` search path in the pbxproj, which is why Sample works but new projects (like those referenced in #28) don't. I removed this since it's no longer necessary.
2. I added a `SampleSwift` app to demonstrate using Sonar with a Swift project.
3. Because the Podfiles for `Sample` and `SampleSwift` referenced podspecs using `:podspec` instead of a concrete version, Cocoapods wouldn't copy local header files (instead, it downloads them from the source). To enable local development of these sample apps using `:path`, I added a symlink to SonarKit.podspec in the root of the directory.
4. I changed SonarKit.podspec to use a tag-based `source`, since v0.0.1 pulls from the master branch of this repo.

The layout and network plugins still don't work with Swift - in order to fix this, we'll need to work on extracting the C++ out of their headers and writing Obj-C++ wrappers for them. I decided to push this off to a later PR since this one is quite large already.

This means that we need to be able to `import SonarKit` without importing all the network/layout plugin headers. In order to make this work, I made "SonarKit/Core" the spec's `default_subspecs`.

priteshrnandgaonkar, let me know if you have any thoughts on this implementation. You can verify that the SampleSwift app works by checking out this branch, `pod install`ing in the SampleSwift directory, and building it :)

![image](https://user-images.githubusercontent.com/1168853/41928625-ac195bd8-792a-11e8-82b8-65d6233a1fbb.png)
Pull Request resolved: https://github.com/facebook/Sonar/pull/106

Reviewed By: jknoxville

Differential Revision: D8890010

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 449305bcc5cbeb5787c23f51b1ecb80a5cbdad32
2018-07-20 04:33:52 -07:00
Pritesh Nandgaonkar
3e20ebe970 Move Sample app from iOS to xplat
Summary: Move Sample app from iOS to xplat

Reviewed By: jknoxville

Differential Revision: D8911835

fbshipit-source-id: 2fffff0db0d1193183ddb818438d1b72d8b63ccb
2018-07-19 04:31:00 -07:00
Pritesh Nandgaonkar
89d28d1188 Moved FBDefines to xplat
Summary: Moved FBDefines to xplat

Reviewed By: passy

Differential Revision: D8895202

fbshipit-source-id: 3edfcecade7c67a0ddfc5c64bb4454df65cbcc93
2018-07-19 04:31:00 -07:00
Pritesh Nandgaonkar
322a79b394 Scripts for podspec updation and github tag release
Summary:
This diff adds the support to automate iOS releases. This diff adds two scripts, one for updating all the `podspecs`, and `podfiles` with updated version number. The script also updates the version used in sample and getting started doc file.
The second script publishes a github tag.

Following will be the process for iOS release:-

1. From `fbobjc/Libraries/SonarKit/Scripts` run `sh public-ios-podspec-update.sh`, it will update all the podspecs, podfiles and docs with updated version number. Commit it and land this
2. Once the above changes are landed and synced to github, run `sh push-new-github-tag.sh` from `fbobjc/Libraries/SonarKit/Scripts` to push the tag on github

As a follow up on this diff, ideally, we should trigger second script automatically when the 1st task changes are synced to github.

Reviewed By: jknoxville

Differential Revision: D8879958

fbshipit-source-id: 8f0dc9200e8f64578af33e1446629f09c16c43f2
2018-07-19 04:30:59 -07:00
Diego Sanchez
9e7c2b6982 Wraps receiving callback into an autoreleasepool
Summary: The receiving callbacks are executed from a thread that doesn't have an autorelease pool. That results in autoreleased objects leaking

Reviewed By: schaitoff

Differential Revision: D8889915

fbshipit-source-id: 07e9129954e6f9afea56473b590125c63ecd7092
2018-07-18 08:18:48 -07:00
Pritesh Nandgaonkar
73c830fc1b Use tag in podspecs (#152)
Summary:
This diff uses `tag` instead of master branch and also updates the version number to the desktop sdk.
Pull Request resolved: https://github.com/facebook/Sonar/pull/152

Reviewed By: danielbuechele

Differential Revision: D8820016

Pulled By: priteshrnandgaonkar

fbshipit-source-id: ff2e554be55254b77c4e130b35b7299abbafa77d
2018-07-12 10:18:17 -07:00
John Knox
09c9aad32d iOS: Use separate thread for network connection
Summary:
We currently give sonar one event base from java / obj-c code to use for scheduling tasks.
This causes a problem, because we schedule reconnect tasks on the event base, and then these tasks interact with rsocket which schedules it's own tasks.
The problem is that we're passing rsocket the same event base. So the reconnect code executes and blocks waiting for rsocket to connect.
But rsocket can never connect because it never executes because that thread is blocked, so we get deadlock.

Fixing it by giving both processes their own event base / thread.

Reviewed By: danielbuechele

Differential Revision: D8748355

fbshipit-source-id: b0ad2172087f0103180677438f427c831db7f42c
2018-07-09 07:49:08 -07:00
John Knox
cebc409da6 Change SonarInitConfig to take two EventBases
Summary:
We currently give sonar one event base from java / obj-c code to use for scheduling tasks.
This causes a problem, because we schedule reconnect tasks on the event base, and then these tasks interact with rsocket which schedules it's own tasks.
The problem is that we're passing rsocket the same event base. So the reconnect code executes and blocks waiting for rsocket to connect.
But rsocket can never connect because it never executes because that thread is blocked, so we get deadlock.

This is the first step which just changes the interface to pass two event bases.
The consumers will be changed to pass in different threads next.

Reviewed By: danielbuechele

Differential Revision: D8748350

fbshipit-source-id: 481d6f23644f28fd0f1c786252605287019c999c
2018-07-09 07:49:07 -07:00
Marc Terns
9ad693ca05 CocoaPods Private Repo support (#107)
Summary:
This PR brings us one step closer for publishing SonarKit.podspec to the public Cocoapods master repository. This solves [#93](https://github.com/facebook/Sonar/issues/93).

- [X] `SonarKit.podspec` now lints by passing the `--sources` flag and the `--use-libraries` flag. `pod spec lint  SonarKit.podspec --sources=https://github.com/facebook/Sonar,master --allow-warnings --use-libraries` Same for `pod repo push`.

- [X] `SonarKit.podspec` is now also published to the CocoaPods Private repo. What does this mean? It means that we no longer need to manually define all of `SonarKit` dependencies in the Podfile. It only takes `SonarKit` consumers to add this line `source 'https://github.com/facebook/Sonar.git'` on top of any Podfile, and `SonarKit` will be installed by just defining it with `pod SonarKit`.

- [X] We are publishing a Cocoapods Private Repo in the meantime we don't have all of our dependencies updated and published to the CocoaPods master repo. The CocoaPods Private Repo contains updated dependency podspecs that will need to be published to the CocoaPods master repo in the near future. That will be the next action item in order to have SonarKit.podspec published as well.

- [X] Sample App Podfile has been refactored, much simpler and cleaner.

- [X] SonarKit Framework project now pulls its dependencies from the cocoapods master repository and the temporary private repository instead of the local podspecs. I am able to compile the SonarKit framework project now, before I was unable to.

- [X] Local third party podspec dependencies have been removed.

emilsjolander priteshrnandgaonkar noahsark769 feel free to contribute or expose any concerns.
Closes https://github.com/facebook/Sonar/pull/107

Reviewed By: danielbuechele

Differential Revision: D8694271

Pulled By: priteshrnandgaonkar

fbshipit-source-id: dcccf70d917cad1e27606a29c0b921883bf9a76f
2018-07-02 08:33:07 -07:00
Daniel Buchele
6fda334a00 fbshipit-source-id: 5d9ecf33fca19e4a6b8c979b879ec9dd82af1ef9 2018-06-25 04:33:04 -07:00
Pritesh Nandgaonkar
f520486c2d Fix the xcodeproj of SonarKit (#96)
Summary:
This diff repaces the faulty sonarkit.xcodeproj with the current one. I think ship it synced the xcodeproj which was generated by buck.
Closes https://github.com/facebook/Sonar/pull/96

Reviewed By: emilsjolander

Differential Revision: D8538609

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 9eb049a9770c40b652f999ace9b82207e3a395e5
2018-06-21 06:47:28 -07:00
John Knox
94f03f182b Add nullifyNanAndInf parameter to FBCxxUtils
Summary:
There was an issue with syncing our internal files to github. A change was made in the utils that wasn't synced out, despite the sonar code using the new API.
This brings the util update to github, while I fix the syncing issue. After that there will be a single source of truth so no more sync issues like this can occur.

Reviewed By: priteshrnandgaonkar

Differential Revision: D8541128

fbshipit-source-id: d8509b65035569c4ee9707e5d7eab99fa325da88
2018-06-20 08:37:33 -07:00
Daniel Buchele
6f95ad512f fbshipit-source-id: b14273e883aba6de7b817801a1b04e54a29a6366 2018-06-15 02:23:48 -07:00
Daniel Buchele
5bd6869aeb fbshipit-source-id: d0f4b1833968aae403b114119f4e8cda184361c9 2018-06-13 11:17:05 -07:00
Pritesh Nandgaonkar
8db609ab9b Folly will track master
Summary: OSS used an older release and our code base got updated to some new folly api which was added few days back, so it broke OSS. So this diff will track Folly to master

Reviewed By: danielbuechele

Differential Revision: D8385398

fbshipit-source-id: 9be9a1313b1488fa8b1ca1f681010d0ff7819414
2018-06-13 04:17:10 -07:00
Daniel Buchele
28be3c7cd8 fbshipit-source-id: cad5f527363fe09c2eea5b05ce1f3f2ecb86941b 2018-06-12 11:42:02 -07:00
Daniel Buchele
f7d487dd76 fbshipit-source-id: 2cd940396d650342920b28835f6e672febe6b55c 2018-06-12 03:39:09 -07:00
Pritesh Nandgaonkar
4ae30bd786 remove duplicate code block 2018-06-11 14:28:33 +01:00
Pritesh Nandgaonkar
6463ce890c update the reference from iOS-OSS to master 2018-06-11 11:58:28 +01:00
Pritesh Nandgaonkar
4a989cf8ef update glog podspec 2018-06-07 15:13:18 -04:00
Pritesh Nandgaonkar
03ffb3640a make everything build 2018-06-07 14:15:34 -04:00
Pritesh Nandgaonkar
541a4f1b98 update 2018-06-05 17:02:01 -04:00
Pritesh Nandgaonkar
43086d9c93 update 2018-06-05 15:16:03 -04:00
Pritesh Nandgaonkar
a4efaca1a6 added peertalksonar and specs folder 2018-06-04 23:48:37 -04:00
Pritesh Nandgaonkar
4cafc351b5 Removed EasyWSClient podspec file 2018-06-04 14:32:26 -04:00
Pritesh Nandgaonkar
f34c791167 Remove reference to easywsclient 2018-06-04 14:23:30 -04:00
Pritesh Nandgaonkar
ff2dd0b828 Removed references to local oss and libevent 2018-06-04 14:07:55 -04:00
Pritesh Nandgaonkar
308c101fec It builds 2018-06-04 13:40:13 -04:00
Pritesh Nandgaonkar
b72572e922 It builds 2018-06-04 13:39:21 -04:00
Pritesh Nandgaonkar
8d48f5a3eb Disable peertalk 2018-06-01 18:01:28 +01:00
Pritesh Nandgaonkar
0619529f34 update version 2018-06-01 17:07:16 +01:00
Pritesh Nandgaonkar
5d36d890b3 final 2018-06-01 16:54:50 +01:00
Pritesh Nandgaonkar
04b1ea9915 update 2018-06-01 16:32:41 +01:00
Pritesh Nandgaonkar
9a6f612923 update 2018-06-01 15:52:10 +01:00
Pritesh Nandgaonkar
ef40c5f754 update 2018-06-01 15:51:53 +01:00
Pritesh Nandgaonkar
674eeddd62 update 2018-06-01 15:51:39 +01:00
Daniel Büchele
fbbf8cf16b Initial commit 🎉
fbshipit-source-id: b6fc29740c6875d2e78953b8a7123890a67930f2
Co-authored-by: Sebastian McKenzie <sebmck@fb.com>
Co-authored-by: John Knox <jknox@fb.com>
Co-authored-by: Emil Sjölander <emilsj@fb.com>
Co-authored-by: Pritesh Nandgaonkar <prit91@fb.com>
2018-06-01 11:03:58 +01:00