bson 5.0.0 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +91 -7
 - data/Rakefile +63 -39
 - data/ext/bson/read.c +18 -3
 - data/ext/bson/util.c +5 -2
 - data/ext/bson/write.c +4 -0
 - data/lib/bson/array.rb +1 -1
 - data/lib/bson/binary.rb +16 -1
 - data/lib/bson/code.rb +1 -1
 - data/lib/bson/code_with_scope.rb +1 -1
 - data/lib/bson/db_pointer.rb +1 -1
 - data/lib/bson/decimal128/builder.rb +1 -1
 - data/lib/bson/decimal128.rb +1 -1
 - data/lib/bson/ext_json.rb +1 -1
 - data/lib/bson/float.rb +1 -1
 - data/lib/bson/hash.rb +1 -1
 - data/lib/bson/int32.rb +1 -1
 - data/lib/bson/int64.rb +1 -1
 - data/lib/bson/integer.rb +1 -1
 - data/lib/bson/max_key.rb +1 -1
 - data/lib/bson/min_key.rb +1 -1
 - data/lib/bson/object.rb +2 -2
 - data/lib/bson/object_id.rb +12 -2
 - data/lib/bson/regexp.rb +1 -1
 - data/lib/bson/symbol.rb +2 -2
 - data/lib/bson/time.rb +1 -1
 - data/lib/bson/timestamp.rb +1 -1
 - data/lib/bson/undefined.rb +1 -1
 - data/lib/bson/version.rb +2 -1
 - data/spec/bson/binary_spec.rb +46 -7
 - data/spec/bson/object_id_spec.rb +14 -0
 - metadata +7 -80
 - checksums.yaml.gz.sig +0 -0
 - data/spec/shared/LICENSE +0 -20
 - data/spec/shared/bin/get-mongodb-download-url +0 -17
 - data/spec/shared/bin/s3-copy +0 -45
 - data/spec/shared/bin/s3-upload +0 -69
 - data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
 - data/spec/shared/lib/mrss/cluster_config.rb +0 -231
 - data/spec/shared/lib/mrss/constraints.rb +0 -378
 - data/spec/shared/lib/mrss/docker_runner.rb +0 -298
 - data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
 - data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
 - data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
 - data/spec/shared/lib/mrss/server_version_registry.rb +0 -113
 - data/spec/shared/lib/mrss/session_registry.rb +0 -69
 - data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
 - data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
 - data/spec/shared/lib/mrss/utils.rb +0 -37
 - data/spec/shared/share/Dockerfile.erb +0 -321
 - data/spec/shared/share/haproxy-1.conf +0 -16
 - data/spec/shared/share/haproxy-2.conf +0 -17
 - data/spec/shared/shlib/config.sh +0 -27
 - data/spec/shared/shlib/distro.sh +0 -74
 - data/spec/shared/shlib/server.sh +0 -416
 - data/spec/shared/shlib/set_env.sh +0 -169
 - data.tar.gz.sig +0 -0
 - metadata.gz.sig +0 -2
 
| 
         @@ -1,321 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Python toolchain as of this writing is available on rhel62, debian92 and
         
     | 
| 
       2 
     | 
    
         
            -
            # ubuntu1604.
         
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # To run rhel62 in docker, host system must be configured to emulate syscalls:
         
     | 
| 
       5 
     | 
    
         
            -
            # https://github.com/CentOS/sig-cloud-instance-images/issues/103
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            <%
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            python_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-python-driver-toolchain/#{distro}/ba92de2700c04ee2d4f82c3ffdfc33105140cb04/mongo_python_driver_toolchain_#{distro.gsub('-', '_')}_ba92de2700c04ee2d4f82c3ffdfc33105140cb04_19_11_14_15_33_33.tar.gz"
         
     | 
| 
       10 
     | 
    
         
            -
            # server_version = '4.3.3'
         
     | 
| 
       11 
     | 
    
         
            -
            server_url = "http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-#{distro}-#{server_version}.tgz"
         
     | 
| 
       12 
     | 
    
         
            -
            server_archive_basename = File.basename(server_url)
         
     | 
| 
       13 
     | 
    
         
            -
            server_extracted_dir = server_archive_basename.sub(/\.(tar\.gz|tgz)$/, '')
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            # When changing, also update the hash in shlib/set_env.sh.
         
     | 
| 
       16 
     | 
    
         
            -
            TOOLCHAIN_VERSION='e8c60866f54bed7e336a37df3a97d6ae1b971b7d'
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            def ruby_toolchain_url(ruby)
         
     | 
| 
       19 
     | 
    
         
            -
              "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/#{TOOLCHAIN_VERSION}/#{distro}/#{ruby}.tar.xz"
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            #ruby_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/#{distro}/#{TOOLCHAIN_VERSION}/mongo_ruby_driver_toolchain_#{distro.gsub('-', '_')}_patch_#{TOOLCHAIN_VERSION}_#{toolchain_lower}.tar.gz"
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            %>
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            FROM <%= base_image %>
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            ENV DOCKER=1
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            <% if debian? %>
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
              ENV DEBIAN_FRONTEND=noninteractive
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            <% else %>
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
              RUN echo assumeyes=1 |tee -a /etc/yum.conf
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            <% if ruby_head? %>
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              # To use current versions of mlaunch, Python 3.7+ is required.
         
     | 
| 
       43 
     | 
    
         
            -
              # Many distros ship with older Pythons, therefore we need to install
         
     | 
| 
       44 
     | 
    
         
            -
              # a newer Python from somewhere. This section installs the Python
         
     | 
| 
       45 
     | 
    
         
            -
              # toolchain which comes with recent Pythons.
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
              #RUN curl --retry 3 -fL <%= python_toolchain_url %> -o python-toolchain.tar.gz
         
     | 
| 
       48 
     | 
    
         
            -
              #RUN tar -xC /opt -zf python-toolchain.tar.gz
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            <% if debian? %>
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
              # zsh is not required for any scripts but it is a better interactive shell
         
     | 
| 
       55 
     | 
    
         
            -
              # than bash.
         
     | 
| 
       56 
     | 
    
         
            -
              # Ruby runtime dependencies: libyaml-0-2
         
     | 
| 
       57 
     | 
    
         
            -
              # Compiling ruby libraries: gcc make
         
     | 
| 
       58 
     | 
    
         
            -
              # Compiling python packages: python3-dev
         
     | 
| 
       59 
     | 
    
         
            -
              # JRuby: openjdk-8-jdk-headless
         
     | 
| 
       60 
     | 
    
         
            -
              # Server dependencies: libsnmp30 libcurl3/libcurl4
         
     | 
| 
       61 
     | 
    
         
            -
              # Determining OS we are running on: lsb-release
         
     | 
| 
       62 
     | 
    
         
            -
              # Load balancer testing: haproxy
         
     | 
| 
       63 
     | 
    
         
            -
              # Kerberos testing: krb5-user
         
     | 
| 
       64 
     | 
    
         
            -
              # Local Kerberos server: krb5-kdc krb5-admin-server
         
     | 
| 
       65 
     | 
    
         
            -
              # Installing mlaunch from git: git
         
     | 
| 
       66 
     | 
    
         
            -
              # ruby-head archive: bzip2
         
     | 
| 
       67 
     | 
    
         
            -
              # nio4r on JRuby: libgmp-dev
         
     | 
| 
       68 
     | 
    
         
            -
              # Snappy compression: libsnappy-dev
         
     | 
| 
       69 
     | 
    
         
            -
              # nokogiri: zlib1g-dev
         
     | 
| 
       70 
     | 
    
         
            -
              # Mongoid testing: tzdata shared-mime-info
         
     | 
| 
       71 
     | 
    
         
            -
              # Mongoid application testing: nodejs (8.x or newer)
         
     | 
| 
       72 
     | 
    
         
            -
              # Test suite: procps for ps (to kill JRubies)
         
     | 
| 
       73 
     | 
    
         
            -
              #
         
     | 
| 
       74 
     | 
    
         
            -
              # We currently use Python 2-compatible version of mtools, which
         
     | 
| 
       75 
     | 
    
         
            -
              # is installable via pip (which uses Python 2). All of the MongoDB
         
     | 
| 
       76 
     | 
    
         
            -
              # distros have pip installed (but none as of this writing have pip3)
         
     | 
| 
       77 
     | 
    
         
            -
              # therefore install python-pip in all configurations here.
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
              <% packages = %w(
         
     | 
| 
       80 
     | 
    
         
            -
                procps lsb-release bzip2 curl wget gpg zsh
         
     | 
| 
       81 
     | 
    
         
            -
                git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
         
     | 
| 
       82 
     | 
    
         
            -
                krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
         
     | 
| 
       83 
     | 
    
         
            -
                haproxy
         
     | 
| 
       84 
     | 
    
         
            -
                python3-pip
         
     | 
| 
       85 
     | 
    
         
            -
                tzdata shared-mime-info software-properties-common
         
     | 
| 
       86 
     | 
    
         
            -
              ) %>
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
              <% if distro =~ /ubuntu2004/ %>
         
     | 
| 
       89 
     | 
    
         
            -
                <% packages << 'libsnmp35' %>
         
     | 
| 
       90 
     | 
    
         
            -
              <% elsif distro =~ /ubuntu2204|debian11/ %>
         
     | 
| 
       91 
     | 
    
         
            -
                <% packages << 'libsnmp40' %>
         
     | 
| 
       92 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       93 
     | 
    
         
            -
                <% packages << 'libsnmp30' %>
         
     | 
| 
       94 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
              <% if distro !~ /ubuntu2004|ubuntu2204|debian11/ %>
         
     | 
| 
       97 
     | 
    
         
            -
                <% packages << 'python-pip' %>
         
     | 
| 
       98 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
              <% if distro =~ /ubuntu2204|debian11/ %>
         
     | 
| 
       101 
     | 
    
         
            -
                <% packages << 'python3-venv' %>
         
     | 
| 
       102 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
              <% if distro =~ /debian10|ubuntu2204|debian11/ %>
         
     | 
| 
       105 
     | 
    
         
            -
                <% packages << 'openjdk-11-jdk-headless' %>
         
     | 
| 
       106 
     | 
    
         
            -
              <% elsif distro =~ /ubuntu1404/ %>
         
     | 
| 
       107 
     | 
    
         
            -
                # Ubuntu 14.04 only has openjdk 7, this is too old to be useful
         
     | 
| 
       108 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       109 
     | 
    
         
            -
                <% packages << 'openjdk-8-jdk-headless' %>
         
     | 
| 
       110 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
              # ubuntu1404, ubuntu1604: libcurl3
         
     | 
| 
       113 
     | 
    
         
            -
              # ubuntu1804, ubuntu2004, debian10: libcurl4
         
     | 
| 
       114 
     | 
    
         
            -
              <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204|debian10|debian11/ %>
         
     | 
| 
       115 
     | 
    
         
            -
                <% packages << 'libcurl4' %>
         
     | 
| 
       116 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       117 
     | 
    
         
            -
                <% packages << 'libcurl3' %>
         
     | 
| 
       118 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
              <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204/ %>
         
     | 
| 
       121 
     | 
    
         
            -
                <% packages << 'nodejs' %>
         
     | 
| 
       122 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
              <% if distro =~ /ubuntu2004|ubuntu2204/ %>
         
     | 
| 
       125 
     | 
    
         
            -
                <% packages += %w(ruby bundler) %>
         
     | 
| 
       126 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
              RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
              <% if ubuntu? %>
         
     | 
| 
       131 
     | 
    
         
            -
                RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
         
     | 
| 
       132 
     | 
    
         
            -
                RUN echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/kitware.list >/dev/null
         
     | 
| 
       133 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       134 
     | 
    
         
            -
              RUN apt-get update && apt-get install -y cmake
         
     | 
| 
       135 
     | 
    
         
            -
             
     | 
| 
       136 
     | 
    
         
            -
            <% else %>
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
              <% if distro =~ /rhel6/ %>
         
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
                # CentOS 6 is dead - to use it retrieve the packages from vault:
         
     | 
| 
       141 
     | 
    
         
            -
                # https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
         
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
                <%
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
                  cfg = <<-CFG
         
     | 
| 
       146 
     | 
    
         
            -
            [base]
         
     | 
| 
       147 
     | 
    
         
            -
            name=CentOS-$releasever - Base
         
     | 
| 
       148 
     | 
    
         
            -
            #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
         
     | 
| 
       149 
     | 
    
         
            -
            #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
         
     | 
| 
       150 
     | 
    
         
            -
            baseurl=http://vault.centos.org/6.10/os/x86_64/
         
     | 
| 
       151 
     | 
    
         
            -
            gpgcheck=1
         
     | 
| 
       152 
     | 
    
         
            -
            gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
         
     | 
| 
       153 
     | 
    
         
            -
            CFG
         
     | 
| 
       154 
     | 
    
         
            -
             
     | 
| 
       155 
     | 
    
         
            -
                %>
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
                RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
         
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
              # Enterprise server: net-snmp
         
     | 
| 
       162 
     | 
    
         
            -
              # lsb_release: redhat-lsb-core
         
     | 
| 
       163 
     | 
    
         
            -
              # our runner scripts: which
         
     | 
| 
       164 
     | 
    
         
            -
              # Ruby dependency: libyaml
         
     | 
| 
       165 
     | 
    
         
            -
              # compiling python packages: gcc python-devel
         
     | 
| 
       166 
     | 
    
         
            -
              # Kerberos tests: krb5-workstation + cyrus-sasl-devel to build the
         
     | 
| 
       167 
     | 
    
         
            -
              # mongo_kerberos gem + cyrus-sasl-gssapi for authentication to work
         
     | 
| 
       168 
     | 
    
         
            -
              # Local Kerberos server: krb5-server
         
     | 
| 
       169 
     | 
    
         
            -
              # JRuby: java-1.8.0-openjdk
         
     | 
| 
       170 
     | 
    
         
            -
              #
         
     | 
| 
       171 
     | 
    
         
            -
              # Note: lacking cyrus-sasl-gssapi produces a cryptic message
         
     | 
| 
       172 
     | 
    
         
            -
              # "SASL(-4): no mechanism available: No worthy mechs found"
         
     | 
| 
       173 
     | 
    
         
            -
              # https://github.com/farorm/python-ad/issues/10
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
     | 
    
         
            -
              RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
         
     | 
| 
       176 
     | 
    
         
            -
                krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
         
     | 
| 
       177 
     | 
    
         
            -
                net-snmp python38 python38-devel cmake nodejs
         
     | 
| 
       178 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
       181 
     | 
    
         
            -
            <% if preload? %>
         
     | 
| 
       182 
     | 
    
         
            -
             
     | 
| 
       183 
     | 
    
         
            -
              <% if distro =~ /debian9|ubuntu1604|ubuntu1804/ %>
         
     | 
| 
       184 
     | 
    
         
            -
                # Install python 3.7 for mlaunch.
         
     | 
| 
       185 
     | 
    
         
            -
                RUN curl -fL --retry 3 https://github.com/p-mongodb/deps/raw/main/<%= distro %>-python37.tar.xz | \
         
     | 
| 
       186 
     | 
    
         
            -
                  tar xfJ - -C /opt
         
     | 
| 
       187 
     | 
    
         
            -
                ENV PATH=/opt/python37/bin:$PATH
         
     | 
| 
       188 
     | 
    
         
            -
                RUN python3 -V
         
     | 
| 
       189 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
              <% if true || distro =~ /rhel|ubuntu1604/ %>
         
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
                # Ubuntu 12.04 ships pip 1.0 which is ancient and does not work.
         
     | 
| 
       194 
     | 
    
         
            -
                #
         
     | 
| 
       195 
     | 
    
         
            -
                # Ubuntu 16.04 apparently also ships a pip that does not work:
         
     | 
| 
       196 
     | 
    
         
            -
                # https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry
         
     | 
| 
       197 
     | 
    
         
            -
                # Potentially this only affects environments with less than ideal
         
     | 
| 
       198 
     | 
    
         
            -
                # connectivity (or, perhaps, when python package registry is experiencing
         
     | 
| 
       199 
     | 
    
         
            -
                # availability issues) when pip must retry to install packages.
         
     | 
| 
       200 
     | 
    
         
            -
                #
         
     | 
| 
       201 
     | 
    
         
            -
                # rhel apparently does not package pip at all in core repoitories,
         
     | 
| 
       202 
     | 
    
         
            -
                # therefore install it the manual way.
         
     | 
| 
       203 
     | 
    
         
            -
                #
         
     | 
| 
       204 
     | 
    
         
            -
                # https://pip.pypa.io/en/stable/installing/
         
     | 
| 
       205 
     | 
    
         
            -
                RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/get-pip.py | python3
         
     | 
| 
       206 
     | 
    
         
            -
                RUN python3 -m pip install --upgrade pip setuptools wheel
         
     | 
| 
       207 
     | 
    
         
            -
             
     | 
| 
       208 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       209 
     | 
    
         
            -
             
     | 
| 
       210 
     | 
    
         
            -
              # Current virtualenv fails with
         
     | 
| 
       211 
     | 
    
         
            -
              # https://github.com/pypa/virtualenv/issues/1630
         
     | 
| 
       212 
     | 
    
         
            -
              <% mtools = 'legacy' %>
         
     | 
| 
       213 
     | 
    
         
            -
              <% case mtools
         
     | 
| 
       214 
     | 
    
         
            -
                 when 'legacy' %>
         
     | 
| 
       215 
     | 
    
         
            -
                # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
         
     | 
| 
       216 
     | 
    
         
            -
                RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
         
     | 
| 
       217 
     | 
    
         
            -
              <% when 'git' %>
         
     | 
| 
       218 
     | 
    
         
            -
                # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
         
     | 
| 
       219 
     | 
    
         
            -
                RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil
         
     | 
| 
       220 
     | 
    
         
            -
             
     | 
| 
       221 
     | 
    
         
            -
                # Install mtools from git because released versions do not work with pymongo 4.0
         
     | 
| 
       222 
     | 
    
         
            -
                RUN git clone https://github.com/p-mongodb/mtools && \
         
     | 
| 
       223 
     | 
    
         
            -
                  cd mtools && \
         
     | 
| 
       224 
     | 
    
         
            -
                  python3 setup.py install
         
     | 
| 
       225 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       226 
     | 
    
         
            -
                # mtools[mlaunch] does not work: https://github.com/rueckstiess/mtools/issues/856
         
     | 
| 
       227 
     | 
    
         
            -
                # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
         
     | 
| 
       228 
     | 
    
         
            -
                RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil mtools
         
     | 
| 
       229 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
     | 
    
         
            -
              <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
         
     | 
| 
       232 
     | 
    
         
            -
                # ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
         
     | 
| 
       233 
     | 
    
         
            -
                # as specified by dependencies, causing OCSP mock to not work.
         
     | 
| 
       234 
     | 
    
         
            -
                RUN python3 -mpip install asn1crypto oscrypto flask --upgrade --ignore-installed
         
     | 
| 
       235 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
     | 
    
         
            -
              # FLE is tested against 4.0+ servers.
         
     | 
| 
       238 
     | 
    
         
            -
              <% if @env.fetch('MONGODB_VERSION') >= '4.0' %>
         
     | 
| 
       239 
     | 
    
         
            -
                # Requirements in drivers-evergreen-tools:
         
     | 
| 
       240 
     | 
    
         
            -
                # boto3~=1.19 cryptography~=3.4.8 pykmip~=0.10.0
         
     | 
| 
       241 
     | 
    
         
            -
                # cryptography does not install due to lacking setuptools_rust
         
     | 
| 
       242 
     | 
    
         
            -
                # (either that version or anything that isn't part of system packages)
         
     | 
| 
       243 
     | 
    
         
            -
                RUN python3 -mpip install boto3~=1.19 cryptography pykmip~=0.10.0 'sqlalchemy<2.0.0'
         
     | 
| 
       244 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       245 
     | 
    
         
            -
             
     | 
| 
       246 
     | 
    
         
            -
              <% unless ruby_head? || system_ruby? %>
         
     | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
     | 
    
         
            -
                RUN curl --retry 3 -fL <%= ruby_toolchain_url(ruby) %> |tar -xC /opt -Jf -
         
     | 
| 
       249 
     | 
    
         
            -
                ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
         
     | 
| 
       250 
     | 
    
         
            -
                  USE_OPT_TOOLCHAIN=1
         
     | 
| 
       251 
     | 
    
         
            -
                #ENV PATH=/opt/rubies/python/3/bin:$PATH
         
     | 
| 
       252 
     | 
    
         
            -
             
     | 
| 
       253 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       254 
     | 
    
         
            -
             
     | 
| 
       255 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       256 
     | 
    
         
            -
             
     | 
| 
       257 
     | 
    
         
            -
            <% if distro =~ /debian|ubuntu/ %>
         
     | 
| 
       258 
     | 
    
         
            -
              # mkdir was moved from /usr/bin to /bin and MongoDB's distros
         
     | 
| 
       259 
     | 
    
         
            -
              # apparently keep using the old location.
         
     | 
| 
       260 
     | 
    
         
            -
              # This definitely affects debian10.
         
     | 
| 
       261 
     | 
    
         
            -
              # https://stackoverflow.com/questions/64653051/make-usr-bin-mkdir-command-not-found-during-gem-install-nokogiri-in-ubuntu
         
     | 
| 
       262 
     | 
    
         
            -
              RUN test -f /usr/bin/mkdir || ln -s /bin/mkdir /usr/bin/mkdir
         
     | 
| 
       263 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       264 
     | 
    
         
            -
             
     | 
| 
       265 
     | 
    
         
            -
            WORKDIR /app
         
     | 
| 
       266 
     | 
    
         
            -
             
     | 
| 
       267 
     | 
    
         
            -
            <% if preload? && !ruby_head? %>
         
     | 
| 
       268 
     | 
    
         
            -
             
     | 
| 
       269 
     | 
    
         
            -
              COPY Gemfile .
         
     | 
| 
       270 
     | 
    
         
            -
              COPY gemfiles gemfiles
         
     | 
| 
       271 
     | 
    
         
            -
              COPY *.gemspec .
         
     | 
| 
       272 
     | 
    
         
            -
              COPY lib/<%= project_lib_subdir %>/version.rb lib/<%= project_lib_subdir %>/version.rb
         
     | 
| 
       273 
     | 
    
         
            -
              RUN bundle install
         
     | 
| 
       274 
     | 
    
         
            -
              COPY .evergreen/patch-debuggers .evergreen/patch-debuggers
         
     | 
| 
       275 
     | 
    
         
            -
              <% if system_ruby? %>
         
     | 
| 
       276 
     | 
    
         
            -
                # Running under docker with root access
         
     | 
| 
       277 
     | 
    
         
            -
                RUN .evergreen/patch-debuggers /var/lib/gems
         
     | 
| 
       278 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       279 
     | 
    
         
            -
                RUN .evergreen/patch-debuggers /opt/rubies
         
     | 
| 
       280 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
       282 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       283 
     | 
    
         
            -
             
     | 
| 
       284 
     | 
    
         
            -
            <% if fle? %>
         
     | 
| 
       285 
     | 
    
         
            -
              RUN curl --retry 3 -fL "https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz" |tar zxf -
         
     | 
| 
       286 
     | 
    
         
            -
             
     | 
| 
       287 
     | 
    
         
            -
              <%= "ENV LIBMONGOCRYPT_PATH #{libmongocrypt_path}" %>
         
     | 
| 
       288 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       289 
     | 
    
         
            -
             
     | 
| 
       290 
     | 
    
         
            -
            <% if preload? %>
         
     | 
| 
       291 
     | 
    
         
            -
              ENV DOCKER_PRELOAD=1
         
     | 
| 
       292 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       293 
     | 
    
         
            -
             
     | 
| 
       294 
     | 
    
         
            -
            ENV MONGO_ORCHESTRATION_HOME=/tmpfs \
         
     | 
| 
       295 
     | 
    
         
            -
              PROJECT_DIRECTORY=/app \
         
     | 
| 
       296 
     | 
    
         
            -
              <%= @env.map { |k, v| %Q`#{k}="#{v.gsub('$', "\\$").gsub('"', "\\\"")}"` }.join(" \\\n  ") %>
         
     | 
| 
       297 
     | 
    
         
            -
             
     | 
| 
       298 
     | 
    
         
            -
            <% if interactive? %>
         
     | 
| 
       299 
     | 
    
         
            -
              ENV INTERACTIVE=1
         
     | 
| 
       300 
     | 
    
         
            -
            <% end %>
         
     | 
| 
       301 
     | 
    
         
            -
             
     | 
| 
       302 
     | 
    
         
            -
            COPY . .
         
     | 
| 
       303 
     | 
    
         
            -
             
     | 
| 
       304 
     | 
    
         
            -
            RUN bash -c '. .evergreen/download-mongodb.sh && get_distro && get_mongodb_download_url_for "$DISTRO" "<%= server_version %>" && curl --retry 3 -fL $MONGODB_DOWNLOAD_URL |tar xzf - && mv mongo*/ /opt/mongodb'
         
     | 
| 
       305 
     | 
    
         
            -
            ENV USE_OPT_MONGODB=1 USE_SYSTEM_PYTHON_PACKAGES=1
         
     | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
       307 
     | 
    
         
            -
            <% if expose? %>
         
     | 
| 
       308 
     | 
    
         
            -
             
     | 
| 
       309 
     | 
    
         
            -
              <% ports = [] %>
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
              <% 0.upto(num_exposed_ports-1) do |i| %>
         
     | 
| 
       312 
     | 
    
         
            -
                <% ports << 27017 + i %>
         
     | 
| 
       313 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
              <% if @env['OCSP_ALGORITHM'] %>
         
     | 
| 
       316 
     | 
    
         
            -
                <% ports << 8100 %>
         
     | 
| 
       317 
     | 
    
         
            -
              <% end %>
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
              EXPOSE <%= ports.map(&:to_s).join(' ') %>
         
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
       321 
     | 
    
         
            -
            <% end %>
         
     | 
| 
         @@ -1,16 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Modeled after
         
     | 
| 
       2 
     | 
    
         
            -
            # https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-load-balancer.sh
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            defaults
         
     | 
| 
       5 
     | 
    
         
            -
              mode tcp
         
     | 
| 
       6 
     | 
    
         
            -
              timeout connect 7s
         
     | 
| 
       7 
     | 
    
         
            -
              timeout client 55s
         
     | 
| 
       8 
     | 
    
         
            -
              timeout server 55s
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            frontend mongos_frontend
         
     | 
| 
       11 
     | 
    
         
            -
              bind *:27017
         
     | 
| 
       12 
     | 
    
         
            -
              use_backend mongos_backend
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            backend mongos_backend
         
     | 
| 
       15 
     | 
    
         
            -
              mode tcp
         
     | 
| 
       16 
     | 
    
         
            -
              server mongos_one 127.0.0.1:27117 check
         
     | 
| 
         @@ -1,17 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # Modeled after
         
     | 
| 
       2 
     | 
    
         
            -
            # https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-load-balancer.sh
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            defaults
         
     | 
| 
       5 
     | 
    
         
            -
              mode tcp
         
     | 
| 
       6 
     | 
    
         
            -
              timeout connect 7s
         
     | 
| 
       7 
     | 
    
         
            -
              timeout client 55s
         
     | 
| 
       8 
     | 
    
         
            -
              timeout server 55s
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            frontend mongos_frontend
         
     | 
| 
       11 
     | 
    
         
            -
              bind *:27017
         
     | 
| 
       12 
     | 
    
         
            -
              use_backend mongos_backend
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            backend mongos_backend
         
     | 
| 
       15 
     | 
    
         
            -
              mode tcp
         
     | 
| 
       16 
     | 
    
         
            -
              server mongos_one 127.0.0.1:27117 check
         
     | 
| 
       17 
     | 
    
         
            -
              server mongos_two 127.0.0.1:27118 check
         
     | 
    
        data/spec/shared/shlib/config.sh
    DELETED
    
    | 
         @@ -1,27 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            show_local_instructions_impl() {
         
     | 
| 
       2 
     | 
    
         
            -
              local arch="$1"
         
     | 
| 
       3 
     | 
    
         
            -
              shift
         
     | 
| 
       4 
     | 
    
         
            -
              
         
     | 
| 
       5 
     | 
    
         
            -
              echo To test this configuration locally:
         
     | 
| 
       6 
     | 
    
         
            -
              local params=
         
     | 
| 
       7 
     | 
    
         
            -
              while test -n "$1"; do
         
     | 
| 
       8 
     | 
    
         
            -
                key="$1"
         
     | 
| 
       9 
     | 
    
         
            -
                shift
         
     | 
| 
       10 
     | 
    
         
            -
                # ${!foo} syntax is bash specific:
         
     | 
| 
       11 
     | 
    
         
            -
                # https://stackoverflow.com/questions/14049057/bash-expand-variable-in-a-variable
         
     | 
| 
       12 
     | 
    
         
            -
                value="${!key}"
         
     | 
| 
       13 
     | 
    
         
            -
                if test -n "$value"; then
         
     | 
| 
       14 
     | 
    
         
            -
                  params="$params $key=$value"
         
     | 
| 
       15 
     | 
    
         
            -
                fi
         
     | 
| 
       16 
     | 
    
         
            -
              done
         
     | 
| 
       17 
     | 
    
         
            -
              
         
     | 
| 
       18 
     | 
    
         
            -
              # $0 has the current script being executed which is also the script that
         
     | 
| 
       19 
     | 
    
         
            -
              # was initially invoked EXCEPT for the AWS configurations which use the
         
     | 
| 
       20 
     | 
    
         
            -
              # wrapper script.
         
     | 
| 
       21 
     | 
    
         
            -
              if echo "$AUTH" |grep -q ^aws; then
         
     | 
| 
       22 
     | 
    
         
            -
                script=.evergreen/run-tests-aws-auth.sh
         
     | 
| 
       23 
     | 
    
         
            -
              else
         
     | 
| 
       24 
     | 
    
         
            -
                script="$0"
         
     | 
| 
       25 
     | 
    
         
            -
              fi
         
     | 
| 
       26 
     | 
    
         
            -
              echo ./.evergreen/test-on-docker -d $arch $params -s "$script"
         
     | 
| 
       27 
     | 
    
         
            -
            }
         
     | 
    
        data/spec/shared/shlib/distro.sh
    DELETED
    
    | 
         @@ -1,74 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            detected_distro=
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            host_distro() {
         
     | 
| 
       4 
     | 
    
         
            -
              if test -z "$detected_distro"; then
         
     | 
| 
       5 
     | 
    
         
            -
                detected_distro=`_detect_distro`
         
     | 
| 
       6 
     | 
    
         
            -
              fi
         
     | 
| 
       7 
     | 
    
         
            -
              echo "$detected_distro"
         
     | 
| 
       8 
     | 
    
         
            -
            }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            _detect_distro() {
         
     | 
| 
       11 
     | 
    
         
            -
              local distro
         
     | 
| 
       12 
     | 
    
         
            -
              distro=
         
     | 
| 
       13 
     | 
    
         
            -
              if test -f /etc/debian_version; then
         
     | 
| 
       14 
     | 
    
         
            -
                # Debian or Ubuntu
         
     | 
| 
       15 
     | 
    
         
            -
                if test "`uname -m`" = aarch64; then
         
     | 
| 
       16 
     | 
    
         
            -
                  release=`lsb_release -rs |tr -d .`
         
     | 
| 
       17 
     | 
    
         
            -
                  distro="ubuntu$release"-arm
         
     | 
| 
       18 
     | 
    
         
            -
                elif lsb_release -is |grep -q Debian; then
         
     | 
| 
       19 
     | 
    
         
            -
                  release=`lsb_release -rs |tr -d .`
         
     | 
| 
       20 
     | 
    
         
            -
                  # In docker, release is something like 9.11.
         
     | 
| 
       21 
     | 
    
         
            -
                  # In evergreen, release is 9.2.
         
     | 
| 
       22 
     | 
    
         
            -
                  release=`echo $release |sed -e 's/^9.*/92/'`
         
     | 
| 
       23 
     | 
    
         
            -
                  distro="debian$release"
         
     | 
| 
       24 
     | 
    
         
            -
                elif lsb_release -is |grep -q Ubuntu; then
         
     | 
| 
       25 
     | 
    
         
            -
                  if test "`uname -m`" = ppc64le; then
         
     | 
| 
       26 
     | 
    
         
            -
                    release=`lsb_release -rs |tr -d .`
         
     | 
| 
       27 
     | 
    
         
            -
                    distro="ubuntu$release-ppc"
         
     | 
| 
       28 
     | 
    
         
            -
                  else
         
     | 
| 
       29 
     | 
    
         
            -
                    release=`lsb_release -rs |tr -d .`
         
     | 
| 
       30 
     | 
    
         
            -
                    distro="ubuntu$release"
         
     | 
| 
       31 
     | 
    
         
            -
                  fi
         
     | 
| 
       32 
     | 
    
         
            -
                else
         
     | 
| 
       33 
     | 
    
         
            -
                  echo 'Unknown Debian flavor' 1>&2
         
     | 
| 
       34 
     | 
    
         
            -
                  exit 1
         
     | 
| 
       35 
     | 
    
         
            -
                fi
         
     | 
| 
       36 
     | 
    
         
            -
              elif lsb_release -is |grep -qi suse; then
         
     | 
| 
       37 
     | 
    
         
            -
                if test "`uname -m`" = s390x; then
         
     | 
| 
       38 
     | 
    
         
            -
                  release=`lsb_release -rs |sed -e 's/\..*//'`
         
     | 
| 
       39 
     | 
    
         
            -
                  distro="suse$release-s390x"
         
     | 
| 
       40 
     | 
    
         
            -
                else
         
     | 
| 
       41 
     | 
    
         
            -
                  echo 'Unknown Suse arch' 1>&2
         
     | 
| 
       42 
     | 
    
         
            -
                  exit 1
         
     | 
| 
       43 
     | 
    
         
            -
                fi
         
     | 
| 
       44 
     | 
    
         
            -
              elif test -f /etc/redhat-release; then
         
     | 
| 
       45 
     | 
    
         
            -
                # RHEL or CentOS
         
     | 
| 
       46 
     | 
    
         
            -
                if test "`uname -m`" = s390x; then
         
     | 
| 
       47 
     | 
    
         
            -
                  distro=rhel72-s390x
         
     | 
| 
       48 
     | 
    
         
            -
                elif test "`uname -m`" = ppc64le; then
         
     | 
| 
       49 
     | 
    
         
            -
                  distro=rhel71-ppc
         
     | 
| 
       50 
     | 
    
         
            -
                elif lsb_release >/dev/null 2>&1; then
         
     | 
| 
       51 
     | 
    
         
            -
                  if lsb_release -is |grep -q RedHat; then
         
     | 
| 
       52 
     | 
    
         
            -
                    release=`lsb_release -rs |tr -d .`
         
     | 
| 
       53 
     | 
    
         
            -
                    distro="rhel$release"
         
     | 
| 
       54 
     | 
    
         
            -
                  elif lsb_release -is |grep -q CentOS; then
         
     | 
| 
       55 
     | 
    
         
            -
                    release=`lsb_release -rs |cut -c 1 |sed -e s/7/70/ -e s/6/62/ -e s/8/80/`
         
     | 
| 
       56 
     | 
    
         
            -
                    distro="rhel$release"
         
     | 
| 
       57 
     | 
    
         
            -
                  else
         
     | 
| 
       58 
     | 
    
         
            -
                    echo 'Unknown RHEL flavor' 1>&2
         
     | 
| 
       59 
     | 
    
         
            -
                    exit 1
         
     | 
| 
       60 
     | 
    
         
            -
                  fi
         
     | 
| 
       61 
     | 
    
         
            -
                else
         
     | 
| 
       62 
     | 
    
         
            -
                  echo lsb_release missing, using /etc/redhat-release 1>&2
         
     | 
| 
       63 
     | 
    
         
            -
                  release=`grep -o 'release [0-9]' /etc/redhat-release |awk '{print $2}'`
         
     | 
| 
       64 
     | 
    
         
            -
                  release=`echo $release |sed -e s/7/70/ -e s/6/62/ -e s/8/80/`
         
     | 
| 
       65 
     | 
    
         
            -
                  distro=rhel$release
         
     | 
| 
       66 
     | 
    
         
            -
                fi
         
     | 
| 
       67 
     | 
    
         
            -
              else
         
     | 
| 
       68 
     | 
    
         
            -
                lsb_release -a
         
     | 
| 
       69 
     | 
    
         
            -
                echo 'Unknown distro' 1>&2
         
     | 
| 
       70 
     | 
    
         
            -
                exit 1
         
     | 
| 
       71 
     | 
    
         
            -
              fi
         
     | 
| 
       72 
     | 
    
         
            -
              echo "Detected distro: $distro" 1>&2
         
     | 
| 
       73 
     | 
    
         
            -
              echo $distro
         
     | 
| 
       74 
     | 
    
         
            -
            }
         
     |