[DO-1345] fixed windows packages (!16)

Reviewed-on: https://git.avroid.tech/Conan/conan_build/pulls/16
Co-authored-by: aleksandr.vodyanov <aleksandr.vodyanov@avroid.team>
Co-committed-by: aleksandr.vodyanov <aleksandr.vodyanov@avroid.team>
This commit is contained in:
aleksandr.vodyanov
2025-02-25 13:53:43 +03:00
committed by Aleksandr Vodyanov
parent 3759e1163f
commit a82e89a1bc
46 changed files with 679 additions and 197 deletions

View File

@@ -0,0 +1,60 @@
sources:
"1.6.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.6.0.tar.gz"
sha256: "342300656bfdafb6cc09325bdd0fd507366ecaa6be25fa4525f50889adf7c606"
"1.5.1":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.5.1.tar.gz"
sha256: "55f6acd5bf72c14d4aa5a781993633f84a1d117bdf2c2057735902ced9b81390"
"1.5.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.5.0.tar.gz"
sha256: "781913826fb6f478eb7d77e1942ab3df39444e4c90e9a3523737e215171db469"
"1.4.1":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.4.1.tar.gz"
sha256: "a7efc72ecb873c5a62031ade1921a7177b67cfdcb2e9410a7ab023f9e8192f4b"
"1.4.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.4.0.tar.gz"
sha256: "61382f295378bddcd9bebb3a9a9065b1cbc671fa41b80964ab02726f9a5f3a88"
"1.3.2":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.3.2.tar.gz"
sha256: "683082fb3c5cddf203b21d29bdf4c227e2f7964da5324a15e1a5f7db94322b4b"
"1.3.1":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.3.1.tar.gz"
sha256: "274c121edb859602eb4589d31d8791e980748bb19950fc6f611a21d76dc22cc6"
"1.3.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/releases/download/1.3.0/meson-1.3.0.tar.gz"
sha256: "4ba253ef60e454e23234696119cbafa082a0aead0bd3bbf6991295054795f5dc"
"1.2.3":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/releases/download/1.2.3/meson-1.2.3.tar.gz"
sha256: "4533a43c34548edd1f63a276a42690fce15bde9409bcf20c4b8fa3d7e4d7cac1"
"1.2.2":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/releases/download/1.2.2/meson-1.2.2.tar.gz"
sha256: "4a0f04de331fbc7af3b802a844fc8838f4ccd1ded1e792ba4f8f2faf8c5fe4d6"
"1.2.1":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/releases/download/1.2.1/meson-1.2.1.tar.gz"
sha256: "b1db3a153087549497ee52b1c938d2134e0338214fe14f7efd16fecd57b639f5"
"1.2.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.2.0.tar.gz"
sha256: "603489f0aaa6305f806c6cc4a4455a965f22290fc74f65871f589b002110c790"
"1.1.1":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/releases/download/1.1.1/meson-1.1.1.tar.gz"
sha256: "d04b541f97ca439fb82fab7d0d480988be4bd4e62563a5ca35fadb5400727b1c"
# qt requires 1.1.0
"1.1.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/1.1.0.tar.gz"
sha256: "f29a3e14062043d75e82d16f1e41856e6b1ed7a7c016e10c7b13afa7ee6364cc"
# wayland-protocols requires 1.0.0
"1.0.0":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/releases/download/1.0.0/meson-1.0.0.tar.gz"
sha256: "aa50a4ba4557c25e7d48446abfde857957dcdf58385fffbe670ba0e8efacce05"
# gtk requires 0.62.2
"0.62.2":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/0.62.2.tar.gz"
sha256: "97108f4d9bb16bc758c44749bd25ec7d42c6a762961efbed8b7589a2a3551ea6"
# gst-plugins-base requires 0.61.2
"0.61.2":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/0.61.2.tar.gz"
sha256: "33cd555314a94d52acfbb3f6f44d4e61c4ad0bfec7acf4301be7e40bb969b3a8"
# gobject-introspection requires 0.59.3
"0.59.3":
url: "https://nexus.avroid.tech/repository/devops-raw-proxy-github/mesonbuild/meson/archive/0.59.3.tar.gz"
sha256: "b2c5bfd5032189a66cf6a32d98ba82d94d7d314577d8efe4d9dc159c4073f282"

View File

@@ -0,0 +1,81 @@
import os
import textwrap
from conan import ConanFile, conan_version
from conan.tools.files import copy, get, rmdir, save, replace_in_file
from conan.tools.layout import basic_layout
from conan.tools.scm import Version
required_conan_version = ">=1.52.0"
class MesonConan(ConanFile):
name = "meson"
description = "a project to create the best possible next-generation build system"
license = "Apache-2.0"
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://github.com/mesonbuild/meson"
topics = ("mesonbuild", "build-system")
package_type = "application"
no_copy_source = True
def layout(self):
basic_layout(self, src_folder="src")
# def requirements(self):
# if self.conf.get("tools.meson.mesontoolchain:backend", default="ninja", check_type=str) == "ninja":
# # Meson requires >=1.8.2 as of 1.5
# # https://github.com/mesonbuild/meson/blob/b6b634ad33e5ca9ad4a9d6139dba4244847cc0e8/mesonbuild/backend/ninjabackend.py#L625
# self.requires("ninja/[>=1.10.2 <2]")
def package_id(self):
self.info.clear()
def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)
def package(self):
copy(self, "COPYING", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
copy(self, "*", src=self.source_folder, dst=os.path.join(self.package_folder, "bin"))
rmdir(self, os.path.join(self.package_folder, "bin", "test cases"))
# create wrapper scripts
save(self, os.path.join(self.package_folder, "bin", "meson.cmd"), textwrap.dedent("""\
@echo off
set PYTHONDONTWRITEBYTECODE=1
CALL python %~dp0/meson.py %*
"""))
save(self, os.path.join(self.package_folder, "bin", "meson"), textwrap.dedent("""\
#!/usr/bin/env bash
meson_dir=$(dirname "$0")
export PYTHONDONTWRITEBYTECODE=1
exec "$meson_dir/meson.py" "$@"
"""))
def finalize(self):
copy(self, "*", src=self.immutable_package_folder, dst=self.package_folder)
replace_in_file(self, os.path.join(self.package_folder, "bin", "meson.cmd"),
"set PYTHONDONTWRITEBYTECODE=1",
"")
replace_in_file(self, os.path.join(self.package_folder, "bin", "meson"),
"export PYTHONDONTWRITEBYTECODE=1",
"")
@staticmethod
def _chmod_plus_x(filename):
if os.name == "posix":
os.chmod(filename, os.stat(filename).st_mode | 0o111)
def package_info(self):
meson_root = os.path.join(self.package_folder, "bin")
self._chmod_plus_x(os.path.join(meson_root, "meson"))
self._chmod_plus_x(os.path.join(meson_root, "meson.py"))
self.cpp_info.builddirs = [os.path.join("bin", "mesonbuild", "cmake", "data")]
self.cpp_info.includedirs = []
self.cpp_info.libdirs = []
if Version(conan_version).major < 2:
self.env_info.PATH.append(meson_root)

View File

@@ -0,0 +1,29 @@
import os
from conan import ConanFile
from conan.tools.build import can_run
from conan.tools.layout import basic_layout
from conan.tools.meson import Meson
class TestPackageConan(ConanFile):
settings = "os", "arch", "compiler", "build_type"
generators = "MesonToolchain", "VirtualBuildEnv", "VirtualRunEnv"
test_type = "explicit"
def build_requirements(self):
self.tool_requires(self.tested_reference_str)
def layout(self):
basic_layout(self)
def build(self):
meson = Meson(self)
meson.configure()
meson.build()
def test(self):
self.run("meson --version")
if can_run(self):
bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package")
self.run(bin_path, env="conanrun")

View File

@@ -0,0 +1,2 @@
project('test_package', 'cpp')
executable('test_package', 'test_package.cpp')

View File

@@ -0,0 +1,6 @@
#include <stdio.h>
int main(int argc, char **argv) {
printf("Hello from Meson.\n");
return 0;
}