miwarin / netbsd-gnats-memo

0 stars 0 forks source link

toolchain/47768 build.sh no longer bombs if run as non-root without -U/-E #42

Open miwarin opened 9 years ago

miwarin commented 9 years ago

http://gnats.netbsd.org/47768

ユーザーで実行すると rm -rf するときに怒られる。

rebuildmake で make を rebuild する時の処理である。

validatemakeparams で uid が 0 かどうかチェックしている。

MKUNPRIVED はここではテストするだけなので export しない

  # Normalise MKOBJDIRS, MKUNPRIVED, and MKUPDATE
  # These may be set as build.sh options or in "mk.conf".
  # Don't export them as they're only used for tests in build.sh.
  #
  MKUNPRIVED=$(getmakevar MKUNPRIVED)

  if ${do_build} || ${do_distribution} || ${do_release}; then
    if ! ${do_expertmode} && \
        [ "$id_u" -ne 0 ] && \
        [ "${MKUNPRIVED}" = "no" ] ; then
      bomb "-U or -E must be set for build as an unprivileged user."
    fi
  fi

  if ${do_install} && [ "$id_u" -ne 0 ] ; then
    if ${do_expertmode}; then
      warning "Will install as an unprivileged user."
    else
      bomb "-E must be set for install as an unprivileged user."
    fi
  fi

main の順番は以下のとおり

rebuildmake のあとに validatemakeparams が呼ばれる。

main()
  sanitycheck
  rebuildmake
  validatemakeparams
miwarin commented 9 years ago

http://cvsweb.netbsd.org/bsdweb.cgi/src/build.sh?rev=1.275&content-type=text/x-cvsweb-markup&only_with_tag=MAIN

このコミットにより MKUNPRIVED チェックは sanitycheck() から validatemakeparams() へ移動された。sanitycheck() ではまだ /etc/mk.conf 読んでないし コマンドラインから設定された値が評価されていないから。