summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-07-06 11:03:35 -0600
committermo khan <mo.khan@gmail.com>2020-07-10 08:53:37 -0600
commit36cdb0040abda394264455a1fdf3d6782af95ceb (patch)
tree54093c956c0f4dcf4c2ad352847017aee9a88edc /config
parentc7385965b4166fb6ab2db3387c67cd54aef1b8df (diff)
Isolate license_management ruby from project
* Target ruby version 2.7.1 * Add spec to fetch gems from a custom source * Add proxy to rubygems.org config * Specify default env vars to support offline environment * Cleanup custom certificates after spec * Inline docker-test script * Do not install license_finder with each installed ruby * Increase gem log verbosity and include backtrace * Extract test fixtures for the different ruby scenarios * Find *.gemspec files in gems dir * Use RUBYLIB to hijack src path * Run scan from project path dir
Diffstat (limited to 'config')
-rw-r--r--config/.gemrc4
-rw-r--r--config/files/.asdfrc (renamed from config/.asdfrc)0
-rw-r--r--config/files/.bashrc (renamed from config/.bashrc)7
-rw-r--r--config/files/.config/NuGet/NuGet.Config (renamed from config/.config/NuGet/NuGet.Config)0
-rw-r--r--config/files/.config/virtualenv/virtualenv.ini (renamed from config/.config/virtualenv/virtualenv.ini)0
-rw-r--r--config/files/.curlrc (renamed from config/.curlrc)0
-rw-r--r--config/files/.default-gems (renamed from config/.default-gems)1
-rw-r--r--config/files/.default-npm-packages (renamed from config/.default-npm-packages)0
-rw-r--r--config/files/.default-python-packages (renamed from config/.default-python-packages)0
-rw-r--r--config/files/.env.12-10-stable (renamed from config/.env.12-10-stable)0
-rw-r--r--config/files/.env.12-2-stable (renamed from config/.env.12-2-stable)0
-rw-r--r--config/files/.env.12-3-stable (renamed from config/.env.12-3-stable)0
-rw-r--r--config/files/.env.12-4-stable (renamed from config/.env.12-4-stable)0
-rw-r--r--config/files/.env.12-5-stable (renamed from config/.env.12-5-stable)0
-rw-r--r--config/files/.env.12-6-stable (renamed from config/.env.12-6-stable)0
-rw-r--r--config/files/.env.12-7-stable (renamed from config/.env.12-7-stable)0
-rw-r--r--config/files/.env.12-8-stable (renamed from config/.env.12-8-stable)0
-rw-r--r--config/files/.env.12-9-stable (renamed from config/.env.12-9-stable)0
-rw-r--r--config/files/.env.13-0-stable (renamed from config/.env.13-0-stable)0
-rw-r--r--config/files/.env.legacy (renamed from config/.env.legacy)0
-rw-r--r--config/files/.gemrc4
-rw-r--r--config/files/.gradle/init.gradle (renamed from config/.gradle/init.gradle)0
-rw-r--r--config/files/.m2/settings.xml (renamed from config/.m2/settings.xml)0
-rw-r--r--config/files/.npmrc (renamed from config/.npmrc)0
-rw-r--r--config/files/.profile (renamed from config/.profile)2
-rw-r--r--config/files/.tool-versions (renamed from config/.tool-versions)0
-rw-r--r--config/install.sh24
-rw-r--r--config/projects/license_management.rb17
-rwxr-xr-xconfig/scripts/license_management/postinst14
-rwxr-xr-xconfig/scripts/license_management/postrm6
-rwxr-xr-xconfig/scripts/license_management/preinst3
-rwxr-xr-xconfig/scripts/license_management/prerm11
-rw-r--r--config/software/license_management.rb34
-rw-r--r--config/software/ruby.rb73
34 files changed, 182 insertions, 18 deletions
diff --git a/config/.gemrc b/config/.gemrc
deleted file mode 100644
index ff5fcc7..0000000
--- a/config/.gemrc
+++ /dev/null
@@ -1,4 +0,0 @@
-:verbose: true
-:sources:
-- https://rubygems.org/
-gem: --no-document
diff --git a/config/.asdfrc b/config/files/.asdfrc
index e600bd0..e600bd0 100644
--- a/config/.asdfrc
+++ b/config/files/.asdfrc
diff --git a/config/.bashrc b/config/files/.bashrc
index 3e45713..81afcb8 100644
--- a/config/.bashrc
+++ b/config/files/.bashrc
@@ -1,8 +1,13 @@
#!/bin/bash
+export ASDF_DATA_DIR="/opt/asdf"
+export PATH="${ASDF_DATA_DIR}/shims:${ASDF_DATA_DIR}/bin:/opt/gitlab/.local/bin:${PATH}"
+export HOME="/opt/gitlab"
+
alias nuget='mono /usr/local/bin/nuget.exe'
set -o vi
+
function inflate() {
local file=$1
local to_dir=$2
@@ -35,7 +40,7 @@ function switch_to() {
local tool=$1
local major_version=$2
local version
- version="$(grep "$tool" "$HOME/.tool-versions"| tr ' ' '\n' | grep "^$major_version")"
+ version="$(grep "$tool" "/opt/gitlab/.tool-versions"| tr ' ' '\n' | grep "^$major_version")"
switch_to_exact "$tool" "$version"
}
diff --git a/config/.config/NuGet/NuGet.Config b/config/files/.config/NuGet/NuGet.Config
index 449478c..449478c 100644
--- a/config/.config/NuGet/NuGet.Config
+++ b/config/files/.config/NuGet/NuGet.Config
diff --git a/config/.config/virtualenv/virtualenv.ini b/config/files/.config/virtualenv/virtualenv.ini
index 208c7bf..208c7bf 100644
--- a/config/.config/virtualenv/virtualenv.ini
+++ b/config/files/.config/virtualenv/virtualenv.ini
diff --git a/config/.curlrc b/config/files/.curlrc
index df02a54..df02a54 100644
--- a/config/.curlrc
+++ b/config/files/.curlrc
diff --git a/config/.default-gems b/config/files/.default-gems
index 87e0d78..f832f6e 100644
--- a/config/.default-gems
+++ b/config/files/.default-gems
@@ -1,3 +1,2 @@
bundler ~>1.7
bundler ~>2.0
-license_finder ~>6.6.0
diff --git a/config/.default-npm-packages b/config/files/.default-npm-packages
index 8e16e61..8e16e61 100644
--- a/config/.default-npm-packages
+++ b/config/files/.default-npm-packages
diff --git a/config/.default-python-packages b/config/files/.default-python-packages
index ddf6574..ddf6574 100644
--- a/config/.default-python-packages
+++ b/config/files/.default-python-packages
diff --git a/config/.env.12-10-stable b/config/files/.env.12-10-stable
index da5a244..da5a244 100644
--- a/config/.env.12-10-stable
+++ b/config/files/.env.12-10-stable
diff --git a/config/.env.12-2-stable b/config/files/.env.12-2-stable
index 808b2ac..808b2ac 100644
--- a/config/.env.12-2-stable
+++ b/config/files/.env.12-2-stable
diff --git a/config/.env.12-3-stable b/config/files/.env.12-3-stable
index 808b2ac..808b2ac 100644
--- a/config/.env.12-3-stable
+++ b/config/files/.env.12-3-stable
diff --git a/config/.env.12-4-stable b/config/files/.env.12-4-stable
index 86a9c8f..86a9c8f 100644
--- a/config/.env.12-4-stable
+++ b/config/files/.env.12-4-stable
diff --git a/config/.env.12-5-stable b/config/files/.env.12-5-stable
index da5a244..da5a244 100644
--- a/config/.env.12-5-stable
+++ b/config/files/.env.12-5-stable
diff --git a/config/.env.12-6-stable b/config/files/.env.12-6-stable
index da5a244..da5a244 100644
--- a/config/.env.12-6-stable
+++ b/config/files/.env.12-6-stable
diff --git a/config/.env.12-7-stable b/config/files/.env.12-7-stable
index da5a244..da5a244 100644
--- a/config/.env.12-7-stable
+++ b/config/files/.env.12-7-stable
diff --git a/config/.env.12-8-stable b/config/files/.env.12-8-stable
index da5a244..da5a244 100644
--- a/config/.env.12-8-stable
+++ b/config/files/.env.12-8-stable
diff --git a/config/.env.12-9-stable b/config/files/.env.12-9-stable
index da5a244..da5a244 100644
--- a/config/.env.12-9-stable
+++ b/config/files/.env.12-9-stable
diff --git a/config/.env.13-0-stable b/config/files/.env.13-0-stable
index da5a244..da5a244 100644
--- a/config/.env.13-0-stable
+++ b/config/files/.env.13-0-stable
diff --git a/config/.env.legacy b/config/files/.env.legacy
index 7181ab8..7181ab8 100644
--- a/config/.env.legacy
+++ b/config/files/.env.legacy
diff --git a/config/files/.gemrc b/config/files/.gemrc
new file mode 100644
index 0000000..8bfd7f0
--- /dev/null
+++ b/config/files/.gemrc
@@ -0,0 +1,4 @@
+backtrace: true
+benchmark: false
+gem: --no-ri --no-rdoc --no-document --suggestions
+verbose: true
diff --git a/config/.gradle/init.gradle b/config/files/.gradle/init.gradle
index b8cc7f1..b8cc7f1 100644
--- a/config/.gradle/init.gradle
+++ b/config/files/.gradle/init.gradle
diff --git a/config/.m2/settings.xml b/config/files/.m2/settings.xml
index 9a89d90..9a89d90 100644
--- a/config/.m2/settings.xml
+++ b/config/files/.m2/settings.xml
diff --git a/config/.npmrc b/config/files/.npmrc
index 426026b..426026b 100644
--- a/config/.npmrc
+++ b/config/files/.npmrc
diff --git a/config/.profile b/config/files/.profile
index 320c173..f7638e6 100644
--- a/config/.profile
+++ b/config/files/.profile
@@ -1,3 +1,3 @@
#!/bin/sh
# shellcheck source=/dev/null
-. "$HOME/.bashrc"
+. "/opt/gitlab/.bashrc"
diff --git a/config/.tool-versions b/config/files/.tool-versions
index 852c2d4..852c2d4 100644
--- a/config/.tool-versions
+++ b/config/files/.tool-versions
diff --git a/config/install.sh b/config/install.sh
index a93451b..0de9b1c 100644
--- a/config/install.sh
+++ b/config/install.sh
@@ -81,10 +81,14 @@ wget -q -O /etc/apt/sources.list.d/microsoft-prod.list https://packages.microsof
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-buster main" | tee /etc/apt/sources.list.d/mono-official-stable.list
-curl -o /usr/local/bin/nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe &
+curl -o /usr/local/bin/nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
echo -e "section_end:$(date +%s):install_dotnet\r\e[0K"
echo -e "section_start:$(date +%s):install_asdf\r\e[0K==> Installing asdf…"
+dpkg --install "$(find /opt/toolcache/ -name "license-management*.deb")"
+rm -fr /root
+ln -s /opt/gitlab /root
+
mkdir -p "$ASDF_DATA_DIR"
git clone https://github.com/asdf-vm/asdf.git "$ASDF_DATA_DIR"
cd "$ASDF_DATA_DIR"
@@ -96,7 +100,7 @@ git checkout "$(git describe --abbrev=0 --tags)"
while IFS= read -r line; do
tool=$(echo "$line" | cut -d' ' -f1)
asdf plugin-add "$tool"
-done < "$HOME/.tool-versions"
+done < "/opt/gitlab/.tool-versions"
bash "$ASDF_DATA_DIR/plugins/nodejs/bin/import-release-team-keyring"
asdf install
asdf reshim
@@ -104,7 +108,7 @@ asdf current
for version in $(asdf list python); do
asdf shell python "$version"
- pip download -d "$HOME/.config/virtualenv/app-data" pip-licenses pip setuptools wheel
+ pip download -d "/opt/gitlab/.config/virtualenv/app-data" pip-licenses pip setuptools wheel
done
wait
echo -e "section_end:$(date +%s):install_asdf\r\e[0K"
@@ -127,11 +131,11 @@ rm -fr "$ASDF_DATA_DIR/docs" \
"$ASDF_DATA_DIR"/installs/ruby/**/lib/ruby/gems/**/cache \
"$ASDF_DATA_DIR"/installs/**/**/share \
"$ASDF_DATA_DIR"/test \
- "$HOME"/.config/configstore/update-notifier-npm.json \
- "$HOME"/.config/pip/selfcheck.json \
- "$HOME"/.gem \
- "$HOME"/.npm \
- "$HOME"/.wget-hsts \
+ /opt/gitlab/.config/configstore/update-notifier-npm.json \
+ /opt/gitlab/.config/pip/selfcheck.json \
+ /opt/gitlab/.gem \
+ /opt/gitlab/.npm \
+ /opt/gitlab/.wget-hsts \
/etc/apache2/* \
/etc/bash_completion.d/* \
/etc/calendar/* \
@@ -186,7 +190,5 @@ wait
rm -fr \
/opt/asdf/ \
/usr/lib/gcc \
- /usr/lib/mono \
- /usr/lib/rustlib \
- /usr/share/dotnet
+ /usr/lib/rustlib
echo -e "section_end:$(date +%s):compress_files\r\e[0K"
diff --git a/config/projects/license_management.rb b/config/projects/license_management.rb
new file mode 100644
index 0000000..c34a680
--- /dev/null
+++ b/config/projects/license_management.rb
@@ -0,0 +1,17 @@
+require_relative '../../lib/license/management/version.rb'
+name "license-management"
+maintainer "mkhan@gitlab.com"
+homepage "https://gitlab.com/gitlab-org/security-products/license-management"
+license_file "LICENSE"
+
+install_dir "#{default_root}/gitlab"
+build_version License::Management::VERSION
+build_iteration 1
+
+dependency "license_management"
+package_scripts_path Pathname.pwd.join("config/scripts/license_management")
+
+package :deb do
+ compression_level 9
+ compression_type :xz
+end
diff --git a/config/scripts/license_management/postinst b/config/scripts/license_management/postinst
new file mode 100755
index 0000000..da63d3b
--- /dev/null
+++ b/config/scripts/license_management/postinst
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+PROGNAME=$(basename "$0")
+
+error_exit()
+{
+ echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
+ exit 1
+}
+
+ln -s /opt/gitlab/bin/license_management /usr/local/bin/license_management
+echo "Thank you for installing license_management!"
+
+exit 0
diff --git a/config/scripts/license_management/postrm b/config/scripts/license_management/postrm
new file mode 100755
index 0000000..5b47b27
--- /dev/null
+++ b/config/scripts/license_management/postrm
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+rm -f /usr/local/bin/license_management
+echo "license_management has been uninstalled!"
+
+exit 0
diff --git a/config/scripts/license_management/preinst b/config/scripts/license_management/preinst
new file mode 100755
index 0000000..dcef0c4
--- /dev/null
+++ b/config/scripts/license_management/preinst
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "You're about to install license_management!"
diff --git a/config/scripts/license_management/prerm b/config/scripts/license_management/prerm
new file mode 100755
index 0000000..ef80795
--- /dev/null
+++ b/config/scripts/license_management/prerm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+PROGNAME=$(basename "$0")
+
+error_exit()
+{
+ echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2
+ exit 1
+}
+
+exit 0
diff --git a/config/software/license_management.rb b/config/software/license_management.rb
new file mode 100644
index 0000000..be19ddb
--- /dev/null
+++ b/config/software/license_management.rb
@@ -0,0 +1,34 @@
+require_relative '../../lib/license/management/version.rb'
+name "license_management"
+
+default_version License::Management::VERSION
+source({
+ path: Dir.pwd,
+ options: {
+ exclude: %w[bin coverage pkg spec tmp vendor .git .gitlab]
+ }
+})
+
+dependency "ruby"
+
+build do
+ touch "#{install_dir}/bin/.keep"
+ touch "#{install_dir}/.local/bin/.keep"
+
+ gem "build #{project_dir}/license-management.gemspec -o #{project_dir}/release.gem"
+ gem "install -f #{project_dir}/release.gem --no-document"
+ delete "#{project_dir}/release.gem"
+ command "cp #{install_dir}/embedded/bin/license_management #{install_dir}/bin/license_management"
+
+ command "cp -r #{project_dir}/config/files/. #{install_dir}/"
+ command "mvn license:license-list"
+ command "mvn dependency:get -Dartifact=gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:0.15.0 -DremoteRepositories=https://plugins.gradle.org/m2"
+ command "mvn dependency:get -Dartifact=org.codehaus.plexus:plexus-utils:2.0.6"
+ copy "#{Dir.home}/.m2/repository/", "#{install_dir}/.m2/repository/"
+end
+
+build do
+ delete "#{install_dir}/embedded/lib/ruby/gems/**/cache"
+ delete "#{install_dir}/embedded/lib/ruby/gems/**/doc"
+ delete "#{install_dir}/embedded/lib/ruby/gems/**/build_info"
+end
diff --git a/config/software/ruby.rb b/config/software/ruby.rb
new file mode 100644
index 0000000..56a04fc
--- /dev/null
+++ b/config/software/ruby.rb
@@ -0,0 +1,73 @@
+require 'fileutils'
+
+name "ruby"
+
+license "BSD-2-Clause"
+license_file "BSDL"
+license_file "COPYING"
+license_file "LEGAL"
+skip_transitive_dependency_licensing true
+
+default_version "2.7.1"
+
+dependency "libffi"
+dependency "libyaml"
+dependency "openssl"
+dependency "zlib"
+
+source url: "https://cache.ruby-lang.org/pub/ruby/#{version.match(/^(\d+\.\d+)/)[0]}/ruby-#{version}.tar.gz", sha256: "d418483bdd0000576c1370571121a6eb24582116db0b7bb2005e90e250eae418"
+
+relative_path "ruby-#{version}"
+embedded_dir = "#{install_dir}/embedded"
+
+build do
+ env = with_standard_compiler_flags(with_embedded_path)
+ configure_command = [
+ "--disable-debug-env",
+ "--disable-dtrace",
+ "--disable-install-capi",
+ "--disable-install-doc",
+ "--disable-install-rdoc",
+ "--disable-jit-support",
+ "--enable-shared",
+ "--prefix=#{embedded_dir}",
+ "--with-out-ext=dbm,readline,rdoc,win32,win32ole,sdbm",
+ "--without-gdbm",
+ "--without-gmp",
+ "--without-jemalloc",
+ "--without-tk",
+ "--without-valgrind"
+ ]
+ configure(*configure_command, env: env)
+ make "-j #{workers}", env: env
+ make "-j #{workers} install", env: env
+end
+
+build do
+ command "#{embedded_dir}/bin/gem install bundler -v'~> 2.0' --no-document"
+ command "#{embedded_dir}/bin/gem install bundler -v'~> 1.0' --no-document"
+end
+
+build do
+ %w[benchmark pstore rss test-unit webrick minitest].each do |gem_name|
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/#{gem_name}*"
+ delete "#{embedded_dir}/lib/ruby/**/#{gem_name}*"
+ end
+
+ delete "#{embedded_dir}/bin/*rac*"
+ delete "#{embedded_dir}/bin/erb"
+ delete "#{embedded_dir}/bin/irb"
+ delete "#{embedded_dir}/bin/rake"
+ delete "#{embedded_dir}/bin/rdoc"
+ delete "#{embedded_dir}/bin/ri"
+ delete "#{embedded_dir}/bin/thor"
+ delete "#{embedded_dir}/lib/ruby/gems/**/cache"
+ delete "#{embedded_dir}/lib/ruby/gems/**/doc"
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/.github"
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/.gitignore"
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/.travis.yml"
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/bundler/man"
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/man"
+ delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/test"
+ delete "#{embedded_dir}/share"
+end