見出し画像

Robots.txt | Failed to checkout tag: 'master'

Google Robots.txt Parser and Matcher Library をGitHub Actionsでdocker buildしていた際に以下のエラーになったので対処方法のメモです。

CMake Error at googletest-prefix/tmp/googletest-gitclone.cmake:75 (message):
  Failed to checkout tag: 'master'

対処方法としては以下のコマンドをDockerfileに追記しておきます。

sed -i -e 21s/master/main/ CMakeLists.txt.in

調査内容

このようなISSUE もありました。branchのmasterがmainに変更になった影響のようです。ただ、各自で修正して対応しているようなので自分で対処することにします。

ざっくりリポジトリ内をmasterで検索するとCMakeLists.txt.inが見付かったので最初はファイル内のmasterを全てmainに置換しましたが、次は以下のエラーとなりました。

fatal: invalid reference: main
CMake Error at abseilcpp-prefix/tmp/abseilcpp-gitclone.cmake:75 (message):
  Failed to checkout tag: 'main'

やりすぎだったようで、元々エラーが出ていた方だけ変更するため行番号も確認しておきます。

root@0802362ad642:~/robotstxt# cat -n CMakeLists.txt.in 
     1
     2  PROJECT(dependency-downloader NONE)
     3  CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
     4
     5  INCLUDE(ExternalProject)
     6
     7  ExternalProject_Add(abseilcpp
     8      GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
     9      GIT_TAG master
    10      GIT_PROGRESS 1
    11      SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/abseil-cpp-src"
    12      BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/abseil-cpp-build"
    13      CONFIGURE_COMMAND ""
    14      BUILD_COMMAND ""
    15      INSTALL_COMMAND ""
    16      TEST_COMMAND ""
    17  )
    18
    19  ExternalProject_Add(googletest
    20      GIT_REPOSITORY https://github.com/google/googletest.git
    21      GIT_TAG master
    22      GIT_PROGRESS 1
    23      SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/gtest-src"
    24      BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/gtest-build"
    25      CONFIGURE_COMMAND ""
    26      BUILD_COMMAND ""
    27      INSTALL_COMMAND ""
    28      TEST_COMMAND ""
    29  )
    30

確認の上、最初のコマンドを試してみると以下のようになりました。
(21行目がmainに変わっています)

root@0802362ad642:~/robotstxt# cat -n CMakeLists.txt.in 
     1
     2  PROJECT(dependency-downloader NONE)
     3  CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
     4
     5  INCLUDE(ExternalProject)
     6
     7  ExternalProject_Add(abseilcpp
     8      GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
     9      GIT_TAG master
    10      GIT_PROGRESS 1
    11      SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/abseil-cpp-src"
    12      BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/abseil-cpp-build"
    13      CONFIGURE_COMMAND ""
    14      BUILD_COMMAND ""
    15      INSTALL_COMMAND ""
    16      TEST_COMMAND ""
    17  )
    18
    19  ExternalProject_Add(googletest
    20      GIT_REPOSITORY https://github.com/google/googletest.git
    21      GIT_TAG main
    22      GIT_PROGRESS 1
    23      SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/gtest-src"
    24      BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/gtest-build"
    25      CONFIGURE_COMMAND ""
    26      BUILD_COMMAND ""
    27      INSTALL_COMMAND ""
    28      TEST_COMMAND ""
    29  )
    30

これでDockerfileを変更しておきます。

RUN set -x \
  && git clone https://github.com/google/robotstxt.git /usr/local/src/robotstxt \
  && sed -i -e 21s/master/main/ /usr/local/src/robotstxt/CMakeLists.txt.in \
  && mkdir /usr/local/src/robotstxt/c-build \
  && cd /usr/local/src/robotstxt/c-build \
  && cmake .. -DROBOTS_BUILD_TESTS=ON \
  && make \
  && make test \
  && :

pushしてGitHub Actionsの実行結果を見ると成功しました。

この記事が気に入ったらサポートをしてみませんか?