Граф коммитов

3614 Коммитов

Автор SHA1 Сообщение Дата
Jonathan Pobst 1c06de42cb [binderator] Don't bump dependencies when running `dotnet cake -t=bump-config`. 2024-09-13 07:27:45 -10:00
Jonathan Pobst 8d465e83de
Move remaining GPS packages to AndroidX repository. (#955)
"Pause" migrating everything to a common template, and pivot to moving the remaining packages from the GPS repository to the AndroidX repository.  This should enable us to eliminate the circular dependencies between the two repositories which should help fix the majority of the https://github.com/xamarin/AndroidX/issues/764 issues going forward.

Bring in the GPS and Glide templates as new "templateSet", and merge in all the build infrastructure pieces that the GPS repository had to make it build correctly.
2024-09-13 07:22:56 -10:00
moljac 83b969e940
Merge pull request #958 from xamarin/mu-20240908-sign-list-update
Update SignList.xml with data from GPS-FB-MLKit
2024-09-08 19:50:21 +02:00
moljac d34ee53d8a update SignList.xml with data from GPS-FB-MLKit 2024-09-08 16:10:14 +02:00
moljac 3b537fc643
Merge pull request #957 from xamarin/wsu-20240906
Weekly Stable Updates 20240906
2024-09-08 00:03:56 +02:00
moljac 32544ecb21 automatic files 2024-09-07 18:13:16 +02:00
moljac 58e7ed0a9e spell checks 2024-09-07 18:13:08 +02:00
moljac 5777afcdfc exoplayer metadata 2024-09-07 18:13:01 +02:00
moljac c7b75f6cc5 nuget id fix 2024-09-07 17:35:20 +02:00
moljac 445fa87673 metadata fixes 2024-09-07 13:59:37 +02:00
moljac 8dffcae4bc binderator green 2024-09-07 13:59:25 +02:00
Jonathan Pobst 558552190f
Move second batch of GPS package-specific templates to AndroidX default template. (#950)
Move the packages in GPS that use the following package-specific templates to this repository and switch them to using the default template:

- brotli
- chromium-cronet
- codehaus-mojo
- datatransport
- flatbuffers
- grpc
- opencensus
- perfmark
- protobuf-lite
- squareup-okhttp
- squareup-okhttp3
- squareup-picasso
- squareup-retrofit
- squareup-retrofit2
- squareup-okio
- squareup-javapoet
- tensorflow-lite
- user-messaging-platform
- zxing

One wrinkle is that AndroidX does not allow a stable package to depend on a prerelease package:

```xml
<!-- Warnings we want to error on: -->
<!-- NU5104: A stable release of a package should not have a prerelease dependency. -->
<WarningsAsErrors>$(WarningsAsErrors);NU5104</WarningsAsErrors>
```

Although we should always abide by this rule, we are bound by Google's packaging decisions and sometimes we have no choice.  The `Xamarin.TensorFlow.Lite.Support.Api` and `Xamarin.TensorFlow.Lite.Task.Vision.PlayServices.Library` packages we are moving from GPS have a prerelease dependency. (GPS repository does not enforce this rule.)

In order to keep this rule globally, but allow packages to opt out of it, add the `allowPrereleaseDependencies` artifact-level field to `config.json`:

```json
{
    "groupId": "org.tensorflow",
    "artifactId": "tensorflow-lite-task-vision-play-services",
    "version": "0.4.4",
    "nugetVersion": "0.4.4.6",
    "nugetId": "Xamarin.TensorFlow.Lite.Task.Vision.PlayServices.Library",
    "allowPrereleaseDependencies": true,
    "comments": "Depends on Xamarin.Google.Android.ODML.Image which only has a prerelease version.",
    ...
}
```

Companion PR that removes these packages from GPS: https://github.com/xamarin/GooglePlayServicesComponents/pull/906
2024-09-05 08:33:33 -10:00
moljac 5b769b2b46
Merge pull request #949 from ne0rrmatrix/FixIPLayerListener
Refactor Player.Listener and update metadata
2024-09-04 20:37:55 +02:00
moljac 454c543fe1
Merge branch 'main' into FixIPLayerListener 2024-09-04 20:37:42 +02:00
Jonathan Pobst e12f2f02bd
Move first batch of GPS package-specific templates to AndroidX default template. (#947)
Move the packages in GPS that use the following package-specific templates to this repository and switch them to using the default template:

- annotations
- aopalliance
- dagger
- errorprone
- findbugs
- inject-guice
- jakarta
- javax-inject
- ow2-asm

Companion PR that removes them from GPS: https://github.com/xamarin/GooglePlayServicesComponents/pull/905
2024-09-04 07:15:13 -10:00
James Crutchley 5819be8824
Merge branch 'main' into FixIPLayerListener 2024-09-02 02:08:22 -07:00
moljac c1abaecdfe
Merge pull request #951 from xamarin/mu-20240820
Weekly stable updates 20240820
2024-09-02 10:04:13 +02:00
moljac 7597a276da improved metadata fixes 2024-08-31 20:11:00 +02:00
moljac 1cb922aa76 automatic files 2024-08-31 15:09:15 +02:00
moljac 3d5b653004
Merge branch 'main' into mu-20240820 2024-08-30 14:16:24 +02:00
moljac 07528dba8c automagic files 2024-08-30 14:09:15 +02:00
moljac 779abba70b metadata fixes 2024-08-30 14:08:36 +02:00
moljac 3fa14f0e8d final fix 2024-08-30 14:08:06 +02:00
moljac d9b273468d Create Metadata.xml 2024-08-30 10:34:51 +02:00
moljac b79b28cfa9 ExoPLayer Dash metadata 2024-08-29 23:48:32 +02:00
moljac 26528232d6 more metadata fixes 2024-08-29 22:50:03 +02:00
James Crutchley 98da3c6c19
Remove incorrect `<attr>` an fix `Player.listener` to only remove the depracted method and not the one that is not deprecated. 2024-08-28 14:20:31 -07:00
James Crutchley be15bd89d0
- Removed `remove-node` directive for `onCues` method. 2024-08-28 07:44:16 -07:00
James Crutchley 379c161944
Refactor Player.Listener and update metadata
- Removed `onCues` method in `Player.Listener`.
- Removed `onPositionDiscontinuity` method from `Player.Listener`.
- Added `<remove-node>` tags to address issues with `Media3.ExoPlayer`.
- Made all methods in `Player.Listener` interface abstract.
2024-08-28 04:02:08 -07:00
moljac c78413c3ac metadata fixes 2024-08-28 12:29:51 +02:00
moljac cb994487bf binderagtor green 2024-08-28 12:29:36 +02:00
moljac 0febd63147
Merge pull request #948 from xamarin/mu-20240826-alignment-bumps
Manual updates 20240826 alignment bumps
2024-08-28 08:37:31 +02:00
moljac 95a1238889 automatic files 2024-08-27 09:04:20 +02:00
moljac 6c6a135db7 fix for local builds to use generated nugets which are published as preview 2024-08-27 09:04:07 +02:00
moljac 6838af43e2 binderator green 2024-08-27 09:03:22 +02:00
Jonathan Pobst d126bba06d
Track latest versions of GPS dependencies. (#946) 2024-08-23 07:09:39 -10:00
Jonathan Pobst ac1f49730b
Remove some package-specific templates. (#943)
Remove the following package-specific templates in favor of using the default template:

- accompanist
- antmedia-rtpm-client
- auto-value
- dev-chrisbanes-snapper
- flogger
- napier
- reactive-streams
- rxjava
- tink

Additionally, the `Xamarin.Android.ReactiveX.RxJava` NuGet package was relying on a `<JavaSourceJar>` for some parameter names.  

Add the artifact-level `documentationType` field to `config.json` that can be specified if a `<JavaSourceJar>` or `<JavaDocJar>` is needed.  The default value is `none`, the values `javasource` and `javadoc` are supported.
2024-08-22 19:10:43 -10:00
Jonathan Pobst d8ae98125e
[binderator] Tweaks to `update-config` console output. (#945)
Make 2 tweaks to the `update-config` console output.  Note these do not affect anything that is written to `config.json`, just what is written to the console.

- Add number of packages and dependencies to table header:

```console
| 340 Packages (* = Has Update)                              | Currently Bound   | Latest Stable   |
|------------------------------------------------------------|-------------------|-----------------|
| androidx.activity.activity                                 | 1.9.1             | 1.9.1           |
...

| 18 Dependencies (* = Has Update)                           | Current Reference | Latest Publish  |
|------------------------------------------------------------|-------------------|-----------------|
| Xamarin.GooglePlayServices.Ads.Identifier                  | 118.1.0.1         | 118.1.0.1       |
...
```

- Show if there are updates available for "Frozen" packages.  Previously it would just show as frozen and not show if there were updates available.

```console
// Previous behavior
| # com.google.android.material.material                     | 1.11.0            | 1.11.0          |

// New behavior
| #* com.google.android.material.material                    | 1.11.0            | 1.12.0          |
```
2024-08-22 19:10:20 -10:00
Jonathan Pobst a9594744db
[binderator] Add binding type and use it to remove 'gson' template. (#941)
Some of the final pieces needed to start removing package-specific templates:

- We use the top level `mavenRepositoryType` to default all packages to Google's Maven, and then use the templates to override this to `MavenCentral`. Without templates we will need to specify this directly on the artifact, so add support for an artifact level `mavenRepositoryType`.

- We have several different "types" of packages that we create today:
  - `EmbeddedJar` - Basic use of `<EmbeddedJar>` to include the Java payload in the NuGet package next to the managed bindings `.dll`. (This is equivalent to the preferred `<AndroidLibrary>` in .NET 6+.)
  - `Targets` - Uses `<InputJar>` to create the binding `.dll` and `<None>` to add the Java payload manually into the NuGet package and uses a `.targets` file to add it to the Android application.
  - `NoBindings` - Uses `<None>` to add the Java payload manually into the NuGet package and uses a `.targets` file to add it to the Android application. Does not create managed bindings.
  - `XBD` - Uses `<InputJar>` to create the binding `.dll`. The Java payload is not included in the NuGet package. Instead a `.targets` file is used to download the payload at compile time using `Xamarin.Build.Download`.

The default package type is `targets`, which is what the current default template uses. That is, this is the one that all AndroidX packages currently use.

To specify a different package type, we add a new artifact level `type` attribute. The only currently supported value for this is `androidlibrary` which provides the `EmbeddedJar` package type behavior.

As a proof of concept, migrate `GoogleGson` from the `gson` template to the default template.

### Results
Before:
```json
{
  "groupId": "com.google.code.gson",
  "artifactId": "gson",
  "version": "2.11.0",
  "nugetVersion": "2.11.0.1",
  "nugetId": "GoogleGson",
  "dependencyOnly": false,
  "templateSet": "gson"
}
```
![image](https://github.com/user-attachments/assets/968d3251-52fc-449f-a629-f28c86b44321)

After:
```json
{
  "groupId": "com.google.code.gson",
  "artifactId": "gson",
  "version": "2.11.0",
  "nugetVersion": "2.11.0.1",
  "nugetId": "GoogleGson",
  "dependencyOnly": false,
  "type": "androidlibrary",
  "mavenRepositoryType": "MavenCentral"
}
```
![image](https://github.com/user-attachments/assets/97bed63c-10c3-4827-992c-669f153f8c12)
2024-08-22 08:36:57 -10:00
Jonathan Pobst ff23d907e5
Remove 'update-config.csx'. (#942)
The `update-config.csx` script should no longer be used in AndroidX repository.

Instead, use one of the following:

- `dotnet cake -t=update-config`
- `dotnet cake -t=bump-config`
- `dotnet cake -t=sort-config`
- `dotnet cake -t=published-config`

Commands are documented [here](https://github.com/xamarin/AndroidX/blob/main/BUILDING.md).
2024-08-21 09:07:51 -10:00
moljac f70f4e6e49
Merge pull request #936 from xamarin/wsu-20240806
Weeklt Stable Updates 20240806
2024-08-19 20:01:00 +02:00
moljac 0404d81f34
Merge branch 'main' into wsu-20240806 2024-08-18 10:42:05 +02:00
Jonathan Pobst 874077d409
[ci] Update to latest .NET 8: 8.0.400. (#934) 2024-08-16 07:45:31 -10:00
Jonathan Pobst c894fc35d8
[binderator] Generate 'THIRD-PARTY-NOTICES' from POM information. (#937)
Instead of manually maintaining licensing information for packages, pull the license information from the package's POM file.  This information looks like:

```xml
<licenses>
  <license>
    <name>The Apache Software License, Version 2.0</name>
    <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    <distribution>repo</distribution>
  </license>
</licenses>
```

We need to be able to "understand" this license and properties about it, like its SPDX identifier and whether it is proprietary or not.  To do this, we match the license name to a new section in `config.json`:

```json
"licenses": [
  {
    "name": "The Apache Software License, Version 2.0",
    "file": "templates/licenses/apache-2.0.txt",
    "spdx": "Apache-2.0",
    "proprietary": false
  }, ...
]
```

Note there may be multiple entries for the "same" license, as different POM files may give it a slightly different name.

These license entries also point to a local copy of the license text that we can use to build `THIRD-PARTY-NOTICES.txt` when `binderator` runs.

Modify the project template to include the generated `THIRD-PARTY-NOTICES.txt` which contains the correct notices for each package rather than the generic repo `External-Dependency-Info.txt` which was not correct for packages not licensed under Apache-2.0.

Finally, if the package is open source and all its license(s) have valid SPDX identifiers, calculate the compound SPDX expression and apply it to the package with `<PackageLicenseExpression>`. If not, use `<PackageLicenseFile>` instead.  (SPDX doesn't allow a "proprietary" identifier.)

Note in some cases we may not be able to automatically pull license information from the POM. In these cases we can override the POM information with a new `overrideLicenses` entry on an artifact in `config.json`:

```json
"overrideLicenses": [
  "Apache 2.0|http://www.apache.org/licenses/LICENSE-2.0.txt"
],
```

The format is `{license name}|{license url}`.
2024-08-16 07:45:06 -10:00
moljac f8055598f0 fix to exclude recursive nuget api-scans (some GPS-FB-MLKit packages were scanned) 2024-08-15 14:09:44 +02:00
moljac 97f68edf37
Merge branch 'main' into wsu-20240806 2024-08-14 21:25:48 +02:00
Jonathan Pobst 8910d0537d
[Tests] Fix path separator issues on Mac. (#939) 2024-08-14 09:07:29 -10:00
moljac 05d57bfd47
Merge branch 'main' into wsu-20240806 2024-08-13 20:21:30 +02:00
moljac a2678906ba automatic files 2024-08-13 20:18:48 +02:00
moljac 0dc854e987 spel checking 2024-08-13 20:18:37 +02:00