BazelCon 2022 16-17 নভেম্বর নিউ ইয়র্ক এবং অনলাইনে আসছে।
নিবন্ধন আজ!

http সংগ্রহস্থলের নিয়ম

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

নিম্নলিখিত ফাংশনগুলি @bazel_tools//tools/build_defs/repo:http.bzl থেকে লোড করা যেতে পারে।

http_archive

http_archive(name, add_prefix, auth_patterns, build_file, build_file_content, canonical_id,
             integrity, netrc, patch_args, patch_cmds, patch_cmds_win, patch_tool, patches,
             remote_patch_strip, remote_patches, sha256, strip_prefix, type, url, urls,
             workspace_file, workspace_file_content)

একটি সংকুচিত সংরক্ষণাগার ফাইল হিসাবে একটি Bazel সংগ্রহস্থল ডাউনলোড করে, এটিকে ডিকম্প্রেস করে এবং এর লক্ষ্যগুলিকে বাইন্ডিংয়ের জন্য উপলব্ধ করে।

এটি নিম্নলিখিত ফাইল এক্সটেনশনগুলিকে সমর্থন করে: "zip" , "jar" , "war" , "aar" , "tar" , "tar.gz" tar.gz" , "tgz" , "tar.xz" , "txz" , "tar.zst" , "tzst" , tar.bz2 , "ar" , বা "deb"

উদাহরণ: ধরুন বর্তমান রিপোজিটরিতে একটি চ্যাট প্রোগ্রামের সোর্স কোড রয়েছে, ~/chat-app ডিরেক্টরিতে রুট করা আছে। এটি একটি SSL লাইব্রেরির উপর নির্ভর করতে হবে যা http://example.com/openssl.zip থেকে পাওয়া যায়। এই .zip ফাইলটিতে নিম্নলিখিত ডিরেক্টরি কাঠামো রয়েছে:

  WORKSPACE
  src/
    openssl.cc
    openssl.h

স্থানীয় সংগ্রহস্থলে, ব্যবহারকারী একটি openssl.BUILD ফাইল তৈরি করে যাতে নিম্নলিখিত লক্ষ্য সংজ্ঞা রয়েছে:

  cc_library(
      name = "openssl-lib",
      srcs = ["src/openssl.cc"],
      hdrs = ["src/openssl.h"],
  )

~/chat-app সংগ্রহস্থলের লক্ষ্যগুলি এই লক্ষ্যের উপর নির্ভর করতে পারে যদি নিম্নলিখিত লাইনগুলি ~/chat-app/WORKSPACE এ যোগ করা হয়:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

  http_archive(
      name = "my_ssl",
      url = "http://example.com/openssl.zip",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      build_file = "@//:openssl.BUILD",
  )

তারপর লক্ষ্যগুলি @my_ssl//:openssl-lib নির্ভরতা হিসাবে নির্দিষ্ট করবে।

গুণাবলী

name নাম ; প্রয়োজনীয়

এই সংগ্রহস্থল জন্য একটি অনন্য নাম.

add_prefix স্ট্রিং; ঐচ্ছিক

রিপোজিটরি ডিরেক্টরির সাথে সম্পর্কিত গন্তব্য ডিরেক্টরি। আর্কাইভের মধ্যে ফাইল পাথগুলিতে `strip_prefix` (যদি থাকে) প্রয়োগ করার পরে সংরক্ষণাগারটি এই ডিরেক্টরিতে আনপ্যাক করা হবে। উদাহরণস্বরূপ, `foo-1.2.3/src/foo.h` ফাইলটি `bar/src/foo.h` এ আনপ্যাক করা হবে যদি `add_prefix = "bar"` এবং `strip_prefix = "foo-1.2.3"` .

auth_patterns অভিধান: স্ট্রিং -> স্ট্রিং ; ঐচ্ছিক

একটি ঐচ্ছিক ডিক্ট ম্যাপিং হোস্ট নাম কাস্টম অনুমোদন নিদর্শন. যদি একটি URL এর হোস্টের নাম এই ডিক্টে উপস্থিত থাকে তবে HTTP অনুরোধের জন্য অনুমোদন শিরোনাম তৈরি করার সময় মানটি একটি প্যাটার্ন হিসাবে ব্যবহার করা হবে। এটি অনেক সাধারণ ক্লাউড স্টোরেজ প্রদানকারীতে ব্যবহৃত কাস্টম অনুমোদন স্কিম ব্যবহার করতে সক্ষম করে। প্যাটার্নটি বর্তমানে 2টি টোকেন সমর্থন করে: <login> এবং <password> , যা একই হোস্ট নামের জন্য netrc ফাইলে তাদের সমতুল্য মান দিয়ে প্রতিস্থাপিত হয়। বিন্যাস করার পরে, ফলাফলটি HTTP অনুরোধের Authorization ক্ষেত্রের মান হিসাবে সেট করা হয়। একটি bearer টোকেন ব্যবহার করে একটি oauth2 সক্ষম API-তে http ডাউনলোডের জন্য অ্যাট্রিবিউট এবং netrc উদাহরণ:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
চূড়ান্ত HTTP অনুরোধে নিম্নলিখিত শিরোনাম থাকবে:
Authorization: Bearer RANDOM-TOKEN

build_file লেবেল ; ঐচ্ছিক

এই রিপোজিটরির জন্য BUILD ফাইল হিসেবে যে ফাইলটি ব্যবহার করতে হবে। এই অ্যাট্রিবিউটটি একটি পরম লেবেল (প্রধান রেপোর জন্য '@//' ব্যবহার করুন)। ফাইলটির BUILD নামকরণের প্রয়োজন নেই, তবে হতে পারে (BUILD.new-repo-name এর মতো কিছু এটিকে রিপোজিটরির প্রকৃত BUILD ফাইল থেকে আলাদা করার জন্য ভাল কাজ করতে পারে। হয় build_file বা build_file_content নির্দিষ্ট করা যেতে পারে, তবে উভয়ই নয়।

build_file_content স্ট্রিং; ঐচ্ছিক

এই সংগ্রহস্থলের জন্য BUILD ফাইলের বিষয়বস্তু। হয় বিল্ড_ফাইল বা বিল্ড_ফাইল_কন্টেন্ট নির্দিষ্ট করা যেতে পারে, তবে উভয়ই নয়।

canonical_id স্ট্রিং; ঐচ্ছিক

আর্কাইভের একটি ক্যানোনিকাল আইডি ডাউনলোড করা হয়েছে। যদি নির্দিষ্ট করা থাকে এবং খালি না থাকে, তাহলে bazel ক্যাশে থেকে আর্কাইভ নেবে না, যদি না এটি একই ক্যানোনিকাল আইডি সহ একটি অনুরোধ দ্বারা ক্যাশে যোগ করা হয়।

integrity স্ট্রিং; ঐচ্ছিক

ডাউনলোড করা ফাইলের Subresource Integrity ফরম্যাটে প্রত্যাশিত চেকসাম। এটি অবশ্যই ডাউনলোড করা ফাইলের চেকসামের সাথে মেলে। _চেকসাম বাদ দেওয়া একটি নিরাপত্তা ঝুঁকি কারণ দূরবর্তী ফাইলগুলি পরিবর্তন করতে পারে। বিকাশকে সহজ করার জন্য এটি ঐচ্ছিক কিন্তু হয় এই বৈশিষ্ট্য বা `sha256` শিপিংয়ের আগে সেট করা উচিত।

netrc স্ট্রিং; ঐচ্ছিক

প্রমাণীকরণের জন্য ব্যবহার করার জন্য .netrc ফাইলের অবস্থান

patch_args স্ট্রিং তালিকা; ঐচ্ছিক

প্যাচ টুল দেওয়া যুক্তি. ডিফল্ট -p0, তবে -p1 সাধারণত গিট দ্বারা উত্পন্ন প্যাচগুলির জন্য প্রয়োজন হবে। যদি একাধিক -p আর্গুমেন্ট নির্দিষ্ট করা থাকে, শেষটি কার্যকর হবে৷ যদি -p ব্যতীত অন্য আর্গুমেন্টগুলি নির্দিষ্ট করা থাকে, Bazel ব্যাজেল-নেটিভ প্যাচ বাস্তবায়নের পরিবর্তে প্যাচ কমান্ড লাইন টুল ব্যবহার করতে ফিরে আসবে৷ প্যাচ কমান্ড লাইন টুলে ফিরে আসার সময় এবং প্যাচ_টুল অ্যাট্রিবিউট নির্দিষ্ট করা না থাকলে, `প্যাচ` ব্যবহার করা হবে। এটি শুধুমাত্র 'প্যাচ' বৈশিষ্ট্যের প্যাচ ফাইলগুলিকে প্রভাবিত করে৷

patch_cmds স্ট্রিং তালিকা; ঐচ্ছিক

প্যাচ প্রয়োগ করার পরে লিনাক্স/ম্যাকোতে প্রয়োগ করা ব্যাশ কমান্ডের ক্রম।

patch_cmds_win স্ট্রিং তালিকা; ঐচ্ছিক

প্যাচ প্রয়োগ করার পর Windows এ প্রয়োগ করা Powershell কমান্ডের ক্রম। এই অ্যাট্রিবিউট সেট না থাকলে, Windows-এ patch_cmds এক্সিকিউট করা হবে, যার জন্য Bash বাইনারি থাকা প্রয়োজন।

patch_tool স্ট্রিং; ঐচ্ছিক

ব্যবহার করার জন্য প্যাচ(1) ইউটিলিটি। যদি এটি নির্দিষ্ট করা থাকে, Bazel Bazel-নেটিভ প্যাচ বাস্তবায়নের পরিবর্তে নির্দিষ্ট প্যাচ টুল ব্যবহার করবে।

patches লেবেলের তালিকা ; ঐচ্ছিক

সংরক্ষণাগার নিষ্কাশন করার পরে প্যাচ হিসাবে প্রয়োগ করা ফাইলগুলির একটি তালিকা৷ ডিফল্টরূপে, এটি ব্যাজেল-নেটিভ প্যাচ বাস্তবায়ন ব্যবহার করে যা ফাজ ম্যাচ এবং বাইনারি প্যাচ সমর্থন করে না, তবে Bazel প্যাচ কমান্ড লাইন টুল ব্যবহার করতে ফিরে আসবে যদি `patch_tool` অ্যাট্রিবিউট নির্দিষ্ট করা থাকে বা `-p` ছাড়া অন্য কোনো আর্গুমেন্ট থাকে। `প্যাচ_আর্গস` অ্যাট্রিবিউটে।

remote_patch_strip পূর্ণসংখ্যা; ঐচ্ছিক

দূরবর্তী প্যাচগুলিতে ফাইলের নাম থেকে ছিনিয়ে নেওয়া অগ্রণী স্ল্যাশের সংখ্যা।

remote_patches অভিধান: স্ট্রিং -> স্ট্রিং ; ঐচ্ছিক

প্যাচ ফাইল URL এর অখণ্ডতার মান অনুযায়ী, সেগুলি সংরক্ষণাগার বের করার পরে এবং `প্যাচ` অ্যাট্রিবিউট থেকে প্যাচ ফাইল প্রয়োগ করার আগে প্রয়োগ করা হয়। এটি Bazel-নেটিভ প্যাচ বাস্তবায়ন ব্যবহার করে, আপনি `remote_patch_strip` এর সাথে প্যাচ স্ট্রিপ নম্বর নির্দিষ্ট করতে পারেন

sha256 স্ট্রিং; ঐচ্ছিক

প্রত্যাশিত SHA-256 ফাইল ডাউনলোড করা হয়েছে৷ এটি অবশ্যই ডাউনলোড করা ফাইলের SHA-256 এর সাথে মেলে। _এটি SHA-256 বাদ দেওয়া একটি নিরাপত্তা ঝুঁকি কারণ দূরবর্তী ফাইলগুলি পরিবর্তন করতে পারে। বিকাশকে সহজ করার জন্য এটি ঐচ্ছিক কিন্তু হয় এই বৈশিষ্ট্য বা 'সততা' শিপিংয়ের আগে সেট করা উচিত।

strip_prefix স্ট্রিং; ঐচ্ছিক

নিষ্কাশিত ফাইলগুলি থেকে ছিন্ন করার জন্য একটি ডিরেক্টরি উপসর্গ। অনেক সংরক্ষণাগারে একটি শীর্ষ-স্তরের ডিরেক্টরি থাকে যাতে সংরক্ষণাগারের সমস্ত দরকারী ফাইল থাকে। 'build_file'-এ এই উপসর্গটি বারবার উল্লেখ করার পরিবর্তে, এই ক্ষেত্রটি এক্সট্র্যাক্ট করা সমস্ত ফাইল থেকে ছিনিয়ে নিতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, ধরুন আপনি `foo-lib-latest.zip` ব্যবহার করছেন, যেটিতে আছে `foo-lib-1.2.3/` ডিরেক্টরি যার অধীনে একটি `WORKSPACE` ফাইল আছে এবং `src/`, `lib/ `, এবং `পরীক্ষা/` ডিরেক্টরি যাতে আপনি তৈরি করতে চান এমন প্রকৃত কোড থাকে। আপনার শীর্ষ-স্তরের ডিরেক্টরি হিসাবে `foo-lib-1.2.3` ডিরেক্টরি ব্যবহার করতে `strip_prefix = "foo-lib-1.2.3"` নির্দিষ্ট করুন। মনে রাখবেন যে এই ডিরেক্টরির বাইরে ফাইল থাকলে, সেগুলি বাতিল করা হবে এবং অ্যাক্সেসযোগ্য হবে না (যেমন, একটি শীর্ষ-স্তরের লাইসেন্স ফাইল)। এর মধ্যে ফাইল/ডিরেক্টরি রয়েছে যা উপসর্গ দিয়ে শুরু হয় কিন্তু ডিরেক্টরিতে নেই (যেমন, `foo-lib-1.2.3.release-notes`)। যদি নির্দিষ্ট উপসর্গটি সংরক্ষণাগারের একটি ডিরেক্টরির সাথে মেলে না, তবে Bazel একটি ত্রুটি ফিরিয়ে দেবে।

type স্ট্রিং; ঐচ্ছিক

ডাউনলোড করা ফাইলের সংরক্ষণাগার প্রকার। ডিফল্টরূপে, URL এর ফাইল এক্সটেনশন থেকে আর্কাইভের ধরন নির্ধারণ করা হয়। ফাইলের কোনো এক্সটেনশন না থাকলে, আপনি স্পষ্টভাবে নিম্নলিখিতগুলির মধ্যে একটি নির্দিষ্ট করতে পারেন: `"zip"`, `"jar"`, `"war"`, `"aar"`, `"tar"`, `"tar। gz"`, `"tgz"`, `"tar.xz"`, `"txz"`, `"tar.zst"`, `"tzst"`, `tar.bz2`, `"ar"`, অথবা `"deb"`।

url স্ট্রিং; ঐচ্ছিক

একটি ফাইলের URL যা Bazel-এ উপলব্ধ করা হবে৷ এটি অবশ্যই একটি ফাইল, http বা https URL হতে হবে৷ পুনর্নির্দেশ অনুসরণ করা হয়. প্রমাণীকরণ সমর্থিত নয়। urls প্যারামিটার দ্বারা আরও নমনীয়তা অর্জন করা যেতে পারে যা থেকে আনার জন্য বিকল্প URLগুলি নির্দিষ্ট করতে দেয়৷

urls স্ট্রিং তালিকা; ঐচ্ছিক

একটি ফাইলের URL-এর একটি তালিকা যা Bazel-এ উপলব্ধ করা হবে৷ প্রতিটি এন্ট্রি একটি ফাইল, http বা https URL হতে হবে। পুনর্নির্দেশ অনুসরণ করা হয়. প্রমাণীকরণ সমর্থিত নয়। একটি সফল না হওয়া পর্যন্ত URLগুলি ক্রমানুসারে চেষ্টা করা হয়, তাই আপনাকে প্রথমে স্থানীয় আয়না তালিকাভুক্ত করা উচিত। সমস্ত ডাউনলোড ব্যর্থ হলে, নিয়ম ব্যর্থ হবে।

workspace_file লেবেল ; ঐচ্ছিক

এই সংগ্রহস্থলের জন্য `WORKSPACE` ফাইল হিসেবে যে ফাইলটি ব্যবহার করতে হবে। হয় `ওয়ার্কস্পেস_ফাইল` বা `ওয়ার্কস্পেস_ফাইল_সামগ্রী` নির্দিষ্ট করা যেতে পারে, অথবা উভয়ই নয়।

workspace_file_content স্ট্রিং; ঐচ্ছিক

এই সংগ্রহস্থলের জন্য WORKSPACE ফাইলের বিষয়বস্তু। হয় `ওয়ার্কস্পেস_ফাইল` বা `ওয়ার্কস্পেস_ফাইল_সামগ্রী` নির্দিষ্ট করা যেতে পারে, অথবা উভয়ই নয়।

http_file

http_file(name, auth_patterns, canonical_id, downloaded_file_path, executable, integrity, netrc,
          sha256, url, urls)

একটি URL থেকে একটি ফাইল ডাউনলোড করে এবং এটি একটি ফাইল গ্রুপ হিসাবে ব্যবহার করার জন্য উপলব্ধ করে।

উদাহরণ: ধরুন আপনার কাস্টম নিয়মের জন্য আপনার একটি ডেবিয়ান প্যাকেজ থাকা দরকার। এই প্যাকেজটি http://example.com/package.deb থেকে উপলব্ধ। তারপর আপনি আপনার WORKSPACE ফাইলে যোগ করতে পারেন:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")

  http_file(
      name = "my_deb",
      url = "http://example.com/package.deb",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

এই ফাইলের উপর নির্ভর করার জন্য লক্ষ্যগুলি @my_deb//file কে একটি নির্ভরতা হিসাবে নির্দিষ্ট করবে।

গুণাবলী

name নাম ; প্রয়োজনীয়

এই সংগ্রহস্থল জন্য একটি অনন্য নাম.

auth_patterns অভিধান: স্ট্রিং -> স্ট্রিং ; ঐচ্ছিক

একটি ঐচ্ছিক ডিক্ট ম্যাপিং হোস্ট নাম কাস্টম অনুমোদন নিদর্শন. যদি একটি URL এর হোস্টের নাম এই ডিক্টে উপস্থিত থাকে তবে HTTP অনুরোধের জন্য অনুমোদন শিরোনাম তৈরি করার সময় মানটি একটি প্যাটার্ন হিসাবে ব্যবহার করা হবে। এটি অনেক সাধারণ ক্লাউড স্টোরেজ প্রদানকারীতে ব্যবহৃত কাস্টম অনুমোদন স্কিম ব্যবহার করতে সক্ষম করে। প্যাটার্নটি বর্তমানে 2টি টোকেন সমর্থন করে: <login> এবং <password> , যা একই হোস্ট নামের জন্য netrc ফাইলে তাদের সমতুল্য মান দিয়ে প্রতিস্থাপিত হয়। বিন্যাস করার পরে, ফলাফলটি HTTP অনুরোধের Authorization ক্ষেত্রের মান হিসাবে সেট করা হয়। একটি bearer টোকেন ব্যবহার করে একটি oauth2 সক্ষম API-তে http ডাউনলোডের জন্য অ্যাট্রিবিউট এবং netrc উদাহরণ:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
চূড়ান্ত HTTP অনুরোধে নিম্নলিখিত শিরোনাম থাকবে:
Authorization: Bearer RANDOM-TOKEN

canonical_id স্ট্রিং; ঐচ্ছিক

আর্কাইভের একটি ক্যানোনিকাল আইডি ডাউনলোড করা হয়েছে। যদি নির্দিষ্ট করা থাকে এবং খালি না থাকে, তাহলে bazel ক্যাশে থেকে আর্কাইভ নেবে না, যদি না এটি একই ক্যানোনিকাল আইডি সহ একটি অনুরোধ দ্বারা ক্যাশে যোগ করা হয়।

downloaded_file_path স্ট্রিং; ঐচ্ছিক

ডাউনলোড করা ফাইলে পাথ বরাদ্দ করা হয়েছে

executable বুলিয়ান; ঐচ্ছিক

যদি ডাউনলোড করা ফাইলটি এক্সিকিউটেবল করা উচিত।

integrity স্ট্রিং; ঐচ্ছিক

ডাউনলোড করা ফাইলের Subresource Integrity ফরম্যাটে প্রত্যাশিত চেকসাম। এটি অবশ্যই ডাউনলোড করা ফাইলের চেকসামের সাথে মেলে। _চেকসাম বাদ দেওয়া একটি নিরাপত্তা ঝুঁকি কারণ দূরবর্তী ফাইলগুলি পরিবর্তন করতে পারে। বিকাশকে সহজ করার জন্য এটি ঐচ্ছিক কিন্তু হয় এই বৈশিষ্ট্য বা `sha256` শিপিংয়ের আগে সেট করা উচিত।

netrc স্ট্রিং; ঐচ্ছিক

প্রমাণীকরণের জন্য ব্যবহার করার জন্য .netrc ফাইলের অবস্থান

sha256 স্ট্রিং; ঐচ্ছিক

প্রত্যাশিত SHA-256 ফাইল ডাউনলোড করা হয়েছে৷ এটি অবশ্যই ডাউনলোড করা ফাইলের SHA-256 এর সাথে মেলে। _এটি SHA-256 বাদ দেওয়া একটি নিরাপত্তা ঝুঁকি কারণ দূরবর্তী ফাইলগুলি পরিবর্তন করতে পারে। এটা উন্নয়ন সহজ করতে ঐচ্ছিক কিন্তু শিপিং আগে সেট করা উচিত.

url স্ট্রিং; ঐচ্ছিক

একটি ফাইলের URL যা Bazel-এ উপলব্ধ করা হবে৷ এটি অবশ্যই একটি ফাইল, http বা https URL হতে হবে৷ পুনর্নির্দেশ অনুসরণ করা হয়. প্রমাণীকরণ সমর্থিত নয়। urls প্যারামিটার দ্বারা আরও নমনীয়তা অর্জন করা যেতে পারে যা থেকে আনার জন্য বিকল্প URLগুলি নির্দিষ্ট করতে দেয়৷

urls স্ট্রিং তালিকা; ঐচ্ছিক

একটি ফাইলের URL-এর একটি তালিকা যা Bazel-এ উপলব্ধ করা হবে৷ প্রতিটি এন্ট্রি একটি ফাইল, http বা https URL হতে হবে। পুনর্নির্দেশ অনুসরণ করা হয়. প্রমাণীকরণ সমর্থিত নয়। একটি সফল না হওয়া পর্যন্ত URLগুলি ক্রমানুসারে চেষ্টা করা হয়, তাই আপনাকে প্রথমে স্থানীয় আয়না তালিকাভুক্ত করা উচিত। সমস্ত ডাউনলোড ব্যর্থ হলে, নিয়ম ব্যর্থ হবে।

http_jar

http_jar(name, auth_patterns, canonical_id, downloaded_file_name, integrity, netrc, sha256, url,
         urls)

একটি URL থেকে একটি জার ডাউনলোড করে এবং এটি java_import হিসাবে উপলব্ধ করে

ডাউনলোড করা ফাইলগুলির একটি .jar এক্সটেনশন থাকতে হবে৷

উদাহরণ: ধরুন বর্তমান রিপোজিটরিতে একটি চ্যাট প্রোগ্রামের সোর্স কোড রয়েছে, ~/chat-app ডিরেক্টরিতে রুট করা আছে। এটি একটি SSL লাইব্রেরির উপর নির্ভর করতে হবে যা http://example.com/openssl-0.2.jar থেকে পাওয়া যায়।

~/chat-app সংগ্রহস্থলের লক্ষ্যগুলি এই লক্ষ্যের উপর নির্ভর করতে পারে যদি নিম্নলিখিত লাইনগুলি ~/chat-app/WORKSPACE এ যোগ করা হয়:

  load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_jar")

  http_jar(
      name = "my_ssl",
      url = "http://example.com/openssl-0.2.jar",
      sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  )

লক্ষ্যগুলি এই জার উপর নির্ভর করার জন্য নির্ভরতা হিসাবে <code>@my_ssl//jar</code> নির্দিষ্ট করবে।

আপনি যদি ইউনিক্স-ভিত্তিক সিস্টেমে থাকেন তবে আপনি "file:///path/to/file" ব্যবহার করে বর্তমান সিস্টেমে (স্থানীয় হোস্ট) ফাইলগুলি উল্লেখ করতে পারেন। আপনি যদি উইন্ডোজে থাকেন তবে "file:///c:/path/to/file" ব্যবহার করুন। উভয় উদাহরণেই, তিনটি স্ল্যাশ ( / ) নোট করুন -- প্রথম দুটি স্ল্যাশ file:// এর অন্তর্গত এবং তৃতীয়টি ফাইলের পরম পথের অন্তর্গত।

গুণাবলী

name নাম ; প্রয়োজনীয়

এই সংগ্রহস্থল জন্য একটি অনন্য নাম.

auth_patterns অভিধান: স্ট্রিং -> স্ট্রিং ; ঐচ্ছিক

একটি ঐচ্ছিক ডিক্ট ম্যাপিং হোস্ট নাম কাস্টম অনুমোদন নিদর্শন. যদি একটি URL এর হোস্টের নাম এই ডিক্টে উপস্থিত থাকে তবে HTTP অনুরোধের জন্য অনুমোদন শিরোনাম তৈরি করার সময় মানটি একটি প্যাটার্ন হিসাবে ব্যবহার করা হবে। এটি অনেক সাধারণ ক্লাউড স্টোরেজ প্রদানকারীতে ব্যবহৃত কাস্টম অনুমোদন স্কিম ব্যবহার করতে সক্ষম করে। প্যাটার্নটি বর্তমানে 2টি টোকেন সমর্থন করে: <login> এবং <password> , যা একই হোস্ট নামের জন্য netrc ফাইলে তাদের সমতুল্য মান দিয়ে প্রতিস্থাপিত হয়। বিন্যাস করার পরে, ফলাফলটি HTTP অনুরোধের Authorization ক্ষেত্রের মান হিসাবে সেট করা হয়। একটি bearer টোকেন ব্যবহার করে একটি oauth2 সক্ষম API-তে http ডাউনলোডের জন্য অ্যাট্রিবিউট এবং netrc উদাহরণ:

auth_patterns = {
    "storage.cloudprovider.com": "Bearer <password>"
}
netrc:
machine storage.cloudprovider.com
        password RANDOM-TOKEN
চূড়ান্ত HTTP অনুরোধে নিম্নলিখিত শিরোনাম থাকবে:
Authorization: Bearer RANDOM-TOKEN

canonical_id স্ট্রিং; ঐচ্ছিক

আর্কাইভের একটি ক্যানোনিকাল আইডি ডাউনলোড করা হয়েছে। যদি নির্দিষ্ট করা থাকে এবং খালি না থাকে, তাহলে bazel ক্যাশে থেকে আর্কাইভ নেবে না, যদি না এটি একই ক্যানোনিকাল আইডি সহ একটি অনুরোধ দ্বারা ক্যাশে যোগ করা হয়।

downloaded_file_name স্ট্রিং; ঐচ্ছিক

ডাউনলোড করা জারটিতে ফাইলের নাম বরাদ্দ করা হয়েছে

integrity স্ট্রিং; ঐচ্ছিক

ডাউনলোড করা ফাইলের Subresource Integrity ফরম্যাটে প্রত্যাশিত চেকসাম। এটি অবশ্যই ডাউনলোড করা ফাইলের চেকসামের সাথে মেলে। _চেকসাম বাদ দেওয়া একটি নিরাপত্তা ঝুঁকি কারণ দূরবর্তী ফাইলগুলি পরিবর্তন করতে পারে। বিকাশকে সহজ করার জন্য এটি ঐচ্ছিক কিন্তু হয় এই বৈশিষ্ট্য বা `sha256` শিপিংয়ের আগে সেট করা উচিত।

netrc স্ট্রিং; ঐচ্ছিক

প্রমাণীকরণের জন্য ব্যবহার করার জন্য .netrc ফাইলের অবস্থান

sha256 স্ট্রিং; ঐচ্ছিক

প্রত্যাশিত SHA-256 ফাইল ডাউনলোড করা হয়েছে৷ এটি অবশ্যই ডাউনলোড করা ফাইলের SHA-256 এর সাথে মেলে। _এটি SHA-256 বাদ দেওয়া একটি নিরাপত্তা ঝুঁকি কারণ দূরবর্তী ফাইলগুলি পরিবর্তন করতে পারে। বিকাশকে সহজ করার জন্য এটি ঐচ্ছিক কিন্তু হয় এই বৈশিষ্ট্য বা 'সততা' শিপিংয়ের আগে সেট করা উচিত।

url স্ট্রিং; ঐচ্ছিক

একটি ফাইলের URL যা Bazel-এ উপলব্ধ করা হবে৷ এটি অবশ্যই একটি ফাইল, http বা https URL হতে হবে৷ পুনর্নির্দেশ অনুসরণ করা হয়. প্রমাণীকরণ সমর্থিত নয়। urls প্যারামিটার দ্বারা আরও নমনীয়তা অর্জন করা যেতে পারে যা থেকে আনার জন্য বিকল্প URLগুলি নির্দিষ্ট করতে দেয়৷ URLটি অবশ্যই `.jar`-এ শেষ হতে হবে।

urls স্ট্রিং তালিকা; ঐচ্ছিক

একটি ফাইলের URL-এর একটি তালিকা যা Bazel-এ উপলব্ধ করা হবে৷ প্রতিটি এন্ট্রি একটি ফাইল, http বা https URL হতে হবে। পুনর্নির্দেশ অনুসরণ করা হয়. প্রমাণীকরণ সমর্থিত নয়। একটি সফল না হওয়া পর্যন্ত URLগুলি ক্রমানুসারে চেষ্টা করা হয়, তাই আপনাকে প্রথমে স্থানীয় আয়না তালিকাভুক্ত করা উচিত। সমস্ত ডাউনলোড ব্যর্থ হলে, নিয়ম ব্যর্থ হবে। সমস্ত URL অবশ্যই `.jar`-এ শেষ হতে হবে।