Skip to content

Commit

Permalink
Ensure omnibus on windows can be rebuilt multiple times
Browse files Browse the repository at this point in the history
  • Loading branch information
adfoster-r7 committed May 15, 2024
1 parent 0008a23 commit a033f3d
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 6 deletions.
12 changes: 10 additions & 2 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ permissions:
on:
push:
branches:
- '*'
- 'master'
pull_request:
branches:
- '*'
Expand Down Expand Up @@ -338,6 +338,14 @@ jobs:
cd metasploit-omnibus
make dependencies
rem Don't run the main build itslef under `make`, as the process will be spawned under msys2
rem Don't run the main build itself under `make`, as the process will be spawned under msys2
rem and the ridk.cmd Ruby installer will forcibly kill the msys2 process before attempting to install ruby
ruby bin/omnibus build metasploit-framework
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: metasploit-windows-installers
path: |
metasploit-omnibus/pkg/*.msi
retention-days: 1
1 change: 1 addition & 0 deletions config/projects/metasploit-framework.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

install_dir "#{default_root}/metasploit-framework"

# Version is extracted from the latest Git tag found in the local Git repository
build_version Omnibus::BuildVersion.semver + "-1rapid7"
build_iteration 1

Expand Down
26 changes: 25 additions & 1 deletion config/software/metasploit-framework.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
name "metasploit-framework"

# Detect a local checkout of metasploit-framework at '../metasploit-framework' - i.e. for the scenario of:
# - c:/temp/metasploit-omnibus
# - c:/temp/metasploit-framework (A local checkout of framework to use during the build process)
# but try and use 'C:/metasploit-framework' - as that's the metasploit-omnibus artifacts output directory
def has_windows_metasploit_framework_repo?
windows? && File.exist?('../metasploit-framework') && File.expand_path(File.join(Dir.pwd, "..", "metasploit-framework")) != "c:/metasploit-framework"
end

if linux? && File.exist?("/metasploit-framework")
# supply current version of metasploit-framework at root of filesystem
source path: "/metasploit-framework"
elsif windows? && File.exist?('../metasploit-framework')
elsif has_windows_metasploit_framework_repo?
# supply current version of metasploit-framework relative to the current directory
source path: "../metasploit-framework"
else
Expand Down Expand Up @@ -85,6 +94,13 @@
bundle "install --jobs=4", env: bundle_env

if windows?
# Ensure we additionally copy out 'libssp-0.dll', which is required for multiple gems:
# > dumpbin /dependents C:/metasploit-framework/embedded/lib/ruby/gems/3.1.0/gems/msgpack-1.6.1/lib/msgpack/msgpack.so
# ...
# libssp-0.dll
# ...
copy "#{install_dir}/embedded/msys64/ucrt64/bin/libssp-0.dll", "#{install_dir}/embedded/bin/libssp-0.dll"

delete "#{install_dir}/embedded/msys64"
end
copy "#{project_dir}/Gemfile.lock", "#{install_dir}/embedded/framework/Gemfile.lock"
Expand Down Expand Up @@ -154,4 +170,12 @@
end
end
end

# Workaround for a Windows bug with chef r7_9.0.23_custom that allows the `.git` folders through
# into the final build result, leading to the .exe being an extra 1gb in size
block do
self.project.exclusions.each do |exclusion|
Pathname(install_dir).glob(exclusion).each(&:rmtree)
end
end
end
6 changes: 4 additions & 2 deletions config/software/rubygems.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
dependency "ruby"
end

default_version "3.2.22"
default_version "3.5.10"

if version && !source
# NOTE: 2.1.11 is the last version of rubygems before the 2.2.x change to native gem install location
Expand All @@ -40,7 +40,9 @@
# we pin the previously known tarballs.
known_tarballs = {
"3.1.4" => "d117187a8f016cbe8f52011ae02e858b",
"3.2.22"=> "b128d5493da2ec7a1da49a7189c04b35",
"3.2.22" => "b128d5493da2ec7a1da49a7189c04b35",
"3.3.26" =>"ba171c52fd9beda6dac7194413601795",
"3.5.10" =>"70f46c096b4e11c42b0190cc3e3375e2"
}
known_tarballs.each do |vsn, md5|
version vsn do
Expand Down
2 changes: 1 addition & 1 deletion local/cache

0 comments on commit a033f3d

Please sign in to comment.