diff --git a/configure.py b/configure.py index 272fc0803a..95d6f60c0b 100755 --- a/configure.py +++ b/configure.py @@ -2463,6 +2463,9 @@ def write_build_file(f, command = reloc/build_deb.sh --reloc-pkg $in --builddir $out rule unified command = unified/build_unified.sh --build-dir $builddir/$mode --unified-pkg $out + rule collect_pkgs + command = rm -rf $out && mkdir -p $out && cp $pkgs $out/ + description = COLLECT $out rule rust_header command = cxxbridge --include rust/cxx.h --header $in > $out description = RUST_HEADER $out @@ -2948,6 +2951,8 @@ def write_build_file(f, build dist-tar: phony dist-unified-tar dist-server-tar dist-python3-tar dist-cqlsh-tar build dist: phony dist-unified dist-server dist-python3 dist-cqlsh + + build collect-dist: phony {' '.join([f'collect-dist-{mode}' for mode in default_modes])} ''')) f.write(textwrap.dedent(f'''\ @@ -2955,7 +2960,28 @@ def write_build_file(f, rule dist-check command = ./tools/testing/dist-check/dist-check.sh --mode $mode ''')) + deb_arch = {'x86_64': 'amd64', 'aarch64': 'arm64'}[arch] + deb_ver = f'{scylla_version}-{scylla_release}-1' + rpm_ver = f'{scylla_version}-{scylla_release}' for mode in build_modes: + server_rpms_dir = f'$builddir/dist/{mode}/redhat/RPMS/{arch}' + server_rpms = [f'{server_rpms_dir}/{scylla_product}{suffix}-{rpm_ver}.{arch}.rpm' + for suffix in ['', '-server', '-server-debuginfo', '-conf', '-kernel-conf', '-node-exporter']] + cqlsh_rpms = [f'tools/cqlsh/build/redhat/RPMS/{arch}/{scylla_product}-cqlsh-{rpm_ver}.{arch}.rpm'] + python3_rpms = [f'tools/python3/build/redhat/RPMS/{arch}/{scylla_product}-python3-{rpm_ver}.{arch}.rpm'] + all_rpms = server_rpms + cqlsh_rpms + python3_rpms + + server_deb_dir = f'$builddir/dist/{mode}/debian' + server_debs = [f'{server_deb_dir}/{scylla_product}{suffix}_{deb_ver}_{deb_arch}.deb' + for suffix in ['', '-server', '-server-dbg', '-conf', '-kernel-conf', '-node-exporter']] + server_debs += [f'{server_deb_dir}/scylla-enterprise{suffix}_{deb_ver}_all.deb' + for suffix in ['', '-server', '-conf', '-kernel-conf', '-node-exporter']] + cqlsh_debs = [f'tools/cqlsh/build/debian/{scylla_product}-cqlsh_{deb_ver}_{deb_arch}.deb', + f'tools/cqlsh/build/debian/scylla-enterprise-cqlsh_{deb_ver}_all.deb'] + python3_debs = [f'tools/python3/build/debian/{scylla_product}-python3_{deb_ver}_{deb_arch}.deb', + f'tools/python3/build/debian/scylla-enterprise-python3_{deb_ver}_all.deb'] + all_debs = server_debs + cqlsh_debs + python3_debs + f.write(textwrap.dedent(f'''\ build $builddir/{mode}/dist/tar/{scylla_product}-python3-{scylla_version}-{scylla_release}.{arch}.tar.gz: copy tools/python3/build/{scylla_product}-python3-{scylla_version}-{scylla_release}.{arch}.tar.gz build $builddir/{mode}/dist/tar/{scylla_product}-python3-package.tar.gz: copy tools/python3/build/{scylla_product}-python3-{scylla_version}-{scylla_release}.{arch}.tar.gz @@ -2963,6 +2989,11 @@ def write_build_file(f, build $builddir/{mode}/dist/tar/{scylla_product}-cqlsh-{scylla_version}-{scylla_release}.{arch}.tar.gz: copy tools/cqlsh/build/{scylla_product}-cqlsh-{scylla_version}-{scylla_release}.{arch}.tar.gz build $builddir/{mode}/dist/tar/{scylla_product}-cqlsh-package.tar.gz: copy tools/cqlsh/build/{scylla_product}-cqlsh-{scylla_version}-{scylla_release}.{arch}.tar.gz + build $builddir/{mode}/dist/rpm: collect_pkgs | {' '.join(all_rpms)} $builddir/dist/{mode}/redhat dist-cqlsh-rpm dist-python3-rpm + pkgs = {' '.join(all_rpms)} + build $builddir/{mode}/dist/deb: collect_pkgs | {' '.join(all_debs)} $builddir/dist/{mode}/debian dist-cqlsh-deb dist-python3-deb + pkgs = {' '.join(all_debs)} + build collect-dist-{mode}: phony $builddir/{mode}/dist/rpm $builddir/{mode}/dist/deb build {mode}-dist: phony dist-server-{mode} dist-server-debuginfo-{mode} dist-python3-{mode} dist-unified-{mode} dist-cqlsh-{mode} build dist-{mode}: phony {mode}-dist build dist-check-{mode}: dist-check diff --git a/dist/CMakeLists.txt b/dist/CMakeLists.txt index 858d38a50e..ca47ef0a47 100644 --- a/dist/CMakeLists.txt +++ b/dist/CMakeLists.txt @@ -141,4 +141,72 @@ add_dependencies(dist dist-python3 dist-server) +set(dist_rpm_dir "${CMAKE_BINARY_DIR}/$/dist/rpm") +set(dist_deb_dir "${CMAKE_BINARY_DIR}/$/dist/deb") + +# Map system processor to Debian architecture names +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(deb_arch "amd64") +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + set(deb_arch "arm64") +else() + message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}") +endif() + +set(rpm_ver "${Scylla_VERSION}-${Scylla_RELEASE}") +set(deb_ver "${Scylla_VERSION}-${Scylla_RELEASE}-1") +set(rpm_arch "${CMAKE_SYSTEM_PROCESSOR}") + +set(server_rpms_dir "${CMAKE_CURRENT_BINARY_DIR}/$/redhat/RPMS/${rpm_arch}") +set(server_rpms + "${server_rpms_dir}/${Scylla_PRODUCT}-${rpm_ver}.${rpm_arch}.rpm" + "${server_rpms_dir}/${Scylla_PRODUCT}-server-${rpm_ver}.${rpm_arch}.rpm" + "${server_rpms_dir}/${Scylla_PRODUCT}-server-debuginfo-${rpm_ver}.${rpm_arch}.rpm" + "${server_rpms_dir}/${Scylla_PRODUCT}-conf-${rpm_ver}.${rpm_arch}.rpm" + "${server_rpms_dir}/${Scylla_PRODUCT}-kernel-conf-${rpm_ver}.${rpm_arch}.rpm" + "${server_rpms_dir}/${Scylla_PRODUCT}-node-exporter-${rpm_ver}.${rpm_arch}.rpm") +set(cqlsh_rpms + "${CMAKE_SOURCE_DIR}/tools/cqlsh/build/redhat/RPMS/${rpm_arch}/${Scylla_PRODUCT}-cqlsh-${rpm_ver}.${rpm_arch}.rpm") +set(python3_rpms + "${CMAKE_SOURCE_DIR}/tools/python3/build/redhat/RPMS/${rpm_arch}/${Scylla_PRODUCT}-python3-${rpm_ver}.${rpm_arch}.rpm") + +set(server_debs_dir "${CMAKE_CURRENT_BINARY_DIR}/$/debian") +set(server_debs + "${server_debs_dir}/${Scylla_PRODUCT}_${deb_ver}_${deb_arch}.deb" + "${server_debs_dir}/${Scylla_PRODUCT}-server_${deb_ver}_${deb_arch}.deb" + "${server_debs_dir}/${Scylla_PRODUCT}-server-dbg_${deb_ver}_${deb_arch}.deb" + "${server_debs_dir}/${Scylla_PRODUCT}-conf_${deb_ver}_${deb_arch}.deb" + "${server_debs_dir}/${Scylla_PRODUCT}-kernel-conf_${deb_ver}_${deb_arch}.deb" + "${server_debs_dir}/${Scylla_PRODUCT}-node-exporter_${deb_ver}_${deb_arch}.deb" + "${server_debs_dir}/scylla-enterprise_${deb_ver}_all.deb" + "${server_debs_dir}/scylla-enterprise-server_${deb_ver}_all.deb" + "${server_debs_dir}/scylla-enterprise-conf_${deb_ver}_all.deb" + "${server_debs_dir}/scylla-enterprise-kernel-conf_${deb_ver}_all.deb" + "${server_debs_dir}/scylla-enterprise-node-exporter_${deb_ver}_all.deb") +set(cqlsh_debs + "${CMAKE_SOURCE_DIR}/tools/cqlsh/build/debian/${Scylla_PRODUCT}-cqlsh_${deb_ver}_${deb_arch}.deb" + "${CMAKE_SOURCE_DIR}/tools/cqlsh/build/debian/scylla-enterprise-cqlsh_${deb_ver}_all.deb") +set(python3_debs + "${CMAKE_SOURCE_DIR}/tools/python3/build/debian/${Scylla_PRODUCT}-python3_${deb_ver}_${deb_arch}.deb" + "${CMAKE_SOURCE_DIR}/tools/python3/build/debian/scylla-enterprise-python3_${deb_ver}_all.deb") + +add_custom_target(collect-dist-rpm + COMMAND ${CMAKE_COMMAND} -E rm -rf ${dist_rpm_dir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${dist_rpm_dir} + COMMAND ${CMAKE_COMMAND} -E copy ${server_rpms} ${cqlsh_rpms} ${python3_rpms} ${dist_rpm_dir}/ + DEPENDS dist + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Collecting RPMs into ${dist_rpm_dir}") + +add_custom_target(collect-dist-deb + COMMAND ${CMAKE_COMMAND} -E rm -rf ${dist_deb_dir} + COMMAND ${CMAKE_COMMAND} -E make_directory ${dist_deb_dir} + COMMAND ${CMAKE_COMMAND} -E copy ${server_debs} ${cqlsh_debs} ${python3_debs} ${dist_deb_dir}/ + DEPENDS dist + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + COMMENT "Collecting DEBs into ${dist_deb_dir}") + +add_custom_target(collect-dist + DEPENDS collect-dist-rpm collect-dist-deb) + add_subdirectory(debuginfo)