Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 40 additions & 3 deletions dev/archery/archery/crossbow/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -738,14 +738,16 @@ class Target(Serializable):
(currently only an email address where the notification should be sent).
"""

def __init__(self, head, branch, remote, version, email=None):
def __init__(self, head, branch, remote, version, r_version, email=None):
self.head = head
self.email = email
self.branch = branch
self.remote = remote
self.github_repo = "/".join(_parse_github_user_repo(remote))
self.version = version
self.r_version = r_version
self.no_rc_version = re.sub(r'-rc\d+\Z', '', version)
self.no_rc_r_version = re.sub(r'-rc\d+\Z', '', r_version)
# TODO(ARROW-17552): Remove "master" from default_branch after
# migration to "main".
self.default_branch = ['main', 'master']
Expand Down Expand Up @@ -791,8 +793,39 @@ def from_repo(cls, repo, head=None, branch=None, remote=None, version=None,
if email is None:
email = repo.user_email

version_dev_match = re.match(r".*\.dev(\d+)$", version)
if version_dev_match:
with open(f"{repo.path}/r/DESCRIPTION") as description_file:
description = description_file.read()
r_version_pattern = re.compile(r"^Version:\s*(.*)$",
re.MULTILINE)
r_version = re.findall(r_version_pattern, description)[0]
if r_version:
version_dev = int(version_dev_match[1])
# "1_0000_00_00 +" is for generating a greater version
# than YYYYMMDD. For example, 1_0000_00_01
# (version_dev == 1 case) is greater than 2022_10_16.
#
# Why do we need a greater version than YYYYMMDD? It's
# for keeping backward compatibility. We used
# MAJOR.MINOR.PATCH.YYYYMMDD as our nightly package
# version. (See also ARROW-16403). If we use "9000 +
# version_dev" here, a developer that used
# 9.0.0.20221016 can't upgrade to the later nightly
# package unless we release 10.0.0. Because 9.0.0.9234
# or something is less than 9.0.0.20221016.
r_version_dev = 1_0000_00_00 + version_dev
# version: 10.0.0.dev234
# r_version: 9.0.0.9000
# -> 9.0.0.100000234
r_version = re.sub(r"\.9000\Z", f".{r_version_dev}", r_version)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This version is only used for nightly builds (which are uploaded to nightlies.a.o) and for crossbow jobs triggered manually right? Is there a reason we need to move to the "dev version" numbering or could we just use datetime to stick with the existing YYYYMMDD numbering?

Suggested change
r_version = re.sub(r"\.9000\Z", f".{r_version_dev}", r_version)
r_version = re.sub(r"\.9000\Z", f".{date.today().strftime('%Y%m%d')}", r_version)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This version is only used for nightly builds (which are uploaded to nightlies.a.o) and for crossbow jobs triggered manually right?

Right.

Is there a reason we need to move to the "dev version" numbering or could we just use datetime to stick with the existing YYYYMMDD numbering?

  1. Consistency:
  2. To identify the exact commit:
    • If we have multiple Apache Arrow R related commits (including Apache Arrow C++ related commits) in a day, we need to extra work to identify the commit of a nightly package with YYYYMMDD version.
    • If we use the "dev version", we can identify the commit of a nightly package without extra work.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK I see, thanks for explaining. I have no strong opinion on this. @nealrichardson what do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As long as the x.y.z version number is the same as the current release and the "dev version" in the nightly is > 9000, I don't feel strongly. It's not clear to me how it's less work to turn 100000234 into a specific commit than it is to convert YYYYMMDD--still gotta look that up somewhere--in practice all that matters is that the nightly package version number is greater than last night's release and less than the next major release.

Copy link
Member Author

@kou kou Oct 19, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, sorry. "without extra work" is exaggerated...

We need to do the following to show the commit for 1000000234:

$ git log "master~$[$(git describe --tags master | cut -d- -f4) - (1000000234 - 1000000000)]"

I'll resolve conflict and merge this for 10.0.0.

If we find any problem with this approach, we can try another approach for 11.0.0 or later.

else:
r_version = version
else:
r_version = version

return cls(head=head, email=email, branch=branch, remote=remote,
version=version)
version=version, r_version=r_version)

def is_default_branch(self):
# TODO(ARROW-17552): Switch the condition to "is" instead of "in"
Expand Down Expand Up @@ -1105,7 +1138,10 @@ def from_config(cls, config, target, tasks=None, groups=None, params=None):
'version': target.version,
'no_rc_version': target.no_rc_version,
'no_rc_semver_version': target.no_rc_semver_version,
'no_rc_snapshot_version': target.no_rc_snapshot_version}
'no_rc_snapshot_version': target.no_rc_snapshot_version,
'r_version': target.r_version,
'no_rc_r_version': target.no_rc_r_version,
}
for task_name, task in task_definitions.items():
task = task.copy()
artifacts = task.pop('artifacts', None) or [] # because of yaml
Expand Down Expand Up @@ -1260,6 +1296,7 @@ def validate(self):
branch='master',
remote='https://github.com/apache/arrow',
version='1.0.0dev123',
r_version='0.13.0.100000123',
email='[email protected]'
)
job = Job.from_config(config=self,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ target: !Target
branch: refs/pull/4435/merge
remote: https://github.com/apache/arrow
version: 0.13.0.dev306
r_version: 0.12.0.100000306
no_rc_version: 0.13.0.dev306
no_rc_r_version: 0.12.0.100000306
tasks:
docker-cpp-cmake32: !Task
ci: circle
Expand Down Expand Up @@ -64,4 +66,4 @@ branch: ursabot-1
_queue: !Queue
path: the_path
github_token: xxxxxxxxx
_remote_url: https://github.com/apache/crossbow
_remote_url: https://github.com/apache/crossbow
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ target: !Target
branch: refs/pull/4435/merge
remote: https://github.com/apache/arrow
version: 0.13.0.dev306
r_version: 0.12.0.100000306
no_rc_version: 0.13.0.dev306
no_rc_r_version: 0.12.0.100000306
tasks:
docker-cpp-cmake32: !Task
ci: circle
Expand Down Expand Up @@ -64,4 +66,4 @@ branch: ursabot-1
_queue: !Queue
path: the_path
github_token: xxxxxxxxx
_remote_url: https://github.com/apache/crossbow
_remote_url: https://github.com/apache/crossbow
12 changes: 8 additions & 4 deletions dev/tasks/macros.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ on:
rm -f apache-arrow*.rb.bak
{% endmacro %}

{%- macro github_change_r_pkg_version(is_fork, version = '\\2.\'\"$(date +%Y%m%d)\"\'' ) -%}
{%- macro github_change_r_pkg_version(is_fork, version) -%}
- name: Modify version
shell: bash
run: |
Expand Down Expand Up @@ -339,12 +339,16 @@ on:
# tree not available in git-bash on windows
run: |
ls -R repo
- name: Add dev repo to .Rprofile
- name: Add repos to .Rprofile
shell: Rscript {0}
run: |
str <- paste0("options(arrow.dev_repo ='file://", getwd(), "/repo' )")
print(str)
profile_path <- file.path(getwd(), ".Rprofile")
repo <- paste0("file://", getwd(), "/repo")
str <- paste0("options(arrow.repo = '", repo, "' )")
print(str)
write(str, file = profile_path, append = TRUE)
str <- paste0("options(arrow.dev_repo = '", repo, "' )")
print(str)
write(str, file = profile_path, append = TRUE)
# Set envvar for later steps by appending to $GITHUB_ENV
write(paste0("R_PROFILE_USER=", profile_path), file = Sys.getenv("GITHUB_ENV"), append = TRUE)
Expand Down
8 changes: 2 additions & 6 deletions dev/tasks/r/github.packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@

{% import 'macros.jinja' as macros with context %}

# This allows us to set a custom version via param:
# crossbow submit --param custom_version=8.5.3 r-binary-packages
# if the param is unset defaults to the usual Ymd naming scheme
{% set package_version = custom_version|replace("Unset", "\\2.\'\"$(date +%Y%m%d)\"\'") %}
{% set is_fork = macros.is_fork %}

{{ macros.github_header() }}
Expand All @@ -35,7 +31,7 @@ jobs:
pkg_version: {{ '${{ steps.save-version.outputs.pkg_version }}' }}
steps:
{{ macros.github_checkout_arrow()|indent }}
{{ macros.github_change_r_pkg_version(is_fork, package_version)|indent }}
{{ macros.github_change_r_pkg_version(is_fork, arrow.no_rc_r_version)|indent }}
- name: Save Version
id: save-version
shell: bash
Expand Down Expand Up @@ -281,7 +277,7 @@ jobs:
{{ macros.github_test_r_src_pkg()|indent(8) }}
'
- name: Upload binary artifact
if: matrix.config.devtoolset
if: matrix.config.devtoolset
uses: actions/upload-artifact@v3
with:
name: r-pkg_centos7
Expand Down
22 changes: 11 additions & 11 deletions dev/tasks/tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -957,17 +957,17 @@ tasks:
params:
custom_version: Unset
artifacts:
- r-lib__libarrow__bin__windows__arrow-[0-9\.]+\.zip
- r-lib__libarrow__bin__centos-7__arrow-[0-9\.]+\.zip
- r-lib__libarrow__bin__ubuntu-18.04__arrow-[0-9\.]+\.zip
- r-lib__libarrow__bin__ubuntu-22.04__arrow-[0-9\.]+\.zip
- r-pkg__bin__windows__contrib__4.1__arrow_[0-9\.]+\.zip
- r-pkg__bin__windows__contrib__4.2__arrow_[0-9\.]+\.zip
- r-pkg__bin__macosx__contrib__4.1__arrow_[0-9\.]+\.tgz
- r-pkg__bin__macosx__contrib__4.2__arrow_[0-9\.]+\.tgz
- r-pkg__bin__macosx__big-sur-arm64__contrib__4.1__arrow_[0-9\.]+\.tgz
- r-pkg__bin__macosx__big-sur-arm64__contrib__4.2__arrow_[0-9\.]+\.tgz
- r-pkg__src__contrib__arrow_[0-9\.]+\.tar\.gz
- r-lib__libarrow__bin__windows__arrow-{no_rc_r_version}\.zip
- r-lib__libarrow__bin__centos-7__arrow-{no_rc_r_version}\.zip
- r-lib__libarrow__bin__ubuntu-18.04__arrow-{no_rc_r_version}\.zip
- r-lib__libarrow__bin__ubuntu-22.04__arrow-{no_rc_r_version}\.zip
- r-pkg__bin__windows__contrib__4.1__arrow_{no_rc_r_version}\.zip
- r-pkg__bin__windows__contrib__4.2__arrow_{no_rc_r_version}\.zip
- r-pkg__bin__macosx__contrib__4.1__arrow_{no_rc_r_version}\.tgz
- r-pkg__bin__macosx__contrib__4.2__arrow_{no_rc_r_version}\.tgz
- r-pkg__bin__macosx__big-sur-arm64__contrib__4.1__arrow_{no_rc_r_version}\.tgz
- r-pkg__bin__macosx__big-sur-arm64__contrib__4.2__arrow_{no_rc_r_version}\.tgz
- r-pkg__src__contrib__arrow_{no_rc_r_version}\.tar\.gz


########################### Release verification ############################
Expand Down
2 changes: 1 addition & 1 deletion r/tools/nixlibs.R
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ dev_version <- package_version(VERSION)[1, 4]
# Small dev versions are added for R-only changes during CRAN submission.
if (is.na(dev_version) || dev_version < 100) {
VERSION <- package_version(VERSION)[1, 1:3]
arrow_repo <- sprintf("https://apache.jfrog.io/artifactory/arrow/r/%s/libarrow/", VERSION)
arrow_repo <- paste0(getOption("arrow.repo", sprintf("https://apache.jfrog.io/artifactory/arrow/r/%s", VERSION)), "/libarrow/")
} else {
arrow_repo <- paste0(getOption("arrow.dev_repo", "https://nightlies.apache.org/arrow/r"), "/libarrow/")
}
Expand Down
5 changes: 4 additions & 1 deletion r/tools/winlibs.R
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ if (!file.exists(sprintf("windows/arrow-%s/include/arrow/api.h", VERSION))) {
"/libarrow/bin/windows/arrow-%s.zip"
)
# %1$s uses the first variable for both substitutions
artifactory <- "https://apache.jfrog.io/artifactory/arrow/r/%1$s/libarrow/bin/windows/arrow-%1$s.zip"
artifactory <- paste0(
getOption("arrow.repo", "https://apache.jfrog.io/artifactory/arrow/r/%1$s"),
"/libarrow/bin/windows/arrow-%1$s.zip"
)
rwinlib <- "https://github.com/rwinlib/arrow/archive/v%s.zip"

dev_version <- package_version(VERSION)[1, 4]
Expand Down